omniroute 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +22 -16
- 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 +34 -30
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +51 -3
- package/app/.next/required-server-files.json +6 -2
- package/app/.next/routes-manifest.json +24 -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/logs/page.js +2 -0
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -0
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -0
- 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 +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/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 +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +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 +2 -2
- 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/logs/console/route.js +1 -0
- package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -0
- package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -0
- 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/logs.html +1 -0
- package/app/.next/server/app/dashboard/logs.meta +17 -0
- package/app/.next/server/app/dashboard/logs.rsc +25 -0
- package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +9 -0
- package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs.segment.rsc +4 -0
- package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +4 -0
- package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -0
- package/app/.next/server/app/dashboard/logs.segments/_full.segment.rsc +25 -0
- package/app/.next/server/app/dashboard/logs.segments/_head.segment.rsc +6 -0
- package/app/.next/server/app/dashboard/logs.segments/_index.segment.rsc +10 -0
- package/app/.next/server/app/dashboard/logs.segments/_tree.segment.rsc +5 -0
- 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 +34 -30
- package/app/.next/server/chunks/1079.js +1 -1
- package/app/.next/server/chunks/2180.js +258 -0
- 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/2852.js +2 -0
- 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/9824.js +1 -1
- 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/PyPKu8KUmFFVZNhlykJuq/_buildManifest.js +1 -0
- package/app/.next/static/chunks/{5846-dfe52e95348ffdd8.js → 5846-cd6a545a34f64728.js} +1 -1
- package/app/.next/static/chunks/993-7146218952a45b4b.js +21 -0
- 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/logs/page-88e667cb7ae99420.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-58a4e7114d200844.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-58a4e7114d200844.js} +1 -1
- package/app/.next/static/chunks/app/_not-found/{page-58b169603fdf1d6f.js → page-58a4e7114d200844.js} +1 -1
- package/app/.next/static/chunks/app/api/auth/login/{route-58b169603fdf1d6f.js → route-58a4e7114d200844.js} +1 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/auth/status/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cache/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cache/stats/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/backups/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/status/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/auth/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/combos/metrics/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/combos/test/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/compliance/audit-log/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/export/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/exportAll/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/import/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/evals/[suiteId]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/evals/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/fallback/chains/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/logs/console/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/models/catalog/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/monitoring/health/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/policies/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/defaults/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/models/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/provider-metrics/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/provider-models/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/rate-limit/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/rate-limits/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/resilience/reset/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/resilience/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/restart/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/sessions/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/settings/combo-defaults/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/settings/ip-filter/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy/test/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/settings/system-prompt/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/settings/thinking-budget/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/storage/health/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/sync/cloud/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/sync/initialize/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/telemetry/summary/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/token-health/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/translator/detect/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/translator/history/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/usage/analytics/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/usage/budget/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/usage/call-logs/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/usage/proxy-logs/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/moderations/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/rerank/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-58a4e7114d200844.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-58a4e7114d200844.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-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-58a4e7114d200844.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-58a4e7114d200844.js +1 -0
- package/app/.next/static/css/c5b80d2d58d2e417.css +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/993-5102e3fd1db64935.js +0 -21
- 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 → PyPKu8KUmFFVZNhlykJuq}/_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(83779);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)}},83779:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>l,error:()=>o,info:()=>m,maskKey:()=>j,request:()=>p,response:()=>q,stream:()=>r,warn:()=>n});var d=c(74552),e=c.n(d),f=c(33873),g=c(29021);function h(){let a="false"!==process.env.LOG_TO_FILE,b=process.env.LOG_FILE_PATH||(0,f.join)(process.cwd(),"logs/application/app.log");return{logToFile:a,logFilePath:b,maxFileSize:function(a){if(!a)return 0x3200000;let b=a.match(/^(\d+)\s*(k|m|g|kb|mb|gb)?$/i);if(!b)return 0x3200000;let c=parseInt(b[1],10);switch((b[2]||"").toLowerCase()){case"k":case"kb":return 1024*c;case"m":case"mb":return 1024*c*1024;case"g":case"gb":return 1024*c*1048576;default:return c}}(process.env.LOG_MAX_FILE_SIZE),retentionDays:parseInt(process.env.LOG_RETENTION_DAYS||String(7),10)}}let i={level:process.env.LOG_LEVEL||"info",base:{service:"omniroute"},timestamp:e().stdTimeFunctions.isoTime,formatters:{level:a=>({level:a})}};function j(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}let k=(function(){let a=h(),b=i.level||"info";if(a.logToFile)try{let d=h();if(d.logToFile){var c;let a;c=d.logFilePath,a=(0,f.dirname)(c),(0,g.existsSync)(a)||(0,g.mkdirSync)(a,{recursive:!0}),function(a,b){try{if(!(0,g.existsSync)(a)||(0,g.statSync)(a).size<b)return;let c=(0,f.dirname)(a),d=(0,f.extname)(a),e=(0,f.basename)(a,d),h=new Date,i=`${h.getFullYear()}-${String(h.getMonth()+1).padStart(2,"0")}-${String(h.getDate()).padStart(2,"0")}_${String(h.getHours()).padStart(2,"0")}${String(h.getMinutes()).padStart(2,"0")}${String(h.getSeconds()).padStart(2,"0")}`,j=(0,f.join)(c,`${e}.${i}${d}`);(0,g.renameSync)(a,j)}catch{}}(d.logFilePath,d.maxFileSize),function(a,b){try{let c=(0,f.dirname)(a);if(!(0,g.existsSync)(c))return;let d=(0,f.extname)(a),e=(0,f.basename)(a,d),h=(0,g.readdirSync)(c),i=Date.now()-24*b*36e5;for(let b of h)if(b.startsWith(e+".")&&b.endsWith(d)&&b!==(0,f.basename)(a)){let a=(0,f.join)(c,b);try{(0,g.statSync)(a).mtimeMs<i&&(0,g.unlinkSync)(a)}catch{}}}catch{}}(d.logFilePath,d.retentionDays)}let j=(0,f.resolve)(a.logFilePath);return e()({...i,transport:{targets:[{target:"pino/file",options:{destination:1},level:b},{target:"pino/file",options:{destination:j,mkdir:!0},level:b}]}})}catch{console.warn("[logger] Failed to set up file transport, falling back to console only")}return e()(i)})().child({module:"sse"});function l(a,b,c){k.debug({tag:a,...s(c)},b)}function m(a,b,c){k.info({tag:a,...s(c)},b)}function n(a,b,c){k.warn({tag:a,...s(c)},b)}function o(a,b,c){k.error({tag:a,...s(c)},b)}function p(a,b,c){k.info({tag:"HTTP",method:a,path:b,...s(c)},`📥 ${a} ${b}`)}function q(a,b,c){k[a<400?"info":"error"]({tag:"HTTP",status:a,duration:b,...s(c)},`📤 ${a} (${b}ms)`)}function r(a,b){k.debug({tag:"STREAM",event:a,...s(b)},`🌊 ${a}`)}function s(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)}};
|