omniroute 1.4.2 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +33 -33
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- 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 +1 -1
- package/app/.next/server/app/api/auth/login/route.js +1 -1
- package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route.js +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_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_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_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_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_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_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 +1 -1
- package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/import/route.js +1 -1
- package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/monitoring/health/route.js +1 -1
- package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_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_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_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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-models/route.js +1 -1
- package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/route_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_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_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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/detect/route_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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route_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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +2 -2
- package/app/.next/server/app/callback.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
- 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 -2
- package/app/.next/server/app/dashboard/analytics.rsc +4 -4
- 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 +1 -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 +4 -4
- package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/api-manager.html +1 -1
- package/app/.next/server/app/dashboard/api-manager.rsc +4 -4
- package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk/dashboard/api-manager/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk/dashboard/api-manager.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/api-manager.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/api-manager.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/api-manager.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/api-manager.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/audit-log.html +1 -1
- package/app/.next/server/app/dashboard/audit-log.rsc +3 -3
- package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard/audit-log/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard/audit-log.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/audit-log.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/audit-log.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/audit-log.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/audit-log.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +4 -4
- 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 +4 -4
- 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 +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +4 -4
- 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 +4 -4
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.html +1 -1
- package/app/.next/server/app/dashboard/costs.rsc +4 -4
- 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 +4 -4
- package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +4 -4
- 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 +4 -4
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.html +1 -1
- package/app/.next/server/app/dashboard/health.rsc +4 -4
- 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 +4 -4
- package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/limits.html +2 -2
- package/app/.next/server/app/dashboard/limits.rsc +4 -4
- 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 +4 -4
- package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/logs.html +1 -1
- package/app/.next/server/app/dashboard/logs.rsc +4 -4
- package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/logs.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/logs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/logs.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/logs.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.html +1 -1
- package/app/.next/server/app/dashboard/onboarding.rsc +3 -3
- package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +1 -1
- 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 +3 -3
- package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +3 -3
- 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 +3 -3
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.html +2 -2
- package/app/.next/server/app/dashboard/providers/new.rsc +4 -4
- 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 +1 -1
- 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 +4 -4
- 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 +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.html +2 -2
- package/app/.next/server/app/dashboard/providers.rsc +4 -4
- 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 +1 -1
- 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 +4 -4
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.html +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.rsc +3 -3
- 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 +1 -1
- 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 +3 -3
- 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 +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.html +1 -1
- package/app/.next/server/app/dashboard/settings.rsc +4 -4
- 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 +1 -1
- 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 +4 -4
- package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.html +2 -2
- package/app/.next/server/app/dashboard/translator.rsc +4 -4
- 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 +4 -4
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +4 -4
- 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 +4 -4
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/docs/page.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs.html +1 -1
- package/app/.next/server/app/docs.rsc +2 -2
- package/app/.next/server/app/docs.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/docs.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/docs.segments/docs.segment.rsc +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 +2 -2
- package/app/.next/server/app/forbidden.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/forbidden.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +1 -1
- 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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password.html +1 -1
- package/app/.next/server/app/forgot-password.rsc +3 -3
- package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +1 -1
- 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 +2 -2
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/index.segments/_tree.segment.rsc +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 +2 -2
- package/app/.next/server/app/landing.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
- 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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +3 -3
- package/app/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- 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_client-reference-manifest.js +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 +2 -2
- package/app/.next/server/app/privacy.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/privacy.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/privacy.segments/_tree.segment.rsc +1 -1
- 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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms.html +1 -1
- package/app/.next/server/app/terms.rsc +2 -2
- package/app/.next/server/app/terms.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/terms.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/terms.segments/_tree.segment.rsc +1 -1
- 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 +33 -33
- package/app/.next/server/chunks/2767.js +1 -1
- package/app/.next/server/chunks/2901.js +2 -2
- package/app/.next/server/chunks/9824.js +2 -2
- package/app/.next/server/chunks/9979.js +1 -1
- package/app/.next/server/middleware.js +3 -3
- package/app/.next/server/pages/404.html +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/{5846-0dd696b0ace9c63d.js → 5846-1bd03fb1b4b4c154.js} +1 -1
- package/app/.next/static/chunks/{993-0fb5100db47366c5.js → 993-4cb24412f8681dc9.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-24700772c6569500.js → page-f017a1a13b450ed3.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-56e8174ce9caec1b.js +1 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-26ec85a0bf8624f2.js +0 -1
- /package/app/.next/static/{MWIZItneSj8laKrHFH9vx → vSmFE3KrF-V4aQjNDtjwN}/_buildManifest.js +0 -0
- /package/app/.next/static/{MWIZItneSj8laKrHFH9vx → vSmFE3KrF-V4aQjNDtjwN}/_ssgManifest.js +0 -0
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
3:I[90484,[],"MetadataBoundary"]
|
|
4
4
|
4:"$Sreact.suspense"
|
|
5
5
|
5:I[86869,[],"IconMark"]
|
|
6
|
-
0:{"buildId":"
|
|
6
|
+
0:{"buildId":"vSmFE3KrF-V4aQjNDtjwN","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Terms of Service | OmniRoute"}],["$","meta","1",{"name":"description","content":"Terms of service for the OmniRoute AI API proxy router."}],["$","link","2",{"rel":"icon","href":"/favicon.svg"}],["$","link","3",{"rel":"apple-touch-icon","href":"/apple-touch-icon.svg"}],["$","$L5","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[55846,["8500","static/chunks/8500-98e13bcce54aa7a0.js","9751","static/chunks/9751-3a35163d337d54ea.js","782","static/chunks/782-5e138760b7f7bf48.js","1149","static/chunks/1149-fefe7f95f0e9842f.js","5846","static/chunks/5846-
|
|
2
|
+
2:I[55846,["8500","static/chunks/8500-98e13bcce54aa7a0.js","9751","static/chunks/9751-3a35163d337d54ea.js","782","static/chunks/782-5e138760b7f7bf48.js","1149","static/chunks/1149-fefe7f95f0e9842f.js","5846","static/chunks/5846-1bd03fb1b4b4c154.js","993","static/chunks/993-4cb24412f8681dc9.js","9305","static/chunks/app/(dashboard)/layout-cf710bbfb7c3ba11.js"],"ThemeProvider"]
|
|
3
3
|
3:I[57121,[],""]
|
|
4
4
|
4:I[17267,["8039","static/chunks/app/error-0d59fc4efafbc38c.js"],"default"]
|
|
5
5
|
5:I[74581,[],""]
|
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
:HL["/_next/static/css/081a0afca5a9bd20.css","style"]
|
|
8
8
|
:HL["/_next/static/css/a0c29bb208bb9dfe.css","style"]
|
|
9
9
|
:HL["https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap","style"]
|
|
10
|
-
0:{"buildId":"
|
|
10
|
+
0:{"buildId":"vSmFE3KrF-V4aQjNDtjwN","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/081a0afca5a9bd20.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a0c29bb208bb9dfe.css","precedence":"next"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"__variable_f367f3 font-sans antialiased","suppressHydrationWarning":true,"children":[["$","a",null,{"href":"#main-content","className":"sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-50 focus:px-4 focus:py-2 focus:bg-[#6366f1] focus:text-white focus:rounded-lg focus:text-sm focus:font-semibold focus:shadow-lg","children":"Skip to content"}],["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$4","errorStyles":[],"errorScripts":[],"template":["$","$L5",null,{}],"notFound":[["$","$L6",null,{}],[]]}]}]]}]]}]]}],"loading":null,"isPartial":false}
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
:HL["/_next/static/css/081a0afca5a9bd20.css","style"]
|
|
3
3
|
:HL["/_next/static/css/a0c29bb208bb9dfe.css","style"]
|
|
4
4
|
:HL["https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap","style"]
|
|
5
|
-
0:{"buildId":"
|
|
5
|
+
0:{"buildId":"vSmFE3KrF-V4aQjNDtjwN","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"terms","paramType":null,"paramKey":"terms","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
2:I[98500,["8500","static/chunks/8500-98e13bcce54aa7a0.js","7066","static/chunks/app/terms/page-8f74097544a61b9d.js"],""]
|
|
3
3
|
3:I[90484,[],"OutletBoundary"]
|
|
4
4
|
5:"$Sreact.suspense"
|
|
5
|
-
0:{"buildId":"
|
|
5
|
+
0:{"buildId":"vSmFE3KrF-V4aQjNDtjwN","rsc":["$","$1","c",{"children":[["$","main",null,{"className":"min-h-screen bg-bg text-text-main","children":["$","div",null,{"className":"max-w-3xl mx-auto px-6 py-16","children":[["$","$L2",null,{"href":"/","className":"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-8","children":[["$","span",null,{"className":"material-symbols-outlined text-[18px]","children":"arrow_back"}],"Back to home"]}],["$","h1",null,{"className":"text-3xl font-bold mb-2","children":"Terms of Service"}],["$","p",null,{"className":"text-sm text-text-muted mb-10","children":"Last updated: February 13, 2026"}],["$","div",null,{"className":"space-y-8 text-text-muted leading-relaxed","children":[["$","section",null,{"children":[["$","h2",null,{"className":"text-lg font-semibold text-text-main mb-3","children":"1. Overview"}],["$","p",null,{"children":["OmniRoute is a ",["$","strong",null,{"className":"text-text-main","children":"local-first"}]," AI API proxy router that operates entirely on your machine. It routes requests to multiple AI providers with load balancing, failover, and usage tracking."]}]]}],["$","section",null,{"children":[["$","h2",null,{"className":"text-lg font-semibold text-text-main mb-3","children":"2. User Responsibilities"}],["$","ul",null,{"className":"list-disc pl-6 space-y-2","children":[["$","li",null,{"children":"You are solely responsible for managing your own API keys and credentials for third-party AI providers (OpenAI, Anthropic, Google, etc.)."}],["$","li",null,{"children":"You must comply with the terms of service of each AI provider whose API you access through OmniRoute."}],["$","li",null,{"children":"You are responsible for the security of your local OmniRoute installation, including setting a password and restricting network access."}]]}]]}],["$","section",null,{"children":[["$","h2",null,{"className":"text-lg font-semibold text-text-main mb-3","children":"3. How It Works"}],["$","p",null,{"children":"OmniRoute acts as an intermediary proxy. API calls sent to OmniRoute are translated and forwarded to your configured AI providers. OmniRoute does not modify the content of your requests or responses beyond the necessary protocol translation."}]]}],["$","section",null,{"children":[["$","h2",null,{"className":"text-lg font-semibold text-text-main mb-3","children":"4. Data Handling"}],["$","ul",null,{"className":"list-disc pl-6 space-y-2","children":[["$","li",null,{"children":["All data is stored ",["$","strong",null,{"className":"text-text-main","children":"locally"}]," on your machine in a SQLite database."]}],["$","li",null,{"children":"OmniRoute does not transmit any data to external servers unless you explicitly enable cloud sync features."}],["$","li",null,{"children":["Usage logs, API keys, and configuration are stored in"," ",["$","code",null,{"className":"text-primary text-sm","children":"~/.omniroute/"}],"."]}]]}]]}],["$","section",null,{"children":[["$","h2",null,{"className":"text-lg font-semibold text-text-main mb-3","children":"5. Disclaimer"}],["$","p",null,{"children":"OmniRoute is provided “as is” without warranty of any kind. We are not responsible for any costs incurred through API usage, service disruptions, or data loss. Always maintain backups of your configuration."}]]}],["$","section",null,{"children":[["$","h2",null,{"className":"text-lg font-semibold text-text-main mb-3","children":"6. Open Source"}],["$","p",null,{"children":"OmniRoute is open-source software. You are free to inspect, modify, and distribute it under the terms of its license."}]]}]]}],["$","div",null,{"className":"mt-12 pt-8 border-t border-white/[0.06] text-sm text-text-muted","children":["$","p",null,{"children":["Questions? Visit our"," ",["$","a",null,{"href":"https://github.com/diegosouzapw/OmniRoute","className":"text-primary hover:underline","target":"_blank","rel":"noopener noreferrer","children":"GitHub repository"}],"."]}]}]]}]}],null,["$","$L3",null,{"children":"$L4"}]]}],"loading":null,"isPartial":false}
|
|
6
6
|
4:["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]
|
|
7
7
|
6:null
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[57121,[],""]
|
|
3
3
|
3:I[74581,[],""]
|
|
4
|
-
0:{"buildId":"
|
|
4
|
+
0:{"buildId":"vSmFE3KrF-V4aQjNDtjwN","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
|
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
"/api/db-backups/route": "app/api/db-backups/route.js",
|
|
25
25
|
"/api/evals/[suiteId]/route": "app/api/evals/[suiteId]/route.js",
|
|
26
26
|
"/api/evals/route": "app/api/evals/route.js",
|
|
27
|
-
"/api/fallback/chains/route": "app/api/fallback/chains/route.js",
|
|
28
27
|
"/api/init/route": "app/api/init/route.js",
|
|
28
|
+
"/api/fallback/chains/route": "app/api/fallback/chains/route.js",
|
|
29
29
|
"/api/keys/[id]/route": "app/api/keys/[id]/route.js",
|
|
30
30
|
"/api/keys/route": "app/api/keys/route.js",
|
|
31
|
-
"/api/logs/console/route": "app/api/logs/console/route.js",
|
|
32
31
|
"/api/models/alias/route": "app/api/models/alias/route.js",
|
|
32
|
+
"/api/logs/console/route": "app/api/logs/console/route.js",
|
|
33
33
|
"/api/models/availability/route": "app/api/models/availability/route.js",
|
|
34
34
|
"/api/models/catalog/route": "app/api/models/catalog/route.js",
|
|
35
35
|
"/api/models/route": "app/api/models/route.js",
|
|
@@ -37,10 +37,10 @@
|
|
|
37
37
|
"/api/oauth/[provider]/[action]/route": "app/api/oauth/[provider]/[action]/route.js",
|
|
38
38
|
"/api/oauth/cursor/auto-import/route": "app/api/oauth/cursor/auto-import/route.js",
|
|
39
39
|
"/api/oauth/cursor/import/route": "app/api/oauth/cursor/import/route.js",
|
|
40
|
-
"/api/oauth/kiro/import/route": "app/api/oauth/kiro/import/route.js",
|
|
41
40
|
"/api/oauth/kiro/auto-import/route": "app/api/oauth/kiro/auto-import/route.js",
|
|
42
|
-
"/api/oauth/kiro/
|
|
41
|
+
"/api/oauth/kiro/import/route": "app/api/oauth/kiro/import/route.js",
|
|
43
42
|
"/api/oauth/kiro/social-exchange/route": "app/api/oauth/kiro/social-exchange/route.js",
|
|
43
|
+
"/api/oauth/kiro/social-authorize/route": "app/api/oauth/kiro/social-authorize/route.js",
|
|
44
44
|
"/api/policies/route": "app/api/policies/route.js",
|
|
45
45
|
"/api/pricing/defaults/route": "app/api/pricing/defaults/route.js",
|
|
46
46
|
"/api/pricing/models/route": "app/api/pricing/models/route.js",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"/api/provider-metrics/route": "app/api/provider-metrics/route.js",
|
|
49
49
|
"/api/provider-models/route": "app/api/provider-models/route.js",
|
|
50
50
|
"/api/provider-nodes/[id]/route": "app/api/provider-nodes/[id]/route.js",
|
|
51
|
-
"/api/provider-nodes/validate/route": "app/api/provider-nodes/validate/route.js",
|
|
52
51
|
"/api/providers/[id]/models/route": "app/api/providers/[id]/models/route.js",
|
|
52
|
+
"/api/provider-nodes/validate/route": "app/api/provider-nodes/validate/route.js",
|
|
53
53
|
"/api/providers/[id]/route": "app/api/providers/[id]/route.js",
|
|
54
54
|
"/api/providers/client/route": "app/api/providers/client/route.js",
|
|
55
55
|
"/api/providers/route": "app/api/providers/route.js",
|
|
@@ -57,93 +57,93 @@
|
|
|
57
57
|
"/api/providers/validate/route": "app/api/providers/validate/route.js",
|
|
58
58
|
"/api/rate-limit/route": "app/api/rate-limit/route.js",
|
|
59
59
|
"/api/resilience/reset/route": "app/api/resilience/reset/route.js",
|
|
60
|
-
"/api/resilience/route": "app/api/resilience/route.js",
|
|
61
60
|
"/api/rate-limits/route": "app/api/rate-limits/route.js",
|
|
61
|
+
"/api/resilience/route": "app/api/resilience/route.js",
|
|
62
62
|
"/api/restart/route": "app/api/restart/route.js",
|
|
63
63
|
"/api/sessions/route": "app/api/sessions/route.js",
|
|
64
64
|
"/api/settings/combo-defaults/route": "app/api/settings/combo-defaults/route.js",
|
|
65
65
|
"/api/settings/ip-filter/route": "app/api/settings/ip-filter/route.js",
|
|
66
|
-
"/api/settings/require-login/route": "app/api/settings/require-login/route.js",
|
|
67
66
|
"/api/settings/route": "app/api/settings/route.js",
|
|
67
|
+
"/api/settings/require-login/route": "app/api/settings/require-login/route.js",
|
|
68
68
|
"/api/settings/system-prompt/route": "app/api/settings/system-prompt/route.js",
|
|
69
|
-
"/api/shutdown/route": "app/api/shutdown/route.js",
|
|
70
69
|
"/api/settings/thinking-budget/route": "app/api/settings/thinking-budget/route.js",
|
|
71
70
|
"/api/storage/health/route": "app/api/storage/health/route.js",
|
|
71
|
+
"/api/shutdown/route": "app/api/shutdown/route.js",
|
|
72
72
|
"/api/sync/cloud/route": "app/api/sync/cloud/route.js",
|
|
73
73
|
"/api/sync/initialize/route": "app/api/sync/initialize/route.js",
|
|
74
|
-
"/api/telemetry/summary/route": "app/api/telemetry/summary/route.js",
|
|
75
74
|
"/api/tags/route": "app/api/tags/route.js",
|
|
75
|
+
"/api/telemetry/summary/route": "app/api/telemetry/summary/route.js",
|
|
76
76
|
"/api/token-health/route": "app/api/token-health/route.js",
|
|
77
|
-
"/api/translator/
|
|
77
|
+
"/api/translator/detect/route": "app/api/translator/detect/route.js",
|
|
78
78
|
"/api/translator/load/route": "app/api/translator/load/route.js",
|
|
79
|
+
"/api/translator/history/route": "app/api/translator/history/route.js",
|
|
79
80
|
"/api/translator/save/route": "app/api/translator/save/route.js",
|
|
80
|
-
"/api/translator/detect/route": "app/api/translator/detect/route.js",
|
|
81
81
|
"/api/translator/send/route": "app/api/translator/send/route.js",
|
|
82
82
|
"/api/translator/translate/route": "app/api/translator/translate/route.js",
|
|
83
83
|
"/api/usage/[connectionId]/route": "app/api/usage/[connectionId]/route.js",
|
|
84
|
-
"/api/usage/budget/route": "app/api/usage/budget/route.js",
|
|
85
|
-
"/api/usage/call-logs/[id]/route": "app/api/usage/call-logs/[id]/route.js",
|
|
86
84
|
"/api/usage/analytics/route": "app/api/usage/analytics/route.js",
|
|
87
|
-
"/api/usage/call-logs/route": "app/api/usage/call-logs/route.js",
|
|
88
|
-
"/api/usage/logs/route": "app/api/usage/logs/route.js",
|
|
85
|
+
"/api/usage/call-logs/[id]/route": "app/api/usage/call-logs/[id]/route.js",
|
|
89
86
|
"/api/usage/history/route": "app/api/usage/history/route.js",
|
|
87
|
+
"/api/usage/call-logs/route": "app/api/usage/call-logs/route.js",
|
|
88
|
+
"/api/usage/budget/route": "app/api/usage/budget/route.js",
|
|
90
89
|
"/api/usage/request-logs/route": "app/api/usage/request-logs/route.js",
|
|
91
90
|
"/api/v1/api/chat/route": "app/api/v1/api/chat/route.js",
|
|
91
|
+
"/api/usage/logs/route": "app/api/usage/logs/route.js",
|
|
92
92
|
"/api/v1/audio/speech/route": "app/api/v1/audio/speech/route.js",
|
|
93
93
|
"/api/v1/audio/transcriptions/route": "app/api/v1/audio/transcriptions/route.js",
|
|
94
94
|
"/api/v1/embeddings/route": "app/api/v1/embeddings/route.js",
|
|
95
|
-
"/api/v1/messages/count_tokens/route": "app/api/v1/messages/count_tokens/route.js",
|
|
96
95
|
"/api/v1/images/generations/route": "app/api/v1/images/generations/route.js",
|
|
96
|
+
"/api/v1/messages/count_tokens/route": "app/api/v1/messages/count_tokens/route.js",
|
|
97
97
|
"/api/v1/messages/route": "app/api/v1/messages/route.js",
|
|
98
|
-
"/api/v1/models/route": "app/api/v1/models/route.js",
|
|
99
98
|
"/api/v1/moderations/route": "app/api/v1/moderations/route.js",
|
|
100
|
-
"/api/v1/
|
|
99
|
+
"/api/v1/models/route": "app/api/v1/models/route.js",
|
|
101
100
|
"/api/v1/providers/[provider]/embeddings/route": "app/api/v1/providers/[provider]/embeddings/route.js",
|
|
101
|
+
"/api/v1/providers/[provider]/chat/completions/route": "app/api/v1/providers/[provider]/chat/completions/route.js",
|
|
102
102
|
"/api/v1/providers/[provider]/images/generations/route": "app/api/v1/providers/[provider]/images/generations/route.js",
|
|
103
103
|
"/api/v1/rerank/route": "app/api/v1/rerank/route.js",
|
|
104
|
-
"/api/v1/responses/route": "app/api/v1/responses/route.js",
|
|
105
104
|
"/api/v1/route": "app/api/v1/route.js",
|
|
106
|
-
"/api/v1beta/models/route": "app/api/v1beta/models/route.js",
|
|
107
105
|
"/api/v1beta/models/[...path]/route": "app/api/v1beta/models/[...path]/route.js",
|
|
106
|
+
"/api/v1beta/models/route": "app/api/v1beta/models/route.js",
|
|
107
|
+
"/api/v1/responses/route": "app/api/v1/responses/route.js",
|
|
108
108
|
"/api/cli-tools/antigravity-mitm/route": "app/api/cli-tools/antigravity-mitm/route.js",
|
|
109
|
-
"/api/cli-tools/claude-settings/route": "app/api/cli-tools/claude-settings/route.js",
|
|
110
109
|
"/api/cli-tools/cline-settings/route": "app/api/cli-tools/cline-settings/route.js",
|
|
111
|
-
"/api/cli-tools/
|
|
110
|
+
"/api/cli-tools/claude-settings/route": "app/api/cli-tools/claude-settings/route.js",
|
|
112
111
|
"/api/cli-tools/droid-settings/route": "app/api/cli-tools/droid-settings/route.js",
|
|
113
112
|
"/api/cli-tools/kilo-settings/route": "app/api/cli-tools/kilo-settings/route.js",
|
|
114
|
-
"/api/cli-tools/openclaw-settings/route": "app/api/cli-tools/openclaw-settings/route.js",
|
|
115
|
-
"/api/cli-tools/runtime/[toolId]/route": "app/api/cli-tools/runtime/[toolId]/route.js",
|
|
116
113
|
"/api/cli-tools/status/route": "app/api/cli-tools/status/route.js",
|
|
117
|
-
"/api/
|
|
114
|
+
"/api/cli-tools/runtime/[toolId]/route": "app/api/cli-tools/runtime/[toolId]/route.js",
|
|
115
|
+
"/api/cli-tools/codex-settings/route": "app/api/cli-tools/codex-settings/route.js",
|
|
118
116
|
"/api/combos/test/route": "app/api/combos/test/route.js",
|
|
119
|
-
"/api/
|
|
117
|
+
"/api/provider-nodes/route": "app/api/provider-nodes/route.js",
|
|
120
118
|
"/api/settings/proxy/route": "app/api/settings/proxy/route.js",
|
|
121
|
-
"/api/usage/proxy-logs/route": "app/api/usage/proxy-logs/route.js",
|
|
122
119
|
"/api/settings/proxy/test/route": "app/api/settings/proxy/test/route.js",
|
|
120
|
+
"/api/usage/proxy-logs/route": "app/api/usage/proxy-logs/route.js",
|
|
121
|
+
"/api/cli-tools/openclaw-settings/route": "app/api/cli-tools/openclaw-settings/route.js",
|
|
123
122
|
"/api/v1/chat/completions/route": "app/api/v1/chat/completions/route.js",
|
|
123
|
+
"/api/providers/[id]/test/route": "app/api/providers/[id]/test/route.js",
|
|
124
124
|
"/callback/page": "app/callback/page.js",
|
|
125
125
|
"/docs/page": "app/docs/page.js",
|
|
126
126
|
"/forbidden/page": "app/forbidden/page.js",
|
|
127
127
|
"/forgot-password/page": "app/forgot-password/page.js",
|
|
128
128
|
"/landing/page": "app/landing/page.js",
|
|
129
|
-
"/login/page": "app/login/page.js",
|
|
130
129
|
"/page": "app/page.js",
|
|
130
|
+
"/login/page": "app/login/page.js",
|
|
131
131
|
"/terms/page": "app/terms/page.js",
|
|
132
132
|
"/privacy/page": "app/privacy/page.js",
|
|
133
|
+
"/(dashboard)/dashboard/analytics/page": "app/(dashboard)/dashboard/analytics/page.js",
|
|
133
134
|
"/(dashboard)/dashboard/api-manager/page": "app/(dashboard)/dashboard/api-manager/page.js",
|
|
134
135
|
"/(dashboard)/dashboard/audit-log/page": "app/(dashboard)/dashboard/audit-log/page.js",
|
|
135
136
|
"/(dashboard)/dashboard/cli-tools/page": "app/(dashboard)/dashboard/cli-tools/page.js",
|
|
136
|
-
"/(dashboard)/dashboard/analytics/page": "app/(dashboard)/dashboard/analytics/page.js",
|
|
137
|
-
"/(dashboard)/dashboard/costs/page": "app/(dashboard)/dashboard/costs/page.js",
|
|
138
137
|
"/(dashboard)/dashboard/endpoint/page": "app/(dashboard)/dashboard/endpoint/page.js",
|
|
139
|
-
"/(dashboard)/dashboard/
|
|
138
|
+
"/(dashboard)/dashboard/costs/page": "app/(dashboard)/dashboard/costs/page.js",
|
|
140
139
|
"/(dashboard)/dashboard/limits/page": "app/(dashboard)/dashboard/limits/page.js",
|
|
140
|
+
"/(dashboard)/dashboard/health/page": "app/(dashboard)/dashboard/health/page.js",
|
|
141
141
|
"/(dashboard)/dashboard/profile/page": "app/(dashboard)/dashboard/profile/page.js",
|
|
142
|
-
"/(dashboard)/dashboard/settings/page": "app/(dashboard)/dashboard/settings/page.js",
|
|
143
142
|
"/(dashboard)/dashboard/providers/new/page": "app/(dashboard)/dashboard/providers/new/page.js",
|
|
143
|
+
"/(dashboard)/dashboard/settings/page": "app/(dashboard)/dashboard/settings/page.js",
|
|
144
144
|
"/(dashboard)/dashboard/settings/pricing/page": "app/(dashboard)/dashboard/settings/pricing/page.js",
|
|
145
|
-
"/(dashboard)/dashboard/logs/page": "app/(dashboard)/dashboard/logs/page.js",
|
|
146
145
|
"/(dashboard)/dashboard/page": "app/(dashboard)/dashboard/page.js",
|
|
146
|
+
"/(dashboard)/dashboard/logs/page": "app/(dashboard)/dashboard/logs/page.js",
|
|
147
147
|
"/(dashboard)/dashboard/onboarding/page": "app/(dashboard)/dashboard/onboarding/page.js",
|
|
148
148
|
"/(dashboard)/dashboard/translator/page": "app/(dashboard)/dashboard/translator/page.js",
|
|
149
149
|
"/(dashboard)/dashboard/usage/page": "app/(dashboard)/dashboard/usage/page.js",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";exports.id=2767,exports.ids=[2767],exports.modules={1308:(a,b,c)=>{c.d(b,{$E:()=>n,Kr:()=>t,UE:()=>u,YO:()=>p,getAllRateLimitStatus:()=>v,mg:()=>m,rh:()=>l});var d=c(57217),e=c.n(d);c(74163);var f=c(83596),g=c(60293);let h=new Map,i=new Set,j=!1,k={maxConcurrent:10,minTime:0,reservoir:null,reservoirRefreshAmount:null,reservoirRefreshInterval:null};async function l(){if(!j){j=!0;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,22901)),b=await a(),d=0,j=0;for(let a of b)if(a.rateLimitProtection)i.add(a.id),d++;else if(a.provider&&"apikey"===(0,f.oQ)(a.provider)&&a.isActive){i.add(a.id),j++;let b=`${a.provider}:${a.id}`;h.has(b)||h.set(b,new(e())({maxConcurrent:g.DEFAULT_API_LIMITS.concurrentRequests,minTime:g.DEFAULT_API_LIMITS.minTimeBetweenRequests,reservoir:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshAmount:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshInterval:6e4,id:b}))}(d>0||j>0)&&console.log(`🛡️ [RATE-LIMIT] Loaded ${d} explicit + ${j} auto-enabled (API key) protection(s)`)}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function m(a){i.add(a)}function n(a){for(let[b]of(i.delete(a),h))if(b.includes(a)){let a=h.get(b);a?.disconnect(),h.delete(b)}}function o(a,b,c=null){let d=c?`${a}:${b}:${c}`:`${a}:${b}`;if(!h.has(d)){let a=new(e())({...k,id:d});a.on("queued",()=>{let b=a.counts();b.QUEUED>0&&console.log(`⏳ [RATE-LIMIT] ${d} — ${b.QUEUED} request(s) queued, ${b.RUNNING} running`)}),h.set(d,a)}return h.get(d)}async function p(a,b,c,d){return i.has(b)?o(a,b,null).schedule(d):d()}let q={limit:"x-ratelimit-limit-requests",remaining:"x-ratelimit-remaining-requests",reset:"x-ratelimit-reset-requests",limitTokens:"x-ratelimit-limit-tokens",remainingTokens:"x-ratelimit-remaining-tokens",resetTokens:"x-ratelimit-reset-tokens",retryAfter:"retry-after",overLimit:"x-ratelimit-over-limit"},r={limit:"anthropic-ratelimit-requests-limit",remaining:"anthropic-ratelimit-requests-remaining",reset:"anthropic-ratelimit-requests-reset",limitTokens:"anthropic-ratelimit-input-tokens-limit",remainingTokens:"anthropic-ratelimit-input-tokens-remaining",resetTokens:"anthropic-ratelimit-input-tokens-reset",retryAfter:"retry-after"};function s(a){if(!a)return null;let b=a.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+)s)?(?:(\d+)ms)?$/);if(b){let[,a,c,d,e]=b;return(3600*parseInt(a||0)+60*parseInt(c||0)+parseInt(d||0))*1e3+parseInt(e||0)}let c=parseFloat(a);if(!isNaN(c)&&c>0)return c>17e8?Math.max(0,1e3*c-Date.now()):1e3*c;try{let b=new Date(a);if(!isNaN(b.getTime()))return Math.max(0,b.getTime()-Date.now())}catch{}return null}function t(a,b,c,d,e=null){if(!i.has(b)||!c)return;let f=o(a,b,null),g="claude"===a||"anthropic"===a?r:q,h=a=>"function"==typeof c.get?c.get(a):c[a]||null,j=parseInt(h(g.limit)),k=parseInt(h(g.remaining)),l=h(g.reset),m=h(g.retryAfter),n=h(q.overLimit);if(429===d){let c=s(m)||6e4;console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — 429 received, pausing for ${Math.ceil(c/1e3)}s`),f.updateSettings({reservoir:0,reservoirRefreshAmount:j||60,reservoirRefreshInterval:c});return}if("yes"===n){console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — near capacity, slowing down`),f.updateSettings({minTime:200});return}if(!isNaN(j)&&j>0){let c=s(l)||6e4,d={minTime:Math.max(0,Math.floor(6e4/j)-10)};!isNaN(k)&&(k<.1*j?(d.reservoir=k,d.reservoirRefreshAmount=j,d.reservoirRefreshInterval=c,console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — ${k}/${j} remaining, throttling`)):k>.5*j&&(d.minTime=0,d.reservoir=null,d.reservoirRefreshAmount=null,d.reservoirRefreshInterval=null)),f.updateSettings(d)}}function u(a,b){let c=`${a}:${b}`,d=h.get(c);if(!d)return{enabled:i.has(b),active:!1,queued:0,running:0};let e=d.counts();return{enabled:i.has(b),active:!0,queued:e.QUEUED||0,running:e.RUNNING||0,executing:e.EXECUTING||0,done:e.DONE||0}}function v(){let a={};for(let[b,c]of h){let d=c.counts();a[b]={queued:d.QUEUED||0,running:d.RUNNING||0,executing:d.EXECUTING||0}}return a}},6327:(a,b,c)=>{function d({onDisconnect:a,log:b,provider:c,model:e}={}){let f=new AbortController,g=Date.now(),h=!1,i=null,j=a=>{let b=Date.now()-g,d=c?.toUpperCase()||"UNKNOWN";console.log(`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 🌊 [STREAM] ${d} | ${e||"unknown"} | ${b}ms | ${a}`)};return{signal:f.signal,startTime:g,isConnected:()=>!h,handleDisconnect:(b="client_closed")=>{h||(h=!0,j(`disconnect: ${b}`),i=setTimeout(()=>{f.abort()},500),a?.({reason:b,duration:Date.now()-g}))},handleComplete:()=>{!h&&(h=!0,j("complete"),i&&(clearTimeout(i),i=null))},handleError:a=>{(i&&(clearTimeout(i),i=null),"AbortError"===a.name)?j("aborted"):j(`error: ${a.message}`)},abort:()=>f.abort()}}function e(a,b,c){var d;let e,f;return d={readable:a.body.pipeThrough(b),writable:{getWriter:()=>({abort:()=>{}})}},e=d.readable.getReader(),f=d.writable.getWriter(),new ReadableStream({async pull(a){if(!c.isConnected())return void a.close();try{let{done:b,value:d}=await e.read();if(b){c.handleComplete(),a.close();return}a.enqueue(d)}catch(b){c.handleError(b),a.error(b)}},cancel(a){c.handleDisconnect(a||"cancelled"),e.cancel(),f.abort()}})}c.d(b,{Jb:()=>e,jd:()=>d})},8550:(a,b,c)=>{c.d(b,{M:()=>d});function d(a,b){if(!a||"object"!=typeof a)return null;if(a.usage&&"object"==typeof a.usage&&void 0!==a.usage.prompt_tokens)return{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens};let c=a.response?.usage||a.usage;return c&&"object"==typeof c&&(void 0!==c.input_tokens||void 0!==c.output_tokens)?{prompt_tokens:c.input_tokens||0,completion_tokens:c.output_tokens||0,cached_tokens:c.cache_read_input_tokens,cache_creation_input_tokens:c.cache_creation_input_tokens,reasoning_tokens:c.reasoning_tokens||c.output_tokens_details?.reasoning_tokens}:a.usage&&"object"==typeof a.usage&&(void 0!==a.usage.input_tokens||void 0!==a.usage.output_tokens)?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usageMetadata&&"object"==typeof a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null}},9315:(a,b,c)=>{let d;c.d(b,{Cb:()=>l,IL:()=>o,QS:()=>p,RE:()=>n,TZ:()=>q,gR:()=>k,yv:()=>m});var e=c(77598),f=c.n(e),g=c(44594),h=c(42910);let i={hits:0,misses:0,tokensSaved:0};function j(){return d||(d=new g.q({maxSize:parseInt(process.env.SEMANTIC_CACHE_MAX_SIZE||"500",10),defaultTTL:parseInt(process.env.SEMANTIC_CACHE_TTL_MS||"3600000",10)})),d}function k(a,b,c=0,d=1){var e;let g=JSON.stringify({model:a,messages:Array.isArray(e=b)?e.map(a=>({role:a.role||"user",content:"string"==typeof a.content?a.content:JSON.stringify(a.content)})):[],temperature:c,top_p:d});return f().createHash("sha256").update(g).digest("hex")}function l(a){let b=j().get(a);if(b)return i.hits++,i.tokensSaved+=b.tokensSaved||0,b.response;try{let b=(0,h.sm)(),c=b.prepare("SELECT response, tokens_saved FROM semantic_cache WHERE signature = ? AND expires_at > datetime('now')").get(a);if(c){let d=JSON.parse(c.response);return j().set(a,{response:d,tokensSaved:c.tokens_saved}),b.prepare("UPDATE semantic_cache SET hit_count = hit_count + 1 WHERE signature = ?").run(a),i.hits++,i.tokensSaved+=c.tokens_saved||0,d}}catch{}return i.misses++,null}function m(a,b,c,d=0,e=36e5){let g=parseInt(process.env.SEMANTIC_CACHE_TTL_MS||String(e),10);j().set(a,{response:c,tokensSaved:d},g);try{let e=(0,h.sm)(),i=f().randomUUID(),j=a.slice(0,16),k=new Date().toISOString(),l=new Date(Date.now()+g).toISOString();e.prepare(`INSERT OR REPLACE INTO semantic_cache (id, signature, model, prompt_hash, response, tokens_saved, hit_count, created_at, expires_at)
|
|
2
|
-
VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?)`).run(i,a,b,j,JSON.stringify(c),d,k,l)}catch{}}function n(){try{return(0,h.sm)().prepare("DELETE FROM semantic_cache WHERE expires_at <= datetime('now')").run().changes}catch{return 0}}function o(){j().clear();try{(0,h.sm)().prepare("DELETE FROM semantic_cache").run()}catch{}i={hits:0,misses:0,tokensSaved:0}}function p(){let a=j().getStats(),b=0;try{let a=(0,h.sm)().prepare("SELECT COUNT(*) as count FROM semantic_cache WHERE expires_at > datetime('now')").get();b=a?.count||0}catch{}let c=i.hits+i.misses;return{memoryEntries:a.size,dbEntries:b,hits:i.hits,misses:i.misses,hitRate:c>0?(i.hits/c*100).toFixed(1):"0.0",tokensSaved:i.tokensSaved}}function q(a,b){return b?.get?.("x-omniroute-no-cache")!=="true"&&!1===a.stream&&(a.temperature??0)===0}},9686:(a,b,c)=>{c.d(b,{eU:()=>i,vN:()=>h});var d=c(83779),e=c(22901),f=c(87068);let g=f.oD;async function h(a,b){try{let c={};b.accessToken&&(c.accessToken=b.accessToken),b.refreshToken&&(c.refreshToken=b.refreshToken),b.expiresIn&&(c.expiresAt=new Date(Date.now()+1e3*b.expiresIn).toISOString(),c.expiresIn=b.expiresIn),b.providerSpecificData&&(c.providerSpecificData=b.providerSpecificData);let f=await (0,e.rj)(a,c);return d.info("TOKEN_REFRESH","Credentials updated in localDb",{connectionId:a,success:!!f}),!!f}catch(b){return d.error("TOKEN_REFRESH","Error updating credentials in localDb",{connectionId:a,error:b.message}),!1}}async function i(a,b){let c={...b};if(c.expiresAt){let b=new Date(c.expiresAt).getTime(),e=Date.now();if(b-e<g){let g;d.info("TOKEN_REFRESH","Token expiring soon, refreshing proactively",{provider:a,expiresIn:Math.round((b-e)/1e3)});let i=await (g=c,(0,f.iD)(a,g,d));i&&i.accessToken&&(await h(c.connectionId,i),c={...c,accessToken:i.accessToken,refreshToken:i.refreshToken||c.refreshToken,expiresAt:i.expiresIn?new Date(Date.now()+1e3*i.expiresIn).toISOString():c.expiresAt})}}if("github"===a&&c.providerSpecificData?.copilotTokenExpiresAt){let b=1e3*c.providerSpecificData.copilotTokenExpiresAt,e=Date.now();if(b-e<g){let g;d.info("TOKEN_REFRESH","Copilot token expiring soon, refreshing proactively",{provider:a,expiresIn:Math.round((b-e)/1e3)});let i=await (g=c.accessToken,(0,f.jR)(g,d));i&&(await h(c.connectionId,{providerSpecificData:{...c.providerSpecificData,copilotToken:i.token,copilotTokenExpiresAt:i.expiresAt}}),c.providerSpecificData={...c.providerSpecificData,copilotToken:i.token,copilotTokenExpiresAt:i.expiresAt})}}return c}},12767:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>A});var e=c(21020),f=c(13961),g=c(99939),h=c(32113),i=c(69590),j=c(71861),k=c(17669),l=c(60293),m=c(23969),n=c(76340),o=c(83779),p=c(9686),q=c(22901),r=c(34493),s=c(26510),t=c(77458),u=c(12620),v=c(20864),w=c(44057),x=c(59545),y=c(78790),z=a([i]);async function A(a,b=null){let c,d=(0,x.KZ)(),h=new w.TT(d);try{h.startPhase("parse"),c=await a.json(),h.endPhase()}catch{return o.warn("CHAT","Invalid JSON body"),(0,j.yj)(l.gx.BAD_REQUEST,"Invalid JSON body")}h.startPhase("validate");let i=(0,t.Jh)(c,o);if(i.blocked)return o.warn("SANITIZER","Request blocked due to prompt injection",{detections:i.detections}),(0,j.yj)(l.gx.BAD_REQUEST,"Request rejected: suspicious content detected");i.modified&&i.sanitizedBody&&(c=i.sanitizedBody),h.endPhase(),b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let m=new URL(a.url),n=c.model,p=c.messages?.length||c.input?.length||0,r=c.tools?.length||0,s=c.reasoning_effort||c.reasoning?.effort||null;o.request("POST",`${m.pathname} | ${n} | ${p} msgs${r?` | ${r} tools`:""}${s?` | effort=${s}`:""}`);let u=a.headers.get("Authorization"),z=(0,e.Tr)(a),C=null;if(u&&z){let a=o.maskKey(z);o.debug("AUTH",`API Key: ${a}`);try{C=await (0,q.v9)(z)}catch{C=null}}else o.debug("AUTH","No API key provided (local mode)");if("true"===process.env.REQUIRE_API_KEY){if(!z)return o.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,j.yj)(l.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(z))return o.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,j.yj)(l.gx.UNAUTHORIZED,"Invalid API key")}if(!n)return o.warn("CHAT","Missing model"),(0,j.yj)(l.gx.BAD_REQUEST,"Missing model");if(h.startPhase("policy"),C?.id)try{let a=(0,y.Ik)(C.id);if(!a.allowed)return o.warn("BUDGET",`API key ${C.id} exceeded budget: ${a.reason}`),(0,j.yj)(429,a.reason||"Budget limit exceeded")}catch{}h.endPhase(),h.startPhase("resolve");let D=await (0,f.$m)(n);if(D){o.info("CHAT",`Combo "${n}" [${D.strategy||"priority"}] with ${D.models.length} models`);let d=async a=>{let b=(0,g.Xh)(a),c=b.provider;if(!c)return!0;if(!(0,v.fj)(c,b.model||a))return o.debug("AVAILABILITY",`${c}/${b.model} in cooldown, skipping`),!1;let d=await (0,e.c1)(c);return!!d&&!d.allRateLimited},[f,i]=await Promise.all([(0,q.V7)().catch(()=>({})),(0,q.Uv)().catch(()=>[])]);h.endPhase();let j=await (0,k.Pr)({body:c,combo:D,handleSingleModel:(c,d)=>B(c,d,b,a,D.name,C,h),isModelAvailable:d,log:o,settings:f,allCombos:i});return(0,w.N3)(h),j}h.endPhase();let E=await B(c,n,b,a,null,C,h);return(0,w.N3)(h),E}async function B(a,b,c=null,d=null,f=null,g=null,h=null){var i,k;let m=await C(b,a);if(m.error)return m.error;let{provider:n,model:q,sourceFormat:t,targetFormat:w}=m,x=(i=n,k=q,(0,v.fj)(i,k)?(0,u.getCircuitBreaker)(i,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>o.info("CIRCUIT",`${a}: ${b} → ${c}`)}).canExecute()?null:(o.warn("CIRCUIT",`Circuit breaker OPEN for ${i}, rejecting request`),(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Provider ${i} circuit breaker is open`,30)):(o.warn("AVAILABILITY",`${i}/${k} is in cooldown, rejecting request`),(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Model ${i}/${k} is temporarily unavailable (cooldown)`,30)));if(x)return x;let z=(0,u.getCircuitBreaker)(n,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>o.info("CIRCUIT",`${a}: ${b} → ${c}`)}),A=d?.headers?.get("user-agent")||"",F=null,G=null,H=null;for(;;){let b=await (0,e.c1)(n,F);if(!b||b.allRateLimited)return function(a,b,c,d,e,f){if(a?.allRateLimited){let b=e||a.lastError||"Unavailable",g=f||Number(a.lastErrorCode)||l.gx.SERVICE_UNAVAILABLE;return o.warn("CHAT",`[${c}/${d}] ${b} (${a.retryAfterHuman})`),(0,j.wO)(g,`[${c}/${d}] ${b}`,a.retryAfter,a.retryAfterHuman)}return b?(o.warn("CHAT","No more accounts available",{provider:c}),(0,j.yj)(f||l.gx.SERVICE_UNAVAILABLE,e||"All accounts unavailable")):(o.error("AUTH",`No credentials for provider: ${c}`),(0,j.yj)(l.gx.BAD_REQUEST,`No credentials for provider: ${c}`))}(b,F,n,q,G,H);let d=b.connectionId.slice(0,8);o.info("AUTH",`Using ${n} account: ${d}...`);let i=await (0,p.eU)(n,b),k=await E(b.connectionId),m=Date.now();h&&h.startPhase("connect");let{result:u,tlsFingerprintUsed:x}=await D({breaker:z,body:a,provider:n,model:q,refreshedCredentials:i,proxyInfo:k,log:o,clientRawRequest:c,credentials:b,apiKeyInfo:g,userAgent:A,comboName:f});h&&h.endPhase();let B=Date.now()-m;if(function({result:a,proxyInfo:b,proxyLatency:c,provider:d,model:e,sourceFormat:f,targetFormat:g,credentials:h,comboName:i,clientRawRequest:j,tlsFingerprintUsed:k=!1}){try{(0,r.pq)({status:a.success?"success":408===a.status||504===a.status?"timeout":"error",proxy:b?.proxy||null,level:b?.level||"direct",levelId:b?.levelId||null,provider:d,targetUrl:`${d}/${e}`,latencyMs:c,error:a.success?null:a.error||null,connectionId:h.connectionId,comboId:i||null,account:h.connectionId?.slice(0,8)||null,tlsFingerprint:k})}catch{}try{(0,s.MR)({provider:d,model:e,sourceFormat:f,targetFormat:g,status:a.success?"success":"error",statusCode:a.success?200:a.status||500,latency:c,endpoint:j?.endpoint||"/v1/chat/completions",connectionId:h.connectionId||null,comboName:i||null})}catch{}}({result:u,proxyInfo:k,proxyLatency:B,provider:n,model:q,sourceFormat:t,targetFormat:w,credentials:b,comboName:f,clientRawRequest:c,tlsFingerprintUsed:x}),u.success)return function(a,b){if(a?.id)try{let c=b.usage||{},d=((c.prompt_tokens||0)+(c.completion_tokens||0))*1e-6;d>0&&(0,y.n5)(a.id,d)}catch{}}(g,u),h&&h.startPhase("finalize"),h&&h.endPhase(),u.response;(429===u.status||503===u.status)&&((0,v.gC)(n,q,6e4,`HTTP ${u.status}`),o.info("AVAILABILITY",`${n}/${q} marked unavailable for 60s (HTTP ${u.status})`));let{shouldFallback:C}=await (0,e.vk)(b.connectionId,u.status,u.error,n);if(C){o.warn("AUTH",`Account ${d}... unavailable (${u.status}), trying fallback`),F=b.connectionId,G=u.error,H=u.status;continue}return u.response}}async function C(a,b){let c=await (0,f.mA)(a);if(!c.provider){if("ambiguous_model"===c.errorType){let b=c.errorMessage||`Ambiguous model '${a}'. Use provider/model prefix (ex: gh/${a} or cc/${a}).`;return o.warn("CHAT",b,{model:a,candidates:c.candidateAliases||c.candidateProviders||[]}),{error:(0,j.yj)(l.gx.BAD_REQUEST,b)}}return o.warn("CHAT","Invalid model format",{model:a}),{error:(0,j.yj)(l.gx.BAD_REQUEST,"Invalid model format")}}let{provider:d,model:e}=c,g=(0,h.Tz)(b),i=m.PROVIDER_ID_TO_ALIAS[d]||d,k=(0,m.ux)(i,e)||(0,h.jJ)(d);return a!==`${d}/${e}`?o.info("ROUTING",`${a} → ${d}/${e}`):o.info("ROUTING",`Provider: ${d}, Model: ${e}`),{provider:d,model:e,sourceFormat:g,targetFormat:k}}async function D({breaker:a,body:b,provider:c,model:d,refreshedCredentials:f,proxyInfo:g,log:h,clientRawRequest:k,credentials:m,apiKeyInfo:q,userAgent:r,comboName:s}){try{let j=()=>(0,n.jf)(g?.proxy||null,()=>(0,i.w)({body:{...b,model:`${c}/${d}`},modelInfo:{provider:c,model:d},credentials:f,log:h,clientRawRequest:k,connectionId:m.connectionId,apiKeyInfo:q,userAgent:r,comboName:s,onCredentialsRefreshed:async a=>{await (0,p.vN)(m.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(m.connectionId,m)}}));if(!g?.proxy&&(0,n.Wk)()){let b=await a.execute(async()=>(0,n.qT)(j));return{result:b.result,tlsFingerprintUsed:b.tlsFingerprintUsed}}return{result:await a.execute(j),tlsFingerprintUsed:!1}}catch(a){if(a instanceof u.ez)return o.warn("CIRCUIT",`${c} circuit open during retry: ${a.message}`),{result:{success:!1,response:(0,j.wO)(l.gx.SERVICE_UNAVAILABLE,`Provider ${c} circuit breaker is open`,Math.ceil(a.retryAfterMs/1e3)),status:l.gx.SERVICE_UNAVAILABLE},tlsFingerprintUsed:!1};throw a}}async function E(a){try{return await (0,q.YD)(a)}catch(a){return o.debug("PROXY",`Failed to resolve proxy: ${a.message}`),null}}i=(z.then?(await z)():z)[0],d()}catch(a){d(a)}})},13961:(a,b,c)=>{c.d(b,{$m:()=>g,mA:()=>f});var d=c(22901),e=c(99939);async function f(a){let b=(0,e.Xh)(a);if(!b.isAlias){if(b.provider===b.providerAlias){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===b.providerAlias);if(a)return{provider:a.id,model:b.model};let c=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===b.providerAlias);if(c)return{provider:c.id,model:b.model}}return(0,e.js)(a,null)}return(0,e.js)(a,d.OM)}async function g(a){let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b:null}},20864:(a,b,c)=>{c.d(b,{DQ:()=>h,GX:()=>j,Wj:()=>i,fj:()=>f,gC:()=>g});let d=new Map;function e(a,b){return`${a}::${b}`}function f(a,b){let c=e(a,b),f=d.get(c);return!f||Date.now()-f.unavailableSince>=f.cooldownMs&&(d.delete(c),!0)}function g(a,b,c=6e4,f){let h=e(a,b);d.set(h,{provider:a,model:b,unavailableSince:Date.now(),cooldownMs:c,reason:f||"unknown"})}function h(a,b){return d.delete(e(a,b))}function i(){let a=Date.now(),b=[];for(let[c,e]of d.entries()){let f=a-e.unavailableSince;if(f>=e.cooldownMs){d.delete(c);continue}b.push({provider:e.provider,model:e.model,reason:e.reason||"unknown",remainingMs:e.cooldownMs-f,unavailableSince:new Date(e.unavailableSince).toISOString()})}return b}function j(){return i(),d.size}},26510:(a,b,c)=>{function d(){return globalThis.__translatorEvents||(globalThis.__translatorEvents=[]),globalThis.__translatorEvents}function e(a){if(!a||"object"!=typeof a)return;let b=d();b.unshift({id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),...a}),b.length>200&&(b.length=200)}function f(a=50){let b=Number(a),c=Number.isFinite(b)&&b>0?Math.min(Math.floor(b),200):50,e=d();return{events:e.slice(0,c),total:e.length}}c.d(b,{MR:()=>e,zS:()=>f})},26695:(a,b,c)=>{c.d(b,{lm:()=>g.lm,l2:()=>q,i5:()=>p,v8:()=>j});var d=c(89575),e=c(55120),f=c(27230),g=c(50101);function h(a){if(!a)return null;let b=a.trimStart();if(!b||100!==b.charCodeAt(0))return null;let c=b.slice(5).trim();if("[DONE]"===c)return{done:!0};try{return JSON.parse(c)}catch(a){return c.length>0&&console.log(`[WARN] Failed to parse SSE line (${c.length} chars): ${c.substring(0,200)}...`),null}}function i(a,b){if(b===e.h.OPENAI&&a.choices?.[0]?.delta){let b=a.choices[0].delta;return b.content&&""!==b.content||b.reasoning_content&&""!==b.reasoning_content||b.tool_calls&&b.tool_calls.length>0||a.choices[0].finish_reason||b.role}if(b===e.h.CLAUDE){let b="content_block_delta"===a.type,c=a.delta?.text&&""!==a.delta.text,d=a.delta?.thinking&&""!==a.delta.thinking,e=a.delta?.partial_json&&""!==a.delta.partial_json;return!b||!!c||!!d||!!e}if(b===e.h.GEMINI&&a.candidates?.[0]){let b=a.candidates[0];if(b.finishReason)return!0;let c=b.content?.parts;return!!c&&0!==c.length&&c.some(a=>a.text&&""!==a.text||a.functionCall||a.executableCode)}return!0}function j(a,b){return null==a?"data: null\n\n":a&&a.done?"data: [DONE]\n\n":a&&a.event&&a.data?`event: ${a.event}
|
|
2
|
+
VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?)`).run(i,a,b,j,JSON.stringify(c),d,k,l)}catch{}}function n(){try{return(0,h.sm)().prepare("DELETE FROM semantic_cache WHERE expires_at <= datetime('now')").run().changes}catch{return 0}}function o(){j().clear();try{(0,h.sm)().prepare("DELETE FROM semantic_cache").run()}catch{}i={hits:0,misses:0,tokensSaved:0}}function p(){let a=j().getStats(),b=0;try{let a=(0,h.sm)().prepare("SELECT COUNT(*) as count FROM semantic_cache WHERE expires_at > datetime('now')").get();b=a?.count||0}catch{}let c=i.hits+i.misses;return{memoryEntries:a.size,dbEntries:b,hits:i.hits,misses:i.misses,hitRate:c>0?(i.hits/c*100).toFixed(1):"0.0",tokensSaved:i.tokensSaved}}function q(a,b){return b?.get?.("x-omniroute-no-cache")!=="true"&&!1===a.stream&&(a.temperature??0)===0}},9686:(a,b,c)=>{c.d(b,{eU:()=>i,vN:()=>h});var d=c(83779),e=c(22901),f=c(87068);let g=f.oD;async function h(a,b){try{let c={};b.accessToken&&(c.accessToken=b.accessToken),b.refreshToken&&(c.refreshToken=b.refreshToken),b.expiresIn&&(c.expiresAt=new Date(Date.now()+1e3*b.expiresIn).toISOString(),c.expiresIn=b.expiresIn),b.providerSpecificData&&(c.providerSpecificData=b.providerSpecificData);let f=await (0,e.rj)(a,c);return d.info("TOKEN_REFRESH","Credentials updated in localDb",{connectionId:a,success:!!f}),!!f}catch(b){return d.error("TOKEN_REFRESH","Error updating credentials in localDb",{connectionId:a,error:b.message}),!1}}async function i(a,b){let c={...b};if(c.expiresAt){let b=new Date(c.expiresAt).getTime(),e=Date.now();if(b-e<g){let g;d.info("TOKEN_REFRESH","Token expiring soon, refreshing proactively",{provider:a,expiresIn:Math.round((b-e)/1e3)});let i=await (g=c,(0,f.iD)(a,g,d));i&&i.accessToken&&(await h(c.connectionId,i),c={...c,accessToken:i.accessToken,refreshToken:i.refreshToken||c.refreshToken,expiresAt:i.expiresIn?new Date(Date.now()+1e3*i.expiresIn).toISOString():c.expiresAt})}}if("github"===a&&c.providerSpecificData?.copilotTokenExpiresAt){let b=1e3*c.providerSpecificData.copilotTokenExpiresAt,e=Date.now();if(b-e<g){let g;d.info("TOKEN_REFRESH","Copilot token expiring soon, refreshing proactively",{provider:a,expiresIn:Math.round((b-e)/1e3)});let i=await (g=c.accessToken,(0,f.jR)(g,d));i&&(await h(c.connectionId,{providerSpecificData:{...c.providerSpecificData,copilotToken:i.token,copilotTokenExpiresAt:i.expiresAt}}),c.providerSpecificData={...c.providerSpecificData,copilotToken:i.token,copilotTokenExpiresAt:i.expiresAt})}}return c}},12767:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>z});var e=c(21020),f=c(13961),g=c(32113),h=c(69590),i=c(71861),j=c(17669),k=c(60293),l=c(23969),m=c(76340),n=c(83779),o=c(9686),p=c(22901),q=c(34493),r=c(26510),s=c(77458),t=c(12620),u=c(20864),v=c(44057),w=c(59545),x=c(78790),y=a([h]);async function z(a,b=null){let c,d=(0,w.KZ)(),g=new v.TT(d);try{g.startPhase("parse"),c=await a.json(),g.endPhase()}catch{return n.warn("CHAT","Invalid JSON body"),(0,i.yj)(k.gx.BAD_REQUEST,"Invalid JSON body")}g.startPhase("validate");let h=(0,s.Jh)(c,n);if(h.blocked)return n.warn("SANITIZER","Request blocked due to prompt injection",{detections:h.detections}),(0,i.yj)(k.gx.BAD_REQUEST,"Request rejected: suspicious content detected");h.modified&&h.sanitizedBody&&(c=h.sanitizedBody),g.endPhase(),b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let l=new URL(a.url),m=c.model,o=c.messages?.length||c.input?.length||0,q=c.tools?.length||0,r=c.reasoning_effort||c.reasoning?.effort||null;n.request("POST",`${l.pathname} | ${m} | ${o} msgs${q?` | ${q} tools`:""}${r?` | effort=${r}`:""}`);let t=a.headers.get("Authorization"),y=(0,e.Tr)(a),B=null;if(t&&y){let a=n.maskKey(y);n.debug("AUTH",`API Key: ${a}`);try{B=await (0,p.v9)(y)}catch{B=null}}else n.debug("AUTH","No API key provided (local mode)");if("true"===process.env.REQUIRE_API_KEY){if(!y)return n.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,i.yj)(k.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(y))return n.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,i.yj)(k.gx.UNAUTHORIZED,"Invalid API key")}if(!m)return n.warn("CHAT","Missing model"),(0,i.yj)(k.gx.BAD_REQUEST,"Missing model");if(g.startPhase("policy"),B?.id)try{let a=(0,x.Ik)(B.id);if(!a.allowed)return n.warn("BUDGET",`API key ${B.id} exceeded budget: ${a.reason}`),(0,i.yj)(429,a.reason||"Budget limit exceeded")}catch{}g.endPhase(),g.startPhase("resolve");let C=await (0,f.$m)(m);if(C){n.info("CHAT",`Combo "${m}" [${C.strategy||"priority"}] with ${C.models.length} models`);let d=async a=>{let b=await (0,f.mA)(a),c=b.provider;if(!c)return!0;if(!(0,u.fj)(c,b.model||a))return n.debug("AVAILABILITY",`${c}/${b.model} in cooldown, skipping`),!1;let d=await (0,e.c1)(c);return!!d&&!d.allRateLimited},[h,i]=await Promise.all([(0,p.V7)().catch(()=>({})),(0,p.Uv)().catch(()=>[])]);g.endPhase();let k=await (0,j.Pr)({body:c,combo:C,handleSingleModel:(c,d)=>A(c,d,b,a,C.name,B,g),isModelAvailable:d,log:n,settings:h,allCombos:i});return(0,v.N3)(g),k}g.endPhase();let D=await A(c,m,b,a,null,B,g);return(0,v.N3)(g),D}async function A(a,b,c=null,d=null,f=null,g=null,h=null){var j,l;let m=await B(b,a);if(m.error)return m.error;let{provider:p,model:s,sourceFormat:v,targetFormat:w}=m,y=(j=p,l=s,(0,u.fj)(j,l)?(0,t.getCircuitBreaker)(j,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>n.info("CIRCUIT",`${a}: ${b} → ${c}`)}).canExecute()?null:(n.warn("CIRCUIT",`Circuit breaker OPEN for ${j}, rejecting request`),(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Provider ${j} circuit breaker is open`,30)):(n.warn("AVAILABILITY",`${j}/${l} is in cooldown, rejecting request`),(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Model ${j}/${l} is temporarily unavailable (cooldown)`,30)));if(y)return y;let z=(0,t.getCircuitBreaker)(p,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>n.info("CIRCUIT",`${a}: ${b} → ${c}`)}),E=d?.headers?.get("user-agent")||"",F=null,G=null,H=null;for(;;){let b=await (0,e.c1)(p,F);if(!b||b.allRateLimited)return function(a,b,c,d,e,f){if(a?.allRateLimited){let b=e||a.lastError||"Unavailable",g=f||Number(a.lastErrorCode)||k.gx.SERVICE_UNAVAILABLE;return n.warn("CHAT",`[${c}/${d}] ${b} (${a.retryAfterHuman})`),(0,i.wO)(g,`[${c}/${d}] ${b}`,a.retryAfter,a.retryAfterHuman)}return b?(n.warn("CHAT","No more accounts available",{provider:c}),(0,i.yj)(f||k.gx.SERVICE_UNAVAILABLE,e||"All accounts unavailable")):(n.error("AUTH",`No credentials for provider: ${c}`),(0,i.yj)(k.gx.BAD_REQUEST,`No credentials for provider: ${c}`))}(b,F,p,s,G,H);let d=b.connectionId.slice(0,8);n.info("AUTH",`Using ${p} account: ${d}...`);let j=await (0,o.eU)(p,b),l=await D(b.connectionId),m=Date.now();h&&h.startPhase("connect");let{result:t,tlsFingerprintUsed:y}=await C({breaker:z,body:a,provider:p,model:s,refreshedCredentials:j,proxyInfo:l,log:n,clientRawRequest:c,credentials:b,apiKeyInfo:g,userAgent:E,comboName:f});h&&h.endPhase();let A=Date.now()-m;if(function({result:a,proxyInfo:b,proxyLatency:c,provider:d,model:e,sourceFormat:f,targetFormat:g,credentials:h,comboName:i,clientRawRequest:j,tlsFingerprintUsed:k=!1}){try{(0,q.pq)({status:a.success?"success":408===a.status||504===a.status?"timeout":"error",proxy:b?.proxy||null,level:b?.level||"direct",levelId:b?.levelId||null,provider:d,targetUrl:`${d}/${e}`,latencyMs:c,error:a.success?null:a.error||null,connectionId:h.connectionId,comboId:i||null,account:h.connectionId?.slice(0,8)||null,tlsFingerprint:k})}catch{}try{(0,r.MR)({provider:d,model:e,sourceFormat:f,targetFormat:g,status:a.success?"success":"error",statusCode:a.success?200:a.status||500,latency:c,endpoint:j?.endpoint||"/v1/chat/completions",connectionId:h.connectionId||null,comboName:i||null})}catch{}}({result:t,proxyInfo:l,proxyLatency:A,provider:p,model:s,sourceFormat:v,targetFormat:w,credentials:b,comboName:f,clientRawRequest:c,tlsFingerprintUsed:y}),t.success)return function(a,b){if(a?.id)try{let c=b.usage||{},d=((c.prompt_tokens||0)+(c.completion_tokens||0))*1e-6;d>0&&(0,x.n5)(a.id,d)}catch{}}(g,t),h&&h.startPhase("finalize"),h&&h.endPhase(),t.response;(429===t.status||503===t.status)&&((0,u.gC)(p,s,6e4,`HTTP ${t.status}`),n.info("AVAILABILITY",`${p}/${s} marked unavailable for 60s (HTTP ${t.status})`));let{shouldFallback:B}=await (0,e.vk)(b.connectionId,t.status,t.error,p);if(B){n.warn("AUTH",`Account ${d}... unavailable (${t.status}), trying fallback`),F=b.connectionId,G=t.error,H=t.status;continue}return t.response}}async function B(a,b){let c=await (0,f.mA)(a);if(!c.provider){if("ambiguous_model"===c.errorType){let b=c.errorMessage||`Ambiguous model '${a}'. Use provider/model prefix (ex: gh/${a} or cc/${a}).`;return n.warn("CHAT",b,{model:a,candidates:c.candidateAliases||c.candidateProviders||[]}),{error:(0,i.yj)(k.gx.BAD_REQUEST,b)}}return n.warn("CHAT","Invalid model format",{model:a}),{error:(0,i.yj)(k.gx.BAD_REQUEST,"Invalid model format")}}let{provider:d,model:e}=c,h=(0,g.Tz)(b),j=l.PROVIDER_ID_TO_ALIAS[d]||d,m=(0,l.ux)(j,e)||(0,g.jJ)(d);return a!==`${d}/${e}`?n.info("ROUTING",`${a} → ${d}/${e}`):n.info("ROUTING",`Provider: ${d}, Model: ${e}`),{provider:d,model:e,sourceFormat:h,targetFormat:m}}async function C({breaker:a,body:b,provider:c,model:d,refreshedCredentials:f,proxyInfo:g,log:j,clientRawRequest:l,credentials:p,apiKeyInfo:q,userAgent:r,comboName:s}){try{let i=()=>(0,m.jf)(g?.proxy||null,()=>(0,h.w)({body:{...b,model:`${c}/${d}`},modelInfo:{provider:c,model:d},credentials:f,log:j,clientRawRequest:l,connectionId:p.connectionId,apiKeyInfo:q,userAgent:r,comboName:s,onCredentialsRefreshed:async a=>{await (0,o.vN)(p.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(p.connectionId,p)}}));if(!g?.proxy&&(0,m.Wk)()){let b=await a.execute(async()=>(0,m.qT)(i));return{result:b.result,tlsFingerprintUsed:b.tlsFingerprintUsed}}return{result:await a.execute(i),tlsFingerprintUsed:!1}}catch(a){if(a instanceof t.ez)return n.warn("CIRCUIT",`${c} circuit open during retry: ${a.message}`),{result:{success:!1,response:(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Provider ${c} circuit breaker is open`,Math.ceil(a.retryAfterMs/1e3)),status:k.gx.SERVICE_UNAVAILABLE},tlsFingerprintUsed:!1};throw a}}async function D(a){try{return await (0,p.YD)(a)}catch(a){return n.debug("PROXY",`Failed to resolve proxy: ${a.message}`),null}}h=(y.then?(await y)():y)[0],d()}catch(a){d(a)}})},13961:(a,b,c)=>{c.d(b,{$m:()=>g,mA:()=>f});var d=c(22901),e=c(99939);async function f(a){let b=(0,e.Xh)(a);if(b.providerAlias||b.provider){let a=b.providerAlias||b.provider,c=(await (0,d.Fh)({type:"openai-compatible"})).find(b=>b.prefix===a);if(c)return{provider:c.id,model:b.model};let e=(await (0,d.Fh)({type:"anthropic-compatible"})).find(b=>b.prefix===a);if(e)return{provider:e.id,model:b.model}}return b.isAlias?(0,e.js)(a,d.OM):(0,e.js)(a,null)}async function g(a){let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b:null}},20864:(a,b,c)=>{c.d(b,{DQ:()=>h,GX:()=>j,Wj:()=>i,fj:()=>f,gC:()=>g});let d=new Map;function e(a,b){return`${a}::${b}`}function f(a,b){let c=e(a,b),f=d.get(c);return!f||Date.now()-f.unavailableSince>=f.cooldownMs&&(d.delete(c),!0)}function g(a,b,c=6e4,f){let h=e(a,b);d.set(h,{provider:a,model:b,unavailableSince:Date.now(),cooldownMs:c,reason:f||"unknown"})}function h(a,b){return d.delete(e(a,b))}function i(){let a=Date.now(),b=[];for(let[c,e]of d.entries()){let f=a-e.unavailableSince;if(f>=e.cooldownMs){d.delete(c);continue}b.push({provider:e.provider,model:e.model,reason:e.reason||"unknown",remainingMs:e.cooldownMs-f,unavailableSince:new Date(e.unavailableSince).toISOString()})}return b}function j(){return i(),d.size}},26510:(a,b,c)=>{function d(){return globalThis.__translatorEvents||(globalThis.__translatorEvents=[]),globalThis.__translatorEvents}function e(a){if(!a||"object"!=typeof a)return;let b=d();b.unshift({id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),...a}),b.length>200&&(b.length=200)}function f(a=50){let b=Number(a),c=Number.isFinite(b)&&b>0?Math.min(Math.floor(b),200):50,e=d();return{events:e.slice(0,c),total:e.length}}c.d(b,{MR:()=>e,zS:()=>f})},26695:(a,b,c)=>{c.d(b,{lm:()=>g.lm,l2:()=>q,i5:()=>p,v8:()=>j});var d=c(89575),e=c(55120),f=c(27230),g=c(50101);function h(a){if(!a)return null;let b=a.trimStart();if(!b||100!==b.charCodeAt(0))return null;let c=b.slice(5).trim();if("[DONE]"===c)return{done:!0};try{return JSON.parse(c)}catch(a){return c.length>0&&console.log(`[WARN] Failed to parse SSE line (${c.length} chars): ${c.substring(0,200)}...`),null}}function i(a,b){if(b===e.h.OPENAI&&a.choices?.[0]?.delta){let b=a.choices[0].delta;return b.content&&""!==b.content||b.reasoning_content&&""!==b.reasoning_content||b.tool_calls&&b.tool_calls.length>0||a.choices[0].finish_reason||b.role}if(b===e.h.CLAUDE){let b="content_block_delta"===a.type,c=a.delta?.text&&""!==a.delta.text,d=a.delta?.thinking&&""!==a.delta.thinking,e=a.delta?.partial_json&&""!==a.delta.partial_json;return!b||!!c||!!d||!!e}if(b===e.h.GEMINI&&a.candidates?.[0]){let b=a.candidates[0];if(b.finishReason)return!0;let c=b.content?.parts;return!!c&&0!==c.length&&c.some(a=>a.text&&""!==a.text||a.functionCall||a.executableCode)}return!0}function j(a,b){return null==a?"data: null\n\n":a&&a.done?"data: [DONE]\n\n":a&&a.event&&a.data?`event: ${a.event}
|
|
3
3
|
data: ${JSON.stringify(a.data)}
|
|
4
4
|
|
|
5
5
|
`:(a=function(a){if(a?.usage&&"object"==typeof a.usage&&null===a.usage.perf_metrics){let{perf_metrics:b,...c}=a.usage;return{...a,usage:c}}return a}(a),b===e.h.CLAUDE&&a&&a.type)?`event: ${a.type}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=2901,exports.ids=[2901],exports.modules={9679:(a,b,c)=>{c.d(b,{HL:()=>v,KJ:()=>l,PM:()=>x,PS:()=>k,VT:()=>n,Xx:()=>h,YD:()=>w,isCloudEnabled:()=>i,mt:()=>g,o4:()=>t,r4:()=>j,ru:()=>s,yF:()=>m});var d=c(42910),e=c(39948),f=c(23969);async function g(){let a=(0,d.sm)(),b=a.prepare("SELECT key, value FROM key_value WHERE namespace = 'settings'").all(),c={cloudEnabled:!1,stickyRoundRobinLimit:3,requireLogin:!0};for(let a of b)c[a.key]=JSON.parse(a.value);return!c.setupComplete&&process.env.INITIAL_PASSWORD&&(c.setupComplete=!0,c.requireLogin=!0,a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', 'setupComplete', 'true')").run(),a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', 'requireLogin', 'true')").run()),c}async function h(a){let b=(0,d.sm)(),c=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', ?, ?)");return b.transaction(()=>{for(let[b,d]of Object.entries(a))c.run(b,JSON.stringify(d))})(),(0,e.lR)("pre-write"),g()}async function i(){return!0===(await g()).cloudEnabled}async function j(){let a=(0,d.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);let{getDefaultPricing:e}=await c.e(3699).then(c.bind(c,53699)),f=e(),g={};for(let[a,c]of Object.entries(f))if(g[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))g[a][c]=g[a][c]?{...g[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(g[a])for(let[b,d]of Object.entries(c))g[a][b]||(g[a][b]=d);else g[a]={...c};return g}async function k(a,b){let d=await j();if(d[a]?.[b])return d[a][b];let{PROVIDER_ID_TO_ALIAS:e}=await Promise.resolve().then(c.bind(c,23969)),f=e[a];if(f&&d[f])return d[f][b]||null;let g=a?.replace(/-cn$/,"");return g&&g!==a&&d[g]&&d[g][b]||null}async function l(a){let b=(0,d.sm)(),c=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('pricing', ?, ?)"),f=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),g={};for(let a of f)g[a.key]=JSON.parse(a.value);b.transaction(()=>{for(let[b,d]of Object.entries(a))c.run(b,JSON.stringify({...g[b]||{},...d}))})(),(0,e.lR)("pre-write");let h={};for(let a of b.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all())h[a.key]=JSON.parse(a.value);return h}async function m(a,b){let c=(0,d.sm)();if(b){let d=c.prepare("SELECT value FROM key_value WHERE namespace = 'pricing' AND key = ?").get(a);if(d){let e=JSON.parse(d.value);delete e[b],0===Object.keys(e).length?c.prepare("DELETE FROM key_value WHERE namespace = 'pricing' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'pricing' AND key = ?").run(JSON.stringify(e),a)}}else c.prepare("DELETE FROM key_value WHERE namespace = 'pricing' AND key = ?").run(a);(0,e.lR)("pre-write");let f=c.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),g={};for(let a of f)g[a.key]=JSON.parse(a.value);return g}async function n(){return(0,d.sm)().prepare("DELETE FROM key_value WHERE namespace = 'pricing'").run(),(0,e.lR)("pre-write"),{}}let o={global:null,providers:{},combos:{},keys:{}},p=Object.entries(f.PROVIDER_ID_TO_ALIAS).reduce((a,[b,c])=>(c&&(a[c]=b),a[b]=b,a),{});function q(a){return"string"!=typeof a?a:p[a]||a}function r(a){if(!a)return null;if("object"==typeof a&&a.type)return a;if("string"!=typeof a)return null;try{let b=new URL(a);return{type:b.protocol.replace(":","").replace("//","")||"http",host:b.hostname,port:b.port||("socks5:"===b.protocol?"1080":"8080"),username:b.username||"",password:b.password||""}}catch{let b=a.split(":");return{type:"http",host:b[0]||a,port:b[1]||"8080",username:"",password:""}}}async function s(){let a=(0,d.sm)(),b=a.prepare("SELECT key, value FROM key_value WHERE namespace = 'proxyConfig'").all(),c={...o};for(let a of b)c[a.key]=JSON.parse(a.value);let e=!1;if(c.global&&"string"==typeof c.global&&(c.global=r(c.global),e=!0),c.providers)for(let[a,b]of Object.entries(c.providers))"string"==typeof b&&(c.providers[a]=r(b),e=!0);if(e){let b=a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)");void 0!==c.global&&b.run("global",JSON.stringify(c.global)),c.providers&&b.run("providers",JSON.stringify(c.providers))}return c}async function t(a,b){let c=await s();if("global"===a)return c.global||null;let d=c[a+"s"]||c[a]||{};return(b?d[b]:null)||null}async function u(a,b,c){let f=(0,d.sm)(),g=await s();if("global"===a)g.global=c||null,f.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', 'global', ?)").run(JSON.stringify(g.global));else{let d=a+"s";g[d]||(g[d]={}),c?g[d][b]=c:delete g[d][b],f.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)").run(d,JSON.stringify(g[d]))}return(0,e.lR)("pre-write"),g}async function v(a,b){return u(a,b,null)}async function w(a){let b=await s();if(a&&b.keys?.[a])return{proxy:b.keys[a],level:"key",levelId:a};let c=(0,d.sm)(),e=c.prepare("SELECT provider FROM provider_connections WHERE id = ?").get(a);if(e){if(b.combos&&Object.keys(b.combos).length>0){for(let a of c.prepare("SELECT id, data FROM combos").all())if(b.combos[a.id])try{if((JSON.parse(a.data).models||[]).some(a=>(function(a){if(a&&"string"==typeof a.provider)return q(a.provider);let b="string"==typeof a?a:"string"==typeof a?.model?a.model:null;if(!b)return null;let[c]=b.split("/",1);return c?q(c):null})(a)===e.provider))return{proxy:b.combos[a.id],level:"combo",levelId:a.id}}catch{}}if(b.providers?.[e.provider])return{proxy:b.providers[e.provider],level:"provider",levelId:e.provider}}return b.global?{proxy:b.global,level:"global",levelId:null}:{proxy:null,level:"direct",levelId:null}}async function x(a){if(void 0!==a.level)return u(a.level,a.id||null,a.proxy);let b=(0,d.sm)(),c=await s(),f=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)");return b.transaction(()=>{for(let b of(void 0!==a.global&&(c.global=a.global||null,f.run("global",JSON.stringify(c.global))),["providers","combos","keys"]))if(a[b]){for(let[d,e]of(c[b]={...c[b]||{},...a[b]},Object.entries(c[b])))e||delete c[b][d];f.run(b,JSON.stringify(c[b]))}})(),(0,e.lR)("pre-write"),c}},22901:(a,b,c)=>{c.d(b,{S8:()=>L,lR:()=>f.lR,bI:()=>y,Iq:()=>T.Iq,jd:()=>Q,iE:()=>s,i0:()=>B,Lh:()=>T.Lh,CG:()=>S,fv:()=>G,fK:()=>v,op:()=>w,Pc:()=>D,HL:()=>U.HL,NL:()=>K,yg:()=>T.yg,v9:()=>T.v9,PX:()=>T.PX,L:()=>O,Dj:()=>P,Uv:()=>N,uv:()=>J,c:()=>H,OM:()=>E,r4:()=>U.r4,getPricingForModel:()=>U.PS,Mc:()=>r,getProviderConnections:()=>q,Qu:()=>A,Fh:()=>z,ru:()=>U.ru,o4:()=>U.o4,V7:()=>U.mt,Nx:()=>U.isCloudEnabled,eF:()=>f.eF,BD:()=>M,VT:()=>U.VT,yF:()=>U.yF,YD:()=>U.YD,Dp:()=>f.Dp,L9:()=>I,o5:()=>F,PM:()=>U.PM,Jg:()=>T.Jg,oG:()=>R,KJ:()=>U.KJ,rj:()=>u,ho:()=>C,Xx:()=>U.Xx,ek:()=>T.ek});var d=c(94755),e=c(42910),f=c(39948),g=c(55511);let h="aes-256-gcm",i="enc:v1:",j=null;function k(){if(null!==j)return j;let a=process.env.STORAGE_ENCRYPTION_KEY;return a?j=(0,g.scryptSync)(a,"omniroute-field-encryption-v1",32):null}function l(){return!!process.env.STORAGE_ENCRYPTION_KEY}function m(a){if(!a||"string"!=typeof a)return a;let b=k();if(!b||a.startsWith(i))return a;let c=(0,g.randomBytes)(16),d=(0,g.createCipheriv)(h,b,c),e=d.update(a,"utf8","hex");e+=d.final("hex");let f=d.getAuthTag().toString("hex");return`${i}${c.toString("hex")}:${e}:${f}`}function n(a){if(!a||"string"!=typeof a||!a.startsWith(i))return a;let b=k();if(!b)return console.warn("[Encryption] Found encrypted data but STORAGE_ENCRYPTION_KEY is not set. Cannot decrypt."),a;let c=a.slice(i.length).split(":");if(3!==c.length)return console.error("[Encryption] Malformed encrypted value"),a;let[d,e,f]=c;try{let a=Buffer.from(d,"hex"),c=Buffer.from(f,"hex"),i=(0,g.createDecipheriv)(h,b,a);i.setAuthTag(c);let j=i.update(e,"hex","utf8");return j+=i.final("utf8")}catch(b){return console.error("[Encryption] Decryption failed:",b instanceof Error?b.message:String(b)),a}}function o(a){return l()&&(a.apiKey&&(a.apiKey=m(a.apiKey)),a.accessToken&&(a.accessToken=m(a.accessToken)),a.refreshToken&&(a.refreshToken=m(a.refreshToken)),a.idToken&&(a.idToken=m(a.idToken))),a}function p(a){return a&&l()?{...a,apiKey:n(a.apiKey),accessToken:n(a.accessToken),refreshToken:n(a.refreshToken),idToken:n(a.idToken)}:a}async function q(a={}){let b=(0,e.sm)(),c="SELECT * FROM provider_connections",d=[],f={};return a.provider&&(d.push("provider = @provider"),f.provider=a.provider),void 0!==a.isActive&&(d.push("is_active = @isActive"),f.isActive=+!!a.isActive),d.length>0&&(c+=" WHERE "+d.join(" AND ")),c+=" ORDER BY priority ASC, updated_at DESC",b.prepare(c).all(f).map(a=>p((0,e.G6)((0,e.kB)(a))))}async function r(a){let b=(0,e.sm)().prepare("SELECT * FROM provider_connections WHERE id = ?").get(a);return b?p((0,e.G6)((0,e.kB)(b))):null}async function s(a){var b,c;let g=(0,e.sm)(),h=new Date().toISOString(),i=null;if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.workspaceId;i="codex"===a.provider&&b?g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND json_extract(provider_specific_data, '$.workspaceId') = ?").get(a.provider,b):g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND email = ?").get(a.provider,a.email)}else"apikey"===a.authType&&a.name&&(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'apikey' AND name = ?").get(a.provider,a.name));if(i){let b={...(0,e.kB)(i),...a,updatedAt:h};return t(g,i.id,b),(0,f.lR)("pre-write"),(0,e.G6)(b)}let j=a.name||null;if(!j&&"oauth"===a.authType)if(a.email)j=a.email;else{let b=g.prepare("SELECT COUNT(*) as cnt FROM provider_connections WHERE provider = ?").get(a.provider)?.cnt||0;j=`Account ${b+1}`}let k=a.priority;if(!k){let b=g.prepare("SELECT MAX(priority) as maxP FROM provider_connections WHERE provider = ?").get(a.provider);k=(b?.maxP||0)+1}let l={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:j,priority:k,isActive:void 0===a.isActive||a.isActive,createdAt:h,updatedAt:h};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","idToken","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","lastErrorType","lastErrorSource","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","rateLimitProtection"])void 0!==a[b]&&null!==a[b]&&(l[b]=a[b]);return a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(l.providerSpecificData=a.providerSpecificData),b=g,c=o({...l}),b.prepare(`
|
|
1
|
+
"use strict";exports.id=2901,exports.ids=[2901],exports.modules={9679:(a,b,c)=>{c.d(b,{HL:()=>v,KJ:()=>l,PM:()=>x,PS:()=>k,VT:()=>n,Xx:()=>h,YD:()=>w,isCloudEnabled:()=>i,mt:()=>g,o4:()=>t,r4:()=>j,ru:()=>s,yF:()=>m});var d=c(42910),e=c(39948),f=c(23969);async function g(){let a=(0,d.sm)(),b=a.prepare("SELECT key, value FROM key_value WHERE namespace = 'settings'").all(),c={cloudEnabled:!1,stickyRoundRobinLimit:3,requireLogin:!0};for(let a of b)c[a.key]=JSON.parse(a.value);return!c.setupComplete&&process.env.INITIAL_PASSWORD&&(c.setupComplete=!0,c.requireLogin=!0,a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', 'setupComplete', 'true')").run(),a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', 'requireLogin', 'true')").run()),c}async function h(a){let b=(0,d.sm)(),c=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', ?, ?)");return b.transaction(()=>{for(let[b,d]of Object.entries(a))c.run(b,JSON.stringify(d))})(),(0,e.lR)("pre-write"),g()}async function i(){return!0===(await g()).cloudEnabled}async function j(){let a=(0,d.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);let{getDefaultPricing:e}=await c.e(3699).then(c.bind(c,53699)),f=e(),g={};for(let[a,c]of Object.entries(f))if(g[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))g[a][c]=g[a][c]?{...g[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(g[a])for(let[b,d]of Object.entries(c))g[a][b]||(g[a][b]=d);else g[a]={...c};return g}async function k(a,b){let d=await j();if(d[a]?.[b])return d[a][b];let{PROVIDER_ID_TO_ALIAS:e}=await Promise.resolve().then(c.bind(c,23969)),f=e[a];if(f&&d[f])return d[f][b]||null;let g=a?.replace(/-cn$/,"");return g&&g!==a&&d[g]&&d[g][b]||null}async function l(a){let b=(0,d.sm)(),c=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('pricing', ?, ?)"),f=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),g={};for(let a of f)g[a.key]=JSON.parse(a.value);b.transaction(()=>{for(let[b,d]of Object.entries(a))c.run(b,JSON.stringify({...g[b]||{},...d}))})(),(0,e.lR)("pre-write");let h={};for(let a of b.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all())h[a.key]=JSON.parse(a.value);return h}async function m(a,b){let c=(0,d.sm)();if(b){let d=c.prepare("SELECT value FROM key_value WHERE namespace = 'pricing' AND key = ?").get(a);if(d){let e=JSON.parse(d.value);delete e[b],0===Object.keys(e).length?c.prepare("DELETE FROM key_value WHERE namespace = 'pricing' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'pricing' AND key = ?").run(JSON.stringify(e),a)}}else c.prepare("DELETE FROM key_value WHERE namespace = 'pricing' AND key = ?").run(a);(0,e.lR)("pre-write");let f=c.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),g={};for(let a of f)g[a.key]=JSON.parse(a.value);return g}async function n(){return(0,d.sm)().prepare("DELETE FROM key_value WHERE namespace = 'pricing'").run(),(0,e.lR)("pre-write"),{}}let o={global:null,providers:{},combos:{},keys:{}},p=Object.entries(f.PROVIDER_ID_TO_ALIAS).reduce((a,[b,c])=>(c&&(a[c]=b),a[b]=b,a),{});function q(a){return"string"!=typeof a?a:p[a]||a}function r(a){if(!a)return null;if("object"==typeof a&&a.type)return a;if("string"!=typeof a)return null;try{let b=new URL(a);return{type:b.protocol.replace(":","").replace("//","")||"http",host:b.hostname,port:b.port||("socks5:"===b.protocol?"1080":"8080"),username:b.username||"",password:b.password||""}}catch{let b=a.split(":");return{type:"http",host:b[0]||a,port:b[1]||"8080",username:"",password:""}}}async function s(){let a=(0,d.sm)(),b=a.prepare("SELECT key, value FROM key_value WHERE namespace = 'proxyConfig'").all(),c={...o};for(let a of b)c[a.key]=JSON.parse(a.value);let e=!1;if(c.global&&"string"==typeof c.global&&(c.global=r(c.global),e=!0),c.providers)for(let[a,b]of Object.entries(c.providers))"string"==typeof b&&(c.providers[a]=r(b),e=!0);if(e){let b=a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)");void 0!==c.global&&b.run("global",JSON.stringify(c.global)),c.providers&&b.run("providers",JSON.stringify(c.providers))}return c}async function t(a,b){let c=await s();if("global"===a)return c.global||null;let d=c[a+"s"]||c[a]||{};return(b?d[b]:null)||null}async function u(a,b,c){let f=(0,d.sm)(),g=await s();if("global"===a)g.global=c||null,f.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', 'global', ?)").run(JSON.stringify(g.global));else{let d=a+"s";g[d]||(g[d]={}),c?g[d][b]=c:delete g[d][b],f.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)").run(d,JSON.stringify(g[d]))}return(0,e.lR)("pre-write"),g}async function v(a,b){return u(a,b,null)}async function w(a){let b=await s();if(a&&b.keys?.[a])return{proxy:b.keys[a],level:"key",levelId:a};let c=(0,d.sm)(),e=c.prepare("SELECT provider FROM provider_connections WHERE id = ?").get(a);if(e){if(b.combos&&Object.keys(b.combos).length>0){for(let a of c.prepare("SELECT id, data FROM combos").all())if(b.combos[a.id])try{if((JSON.parse(a.data).models||[]).some(a=>(function(a){if(a&&"string"==typeof a.provider)return q(a.provider);let b="string"==typeof a?a:"string"==typeof a?.model?a.model:null;if(!b)return null;let[c]=b.split("/",1);return c?q(c):null})(a)===e.provider))return{proxy:b.combos[a.id],level:"combo",levelId:a.id}}catch{}}if(b.providers?.[e.provider])return{proxy:b.providers[e.provider],level:"provider",levelId:e.provider}}return b.global?{proxy:b.global,level:"global",levelId:null}:{proxy:null,level:"direct",levelId:null}}async function x(a){if(void 0!==a.level)return u(a.level,a.id||null,a.proxy);let b=(0,d.sm)(),c=await s(),f=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)");return b.transaction(()=>{for(let b of(void 0!==a.global&&(c.global=a.global||null,f.run("global",JSON.stringify(c.global))),["providers","combos","keys"]))if(a[b]){for(let[d,e]of(c[b]={...c[b]||{},...a[b]},Object.entries(c[b])))e||delete c[b][d];f.run(b,JSON.stringify(c[b]))}})(),(0,e.lR)("pre-write"),c}},22901:(a,b,c)=>{c.d(b,{S8:()=>L,lR:()=>f.lR,bI:()=>y,Iq:()=>T.Iq,jd:()=>Q,iE:()=>s,i0:()=>B,Lh:()=>T.Lh,CG:()=>S,fv:()=>G,fK:()=>v,op:()=>w,Pc:()=>D,HL:()=>U.HL,NL:()=>K,yg:()=>T.yg,v9:()=>T.v9,PX:()=>T.PX,L:()=>O,Dj:()=>P,Uv:()=>N,uv:()=>J,c:()=>H,OM:()=>E,r4:()=>U.r4,getPricingForModel:()=>U.PS,Mc:()=>r,getProviderConnections:()=>q,Qu:()=>A,Fh:()=>z,ru:()=>U.ru,o4:()=>U.o4,V7:()=>U.mt,Nx:()=>U.isCloudEnabled,eF:()=>f.eF,BD:()=>M,VT:()=>U.VT,yF:()=>U.yF,YD:()=>U.YD,Dp:()=>f.Dp,L9:()=>I,o5:()=>F,PM:()=>U.PM,Jg:()=>T.Jg,oG:()=>R,KJ:()=>U.KJ,rj:()=>u,ho:()=>C,Xx:()=>U.Xx,ek:()=>T.validateApiKey});var d=c(94755),e=c(42910),f=c(39948),g=c(55511);let h="aes-256-gcm",i="enc:v1:",j=null;function k(){if(null!==j)return j;let a=process.env.STORAGE_ENCRYPTION_KEY;return a?j=(0,g.scryptSync)(a,"omniroute-field-encryption-v1",32):null}function l(){return!!process.env.STORAGE_ENCRYPTION_KEY}function m(a){if(!a||"string"!=typeof a)return a;let b=k();if(!b||a.startsWith(i))return a;let c=(0,g.randomBytes)(16),d=(0,g.createCipheriv)(h,b,c),e=d.update(a,"utf8","hex");e+=d.final("hex");let f=d.getAuthTag().toString("hex");return`${i}${c.toString("hex")}:${e}:${f}`}function n(a){if(!a||"string"!=typeof a||!a.startsWith(i))return a;let b=k();if(!b)return console.warn("[Encryption] Found encrypted data but STORAGE_ENCRYPTION_KEY is not set. Cannot decrypt."),a;let c=a.slice(i.length).split(":");if(3!==c.length)return console.error("[Encryption] Malformed encrypted value"),a;let[d,e,f]=c;try{let a=Buffer.from(d,"hex"),c=Buffer.from(f,"hex"),i=(0,g.createDecipheriv)(h,b,a);i.setAuthTag(c);let j=i.update(e,"hex","utf8");return j+=i.final("utf8")}catch(b){return console.error("[Encryption] Decryption failed:",b instanceof Error?b.message:String(b)),a}}function o(a){return l()&&(a.apiKey&&(a.apiKey=m(a.apiKey)),a.accessToken&&(a.accessToken=m(a.accessToken)),a.refreshToken&&(a.refreshToken=m(a.refreshToken)),a.idToken&&(a.idToken=m(a.idToken))),a}function p(a){return a&&l()?{...a,apiKey:n(a.apiKey),accessToken:n(a.accessToken),refreshToken:n(a.refreshToken),idToken:n(a.idToken)}:a}async function q(a={}){let b=(0,e.sm)(),c="SELECT * FROM provider_connections",d=[],f={};return a.provider&&(d.push("provider = @provider"),f.provider=a.provider),void 0!==a.isActive&&(d.push("is_active = @isActive"),f.isActive=+!!a.isActive),d.length>0&&(c+=" WHERE "+d.join(" AND ")),c+=" ORDER BY priority ASC, updated_at DESC",b.prepare(c).all(f).map(a=>p((0,e.G6)((0,e.kB)(a))))}async function r(a){let b=(0,e.sm)().prepare("SELECT * FROM provider_connections WHERE id = ?").get(a);return b?p((0,e.G6)((0,e.kB)(b))):null}async function s(a){var b,c;let g=(0,e.sm)(),h=new Date().toISOString(),i=null;if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.workspaceId;i="codex"===a.provider&&b?g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND json_extract(provider_specific_data, '$.workspaceId') = ?").get(a.provider,b):g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND email = ?").get(a.provider,a.email)}else"apikey"===a.authType&&a.name&&(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'apikey' AND name = ?").get(a.provider,a.name));if(i){let b={...(0,e.kB)(i),...a,updatedAt:h};return t(g,i.id,b),(0,f.lR)("pre-write"),(0,e.G6)(b)}let j=a.name||null;if(!j&&"oauth"===a.authType)if(a.email)j=a.email;else{let b=g.prepare("SELECT COUNT(*) as cnt FROM provider_connections WHERE provider = ?").get(a.provider)?.cnt||0;j=`Account ${b+1}`}let k=a.priority;if(!k){let b=g.prepare("SELECT MAX(priority) as maxP FROM provider_connections WHERE provider = ?").get(a.provider);k=(b?.maxP||0)+1}let l={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:j,priority:k,isActive:void 0===a.isActive||a.isActive,createdAt:h,updatedAt:h};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","idToken","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","lastErrorType","lastErrorSource","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","rateLimitProtection"])void 0!==a[b]&&null!==a[b]&&(l[b]=a[b]);return a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(l.providerSpecificData=a.providerSpecificData),b=g,c=o({...l}),b.prepare(`
|
|
2
2
|
INSERT INTO provider_connections (
|
|
3
3
|
id, provider, auth_type, name, email, priority, is_active,
|
|
4
4
|
access_token, refresh_token, expires_at, token_expires_at,
|
|
@@ -42,4 +42,4 @@
|
|
|
42
42
|
UPDATE provider_nodes SET type = @type, name = @name, prefix = @prefix,
|
|
43
43
|
api_type = @apiType, base_url = @baseUrl, updated_at = @updatedAt
|
|
44
44
|
WHERE id = @id
|
|
45
|
-
`).run({id:a,type:g.type,name:g.name,prefix:g.prefix||null,apiType:g.apiType||null,baseUrl:g.baseUrl||null,updatedAt:g.updatedAt}),(0,f.lR)("pre-write"),g}async function D(a){let b=(0,e.sm)(),c=b.prepare("SELECT * FROM provider_nodes WHERE id = ?").get(a);return c?(b.prepare("DELETE FROM provider_nodes WHERE id = ?").run(a),(0,f.lR)("pre-write"),(0,e.kB)(c)):null}async function E(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'modelAliases'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function F(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('modelAliases', ?, ?)").run(a,JSON.stringify(b)),(0,f.lR)("pre-write")}async function G(a){(0,e.sm)().prepare("DELETE FROM key_value WHERE namespace = 'modelAliases' AND key = ?").run(a),(0,f.lR)("pre-write")}async function H(a){let b=(0,e.sm)();if(a){let c=b.prepare("SELECT value FROM key_value WHERE namespace = 'mitmAlias' AND key = ?").get(a);return c?JSON.parse(c.value):{}}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'mitmAlias'").all(),d={};for(let a of c)d[a.key]=JSON.parse(a.value);return d}async function I(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('mitmAlias', ?, ?)").run(a,JSON.stringify(b||{})),(0,f.lR)("pre-write")}async function J(a){let b=(0,e.sm)();if(a){let c=b.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);return c?JSON.parse(c.value):[]}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),d={};for(let a of c)d[a.key]=JSON.parse(a.value);return d}async function K(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function L(a,b,c,d="manual"){let g=(0,e.sm)(),h=g.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a),i=h?JSON.parse(h.value):[],j=i.find(a=>a.id===b);if(j)return j;let k={id:b,name:c||b,source:d};return i.push(k),g.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('customModels', ?, ?)").run(a,JSON.stringify(i)),(0,f.lR)("pre-write"),k}async function M(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);if(!d)return!1;let g=JSON.parse(d.value),h=g.length,i=g.filter(a=>a.id!==b);return i.length!==h&&(0===i.length?c.prepare("DELETE FROM key_value WHERE namespace = 'customModels' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'customModels' AND key = ?").run(JSON.stringify(i),a),(0,f.lR)("pre-write"),!0)}async function N(){return(0,e.sm)().prepare("SELECT data FROM combos ORDER BY name").all().map(a=>JSON.parse(a.data))}async function O(a){let b=(0,e.sm)().prepare("SELECT data FROM combos WHERE id = ?").get(a);return b?JSON.parse(b.data):null}async function P(a){let b=(0,e.sm)().prepare("SELECT data FROM combos WHERE name = ?").get(a);return b?JSON.parse(b.data):null}async function Q(a){let b=(0,e.sm)(),c=new Date().toISOString(),g={id:(0,d.A)(),name:a.name,models:a.models||[],strategy:a.strategy||"priority",config:a.config||{},createdAt:c,updatedAt:c};return b.prepare("INSERT INTO combos (id, name, data, created_at, updated_at) VALUES (?, ?, ?, ?, ?)").run(g.id,g.name,JSON.stringify(g),c,c),(0,f.lR)("pre-write"),g}async function R(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT data FROM combos WHERE id = ?").get(a);if(!d)return null;let g={...JSON.parse(d.data),...b,updatedAt:new Date().toISOString()};return c.prepare("UPDATE combos SET name = ?, data = ?, updated_at = ? WHERE id = ?").run(g.name,JSON.stringify(g),g.updatedAt,a),(0,f.lR)("pre-write"),g}async function S(a){return 0!==(0,e.sm)().prepare("DELETE FROM combos WHERE id = ?").run(a).changes&&((0,f.lR)("pre-write"),!0)}var T=c(80500),U=c(9679)},23969:(a,b,c)=>{c.d(b,{PROVIDER_ID_TO_ALIAS:()=>f,ux:()=>g,vq:()=>e});var d=c(83596);let e=(0,d.oD)(),f=(0,d.Qv)();function g(a,b){let c=e[a];if(!c)return null;let d=c.find(a=>a.id===b);return d?.targetFormat||null}},39948:(a,b,c)=>{c.d(b,{Dp:()=>o,eF:()=>n,lR:()=>m});var d=c(87550),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(42910),k=c(80500);let l=0;function m(a="auto"){try{if(j.I8||j.m1||!j.oh||!i().existsSync(j.oh))return null;let b=i().statSync(j.oh);if(b.size<4096)return console.warn(`[DB] Backup SKIPPED — DB too small (${b.size}B)`),null;let c=Date.now();if("manual"!==a&&"pre-restore"!==a&&c-l<36e5)return null;l=c;let d=j.NJ||g().join(j.nJ,"db_backups");i().existsSync(d)||i().mkdirSync(d,{recursive:!0});let e=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();if(e.length>0){let a=e[e.length-1],c=i().statSync(g().join(d,a));if(c.size>4096&&b.size<.5*c.size)return console.warn(`[DB] Backup SKIPPED — DB shrank from ${c.size}B to ${b.size}B`),null}let f=new Date().toISOString().replace(/[:.]/g,"-"),h=g().join(d,`db_${f}_${a}.sqlite`);(0,j.sm)().backup(h).then(()=>{console.log(`[DB] Backup created: ${h} (${b.size} bytes)`)}).catch(a=>{console.error("[DB] Backup failed:",a.message)});let k=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();for(;k.length>20;){let a=0,b=1/0;for(let c=0;c<k.length-1;c++)try{let e=i().statSync(g().join(d,k[c]));e.size<b&&(b=e.size,a=c)}catch{a=c;break}try{i().unlinkSync(g().join(d,k[a]))}catch{}k.splice(a,1)}return{filename:g().basename(h),size:b.size}}catch(a){return console.error("[DB] Backup failed:",a.message),null}}async function n(){let a=j.NJ||g().join(j.nJ,"db_backups");try{if(!i().existsSync(a))return[];return i().readdirSync(a).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort().reverse().map(b=>{let c=g().join(a,b),d=i().statSync(c),f=b.match(/^db_(.+?)_([^.]+)\.sqlite$/),h=f?f[2]:"unknown",j=0;try{let a=new(e())(c,{readonly:!0}),b=a.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get();j=b?.cnt||0,a.close()}catch{}return{id:b,filename:b,createdAt:d.mtime.toISOString(),size:d.size,reason:h,connectionCount:j}})}catch{return[]}}async function o(a){let b=j.NJ||g().join(j.nJ,"db_backups"),c=g().join(b,a);if(!a.startsWith("db_")||!a.endsWith(".sqlite"))throw Error("Invalid backup ID");if(!i().existsSync(c))throw Error(`Backup not found: ${a}`);try{let a=new(e())(c,{readonly:!0}),b=a.pragma("integrity_check");if(a.close(),b[0]?.integrity_check!=="ok")throw Error("Backup integrity check failed")}catch(a){if("Backup integrity check failed"===a.message)throw a;throw Error(`Backup file is corrupt: ${a.message}`)}for(let a of(l=0,m("pre-restore"),(0,j.jX)(),(0,k.AH)(),[j.oh,`${j.oh}-wal`,`${j.oh}-shm`,`${j.oh}-journal`]))a&&i().existsSync(a)&&i().unlinkSync(a);i().copyFileSync(c,j.oh);let d=(0,j.sm)(),f=d.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get()?.cnt||0,h=d.prepare("SELECT COUNT(*) as cnt FROM provider_nodes").get()?.cnt||0,n=d.prepare("SELECT COUNT(*) as cnt FROM combos").get()?.cnt||0,o=d.prepare("SELECT COUNT(*) as cnt FROM api_keys").get()?.cnt||0;return console.log(`[DB] Restored backup: ${a} (${f} connections)`),{restored:!0,backupId:a,connectionCount:f,nodeCount:h,comboCount:n,apiKeyCount:o}}},80500:(a,b,c)=>{c.d(b,{AH:()=>E,Iq:()=>z,Jg:()=>A,Lh:()=>B,PX:()=>w,ek:()=>C,v9:()=>D,yg:()=>x});var d=c(94755),e=c(42910),f=c(39948);let g=!1,h=new Map,i=new Map,j=new Map,k=new Map,l=null,m=null,n=null,o=null,p=null,q=null,r=null;function s(){h.clear(),i.clear(),k.clear()}function t(a){if(a.size>1e3){let b=Math.floor(200),c=0;for(let d of a.keys()){if(c++>=b)break;a.delete(d)}}}function u(a){if(!g)try{let b=a.prepare("PRAGMA table_info(api_keys)").all();new Set(b.map(a=>a.name)).has("allowed_models")||(a.exec("ALTER TABLE api_keys ADD COLUMN allowed_models TEXT"),console.log("[DB] Added api_keys.allowed_models column")),g=!0}catch(a){console.warn("[DB] Failed to verify api_keys schema:",a.message)}}function v(a){return l||(l=a.prepare("SELECT * FROM api_keys ORDER BY created_at"),m=a.prepare("SELECT * FROM api_keys WHERE id = ?"),n=a.prepare("SELECT 1 FROM api_keys WHERE key = ?"),o=a.prepare("SELECT id, name, machine_id, allowed_models FROM api_keys WHERE key = ?"),p=a.prepare("INSERT INTO api_keys (id, name, key, machine_id, allowed_models, created_at) VALUES (?, ?, ?, ?, ?, ?)"),q=a.prepare("UPDATE api_keys SET allowed_models = ? WHERE id = ?"),r=a.prepare("DELETE FROM api_keys WHERE id = ?")),{getAllKeys:l,getKeyById:m,validateKey:n,getKeyMetadata:o,insertKey:p,updatePermissions:q,deleteKey:r}}async function w(){let a=(0,e.sm)();return u(a),v(a).getAllKeys.all().map(a=>{let b=(0,e.kB)(a);return b.allowedModels=y(b.allowedModels),b})}async function x(a){let b=(0,e.sm)();u(b);let c=v(b).getKeyById.get(a);if(!c)return null;let d=(0,e.kB)(c);return d.allowedModels=y(d.allowedModels),d}function y(a){if(!a||"string"!=typeof a||""===a.trim())return[];try{let b=JSON.parse(a);return Array.isArray(b)?b:[]}catch{return[]}}async function z(a,b){if(!b)throw Error("machineId is required");let g=(0,e.sm)();u(g);let h=new Date().toISOString(),{generateApiKeyWithMachine:i}=await c.e(2286).then(c.bind(c,62286)),j=i(b),k={id:(0,d.A)(),name:a,key:j.key,machineId:b,allowedModels:[],createdAt:h};return v(g).insertKey.run(k.id,k.name,k.key,k.machineId,"[]",k.createdAt),(0,f.lR)("pre-write"),k}async function A(a,b){let c=(0,e.sm)();u(c);let d=JSON.stringify(b||[]);return 0!==v(c).updatePermissions.run(d,a).changes&&(s(),(0,f.lR)("pre-write"),!0)}async function B(a){return 0!==v((0,e.sm)()).deleteKey.run(a).changes&&(s(),(0,f.lR)("pre-write"),!0)}async function C(a){if(!a||"string"!=typeof a)return!1;let b=Date.now(),c=h.get(a);if(c&&b-c.timestamp<6e4)return c.valid;let d=!!v((0,e.sm)()).validateKey.get(a);return d&&(t(h),h.set(a,{valid:!0,timestamp:b})),d}async function D(a){if(!a||"string"!=typeof a)return null;let b=Date.now(),c=i.get(a);if(c&&b-c.timestamp<6e4)return c.metadata;let d=(0,e.sm)();u(d);let f=v(d).getKeyMetadata.get(a);if(!f)return null;let g={id:f.id,name:f.name,machineId:f.machine_id,allowedModels:y(f.allowed_models)};return t(i),i.set(a,{metadata:g,timestamp:b}),g}function E(){l=null,m=null,n=null,o=null,p=null,q=null,r=null,g=!1,s(),k.clear(),j.clear()}}};
|
|
45
|
+
`).run({id:a,type:g.type,name:g.name,prefix:g.prefix||null,apiType:g.apiType||null,baseUrl:g.baseUrl||null,updatedAt:g.updatedAt}),(0,f.lR)("pre-write"),g}async function D(a){let b=(0,e.sm)(),c=b.prepare("SELECT * FROM provider_nodes WHERE id = ?").get(a);return c?(b.prepare("DELETE FROM provider_nodes WHERE id = ?").run(a),(0,f.lR)("pre-write"),(0,e.kB)(c)):null}async function E(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'modelAliases'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function F(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('modelAliases', ?, ?)").run(a,JSON.stringify(b)),(0,f.lR)("pre-write")}async function G(a){(0,e.sm)().prepare("DELETE FROM key_value WHERE namespace = 'modelAliases' AND key = ?").run(a),(0,f.lR)("pre-write")}async function H(a){let b=(0,e.sm)();if(a){let c=b.prepare("SELECT value FROM key_value WHERE namespace = 'mitmAlias' AND key = ?").get(a);return c?JSON.parse(c.value):{}}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'mitmAlias'").all(),d={};for(let a of c)d[a.key]=JSON.parse(a.value);return d}async function I(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('mitmAlias', ?, ?)").run(a,JSON.stringify(b||{})),(0,f.lR)("pre-write")}async function J(a){let b=(0,e.sm)();if(a){let c=b.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);return c?JSON.parse(c.value):[]}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),d={};for(let a of c)d[a.key]=JSON.parse(a.value);return d}async function K(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function L(a,b,c,d="manual"){let g=(0,e.sm)(),h=g.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a),i=h?JSON.parse(h.value):[],j=i.find(a=>a.id===b);if(j)return j;let k={id:b,name:c||b,source:d};return i.push(k),g.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('customModels', ?, ?)").run(a,JSON.stringify(i)),(0,f.lR)("pre-write"),k}async function M(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);if(!d)return!1;let g=JSON.parse(d.value),h=g.length,i=g.filter(a=>a.id!==b);return i.length!==h&&(0===i.length?c.prepare("DELETE FROM key_value WHERE namespace = 'customModels' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'customModels' AND key = ?").run(JSON.stringify(i),a),(0,f.lR)("pre-write"),!0)}async function N(){return(0,e.sm)().prepare("SELECT data FROM combos ORDER BY name").all().map(a=>JSON.parse(a.data))}async function O(a){let b=(0,e.sm)().prepare("SELECT data FROM combos WHERE id = ?").get(a);return b?JSON.parse(b.data):null}async function P(a){let b=(0,e.sm)().prepare("SELECT data FROM combos WHERE name = ?").get(a);return b?JSON.parse(b.data):null}async function Q(a){let b=(0,e.sm)(),c=new Date().toISOString(),g={id:(0,d.A)(),name:a.name,models:a.models||[],strategy:a.strategy||"priority",config:a.config||{},createdAt:c,updatedAt:c};return b.prepare("INSERT INTO combos (id, name, data, created_at, updated_at) VALUES (?, ?, ?, ?, ?)").run(g.id,g.name,JSON.stringify(g),c,c),(0,f.lR)("pre-write"),g}async function R(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT data FROM combos WHERE id = ?").get(a);if(!d)return null;let g={...JSON.parse(d.data),...b,updatedAt:new Date().toISOString()};return c.prepare("UPDATE combos SET name = ?, data = ?, updated_at = ? WHERE id = ?").run(g.name,JSON.stringify(g),g.updatedAt,a),(0,f.lR)("pre-write"),g}async function S(a){return 0!==(0,e.sm)().prepare("DELETE FROM combos WHERE id = ?").run(a).changes&&((0,f.lR)("pre-write"),!0)}var T=c(80500),U=c(9679)},23969:(a,b,c)=>{c.d(b,{PROVIDER_ID_TO_ALIAS:()=>f,ux:()=>g,vq:()=>e});var d=c(83596);let e=(0,d.oD)(),f=(0,d.Qv)();function g(a,b){let c=e[a];if(!c)return null;let d=c.find(a=>a.id===b);return d?.targetFormat||null}},39948:(a,b,c)=>{c.d(b,{Dp:()=>o,eF:()=>n,lR:()=>m});var d=c(87550),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(42910),k=c(80500);let l=0;function m(a="auto"){try{if(j.I8||j.m1||!j.oh||!i().existsSync(j.oh))return null;let b=i().statSync(j.oh);if(b.size<4096)return console.warn(`[DB] Backup SKIPPED — DB too small (${b.size}B)`),null;let c=Date.now();if("manual"!==a&&"pre-restore"!==a&&c-l<36e5)return null;l=c;let d=j.NJ||g().join(j.nJ,"db_backups");i().existsSync(d)||i().mkdirSync(d,{recursive:!0});let e=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();if(e.length>0){let a=e[e.length-1],c=i().statSync(g().join(d,a));if(c.size>4096&&b.size<.5*c.size)return console.warn(`[DB] Backup SKIPPED — DB shrank from ${c.size}B to ${b.size}B`),null}let f=new Date().toISOString().replace(/[:.]/g,"-"),h=g().join(d,`db_${f}_${a}.sqlite`);(0,j.sm)().backup(h).then(()=>{console.log(`[DB] Backup created: ${h} (${b.size} bytes)`)}).catch(a=>{console.error("[DB] Backup failed:",a.message)});let k=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();for(;k.length>20;){let a=0,b=1/0;for(let c=0;c<k.length-1;c++)try{let e=i().statSync(g().join(d,k[c]));e.size<b&&(b=e.size,a=c)}catch{a=c;break}try{i().unlinkSync(g().join(d,k[a]))}catch{}k.splice(a,1)}return{filename:g().basename(h),size:b.size}}catch(a){return console.error("[DB] Backup failed:",a.message),null}}async function n(){let a=j.NJ||g().join(j.nJ,"db_backups");try{if(!i().existsSync(a))return[];return i().readdirSync(a).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort().reverse().map(b=>{let c=g().join(a,b),d=i().statSync(c),f=b.match(/^db_(.+?)_([^.]+)\.sqlite$/),h=f?f[2]:"unknown",j=0;try{let a=new(e())(c,{readonly:!0}),b=a.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get();j=b?.cnt||0,a.close()}catch{}return{id:b,filename:b,createdAt:d.mtime.toISOString(),size:d.size,reason:h,connectionCount:j}})}catch{return[]}}async function o(a){let b=j.NJ||g().join(j.nJ,"db_backups"),c=g().join(b,a);if(!a.startsWith("db_")||!a.endsWith(".sqlite"))throw Error("Invalid backup ID");if(!i().existsSync(c))throw Error(`Backup not found: ${a}`);try{let a=new(e())(c,{readonly:!0}),b=a.pragma("integrity_check");if(a.close(),b[0]?.integrity_check!=="ok")throw Error("Backup integrity check failed")}catch(a){if("Backup integrity check failed"===a.message)throw a;throw Error(`Backup file is corrupt: ${a.message}`)}for(let a of(l=0,m("pre-restore"),(0,j.jX)(),(0,k.AH)(),[j.oh,`${j.oh}-wal`,`${j.oh}-shm`,`${j.oh}-journal`]))a&&i().existsSync(a)&&i().unlinkSync(a);i().copyFileSync(c,j.oh);let d=(0,j.sm)(),f=d.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get()?.cnt||0,h=d.prepare("SELECT COUNT(*) as cnt FROM provider_nodes").get()?.cnt||0,n=d.prepare("SELECT COUNT(*) as cnt FROM combos").get()?.cnt||0,o=d.prepare("SELECT COUNT(*) as cnt FROM api_keys").get()?.cnt||0;return console.log(`[DB] Restored backup: ${a} (${f} connections)`),{restored:!0,backupId:a,connectionCount:f,nodeCount:h,comboCount:n,apiKeyCount:o}}},80500:(a,b,c)=>{c.d(b,{AH:()=>E,Iq:()=>z,Jg:()=>A,Lh:()=>B,PX:()=>w,v9:()=>D,validateApiKey:()=>C,yg:()=>x});var d=c(94755),e=c(42910),f=c(39948);let g=!1,h=new Map,i=new Map,j=new Map,k=new Map,l=null,m=null,n=null,o=null,p=null,q=null,r=null;function s(){h.clear(),i.clear(),k.clear()}function t(a){if(a.size>1e3){let b=Math.floor(200),c=0;for(let d of a.keys()){if(c++>=b)break;a.delete(d)}}}function u(a){if(!g)try{let b=a.prepare("PRAGMA table_info(api_keys)").all();new Set(b.map(a=>a.name)).has("allowed_models")||(a.exec("ALTER TABLE api_keys ADD COLUMN allowed_models TEXT"),console.log("[DB] Added api_keys.allowed_models column")),g=!0}catch(a){console.warn("[DB] Failed to verify api_keys schema:",a.message)}}function v(a){return l||(l=a.prepare("SELECT * FROM api_keys ORDER BY created_at"),m=a.prepare("SELECT * FROM api_keys WHERE id = ?"),n=a.prepare("SELECT 1 FROM api_keys WHERE key = ?"),o=a.prepare("SELECT id, name, machine_id, allowed_models FROM api_keys WHERE key = ?"),p=a.prepare("INSERT INTO api_keys (id, name, key, machine_id, allowed_models, created_at) VALUES (?, ?, ?, ?, ?, ?)"),q=a.prepare("UPDATE api_keys SET allowed_models = ? WHERE id = ?"),r=a.prepare("DELETE FROM api_keys WHERE id = ?")),{getAllKeys:l,getKeyById:m,validateKey:n,getKeyMetadata:o,insertKey:p,updatePermissions:q,deleteKey:r}}async function w(){let a=(0,e.sm)();return u(a),v(a).getAllKeys.all().map(a=>{let b=(0,e.kB)(a);return b.allowedModels=y(b.allowedModels),b})}async function x(a){let b=(0,e.sm)();u(b);let c=v(b).getKeyById.get(a);if(!c)return null;let d=(0,e.kB)(c);return d.allowedModels=y(d.allowedModels),d}function y(a){if(!a||"string"!=typeof a||""===a.trim())return[];try{let b=JSON.parse(a);return Array.isArray(b)?b:[]}catch{return[]}}async function z(a,b){if(!b)throw Error("machineId is required");let g=(0,e.sm)();u(g);let h=new Date().toISOString(),{generateApiKeyWithMachine:i}=await c.e(2286).then(c.bind(c,62286)),j=i(b),k={id:(0,d.A)(),name:a,key:j.key,machineId:b,allowedModels:[],createdAt:h};return v(g).insertKey.run(k.id,k.name,k.key,k.machineId,"[]",k.createdAt),(0,f.lR)("pre-write"),k}async function A(a,b){let c=(0,e.sm)();u(c);let d=JSON.stringify(b||[]);return 0!==v(c).updatePermissions.run(d,a).changes&&(s(),(0,f.lR)("pre-write"),!0)}async function B(a){return 0!==v((0,e.sm)()).deleteKey.run(a).changes&&(s(),(0,f.lR)("pre-write"),!0)}async function C(a){if(!a||"string"!=typeof a)return!1;let b=Date.now(),c=h.get(a);if(c&&b-c.timestamp<6e4)return c.valid;let d=!!v((0,e.sm)()).validateKey.get(a);return d&&(t(h),h.set(a,{valid:!0,timestamp:b})),d}async function D(a){if(!a||"string"!=typeof a)return null;let b=Date.now(),c=i.get(a);if(c&&b-c.timestamp<6e4)return c.metadata;let d=(0,e.sm)();u(d);let f=v(d).getKeyMetadata.get(a);if(!f)return null;let g={id:f.id,name:f.name,machineId:f.machine_id,allowedModels:y(f.allowed_models)};return t(i),i.set(a,{metadata:g,timestamp:b}),g}function E(){l=null,m=null,n=null,o=null,p=null,q=null,r=null,g=!1,s(),k.clear(),j.clear()}}};
|