omniroute 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +4 -4
- package/README.es.md +4 -4
- package/README.fr.md +4 -4
- package/README.it.md +4 -4
- package/README.md +9 -5
- package/README.pt-BR.md +4 -4
- package/README.ru.md +4 -4
- package/README.zh-CN.md +4 -4
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +30 -28
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +27 -3
- package/app/.next/required-server-files.json +6 -2
- package/app/.next/routes-manifest.json +12 -0
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -0
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -0
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -0
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page.js +3 -3
- 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 +12 -11
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +12 -11
- 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 +4 -3
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page.js +2 -2
- package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +18 -17
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +18 -17
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- 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.js +1 -0
- package/app/.next/server/app/api/auth/status/route.js.nft.json +1 -0
- package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/cache/route.js +2 -2
- package/app/.next/server/app/api/cache/route.js.nft.json +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/backups/route_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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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_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-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.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.js +2 -2
- package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/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.js +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/export/route.js +1 -1
- package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route.js +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/import/route.js +1 -1
- package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/route.js +1 -1
- package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/fallback/chains/route.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.js +1 -1
- package/app/.next/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/route.js +1 -1
- package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/catalog/route.js +2 -2
- package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/route.js +2 -2
- 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 +2 -2
- package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route_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.js +1 -1
- package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route.js +1 -1
- package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-metrics/route.js +2 -2
- package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-models/route.js +1 -1
- package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js +2 -2
- package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +2 -2
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route.js +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.js +1 -1
- package/app/.next/server/app/api/resilience/reset/route.js.nft.json +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/combo-defaults/route.js +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route.js +1 -1
- package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/token-health/route.js +1 -1
- package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/budget/route.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.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route.js +2 -2
- package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +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/request-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js +2 -2
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route.js +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page.js +2 -2
- package/app/.next/server/app/callback/page.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +19 -18
- package/app/.next/server/app/callback.segments/_full.segment.rsc +19 -18
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.html +2 -1
- package/app/.next/server/app/dashboard/analytics.rsc +21 -19
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +2 -1
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/analytics.segments/_full.segment.rsc +21 -19
- package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/audit-log.html +1 -0
- package/app/.next/server/app/dashboard/audit-log.meta +17 -0
- package/app/.next/server/app/dashboard/audit-log.rsc +25 -0
- package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard/audit-log/__PAGE__.segment.rsc +9 -0
- package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard/audit-log.segment.rsc +4 -0
- package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +4 -0
- package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -0
- package/app/.next/server/app/dashboard/audit-log.segments/_full.segment.rsc +25 -0
- package/app/.next/server/app/dashboard/audit-log.segments/_head.segment.rsc +6 -0
- package/app/.next/server/app/dashboard/audit-log.segments/_index.segment.rsc +10 -0
- package/app/.next/server/app/dashboard/audit-log.segments/_tree.segment.rsc +5 -0
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +18 -17
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +18 -17
- package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +20 -19
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +20 -19
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.html +1 -1
- package/app/.next/server/app/dashboard/costs.rsc +20 -19
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.segments/_full.segment.rsc +20 -19
- package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +18 -17
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +18 -17
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.html +1 -1
- package/app/.next/server/app/dashboard/health.rsc +20 -19
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +20 -19
- package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/limits.html +2 -2
- package/app/.next/server/app/dashboard/limits.rsc +20 -19
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +20 -19
- package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/onboarding.html +1 -1
- package/app/.next/server/app/dashboard/onboarding.rsc +20 -19
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +20 -19
- package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +17 -16
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +17 -16
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.html +2 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +22 -19
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +4 -2
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +22 -19
- package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.html +2 -1
- package/app/.next/server/app/dashboard/providers.rsc +22 -19
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +4 -2
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +22 -19
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.html +2 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +22 -19
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +4 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +22 -19
- package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.html +2 -1
- package/app/.next/server/app/dashboard/settings.rsc +22 -19
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +4 -2
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +22 -19
- package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.html +2 -2
- package/app/.next/server/app/dashboard/translator.rsc +17 -16
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +17 -16
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +20 -19
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +20 -19
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/docs/page.js +3 -3
- package/app/.next/server/app/docs/page.js.nft.json +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs.html +1 -1
- package/app/.next/server/app/docs.rsc +83 -82
- package/app/.next/server/app/docs.segments/_full.segment.rsc +83 -82
- package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/docs.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/app/.next/server/app/forbidden/page.js +2 -2
- package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden.html +1 -1
- package/app/.next/server/app/forbidden.rsc +19 -18
- package/app/.next/server/app/forbidden.segments/_full.segment.rsc +19 -18
- package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/forbidden.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +1 -1
- package/app/.next/server/app/forgot-password/page.js +2 -2
- package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password.html +1 -1
- package/app/.next/server/app/forgot-password.rsc +19 -18
- package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +19 -18
- package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +16 -15
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +16 -15
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/landing/page.js +2 -2
- package/app/.next/server/app/landing/page.js.nft.json +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +19 -18
- package/app/.next/server/app/landing.segments/_full.segment.rsc +19 -18
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page.js +2 -2
- package/app/.next/server/app/login/page.js.nft.json +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +19 -18
- package/app/.next/server/app/login.segments/_full.segment.rsc +19 -18
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/page.js +2 -2
- package/app/.next/server/app/page.js.nft.json +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page.js +2 -2
- package/app/.next/server/app/privacy/page.js.nft.json +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy.html +1 -1
- package/app/.next/server/app/privacy.rsc +23 -22
- package/app/.next/server/app/privacy.segments/_full.segment.rsc +23 -22
- package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/privacy.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/privacy.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
- package/app/.next/server/app/terms/page.js +2 -2
- package/app/.next/server/app/terms/page.js.nft.json +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms.html +1 -1
- package/app/.next/server/app/terms.rsc +24 -23
- package/app/.next/server/app/terms.segments/_full.segment.rsc +24 -23
- package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/terms.segments/_index.segment.rsc +6 -5
- package/app/.next/server/app/terms.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
- package/app/.next/server/app-paths-manifest.json +30 -28
- package/app/.next/server/chunks/1079.js +1 -1
- package/app/.next/server/chunks/239.js +1 -1
- package/app/.next/server/chunks/2620.js +1 -1
- package/app/.next/server/chunks/2767.js +6 -6
- package/app/.next/server/chunks/287.js +1 -1
- package/app/.next/server/chunks/{1549.js → 2910.js} +17 -3
- package/app/.next/server/chunks/3447.js +9 -0
- package/app/.next/server/chunks/4133.js +1 -0
- package/app/.next/server/chunks/4488.js +243 -0
- package/app/.next/server/chunks/7109.js +1 -1
- package/app/.next/server/chunks/7230.js +4 -4
- package/app/.next/server/chunks/73.js +1 -0
- package/app/.next/server/chunks/7669.js +1 -1
- package/app/.next/server/chunks/7723.js +2 -0
- package/app/.next/server/chunks/9979.js +2 -0
- package/app/.next/server/functions-config-manifest.json +4 -0
- package/app/.next/server/instrumentation.js +1 -0
- package/app/.next/server/middleware.js +18 -4
- package/app/.next/server/pages/404.html +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-dfe52e95348ffdd8.js → 5846-69e259486db2f6f8.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-6f1750506292c630.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/{page-74ac2092c2a6b3dc.js → page-f8b57e41a1b6fce6.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c37f849e39b1bf02.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-19072ecdea202e4e.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-d2651dc387e7fdfd.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/{page-58b169603fdf1d6f.js → page-2e6b2c37e502d893.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/error-2f0177a2197dd556.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/loading-99ab4d478260d53b.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/error-e844916e39172c8b.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/loading-bb068659ee679ff4.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-1067b7b1be3728d7.js +1 -0
- package/app/.next/static/chunks/app/_global-error/{page-58b169603fdf1d6f.js → page-2e6b2c37e502d893.js} +1 -1
- package/app/.next/static/chunks/app/_not-found/{page-58b169603fdf1d6f.js → page-2e6b2c37e502d893.js} +1 -1
- package/app/.next/static/chunks/app/api/auth/login/{route-58b169603fdf1d6f.js → route-2e6b2c37e502d893.js} +1 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/auth/status/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cache/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cache/stats/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/backups/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/status/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/auth/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/combos/metrics/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/combos/test/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/compliance/audit-log/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/export/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/exportAll/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/import/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/evals/[suiteId]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/evals/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/fallback/chains/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/models/catalog/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/monitoring/health/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/policies/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/defaults/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/models/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/provider-metrics/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/provider-models/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/rate-limit/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/rate-limits/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/resilience/reset/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/resilience/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/restart/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/sessions/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/settings/combo-defaults/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/settings/ip-filter/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy/test/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/settings/system-prompt/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/settings/thinking-budget/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/storage/health/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/sync/cloud/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/sync/initialize/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/telemetry/summary/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/token-health/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/translator/detect/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/translator/history/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/usage/analytics/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/usage/budget/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/usage/call-logs/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/usage/proxy-logs/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/moderations/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/rerank/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/app/error-0d59fc4efafbc38c.js +1 -0
- package/app/.next/static/chunks/app/global-error-41eef2a698918fc1.js +1 -0
- package/app/.next/static/chunks/app/login/page-40a8824400706b5e.js +1 -0
- package/app/.next/static/chunks/app/not-found-38123f3e1e5abc33.js +1 -0
- package/app/.next/static/chunks/app/page-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/{main-db1120009090c406.js → main-47efa2ccb55b4a8d.js} +1 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2e6b2c37e502d893.js +1 -0
- package/app/.next/static/css/039e32048ea8e51e.css +1 -0
- package/app/.next/static/kMztjIo6CDmStqcKcXLeh/_buildManifest.js +1 -0
- package/app/package.json +4 -3
- package/app/server.js +1 -1
- package/app/src/lib/db/migrations/001_initial_schema.sql +202 -0
- package/app/src/mitm/server.ts +48 -3
- package/package.json +4 -3
- package/app/.next/server/chunks/1020.js +0 -1
- package/app/.next/server/chunks/2817.js +0 -4
- package/app/.next/server/chunks/5583.js +0 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/page-207d4961e362eae5.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-3c840eaf6d7cd77d.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-cdc5fc5dfecc1047.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cache/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cache/stats/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/backups/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/status/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/auth/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/combos/metrics/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/combos/test/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/compliance/audit-log/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/export/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/exportAll/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/import/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/evals/[suiteId]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/evals/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/fallback/chains/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/models/availability/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/models/catalog/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/monitoring/health/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/policies/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/defaults/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/models/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/provider-metrics/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/provider-models/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/rate-limit/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/rate-limits/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/resilience/reset/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/resilience/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/restart/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/sessions/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/settings/combo-defaults/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/settings/ip-filter/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy/test/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/settings/system-prompt/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/settings/thinking-budget/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/storage/health/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/sync/cloud/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/sync/initialize/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/telemetry/summary/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/token-health/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/translator/detect/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/translator/history/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/usage/analytics/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/usage/budget/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/usage/call-logs/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/usage/logs/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/usage/proxy-logs/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/images/generations/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/moderations/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/rerank/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/app/global-error-ece0210f8bb4e441.js +0 -1
- package/app/.next/static/chunks/app/login/page-8a9aa887783f2370.js +0 -1
- package/app/.next/static/chunks/app/not-found-a1cabc3706cf5b84.js +0 -1
- package/app/.next/static/chunks/app/page-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-58b169603fdf1d6f.js +0 -1
- package/app/.next/static/css/99e359b9e40091af.css +0 -1
- package/app/.next/static/mo3wTjoSYKP1E96Wu512B/_buildManifest.js +0 -1
- /package/app/.next/static/{mo3wTjoSYKP1E96Wu512B → kMztjIo6CDmStqcKcXLeh}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=7230,exports.ids=[7230],exports.modules={27230:(a,b,c)=>{c.d(b,{E5:()=>y,yN:()=>A,jE:()=>
|
|
1
|
+
"use strict";exports.id=7230,exports.ids=[7230],exports.modules={27230:(a,b,c)=>{c.d(b,{E5:()=>y,yN:()=>A,jE:()=>H,kh:()=>G,Zx:()=>z,uO:()=>w,BY:()=>B,gK:()=>F,sZ:()=>x,uw:()=>v});var d=c(33873),e=c.n(d),f=c(29021),g=c.n(f),h=c(42910),i=c(88189);let j=!h.m1&&!h.I8,k=h.m1?null:(0,i.sm)(),l=h.m1?null:e().join(h.nJ,"log.txt"),m=h.m1?null:e().join(h.nJ,"call_logs"),n=h.m1||!k?null:e().join(k,"usage.json"),o=h.m1||!k?null:e().join(k,"log.txt"),p=h.m1||!k?null:e().join(k,"call_logs.json"),q=h.m1||!k?null:e().join(k,"call_logs"),r=h.m1?null:e().join(h.nJ,"usage.json"),s=h.m1?null:e().join(h.nJ,"call_logs.json");function t(a,b,c){!a||!b||!g().existsSync(a)||g().existsSync(b)||(g().statSync(a).isDirectory()?g().cpSync(a,b,{recursive:!0}):g().copyFileSync(a,b),console.log(`[usageDb] Migrated ${c}: ${a} -> ${b}`))}if(!function(){if(j&&k&&!(0,i.ys)(h.nJ,k))try{t(n,r,"usage history"),t(o,l,"request log"),t(p,s,"call log index"),t(q,m,"call log files")}catch(a){console.error("[usageDb] Legacy migration failed:",a.message)}}(),j)try{!function(){if(!j)return;let a=(0,h.sm)();if(r&&g().existsSync(r))try{let b=g().readFileSync(r,"utf-8"),c=JSON.parse(b).history||[];if(c.length>0){console.log(`[usageDb] Migrating ${c.length} usage entries from JSON → SQLite...`);let b=a.prepare(`
|
|
2
2
|
INSERT INTO usage_history (provider, model, connection_id, api_key_id, api_key_name,
|
|
3
3
|
tokens_input, tokens_output, tokens_cache_read, tokens_cache_creation, tokens_reasoning,
|
|
4
4
|
status, timestamp)
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
status, timestamp)
|
|
19
19
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
20
20
|
`).run(a.provider||null,a.model||null,a.connectionId||null,a.apiKeyId||null,a.apiKeyName||null,a.tokens?.input??a.tokens?.prompt_tokens??0,a.tokens?.output??a.tokens?.completion_tokens??0,a.tokens?.cacheRead??a.tokens?.cached_tokens??0,a.tokens?.cacheCreation??a.tokens?.cache_creation_input_tokens??0,a.tokens?.reasoning??a.tokens?.reasoning_tokens??0,a.status||null,c)}catch(a){console.error("Failed to save usage stats:",a)}}async function y({model:a,provider:b,connectionId:d,tokens:e,status:f}){if(j)try{let h=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=b(a.getDate()),d=b(a.getMonth()+1),e=a.getFullYear(),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds());return`${c}-${d}-${e} ${f}:${g}:${h}`}(),i=b?.toUpperCase()||"-",j=d?d.slice(0,8):"-";try{let{getProviderConnections:a}=await Promise.all([c.e(3596),c.e(287),c.e(4755)]).then(c.bind(c,40287)),b=(await a()).find(a=>a.id===d);b&&(j=b.name||b.email||j)}catch{}let k=e?.input!==void 0?e.input:e?.prompt_tokens!==void 0?e.prompt_tokens:"-",m=e?.output!==void 0?e.output:e?.completion_tokens!==void 0?e.completion_tokens:"-",n=`${h} | ${a||"-"} | ${i} | ${j} | ${k} | ${m} | ${f}
|
|
21
|
-
`;g().appendFileSync(l,n);let o=g().readFileSync(l,"utf-8").trim().split("\n");o.length>200&&g().writeFileSync(l,o.slice(-200).join("\n")+"\n")}catch(a){console.error("Failed to append to log.txt:",a.message)}}async function z(a=200){if(!j||!g()||"function"!=typeof g().existsSync||!l||!g().existsSync(l))return[];try{return g().readFileSync(l,"utf-8").trim().split("\n").slice(-a).reverse()}catch(a){return console.error("[usageDb] Failed to read log.txt:",a.message),[]}}async function A(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.all([c.e(3596),c.e(287),c.e(4755)]).then(c.bind(c,40287)),f=await e(a,b);if(!f){let c=function(a){if(!a||!a.includes("/"))return a;let b=a.split("/");return b[b.length-1]}(b);c!==b&&(f=await e(a,c))}if(!f)return 0;let g=0,h=d.input??d.prompt_tokens??d.input_tokens??0,i=d.cacheRead??d.cached_tokens??d.cache_read_input_tokens??0,j=Math.max(0,h-i);g+=j*(f.input/1e6),i>0&&(g+=i*((f.cached||f.input)/1e6));let k=d.output??d.completion_tokens??d.output_tokens??0;g+=k*(f.output/1e6);let l=d.reasoning??d.reasoning_tokens??0;l>0&&(g+=l*((f.reasoning||f.output)/1e6));let m=d.cacheCreation??d.cache_creation_input_tokens??0;return m>0&&(g+=m*((f.cache_creation||f.input)/1e6)),g}catch(a){return console.error("Error calculating cost:",a),0}}async function B(){let a=(0,h.sm)().prepare("SELECT * FROM usage_history ORDER BY timestamp ASC").all(),{getProviderConnections:b}=await Promise.all([c.e(3596),c.e(287),c.e(4755)]).then(c.bind(c,40287)),d=[];try{d=await b()}catch{}let e={};for(let a of d)e[a.id]=a.name||a.email||a.id;let f={totalRequests:a.length,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},last10Minutes:[],pending:u,activeRequests:[]};for(let[a,b]of Object.entries(u.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=e[a]||`Account ${a.slice(0,8)}...`,g=c.match(/^(.*) \((.*)\)$/);f.activeRequests.push({model:g?g[1]:c,provider:g?g[2]:"unknown",account:b,count:d})}let g=new Date,i=new Date(6e4*Math.floor(g.getTime()/6e4)),j={};for(let a=0;a<10;a++){let b=new Date(i.getTime()-(9-a)*6e4).getTime();j[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},f.last10Minutes.push(j[b])}let k=new Date(i.getTime()-54e4);for(let b of a){let a=b.tokens_input||0,c=b.tokens_output||0,d=new Date(b.timestamp),h={input:b.tokens_input,output:b.tokens_output,cacheRead:b.tokens_cache_read,cacheCreation:b.tokens_cache_creation,reasoning:b.tokens_reasoning},i=await A(b.provider,b.model,h);if(f.totalPromptTokens+=a,f.totalCompletionTokens+=c,f.totalCost+=i,d>=k&&d<=g){let b=6e4*Math.floor(d.getTime()/6e4);j[b]&&(j[b].requests++,j[b].promptTokens+=a,j[b].completionTokens+=c,j[b].cost+=i)}f.byProvider[b.provider]||(f.byProvider[b.provider]={requests:0,promptTokens:0,completionTokens:0,cost:0}),f.byProvider[b.provider].requests++,f.byProvider[b.provider].promptTokens+=a,f.byProvider[b.provider].completionTokens+=c,f.byProvider[b.provider].cost+=i;let l=b.provider?`${b.model} (${b.provider})`:b.model;if(f.byModel[l]||(f.byModel[l]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:b.model,provider:b.provider,lastUsed:b.timestamp}),f.byModel[l].requests++,f.byModel[l].promptTokens+=a,f.byModel[l].completionTokens+=c,f.byModel[l].cost+=i,new Date(b.timestamp)>new Date(f.byModel[l].lastUsed)&&(f.byModel[l].lastUsed=b.timestamp),b.connection_id){let d=e[b.connection_id]||`Account ${b.connection_id.slice(0,8)}...`,g=`${b.model} (${b.provider} - ${d})`;f.byAccount[g]||(f.byAccount[g]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:b.model,provider:b.provider,connectionId:b.connection_id,accountName:d,lastUsed:b.timestamp}),f.byAccount[g].requests++,f.byAccount[g].promptTokens+=a,f.byAccount[g].completionTokens+=c,f.byAccount[g].cost+=i,new Date(b.timestamp)>new Date(f.byAccount[g].lastUsed)&&(f.byAccount[g].lastUsed=b.timestamp)}if(b.api_key_id||b.api_key_name){let d=b.api_key_name||b.api_key_id||"unknown",e=b.api_key_id||null,g=e?`${d} (${e})`:d;f.byApiKey[g]||(f.byApiKey[g]={requests:0,promptTokens:0,completionTokens:0,cost:0,apiKeyId:e,apiKeyName:d,lastUsed:b.timestamp}),f.byApiKey[g].requests++,f.byApiKey[g].promptTokens+=a,f.byApiKey[g].completionTokens+=c,f.byApiKey[g].cost+=i,new Date(b.timestamp)>new Date(f.byApiKey[g].lastUsed)&&(f.byApiKey[g].lastUsed=b.timestamp)}}return f}let C=0;async function
|
|
21
|
+
`;g().appendFileSync(l,n);let o=g().readFileSync(l,"utf-8").trim().split("\n");o.length>200&&g().writeFileSync(l,o.slice(-200).join("\n")+"\n")}catch(a){console.error("Failed to append to log.txt:",a.message)}}async function z(a=200){if(!j||!g()||"function"!=typeof g().existsSync||!l||!g().existsSync(l))return[];try{return g().readFileSync(l,"utf-8").trim().split("\n").slice(-a).reverse()}catch(a){return console.error("[usageDb] Failed to read log.txt:",a.message),[]}}async function A(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.all([c.e(3596),c.e(287),c.e(4755)]).then(c.bind(c,40287)),f=await e(a,b);if(!f){let c=function(a){if(!a||!a.includes("/"))return a;let b=a.split("/");return b[b.length-1]}(b);c!==b&&(f=await e(a,c))}if(!f)return 0;let g=0,h=d.input??d.prompt_tokens??d.input_tokens??0,i=d.cacheRead??d.cached_tokens??d.cache_read_input_tokens??0,j=Math.max(0,h-i);g+=j*(f.input/1e6),i>0&&(g+=i*((f.cached||f.input)/1e6));let k=d.output??d.completion_tokens??d.output_tokens??0;g+=k*(f.output/1e6);let l=d.reasoning??d.reasoning_tokens??0;l>0&&(g+=l*((f.reasoning||f.output)/1e6));let m=d.cacheCreation??d.cache_creation_input_tokens??0;return m>0&&(g+=m*((f.cache_creation||f.input)/1e6)),g}catch(a){return console.error("Error calculating cost:",a),0}}async function B(){let a=(0,h.sm)().prepare("SELECT * FROM usage_history ORDER BY timestamp ASC").all(),{getProviderConnections:b}=await Promise.all([c.e(3596),c.e(287),c.e(4755)]).then(c.bind(c,40287)),d=[];try{d=await b()}catch{}let e={};for(let a of d)e[a.id]=a.name||a.email||a.id;let f={totalRequests:a.length,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},last10Minutes:[],pending:u,activeRequests:[]};for(let[a,b]of Object.entries(u.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=e[a]||`Account ${a.slice(0,8)}...`,g=c.match(/^(.*) \((.*)\)$/);f.activeRequests.push({model:g?g[1]:c,provider:g?g[2]:"unknown",account:b,count:d})}let g=new Date,i=new Date(6e4*Math.floor(g.getTime()/6e4)),j={};for(let a=0;a<10;a++){let b=new Date(i.getTime()-(9-a)*6e4).getTime();j[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},f.last10Minutes.push(j[b])}let k=new Date(i.getTime()-54e4);for(let b of a){let a=b.tokens_input||0,c=b.tokens_output||0,d=new Date(b.timestamp),h={input:b.tokens_input,output:b.tokens_output,cacheRead:b.tokens_cache_read,cacheCreation:b.tokens_cache_creation,reasoning:b.tokens_reasoning},i=await A(b.provider,b.model,h);if(f.totalPromptTokens+=a,f.totalCompletionTokens+=c,f.totalCost+=i,d>=k&&d<=g){let b=6e4*Math.floor(d.getTime()/6e4);j[b]&&(j[b].requests++,j[b].promptTokens+=a,j[b].completionTokens+=c,j[b].cost+=i)}f.byProvider[b.provider]||(f.byProvider[b.provider]={requests:0,promptTokens:0,completionTokens:0,cost:0}),f.byProvider[b.provider].requests++,f.byProvider[b.provider].promptTokens+=a,f.byProvider[b.provider].completionTokens+=c,f.byProvider[b.provider].cost+=i;let l=b.provider?`${b.model} (${b.provider})`:b.model;if(f.byModel[l]||(f.byModel[l]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:b.model,provider:b.provider,lastUsed:b.timestamp}),f.byModel[l].requests++,f.byModel[l].promptTokens+=a,f.byModel[l].completionTokens+=c,f.byModel[l].cost+=i,new Date(b.timestamp)>new Date(f.byModel[l].lastUsed)&&(f.byModel[l].lastUsed=b.timestamp),b.connection_id){let d=e[b.connection_id]||`Account ${b.connection_id.slice(0,8)}...`,g=`${b.model} (${b.provider} - ${d})`;f.byAccount[g]||(f.byAccount[g]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:b.model,provider:b.provider,connectionId:b.connection_id,accountName:d,lastUsed:b.timestamp}),f.byAccount[g].requests++,f.byAccount[g].promptTokens+=a,f.byAccount[g].completionTokens+=c,f.byAccount[g].cost+=i,new Date(b.timestamp)>new Date(f.byAccount[g].lastUsed)&&(f.byAccount[g].lastUsed=b.timestamp)}if(b.api_key_id||b.api_key_name){let d=b.api_key_name||b.api_key_id||"unknown",e=b.api_key_id||null,g=e?`${d} (${e})`:d;f.byApiKey[g]||(f.byApiKey[g]={requests:0,promptTokens:0,completionTokens:0,cost:0,apiKeyId:e,apiKeyName:d,lastUsed:b.timestamp}),f.byApiKey[g].requests++,f.byApiKey[g].promptTokens+=a,f.byApiKey[g].completionTokens+=c,f.byApiKey[g].cost+=i,new Date(b.timestamp)>new Date(f.byApiKey[g].lastUsed)&&(f.byApiKey[g].lastUsed=b.timestamp)}}return f}let C=parseInt(process.env.LOG_RETENTION_DAYS||"7",10),D=new Set(["api_key","apiKey","api-key","authorization","Authorization","x-api-key","X-Api-Key","access_token","accessToken","refresh_token","refreshToken","password","secret","token"]),E=0;async function F(a){if(j)try{let b=a.connectionId?a.connectionId.slice(0,8):"-";try{let{getProviderConnections:d}=await Promise.all([c.e(3596),c.e(287),c.e(4755)]).then(c.bind(c,40287)),e=(await d()).find(b=>b.id===a.connectionId);e&&(b=e.name||e.email||b)}catch{}let d=a=>{if(!a)return null;let b=function a(b){if(!b||"object"!=typeof b)return b;if(Array.isArray(b))return b.map(a);let c={};for(let[d,e]of Object.entries(b))D.has(d)?c[d]="[REDACTED]":"string"==typeof e&&e.startsWith("Bearer ")?c[d]="Bearer [REDACTED]":"object"==typeof e&&null!==e?c[d]=a(e):c[d]=e;return c}(a),c=JSON.stringify(b);if(c.length<=8192)return c;try{return JSON.stringify({_truncated:!0,_originalSize:c.length,_preview:c.slice(0,8192)+"..."})}catch{return JSON.stringify({_truncated:!0})}},f={id:(E++,`${Date.now()}-${E}`),timestamp:new Date().toISOString(),method:a.method||"POST",path:a.path||"/v1/chat/completions",status:a.status||0,model:a.model||"-",provider:a.provider||"-",account:b,connectionId:a.connectionId||null,duration:a.duration||0,tokensIn:a.tokens?.prompt_tokens||0,tokensOut:a.tokens?.completion_tokens||0,sourceFormat:a.sourceFormat||null,targetFormat:a.targetFormat||null,apiKeyId:a.apiKeyId||null,apiKeyName:a.apiKeyName||null,comboName:a.comboName||null,requestBody:d(a.requestBody),responseBody:d(a.responseBody),error:a.error||null},i=(0,h.sm)();i.prepare(`
|
|
22
22
|
INSERT INTO call_logs (id, timestamp, method, path, status, model, provider,
|
|
23
23
|
account, connection_id, duration, tokens_in, tokens_out, source_format, target_format,
|
|
24
24
|
api_key_id, api_key_name, combo_name, request_body, response_body, error)
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
DELETE FROM call_logs WHERE id IN (
|
|
30
30
|
SELECT id FROM call_logs ORDER BY timestamp ASC LIMIT ?
|
|
31
31
|
)
|
|
32
|
-
`).run(j-500),function(a,b,c){if(m)try{let d=new Date,f=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}-${String(d.getDate()).padStart(2,"0")}`,h=e().join(m,f);g().existsSync(h)||g().mkdirSync(h,{recursive:!0});let i=(a.model||"unknown").replace(/[/:]/g,"-"),j=`${String(d.getHours()).padStart(2,"0")}${String(d.getMinutes()).padStart(2,"0")}${String(d.getSeconds()).padStart(2,"0")}`,k=`${j}_${i}_${a.status}.json`,l={...a,requestBody:b||null,responseBody:c||null};g().writeFileSync(e().join(h,k),JSON.stringify(l,null,2))}catch(a){console.error("[callLogs] Failed to write disk log:",a.message)}}({...f,tokens:{in:f.tokensIn,out:f.tokensOut}},a.requestBody,a.responseBody)}catch(a){console.error("[callLogs] Failed to save call log:",a.message)}}if(j)try{if(m&&g().existsSync(m))try{let a=g().readdirSync(m),b=Date.now();for(let
|
|
32
|
+
`).run(j-500),function(a,b,c){if(m)try{let d=new Date,f=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}-${String(d.getDate()).padStart(2,"0")}`,h=e().join(m,f);g().existsSync(h)||g().mkdirSync(h,{recursive:!0});let i=(a.model||"unknown").replace(/[/:]/g,"-"),j=`${String(d.getHours()).padStart(2,"0")}${String(d.getMinutes()).padStart(2,"0")}${String(d.getSeconds()).padStart(2,"0")}`,k=`${j}_${i}_${a.status}.json`,l={...a,requestBody:b||null,responseBody:c||null};g().writeFileSync(e().join(h,k),JSON.stringify(l,null,2))}catch(a){console.error("[callLogs] Failed to write disk log:",a.message)}}({...f,tokens:{in:f.tokensIn,out:f.tokensOut}},a.requestBody,a.responseBody)}catch(a){console.error("[callLogs] Failed to save call log:",a.message)}}if(j)try{!function(){if(m&&g().existsSync(m))try{let a=g().readdirSync(m),b=Date.now(),c=24*C*36e5;for(let d of a){let a=e().join(m,d),f=g().statSync(a);f.isDirectory()&&b-f.mtimeMs>c&&(g().rmSync(a,{recursive:!0,force:!0}),console.log(`[callLogs] Rotated old logs: ${d}`))}}catch(a){console.error("[callLogs] Failed to rotate logs:",a.message)}}()}catch{}async function G(a={}){let b=(0,h.sm)(),c="SELECT * FROM call_logs",d=[],e={};if(a.status)if("error"===a.status)d.push("(status >= 400 OR error IS NOT NULL)");else if("ok"===a.status)d.push("status >= 200 AND status < 300");else{let b=parseInt(a.status);isNaN(b)||(d.push("status = @statusCode"),e.statusCode=b)}a.model&&(d.push("model LIKE @modelQ"),e.modelQ=`%${a.model}%`),a.provider&&(d.push("provider LIKE @providerQ"),e.providerQ=`%${a.provider}%`),a.account&&(d.push("account LIKE @accountQ"),e.accountQ=`%${a.account}%`),a.apiKey&&(d.push("(api_key_name LIKE @apiKeyQ OR api_key_id LIKE @apiKeyQ)"),e.apiKeyQ=`%${a.apiKey}%`),a.combo&&d.push("combo_name IS NOT NULL"),a.search&&(d.push(`(
|
|
33
33
|
model LIKE @searchQ OR path LIKE @searchQ OR account LIKE @searchQ OR
|
|
34
34
|
provider LIKE @searchQ OR api_key_name LIKE @searchQ OR api_key_id LIKE @searchQ OR
|
|
35
35
|
combo_name LIKE @searchQ OR CAST(status AS TEXT) LIKE @searchQ
|
|
36
|
-
)`),e.searchQ=`%${a.search}%`),d.length>0&&(c+=" WHERE "+d.join(" AND "));let f=a.limit||200;return c+=` ORDER BY timestamp DESC LIMIT ${f}`,b.prepare(c).all(e).map(a=>({id:a.id,timestamp:a.timestamp,method:a.method,path:a.path,status:a.status,model:a.model,provider:a.provider,account:a.account,duration:a.duration,tokens:{in:a.tokens_in,out:a.tokens_out},sourceFormat:a.source_format,targetFormat:a.target_format,error:a.error,comboName:a.combo_name||null,apiKeyId:a.api_key_id||null,apiKeyName:a.api_key_name||null,hasRequestBody:!!a.request_body,hasResponseBody:!!a.response_body}))}async function
|
|
36
|
+
)`),e.searchQ=`%${a.search}%`),d.length>0&&(c+=" WHERE "+d.join(" AND "));let f=a.limit||200;return c+=` ORDER BY timestamp DESC LIMIT ${f}`,b.prepare(c).all(e).map(a=>({id:a.id,timestamp:a.timestamp,method:a.method,path:a.path,status:a.status,model:a.model,provider:a.provider,account:a.account,duration:a.duration,tokens:{in:a.tokens_in,out:a.tokens_out},sourceFormat:a.source_format,targetFormat:a.target_format,error:a.error,comboName:a.combo_name||null,apiKeyId:a.api_key_id||null,apiKeyName:a.api_key_name||null,hasRequestBody:!!a.request_body,hasResponseBody:!!a.response_body}))}async function H(a){let b=(0,h.sm)().prepare("SELECT * FROM call_logs WHERE id = ?").get(a);if(!b)return null;let c={id:b.id,timestamp:b.timestamp,method:b.method,path:b.path,status:b.status,model:b.model,provider:b.provider,account:b.account,connectionId:b.connection_id,duration:b.duration,tokens:{in:b.tokens_in,out:b.tokens_out},sourceFormat:b.source_format,targetFormat:b.target_format,apiKeyId:b.api_key_id,apiKeyName:b.api_key_name,comboName:b.combo_name,requestBody:b.request_body?JSON.parse(b.request_body):null,responseBody:b.response_body?JSON.parse(b.response_body):null,error:b.error};if((c.requestBody?._truncated||c.responseBody?._truncated)&&m)try{let a=function(a){if(!m||!a.timestamp)return null;try{let b=new Date(a.timestamp),c=`${b.getFullYear()}-${String(b.getMonth()+1).padStart(2,"0")}-${String(b.getDate()).padStart(2,"0")}`,d=e().join(m,c);if(!g().existsSync(d))return null;let f=`${String(b.getHours()).padStart(2,"0")}${String(b.getMinutes()).padStart(2,"0")}${String(b.getSeconds()).padStart(2,"0")}`,h=(a.model||"unknown").replace(/[/:]/g,"-"),i=`${f}_${h}_${a.status}.json`,j=e().join(d,i);if(g().existsSync(j))return JSON.parse(g().readFileSync(j,"utf8"));let k=g().readdirSync(d).filter(b=>b.startsWith(f)&&b.endsWith(`_${a.status}.json`));if(k.length>0)return JSON.parse(g().readFileSync(e().join(d,k[0]),"utf8"))}catch(a){console.error("[callLogs] Disk log read error:",a.message)}return null}(c);if(a)return{...c,requestBody:a.requestBody??c.requestBody,responseBody:a.responseBody??c.responseBody}}catch(a){console.error("[callLogs] Failed to read full log from disk:",a.message)}return c}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=73,exports.ids=[73],exports.modules={21020:(a,b,c)=>{c.d(b,{Pt:()=>k,Tr:()=>l,c1:()=>i,kI:()=>m,vk:()=>j});var d=c(40287),e=c(74163),f=c(54194);let g=Promise.resolve(),h=new Map;async function i(a,b=null){let c,h=g;g=new Promise(a=>{c=a});try{let c;await h;let g=await (0,d.getProviderConnections)({provider:a,isActive:!0});if(f.debug("AUTH",`${a} | total connections: ${g.length}, excludeId: ${b||"none"}`),0===g.length){let b=await (0,d.getProviderConnections)({provider:a});if(f.debug("AUTH",`${a} | all connections (incl inactive): ${b.length}`),b.length>0){let c=(0,e.UY)(b);if(c)return f.warn("AUTH",`${a} | all ${b.length} accounts rate limited (${(0,e.Qo)(c)})`),{allRateLimited:!0,retryAfter:c,retryAfterHuman:(0,e.Qo)(c)};f.warn("AUTH",`${a} | ${b.length} accounts found but none active`),b.forEach(a=>{f.debug("AUTH",` → ${a.id?.slice(0,8)} | isActive=${a.isActive} | rateLimitedUntil=${a.rateLimitedUntil||"none"} | testStatus=${a.testStatus}`)})}return f.warn("AUTH",`No credentials for ${a}`),null}let i=g.filter(a=>!(b&&a.id===b||(0,e.AO)(a.rateLimitedUntil)));if(f.debug("AUTH",`${a} | available: ${i.length}/${g.length}`),g.forEach(a=>{let c=b&&a.id===b,d=(0,e.AO)(a.rateLimitedUntil);(c||d)&&f.debug("AUTH",` → ${a.id?.slice(0,8)} | ${c?"excluded":""} ${d?`rateLimited until ${a.rateLimitedUntil}`:""}`)}),0===i.length){let b=(0,e.UY)(g);if(b){let c=g.filter(a=>a.rateLimitedUntil&&new Date(a.rateLimitedUntil).getTime()>Date.now()).sort((a,b)=>new Date(a.rateLimitedUntil).getTime()-new Date(b.rateLimitedUntil).getTime())[0];return f.warn("AUTH",`${a} | all ${g.length} active accounts rate limited (${(0,e.Qo)(b)}) | lastErrorCode=${c?.errorCode}, lastError=${c?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:b,retryAfterHuman:(0,e.Qo)(b),lastError:c?.lastError||null,lastErrorCode:c?.errorCode||null}}return f.warn("AUTH",`${a} | all ${g.length} accounts unavailable`),null}let j=await (0,d.mt)(),k=j.fallbackStrategy||"fill-first";if("round-robin"===k){let a=j.stickyRoundRobinLimit||3,b=[...i].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=[...i].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"===k)if(i.length<=2)c=i[0];else{let a=Math.floor(Math.random()*i.length),b=Math.floor(Math.random()*(i.length-1));b>=a&&b++;let d=i[a],e=i[b],f=(d.consecutiveUseCount||0)+10*!!d.lastError,g=(e.consecutiveUseCount||0)+10*!!e.lastError;c=f<=g?d:e}else if("random"===k){let a=Math.floor(Math.random()*i.length);c=i[a]}else c="least-used"===k?[...i].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"===k?[...i].sort((a,b)=>(a.priority||999)-(b.priority||999))[0]:i[0];return{apiKey:c.apiKey,accessToken:c.accessToken,refreshToken:c.refreshToken,expiresAt:c.tokenExpiresAt||c.expiresAt||null,projectId:c.projectId,copilotToken:c.providerSpecificData?.copilotToken,providerSpecificData:c.providerSpecificData,connectionId:c.id,testStatus:c.testStatus,lastError:c.lastError,rateLimitedUntil:c.rateLimitedUntil}}finally{c&&c()}}async function j(a,b,c,g=null,i=null){let k,l=h.get(a)||Promise.resolve();h.set(a,new Promise(a=>{k=a}));try{await l;let h=(await (0,d.getProviderConnections)({provider:g})).find(b=>b.id===a),j=h?.backoffLevel||0;if(h?.rateLimitedUntil&&new Date(h.rateLimitedUntil).getTime()>Date.now())return f.info("AUTH",`${a.slice(0,8)} already marked unavailable (until ${h.rateLimitedUntil}), skipping duplicate mark`),{shouldFallback:!0,cooldownMs:new Date(h.rateLimitedUntil).getTime()-Date.now()};let{shouldFallback:k,cooldownMs:m,newBackoffLevel:n,reason:o}=(0,e.hk)(b,c,j,i,g);if(!k)return{shouldFallback:!1,cooldownMs:0};let p=(0,e.vp)(m),q="string"==typeof c?c.slice(0,100):"Provider error";return await (0,d.rj)(a,{rateLimitedUntil:p,testStatus:"unavailable",lastError:q,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:n??j}),g&&i&&m>0&&(0,e.R7)(g,a,i,o||"unknown",m),g&&b&&q&&console.error(`❌ ${g} [${b}]: ${q}`),{shouldFallback:!0,cooldownMs:m}}finally{k&&k(),h.delete(a)}}async function k(a,b){("unavailable"===b.testStatus||b.lastError||b.rateLimitedUntil)&&(await (0,d.rj)(a,{testStatus:"active",lastError:null,lastErrorAt:null,rateLimitedUntil:null,backoffLevel:0}),f.info("AUTH",`Account ${a.slice(0,8)} error cleared`))}function l(a){let b=a.headers.get("Authorization");return b?.startsWith("Bearer ")?b.slice(7):null}async function m(a){return!!a&&await (0,d.ek)(a)}},54194:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>i,error:()=>l,info:()=>j,maskKey:()=>g,request:()=>m,response:()=>n,stream:()=>o,warn:()=>k});var d=c(74552),e=c.n(d);let f={level:process.env.LOG_LEVEL||"info",base:{service:"omniroute"},timestamp:e().stdTimeFunctions.isoTime,formatters:{level:a=>({level:a})}};function g(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}let h=e()({...f}).child({module:"sse"});function i(a,b,c){h.debug({tag:a,...p(c)},b)}function j(a,b,c){h.info({tag:a,...p(c)},b)}function k(a,b,c){h.warn({tag:a,...p(c)},b)}function l(a,b,c){h.error({tag:a,...p(c)},b)}function m(a,b,c){h.info({tag:"HTTP",method:a,path:b,...p(c)},`📥 ${a} ${b}`)}function n(a,b,c){h[a<400?"info":"error"]({tag:"HTTP",status:a,duration:b,...p(c)},`📤 ${a} (${b}ms)`)}function o(a,b){h.debug({tag:"STREAM",event:a,...p(b)},`🌊 ${a}`)}function p(a){return a?"string"==typeof a?{detail:a}:"object"==typeof a?a:{detail:String(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"}}};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";exports.id=7669,exports.ids=[239,2620,7669],exports.modules={12620:(a,b,c)=>{c.d(b,{ez:()=>i,getAllCircuitBreakerStatuses:()=>l,getCircuitBreaker:()=>k,resetAllCircuitBreakers:()=>m});var d=c(97917);let e="CLOSED",f="OPEN",g="HALF_OPEN";class h{constructor(a,b={}){this.name=a,this.failureThreshold=b.failureThreshold??5,this.resetTimeout=b.resetTimeout??3e4,this.halfOpenRequests=b.halfOpenRequests??1,this.onStateChange=b.onStateChange||null,this.isFailure=b.isFailure||(()=>!0),this.state=e,this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this.halfOpenAllowed=0,this._restoreFromDb()}_restoreFromDb(){try{let a=(0,d.vX)(this.name);a&&(this.state=a.state,this.failureCount=a.failureCount,this.lastFailureTime=a.lastFailureTime,this.state===g&&(this.halfOpenAllowed=this.halfOpenRequests))}catch{}}_persistToDb(){try{(0,d.QM)(this.name,{state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime,options:{failureThreshold:this.failureThreshold,resetTimeout:this.resetTimeout,halfOpenRequests:this.halfOpenRequests}})}catch{}}async execute(a){if(this.state===f)if(this._shouldAttemptReset())this._transition(g);else throw new i(`Circuit breaker "${this.name}" is OPEN. Try again later.`,this.name,this._timeUntilReset());if(this.state===g&&this.halfOpenAllowed<=0)throw new i(`Circuit breaker "${this.name}" is HALF_OPEN, no more probe requests allowed.`,this.name,this._timeUntilReset());this.state===g&&this.halfOpenAllowed--;try{let b=await a();return this._onSuccess(),b}catch(a){throw this.isFailure(a)&&this._onFailure(),a}}canExecute(){return this.state===e||(this.state===f?this._shouldAttemptReset():this.state===g&&this.halfOpenAllowed>0)}getStatus(){return{name:this.name,state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime}}reset(){this._transition(e),this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this._persistToDb()}_onSuccess(){this.state===g&&(this.successCount++,this._transition(e),this.failureCount=0),this.failureCount=0,this._persistToDb()}_onFailure(){this.failureCount++,this.lastFailureTime=Date.now(),this.state===g?this._transition(f):this.failureCount>=this.failureThreshold&&this._transition(f),this._persistToDb()}_shouldAttemptReset(){return!this.lastFailureTime||Date.now()-this.lastFailureTime>=this.resetTimeout}_timeUntilReset(){return this.lastFailureTime?Math.max(0,this.resetTimeout-(Date.now()-this.lastFailureTime)):0}_transition(a){let b=this.state;this.state=a,a===g&&(this.halfOpenAllowed=this.halfOpenRequests),this.onStateChange&&b!==a&&this.onStateChange(this.name,b,a)}}class i extends Error{constructor(a,b,c){super(a),this.name="CircuitBreakerOpenError",this.circuitName=b,this.retryAfterMs=c}}let j=new Map;function k(a,b){return j.has(a)||j.set(a,new h(a,b)),j.get(a)}function l(){try{for(let a of(0,d.xd)())j.has(a.name)||k(a.name)}catch{}return Array.from(j.values()).map(a=>a.getStatus())}function m(){for(let a of j.values())a.reset();j.clear();try{(0,d.G7)()}catch{}}},17669:(a,b,c)=>{c.d(b,{Pr:()=>w,Vg:()=>function a(b,c,d=new Set,e=0){if(e>3)throw Error(`Max combo nesting depth (3) exceeded at "${b}"`);if(d.has(b))throw Error(`Circular combo reference detected: ${b}`);d.add(b);let f=Array.isArray(c)?c:c?.combos||[],g=f.find(a=>a.name===b);if(g&&g.models)for(let b of g.models){let c=r(b).model;f.find(a=>a.name===c)&&a(c,f,new Set(d),e+1)}}});var d=c(74163),e=c(71861),f=c(27899);let g={strategy:"priority",maxRetries:1,retryDelayMs:2e3,timeoutMs:12e4,concurrencyPerModel:3,queueTimeoutMs:3e4,healthCheckEnabled:!0,healthCheckTimeoutMs:3e3,maxComboDepth:3,trackMetrics:!0};function h(a,b,c){let d=b?.comboDefaults||{},e=c&&b?.providerOverrides?.[c]||{},f=a?.config||{},h=a=>Object.fromEntries(Object.entries(a).filter(([,a])=>null!=a));return{...g,...h(d),...h(e),...h(f)}}let i=new Map;function j(a,b=3){i.has(a)||i.set(a,{running:0,max:b,queue:[],rateLimitedUntil:null});let c=i.get(a);return c.max=b,c}function k(a){return!!a.rateLimitedUntil&&(!(Date.now()>=a.rateLimitedUntil)||(a.rateLimitedUntil=null,!1))}function l(a){let b=i.get(a);if(b)for(;b.queue.length>0&&b.running<b.max&&!k(b);){let c=b.queue.shift();clearTimeout(c.timer),b.running++,c.resolve(m(a))}}function m(a){let b=!1;return()=>{if(b)return;b=!0;let c=i.get(a);c&&c.running>0&&(c.running--,l(a))}}var n=c(12620),o=c(99939);let p=[429,502,503,504],q=new Map;function r(a){return"string"==typeof a?{model:a,weight:0}:{model:a.model,weight:a.weight||0}}function s(a,b,c=new Set,d=0){if(d>3)return a.models.map(a=>r(a).model);if(c.has(a.name))return[];c.add(a.name);let e=Array.isArray(b)?b:b?.combos||[],f=[];for(let b of a.models||[]){let a=r(b).model,g=e.find(b=>b.name===a);if(g){let a=s(g,e,new Set(c),d+1);f.push(...a)}else f.push(a)}return f}function t(a){let b=a.map(a=>r(a)),c=b.reduce((a,b)=>a+b.weight,0);if(c<=0)return b[Math.floor(Math.random()*b.length)].model;let d=Math.random()*c;for(let a of b)if((d-=a.weight)<=0)return a.model;return b[b.length-1].model}function u(a,b){let c=a.map(a=>r(a));return[c.find(a=>a.model===b),...c.filter(a=>a.model!==b).sort((a,b)=>b.weight-a.weight)].filter(Boolean).map(a=>a.model)}async function v(a){try{let{getPricingForModel:b}=await Promise.resolve().then(c.bind(c,40287)),d=await Promise.all(a.map(async a=>{let c=(0,o.Xh)(a),d=c.provider||c.providerAlias||"unknown",e=c.model||a;try{let c=await b(d,e);return{modelStr:a,cost:c?.input??1/0}}catch{return{modelStr:a,cost:1/0}}}));return d.sort((a,b)=>a.cost-b.cost),d.map(a=>a.modelStr)}catch{return a}}async function w({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l}){let m,q=b.strategy||"priority",w=b.models||[];if("round-robin"===q)return x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l});let y=k?h(b,k):{...g,...b.config||{}},z=y.maxRetries??1,A=y.retryDelayMs??2e3;if(l){let a=s(b,l);if("weighted"===q){let a=t(w);m=(m=u(w,a)).flatMap(a=>{let b=(Array.isArray(l)?l:l?.combos||[]).find(b=>b.name===a);return b?s(b,l):[a]}),j.info("COMBO",`Weighted selection with nested resolution: ${m.length} total models`)}else m=a,j.info("COMBO",`${q} with nested resolution: ${m.length} total models`)}else if("weighted"===q){let a=t(w);m=u(w,a),j.info("COMBO",`Weighted selection: ${a} (from ${w.length} models)`)}else m=w.map(a=>r(a).model);"random"===q?(m=function(a){for(let b=a.length-1;b>0;b--){let c=Math.floor(Math.random()*(b+1));[a[b],a[c]]=[a[c],a[b]]}return a}([...m]),j.info("COMBO",`Random shuffle: ${m.length} models`)):"least-used"===q?(m=function(a,b){let c=(0,f.A5)(b);if(!c||!c.byModel)return a;let d=a.map(a=>({modelStr:a,requests:c.byModel[a]?.requests??0}));return d.sort((a,b)=>a.requests-b.requests),d.map(a=>a.modelStr)}(m,b.name),j.info("COMBO",`Least-used ordering: ${m[0]} has fewest requests`)):"cost-optimized"===q&&(m=await v(m),j.info("COMBO",`Cost-optimized ordering: cheapest first (${m[0]})`));let B=null,C=null,D=null,E=Date.now(),F=0;for(let e=0;e<m.length;e++){let g=m[e],h=(0,o.Xh)(g),k=h.provider||h.providerAlias||"unknown",l=(0,d.T_)(k),r=(0,n.getCircuitBreaker)(`combo:${k}`,{failureThreshold:l.circuitBreakerThreshold,resetTimeout:l.circuitBreakerReset});if(!r.canExecute()){j.info("COMBO",`Skipping ${g}: circuit breaker OPEN for ${k}`),e>0&&F++;continue}if(i&&!await i(g)){j.info("COMBO",`Skipping ${g} (all accounts in cooldown)`),e>0&&F++;continue}for(let h=0;h<=z;h++){h>0&&(j.info("COMBO",`Retrying ${g} in ${A}ms (attempt ${h+1}/${z+1})`),await new Promise(a=>setTimeout(a,A))),j.info("COMBO",`Trying model ${e+1}/${m.length}: ${g}${h>0?` (retry ${h})`:""}`);let i=await c(a,g);if(i.ok){let a=Date.now()-E;return j.info("COMBO",`Model ${g} succeeded (${a}ms, ${F} fallbacks)`),(0,f.JF)(b.name,g,{success:!0,latencyMs:a,fallbackCount:F,strategy:q}),i}let l=i.statusText||"",n=null;try{let a=i.clone();try{let b=await a.json();l=b?.error?.message||b?.error||b?.message||l,n=b?.retryAfter||null}catch{try{let a=await i.text();a&&(l=a.substring(0,500))}catch{}}}catch{}if(n&&(!C||new Date(n)<new Date(C))&&(C=n),"string"!=typeof l)try{l=JSON.stringify(l)}catch{l=String(l)}let{shouldFallback:o,cooldownMs:s}=(0,d.hk)(i.status,l,0,null,k);if(p.includes(i.status)&&r._onFailure(),!o)return j.warn("COMBO",`Model ${g} failed (no fallback)`,{status:i.status}),i;let t=[408,429,500,502,503,504].includes(i.status);if(!(h<z)||!t){B=l||String(i.status),D||(D=i.status),e>0&&F++,j.warn("COMBO",`Model ${g} failed, trying next`,{status:i.status});break}}}let G=m.every(a=>{let b=(0,o.Xh)(a).provider||(0,o.Xh)(a).providerAlias||"unknown";return!(0,n.getCircuitBreaker)(`combo:${b}`).canExecute()}),H=Date.now()-E;if((0,f.JF)(b.name,null,{success:!1,latencyMs:H,fallbackCount:F,strategy:q}),G)return j.warn("COMBO","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let I=D||406,J=B||"All combo models unavailable";if(C){let a=(0,d.Qo)(C);return j.warn("COMBO",`All models failed | ${J} (${a})`),(0,e.wO)(I,J,C,a)}return j.warn("COMBO",`All models failed | ${J}`),new Response(JSON.stringify({error:{message:J}}),{status:I,headers:{"Content-Type":"application/json"}})}async function x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:t,settings:u,allCombos:v}){let w,x=b.models||[],y=u?h(b,u):{...g,...b.config||{}},z=y.concurrencyPerModel??3,A=y.queueTimeoutMs??3e4,B=y.maxRetries??1,C=y.retryDelayMs??2e3,D=(w=v?s(b,v):x.map(a=>r(a).model)).length;if(0===D)return(0,e.wO)(406,"Round-robin combo has no models");let E=q.get(b.name)||0;q.set(b.name,E+1);let F=E%D,G=Date.now(),H=null,I=null,J=null,K=0;for(let e=0;e<D;e++){let g,h=w[(F+e)%D],q=(0,o.Xh)(h),r=q.provider||q.providerAlias||"unknown",s=(0,d.T_)(r),u=(0,n.getCircuitBreaker)(`combo:${r}`,{failureThreshold:s.circuitBreakerThreshold,resetTimeout:s.circuitBreakerReset});if(!u.canExecute()){t.info("COMBO-RR",`Skipping ${h}: circuit breaker OPEN for ${r}`),e>0&&K++;continue}if(i&&!await i(h)){t.info("COMBO-RR",`Skipping ${h} (all accounts in cooldown)`),e>0&&K++;continue}try{g=await function(a,{maxConcurrency:b=3,timeoutMs:c=3e4}={}){let d=j(a,b);return d.running<d.max&&!k(d)?(d.running++,Promise.resolve(m(a))):new Promise((b,e)=>{let f=setTimeout(()=>{let b=d.queue.findIndex(a=>a.timer===f);-1!==b&&d.queue.splice(b,1);let g=Error(`Semaphore timeout after ${c}ms for ${a}`);g.code="SEMAPHORE_TIMEOUT",e(g)},c);d.queue.push({resolve:b,reject:e,timer:f})})}(h,{maxConcurrency:z,timeoutMs:A})}catch(a){if("SEMAPHORE_TIMEOUT"===a.code){t.warn("COMBO-RR",`Semaphore timeout for ${h}, trying next model`),e>0&&K++;continue}throw a}try{for(let g=0;g<=B;g++){g>0&&(t.info("COMBO-RR",`Retrying ${h} in ${C}ms (attempt ${g+1}/${B+1})`),await new Promise(a=>setTimeout(a,C))),t.info("COMBO-RR",`[RR #${E}] → ${h}${e>0?` (fallback +${e})`:""}${g>0?` (retry ${g})`:""}`);let i=await c(a,h);if(i.ok){let a=Date.now()-G;return t.info("COMBO-RR",`${h} succeeded (${a}ms, ${K} fallbacks)`),(0,f.JF)(b.name,h,{success:!0,latencyMs:a,fallbackCount:K,strategy:"round-robin"}),i}let k=i.statusText||"",m=null;try{let a=i.clone();try{let b=await a.json();k=b?.error?.message||b?.error||b?.message||k,m=b?.retryAfter||null}catch{try{let a=await i.text();a&&(k=a.substring(0,500))}catch{}}}catch{}if(m&&(!J||new Date(m)<new Date(J))&&(J=m),"string"!=typeof k)try{k=JSON.stringify(k)}catch{k=String(k)}let{shouldFallback:n,cooldownMs:o}=(0,d.hk)(i.status,k,0,null,r);if(p.includes(i.status)&&o>0&&(!function(a,b){let c=j(a);c.rateLimitedUntil=Date.now()+b,setTimeout(()=>{c.rateLimitedUntil&&Date.now()>=c.rateLimitedUntil&&(c.rateLimitedUntil=null,l(a))},b+50)}(h,o),u._onFailure(),t.warn("COMBO-RR",`${h} error ${i.status}, cooldown ${o}ms (breaker: ${u.getStatus().failureCount}/${s.circuitBreakerThreshold})`)),!n)return t.warn("COMBO-RR",`${h} failed (no fallback)`,{status:i.status}),i;let q=[408,429,500,502,503,504].includes(i.status);if(!(g<B)||!q){H=k||String(i.status),I||(I=i.status),e>0&&K++,t.warn("COMBO-RR",`${h} failed, trying next model`,{status:i.status});break}}}finally{g()}}let L=Date.now()-G;if((0,f.JF)(b.name,null,{success:!1,latencyMs:L,fallbackCount:K,strategy:"round-robin"}),w.every(a=>{let b=(0,o.Xh)(a).provider||(0,o.Xh)(a).providerAlias||"unknown";return!(0,n.getCircuitBreaker)(`combo:${b}`).canExecute()}))return t.warn("COMBO-RR","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let M=I||406,N=H||"All round-robin combo models unavailable";if(J){let a=(0,d.Qo)(J);return t.warn("COMBO-RR",`All models failed | ${N} (${a})`),(0,e.wO)(M,N,J,a)}return t.warn("COMBO-RR",`All models failed | ${N}`),new Response(JSON.stringify({error:{message:N}}),{status:M,headers:{"Content-Type":"application/json"}})}},27899:(a,b,c)=>{c.d(b,{A5:()=>f,BS:()=>g,Go:()=>i,JF:()=>e,NZ:()=>h});let d=new Map;function e(a,b,{success:c,latencyMs:e,fallbackCount:f=0,strategy:g="priority"}){d.has(a)||d.set(a,{totalRequests:0,totalSuccesses:0,totalFailures:0,totalFallbacks:0,totalLatencyMs:0,strategy:g,lastUsedAt:null,byModel:{}});let h=d.get(a);if(h.totalRequests++,h.totalLatencyMs+=e,h.totalFallbacks+=f,h.lastUsedAt=new Date().toISOString(),h.strategy=g,c?h.totalSuccesses++:h.totalFailures++,b){h.byModel[b]||(h.byModel[b]={requests:0,successes:0,failures:0,totalLatencyMs:0,lastStatus:null,lastUsedAt:null});let a=h.byModel[b];a.requests++,a.totalLatencyMs+=e,a.lastUsedAt=new Date().toISOString(),c?(a.successes++,a.lastStatus="ok"):(a.failures++,a.lastStatus="error")}}function f(a){let b=d.get(a);return b?{...b,avgLatencyMs:b.totalRequests>0?Math.round(b.totalLatencyMs/b.totalRequests):0,successRate:b.totalRequests>0?Math.round(b.totalSuccesses/b.totalRequests*100):0,fallbackRate:b.totalRequests>0?Math.round(b.totalFallbacks/b.totalRequests*100):0,byModel:Object.fromEntries(Object.entries(b.byModel).map(([a,b])=>[a,{...b,avgLatencyMs:b.requests>0?Math.round(b.totalLatencyMs/b.requests):0,successRate:b.requests>0?Math.round(b.successes/b.requests*100):0}]))}:null}function g(){let a={};for(let[b]of d)a[b]=f(b);return a}function h(a){d.delete(a)}function i(){d.clear()}},97917:(a,b,c)=>{c.d(b,{G7:()=>q,M4:()=>m,QM:()=>n,_s:()=>l,io:()=>i,mE:()=>f,qA:()=>k,tv:()=>j,vX:()=>o,xV:()=>e,xd:()=>p,z$:()=>g,zd:()=>h});var d=c(41549);function e(a,b){(0,d.sm)().prepare("INSERT OR REPLACE INTO domain_fallback_chains (model, chain) VALUES (?, ?)").run(a,JSON.stringify(b))}function f(){let a=(0,d.sm)().prepare("SELECT model, chain FROM domain_fallback_chains").all(),b={};for(let c of a)b[c.model]=JSON.parse(c.chain);return b}function g(a){return(0,d.sm)().prepare("DELETE FROM domain_fallback_chains WHERE model = ?").run(a).changes>0}function h(a,b){(0,d.sm)().prepare(`INSERT OR REPLACE INTO domain_budgets (api_key_id, daily_limit_usd, monthly_limit_usd, warning_threshold)
|
|
1
|
+
"use strict";exports.id=7669,exports.ids=[239,2620,7669],exports.modules={12620:(a,b,c)=>{c.d(b,{ez:()=>i,getAllCircuitBreakerStatuses:()=>l,getCircuitBreaker:()=>k,resetAllCircuitBreakers:()=>m});var d=c(97917);let e="CLOSED",f="OPEN",g="HALF_OPEN";class h{constructor(a,b={}){this.name=a,this.failureThreshold=b.failureThreshold??5,this.resetTimeout=b.resetTimeout??3e4,this.halfOpenRequests=b.halfOpenRequests??1,this.onStateChange=b.onStateChange||null,this.isFailure=b.isFailure||(()=>!0),this.state=e,this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this.halfOpenAllowed=0,this._restoreFromDb()}_restoreFromDb(){try{let a=(0,d.vX)(this.name);a&&(this.state=a.state,this.failureCount=a.failureCount,this.lastFailureTime=a.lastFailureTime,this.state===g&&(this.halfOpenAllowed=this.halfOpenRequests))}catch{}}_persistToDb(){try{(0,d.QM)(this.name,{state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime,options:{failureThreshold:this.failureThreshold,resetTimeout:this.resetTimeout,halfOpenRequests:this.halfOpenRequests}})}catch{}}async execute(a){if(this.state===f)if(this._shouldAttemptReset())this._transition(g);else throw new i(`Circuit breaker "${this.name}" is OPEN. Try again later.`,this.name,this._timeUntilReset());if(this.state===g&&this.halfOpenAllowed<=0)throw new i(`Circuit breaker "${this.name}" is HALF_OPEN, no more probe requests allowed.`,this.name,this._timeUntilReset());this.state===g&&this.halfOpenAllowed--;try{let b=await a();return this._onSuccess(),b}catch(a){throw this.isFailure(a)&&this._onFailure(),a}}canExecute(){return this.state===e||(this.state===f?this._shouldAttemptReset():this.state===g&&this.halfOpenAllowed>0)}getStatus(){return{name:this.name,state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime}}reset(){this._transition(e),this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this._persistToDb()}_onSuccess(){this.state===g&&(this.successCount++,this._transition(e),this.failureCount=0),this.failureCount=0,this._persistToDb()}_onFailure(){this.failureCount++,this.lastFailureTime=Date.now(),this.state===g?this._transition(f):this.failureCount>=this.failureThreshold&&this._transition(f),this._persistToDb()}_shouldAttemptReset(){return!this.lastFailureTime||Date.now()-this.lastFailureTime>=this.resetTimeout}_timeUntilReset(){return this.lastFailureTime?Math.max(0,this.resetTimeout-(Date.now()-this.lastFailureTime)):0}_transition(a){let b=this.state;this.state=a,a===g&&(this.halfOpenAllowed=this.halfOpenRequests),this.onStateChange&&b!==a&&this.onStateChange(this.name,b,a)}}class i extends Error{constructor(a,b,c){super(a),this.name="CircuitBreakerOpenError",this.circuitName=b,this.retryAfterMs=c}}let j=new Map;function k(a,b){return j.has(a)||j.set(a,new h(a,b)),j.get(a)}function l(){try{for(let a of(0,d.xd)())j.has(a.name)||k(a.name)}catch{}return Array.from(j.values()).map(a=>a.getStatus())}function m(){for(let a of j.values())a.reset();j.clear();try{(0,d.G7)()}catch{}}},17669:(a,b,c)=>{c.d(b,{Pr:()=>w,Vg:()=>function a(b,c,d=new Set,e=0){if(e>3)throw Error(`Max combo nesting depth (3) exceeded at "${b}"`);if(d.has(b))throw Error(`Circular combo reference detected: ${b}`);d.add(b);let f=Array.isArray(c)?c:c?.combos||[],g=f.find(a=>a.name===b);if(g&&g.models)for(let b of g.models){let c=r(b).model;f.find(a=>a.name===c)&&a(c,f,new Set(d),e+1)}}});var d=c(74163),e=c(71861),f=c(27899);let g={strategy:"priority",maxRetries:1,retryDelayMs:2e3,timeoutMs:12e4,concurrencyPerModel:3,queueTimeoutMs:3e4,healthCheckEnabled:!0,healthCheckTimeoutMs:3e3,maxComboDepth:3,trackMetrics:!0};function h(a,b,c){let d=b?.comboDefaults||{},e=c&&b?.providerOverrides?.[c]||{},f=a?.config||{},h=a=>Object.fromEntries(Object.entries(a).filter(([,a])=>null!=a));return{...g,...h(d),...h(e),...h(f)}}let i=new Map;function j(a,b=3){i.has(a)||i.set(a,{running:0,max:b,queue:[],rateLimitedUntil:null});let c=i.get(a);return c.max=b,c}function k(a){return!!a.rateLimitedUntil&&(!(Date.now()>=a.rateLimitedUntil)||(a.rateLimitedUntil=null,!1))}function l(a){let b=i.get(a);if(b)for(;b.queue.length>0&&b.running<b.max&&!k(b);){let c=b.queue.shift();clearTimeout(c.timer),b.running++,c.resolve(m(a))}}function m(a){let b=!1;return()=>{if(b)return;b=!0;let c=i.get(a);c&&c.running>0&&(c.running--,l(a))}}var n=c(12620),o=c(99939);let p=[429,502,503,504],q=new Map;function r(a){return"string"==typeof a?{model:a,weight:0}:{model:a.model,weight:a.weight||0}}function s(a,b,c=new Set,d=0){if(d>3)return a.models.map(a=>r(a).model);if(c.has(a.name))return[];c.add(a.name);let e=Array.isArray(b)?b:b?.combos||[],f=[];for(let b of a.models||[]){let a=r(b).model,g=e.find(b=>b.name===a);if(g){let a=s(g,e,new Set(c),d+1);f.push(...a)}else f.push(a)}return f}function t(a){let b=a.map(a=>r(a)),c=b.reduce((a,b)=>a+b.weight,0);if(c<=0)return b[Math.floor(Math.random()*b.length)].model;let d=Math.random()*c;for(let a of b)if((d-=a.weight)<=0)return a.model;return b[b.length-1].model}function u(a,b){let c=a.map(a=>r(a));return[c.find(a=>a.model===b),...c.filter(a=>a.model!==b).sort((a,b)=>b.weight-a.weight)].filter(Boolean).map(a=>a.model)}async function v(a){try{let{getPricingForModel:b}=await Promise.resolve().then(c.bind(c,40287)),d=await Promise.all(a.map(async a=>{let c=(0,o.Xh)(a),d=c.provider||c.providerAlias||"unknown",e=c.model||a;try{let c=await b(d,e);return{modelStr:a,cost:c?.input??1/0}}catch{return{modelStr:a,cost:1/0}}}));return d.sort((a,b)=>a.cost-b.cost),d.map(a=>a.modelStr)}catch{return a}}async function w({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l}){let m,q=b.strategy||"priority",w=b.models||[];if("round-robin"===q)return x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l});let y=k?h(b,k):{...g,...b.config||{}},z=y.maxRetries??1,A=y.retryDelayMs??2e3;if(l){let a=s(b,l);if("weighted"===q){let a=t(w);m=(m=u(w,a)).flatMap(a=>{let b=(Array.isArray(l)?l:l?.combos||[]).find(b=>b.name===a);return b?s(b,l):[a]}),j.info("COMBO",`Weighted selection with nested resolution: ${m.length} total models`)}else m=a,j.info("COMBO",`${q} with nested resolution: ${m.length} total models`)}else if("weighted"===q){let a=t(w);m=u(w,a),j.info("COMBO",`Weighted selection: ${a} (from ${w.length} models)`)}else m=w.map(a=>r(a).model);"random"===q?(m=function(a){for(let b=a.length-1;b>0;b--){let c=Math.floor(Math.random()*(b+1));[a[b],a[c]]=[a[c],a[b]]}return a}([...m]),j.info("COMBO",`Random shuffle: ${m.length} models`)):"least-used"===q?(m=function(a,b){let c=(0,f.A5)(b);if(!c||!c.byModel)return a;let d=a.map(a=>({modelStr:a,requests:c.byModel[a]?.requests??0}));return d.sort((a,b)=>a.requests-b.requests),d.map(a=>a.modelStr)}(m,b.name),j.info("COMBO",`Least-used ordering: ${m[0]} has fewest requests`)):"cost-optimized"===q&&(m=await v(m),j.info("COMBO",`Cost-optimized ordering: cheapest first (${m[0]})`));let B=null,C=null,D=null,E=Date.now(),F=0;for(let e=0;e<m.length;e++){let g=m[e],h=(0,o.Xh)(g),k=h.provider||h.providerAlias||"unknown",l=(0,d.T_)(k),r=(0,n.getCircuitBreaker)(`combo:${k}`,{failureThreshold:l.circuitBreakerThreshold,resetTimeout:l.circuitBreakerReset});if(!r.canExecute()){j.info("COMBO",`Skipping ${g}: circuit breaker OPEN for ${k}`),e>0&&F++;continue}if(i&&!await i(g)){j.info("COMBO",`Skipping ${g} (all accounts in cooldown)`),e>0&&F++;continue}for(let h=0;h<=z;h++){h>0&&(j.info("COMBO",`Retrying ${g} in ${A}ms (attempt ${h+1}/${z+1})`),await new Promise(a=>setTimeout(a,A))),j.info("COMBO",`Trying model ${e+1}/${m.length}: ${g}${h>0?` (retry ${h})`:""}`);let i=await c(a,g);if(i.ok){let a=Date.now()-E;return j.info("COMBO",`Model ${g} succeeded (${a}ms, ${F} fallbacks)`),(0,f.JF)(b.name,g,{success:!0,latencyMs:a,fallbackCount:F,strategy:q}),i}let l=i.statusText||"",n=null;try{let a=i.clone();try{let b=await a.json();l=b?.error?.message||b?.error||b?.message||l,n=b?.retryAfter||null}catch{try{let a=await i.text();a&&(l=a.substring(0,500))}catch{}}}catch{}if(n&&(!C||new Date(n)<new Date(C))&&(C=n),"string"!=typeof l)try{l=JSON.stringify(l)}catch{l=String(l)}let{shouldFallback:o,cooldownMs:s}=(0,d.hk)(i.status,l,0,null,k);if(p.includes(i.status)&&r._onFailure(),!o)return j.warn("COMBO",`Model ${g} failed (no fallback)`,{status:i.status}),i;let t=[408,429,500,502,503,504].includes(i.status);if(!(h<z)||!t){B=l||String(i.status),D||(D=i.status),e>0&&F++,j.warn("COMBO",`Model ${g} failed, trying next`,{status:i.status});break}}}let G=m.every(a=>{let b=(0,o.Xh)(a).provider||(0,o.Xh)(a).providerAlias||"unknown";return!(0,n.getCircuitBreaker)(`combo:${b}`).canExecute()}),H=Date.now()-E;if((0,f.JF)(b.name,null,{success:!1,latencyMs:H,fallbackCount:F,strategy:q}),G)return j.warn("COMBO","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let I=D||406,J=B||"All combo models unavailable";if(C){let a=(0,d.Qo)(C);return j.warn("COMBO",`All models failed | ${J} (${a})`),(0,e.wO)(I,J,C,a)}return j.warn("COMBO",`All models failed | ${J}`),new Response(JSON.stringify({error:{message:J}}),{status:I,headers:{"Content-Type":"application/json"}})}async function x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:t,settings:u,allCombos:v}){let w,x=b.models||[],y=u?h(b,u):{...g,...b.config||{}},z=y.concurrencyPerModel??3,A=y.queueTimeoutMs??3e4,B=y.maxRetries??1,C=y.retryDelayMs??2e3,D=(w=v?s(b,v):x.map(a=>r(a).model)).length;if(0===D)return(0,e.wO)(406,"Round-robin combo has no models");let E=q.get(b.name)||0;q.set(b.name,E+1);let F=E%D,G=Date.now(),H=null,I=null,J=null,K=0;for(let e=0;e<D;e++){let g,h=w[(F+e)%D],q=(0,o.Xh)(h),r=q.provider||q.providerAlias||"unknown",s=(0,d.T_)(r),u=(0,n.getCircuitBreaker)(`combo:${r}`,{failureThreshold:s.circuitBreakerThreshold,resetTimeout:s.circuitBreakerReset});if(!u.canExecute()){t.info("COMBO-RR",`Skipping ${h}: circuit breaker OPEN for ${r}`),e>0&&K++;continue}if(i&&!await i(h)){t.info("COMBO-RR",`Skipping ${h} (all accounts in cooldown)`),e>0&&K++;continue}try{g=await function(a,{maxConcurrency:b=3,timeoutMs:c=3e4}={}){let d=j(a,b);return d.running<d.max&&!k(d)?(d.running++,Promise.resolve(m(a))):new Promise((b,e)=>{let f=setTimeout(()=>{let b=d.queue.findIndex(a=>a.timer===f);-1!==b&&d.queue.splice(b,1);let g=Error(`Semaphore timeout after ${c}ms for ${a}`);g.code="SEMAPHORE_TIMEOUT",e(g)},c);d.queue.push({resolve:b,reject:e,timer:f})})}(h,{maxConcurrency:z,timeoutMs:A})}catch(a){if("SEMAPHORE_TIMEOUT"===a.code){t.warn("COMBO-RR",`Semaphore timeout for ${h}, trying next model`),e>0&&K++;continue}throw a}try{for(let g=0;g<=B;g++){g>0&&(t.info("COMBO-RR",`Retrying ${h} in ${C}ms (attempt ${g+1}/${B+1})`),await new Promise(a=>setTimeout(a,C))),t.info("COMBO-RR",`[RR #${E}] → ${h}${e>0?` (fallback +${e})`:""}${g>0?` (retry ${g})`:""}`);let i=await c(a,h);if(i.ok){let a=Date.now()-G;return t.info("COMBO-RR",`${h} succeeded (${a}ms, ${K} fallbacks)`),(0,f.JF)(b.name,h,{success:!0,latencyMs:a,fallbackCount:K,strategy:"round-robin"}),i}let k=i.statusText||"",m=null;try{let a=i.clone();try{let b=await a.json();k=b?.error?.message||b?.error||b?.message||k,m=b?.retryAfter||null}catch{try{let a=await i.text();a&&(k=a.substring(0,500))}catch{}}}catch{}if(m&&(!J||new Date(m)<new Date(J))&&(J=m),"string"!=typeof k)try{k=JSON.stringify(k)}catch{k=String(k)}let{shouldFallback:n,cooldownMs:o}=(0,d.hk)(i.status,k,0,null,r);if(p.includes(i.status)&&o>0&&(!function(a,b){let c=j(a);c.rateLimitedUntil=Date.now()+b,setTimeout(()=>{c.rateLimitedUntil&&Date.now()>=c.rateLimitedUntil&&(c.rateLimitedUntil=null,l(a))},b+50)}(h,o),u._onFailure(),t.warn("COMBO-RR",`${h} error ${i.status}, cooldown ${o}ms (breaker: ${u.getStatus().failureCount}/${s.circuitBreakerThreshold})`)),!n)return t.warn("COMBO-RR",`${h} failed (no fallback)`,{status:i.status}),i;let q=[408,429,500,502,503,504].includes(i.status);if(!(g<B)||!q){H=k||String(i.status),I||(I=i.status),e>0&&K++,t.warn("COMBO-RR",`${h} failed, trying next model`,{status:i.status});break}}}finally{g()}}let L=Date.now()-G;if((0,f.JF)(b.name,null,{success:!1,latencyMs:L,fallbackCount:K,strategy:"round-robin"}),w.every(a=>{let b=(0,o.Xh)(a).provider||(0,o.Xh)(a).providerAlias||"unknown";return!(0,n.getCircuitBreaker)(`combo:${b}`).canExecute()}))return t.warn("COMBO-RR","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let M=I||406,N=H||"All round-robin combo models unavailable";if(J){let a=(0,d.Qo)(J);return t.warn("COMBO-RR",`All models failed | ${N} (${a})`),(0,e.wO)(M,N,J,a)}return t.warn("COMBO-RR",`All models failed | ${N}`),new Response(JSON.stringify({error:{message:N}}),{status:M,headers:{"Content-Type":"application/json"}})}},27899:(a,b,c)=>{c.d(b,{A5:()=>f,BS:()=>g,Go:()=>i,JF:()=>e,NZ:()=>h});let d=new Map;function e(a,b,{success:c,latencyMs:e,fallbackCount:f=0,strategy:g="priority"}){d.has(a)||d.set(a,{totalRequests:0,totalSuccesses:0,totalFailures:0,totalFallbacks:0,totalLatencyMs:0,strategy:g,lastUsedAt:null,byModel:{}});let h=d.get(a);if(h.totalRequests++,h.totalLatencyMs+=e,h.totalFallbacks+=f,h.lastUsedAt=new Date().toISOString(),h.strategy=g,c?h.totalSuccesses++:h.totalFailures++,b){h.byModel[b]||(h.byModel[b]={requests:0,successes:0,failures:0,totalLatencyMs:0,lastStatus:null,lastUsedAt:null});let a=h.byModel[b];a.requests++,a.totalLatencyMs+=e,a.lastUsedAt=new Date().toISOString(),c?(a.successes++,a.lastStatus="ok"):(a.failures++,a.lastStatus="error")}}function f(a){let b=d.get(a);return b?{...b,avgLatencyMs:b.totalRequests>0?Math.round(b.totalLatencyMs/b.totalRequests):0,successRate:b.totalRequests>0?Math.round(b.totalSuccesses/b.totalRequests*100):0,fallbackRate:b.totalRequests>0?Math.round(b.totalFallbacks/b.totalRequests*100):0,byModel:Object.fromEntries(Object.entries(b.byModel).map(([a,b])=>[a,{...b,avgLatencyMs:b.requests>0?Math.round(b.totalLatencyMs/b.requests):0,successRate:b.requests>0?Math.round(b.successes/b.requests*100):0}]))}:null}function g(){let a={};for(let[b]of d)a[b]=f(b);return a}function h(a){d.delete(a)}function i(){d.clear()}},97917:(a,b,c)=>{c.d(b,{G7:()=>q,M4:()=>m,QM:()=>n,_s:()=>l,io:()=>i,mE:()=>f,qA:()=>k,tv:()=>j,vX:()=>o,xV:()=>e,xd:()=>p,z$:()=>g,zd:()=>h});var d=c(42910);function e(a,b){(0,d.sm)().prepare("INSERT OR REPLACE INTO domain_fallback_chains (model, chain) VALUES (?, ?)").run(a,JSON.stringify(b))}function f(){let a=(0,d.sm)().prepare("SELECT model, chain FROM domain_fallback_chains").all(),b={};for(let c of a)b[c.model]=JSON.parse(c.chain);return b}function g(a){return(0,d.sm)().prepare("DELETE FROM domain_fallback_chains WHERE model = ?").run(a).changes>0}function h(a,b){(0,d.sm)().prepare(`INSERT OR REPLACE INTO domain_budgets (api_key_id, daily_limit_usd, monthly_limit_usd, warning_threshold)
|
|
2
2
|
VALUES (?, ?, ?, ?)`).run(a,b.dailyLimitUsd,b.monthlyLimitUsd||0,b.warningThreshold??.8)}function i(a){let b=(0,d.sm)().prepare("SELECT * FROM domain_budgets WHERE api_key_id = ?").get(a);return b?{dailyLimitUsd:b.daily_limit_usd,monthlyLimitUsd:b.monthly_limit_usd,warningThreshold:b.warning_threshold}:null}function j(a,b,c=Date.now()){(0,d.sm)().prepare("INSERT INTO domain_cost_history (api_key_id, cost, timestamp) VALUES (?, ?, ?)").run(a,b,c)}function k(a,b){return(0,d.sm)().prepare("SELECT cost, timestamp FROM domain_cost_history WHERE api_key_id = ? AND timestamp >= ? ORDER BY timestamp").all(a,b)}function l(a){(0,d.sm)().prepare("DELETE FROM domain_lockout_state WHERE identifier = ?").run(a)}function m(){let a=(0,d.sm)(),b=Date.now();return a.prepare("SELECT identifier, locked_until FROM domain_lockout_state WHERE locked_until IS NOT NULL AND locked_until > ?").all(b).map(a=>({identifier:a.identifier,lockedUntil:a.locked_until}))}function n(a,b){(0,d.sm)().prepare(`INSERT OR REPLACE INTO domain_circuit_breakers (name, state, failure_count, last_failure_time, options)
|
|
3
3
|
VALUES (?, ?, ?, ?, ?)`).run(a,b.state,b.failureCount,b.lastFailureTime,b.options?JSON.stringify(b.options):null)}function o(a){let b=(0,d.sm)().prepare("SELECT * FROM domain_circuit_breakers WHERE name = ?").get(a);return b?{state:b.state,failureCount:b.failure_count,lastFailureTime:b.last_failure_time,options:b.options?JSON.parse(b.options):null}:null}function p(){return(0,d.sm)().prepare("SELECT name, state, failure_count, last_failure_time FROM domain_circuit_breakers").all().map(a=>({name:a.name,state:a.state,failureCount:a.failure_count,lastFailureTime:a.last_failure_time}))}function q(){(0,d.sm)().prepare("DELETE FROM domain_circuit_breakers").run()}},99939:(a,b,c)=>{c.d(b,{Xh:()=>i,js:()=>j});var d=c(23969);let e={};for(let[a,b]of Object.entries(d.PROVIDER_ID_TO_ALIAS))e[b]&&console.log(`[MODEL] Warning: alias "${b}" maps to both "${e[b]}" and "${a}". Using "${a}".`),e[b]=a;let f={github:{"claude-4.5-opus":"claude-opus-4-5-20251101","claude-opus-4.5":"claude-opus-4-5-20251101","gemini-3-pro":"gemini-3-pro-preview","gemini-3-flash":"gemini-3-flash-preview","raptor-mini":"oswe-vscode-prime"},antigravity:{"gemini-3-flash":"gemini-3-flash-preview"}},g=new Map;for(let[a,b]of Object.entries(d.vq)){let c=e[a]||a;for(let a of b||[]){let b=a?.id;if(!b)continue;let d=g.get(b)||[];d.includes(c)||(d.push(c),g.set(b,d))}}function h(a,b){if(!b||"string"!=typeof b)return b;let c=f[e[a]||a];return c?.[b]||b}function i(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(/\.\.[\/\\]/.test(a)||/[\x00-\x1f]/.test(a))return console.log(`[MODEL] Warning: rejected malformed model string: "${a.substring(0,50)}"`),{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}async function j(a,b){let c=i(a);if(!c.isAlias){let a=h(c.provider,c.model);return{provider:c.provider,model:a}}let f="function"==typeof b?await b():b,j=function(a,b){var c,d;if(!b)return null;let f=b[a];if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:null}(c.model,f);if(j){let a=h(j.provider,j.model);return{provider:j.provider,model:a}}let k=c.model,l=g.get(k)||[];if(l.includes("openai"))return{provider:"openai",model:k};let m=l.filter(a=>"openai"!==a);if(1===m.length){let a=m[0],b=h(a,k);return{provider:a,model:b}}if(m.length>1){let a=m.map(a=>d.PROVIDER_ID_TO_ALIAS[a]||a),b=a.slice(0,2).map(a=>`${a}/${k}`),c=`Ambiguous model '${k}'. Use provider/model prefix (ex: ${b.join(" or ")}).`;return console.warn(`[MODEL] ${c} Candidates: ${a.join(", ")}`),{provider:null,model:k,errorType:"ambiguous_model",errorMessage:c,candidateProviders:m,candidateAliases:a}}return{provider:"openai",model:k}}}};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";exports.id=7723,exports.ids=[7723],exports.modules={17723:(a,b,c)=>{c.d(b,{initGracefulShutdown:()=>g});let d=!1;async function e(){return Date.now(),new Promise(a=>{console.log("[Shutdown] All in-flight requests drained."),a()})}async function f(){try{let{getDbInstance:a}=await c.e(4488).then(c.bind(c,44488)),b=a();b&&"function"==typeof b.close&&(b.close(),console.log("[Shutdown] SQLite database closed."))}catch(a){console.error("[Shutdown] Error during cleanup:",a.message)}}function g(){let a=async a=>{d||(d=!0,console.log(`
|
|
2
|
+
[Shutdown] Received ${a}. Draining 0 request(s)...`),await e(),await f(),console.log("[Shutdown] Bye."),process.exit(0))};process.on("SIGTERM",()=>a("SIGTERM")),process.on("SIGINT",()=>a("SIGINT")),console.log("[Shutdown] Graceful shutdown handlers registered.")}parseInt(process.env.SHUTDOWN_TIMEOUT_MS||"30000",10)}};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
exports.id=9979,exports.ids=[9979],exports.modules={7224:(a,b,c)=>{Promise.resolve().then(c.bind(c,67045))},8979:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/not-found.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/not-found.tsx","default")},12608:(a,b,c)=>{Promise.resolve().then(c.bind(c,8979))},17084:(a,b,c)=>{"use strict";c.d(b,{Q2:()=>o,DI:()=>l,fg:()=>j,MA:()=>p,IS:()=>h,zN:()=>i,JH:()=>k,wb:()=>s,wG:()=>r,zt:()=>q,gb:()=>n,mq:()=>m});var d=c(60258);let e=d.Ikc({id:d.YjP().min(1),alias:d.YjP().min(1),name:d.YjP().min(1),icon:d.YjP().min(1),color:d.YjP().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:d.YjP().optional(),website:d.YjP().url().optional(),passthroughModels:d.zMY().optional()}),f=d.g1P(d.YjP(),e);function g(a,b){let c=f.safeParse(a);if(!c.success){let a=c.error.issues.map(a=>` ${a.path.join(".")}: ${a.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${b} has invalid entries:
|
|
2
|
+
${a}`),Error(`Provider validation failed for ${b}`)}}let h={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},i={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},j={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"}},k="openai-compatible-",l="anthropic-compatible-";function m(a){return"string"==typeof a&&a.startsWith(k)}function n(a){return"string"==typeof a&&a.startsWith(l)}let o={...h,...i,...j},p={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function q(a){for(let b of Object.values(o))if(b.alias===a||b.id===a)return b;return null}function r(a){let b=o[a];return b?.alias||a}Object.values(o).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(o).reduce((a,b)=>(a[b.id]=b.alias,a),{});let s=["antigravity","kiro","github","codex","claude"];g(h,"FREE_PROVIDERS"),g(i,"OAUTH_PROVIDERS"),g(j,"APIKEY_PROVIDERS")},25977:(a,b,c)=>{"use strict";var d=c(49226),e=c(40287),f=c(87068);let g="[HealthCheck]",h=!1;async function i(){try{let a=await (0,e.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await j(b)}catch(a){console.error(`${g} Error checking ${b.name||b.id}:`,a.message)}}catch(a){console.error(`${g} Sweep error:`,a.message)}}async function j(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,f.Ny)(a.provider)){let b=new Date().toISOString();await (0,e.rj)(a.id,{lastHealthCheckAt:b}),console.log(`${g} Skipping ${a.provider}/${a.name||a.email||a.id} (refresh unsupported)`);return}let c=a.lastHealthCheckAt?new Date(a.lastHealthCheckAt).getTime():0;if(Date.now()-c<60*b*1e3)return;console.log(`${g} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let d={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await (0,f.iD)(a.provider,d,{info:(a,b)=>console.log(`${g} [${a}] ${b}`),warn:(a,b)=>console.warn(`${g} [${a}] ${b}`),error:(a,b,c)=>console.error(`${g} [${a}] ${b}`,c||"")}),i=new Date().toISOString();if((0,f.jT)(h)){await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"expired",lastError:`Refresh token consumed (${h.error}). Please re-authenticate this account.`,lastErrorAt:i,lastErrorType:h.error,lastErrorSource:"oauth",errorCode:h.error,isActive:!1,refreshToken:null}),console.error(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${h.error}). Connection deactivated. Re-authenticate to restore.`);return}if(h&&h.accessToken){let b={accessToken:h.accessToken,lastHealthCheckAt:i,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};h.refreshToken&&(b.refreshToken=h.refreshToken),h.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*h.expiresIn).toISOString()),await (0,e.rj)(a.id,b),console.log(`${g} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:i,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),console.warn(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}h=!0,console.log(`${g} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{i(),setInterval(i,6e4)},1e4);let k=!1;(async function(){if(!k)try{await (0,d.A)(),k=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return k})().catch(a=>console.error("[CloudSync] ensure failed:",a))},29348:(a,b,c)=>{Promise.resolve().then(c.bind(c,75146))},32444:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ThemeProvider.tsx","ThemeProvider")},39710:(a,b,c)=>{Promise.resolve().then(c.bind(c,97507))},44438:(a,b,c)=>{Promise.resolve().then(c.bind(c,64385))},47695:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(31417),e=c(300),f=c(73959);let g=(0,d.v)()((0,e.Zr)((a,b)=>({theme:f.B2.defaultTheme,setTheme:b=>{a({theme:b})},toggleTheme:()=>{let c="dark"===b().theme?"light":"dark";a({theme:c})},initTheme:()=>{b().theme}}),{name:f.B2.storageKey}))},47825:(a,b,c)=>{"use strict";c.d(b,{KC:()=>d.KC,Xg:()=>d.Xg});var d=c(97319);Object.entries(c(17084).Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},49226:(a,b,c)=>{"use strict";c.d(b,{A:()=>k});var d=c(90357),e=c(40287);let f=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||process.env.NEXT_PUBLIC_APP_URL||"http://localhost:20128";class g{constructor(a=null,b=15){this.machineId=a,this.intervalMinutes=b,this.intervalId=null}async initializeMachineId(){this.machineId||(this.machineId=await (0,d.Xj)())}async start(){this.intervalId||(await this.initializeMachineId(),setTimeout(()=>{this.syncWithRetry().catch(()=>{})},3e4),this.intervalId=setInterval(()=>{this.syncWithRetry().catch(()=>{})},60*this.intervalMinutes*1e3))}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null)}async syncWithRetry(a=1){for(let b=1;b<=a;b++)try{return await this.sync()}catch(d){if(b===a)return null;let c=Math.min(1e3*Math.pow(2,b),1e4);await new Promise(a=>setTimeout(a,c))}}async sync(){if(!await (0,e.Nx)())return null;await this.initializeMachineId();let a=await fetch(`${f}/api/sync/cloud`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({machineId:this.machineId,action:"sync"})});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Sync failed");return await a.json()}isRunning(){return null!==this.intervalId}}let h=null;async function i(a=null,b=15){return h||(h=new g(a,b)),h}async function j(){try{await (0,e.bI)();let a=await i(null,15);return await a.start(),a}catch(a){throw console.error("[CloudSync] Error initializing scheduler:",a),a}}a=c.hmd(a),c.c[c.s]===a&&j().catch(a=>console.error("[CloudSync] init failed:",a));let k=j},61135:()=>{},64385:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/error.tsx","default")},67045:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[#0a0a0f] text-[#e0e0e0] font-[system-ui,-apple-system,sans-serif] text-center m-0",children:(0,d.jsxs)("main",{role:"alert","aria-live":"assertive",className:"flex flex-col items-center",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4","aria-hidden":"true",children:"⚠️"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-[15px] text-[#888] max-w-[400px] leading-relaxed mb-6",children:"An unexpected error occurred. This has been logged and our team will investigate."}),!1,(0,d.jsx)("button",{onClick:b,"aria-label":"Retry loading the page",className:"px-8 py-3 rounded-[10px] text-white border-none text-sm font-semibold cursor-pointer transition-transform duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6] focus:outline-2 focus:outline-offset-2 focus:outline-[#6366f1]",children:"Try Again"})]})})})}},73857:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(48249),e=c(2116),f=c.n(e);function g(){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[var(--bg-primary,#0a0a0f)] text-[var(--text-primary,#e0e0e0)] text-center",role:"main","aria-labelledby":"not-found-title",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-[#6366f1] via-[#8b5cf6] to-[#a855f7] bg-clip-text text-transparent","aria-hidden":"true",children:"404"}),(0,d.jsx)("h1",{id:"not-found-title",className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--text-secondary,#888)] max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsx)(f(),{href:"/dashboard",className:"px-8 py-3 rounded-[10px] text-white text-sm font-semibold no-underline transition-all duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6] focus:outline-2 focus:outline-offset-2 focus:outline-[#6366f1]","aria-label":"Return to dashboard",children:"Go to Dashboard"})]})}},73959:(a,b,c)=>{"use strict";c.d(b,{Q2:()=>d.Q2,fg:()=>d.fg,vQ:()=>e,MA:()=>d.MA,zN:()=>d.zN,B2:()=>f});var d=c(17084);c(47825);let e={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:"1.0.2"},f={storageKey:"theme",defaultTheme:"system"}},75146:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249);c(67484);var e=c(47695);function f({children:a}){let{initTheme:b}=(0,e.A)();return(0,d.jsx)(d.Fragment,{children:a})}},76160:(a,b,c)=>{Promise.resolve().then(c.bind(c,73857))},76196:(a,b,c)=>{Promise.resolve().then(c.bind(c,32444))},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i,metadata:()=>h});var d=c(5735),e=c(50609),f=c.n(e);c(61135);var g=c(32444);c(25977);let h={title:"OmniRoute — AI Gateway for Multi-Provider LLMs",description:"OmniRoute is an AI gateway for multi-provider LLMs. One endpoint for all your AI providers.",icons:{icon:"/favicon.svg",apple:"/apple-touch-icon.svg"}};function i({children:a}){return(0,d.jsxs)("html",{lang:"en",suppressHydrationWarning:!0,children:[(0,d.jsxs)("head",{children:[(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),(0,d.jsx)("link",{href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap",rel:"stylesheet"})]}),(0,d.jsxs)("body",{className:`${f().variable} font-sans antialiased`,suppressHydrationWarning:!0,children:[(0,d.jsx)("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-50 focus:px-4 focus:py-2 focus:bg-[#6366f1] focus:text-white focus:rounded-lg focus:text-sm focus:font-semibold focus:shadow-lg",children:"Skip to content"}),(0,d.jsx)(g.ThemeProvider,{children:a})]})]})}},79369:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},81227:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/global-error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/global-error.tsx","default")},89097:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},90357:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>e});var d=c(19713);async function e(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let a=(0,d.machineIdSync)();return(await Promise.resolve().then(c.t.bind(c,55511,23))).createHash("sha256").update(a+b).digest("hex").substring(0,16)}catch(a){return console.log("Error getting machine ID:",a),crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){let b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)})}}},97319:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>g,vq:()=>f,KC:()=>h});let d={claude:{id:"claude",alias:"cc",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/1.0.83 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.55.1","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":"arm64","X-Stainless-Os":"MacOS","X-Stainless-Timeout":"60"},oauth:{clientIdEnv:"CLAUDE_OAUTH_CLIENT_ID",clientIdDefault:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://console.anthropic.com/v1/oauth/token"},models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}]},gemini:{id:"gemini",alias:"gemini",format:"gemini",executor:"default",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",urlBuilder:(a,b,c)=>`${a}/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"x-goog-api-key",oauth:{clientIdEnv:"GEMINI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},"gemini-cli":{id:"gemini-cli",alias:"gc",format:"gemini-cli",executor:"gemini-cli",baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",urlBuilder:(a,b,c)=>`${a}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"oauth",authHeader:"bearer",oauth:{clientIdEnv:"GEMINI_CLI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_CLI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},codex:{id:"codex",alias:"cx",format:"openai-responses",executor:"codex",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",headers:{Version:"0.92.0","Openai-Beta":"responses=experimental","User-Agent":"codex-cli/0.92.0 (Windows 10.0.26100; x64)"},oauth:{clientIdEnv:"CODEX_OAUTH_CLIENT_ID",clientIdDefault:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecretEnv:"CODEX_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://auth.openai.com/oauth/token"},models:[{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}]},qwen:{id:"qwen",alias:"qw",format:"openai",executor:"default",baseUrl:"https://portal.qwen.ai/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},oauth:{clientIdEnv:"QWEN_OAUTH_CLIENT_ID",clientIdDefault:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"}]},iflow:{id:"iflow",alias:"if",format:"openai",executor:"default",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"kimi-k2",name:"Kimi K2"},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3.2-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-v3.2-reasoner",name:"DeepSeek V3.2 Reasoner"},{id:"minimax-m2.1",name:"MiniMax M2.1"},{id:"glm-4.7",name:"GLM 4.7"}]},antigravity:{id:"antigravity",alias:"ag",format:"antigravity",executor:"antigravity",baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://cloudcode-pa.googleapis.com"],urlBuilder:(a,b,c)=>`${a}${c?"/v1internal:streamGenerateContent?alt=sse":"/v1internal:generateContent"}`,authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"antigravity/1.104.0 darwin/arm64"},oauth:{clientIdEnv:"ANTIGRAVITY_OAUTH_CLIENT_ID",clientIdDefault:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecretEnv:"ANTIGRAVITY_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"claude-opus-4-5-thinking",name:"Claude Opus 4.5 Thinking"},{id:"claude-sonnet-4-5-thinking",name:"Claude Sonnet 4.5 Thinking"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5"},{id:"gemini-3-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}]},github:{id:"github",alias:"gh",format:"openai",executor:"github",baseUrl:"https://api.githubcopilot.com/chat/completions",responsesBaseUrl:"https://api.githubcopilot.com/responses",authType:"oauth",authHeader:"bearer",headers:{"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-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},models:[{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",targetFormat:"openai-responses"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex",targetFormat:"openai-responses"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5 (Full ID)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}]},kiro:{id:"kiro",alias:"kr",format:"kiro",executor:"kiro",baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",authType:"oauth",authHeader:"bearer",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},oauth:{tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},models:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"}]},cursor:{id:"cursor",alias:"cu",format:"cursor",executor:"cursor",baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",authType:"oauth",authHeader:"bearer",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3",models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"}]},openai:{id:"openai",alias:"openai",format:"openai",executor:"default",baseUrl:"https://api.openai.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}]},anthropic:{id:"anthropic",alias:"anthropic",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01"},models:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}]},openrouter:{id:"openrouter",alias:"openrouter",format:"openai",executor:"default",baseUrl:"https://openrouter.ai/api/v1/chat/completions",authType:"apikey",authHeader:"bearer",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},models:[{id:"auto",name:"Auto (Best Available)"}]},glm:{id:"glm",alias:"glm",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM 4.6"},{id:"glm-4.5v",name:"GLM 4.5V (Vision)"},{id:"glm-4.5",name:"GLM 4.5"},{id:"glm-4.5-air",name:"GLM 4.5 Air"},{id:"glm-4-32b",name:"GLM 4 32B"}]},kimi:{id:"kimi",alias:"kimi",format:"openai",executor:"default",baseUrl:"https://api.moonshot.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},cohere:{id:"cohere",alias:"cohere",format:"openai",executor:"default",baseUrl:"https://api.cohere.com/v2/chat",authType:"apikey",authHeader:"bearer",models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},nvidia:{id:"nvidia",alias:"nvidia",format:"openai",executor:"default",baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}]},nebius:{id:"nebius",alias:"nebius",format:"openai",executor:"default",baseUrl:"https://api.tokenfactory.nebius.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}]},siliconflow:{id:"siliconflow",alias:"siliconflow",format:"openai",executor:"default",baseUrl:"https://api.siliconflow.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}]},hyperbolic:{id:"hyperbolic",alias:"hyp",format:"openai",executor:"default",baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]}},e=new Map;for(let a of Object.values(d))a.alias&&a.alias!==a.id&&e.set(a.alias,a);let f=function(){let a={};for(let b of Object.values(d))if(b.models&&b.models.length>0){let c=b.alias||b.id;a[c]||(a[c]=b.models)}return a}(),g=function(){let a={};for(let b of Object.values(d))a[b.id]=b.alias||b.id;return a}();function h(a){return f[g[a]||a]||[]}},97496:(a,b,c)=>{Promise.resolve().then(c.bind(c,81227))},97507:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-[60vh] p-6 text-center",role:"alert","aria-live":"assertive",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4","aria-hidden":"true",children:"\uD83D\uDD27"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2 text-[var(--color-text-main)]",children:"Internal Server Error"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--color-text-muted)] max-w-[400px] leading-relaxed mb-2",children:"Something went wrong while processing your request. Our team has been notified and is working on a fix."}),a?.digest&&(0,d.jsxs)("p",{className:"text-xs text-[var(--color-text-muted)] mb-6 font-mono",children:["Error ID: ",a.digest]}),!1,(0,d.jsxs)("div",{className:"flex gap-3",children:[(0,d.jsx)("button",{onClick:b,"aria-label":"Retry loading the page",className:"px-6 py-2.5 rounded-lg text-white text-sm font-semibold cursor-pointer transition-all duration-200 bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]",children:"Try Again"}),(0,d.jsx)("a",{href:"/dashboard",className:"px-6 py-2.5 rounded-lg text-[var(--color-text-main)] text-sm font-semibold cursor-pointer transition-all duration-200 border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]","aria-label":"Return to dashboard",children:"Go to Dashboard"})]})]})}}};
|
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
{
|
|
12
12
|
"regexp": "^(?:\\/(_next\\/data\\/[^/]{1,}))?\\/dashboard(?:\\/((?:[^\\/#\\?]+?)(?:\\/(?:[^\\/#\\?]+?))*))?(\\.json)?[\\/#\\?]?$",
|
|
13
13
|
"originalSource": "/dashboard/:path*"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"regexp": "^(?:\\/(_next\\/data\\/[^/]{1,}))?\\/api(?:\\/((?:[^\\/#\\?]+?)(?:\\/(?:[^\\/#\\?]+?))*))?(\\.json)?[\\/#\\?]?$",
|
|
17
|
+
"originalSource": "/api/:path*"
|
|
14
18
|
}
|
|
15
19
|
]
|
|
16
20
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(()=>{var a={};a.id=6183,a.ids=[6183],a.modules={48161:a=>{a.exports=require("node:os")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},76760:a=>{a.exports=require("node:path")},87550:a=>{a.exports=require("better-sqlite3")},92322:(a,b,c)=>{async function d(){{let{initGracefulShutdown:a}=await c.e(7723).then(c.bind(c,17723));a()}}c.r(b),c.d(b,{register:()=>d})}};var b=require("./webpack-runtime.js");b.C(a);var c=b(b.s=92322);module.exports=c})();
|