omniroute 3.7.2 → 3.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +15 -15
- package/app/.next/build-manifest.json +3 -3
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/react-loadable-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/batch/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/media/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.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/memory/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.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/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/skills/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/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +1 -1
- 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/api/acp/agents/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next/server/app/api/batches/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cache/entries/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cache/reasoning/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cache/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cache/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/backups/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/qwen-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/qwen-settings/route.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/builder/options/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/metrics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/reorder/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/test/route.js +1 -1
- package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/scorecard/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/suites/[suiteId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/suites/route.js.nft.json +1 -1
- package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
- package/app/.next/server/app/api/files/[id]/content/route.js.nft.json +1 -1
- package/app/.next/server/app/api/files/route.js.nft.json +1 -1
- package/app/.next/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next/server/app/api/internal/codex-responses-ws/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/reveal/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/logs/active/route.js.nft.json +1 -1
- package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -1
- package/app/.next/server/app/api/logs/detail/route.js.nft.json +1 -1
- package/app/.next/server/app/api/logs/export/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/sse/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/stream/route.js.nft.json +1 -1
- package/app/.next/server/app/api/memory/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/memory/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/app/.next/server/app/api/model-combo-mappings/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/model-combo-mappings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/monitoring/health/route.js +1 -1
- package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next/server/app/api/openapi/try/route.js.nft.json +1 -1
- package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/sync/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/codex-auth/apply-local/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/codex-auth/export/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/refresh/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/sync-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/zed/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
- package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
- package/app/.next/server/app/api/restart/route.js.nft.json +1 -1
- package/app/.next/server/app/api/search/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/search/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/auto-disable-accounts/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/cache-config/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/cache-metrics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/export-json/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/favicon/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/import-json/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/lkgp-cache/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/memory/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/models-dev/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/payload-rules/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxies/assignments/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxies/bulk-assign/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxies/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxies/migrate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxies/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/purge-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/task-routing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
- package/app/.next/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/executions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/marketplace/install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/marketplace/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/skillssh/install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/skillssh/route.js.nft.json +1 -1
- package/app/.next/server/app/api/storage/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/bundle/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/tokens/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/tokens/route.js.nft.json +1 -1
- package/app/.next/server/app/api/synced-available-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/system/env/repair/route.js.nft.json +1 -1
- package/app/.next/server/app/api/system/version/route.js +1 -1
- package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
- package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/cloudflared/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/check/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/disable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/enable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/start-daemon/route.js.nft.json +1 -1
- package/app/.next/server/app/api/upstream-proxy/[providerId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/combo-health/route.js +1 -1
- package/app/.next/server/app/api/usage/combo-health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/provider-limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/quota/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/utilization/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/accounts/[id]/limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/batches/[id]/cancel/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/batches/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/batches/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/db/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/files/[id]/content/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/files/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/files/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/edits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/issues/report/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/management/proxies/assignments/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/management/proxies/bulk-assign/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/management/proxies/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/management/proxies/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/quotas/check/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/registered-keys/[id]/revoke/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/registered-keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/registered-keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/search/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/ws/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/check-update/route.js +1 -1
- package/app/.next/server/app/api/version-manager/check-update/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/install/route.js +1 -1
- package/app/.next/server/app/api/version-manager/install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/restart/route.js +1 -1
- package/app/.next/server/app/api/version-manager/restart/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/start/route.js +1 -1
- package/app/.next/server/app/api/version-manager/start/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/status/route.js +1 -1
- package/app/.next/server/app/api/version-manager/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/stop/route.js +1 -1
- package/app/.next/server/app/api/version-manager/stop/route.js.nft.json +1 -1
- package/app/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/webhooks/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/webhooks/route.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +15 -15
- package/app/.next/server/chunks/12767.js +1 -1
- package/app/.next/server/chunks/19849.js +1 -1
- package/app/.next/server/chunks/20236.js +1 -1
- package/app/.next/server/chunks/36040.js +4 -4
- package/app/.next/server/chunks/3832.js +1 -1
- package/app/.next/server/chunks/39548.js +1 -1
- package/app/.next/server/chunks/39859.js +1 -1
- package/app/.next/server/chunks/44088.js +1 -1
- package/app/.next/server/chunks/45415.js +1 -1
- package/app/.next/server/chunks/55672.js +1 -0
- package/app/.next/server/chunks/59092.js +2 -2
- package/app/.next/server/chunks/66094.js +1 -1
- package/app/.next/server/chunks/69105.js +1 -1
- package/app/.next/server/chunks/75225.js +1 -1
- package/app/.next/server/chunks/77044.js +1 -1
- package/app/.next/server/chunks/83648.js +1 -1
- package/app/.next/server/chunks/93831.js +4 -4
- package/app/.next/server/chunks/9679.js +3 -3
- package/app/.next/server/chunks/99168.js +2 -2
- package/app/.next/server/middleware-build-manifest.js +1 -1
- package/app/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/app/.next/server/middleware.js +2 -2
- package/app/.next/server/pages/500.html +1 -1
- 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/{1999-fefe90c60eaa3b23.js → 1999-8cf58c233346f980.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cache/media/page-ad8091c5b7536b7a.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-ccc65d29bbb19d51.js +1 -0
- package/app/.next/static/chunks/app/{layout-3e3b043f9b52bb80.js → layout-fbebdd84c4996160.js} +1 -1
- package/app/.next/static/chunks/{webpack-117eac5998a94c69.js → webpack-ea5983ad4b51e934.js} +1 -1
- package/app/.next/static/css/7caa8a6802c65def.css +1 -0
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/mcp-server/server.js +15 -1
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next/server/chunks/80812.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cache/media/page-f0289617f824bbf2.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-f24fde8a3f731108.js +0 -1
- package/app/.next/static/css/8d36e4e21725013b.css +0 -1
- /package/app/.next/static/{yvJ6rPtn4eb7sOBUCBGrF → qmeYzerLcoUXZ06JXgit3}/_buildManifest.js +0 -0
- /package/app/.next/static/{yvJ6rPtn4eb7sOBUCBGrF → qmeYzerLcoUXZ06JXgit3}/_ssgManifest.js +0 -0
|
@@ -57,6 +57,6 @@ Respond ONLY with the JSON object, no other text.`)}else"json_object"===a.type&&
|
|
|
57
57
|
[...truncated ${a.length-65536} chars...]
|
|
58
58
|
${c}`}if("object"!=typeof a)return a;if(b>=6)return"[MaxDepth]";if(Array.isArray(a)){let c=(a.length>24?a.slice(-24):a).map(a=>av(a,b+1));return a.length>24?[{_omniroute_truncated_array:!0,originalLength:a.length,retainedTailItems:24},...c]:c}let c={},d=Object.entries(a);for(let[a,e]of d.slice(0,80))c[a]=av(e,b+1);return d.length>80&&(c._omniroute_truncated_keys=d.length-80),c}function aw(a){try{return JSON.stringify(a).length<=262144}catch{return!1}}function ax(a){if(!a||"object"!=typeof a)return"";let b=a?.choices?.[0]?.message?.content;if("string"==typeof b)return au(b.trim());if(Array.isArray(a?.content)){let b=a.content.filter(a=>a?.type==="text"&&"string"==typeof a?.text).map(a=>String(a.text).trim()).filter(Boolean).join("\n");if(b)return au(b)}return"string"==typeof a?.output_text?au(a.output_text.trim()):""}function ay(a){if(!a||"object"!=typeof a)return"";let b=Array.isArray(a.messages)?a.messages:null;if(b&&b.length>0)for(let a=b.length-1;a>=0;a-=1){let c=b[a];if(c?.role==="user"){if("string"==typeof c.content&&c.content.trim().length>0)return au(c.content.trim());if(Array.isArray(c.content)){let a=c.content.map(a=>"string"==typeof a?.text||a?.type==="input_text"&&"string"==typeof a?.text?a.text.trim():"").filter(Boolean).join("\n").trim();if(a)return au(a)}}}let c=Array.isArray(a.input)?a.input:null;if(c&&c.length>0){for(let a=c.length-1;a>=0;a-=1){let b=c[a],d="string"==typeof b?.role?b.role.trim().toLowerCase():"",e="string"==typeof b?.type?b.type.trim().toLowerCase():"";if((!d||"user"===d)&&(!e||"message"===e)){if("string"==typeof b?.content&&b.content.trim())return au(b.content.trim());if(Array.isArray(b?.content)){let a=b.content.map(a=>"string"==typeof a?.text||a?.type==="input_text"&&"string"==typeof a?.text?a.text.trim():"").filter(Boolean).join("\n").trim();if(a)return au(a)}}}let a=[],b=0;for(let d=c.length-1;d>=0&&b<65536;d-=1){let e=c[d],f=(()=>{let a="string"==typeof e?.role?e.role.trim().toLowerCase():"",b="string"==typeof e?.type?e.type.trim().toLowerCase():"";return a&&"user"!==a||b&&"message"!==b?"":"string"==typeof e?.content?e.content.trim():Array.isArray(e?.content)?e.content.map(a=>"string"==typeof a?.text||a?.type==="input_text"&&"string"==typeof a?.text?a.text.trim():"").filter(Boolean).join("\n").trim():""})();f&&(a.unshift(f),b+=f.length+1)}let d=a.join("\n").trim();if(d)return au(d)}return""}async function az({provider:a,connectionId:b,providerSpecificData:c,log:d}){if(b&&(0,as.U1)(a,c))try{await (0,ar.wJ)(b)}catch(b){let a=b instanceof Error?b.message:String(b);d?.debug?.("CLAUDE_USAGE",`Failed to sync Claude extra-usage state: ${a}`)}}function aA(a,b){let c=b&&b._toolNameMap instanceof Map?b._toolNameMap:null;if(!c?.size)return a;if(!a?.size)return c;let d=new Map(a);for(let[a,b]of c.entries())d.set(a,b);return d}function aB(a,b){if(!a||"object"!=typeof a)return null;let c=b.toLowerCase();for(let[b,d]of Object.entries(a))if(b.toLowerCase()===c&&"string"==typeof d&&d.trim())return d.trim();return null}function aC({provider:a,model:b,connectionId:c,credentials:d}){let e=function(a,b){if("string"==typeof a&&a.trim().length>0)return a;for(let a of[b?.connectionId,b?.id,b?.email,b?.name,b?.displayName])if("string"==typeof a&&a.trim().length>0)return a.trim();return null}(c,d);return e&&a?(0,W.fy)({provider:a,accountKey:e}):null}function aD(a){return"number"==typeof a&&Number.isFinite(a)&&a>0?a:0}function aE(a){if(!a||"object"!=typeof a)return null;let b=a.prompt_tokens_details&&"object"==typeof a.prompt_tokens_details?a.prompt_tokens_details:void 0,c="cache_read_input_tokens"in a||"cached_tokens"in a||"cache_creation_input_tokens"in a||!!b&&("cached_tokens"in b||"cache_creation_tokens"in b),d=aD(a.cache_read_input_tokens??a.cached_tokens??b?.cached_tokens),e=aD(a.cache_creation_input_tokens??b?.cache_creation_tokens);return c?{cacheReadTokens:d,cacheCreationTokens:e}:null}function aF(a,b){if(!b||"object"!=typeof b)return a;let c=Object.fromEntries(Object.entries(b).filter(([,a])=>null!=a));if(0===Object.keys(c).length)return a;if(!a||"object"!=typeof a||Array.isArray(a))return{_omniroute:c,_payload:a??null};let d=a._omniroute&&"object"==typeof a._omniroute&&!Array.isArray(a._omniroute)?a._omniroute:{};return{...a,_omniroute:{...d,...c}}}[h,k,v,x,z,A,E,G,H,Z,ak,am,an,ar]=at.then?(await at)():at;let aL=new Map,aM=null,aN=0;async function aG(){let a=Date.now();return aM&&a-aN<1e4?aM:(aN=a,aM=(async()=>{let{getCombos:a}=await Promise.resolve().then(c.bind(c,73671));return a()})())}async function aH(a){let b=aL.get(a);if(b&&Date.now()-b.ts<1e4)return b;let c=await (0,G.Azi)(a).catch(()=>null),d=c?{mode:c.mode,enabled:c.enabled,ts:Date.now()}:{mode:"native",enabled:!1,ts:Date.now()};return aL.set(a,d),d}function aI(a,b){let c={};if(a instanceof Headers)a.forEach((a,b)=>{c[b]=a});else if(a&&"object"==typeof a)for(let[b,d]of Object.entries(a))"string"==typeof d&&(c[b]=d);let d="string"==typeof b?b.trim():"";return!d||c["user-agent"]||c["User-Agent"]||(c["user-agent"]=d,c["User-Agent"]=d),Object.keys(c).length>0?c:null}async function aJ({body:a,modelInfo:b,credentials:d,log:ar,onCredentialsRefreshed:as,onRequestSuccess:at,onStreamFailure:au,onDisconnect:aK,clientRawRequest:aL,connectionId:aM,apiKeyInfo:aN=null,userAgent:aO,comboName:aP,comboStrategy:aQ=null,isCombo:aR=!1,comboStepId:aS=null,comboExecutionKey:aT=null,disableEmergencyFallback:aU=!1}){let aV,aW,aX,aY,aZ,a$,a_,{provider:a0,model:a1,extendedContext:a2}=b,a3="string"==typeof a?.model&&a.model.trim().length>0?a.model:a1,a4=Date.now(),a5=(a,b)=>{(0,A.sZ)({provider:a0||"unknown",model:a1||"unknown",tokens:{input:0,output:0,cacheRead:0,cacheCreation:0,reasoning:0},status:String(a),success:!1,latencyMs:Date.now()-a4,timeToFirstTokenMs:0,errorCode:b||String(a),timestamp:new Date().toISOString(),connectionId:aM||void 0,apiKeyId:aN?.id||void 0,apiKeyName:aN?.name||void 0}).catch(()=>{})},a6=async(a,b=0)=>{if("codex"===a0&&aM&&a)try{let c=(0,P.H5)(a);if(!c)return;let e=d?.providerSpecificData&&"object"==typeof d.providerSpecificData?d.providerSpecificData:{},f=(0,P.t6)(a1||a3||""),g={usage5h:c.usage5h,limit5h:c.limit5h,resetAt5h:c.resetAt5h,usage7d:c.usage7d,limit7d:c.limit7d,resetAt7d:c.resetAt7d,scope:f,updatedAt:new Date().toISOString()},h={...e,codexQuotaState:g};if(429===b){let{cooldownMs:a,window:b}=(0,P.kn)(c);if(a>0){let c=new Date(Date.now()+a).toISOString();h.codexScopeRateLimitedUntil={...e&&"object"==typeof e&&e.codexScopeRateLimitedUntil&&"object"==typeof e.codexScopeRateLimitedUntil?e.codexScopeRateLimitedUntil:{},[f]:c},h.codexExhaustedWindow=b,ar?.debug?.("CODEX",`Quota exhaustion on ${b} window, cooldown until ${c}`)}aM&&(0,Q.tg)(aM)}await (0,u.rj)(aM,{providerSpecificData:h}),d.providerSpecificData=h}catch(b){let a=b instanceof Error?b.message:String(b);ar?.debug?.("CODEX",`Failed to persist codex quota state: ${a}`)}},a7=(0,Z.xp)(aL?.headers),a8=(0,Z.ic)(a7);if(a8){ar?.debug?.("IDEMPOTENCY",`Hit for key=${a7?.slice(0,12)}...`);let a=a8.response&&"object"==typeof a8.response?a8.response.usage:void 0,b=a?await (0,D.yN)(a0,a1,a):0;return{success:!0,response:new Response(JSON.stringify(a8.response),{status:a8.status,headers:{"Content-Type":"application/json","X-OmniRoute-Idempotent":"true",...(0,E.lG)({provider:a0,model:a1,cacheHit:!1,latencyMs:Date.now()-a4,usage:a,costUsd:b})}})}}await (0,V.rh)(),aM&&d&&!d.connectionId&&(d.connectionId=aM);let a9=String(aL?.endpoint||""),ba=(0,e.a4)(a,a9),bb=/\/responses(?=\/|$)/i.test(a9)||/^responses(?=\/|$)/i.test(a9),bc=function({provider:a,sourceFormat:b,endpointPath:c}){if("codex"!==a||b!==g.h.OPENAI_RESPONSES)return!1;let d=String(c||"");for(;d.endsWith("/");)d=d.slice(0,-1);return d.split("/").includes("responses")}({provider:a0,sourceFormat:ba,endpointPath:a9}),bd=aO?.toLowerCase().includes("droid")||aO?.toLowerCase().includes("codex-cli"),be=ba!==g.h.OPENAI_RESPONSES||bb||bd?ba:g.h.OPENAI,bf=(0,z.c)(a,a1,aO);if(bf)return bf;let bg=(0,ac.T4)().enabled?(0,ac.ur)(a,aL?.headers):null;if(bg){let b=(0,ac.M4)(a1);if(b!==a1){let c=a1;ar?.info?.("BACKGROUND",`Background task redirect (${bg}): ${c} → ${b}`),a1=b,a&&"object"==typeof a&&(a.model=a1),(0,x.yI)({action:"routing.background_task_redirect",actor:aN?.name||"system",target:aM||a0||"chat",details:{original_model:c,redirected_to:b,reason:bg}})}}let bh=(0,p.kV)(a1),bi=bh!==a1?bh:a1;bh!==a1&&ar?.info?.("ALIAS",`Model alias applied: ${a1} → ${bh}`);let bj=n.PROVIDER_ID_TO_ALIAS[a0]||a0,bk=(0,n.ux)(bj,bh)||(0,e.jJ)(a0,d?.providerSpecificData),{body:bl,fallback:bm}=(0,ae.CS)(a,{provider:a0,sourceFormat:ba,targetFormat:bk,nativeCodexPassthrough:bc});bm.enabled&&(a=bl,ar?.info?.("TOOLS",`Converted ${bm.convertedToolCount} web_search tool(s) to OmniRoute fallback for ${a0}`));let bn=aN?.noLog===!0,bo=!bn&&await (0,v.N3)(),bp=bo&&(0,w.LY)(),bq=(0,ag.KZ)(),br=(aL?.headers&&"function"==typeof aL.headers.get?aL.headers.get("x-omniroute-session-id"):aB(aL?.headers??null,"x-omniroute-session-id"))||bq,bs=({status:b,tokens:c,responseBody:d,error:e,providerRequest:f,providerResponse:g,clientResponse:h,claudeCacheMeta:i,claudeCacheUsageMeta:j,cacheSource:k})=>{let l=(0,y.QM)(g,h,d);l.length>0&&(0,x.yI)({action:"provider.warning",actor:"system",target:[a0,aM].filter(Boolean).join(":")||a0||a1,resourceType:"provider_warning",status:"warning",requestId:bq,details:{provider:a0,model:a1,connectionId:aM,httpStatus:b,warnings:l}});let m=(0,ag.KZ)(),n=bo?bA?.getPipelinePayloads?.():null;n&&(void 0!==g&&(n.providerResponse=g),void 0!==h&&(n.clientResponse=h),e&&(n.error={..."object"==typeof n.error&&n.error?n.error:{},message:e})),(0,A.gK)({id:m,method:"POST",path:aL?.endpoint||"/v1/chat/completions",status:b,model:a1,requestedModel:a3,provider:a0,connectionId:aM,duration:Date.now()-a4,tokens:c||{},requestBody:av(aF(a??void 0,{claudePromptCache:i})),responseBody:av(aF(d??void 0,{claudePromptCache:i?{applied:i.applied,totalBreakpoints:i.totalBreakpoints,anthropicBeta:i.anthropicBeta}:null,claudePromptCacheUsage:j})),error:e||null,sourceFormat:ba,targetFormat:bk,comboName:aP,comboStepId:aS,comboExecutionKey:aT,cacheSource:"semantic"===k?"semantic":"upstream",apiKeyId:aN?.id||null,apiKeyName:aN?.name||null,noLog:bn,pipelinePayloads:n}).catch(()=>{})},bt=d?.providerSpecificData&&"object"==typeof d.providerSpecificData&&"string"==typeof d.providerSpecificData.customUserAgent?d.providerSpecificData.customUserAgent.trim():"",bu=a=>{let b,c=a===bi?{...(0,G.$nx)(a0||"",a1||"",ba),...(0,G.$nx)(a0||"",bh||"",ba)}:(b=(0,p.kV)(a),{...(0,G.$nx)(a0||"",a||"",ba),...(0,G.$nx)(a0||"",b||"",ba)});return bt&&(c["User-Agent"]=bt,"user-agent"in c&&(c["user-agent"]=bt)),c},bv=aL?.headers&&"function"==typeof aL.headers.get?aL.headers.get("accept")||aL.headers.get("Accept"):(aL?.headers||{}).accept||(aL?.headers||{}).Accept,bw=(0,af.nV)(a);if(a&&"object"==typeof a){let b=a;void 0!==bw&&(b.stream=bw),delete b.non_stream,delete b.disable_stream,delete b.disable_streaming,delete b.streaming}let bx=(0,af.ZA)(a?.stream,bv),by=await (0,M.getCachedSettings)();(0,aq.setGeminiThoughtSignatureMode)(by.antigravitySignatureCacheMode);let bz=!1!==by.semanticCacheEnabled,bA=await (0,m.q)(ba,bk,a1,{enabled:bo,captureStreamChunks:bp});if(aL&&bA.logClientRawRequest(aL.endpoint,aL.body,aL.headers),ar?.debug?.("FORMAT",`${ba} → ${bk} | stream=${bx}`),bz&&(0,Y.Ke)(a,aL?.headers)){let b=(0,Y.gR)(a1,a.messages??a.input,a.temperature,a.top_p),c=(0,Y.Cb)(b);if(c){ar?.debug?.("CACHE",`Semantic cache HIT for ${a1} (stream=${bx})`),bA.logConvertedResponse(c);let a=(0,S.M)(c,a0)||c?.usage,b=a?await (0,D.yN)(a0,a1,a):0;return bs({status:200,tokens:c?.usage,responseBody:c,providerRequest:null,providerResponse:null,clientResponse:c,cacheSource:"semantic"}),{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json",[ao.I.cache]:"HIT",...(0,E.lG)({provider:a0,model:a1,cacheHit:!0,latencyMs:Date.now()-a4,usage:a,costUsd:b})}})}}}ba===g.h.OPENAI_RESPONSES||bk===g.h.OPENAI_RESPONSES?void 0===a.max_output_tokens&&(void 0!==a.max_completion_tokens?(a.max_output_tokens=a.max_completion_tokens,delete a.max_completion_tokens):void 0!==a.max_tokens&&(a.max_output_tokens=a.max_tokens,delete a.max_tokens)):void 0!==a.max_output_tokens&&(void 0===a.max_tokens&&(a.max_tokens=a.max_output_tokens),delete a.max_output_tokens),Array.isArray(a.messages)&&(a.messages=a.messages.map(a=>{if(""===a.name){let{name:b,...c}=a;return c}return a})),Array.isArray(a.input)&&(a.input=a.input.map(a=>{if(""===a.name){let{name:b,...c}=a;return c}return a})),Array.isArray(a.tools)&&(a.tools=a.tools.filter(a=>{let b="string"==typeof a.type?a.type:"";if(b&&"function"!==b&&!a.function&&void 0===a.name)return!0;let c=a.function,d=c?.name??a.name;return d&&String(d).trim().length>0}),a.tools=a.tools.map(a=>(0,O.U)(a)));let bB=(aV=aN?.id,"string"==typeof aV&&aV.trim().length>0?aV:null),bC=bB?await (0,al.pm)().catch(()=>al.wH):null;if(bB&&bC&&(0,aj.YX)(a,{enabled:bC.enabled&&bC.maxTokens>0}))try{let b=await (0,ak.G)(bB,(0,al.Ty)(bC));b.length>0&&(a=(0,aj.Xo)(a,b,a0),ar?.debug?.("MEMORY",`Injected ${b.length} memories for key=${bB}`))}catch(a){ar?.debug?.("MEMORY",`Memory injection skipped: ${a instanceof Error?a.message:String(a)}`)}if(bB&&bC?.skillsEnabled){let b=Array.isArray(a.tools)?a.tools:[],c=(0,am.Uk)({provider:function(a){switch(a){case g.h.CLAUDE:return"anthropic";case g.h.GEMINI:return"google";default:return"openai"}}(ba),existingTools:b,apiKeyId:bB,model:"string"==typeof bi?bi:void 0,sourceFormat:ba,targetFormat:bk,backgroundReason:bg,messages:Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:void 0});c.length>b.length&&(a={...a,tools:c},ar?.debug?.("SKILLS",`Injected ${c.length-b.length} skills`))}let bD=a?.messages||a?.input||a?.contents||a?.request?.contents||[];if(a&&Array.isArray(bD)&&bD.length>0){let b=(0,ab.bP)(JSON.stringify(bD)),d=(0,ab.xb)(a0,bi);if(aR&&aP){ar?.info?.("CONTEXT",`Attempting to resolve combo limits for comboName=${aP}`);try{let{getComboByName:a}=await Promise.resolve().then(c.bind(c,73671)),{parseModel:b}=await Promise.resolve().then(c.bind(c,41966)),{resolveComboTargets:e}=await c.e(99168).then(c.bind(c,99168)),f=await a(aP);if(!f&&aP.startsWith("combo/")&&(f=await a(aP.substring(6))),f){let a=await aG(),c=e(f,a).map(a=>{let c=b(a.modelStr);return(0,ab.xb)(c.provider,c.model)});c.length>0&&(d=Math.min(...c),ar?.info?.("CONTEXT",`Combo min limit: ${d}`))}}catch(a){ar?.warn?.("CONTEXT","Failed to resolve combo limits for compression: "+a)}}let e=0;Array.isArray(a.tools)&&(e=(0,ab.bP)(JSON.stringify(a.tools)));let f=Math.max(1,Math.floor((Math.max(1,d)-e)*.7));if(ar?.debug?.("CONTEXT",`Checking compression: ${b} tokens vs ${f} threshold (${d} limit, ${e} reserved)`),b>f){ar?.info?.("CONTEXT",`Proactive compression triggered: ${b} tokens > ${f} threshold (${d} limit)`);let c=(0,ab.qc)(a,{provider:a0,model:bi,maxTokens:f,reserveTokens:0});if(c.compressed){a=c.body;let b=c.stats,d=b&&"layers"in b&&Array.isArray(b.layers)?` (layers: ${b.layers.map(a=>a.name).join(", ")})`:"";ar?.info?.("CONTEXT",`Context compressed: ${b.original} → ${b.final} tokens${d}`),(0,x.yI)({action:"context.proactive_compression",actor:aN?.name||"system",target:aM||a0||"chat",details:{provider:a0,model:bi,original_tokens:b.original,final_tokens:b.final,layers:"layers"in b?b.layers:void 0}})}else ar?.debug?.("CONTEXT","Compression not applied: context already fits within target")}}else ar?.debug?.("CONTEXT",`Skipping compression check: body=${!!a}, hasMessages=${Array.isArray(bD)}`);let bE=a,bF=ba===g.h.CLAUDE&&bk===g.h.CLAUDE,bG=(0,ap.Xv)(a0),bH=bx||bG,bI=null,bJ=(0,o.T)(a0||"",a1||"");if(Array.isArray(bE?.messages)&&bJ.length>0){let a=(0,o.k)(bE.messages,bJ);a.removedParts>0&&(bE={...bE,messages:a.messages},ar?.warn?.("CONTENT",`Stripped ${a.removedParts} incompatible content part(s) for ${a0}/${a1}`))}let bK=await (0,I.$)().catch(()=>"auto"),bL=(0,L.jH)({userAgent:aO,isCombo:aR,comboStrategy:aQ,targetProvider:a0,targetFormat:bk,settings:{alwaysPreserveClientCache:bK}});bL&&ar?.debug?.("CACHE",`Preserving client cache_control (client=${aO?.substring(0,20)}, combo=${aR}, strategy=${aQ}, provider=${a0})`);let bM=(a,b)=>{let c=b?.preserveToolResultBlocks===!0;if(!Array.isArray(a.messages))return;let d=a.messages;for(let a of d)Array.isArray(a.content)&&(a.content=a.content.filter(a=>"text"!==a.type||"string"==typeof a.text&&a.text.length>0));for(let a of d)"user"===a.role&&Array.isArray(a.content)&&(a.content=a.content.flatMap(a=>{if("text"===a.type||"image_url"===a.type||"image"===a.type||"file_url"===a.type||"file"===a.type||"document"===a.type){let b=a.file_url??a.file??a.document;if(("file"===a.type||"document"===a.type)&&!b?.url&&!b?.data){let b=a.file?.content??a.file?.text??a.content??a.text,c=a.file?.name??a.name??"attachment";if("string"==typeof b&&b.length>0)return[{type:"text",text:`[${c}]
|
|
59
59
|
${b}`}]}return[a]}if("tool_result"===a.type){if(c)return[a];let b=a.tool_use_id??a.id??"unknown",d=a.content??a.text??a.output??"",e="string"==typeof d?d:Array.isArray(d)?d.filter(a=>"text"===a.type).map(a=>a.text).join("\n"):JSON.stringify(d);return e.length>0?[{type:"text",text:`[Tool Result: ${b}]
|
|
60
|
-
${e}`}]:[]}return ar?.debug?.("CONTENT",`Dropped unsupported content part type="${a.type}"`),[]}))};try{if(bc)bE={...a,_nativeCodexPassthrough:!0},ar?.debug?.("FORMAT","native codex passthrough enabled");else if(bG){let b={...a};if(ba!==g.h.OPENAI){let c=(0,G.QT7)(a0||"",a1||"",ba),e=(0,G.e87)(a0||"",a1||"",ba);b=(0,f.GH)(ba,g.h.OPENAI,a1,{...a},bx,d,a0,bA,{normalizeToolCallId:c,preserveDeveloperRole:e,preserveCacheControl:bL})}bI=(0,ap.L)(aL?.headers),bE=(0,ap.$Y)({sourceBody:a,normalizedBody:b,claudeBody:ba===g.h.CLAUDE?a:null,model:a1,stream:bH,sessionId:bI,cwd:process.cwd(),now:new Date,preserveCacheControl:bL}),ar?.debug?.("FORMAT","claude-code-compatible bridge enabled")}else if(bF)(bE={...a})._disableToolPrefix=!0,bM(bE,{preserveToolResultBlocks:!0}),ar?.debug?.("FORMAT",`claude passthrough (preserveCache=${bL})`);else{if(bE={...a},bk===g.h.CLAUDE&&(bE._disableToolPrefix=!0,bM(bE)),a0?.startsWith("openai-compatible-")&&Array.isArray(bE.tools)){let a=bE.tools.length;bE.tools=bE.tools.filter(a=>!a.type||"function"===a.type||!!a.function||!!a.name).map(a=>!a.type||"function"===a.type||a.function?a:{type:"function",function:{name:a.name,...void 0!==a.description?{description:a.description}:{},...void 0!==a.parameters||void 0!==a.input_schema?{parameters:a.parameters??a.input_schema??{}}:{},...void 0!==a.strict?{strict:a.strict}:{}}});let b=a-bE.tools.length;b>0&&ar?.debug?.("TOOLS",`Dropped ${b} unconvertible tool(s) for openai-compatible provider`)}let b=(0,G.QT7)(a0||"",a1||"",ba),c=(0,G.e87)(a0||"",a1||"",ba);bE=(0,f.GH)(ba,bk,a1,bE,bx,d,a0,bA,{normalizeToolCallId:b,preserveDeveloperRole:c,preserveCacheControl:bL})}}catch(e){let a=Number(e?.statusCode),b=Number.isInteger(a)&&a>=400&&a<=599?a:s.gx.SERVER_ERROR,c=e?.message||"Invalid request",d="string"==typeof e?.errorType?e.errorType:null;if(ar?.warn?.("TRANSLATE",`Request translation failed: ${c}`),d)return{success:!1,status:b,error:c,response:new Response(JSON.stringify({error:{message:c,type:d,code:d}}),{status:b,headers:{"Content-Type":"application/json"}})};return(0,r.A1)(b,c)}let bN=bE._toolNameMap,bO=bF?function(a){if(!a||!Array.isArray(a.tools))return null;let b=new Map;for(let c of a.tools){let a=c?.type==="function"&&c.function&&"object"==typeof c.function?c.function:c,d="string"==typeof a?.name?a.name.trim():"";d&&b.set(`${F.Zj}${d}`,d)}return b.size>0?b:null}(a):null,bP=bN instanceof Map&&bN.size>0?bN:bO;delete bE._toolNameMap,delete bE._disableToolPrefix;let bQ=bi;bQ.startsWith(`${a0}/`)?bQ=bQ.slice(a0.length+1):bj&&bQ.startsWith(`${bj}/`)&&(bQ=bQ.slice(bj.length+1)),bE.model=bQ;let bR=(0,q.Gk)(a0,a1);if(bR.length>0){let a=[];for(let b of bR)Object.hasOwn(bE,b)&&(a.push(b),delete bE[b]);a.length>0&&ar?.warn?.("PARAMS",`Stripped unsupported params for ${a1}: ${a.join(", ")}`)}let bS=s.Aj[a0];if(bS)for(let a of["max_tokens","max_completion_tokens"])"number"==typeof bE[a]&&bE[a]>bS&&(ar?.debug?.("PARAMS",`Capping ${a} from ${bE[a]} to ${bS} for ${a0}`),bE[a]=bS);let bT=async a=>{let b=await aH(a);if(!b.enabled||"native"===b.mode)return(0,H.SB)(a);if("cliproxyapi"===b.mode)return ar?.info?.("UPSTREAM_PROXY",`${a} routed through CLIProxyAPI (passthrough)`),(0,H.SB)("cliproxyapi");let c=(0,H.SB)(a),d=(0,H.SB)("cliproxyapi"),e=Object.create(c);return e.execute=async b=>{let e,f;try{e=await c.execute(b)}catch(e){let c=e instanceof Error?e.message:String(e);ar?.info?.("UPSTREAM_PROXY",`${a} native error (${c}), retrying via CLIProxyAPI`);try{return await d.execute(b)}catch(c){let b=c instanceof Error?c.message:String(c);throw ar?.error?.("UPSTREAM_PROXY",`${a} CLIProxyAPI fallback also failed: ${b}`),c}}if(!((f=e.response.status)>=500||429===f||0===f))return e;ar?.info?.("UPSTREAM_PROXY",`${a} native failed (${e.response.status}), retrying via CLIProxyAPI`);try{return await d.execute(b)}catch(c){let b=c instanceof Error?c.message:String(c);throw ar?.error?.("UPSTREAM_PROXY",`${a} CLIProxyAPI fallback also failed: ${b}`),c}},e},bU=await bT(a0),bV=()=>{let a=bc?{...d,requestEndpointPath:a9}:d;return bI?{...a,providerSpecificData:{...a?.providerSpecificData||{},ccSessionId:bI}}:a},bW=(0,j.jd)({onDisconnect:aK,log:ar,provider:a0,model:a1}),bX={...bE,model:`${a0}/${a1}`,stream:bx},bY=(0,aa.Gp)(bX),bZ=bY?(0,aa.nC)(bX):null,b$=async(a=bi,b=!1)=>{let e=async()=>{let b=bV(),e=function(a){var b=a?.maxConcurrent;if("number"==typeof b&&Number.isFinite(b))return b;if("string"==typeof b&&b.trim().length>0){let a=Number(b);return Number.isFinite(a)?a:null}return null}(b),f=aC({provider:a0,model:a,connectionId:aM,credentials:b}),i=bE.model===a?bE:{...bE,model:a},j="string"==typeof i.model&&i.model.length>0?i.model:a,k=(0,K.wu)({provider:a0,targetFormat:bk}),l=await (0,K.IQ)(i,j,k);if(i=l.payload,l.applied.length>0){let a=l.applied.map(a=>{if("filter"===a.type)return`${a.type}:${a.path}`;let b=JSON.stringify(a.value),c="string"==typeof b&&b.length>80?`${b.slice(0,77)}...`:b;return`${a.type}:${a.path}=${c}`}).join(", ");ar?.debug?.("PAYLOAD_RULES",`Applied ${l.applied.length} rule(s) for ${j} (${k.join(", ")}): ${a}`)}let m="string"==typeof i.user&&i.user.trim().length>0;if("qwen"!==a0||d?.apiKey||"string"!=typeof d?.accessToken||!(d.accessToken.trim().length>0)||m||(i={...i,user:"omniroute-qwen-oauth"},ar?.debug?.("QWEN","Injected fallback user for OAuth request")),bk===g.h.OPENAI&&(0,L.R6)(a0)&&!i.prompt_cache_key&&Array.isArray(i.messages)&&!["nvidia","codex","xai"].includes(a0)){let{generatePromptCacheKey:a}=await c.e(15546).then(c.bind(c,15546)),b=a(i.messages);b&&(i={...i,prompt_cache_key:b})}let n=f&&null!=e?await (0,W.XC)(f,{maxConcurrency:e}):()=>{};try{let c=await (0,V.YO)(a0,aM,a,async()=>{let c=0,d="qwen"===a0?3:1;for(;c<d;){let e=await bU.execute({model:a,body:i,stream:bH,credentials:b,signal:bW.signal,log:ar,extendedContext:a2,upstreamExtraHeaders:bu(a),clientHeaders:aI(aL?.headers,aO),onCredentialsRefreshed:as});if("qwen"===a0&&429===e.response.status&&c<d-1&&(await e.response.clone().text().catch(()=>"")).toLowerCase().includes("exceeded your current quota")){let a=1500*(c+1);ar?.warn?.("QWEN_RETRY",`Quota 429 hit. Retrying in ${a}ms...`),await new Promise(b=>setTimeout(b,a)),c++;continue}if(bx){let a=e.response.body;if(!a)return n(),e;return{...e,response:new Response(function(a,b){let c=a.getReader(),d=!1,e=()=>{d||(d=!0,b())};return new ReadableStream({async pull(a){try{let{done:b,value:d}=await c.read();if(b){e(),a.close();return}a.enqueue(d)}catch(b){e(),a.error(b)}},async cancel(a){try{await c.cancel(a)}finally{e()}}})}(a,n),{status:e.response.status,statusText:e.response.statusText,headers:e.response.headers})}}return e}});if(bx)return c;let d=c.response.status,e=c.response.statusText,f=Array.from(c.response.headers.entries()),g=await (0,h.sh)(c.response.text());return n(),{...c,response:new Response(g,{status:d,statusText:e,headers:f}),_dedupSnapshot:{status:d,statusText:e,headers:f,payload:g}}}catch(a){throw n(),a}};if(b&&bY&&bZ){var f;let a,b=await (0,aa.bu)(bZ,e);return b.wasDeduplicated&&ar?.debug?.("DEDUP",`Joined in-flight request hash=${bZ}`),(a=(f=b.result)&&"object"==typeof f?f._dedupSnapshot:void 0)?{...f,response:new Response(a.payload,{status:a.status,statusText:a.statusText,headers:a.headers})}:f}return e()};(0,A.uw)(a1,a0,aM,!0,{clientEndpoint:aL?.endpoint||"/v1/chat/completions",clientRequest:aL?.body??a});let b_=new Set([bi]),b0=bi;(0,A.E5)({model:a1,provider:a0,connectionId:aM,status:"PENDING"}).catch(()=>{});let b1=bE.messages?.length||bE.contents?.length||bE.request?.contents?.length||0;ar?.debug?.("REQUEST",`${a0.toUpperCase()} | ${a1} | ${b1} msgs`);let b2=null;try{let a=await b$(bi,!0);aW=a.response,aX=a.url,aY=a.headers,aZ=a.transformedBody,b2=function(a,b,c){if(a!==g.h.CLAUDE||!b||"object"!=typeof b)return null;let d=(a,b={})=>({type:a&&"string"==typeof a.type&&a.type.trim()?a.type.trim():"ephemeral",ttl:a&&"string"==typeof a.ttl&&a.ttl.trim()?a.ttl.trim():null,...b}),e=Array.isArray(b.system)?b.system.flatMap((a,b)=>{if(!a||"object"!=typeof a||("string"==typeof a.text&&a.text.trim().length>0?a.text.trim():"").startsWith("x-anthropic-billing-header:"))return[];let c=a.cache_control&&"object"==typeof a.cache_control?a.cache_control:null;return c?[d(c,{index:b})]:[]}):[],f=Array.isArray(b.tools)?b.tools.flatMap((a,b)=>{if(!a||"object"!=typeof a)return[];let c=a.cache_control&&"object"==typeof a.cache_control?a.cache_control:null,e="string"==typeof a.name&&a.name.trim()?a.name.trim():null;return c?[d(c,{index:b,name:e})]:[]}):[],h=Array.isArray(b.messages)?b.messages.flatMap((a,b)=>{if(!a||"object"!=typeof a||!Array.isArray(a.content))return[];let c="string"==typeof a.role&&a.role.trim()?a.role.trim():"unknown";return a.content.flatMap((a,e)=>{if(!a||"object"!=typeof a)return[];let f=a.cache_control&&"object"==typeof a.cache_control?a.cache_control:null;return f?[d(f,{messageIndex:b,contentIndex:e,role:c,blockType:"string"==typeof a.type&&a.type.trim()?a.type.trim():"unknown"})]:[]})}):[],i=e.length+f.length+h.length,j=aB(c,"Anthropic-Beta");return 0!==i||j?{applied:i>0,totalBreakpoints:i,anthropicBeta:j,systemBreakpoints:e,toolBreakpoints:f,messageBreakpoints:h}:null}(bk,aZ,aY),bA.logTargetRequest(aX,aY,aZ),(0,A.mw)(a1,a0,aM,{providerRequest:aZ,providerUrl:aX}),(0,V.Kr)(a0,aM,aW.headers,aW.status,a1)}catch(c){if((0,A.uw)(a1,a0,aM,!1),c&&"object"==typeof c&&"SEMAPHORE_TIMEOUT"===c.code){if((0,A.E5)({model:a1,provider:a0,connectionId:aM,status:`FAILED ${c.code}`}).catch(()=>{}),aR)throw c;let a=c.message||"Semaphore timeout";return bs({status:s.gx.RATE_LIMITED,error:a,providerRequest:aZ||bE,clientResponse:(0,r.xJ)(s.gx.RATE_LIMITED,a),claudeCacheMeta:b2,cacheSource:"upstream"}),a5(s.gx.RATE_LIMITED,c.code),(0,r.A1)(s.gx.RATE_LIMITED,a)}let a="AbortError"===c.name?499:"TimeoutError"===c.name||"BodyTimeoutError"===c.name?s.gx.GATEWAY_TIMEOUT:s.gx.BAD_GATEWAY,b="AbortError"===c.name?"Request aborted":(0,r.lR)(c,a0,a1,a);if((0,A.E5)({model:a1,provider:a0,connectionId:aM,status:`FAILED ${a}`}).catch(()=>{}),bs({status:a,error:b,providerRequest:aZ||bE,clientResponse:(0,r.xJ)(a,b),claudeCacheMeta:b2,cacheSource:"upstream"}),"AbortError"===c.name)return bW.handleError(c),(0,r.A1)(499,"Request aborted");return a5(a,c instanceof Error&&c.name?c.name:"upstream_error"),console.log(`${h.lm.red}[ERROR] ${b}${h.lm.reset}`),(0,r.A1)(a,b)}let b3=!1,b4=aW.status,b5="",b6=null,b7=null;if("qwen"===a0&&aW.status===s.gx.BAD_REQUEST){let a=await (0,r.zL)(aW,a0);b4=a.statusCode,b5=a.message,b6=a.retryAfterMs,b7=a.responseBody,b3=!0}let b8="qwen"===a0&&b4===s.gx.BAD_REQUEST&&b5&&b5.toLowerCase().includes("session has expired");if((aW.status===s.gx.UNAUTHORIZED||aW.status===s.gx.FORBIDDEN||b8)&&1){let a=await (0,l.qZ)(()=>bU.refreshCredentials(d,ar),3,ar,a0);if(a?.accessToken||a?.copilotToken){ar?.info?.("TOKEN",`${a0.toUpperCase()} | refreshed`),Object.assign(d,a),as&&a&&await as(a);try{let a=String(bE.model||bi),b=await bU.execute({model:a,body:bE,stream:bH,credentials:bV(),signal:bW.signal,log:ar,extendedContext:a2,upstreamExtraHeaders:bu(a),clientHeaders:aI(aL?.headers,aO),onCredentialsRefreshed:as});b.response.ok?(aW=b.response,aX=b.url,aY=b.headers,aZ=b.transformedBody,bA.logTargetRequest(aX,aY,aZ),(0,A.mw)(a1,a0,aM,{providerRequest:aZ,providerUrl:aX})):aW=b.response,b3=!1}catch{ar?.warn?.("TOKEN",`${a0.toUpperCase()} | retry after refresh failed`)}}else ar?.warn?.("TOKEN",`${a0.toUpperCase()} | refresh failed`)}if(await a6(aW.headers,aW.status),!aW.ok){(0,A.uw)(a1,a0,aM,!1);let a=aW.status,b="",c=null;if(b3)a=b4,b=b5,c=b6;else{let d=await (0,r.zL)(aW,a0);a=d.statusCode,b=d.message,c=d.retryAfterMs,b7=d.responseBody}let e=(0,t.Gm)(a,b,a0);if(aM&&e)try{if(e===t.hr.FORBIDDEN)await (0,u.rj)(aM,{isActive:!1,testStatus:"banned",lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} banned (${a}) — disabling permanently`);else if(e===t.hr.ACCOUNT_DEACTIVATED)await (0,u.rj)(aM,{isActive:!1,testStatus:"deactivated",lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} account deactivated (${a}) — disabling permanently`);else if(e===t.hr.QUOTA_EXHAUSTED){let f=c||s.Bm.rateLimit,g=aC({provider:a0,model:b0,connectionId:aM,credentials:d});g&&(0,W.wl)(g,f),(0,X.CY)(a0,aM,a1,"quota_exhausted",f)?console.warn(`[provider] Node ${aM} model-only quota exhausted (${a}) for ${a1} - ${Math.ceil(f/1e3)}s (connection stays active)`):(await (0,u.rj)(aM,{testStatus:"credits_exhausted",lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} exhausted quota (${a})`))}else e===t.hr.ACCOUNT_DEACTIVATED?(await (0,u.rj)(aM,{isActive:!1,testStatus:"expired",lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} account deactivated (${a}) — marked expired`)):e===t.hr.UNAUTHORIZED?await (0,u.rj)(aM,{lastErrorType:e,lastError:b,errorCode:a}):e===t.hr.OAUTH_INVALID_TOKEN?(await (0,u.rj)(aM,{lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} OAuth token invalid (${a}) — token refresh available`)):e===t.hr.PROJECT_ROUTE_ERROR&&(await (0,u.rj)(aM,{lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} project routing error (${a}) — not banning`))}catch{}(0,A.E5)({model:a1,provider:a0,connectionId:aM,status:`FAILED ${a}`}).catch(()=>{});let f=(0,r.lR)(Error(b),a0,a1,a);if(console.log(`${h.lm.red}[ERROR] ${f}${h.lm.reset}`),c&&"antigravity"===a0){let a=Math.ceil(c/1e3);ar?.debug?.("RETRY",`Antigravity quota reset in ${a}s (${c}ms)`)}if(bA.logError(Error(b),aZ||bE),bA.logProviderResponse(aW.status,aW.statusText,aW.headers,b7),(0,V.Kr)(a0,aM,aW.headers,a,a1),aM&&null!=b7&&(0,V.ph)(a0,aM,b7,a,a1),(0,_.I2)(a,b)){let b=(0,_.ec)(b0,b_);if(!b)return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"model_unavailable"),(0,r.A1)(a,f,c);b_.add(b),b0=b,bE.model=b,ar?.info?.("MODEL_FALLBACK",`${a1} unavailable (${a}) → trying ${b}`);try{let d=await b$(b,!1);if(!d.response.ok)return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"model_unavailable"),(0,r.A1)(a,f,c);aW=d.response,aX=d.url,aY=d.headers,aZ=d.transformedBody,bA.logTargetRequest(aX,aY,aZ),ar?.info?.("MODEL_FALLBACK",`Serving ${b} as fallback for ${a1}`)}catch{return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"model_unavailable"),(0,r.A1)(a,f,c)}}else if((0,_.A$)(a,b)){let b=(0,_.mu)(b0).filter(a=>a!==b0&&!b_.has(a)),d=(0,_.BO)(b0,b)??(0,_.ec)(b0,b_);if(!d)return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"context_overflow"),(0,r.A1)(a,f,c);b_.add(d),b0=d,bE.model=d,ar?.info?.("CONTEXT_OVERFLOW_FALLBACK",`${a1} context overflow → trying ${d}`);try{let b=await b$(d,!1);if(!b.response.ok)return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"context_overflow"),(0,r.A1)(a,f,c);aW=b.response,aX=b.url,aY=b.headers,aZ=b.transformedBody,bA.logTargetRequest(aX,aY,aZ),ar?.info?.("CONTEXT_OVERFLOW_FALLBACK",`Serving ${d} as fallback for ${a1}`)}catch{return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"context_overflow"),(0,r.A1)(a,f,c)}}else{bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,`upstream_${a}`);let e=Array.isArray(bE.tools)&&bE.tools.length>0,g=!1;if(!aU&&!bx){let c=(0,ad.fU)(a,b,e,ad.sr);if((0,ad.Z4)(c)){ar?.info?.("EMERGENCY_FALLBACK",c.reason);try{let a=a0,b=(0,H.SB)(c.provider),e=await b.execute({model:c.model,body:{...bE,model:c.model,max_tokens:Math.min("number"==typeof bE.max_tokens?bE.max_tokens:c.maxOutputTokens,c.maxOutputTokens),max_completion_tokens:Math.min("number"==typeof bE.max_completion_tokens?bE.max_completion_tokens:"number"==typeof bE.max_tokens?bE.max_tokens:c.maxOutputTokens,c.maxOutputTokens)},stream:!1,credentials:d,signal:bW.signal,log:ar,extendedContext:a2});e.response.ok?(a0=c.provider,a1=c.model,bE.model=c.model,aW=e.response,aX=e.url,aY=e.headers,aZ=e.transformedBody,bA.logTargetRequest(aX,aY,aZ),ar?.info?.("EMERGENCY_FALLBACK",`Serving ${c.provider}/${c.model} as budget fallback for ${a}/${a3}`),g=!0):ar?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback also failed (${e.response.status})`)}catch(b){let a=b instanceof Error?b.message:String(b);ar?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback error: ${a}`)}}}if(!g)return(0,r.A1)(a,f,c)}}if(!bx){let b;(0,A.uw)(a1,a0,aM,!1);let c=(aW.headers.get("content-type")||"").toLowerCase(),e=bk,i=await (0,h.sh)(aW.text()),j=(0,ah.xm)(i),l=c.includes("text/event-stream")||c.includes("application/x-ndjson")||/(^|\n)\s*(event|data):/m.test(i);if(l){let a=function(a,b){if(b.includes("application/x-ndjson")){let b;return b=String(a||"").split(/\r?\n/).map(a=>a.trim()).filter(a=>a.length>0),0===b.length?a:`${b.map(a=>`data: ${a}
|
|
60
|
+
${e}`}]:[]}return ar?.debug?.("CONTENT",`Dropped unsupported content part type="${a.type}"`),[]}))};try{if(bc)bE={...a,_nativeCodexPassthrough:!0},ar?.debug?.("FORMAT","native codex passthrough enabled");else if(bG){let b={...a};if(ba!==g.h.OPENAI){let c=(0,G.QT7)(a0||"",a1||"",ba),e=(0,G.e87)(a0||"",a1||"",ba);b=(0,f.GH)(ba,g.h.OPENAI,a1,{...a},bx,d,a0,bA,{normalizeToolCallId:c,preserveDeveloperRole:e,preserveCacheControl:bL})}bI=(0,ap.L)(aL?.headers),bE=(0,ap.$Y)({sourceBody:a,normalizedBody:b,claudeBody:ba===g.h.CLAUDE?a:null,model:a1,stream:bH,sessionId:bI,cwd:process.cwd(),now:new Date,preserveCacheControl:bL}),ar?.debug?.("FORMAT","claude-code-compatible bridge enabled")}else if(bF){if((bE={...a})._disableToolPrefix=!0,bM(bE,{preserveToolResultBlocks:!0}),ar?.debug?.("FORMAT",`claude passthrough (preserveCache=${bL})`),"claude"!==a0&&bE.output_config&&"object"==typeof bE.output_config){let a=bE.output_config;delete a.format,0===Object.keys(a).length&&delete bE.output_config}}else{if(bE={...a},bk===g.h.CLAUDE&&(bE._disableToolPrefix=!0,bM(bE)),a0?.startsWith("openai-compatible-")&&Array.isArray(bE.tools)){let a=bE.tools.length;bE.tools=bE.tools.filter(a=>!a.type||"function"===a.type||!!a.function||!!a.name).map(a=>!a.type||"function"===a.type||a.function?a:{type:"function",function:{name:a.name,...void 0!==a.description?{description:a.description}:{},...void 0!==a.parameters||void 0!==a.input_schema?{parameters:a.parameters??a.input_schema??{}}:{},...void 0!==a.strict?{strict:a.strict}:{}}});let b=a-bE.tools.length;b>0&&ar?.debug?.("TOOLS",`Dropped ${b} unconvertible tool(s) for openai-compatible provider`)}let b=(0,G.QT7)(a0||"",a1||"",ba),c=(0,G.e87)(a0||"",a1||"",ba);bE=(0,f.GH)(ba,bk,a1,bE,bx,d,a0,bA,{normalizeToolCallId:b,preserveDeveloperRole:c,preserveCacheControl:bL})}}catch(e){let a=Number(e?.statusCode),b=Number.isInteger(a)&&a>=400&&a<=599?a:s.gx.SERVER_ERROR,c=e?.message||"Invalid request",d="string"==typeof e?.errorType?e.errorType:null;if(ar?.warn?.("TRANSLATE",`Request translation failed: ${c}`),d)return{success:!1,status:b,error:c,response:new Response(JSON.stringify({error:{message:c,type:d,code:d}}),{status:b,headers:{"Content-Type":"application/json"}})};return(0,r.A1)(b,c)}let bN=bE._toolNameMap,bO=bF?function(a){if(!a||!Array.isArray(a.tools))return null;let b=new Map;for(let c of a.tools){let a=c?.type==="function"&&c.function&&"object"==typeof c.function?c.function:c,d="string"==typeof a?.name?a.name.trim():"";d&&b.set(`${F.Zj}${d}`,d)}return b.size>0?b:null}(a):null,bP=bN instanceof Map&&bN.size>0?bN:bO;delete bE._toolNameMap,delete bE._disableToolPrefix;let bQ=bi;bQ.startsWith(`${a0}/`)?bQ=bQ.slice(a0.length+1):bj&&bQ.startsWith(`${bj}/`)&&(bQ=bQ.slice(bj.length+1)),bE.model=bQ;let bR=(0,q.Gk)(a0,a1);if(bR.length>0){let a=[];for(let b of bR)Object.hasOwn(bE,b)&&(a.push(b),delete bE[b]);a.length>0&&ar?.warn?.("PARAMS",`Stripped unsupported params for ${a1}: ${a.join(", ")}`)}let bS=s.Aj[a0];if(bS)for(let a of["max_tokens","max_completion_tokens"])"number"==typeof bE[a]&&bE[a]>bS&&(ar?.debug?.("PARAMS",`Capping ${a} from ${bE[a]} to ${bS} for ${a0}`),bE[a]=bS);let bT=async a=>{let b=await aH(a);if(!b.enabled||"native"===b.mode)return(0,H.SB)(a);if("cliproxyapi"===b.mode)return ar?.info?.("UPSTREAM_PROXY",`${a} routed through CLIProxyAPI (passthrough)`),(0,H.SB)("cliproxyapi");let c=(0,H.SB)(a),d=(0,H.SB)("cliproxyapi"),e=Object.create(c);return e.execute=async b=>{let e,f;try{e=await c.execute(b)}catch(e){let c=e instanceof Error?e.message:String(e);ar?.info?.("UPSTREAM_PROXY",`${a} native error (${c}), retrying via CLIProxyAPI`);try{return await d.execute(b)}catch(c){let b=c instanceof Error?c.message:String(c);throw ar?.error?.("UPSTREAM_PROXY",`${a} CLIProxyAPI fallback also failed: ${b}`),c}}if(!((f=e.response.status)>=500||429===f||0===f))return e;ar?.info?.("UPSTREAM_PROXY",`${a} native failed (${e.response.status}), retrying via CLIProxyAPI`);try{return await d.execute(b)}catch(c){let b=c instanceof Error?c.message:String(c);throw ar?.error?.("UPSTREAM_PROXY",`${a} CLIProxyAPI fallback also failed: ${b}`),c}},e},bU=await bT(a0),bV=()=>{let a=bc?{...d,requestEndpointPath:a9}:d;return bI?{...a,providerSpecificData:{...a?.providerSpecificData||{},ccSessionId:bI}}:a},bW=(0,j.jd)({onDisconnect:aK,log:ar,provider:a0,model:a1}),bX={...bE,model:`${a0}/${a1}`,stream:bx},bY=(0,aa.Gp)(bX),bZ=bY?(0,aa.nC)(bX):null,b$=async(a=bi,b=!1)=>{let e=async()=>{let b=bV(),e=function(a){var b=a?.maxConcurrent;if("number"==typeof b&&Number.isFinite(b))return b;if("string"==typeof b&&b.trim().length>0){let a=Number(b);return Number.isFinite(a)?a:null}return null}(b),f=aC({provider:a0,model:a,connectionId:aM,credentials:b}),i=bE.model===a?bE:{...bE,model:a},j="string"==typeof i.model&&i.model.length>0?i.model:a,k=(0,K.wu)({provider:a0,targetFormat:bk}),l=await (0,K.IQ)(i,j,k);if(i=l.payload,l.applied.length>0){let a=l.applied.map(a=>{if("filter"===a.type)return`${a.type}:${a.path}`;let b=JSON.stringify(a.value),c="string"==typeof b&&b.length>80?`${b.slice(0,77)}...`:b;return`${a.type}:${a.path}=${c}`}).join(", ");ar?.debug?.("PAYLOAD_RULES",`Applied ${l.applied.length} rule(s) for ${j} (${k.join(", ")}): ${a}`)}let m="string"==typeof i.user&&i.user.trim().length>0;if("qwen"!==a0||d?.apiKey||"string"!=typeof d?.accessToken||!(d.accessToken.trim().length>0)||m||(i={...i,user:"omniroute-qwen-oauth"},ar?.debug?.("QWEN","Injected fallback user for OAuth request")),bk===g.h.OPENAI&&(0,L.R6)(a0)&&!i.prompt_cache_key&&Array.isArray(i.messages)&&!["nvidia","codex","xai"].includes(a0)){let{generatePromptCacheKey:a}=await c.e(15546).then(c.bind(c,15546)),b=a(i.messages);b&&(i={...i,prompt_cache_key:b})}let n=f&&null!=e?await (0,W.XC)(f,{maxConcurrency:e}):()=>{};try{let c=await (0,V.YO)(a0,aM,a,async()=>{let c=0,d="qwen"===a0?3:1;for(;c<d;){let e=await bU.execute({model:a,body:i,stream:bH,credentials:b,signal:bW.signal,log:ar,extendedContext:a2,upstreamExtraHeaders:bu(a),clientHeaders:aI(aL?.headers,aO),onCredentialsRefreshed:as});if("qwen"===a0&&429===e.response.status&&c<d-1&&(await e.response.clone().text().catch(()=>"")).toLowerCase().includes("exceeded your current quota")){let a=1500*(c+1);ar?.warn?.("QWEN_RETRY",`Quota 429 hit. Retrying in ${a}ms...`),await new Promise(b=>setTimeout(b,a)),c++;continue}if(bx){let a=e.response.body;if(!a)return n(),e;return{...e,response:new Response(function(a,b){let c=a.getReader(),d=!1,e=()=>{d||(d=!0,b())};return new ReadableStream({async pull(a){try{let{done:b,value:d}=await c.read();if(b){e(),a.close();return}a.enqueue(d)}catch(b){e(),a.error(b)}},async cancel(a){try{await c.cancel(a)}finally{e()}}})}(a,n),{status:e.response.status,statusText:e.response.statusText,headers:e.response.headers})}}return e}});if(bx)return c;let d=c.response.status,e=c.response.statusText,f=Array.from(c.response.headers.entries()),g=await (0,h.sh)(c.response.text());return n(),{...c,response:new Response(g,{status:d,statusText:e,headers:f}),_dedupSnapshot:{status:d,statusText:e,headers:f,payload:g}}}catch(a){throw n(),a}};if(b&&bY&&bZ){var f;let a,b=await (0,aa.bu)(bZ,e);return b.wasDeduplicated&&ar?.debug?.("DEDUP",`Joined in-flight request hash=${bZ}`),(a=(f=b.result)&&"object"==typeof f?f._dedupSnapshot:void 0)?{...f,response:new Response(a.payload,{status:a.status,statusText:a.statusText,headers:a.headers})}:f}return e()};(0,A.uw)(a1,a0,aM,!0,{clientEndpoint:aL?.endpoint||"/v1/chat/completions",clientRequest:aL?.body??a});let b_=new Set([bi]),b0=bi;(0,A.E5)({model:a1,provider:a0,connectionId:aM,status:"PENDING"}).catch(()=>{});let b1=bE.messages?.length||bE.contents?.length||bE.request?.contents?.length||0;ar?.debug?.("REQUEST",`${a0.toUpperCase()} | ${a1} | ${b1} msgs`);let b2=null;try{let a=await b$(bi,!0);aW=a.response,aX=a.url,aY=a.headers,aZ=a.transformedBody,b2=function(a,b,c){if(a!==g.h.CLAUDE||!b||"object"!=typeof b)return null;let d=(a,b={})=>({type:a&&"string"==typeof a.type&&a.type.trim()?a.type.trim():"ephemeral",ttl:a&&"string"==typeof a.ttl&&a.ttl.trim()?a.ttl.trim():null,...b}),e=Array.isArray(b.system)?b.system.flatMap((a,b)=>{if(!a||"object"!=typeof a||("string"==typeof a.text&&a.text.trim().length>0?a.text.trim():"").startsWith("x-anthropic-billing-header:"))return[];let c=a.cache_control&&"object"==typeof a.cache_control?a.cache_control:null;return c?[d(c,{index:b})]:[]}):[],f=Array.isArray(b.tools)?b.tools.flatMap((a,b)=>{if(!a||"object"!=typeof a)return[];let c=a.cache_control&&"object"==typeof a.cache_control?a.cache_control:null,e="string"==typeof a.name&&a.name.trim()?a.name.trim():null;return c?[d(c,{index:b,name:e})]:[]}):[],h=Array.isArray(b.messages)?b.messages.flatMap((a,b)=>{if(!a||"object"!=typeof a||!Array.isArray(a.content))return[];let c="string"==typeof a.role&&a.role.trim()?a.role.trim():"unknown";return a.content.flatMap((a,e)=>{if(!a||"object"!=typeof a)return[];let f=a.cache_control&&"object"==typeof a.cache_control?a.cache_control:null;return f?[d(f,{messageIndex:b,contentIndex:e,role:c,blockType:"string"==typeof a.type&&a.type.trim()?a.type.trim():"unknown"})]:[]})}):[],i=e.length+f.length+h.length,j=aB(c,"Anthropic-Beta");return 0!==i||j?{applied:i>0,totalBreakpoints:i,anthropicBeta:j,systemBreakpoints:e,toolBreakpoints:f,messageBreakpoints:h}:null}(bk,aZ,aY),bA.logTargetRequest(aX,aY,aZ),(0,A.mw)(a1,a0,aM,{providerRequest:aZ,providerUrl:aX}),(0,V.Kr)(a0,aM,aW.headers,aW.status,a1)}catch(c){if((0,A.uw)(a1,a0,aM,!1),c&&"object"==typeof c&&"SEMAPHORE_TIMEOUT"===c.code){if((0,A.E5)({model:a1,provider:a0,connectionId:aM,status:`FAILED ${c.code}`}).catch(()=>{}),aR)throw c;let a=c.message||"Semaphore timeout";return bs({status:s.gx.RATE_LIMITED,error:a,providerRequest:aZ||bE,clientResponse:(0,r.xJ)(s.gx.RATE_LIMITED,a),claudeCacheMeta:b2,cacheSource:"upstream"}),a5(s.gx.RATE_LIMITED,c.code),(0,r.A1)(s.gx.RATE_LIMITED,a)}let a="AbortError"===c.name?499:"TimeoutError"===c.name||"BodyTimeoutError"===c.name?s.gx.GATEWAY_TIMEOUT:s.gx.BAD_GATEWAY,b="AbortError"===c.name?"Request aborted":(0,r.lR)(c,a0,a1,a);if((0,A.E5)({model:a1,provider:a0,connectionId:aM,status:`FAILED ${a}`}).catch(()=>{}),bs({status:a,error:b,providerRequest:aZ||bE,clientResponse:(0,r.xJ)(a,b),claudeCacheMeta:b2,cacheSource:"upstream"}),"AbortError"===c.name)return bW.handleError(c),(0,r.A1)(499,"Request aborted");return a5(a,c instanceof Error&&c.name?c.name:"upstream_error"),console.log(`${h.lm.red}[ERROR] ${b}${h.lm.reset}`),(0,r.A1)(a,b)}let b3=!1,b4=aW.status,b5="",b6=null,b7=null;if("qwen"===a0&&aW.status===s.gx.BAD_REQUEST){let a=await (0,r.zL)(aW,a0);b4=a.statusCode,b5=a.message,b6=a.retryAfterMs,b7=a.responseBody,b3=!0}let b8="qwen"===a0&&b4===s.gx.BAD_REQUEST&&b5&&b5.toLowerCase().includes("session has expired");if((aW.status===s.gx.UNAUTHORIZED||aW.status===s.gx.FORBIDDEN||b8)&&1){let a=await (0,l.qZ)(()=>bU.refreshCredentials(d,ar),3,ar,a0);if(a?.accessToken||a?.copilotToken){ar?.info?.("TOKEN",`${a0.toUpperCase()} | refreshed`),Object.assign(d,a),as&&a&&await as(a);try{let a=String(bE.model||bi),b=await bU.execute({model:a,body:bE,stream:bH,credentials:bV(),signal:bW.signal,log:ar,extendedContext:a2,upstreamExtraHeaders:bu(a),clientHeaders:aI(aL?.headers,aO),onCredentialsRefreshed:as});b.response.ok?(aW=b.response,aX=b.url,aY=b.headers,aZ=b.transformedBody,bA.logTargetRequest(aX,aY,aZ),(0,A.mw)(a1,a0,aM,{providerRequest:aZ,providerUrl:aX})):aW=b.response,b3=!1}catch{ar?.warn?.("TOKEN",`${a0.toUpperCase()} | retry after refresh failed`)}}else ar?.warn?.("TOKEN",`${a0.toUpperCase()} | refresh failed`)}if(await a6(aW.headers,aW.status),!aW.ok){(0,A.uw)(a1,a0,aM,!1);let a=aW.status,b="",c=null;if(b3)a=b4,b=b5,c=b6;else{let d=await (0,r.zL)(aW,a0);a=d.statusCode,b=d.message,c=d.retryAfterMs,b7=d.responseBody}let e=(0,t.Gm)(a,b,a0);if(aM&&e)try{if(e===t.hr.FORBIDDEN)await (0,u.rj)(aM,{isActive:!1,testStatus:"banned",lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} banned (${a}) — disabling permanently`);else if(e===t.hr.ACCOUNT_DEACTIVATED)await (0,u.rj)(aM,{isActive:!1,testStatus:"deactivated",lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} account deactivated (${a}) — disabling permanently`);else if(e===t.hr.QUOTA_EXHAUSTED){let f=c||s.Bm.rateLimit,g=aC({provider:a0,model:b0,connectionId:aM,credentials:d});g&&(0,W.wl)(g,f),(0,X.CY)(a0,aM,a1,"quota_exhausted",f)?console.warn(`[provider] Node ${aM} model-only quota exhausted (${a}) for ${a1} - ${Math.ceil(f/1e3)}s (connection stays active)`):(await (0,u.rj)(aM,{testStatus:"credits_exhausted",lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} exhausted quota (${a})`))}else e===t.hr.ACCOUNT_DEACTIVATED?(await (0,u.rj)(aM,{isActive:!1,testStatus:"expired",lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} account deactivated (${a}) — marked expired`)):e===t.hr.UNAUTHORIZED?await (0,u.rj)(aM,{lastErrorType:e,lastError:b,errorCode:a}):e===t.hr.OAUTH_INVALID_TOKEN?(await (0,u.rj)(aM,{lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} OAuth token invalid (${a}) — token refresh available`)):e===t.hr.PROJECT_ROUTE_ERROR&&(await (0,u.rj)(aM,{lastErrorType:e,lastError:b,errorCode:a}),console.warn(`[provider] Node ${aM} project routing error (${a}) — not banning`))}catch{}(0,A.E5)({model:a1,provider:a0,connectionId:aM,status:`FAILED ${a}`}).catch(()=>{});let f=(0,r.lR)(Error(b),a0,a1,a);if(console.log(`${h.lm.red}[ERROR] ${f}${h.lm.reset}`),c&&"antigravity"===a0){let a=Math.ceil(c/1e3);ar?.debug?.("RETRY",`Antigravity quota reset in ${a}s (${c}ms)`)}if(bA.logError(Error(b),aZ||bE),bA.logProviderResponse(aW.status,aW.statusText,aW.headers,b7),(0,V.Kr)(a0,aM,aW.headers,a,a1),aM&&null!=b7&&(0,V.ph)(a0,aM,b7,a,a1),(0,_.I2)(a,b)){let b=(0,_.ec)(b0,b_);if(!b)return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"model_unavailable"),(0,r.A1)(a,f,c);b_.add(b),b0=b,bE.model=b,ar?.info?.("MODEL_FALLBACK",`${a1} unavailable (${a}) → trying ${b}`);try{let d=await b$(b,!1);if(!d.response.ok)return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"model_unavailable"),(0,r.A1)(a,f,c);aW=d.response,aX=d.url,aY=d.headers,aZ=d.transformedBody,bA.logTargetRequest(aX,aY,aZ),ar?.info?.("MODEL_FALLBACK",`Serving ${b} as fallback for ${a1}`)}catch{return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"model_unavailable"),(0,r.A1)(a,f,c)}}else if((0,_.A$)(a,b)){let b=(0,_.mu)(b0).filter(a=>a!==b0&&!b_.has(a)),d=(0,_.BO)(b0,b)??(0,_.ec)(b0,b_);if(!d)return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"context_overflow"),(0,r.A1)(a,f,c);b_.add(d),b0=d,bE.model=d,ar?.info?.("CONTEXT_OVERFLOW_FALLBACK",`${a1} context overflow → trying ${d}`);try{let b=await b$(d,!1);if(!b.response.ok)return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"context_overflow"),(0,r.A1)(a,f,c);aW=b.response,aX=b.url,aY=b.headers,aZ=b.transformedBody,bA.logTargetRequest(aX,aY,aZ),ar?.info?.("CONTEXT_OVERFLOW_FALLBACK",`Serving ${d} as fallback for ${a1}`)}catch{return bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,"context_overflow"),(0,r.A1)(a,f,c)}}else{bs({status:a,error:f,providerRequest:aZ||bE,providerResponse:b7,clientResponse:(0,r.xJ)(a,f),cacheSource:"upstream"}),a5(a,`upstream_${a}`);let e=Array.isArray(bE.tools)&&bE.tools.length>0,g=!1;if(!aU&&!bx){let c=(0,ad.fU)(a,b,e,ad.sr);if((0,ad.Z4)(c)){ar?.info?.("EMERGENCY_FALLBACK",c.reason);try{let a=a0,b=(0,H.SB)(c.provider),e=await b.execute({model:c.model,body:{...bE,model:c.model,max_tokens:Math.min("number"==typeof bE.max_tokens?bE.max_tokens:c.maxOutputTokens,c.maxOutputTokens),max_completion_tokens:Math.min("number"==typeof bE.max_completion_tokens?bE.max_completion_tokens:"number"==typeof bE.max_tokens?bE.max_tokens:c.maxOutputTokens,c.maxOutputTokens)},stream:!1,credentials:d,signal:bW.signal,log:ar,extendedContext:a2});e.response.ok?(a0=c.provider,a1=c.model,bE.model=c.model,aW=e.response,aX=e.url,aY=e.headers,aZ=e.transformedBody,bA.logTargetRequest(aX,aY,aZ),ar?.info?.("EMERGENCY_FALLBACK",`Serving ${c.provider}/${c.model} as budget fallback for ${a}/${a3}`),g=!0):ar?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback also failed (${e.response.status})`)}catch(b){let a=b instanceof Error?b.message:String(b);ar?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback error: ${a}`)}}}if(!g)return(0,r.A1)(a,f,c)}}if(!bx){let b;(0,A.uw)(a1,a0,aM,!1);let c=(aW.headers.get("content-type")||"").toLowerCase(),e=bk,i=await (0,h.sh)(aW.text()),j=(0,ah.xm)(i),l=c.includes("text/event-stream")||c.includes("application/x-ndjson")||/(^|\n)\s*(event|data):/m.test(i);if(l){let a=function(a,b){if(b.includes("application/x-ndjson")){let b;return b=String(a||"").split(/\r?\n/).map(a=>a.trim()).filter(a=>a.length>0),0===b.length?a:`${b.map(a=>`data: ${a}
|
|
61
61
|
`).join("\n")}
|
|
62
62
|
`}return a}(i,c),d=c.includes("application/x-ndjson")?"NDJSON":"SSE";ar?.warn?.("STREAM",`Unexpected ${d} response for non-streaming request — buffering`);let f=function(a,b,c){let d=[],e=new Set,f=a=>{!a||e.has(a)||(e.add(a),d.push(a))};for(let e of(f(b),f(g.h.OPENAI_RESPONSES),f(g.h.CLAUDE),f(g.h.OPENAI),d)){let b=e===g.h.OPENAI_RESPONSES?(0,T.Bw)(a,c):e===g.h.CLAUDE?(0,T.H3)(a,c):(0,T.Fe)(a,c);if(b&&"object"==typeof b)return{body:b,format:e}}return null}(a,bk,a1);if(!f){(0,A.E5)({model:a1,provider:a0,connectionId:aM,status:`FAILED ${s.gx.BAD_GATEWAY}`}).catch(()=>{});let a="Invalid SSE response for non-streaming request";return bs({status:s.gx.BAD_GATEWAY,error:a,providerRequest:aZ||bE,providerResponse:j,clientResponse:(0,r.xJ)(s.gx.BAD_GATEWAY,a),cacheSource:"upstream"}),a5(s.gx.BAD_GATEWAY,"invalid_sse_payload"),(0,r.A1)(s.gx.BAD_GATEWAY,a)}b=f.body,e=f.format}else try{b=i?JSON.parse(i):{}}catch{(0,A.E5)({model:a1,provider:a0,connectionId:aM,status:`FAILED ${s.gx.BAD_GATEWAY}`}).catch(()=>{});let a="Invalid JSON response from provider";return bs({status:s.gx.BAD_GATEWAY,error:a,providerRequest:aZ||bE,providerResponse:j,clientResponse:(0,r.xJ)(s.gx.BAD_GATEWAY,a),cacheSource:"upstream"}),a5(s.gx.BAD_GATEWAY,"invalid_json_payload"),(0,r.A1)(s.gx.BAD_GATEWAY,a)}if((0,t.Oc)(b)){(0,A.E5)({model:a1,provider:a0,connectionId:aM,status:`FAILED ${s.gx.BAD_GATEWAY}`}).catch(()=>{});let a="Provider returned empty content";bs({status:s.gx.BAD_GATEWAY,error:a,providerRequest:aZ||bE,providerResponse:j,clientResponse:(0,r.xJ)(s.gx.BAD_GATEWAY,a),cacheSource:"upstream"}),a5(s.gx.BAD_GATEWAY,"empty_content");let c=(0,_.ec)(b0,b_);if(!c)return(0,r.A1)(s.gx.BAD_GATEWAY,a);b_.add(c),b0=c,bE.model=c,ar?.info?.("EMPTY_CONTENT_FALLBACK",`${a1} returned empty content → trying ${c}`);try{let d=await b$(c,!1);if(!d.response.ok)return(0,r.A1)(s.gx.BAD_GATEWAY,a);{let e=await (0,h.sh)(d.response.text());try{b=e?JSON.parse(e):{},aX=d.url,aY=d.headers,aZ=d.transformedBody,bA.logTargetRequest(aX,aY,aZ),ar?.info?.("EMPTY_CONTENT_FALLBACK",`Serving ${c} as fallback for ${a1}`)}catch{return(0,r.A1)(s.gx.BAD_GATEWAY,a)}}}catch{return(0,r.A1)(s.gx.BAD_GATEWAY,a)}}let m=aA(bP,aZ??null);ba===g.h.CLAUDE&&bk===g.h.CLAUDE&&(b=function(a,b){if(!b||!Array.isArray(a?.content))return a;let c=!1,d=a.content.map(a=>{if(a?.type!=="tool_use"||"string"!=typeof a?.name)return a;let d=b.get(a.name)??a.name;return d===a.name?a:(c=!0,{...a,name:d})});return c?{...a,content:d}:a}(b,m)),bA.logProviderResponse(aW.status,aW.statusText,aW.headers,l?{_streamed:!0,_format:"sse-json",summary:b}:b),at&&await at(),await az({provider:a0,connectionId:aM,providerSpecificData:d?.providerSpecificData,log:ar});let n=(0,S.M)(b,a0);(0,A.E5)({model:a1,provider:a0,connectionId:aM,tokens:n,status:"200 OK"}).catch(()=>{});let o=aE(n);if(n&&"object"==typeof n){let a=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"})}] 📊 [USAGE] ${a0.toUpperCase()} | ${(0,B.Hx)(n)}${aM?` | account=${aM.slice(0,8)}...`:""}`;console.log(`${h.lm.green}${a}${h.lm.reset}`),n.prompt_tokens,aD(n.cache_read_input_tokens??n.cached_tokens??n.prompt_tokens_details?.cached_tokens),aD(n.cache_creation_input_tokens??n.prompt_tokens_details?.cache_creation_tokens),(0,A.sZ)({provider:a0||"unknown",model:a1||"unknown",tokens:n,status:"200",success:!0,latencyMs:Date.now()-a4,timeToFirstTokenMs:Date.now()-a4,errorCode:null,timestamp:new Date().toISOString(),connectionId:aM||void 0,apiKeyId:aN?.id||void 0,apiKeyName:aN?.name||void 0}).catch(a=>{console.error("Failed to save usage stats:",a.message)})}let p=(0,f.nZ)(e,be)?(0,R.l)(b,e,be,m):b,q=p;if("claude"!==ba||bx||"string"!=typeof p?.choices?.[0]?.message?.content||(p.choices[0].message.content=(0,af.yN)(p.choices[0].message.content)),p?.choices)for(let a of p.choices)a.message?.tool_calls&&a.message.tool_calls.length>0&&"tool_calls"!==a.finish_reason&&(a.finish_reason="tool_calls");try{let a=p?.choices?.[0],b=a?.message;(0,N.W)(b,a0,a1)}catch{}if(be===g.h.OPENAI_RESPONSES?p=(0,U.Xp)(p):be===g.h.OPENAI&&(p=(0,U.LG)(p)),p?.usage){let a=(0,k.O9)(p.usage);p.usage=(0,k.WL)(a,be)}else{let b=JSON.stringify(p?.choices?.[0]?.message?.content||"").length;if(b>0){let c=(0,k.OF)(a,b,be);p.usage=(0,k.WL)(c,be)}}if(bB&&bC?.enabled&&bC.maxTokens>0){let b=ay(a);b&&(0,ai.B)(b,bB,br);let c=ax(q);c&&(0,ai.B)(c,bB,br)}let u=!!bB&&bC?.skillsEnabled===!0,v=bm.toolName?[bm.toolName]:[];(u||v.length>0)&&(p=await (0,an.dK)(p,function(a){switch(a){case g.h.CLAUDE:return"claude";case g.h.GEMINI:return"gemini";default:return"openai"}}(ba),{apiKeyId:bB||"local",sessionId:br,requestId:bq,builtinToolNames:v,customSkillExecutionEnabled:u}));let w={apiKeyInfo:aN,disabledGuardrails:(0,J.resolveDisabledGuardrails)({apiKeyInfo:aN??null,body:a,headers:aL?.headers??null}),endpoint:aL?.endpoint||null,headers:aL?.headers??null,log:ar,method:"POST",model:a1,provider:a0,sourceFormat:e,stream:!1,targetFormat:be},x=await J.guardrailRegistry.runPostCallHooks(p,w);p=x.response;let y=(n&&"object"==typeof n?n:null)||(p?.usage&&"object"==typeof p.usage?p.usage:null),z=y?await (0,D.yN)(a0,a1,y):0;if(x.blocked){let a=x.message||"Response blocked by guardrail";return bs({status:s.gx.BAD_REQUEST,tokens:n,responseBody:b,providerRequest:aZ||bE,providerResponse:l?{_streamed:!0,_format:"sse-json",summary:b}:b,clientResponse:(0,r.xJ)(s.gx.BAD_REQUEST,a),claudeCacheMeta:b2,claudeCacheUsageMeta:o,cacheSource:"upstream"}),aN?.id&&z>0&&(0,C.n5)(aN.id,z),ar?.warn?.("GUARDRAIL",`Response blocked by ${x.guardrail||"guardrail"}: ${a}`),(0,r.A1)(s.gx.BAD_REQUEST,a)}if(bz&&(0,Y.FD)(a,aL?.headers)&&aw(p)){let b=(0,Y.gR)(a1,a.messages??a.input,a.temperature,a.top_p),c=n?.prompt_tokens+n?.completion_tokens||0;(0,Y.yv)(b,a1,p,c),ar?.debug?.("CACHE",`Stored response for ${a1} (${c} tokens)`)}return(0,Z.tm)(a7,p,200),bA.logConvertedResponse(p),bs({status:200,tokens:n,responseBody:b,providerRequest:aZ||bE,providerResponse:l?{_streamed:!0,_format:"sse-json",summary:b}:b,clientResponse:p,claudeCacheMeta:b2,claudeCacheUsageMeta:o,cacheSource:"upstream"}),aN?.id&&z>0&&(0,C.n5)(aN.id,z),{success:!0,response:new Response(JSON.stringify(p),{headers:{"Content-Type":"application/json",[ao.I.cache]:"MISS",...(0,E.lG)({provider:a0,model:a1,cacheHit:!1,latencyMs:Date.now()-a4,usage:y,costUsd:z})}})}}let b9=await (0,i.X)(aW,{timeoutMs:s.TH,provider:a0,model:a1,log:ar});if(!1===b9.ok){let{response:a,reason:b}=b9;return a.status,(0,A.uw)(a1,a0,aM,!1),(0,A.E5)({model:a1,provider:a0,connectionId:aM,status:`FAILED ${a.status}`}).catch(()=>{}),bs({status:a.status,error:b,providerRequest:aZ||bE,clientResponse:(0,r.xJ)(a.status,b),claudeCacheMeta:b2,cacheSource:"upstream"}),a5(a.status,"stream_readiness_timeout"),{success:!1,status:a.status,error:b,errorType:"stream_readiness_timeout",response:a}}aW=b9.response,at&&await at();let ca={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive",[ao.I.cache]:"MISS",...(0,E.lG)({provider:a0,model:a1,cacheHit:!1,latencyMs:0,usage:null,costUsd:0})},cb=aA(bP,aZ??null),cc=({status:b,usage:c,responseBody:e,providerPayload:f,clientPayload:g,ttft:h})=>{let i=aE(c);if(200===b&&az({provider:a0,connectionId:aM,providerSpecificData:d?.providerSpecificData,log:ar}),200===b&&e)try{let a=e.choices,b=a?.[0]?.message;(0,N.W)(b,a0,a1)}catch{}if(c&&"object"==typeof c&&(c.prompt_tokens,aD(c.cache_read_input_tokens??c.cached_tokens??c.prompt_tokens_details?.cached_tokens),aD(c.cache_creation_input_tokens??c.prompt_tokens_details?.cache_creation_tokens),(0,A.sZ)({provider:a0||"unknown",model:a1||"unknown",tokens:c,status:String(b||200),success:200===b,latencyMs:Date.now()-a4,timeToFirstTokenMs:h,errorCode:null,timestamp:new Date().toISOString(),connectionId:aM||void 0,apiKeyId:aN?.id||void 0,apiKeyName:aN?.name||void 0}).catch(a=>{console.error("Failed to save usage stats:",a.message)})),bs({status:b||200,tokens:c||{},responseBody:e??void 0,providerRequest:aZ||bE,providerResponse:f,clientResponse:g??e??void 0,claudeCacheMeta:b2,claudeCacheUsageMeta:i,cacheSource:"upstream"}),aN?.id&&c&&(0,D.yN)(a0,a1,c).then(a=>{a>0&&(0,C.n5)(aN.id,a)}).catch(()=>{}),bB&&bC?.enabled&&bC.maxTokens>0&&200===b){let b=ay(a);b&&(0,ai.B)(b,bB,br);let c=ax(e??null);c&&(0,ai.B)(c,bB,br)}if(bz&&200===b&&e&&(0,Y.FD)(a,aL?.headers))try{let b={...e};if(delete b._streamed,!aw(b))return;let d=(0,Y.gR)(a1,a.messages??a.input,a.temperature,a.top_p),f=(Number(c?.prompt_tokens??0)||0)+(Number(c?.completion_tokens??0)||0);(0,Y.yv)(d,a1,b,f),ar?.debug?.("CACHE",`Stored streaming response for ${a1} (${f} tokens)`)}catch{}},cd=a=>{a5(a.status||s.gx.BAD_GATEWAY,a.code||a.type);try{au?.(a)}catch{}};if(bk!==g.h.OPENAI_RESPONSES||be!==g.h.OPENAI||bb||bd?(0,f.nZ)(bk,be)?(ar?.debug?.("STREAM",`Translation mode: ${bk} → ${be}`),a$=(0,h.i5)(bk,be,a0,bA,cb,a1,aM,a,cc,aN,cd)):(ar?.debug?.("STREAM","Standard passthrough mode"),a$=(0,h.l2)(a0,bA,cb,a1,aM,a,cc,aN,cd)):(ar?.debug?.("STREAM","Responses translation mode: openai-responses → openai"),a$=(0,h.i5)("openai-responses","openai",a0,bA,cb,a1,aM,a,cc,aN,cd)),(0,$.Z)(aL?.headers)){let a=(0,$.Y)({signal:bW.signal});a_=(0,j.Jb)(aW,a$,bW).pipeThrough(a),ca[ao.I.progress]="enabled"}else a_=(0,j.Jb)(aW,a$,bW);return{success:!0,response:new Response(a_,{headers:ca})}}function aK(a,b=3e5){return!!a&&new Date(a).getTime()-Date.now()<b}d()}catch(a){d(a)}})},75898:(a,b,c)=>{c.d(b,{$:()=>f,invalidateCacheControlSettingsCache:()=>g});var d=c(13922);let e=null;async function f(){return null!==e?e:e=(await (0,d.getSettings)()).alwaysPreserveClientCache||"auto"}function g(){e=null}},76693:(a,b,c)=>{c.d(b,{l:()=>i});var d=c(46091);function e(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function f(a,b=""){return"string"==typeof a?a:b}function g(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}function h(a){if(!Array.isArray(a.content))return"";let b="";for(let c of a.content){if(!c||"object"!=typeof c)continue;let a=e(c);"output_text"===a.type&&"string"==typeof a.text&&(b+=a.text)}return b}function i(a,b,c,i){if(b===c)return a;let j=a;if(b===d.h.OPENAI_RESPONSES){let b=e(a),c="response"===b.object?b:e(b.response??b),d=Array.isArray(c.output)?c.output:[],k=e(c.usage??b.usage),l=function(a){let b=a.map(a=>e(a)).filter(a=>"message"===a.type&&Array.isArray(a.content));for(let a=b.length-1;a>=0;a-=1){let c=h(b[a]);if(c.trim().length>0)return{text:c,selectedMessageIndex:a,messageItems:b}}if(b.length>0){let a=b.length-1;return{text:h(b[a]),selectedMessageIndex:a,messageItems:b}}return{text:"",selectedMessageIndex:-1,messageItems:[]}}(d),m=l.text,n="",o=[];for(let a of d){if(!a||"object"!=typeof a)continue;let b=e(a);if("message"===b.type&&Array.isArray(b.content))for(let a of b.content){if(!a||"object"!=typeof a)continue;let b=e(a);"summary_text"===b.type&&"string"==typeof b.text&&(n+=b.text)}else if("reasoning"===b.type&&Array.isArray(b.summary))for(let a of b.summary){let b=e(a);"summary_text"===b.type&&"string"==typeof b.text&&(n+=b.text)}else if("function_call"===b.type){let a=f(b.call_id)||f(b.id)||`call_${Date.now()}_${o.length}`,c="string"==typeof b.arguments?b.arguments:JSON.stringify(b.arguments||{}),d=f(b.name),e=i?.get(d)??d;o.push({id:a,type:"function",function:{name:e,arguments:c}})}}let p={role:"assistant"};m&&(p.content=m),n&&(p.reasoning_content=n),o.length>0&&(p.tool_calls=o),void 0===p.content&&(p.content=""),"true"===process.env.DEBUG_RESPONSES_SSE_TO_JSON&&(console.log(`[ResponsesSSE] ${d.length} output items, ${l.messageItems.length} message items`),l.messageItems.forEach((a,b)=>{let c=h(a).length;console.log(` [${b}] text length: ${c}`)}),console.log(` → Selected message index: ${l.selectedMessageIndex}`),console.log(` → Final text content length: ${m.length}`));let q=g(c.created_at,Math.floor(Date.now()/1e3)),r=f(c.model||b.model,"openai-responses"),s=o.length>0?"tool_calls":"stop",t={id:`chatcmpl-${f(c.id,String(Date.now()))}`,object:"chat.completion",created:q,model:r,choices:[{index:0,message:p,finish_reason:s}]};if(Object.keys(k).length>0){let a=g(k.input_tokens,0),b=g(k.output_tokens,0);if(t.usage={prompt_tokens:a,completion_tokens:b,total_tokens:a+b},g(k.reasoning_tokens,0)>0&&(t.usage.completion_tokens_details={reasoning_tokens:g(k.reasoning_tokens,0)}),g(k.cache_read_input_tokens,0)>0||g(k.cache_creation_input_tokens,0)>0){t.usage.prompt_tokens_details={};let a=t.usage.prompt_tokens_details;g(k.cache_read_input_tokens,0)>0&&(a.cached_tokens=g(k.cache_read_input_tokens,0)),g(k.cache_creation_input_tokens,0)>0&&(a.cache_creation_tokens=g(k.cache_creation_input_tokens,0))}}j=t}else if(b===d.h.GEMINI||b===d.h.ANTIGRAVITY||b===d.h.GEMINI_CLI){let b=e(a),c=e(b.response??b),d=Array.isArray(c.candidates)?c.candidates:[],h=e(c.usageMetadata??b.usageMetadata),k=e(c.promptFeedback??b.promptFeedback);if(d.length>0||Object.keys(k).length>0){let a=Date.parse(f(c.createTime)),b=Number.isFinite(a)?Math.floor(a/1e3):Math.floor(Date.now()/1e3),k=d.length>0?d.map((a,b)=>{let c=e(a),d=e(c.content),g="",h=[],j=[],k="";if(Array.isArray(d.parts))for(let a of d.parts){let b=e(a);if(!0===b.thought&&"string"==typeof b.text){k+=b.text;continue}"string"==typeof b.text&&(g+=b.text,h.push({type:"text",text:b.text}));let c=e(b.inlineData??b.inline_data);if("string"==typeof c.data&&c.data.length>0){let a=f(c.mimeType??c.mime_type,"image/png");h.push({type:"image_url",image_url:{url:`data:${a};base64,${c.data}`}})}if(b.functionCall){let a=e(b.functionCall),c=f(a.name),d=i?.get(c)??c;j.push({id:`call_${f(d,"unknown")}_${Date.now()}_${j.length}`,type:"function",function:{name:d,arguments:JSON.stringify(a.args||{})}})}}let l={role:"assistant"};1===h.length&&"text"===h[0].type?l.content=h[0].text:h.length>0?l.content=h:g&&(l.content=g),k&&(l.reasoning_content=k),j.length>0&&(l.tool_calls=j),l.content||l.tool_calls||(l.content="");let m=f(c.finishReason,"stop").toLowerCase();return"max_tokens"===m?m="length":"safety"===m||"recitation"===m||"blocklist"===m?m="content_filter":"stop"===m&&j.length>0&&(m="tool_calls"),{index:b,message:l,finish_reason:m}}):[{index:0,message:{role:"assistant",content:""},finish_reason:"content_filter"}],l={id:`chatcmpl-${f(c.responseId,String(Date.now()))}`,object:"chat.completion",created:b,model:f(c.modelVersion,"gemini"),choices:k};if(Object.keys(h).length>0){let a=g(h.promptTokenCount,0),b=g(h.thoughtsTokenCount,0);l.usage={prompt_tokens:a,completion_tokens:g(h.candidatesTokenCount,0)+b,total_tokens:g(h.totalTokenCount,0)},b>0&&(l.usage.completion_tokens_details={reasoning_tokens:b}),g(h.cachedContentTokenCount,0)>0&&(l.usage.prompt_tokens_details={cached_tokens:g(h.cachedContentTokenCount,0)})}j=l}}else if(b===d.h.CLAUDE){let b=e(a),c=Array.isArray(b.content)?b.content:[];if(c.length>0){let a="",d="",h=[];for(let b of c){let c=e(b);if("text"===c.type)a+=f(c.text);else if("thinking"===c.type)d+=f(c.thinking);else if("tool_use"===c.type){let a=f(c.name),b=i?.get(a)??a;h.push({id:f(c.id,`call_${Date.now()}_${h.length}`),type:"function",function:{name:b,arguments:JSON.stringify(c.input||{})}})}}let k={role:"assistant"};a&&(k.content=a),d&&(k.reasoning_content=d),h.length>0&&(k.tool_calls=h),void 0===k.content&&(k.content="");let l=f(b.stop_reason,"stop");"end_turn"===l&&(l="stop"),"tool_use"===l&&(l="tool_calls");let m={id:`chatcmpl-${f(b.id,String(Date.now()))}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:f(b.model,"claude"),choices:[{index:0,message:k,finish_reason:l}]},n=e(b.usage);if(Object.keys(n).length>0){let a=g(n.input_tokens,0),b=g(n.output_tokens,0);m.usage={prompt_tokens:a,completion_tokens:b,total_tokens:a+b}}j=m}}return c===d.h.CLAUDE&&c!==b?function(a){let b=a.choices,c=Array.isArray(b);if(!c&&"chat.completion"!==a.object)return a;let d=c?b[0]:null,h=d?e(d):{},i=h.message?e(h.message):{},j=[],k=!1;if(i.reasoning_content&&(k=!0,j.push({type:"thinking",thinking:f(i.reasoning_content)})),Array.isArray(i.tool_calls)&&i.tool_calls.length,void 0!==i.content&&null!==i.content){k=!0;let a=f(i.content);j.push({type:"text",text:""===a?"(empty response)":a})}else k||j.push({type:"text",text:"(empty response)"});if(Array.isArray(i.tool_calls))for(let a of i.tool_calls){let b=e(a),c=e(b.function);j.push({type:"tool_use",id:f(b.id,`call_${Date.now()}`),name:f(c.name),input:"string"==typeof c.arguments?JSON.parse(c.arguments||"{}"):c.arguments||{}})}let l=f(h.finish_reason,"end_turn");"stop"===l&&(l="end_turn"),"tool_calls"===l&&(l="tool_use");let m=e(a.usage);return{id:f(a.id,`msg_${Date.now()}`),type:"message",role:"assistant",model:f(a.model,"claude"),content:j,stop_reason:l,stop_sequence:null,usage:{input_tokens:g(m.prompt_tokens,0),output_tokens:g(m.completion_tokens,0)}}}(e(j)):j}},86648:(a,b,c)=>{c.d(b,{A1:()=>k,Mt:()=>m,lR:()=>o,q8:()=>n,wO:()=>l,xJ:()=>f,yj:()=>g,zL:()=>j});var d=c(53647),e=c(14067);function f(a,b){let c=(0,d.B1)(a);return{error:{message:b||(0,d.nZ)(a),type:c.type,code:c.code}}}function g(a,b){return new Response(JSON.stringify(f(a,b)),{status:a,headers:{"Content-Type":"application/json"}})}function h(a){if("number"==typeof a&&Number.isFinite(a)){if(a>0&&a<1e9)return Math.max(Math.ceil(a),1);let b=new Date(a).getTime();if(Number.isFinite(b))return Math.max(Math.ceil((b-Date.now())/1e3),1)}if(a instanceof Date||"string"==typeof a){let b=new Date(a).getTime();if(Number.isFinite(b))return Math.max(Math.ceil((b-Date.now())/1e3),1)}return 1}function i(a){if("string"!=typeof a)return null;let b=a.match(/reset after (\d+h)?(\d+m)?(\d+s)?/i);if(!b)return null;let c=0;return b[1]&&(c+=60*parseInt(b[1])*6e4),b[2]&&(c+=60*parseInt(b[2])*1e3),b[3]&&(c+=1e3*parseInt(b[3])),c>0?c:null}async function j(a,b=null){let c="",d=null,f=null;try{let b=await a.text();f=(0,e.xm)(b);try{let a=JSON.parse(b);c=a.error?.message||a.message||a.error||b}catch{c=b}}catch{f={_rawText:c=`Upstream error: ${a.status}`}}let g="string"==typeof c?c:JSON.stringify(c),h=a.headers?.get?.("retry-after");if(h&&!d){let a=Number.parseInt(h,10);if(Number.isFinite(a)&&a>0)d=1e3*a;else{let a=new Date(h).getTime();Number.isFinite(a)&&a>Date.now()&&(d=a-Date.now())}}if("antigravity"===b&&429===a.status&&(d=i(g)),429!==a.status||d||(d=i(g)),429===a.status&&!d){let a=g.match(/retry\s+after\s+(\d+)\s*s/i);a&&(d=1e3*Number.parseInt(a[1],10))}return d&&d>864e5&&(d=864e5),{statusCode:a.status,message:g,retryAfterMs:d,responseBody:f}}function k(a,b,c=null){let d={success:!1,status:a,error:b,response:g(a,b)};return c&&(d.retryAfterMs=c),d}function l(a,b,c,d){let e=h(c);return new Response(JSON.stringify({error:{message:d?`${b} (${d})`:b}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function m(a,b){let c=h(b);return new Response(JSON.stringify({error:{message:`Provider ${a} circuit breaker is open`,type:"server_error",code:"provider_circuit_open",provider:a,retry_after:c}}),{status:503,headers:{"Content-Type":"application/json","Retry-After":String(c),"X-OmniRoute-Provider-Breaker":"open"}})}function n({model:a,retryAfter:b}){let c=h(b);return new Response(JSON.stringify(function({model:a,retryAfterSec:b}){let c="string"==typeof a&&a.trim().length>0?a.trim():null;return{error:{message:c?`All credentials for model ${c} are cooling down`:"All credentials for the requested model are cooling down",type:"rate_limit_error",code:"model_cooldown",...c?{model:c}:{},reset_seconds:Math.max(Math.ceil(b),1)}}}({model:a,retryAfterSec:c})),{status:429,headers:{"Content-Type":"application/json","Retry-After":String(c)}})}function o(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error";return`[${e}]: ${f}`}},88709:(a,b,c)=>{c.d(b,{GF:()=>j,tg:()=>n,u_:()=>o,zU:()=>i});var d=c(25534),e=c(71181);let f=new Map,g=setInterval(()=>{let a=Date.now();for(let[b,c]of f)a-c.fetchedAt>3e5&&f.delete(b)},3e5);"object"==typeof g&&"unref"in g&&g.unref?.();let h=new Map;function i(a,b){h.set(a,b)}async function j(a,b){let c=f.get(a);if(c&&Date.now()-c.fetchedAt<6e4)return c.quota;let d=function(a,b){if(b&&"object"==typeof b){let c=b.providerSpecificData&&"object"==typeof b.providerSpecificData&&!Array.isArray(b.providerSpecificData)?b.providerSpecificData:{},d="string"==typeof b.accessToken&&b.accessToken.trim().length>0?b.accessToken:null,e="string"==typeof c.workspaceId&&c.workspaceId.trim().length>0?c.workspaceId:void 0;if(d){let b={accessToken:d,...e?{workspaceId:e}:{}};return h.set(a,b),b}}return h.get(a)||null}(a,b);if(!d?.accessToken)return null;try{let b={Authorization:`Bearer ${d.accessToken}`,"Content-Type":"application/json",Accept:"application/json"};d.workspaceId&&(b["chatgpt-account-id"]=d.workspaceId);let c=await fetch("https://chatgpt.com/backend-api/wham/usage",{method:"GET",headers:b,signal:AbortSignal.timeout(8e3)});if(!c.ok)return(401===c.status||403===c.status)&&(f.delete(a),h.delete(a)),null;let e=await c.json(),g=function(a){var b;let c=l(a),d=l(c.rate_limit??c.rateLimit),e=l(d.primary_window??d.primaryWindow),f=l(d.secondary_window??d.secondaryWindow),g=Object.keys(e).length>0,h=Object.keys(f).length>0;if(!g&&!h)return null;let i=g?k(e.used_percent??e.usedPercent,0):0,j=g?m(e):null,n=h?k(f.used_percent??f.usedPercent,0):0,o=h?m(f):null,p=Math.max(i,n),q=!!(d.limit_reached??d.limitReached);return{used:p,total:100,percentUsed:p/100,resetAt:(b={window5h:{percentUsed:i/100,resetAt:j},window7d:{percentUsed:n/100,resetAt:o}}).window7d.percentUsed>b.window5h.percentUsed?b.window7d.resetAt||b.window5h.resetAt:b.window5h.percentUsed>b.window7d.percentUsed?b.window5h.resetAt||b.window7d.resetAt:b.window7d.resetAt||b.window5h.resetAt,window5h:{percentUsed:i/100,resetAt:j},window7d:{percentUsed:n/100,resetAt:o},limitReached:q}}(e);if(!g)return null;return f.set(a,{quota:g,fetchedAt:Date.now()}),g}catch{return null}}function k(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a){let b=parseFloat(a);if(Number.isFinite(b))return b}return b}function l(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function m(a){let b=k(a.reset_at??a.resetAt,0);if(b>0)return new Date(1e3*b).toISOString();let c=k(a.reset_after_seconds??a.resetAfterSeconds,0);return c>0?new Date(Date.now()+1e3*c).toISOString():null}function n(a){f.delete(a)}function o(){(0,d.Zd)("codex",j),(0,e.br)("codex",j)}},89815:(a,b,c)=>{c.d(b,{Q:()=>e});var d,e=((d={}).FACTUAL="factual",d.EPISODIC="episodic",d.PROCEDURAL="procedural",d.SEMANTIC="semantic",d)},90583:(a,b,c)=>{c.d(b,{Kr:()=>B,YO:()=>x,ph:()=>E,rh:()=>u});var d=c(67836),e=c.n(d),f=c(19454),g=c(84335),h=c(98275),i=c(44249);function j(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function k(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}let l=new Map,m=new Set,n={},o=null,p=new Set,q=!1,r=i.aD.requestQueue;function s(){return{maxConcurrent:r.concurrentRequests,minTime:r.minTimeBetweenRequestsMs,reservoir:r.requestsPerMinute,reservoirRefreshAmount:r.requestsPerMinute,reservoirRefreshInterval:6e4}}function t(a){return p.add(a),a.finally(()=>{p.delete(a)}),a}async function u(){if(!q){q=!0;try{let{getProviderConnections:a,getSettings:b}=await Promise.resolve().then(c.bind(c,73671)),[d,f]=await Promise.all([a(),b()]);r={...(0,i.xv)(f).requestQueue};let{explicitCount:h,autoCount:k}=function(a,b){let c=new Set,d=0,f=0;for(let h of a){let a=j(h),i="string"==typeof a.id?a.id:"",k="string"==typeof a.provider?a.provider:"",m=!0===a.isActive,n=!0===a.rateLimitProtection;if(i&&k){if(n){c.add(i),d++;continue}if(b.autoEnableApiKeyProviders&&"apikey"===(0,g.oQ)(k)&&m){c.add(i),f++;let a=`${k}:${i}`;l.has(a)||l.set(a,new(e())({...s(),id:a}))}}}for(let a of Array.from(m))c.has(a)||function(a){for(let[b]of(m.delete(a),l))if(b.includes(a)){let a=l.get(b);a?.disconnect(),l.delete(b)}}(a);for(let a of c)m.add(a);return{explicitCount:d,autoCount:f}}(d,r);for(let a of l.values())a.updateSettings({maxConcurrent:r.concurrentRequests,minTime:r.minTimeBetweenRequestsMs,reservoir:r.requestsPerMinute,reservoirRefreshAmount:r.requestsPerMinute,reservoirRefreshInterval:6e4});(h>0||k>0)&&console.log(`🛡️ [RATE-LIMIT] Loaded ${h} explicit + ${k} auto-enabled protection(s)`),await D()}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function v(a,b,c=null){return"codex"===a&&c?`${a}:${(0,h.IM)(b,c)}`:("gemini"===a||"github"===a)&&c?`${a}:${b}:${c}`:`${a}:${b}`}function w(a,b,c=null){let d=v(a,b,c);if(!l.has(d)){let a=new(e())({...s(),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`)}),l.set(d,a)}return l.get(d)}async function x(a,b,c,d){if(!m.has(b))return d();let e=w(a,b,c),f=r.maxWaitMs;try{return await e.schedule(f&&f>0?{expiration:f}:{},d)}catch(d){if(d?.message?.includes("This job timed out")){let d=v(a,b,c);console.log(`⏰ [RATE-LIMIT] ${d} — job expired after ${Math.ceil((f||0)/1e3)}s in queue, dropping`)}throw d}}let y={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"},z={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 A(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 B(a,b,c,d,e=null){if(!m.has(b)||!c)return;let f=w(a,b,e),g="claude"===a||"anthropic"===a?z:y,h=a=>"function"==typeof c.get?c.get(a):c[a]||null,i=parseInt(h(g.limit)),j=parseInt(h(g.remaining)),k=h(g.reset),p=h(g.retryAfter),q=h(y.overLimit);if(429===d){let c=A(p)||6e4,d=f.counts(),g=v(a,b,e);console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — 429 received, pausing for ${Math.ceil(c/1e3)}s, dropping ${d.QUEUED} queued request(s)`),l.delete(g),t(f.stop({dropWaitingJobs:!0}));return}if("yes"===q){console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — near capacity, slowing down`),f.updateSettings({minTime:200});return}if(!isNaN(i)&&i>0){let c=A(k)||6e4,d={minTime:Math.max(0,Math.floor(6e4/i)-10)};!isNaN(j)&&(j<.1*i?(d.reservoir=j,d.reservoirRefreshAmount=i,d.reservoirRefreshInterval=c,console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — ${j}/${i} remaining, throttling`)):j>.5*i&&(d.minTime=0,d.reservoir=null,d.reservoirRefreshAmount=null,d.reservoirRefreshInterval=null)),f.updateSettings(d),function(a,b,c,d=null){n[v(a,b,d)]={...c,provider:a,connectionId:b,lastUpdated:Date.now()},o||(o=setTimeout(async()=>{o=null,await t(C())},6e4))}(a,b,{limit:i,remaining:j,minTime:d.minTime},e)}}async function C(){try{let{updateSettings:a}=await Promise.resolve().then(c.bind(c,13922));await a({learnedRateLimits:JSON.stringify(n)}),console.log(`💾 [RATE-LIMIT] Persisted learned limits for ${Object.keys(n).length} provider(s)`)}catch(a){console.error("[RATE-LIMIT] Failed to persist learned limits:",a.message)}}async function D(){try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,13922)),b=await a(),d=b?.learnedRateLimits;if("string"!=typeof d||0===d.trim().length)return;let e=j(JSON.parse(d)),f=0;for(let[a,b]of Object.entries(e)){let c=j(b),d=k(c.lastUpdated,0);if(d>0&&Date.now()-d>864e5)continue;let e="string"==typeof c.connectionId?c.connectionId:"",g="string"==typeof c.provider?c.provider:"",h=k(c.limit,0),i=k(c.remaining,0),o=k(c.minTime,0);if(n[a]={provider:g,connectionId:e,lastUpdated:d,...h>0?{limit:h}:{},...i>=0?{remaining:i}:{},...o>=0?{minTime:o}:{}},e&&m.has(e)){let b=l.get(a);if(b&&h>0){let a=o||Math.max(0,Math.floor(6e4/h)-10);b.updateSettings({minTime:a}),f++}}}f>0&&console.log(`📥 [RATE-LIMIT] Restored ${f} learned rate limit(s) from persistence`)}catch(a){console.error("[RATE-LIMIT] Failed to load persisted limits:",a.message)}}function E(a,b,c,d,e=null){if(!m.has(b))return;let{retryAfterMs:g,reason:h}=(0,f.Ks)(c);if(g&&g>0){let c=w(a,b,e);console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — body-parsed retry: ${Math.ceil(g/1e3)}s (${h})`),c.updateSettings({reservoir:0,reservoirRefreshAmount:60,reservoirRefreshInterval:g})}}},93636:(a,b,c)=>{c.d(b,{Sk:()=>g,n1:()=>k,setGeminiThoughtSignatureMode:()=>h});let d=new Map,e="enabled";function f(){let a=Date.now();for(let[b,c]of d.entries())c.expiresAt<=a&&d.delete(b);for(;d.size>1e3;){let a=d.keys().next().value;if(!a)break;d.delete(a)}}function g(a,b){"string"!=typeof a||!a||"string"==typeof b&&b&&(f(),d.set(a,{signature:b,expiresAt:Date.now()+36e5}))}function h(a){e="bypass"===a||"bypass-strict"===a?a:"enabled"}function i(a){if(!a||"R"!==a[0]&&"E"!==a[0])return null;let b=a.slice(1);if(!/^[A-Za-z0-9+/]+={0,2}$/.test(b)||b.length%4==1)return null;try{let a=Buffer.from(b,"base64");if(0===a.length||a.toString("base64").replace(/=+$/g,"")!==b.replace(/=+$/g,""))return null;return a}catch{return null}}function j(a,b){let c=b,d=0,e=0;for(;c<a.length&&e<35;){let b=a[c];if(d|=(127&b)<<e,c+=1,(128&b)==0)return{nextOffset:c,value:d};e+=7}return null}function k(a,b){let c=function(a){if("string"!=typeof a||!a)return null;f();let b=d.get(a);return b?b.signature:null}(a);return"string"!=typeof b||0===b.length||"enabled"===e?c:("bypass-strict"===e?function(a){if("string"!=typeof a)return!1;let b=i(a);if(!b||18!==b[0])return!1;let c=j(b,1);if(!c)return!1;let d=c.nextOffset+c.value;if(d!==b.length)return!1;let e=b.subarray(c.nextOffset,d);if(0===e.length||10!==e[0])return!1;let f=j(e,1);return!!f&&f.nextOffset+f.value===e.length}(b):function(a){if("string"!=typeof a)return!1;let b=i(a);return!!(b&&18===b[0])}(b))?b:(console.warn(`[signature-cache] ${e}: invalid client thought signature, falling back`),c)}},94504:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{F1:()=>k,Uk:()=>j});var e=c(35116),f=c(99622),g=a([e]);e=(g.then?(await g)():g)[0];let l=(0,f.vF)("SKILLS_INJECTION");function h(a){return"string"==typeof a?a.toLowerCase():""}function i(a){let b=a.toLowerCase().match(/[a-z0-9]+/g)||[];return new Set(b.filter(a=>a.length>=3))}function j(a){let b,c=(b=[JSON.stringify(a.existingTools||[]).toLowerCase(),h(a.model),h(a.sourceFormat),h(a.targetFormat),h(a.backgroundReason)],Array.isArray(a.messages)&&a.messages.length>0&&b.push(function(a){let b=[];for(let c of a){if(!c||"object"!=typeof c)continue;let a=c.content;if("string"==typeof a){b.push(a);continue}if(Array.isArray(a))for(let c of a){if("string"==typeof c){b.push(c);continue}c&&"object"==typeof c&&"string"==typeof c.text&&b.push(c.text)}}return b.join(" ").toLowerCase()}(a.messages)),b.filter(Boolean).join(" ")),d=i(c),f=i(h(a.backgroundReason)),g=e.H.list(a.apiKeyId).filter(a=>{let b=a.mode||(a.enabled?"on":"off");return"off"!==b&&a.enabled}),j=g.filter(a=>{let b=a.mode||(a.enabled?"on":"off");return"on"===b}),k=g.filter(a=>{let b=a.mode||(a.enabled?"on":"off");return"auto"===b}).map(b=>({skill:b,score:function(a,b,c,d,e){let f,g=a.name.toLowerCase(),j=(Array.isArray(a.tags)?a.tags:[]).map(a=>String(a).toLowerCase()),k=h(a.description),l=(f=a.name.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[._@\-/]+/g," ").toLowerCase(),i(f)),m=i(k),n=0;for(let a of(g&&c.includes(g)&&(n+=6),l))d.has(a)&&(n+=2);for(let a of j)a&&c.includes(a)&&(n+=3);for(let a of m)d.has(a)&&(n+=1);if(e.size>0)for(let a of e)l.has(a)&&(n+=2),j.some(b=>b.includes(a)||a.includes(b))&&(n+=2);let o=new Set(["openai","gpt","anthropic","claude","google","gemini"]),p=j.filter(a=>o.has(a));if(p.length>0){let a={openai:["openai","gpt"],anthropic:["anthropic","claude"],google:["google","gemini"],other:[]}[b.provider];p.some(b=>a.includes(b))?n+=2:n-=2}return n}(b,a,c,d,f)})).filter(a=>a.score>=3).sort((a,b)=>{if(b.score!==a.score)return b.score-a.score;let c="number"==typeof a.skill.installCount?a.skill.installCount:0,d="number"==typeof b.skill.installCount?b.skill.installCount:0;return d!==c?d-c:a.skill.name.localeCompare(b.skill.name)}).slice(0,5).map(a=>a.skill),m=[...j,...k];if(0===m.length)return l.info("skills.injection.skipped",{apiKeyId:a.apiKeyId,reason:"no_enabled_skills"}),a.existingTools||[];l.info("skills.injection.injected",{apiKeyId:a.apiKeyId,provider:a.provider,skillCount:m.length});let n=m.map(b=>{switch(a.provider){case"openai":default:return{type:"function",function:{name:`${b.name}@${b.version}`,description:b.description,parameters:b.schema.input}};case"anthropic":return{name:`${b.name}@${b.version}`,description:b.description,input_schema:b.schema.input};case"google":return{name:`${b.name}@${b.version}`,description:b.description,parameters:b.schema.input}}});return a.existingTools&&a.existingTools.length>0?[...n,...a.existingTools]:n}function k(a){let b=a.toLowerCase();return b.includes("gpt")||b.includes("openai")?"openai":b.includes("claude")||b.includes("anthropic")?"anthropic":b.includes("gemini")||b.includes("google")?"google":"other"}d()}catch(a){d(a)}})},97254:(a,b,c)=>{c.d(b,{X:()=>i});var d=c(49193);function e(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function f(a){return"string"==typeof a&&a.length>0}function g(a){if(f(a))return!0;if(Array.isArray(a))return a.some(g);if(!e(a))return!1;for(let b of["content","text","delta","reasoning_content","reasoning","partial_json","arguments","name"]){let c=a[b];if(f(c)||(Array.isArray(c)||e(c))&&g(c))return!0}for(let b of["tool_calls","tool_use","function","functionCall","function_call","function_call_output","output","content_block","parts"])if(g(a[b]))return!0;return!1}function h(a,b){return new Response(JSON.stringify({error:{message:b,type:"stream_timeout",code:"STREAM_READINESS_TIMEOUT"}}),{status:a,headers:{"Content-Type":"application/json"}})}async function i(a,b){if(!a.body||b.timeoutMs<=0)return{ok:!0,response:a};let c=a.body.getReader(),f=[],i=new TextDecoder,j="",k=Date.now(),l=k+b.timeoutMs,m=!1;try{for(;;){let n,o=l-Date.now();if(o<=0){let a=`Stream produced no useful content within ${b.timeoutMs}ms`;return b.log?.warn?.("STREAM",`${a} (${b.provider||"provider"}/${b.model||"unknown"})`),await c.cancel(a).catch(()=>{}),{ok:!1,reason:a,response:h(d.gx.GATEWAY_TIMEOUT,a)}}try{n=await function(a,b){return new Promise((c,d)=>{let e=setTimeout(()=>d(Error("STREAM_READINESS_TIMEOUT")),b);a.read().then(a=>{clearTimeout(e),c(a)},a=>{clearTimeout(e),d(a)})})}(c,o)}catch{let a=`Stream produced no useful content within ${b.timeoutMs}ms`;return b.log?.warn?.("STREAM",`${a} (${b.provider||"provider"}/${b.model||"unknown"})`),await c.cancel(a).catch(()=>{}),{ok:!1,reason:a,response:h(d.gx.GATEWAY_TIMEOUT,a)}}if(n.done){let a="Stream ended before producing useful content";return b.log?.warn?.("STREAM",`${a} (${b.provider||"provider"}/${b.model||"unknown"})`),{ok:!1,reason:a,response:h(d.gx.BAD_GATEWAY,a)}}if(n.value&&(f.push(n.value),j+=i.decode(n.value,{stream:!0}),function(a){for(let b of a.split(/\r?\n/)){let a=b.trim();if(!a||a.startsWith(":")||/^event:\s*(?:ping|keepalive)$/i.test(a)||!a.startsWith("data:"))continue;let c=a.slice(5).trim();if(c&&"[DONE]"!==c)try{if(function(a){if(!e(a))return!1;let b="string"==typeof a.type?a.type:"";return!!((b.includes("delta")||b.includes("tool")||b.includes("function")||b.includes("content_block")||b.includes("output_item"))&&g(a))||g(a.choices)||g(a.candidates)||g(a)}(JSON.parse(c)))return!0}catch{if(c.length>0)return!0}}return!1}(j)))return b.log?.debug?.("STREAM",`Stream readiness confirmed in ${Date.now()-k}ms (${b.provider||"provider"}/${b.model||"unknown"})`),m=!0,{ok:!0,response:new Response(function(a,b){return new ReadableStream({async start(c){try{for(let b of a)c.enqueue(b);for(;;){let{done:a,value:d}=await b.read();if(a)break;d&&c.enqueue(d)}c.close()}catch(a){c.error(a)}finally{b.releaseLock()}},async cancel(a){await b.cancel(a).catch(()=>{}),b.releaseLock()}})}(f,c),{status:a.status,statusText:a.statusText,headers:a.headers})}}}finally{m||c.releaseLock()}}},98753:(a,b,c)=>{c.d(b,{M:()=>e});var d=c(49193);function e(a){let b=(a.max_tokens??a.max_completion_tokens)||d.Uc;return a.tools&&Array.isArray(a.tools)&&a.tools.length>0&&b<d.eo&&(b=d.eo),Math.max(1,b)}},98821:(a,b,c)=>{c.d(b,{CS:()=>j,Jl:()=>e});var d=c(46091);let e="omniroute_web_search",f=new Set(["web_search","web_search_preview"]),g={low:5,medium:8,high:10};function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a){let b=h(a),c="string"==typeof b.type?b.type:"";return f.has(c)&&!b.function}function j(a,b){var c,j;let k,l,m,n,o=Array.isArray(a.tools)?a.tools:null;if(!o||0===o.length)return{body:a,fallback:{enabled:!1,toolName:null,convertedToolCount:0}};let p=o.filter(i);if(0===p.length||function({targetFormat:a,nativeCodexPassthrough:b}){return!!b||a===d.h.GEMINI}(b))return{body:a,fallback:{enabled:!1,toolName:null,convertedToolCount:0}};let q=new Set,r=o.filter(a=>{if(i(a))return!1;let b=h(a),c=h(b.function),d="string"==typeof c.name?c.name:"string"==typeof b.name?b.name:"";return d.trim().length>0&&q.add(d.trim()),!0});q.has(e)||r.unshift({type:"function",function:{name:e,description:(k=!1!==(j=c=h(p[0])).external_web_access,l=g["string"==typeof j.search_context_size?j.search_context_size.trim().toLowerCase():""]||g.medium,`Search the ${k?"public web":"configured search index"} for recent, factual information and return cited results. Use this when the answer depends on current events, external documents, or fresh facts. If max_results is omitted, prefer about ${l} results.`),parameters:{type:"object",additionalProperties:!1,properties:{query:{type:"string",description:"The web search query to execute."},search_type:{type:"string",enum:["web","news"],description:"Use 'news' for recent headlines or reporting; otherwise use 'web'."},max_results:{type:"integer",minimum:1,maximum:20,default:g["string"==typeof c.search_context_size?c.search_context_size.trim().toLowerCase():""]||g.medium,description:"Maximum number of results to retrieve."},country:{type:"string",description:"Optional 2-letter country code for localization, e.g. US or BR."},language:{type:"string",description:"Optional language code such as en or pt-BR."},time_range:{type:"string",enum:["any","day","week","month","year"],description:"Optional recency filter."},filters:{type:"object",additionalProperties:!1,properties:{include_domains:{type:"array",items:{type:"string"},description:"Optional list of domains to include."},exclude_domains:{type:"array",items:{type:"string"},description:"Optional list of domains to exclude."}}}},required:["query"]}}});let s={...a,tools:r};return n="string"==typeof(m=h(a.tool_choice)).type?m.type:"",f.has(n)&&(s.tool_choice={type:"function",function:{name:e}}),{body:s,fallback:{enabled:!0,toolName:e,convertedToolCount:p.length}}}},98996:(a,b,c)=>{c.d(b,{kV:()=>g,setCustomAliases:()=>f});let d={"gemini-pro":"gemini-2.5-pro","gemini-pro-vision":"gemini-2.5-pro","gemini-1.5-pro":"gemini-2.5-pro","gemini-1.5-flash":"gemini-2.5-flash","gemini-1.0-pro":"gemini-2.5-pro","gemini-2.0-flash":"gemini-2.5-flash","gemini-3-pro-high":"gemini-3.1-pro-high","gemini-3-pro-low":"gemini-3.1-pro-low","claude-3-opus-20240229":"claude-opus-4-20250514","claude-3-sonnet-20240229":"claude-sonnet-4-20250514","claude-3-haiku-20240307":"claude-3-5-sonnet-20241022","claude-3-5-sonnet-latest":"claude-sonnet-4-20250514","claude-3-5-haiku-latest":"claude-3-5-sonnet-20241022","gpt-4-turbo-preview":"gpt-4-turbo","gpt-4-0125-preview":"gpt-4-turbo","gpt-4-1106-preview":"gpt-4-turbo","gpt-3.5-turbo-0125":"gpt-3.5-turbo","accounts/fireworks/models/kimi-k2p5":"moonshotai/Kimi-K2.5","fireworks/accounts/fireworks/models/kimi-k2p5":"moonshotai/Kimi-K2.5","kimi-k2p5":"moonshotai/Kimi-K2.5","accounts/fireworks/models/kimi-k2":"moonshotai/Kimi-K2","fireworks/accounts/fireworks/models/kimi-k2":"moonshotai/Kimi-K2","kimi-k2":"moonshotai/Kimi-K2","mistral-large":"mistral-large-latest","mistral-small":"mistral-small-latest",codestral:"codestral-latest","llama-3.3":"llama-3.3-70b-versatile","llama-3-70b":"llama-3.3-70b-versatile","llama-3-8b":"llama3-8b-8192"},e={};function f(a){e={...a}}function g(a){return a?e[a]?e[a]:d[a]?d[a]:a:a}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=77044,exports.ids=[77044],exports.modules={5452:(a,b,c)=>{c.d(b,{Bn:()=>n,DL:()=>l,JQ:()=>q,LY:()=>o,TX:()=>i,Tw:()=>s,U$:()=>k,Zi:()=>j,ax:()=>r,jo:()=>p,tY:()=>m,x0:()=>h,xL:()=>g});var d=c(33873);let e=c.n(d)().join(process.cwd(),"logs","application","app.log");function f(a,b){if(!a)return b;let c=Number.parseInt(a,10);return Number.isInteger(c)&&c>0?c:b}function g(){return"false"!==process.env.APP_LOG_TO_FILE}function h(){return process.env.APP_LOG_FILE_PATH||e}function i(){var a=process.env.APP_LOG_MAX_FILE_SIZE;if(!a)return 0x3200000;let b=a.match(/^(\d+)\s*(k|m|g|kb|mb|gb)?$/i);if(!b)return 0x3200000;let c=parseInt(b[1],10);switch((b[2]||"").toLowerCase()){case"k":case"kb":return 1024*c;case"m":case"mb":return 1024*c*1024;case"g":case"gb":return 1024*c*1048576;default:return c}}function j(){return f(process.env.APP_LOG_RETENTION_DAYS,7)}function k(){return f(process.env.CALL_LOG_RETENTION_DAYS,7)}function l(){return f(process.env.APP_LOG_MAX_FILES,20)}function m(){return f(process.env.CALL_LOG_MAX_ENTRIES,1e4)}function n(){return f(process.env.CALL_LOGS_TABLE_MAX_ROWS,1e5)}function o(){return function(a,b){if(!a)return b;let c=a.trim().toLowerCase();return!!["1","true","yes","on"].includes(c)||!["0","false","no","off"].includes(c)&&b}(process.env.CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS,!0)}function p(){return 1024*f(process.env.CALL_LOG_PIPELINE_MAX_SIZE_KB,512)}function q(){return f(process.env.PROXY_LOGS_TABLE_MAX_ROWS,1e5)}function r(a){return process.env.APP_LOG_LEVEL||a}function s(a){return process.env.APP_LOG_FORMAT||a}},24166:(a,b,c)=>{function d(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function e(a){return"string"==typeof a&&a.trim().length>0?a.trim():null}function f(a){let b="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):0;return Number.isFinite(b)?Math.max(0,Math.min(100,b)):0}function g(a){let b=a.trim(),c=b.indexOf("/");if(c<=0)return null;let d=b.slice(0,c).trim();return d.length>0?d:null}function h(a,b){let c=a.trim();if(c.includes("/"))return c;let d=e(b);return d?`${d}/${c}`:c}function i(a){let b=a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return b.length>0?b:"step"}function j(a,b,c,d){return[i(b||"combo"),"combo-ref"===a?"ref":"model",String(c+1),i(d)].join("-").slice(0,200)}function k(a,b,c){return!b&&((function(a){let b=new Set;if(!a)return b;if(!Array.isArray(a)&&"function"==typeof a[Symbol.iterator]&&!(d(a)&&Array.isArray(a.combos))){for(let c of a){let a=e(c);a&&b.add(a)}return b}let c=d(a)&&Array.isArray(a.combos)?a.combos:[];for(let d of Array.isArray(a)?a:c){let a="string"==typeof d?e(d):e(d?.name);a&&b.add(a)}return b})(c.allCombos).has(a)||a===e(c.comboName))}function l(a){return"string"!=typeof a&&d(a)?f(a.weight):0}function m(a){if("string"==typeof a)return e(a);if(!d(a)||"combo-ref"===a.kind)return null;let b=e(a.model);if(!b)return null;let c=e(a.providerId)||e(a.provider)||g(b);return h(b,c)}function n(a){return"string"==typeof a?g(a):d(a)&&"combo-ref"!==a.kind?e(a.providerId)||e(a.provider)||g(e(a.model)||""):null}function o(a,b={}){if("string"==typeof a){let c=e(a);return c?(k(c,null,b),c):null}if(!d(a))return null;if("combo-ref"===a.kind)return e(a.comboName);let c=e(a.model);if(!c)return null;let f="model"===a.kind,i=e(a.providerId)||e(a.provider)||g(c);return!f&&k(c,i,b)?c:h(c,i)}function p(a,b={}){let c=e(b.comboName),i="number"==typeof b.index?b.index:0;if("string"==typeof a){let d=e(a);if(!d)return null;if(k(d,null,b))return{id:j("combo-ref",c,i,d),kind:"combo-ref",comboName:d,weight:0};let f=g(d);return{id:j("model",c,i,d),kind:"model",model:d,...f?{providerId:f}:{},weight:0}}if(!d(a))return null;let l=e(a.id),m=f(a.weight),n=e(a.label);if("combo-ref"===a.kind){let b=e(a.comboName);return b?{id:l||j("combo-ref",c,i,b),kind:"combo-ref",comboName:b,weight:m,...n?{label:n}:{}}:null}let o=e(a.model);if(!o)return null;let q="model"===a.kind,r=e(a.providerId)||e(a.provider)||g(o);if(!q&&k(o,r,b))return{id:l||j("combo-ref",c,i,o),kind:"combo-ref",comboName:o,weight:m,...n?{label:n}:{}};let s=h(o,r),t=null===a.connectionId?null:e(a.connectionId)||void 0,u=Array.isArray(a.tags)?a.tags.map(a=>e(a)).filter(a=>!!a):void 0;return{id:l||j("model",c,i,t?`${s}:${t}`:s),kind:"model",model:s,...r?{providerId:r}:{},...void 0!==t?{connectionId:t}:{},weight:m,...n?{label:n}:{},...u&&u.length>0?{tags:u}:{}}}function q(a,b={}){return(Array.isArray(a)?a:[]).map((a,c)=>p(a,{...b,index:c})).filter(a=>null!==a)}function r(a,b={}){let c=e(a.name);return{...a,version:2,models:q(a.models,{comboName:c,allCombos:b.allCombos})}}c.d(b,{Bq:()=>n,Dx:()=>m,En:()=>q,Sw:()=>p,Zy:()=>l,aW:()=>o,zA:()=>r})},30032:(a,b,c)=>{c.d(b,{Lk:()=>i,Tl:()=>h,_D:()=>f,xm:()=>g});var d=c(70368);let e=new Set(["api_key","apiKey","api-key","authorization","Authorization","x-api-key","X-Api-Key","x-goog-api-key","access_token","accessToken","refresh_token","refreshToken","password","secret","token"]);function f(a){return null==a?a:"function"==typeof globalThis.structuredClone?globalThis.structuredClone(a):JSON.parse(JSON.stringify(a))}function g(a){if("string"!=typeof a)return a;let b=a.trim();if(!b)return"";try{return JSON.parse(b)}catch{return{_rawText:a}}}function h(a){return null==a?null:function a(b){if(!b||"object"!=typeof b)return b;if(Array.isArray(b))return b.map(a);let c={};for(let[d,f]of Object.entries(b))e.has(d)?c[d]="[REDACTED]":"string"==typeof f&&f.startsWith("Bearer ")?c[d]="Bearer [REDACTED]":"object"==typeof f&&null!==f?c[d]=a(f):c[d]=f;return c}(function a(b){if("string"==typeof b)return(0,d.or)(b).text;if(Array.isArray(b))return b.map(a);if(!b||"object"!=typeof b)return b;let c={};for(let[d,e]of Object.entries(b))c[d]=a(e);return c}(g(a)))}function i(a){if("string"!=typeof a||0===a.trim().length)return null;try{return JSON.parse(a)}catch{return{_rawText:a}}}},69352:(a,b,c)=>{c.d(b,{Ce:()=>u,Gd:()=>q,Iy:()=>s,L8:()=>t,bZ:()=>m,kq:()=>w,sm:()=>v});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(88189),i=c(5452);let j="object"==typeof globalThis.caches&&null!==globalThis.caches,k="phase-production-build"===process.env.NEXT_PHASE,l=(0,h._3)({isCloud:j}),m=j?null:g().join(l,"call_logs"),n="call_log_artifact_size_limit_exceeded",o="[omitted: call log artifact size limit exceeded]",p="[stream chunks omitted: call log artifact size limit exceeded]";function q(a,b){let c=new Date(a),d=(Number.isNaN(c.getTime())?new Date().toISOString():c.toISOString()).replace(/[:]/g,"-"),e=d.slice(0,10);return g().posix.join(e,`${d}_${b}.json`)}function r(a){return a.pipeline?{...a,pipeline:{error:{_omniroute_truncated:!0,reason:n}}}:a}function s(a,b=q(a.summary.timestamp,a.summary.id)){if(!m||k)return null;let c=g().join(m,b),d=`${c}.${process.pid}.${Date.now()}.tmp`;try{let f=function(a){let b,c,d=a.pipeline?(0,i.jo)():524288,e=JSON.stringify(a,null,2);if(Buffer.byteLength(e)<=d)return e;let f=JSON.stringify((b=a.pipeline,b?.streamChunks?{...a,pipeline:{...b,streamChunks:{provider:b.streamChunks.provider?.length?[p]:void 0,openai:b.streamChunks.openai?.length?[p]:void 0,client:b.streamChunks.client?.length?[p]:void 0}}}:a),null,2);if(Buffer.byteLength(f)<=d)return f;let g=JSON.stringify(r(a),null,2);if(Buffer.byteLength(g)<=d)return g;let h=JSON.stringify({...r(a),requestBody:o,responseBody:o,error:a.error?o:null},null,2);return Buffer.byteLength(h)<=d?h:(c=JSON.stringify({schemaVersion:a.schemaVersion,summary:a.summary,requestBody:o,responseBody:o,error:a.error?o:null,pipeline:{error:{_omniroute_truncated:!0,reason:n}}}),Buffer.byteLength(c)<=d?c:JSON.stringify({schemaVersion:a.schemaVersion,_omniroute_truncated:!0,reason:n}))}(a),h=Buffer.byteLength(f),j=function(a){let b=Buffer.from(a),c=0x811c9dc5;for(let a of b)c^=a,c=Math.imul(c,0x1000193)>>>0;return c.toString(16).padStart(8,"0")}(f);return e().mkdirSync(g().dirname(c),{recursive:!0}),e().writeFileSync(d,f),e().renameSync(d,c),{relPath:b,sizeBytes:h,sha256:j}}catch(a){try{e().rmSync(d,{force:!0})}catch{}return console.error("[callLogs] Failed to write request artifact:",a.message),null}}function t(a){if(!m||!a)return{artifact:null,state:"missing"};try{let b=g().join(m,a);if(!e().existsSync(b))return{artifact:null,state:"missing"};return{artifact:JSON.parse(e().readFileSync(b,"utf8")),state:"ready"}}catch(a){return console.error("[callLogs] Failed to read request artifact:",a.message),{artifact:null,state:"corrupt"}}}function u(a){if(!m||!a)return!1;try{let b=g().join(m,a);if(!e().existsSync(b))return!1;return e().rmSync(b,{force:!0}),!0}catch{return!1}}function v(a=m){if(a&&e().existsSync(a))try{for(let b of e().readdirSync(a)){let c=g().join(a,b);e().statSync(c).isDirectory()&&0===e().readdirSync(c).length&&e().rmSync(c,{recursive:!0,force:!0})}}catch{}}function w(a=m){return a&&e().existsSync(a)?e().readdirSync(a).flatMap(b=>{let c=g().join(a,b);try{if(!e().statSync(c).isDirectory())return[];return e().readdirSync(c).filter(a=>a.endsWith(".json")).map(a=>{let d=g().join(c,a),f=e().statSync(d);return{relativePath:g().posix.join(b,a),absPath:d,mtimeMs:f.mtimeMs}})}catch{return[]}}).sort((a,b)=>b.mtimeMs-a.mtimeMs):[]}},70368:(a,b,c)=>{c.d(b,{Do:()=>f,or:()=>e});let d=[{name:"email",regex:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,replacement:"[EMAIL_REDACTED]",severity:"medium"},{name:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g,replacement:"[SSN_REDACTED]",severity:"high"},{name:"credit_card",regex:/\b(?:\d{4}[-\s]?){3}\d{4}\b/g,replacement:"[CC_REDACTED]",severity:"high"},{name:"phone_us",regex:/\b(?:\+?1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g,replacement:"[PHONE_REDACTED]",severity:"medium"},{name:"phone_br",regex:/\b(?:\+?55[-.\s]?)?\(?\d{2}\)?[-.\s]?\d{4,5}[-.\s]?\d{4}\b/g,replacement:"[PHONE_REDACTED]",severity:"medium"},{name:"cpf",regex:/\b\d{3}\.\d{3}\.\d{3}-\d{2}\b/g,replacement:"[CPF_REDACTED]",severity:"high"},{name:"cnpj",regex:/\b\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}\b/g,replacement:"[CNPJ_REDACTED]",severity:"high"},{name:"ip_address",regex:/\b(?:\d{1,3}\.){3}\d{1,3}\b/g,replacement:"[IP_REDACTED]",severity:"low"},{name:"aws_key",regex:/\bAKIA[0-9A-Z]{16}\b/g,replacement:"[AWS_KEY_REDACTED]",severity:"high"},{name:"api_key_generic",regex:/\b(?:sk|pk|api|key|token)[_-][a-zA-Z0-9]{20,}\b/gi,replacement:"[API_KEY_REDACTED]",severity:"high"}];function e(a){if("true"!==process.env.PII_RESPONSE_SANITIZATION||!a||"string"!=typeof a)return{text:a,detections:[],redacted:!1};let b=process.env.PII_RESPONSE_SANITIZATION_MODE||"redact",c=[],e=a;for(let f of d){f.regex.lastIndex=0;let d=a.match(f.regex);d&&d.length>0&&(c.push({pattern:f.name,count:d.length,severity:f.severity}),"redact"===b&&(f.regex.lastIndex=0,e=e.replace(f.regex,f.replacement)))}return c.length>0&&"warn"===b&&console.warn(`[PII] Detected PII in response: ${c.map(a=>`${a.pattern}(${a.count})`).join(", ")}`),{text:"redact"===b?e:a,detections:c,redacted:"redact"===b&&c.length>0}}function f(a){if("true"!==process.env.PII_RESPONSE_SANITIZATION||!a)return a;try{for(let b of a.choices||[]){if(b.message?.content){let a=e(b.message.content);b.message.content=a.text}if(b.delta?.content){let a=e(b.delta.content);b.delta.content=a.text}}}catch{}return a}},77044:(a,b,c)=>{c.d(b,{nJ:()=>H,NJ:()=>K,oh:()=>I,G6:()=>Q,sm:()=>ae,I8:()=>G,m1:()=>F,XL:()=>O,jX:()=>af,kB:()=>P,zj:()=>ad});var d=c(87550),e=c.n(d),f=c(33873),g=c.n(f),h=c(29021),i=c.n(h),j=c(88189),k=c(1932);let l=function(){let a=process.env.OMNIROUTE_MIGRATIONS_DIR;if("string"==typeof a&&a.trim().length>0)return g().resolve(a);try{return g().join(g().dirname((0,k.fileURLToPath)("file:///home/runner/work/OmniRoute/OmniRoute/src/lib/db/migrationRunner.ts")),"migrations")}catch{}let b="file:///home/runner/work/OmniRoute/OmniRoute/src/lib/db/migrationRunner.ts";if("string"==typeof b&&b.startsWith("file://"))return g().join(g().dirname((0,k.fileURLToPath)(b)),"migrations");throw Error("[Migration] Could not resolve migrations directory. Set OMNIROUTE_MIGRATIONS_DIR.")}(),m=[{fromVersion:"022",fromName:"call_logs_summary_storage",toVersion:"025",toName:"call_logs_summary_storage"},{fromVersion:"028",fromName:"provider_connection_max_concurrent",toVersion:"029",toName:"provider_connection_max_concurrent"}],n=[{version:"028",tableName:"batches",description:"batches table"},{version:"024",tableName:"sync_tokens",description:"sync_tokens table"},{version:"022",tableName:"memory_fts",description:"memory_fts virtual table"},{version:"019",tableName:"context_handoffs",description:"context_handoffs table"},{version:"017",tableName:"version_manager",description:"version_manager table"},{version:"016",tableName:"skill_executions",description:"skill_executions table"},{version:"015",tableName:"memories",description:"memories table"},{version:"013",tableName:"quota_snapshots",description:"quota_snapshots table"},{version:"011",tableName:"webhooks",description:"webhooks table"},{version:"010",tableName:"model_combo_mappings",description:"model_combo_mappings table"},{version:"008",tableName:"registered_keys",description:"registered_keys table"},{version:"006",tableName:"request_detail_logs",description:"request_detail_logs table"},{version:"004",tableName:"proxy_registry",description:"proxy_registry table"},{version:"002",tableName:"mcp_tool_audit",description:"mcp_tool_audit table"}],o=["provider_connections","combos","call_logs"];function p(a,b){let c=a.prepare("SELECT name FROM sqlite_master WHERE type IN ('table', 'view') AND name = ?").get(b);return!!c?.name}function q(a,b,c,d){a.prepare(`PRAGMA table_info(${b})`).all().some(a=>a.name===c)||a.exec(d)}var r=c(24166);function s(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function t(a){return"string"==typeof a&&a.trim().length>0?a.trim():null}function u(a,b){let c=a.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get(b);return c?.name===b}function v(a,b){let c=a.prepare("SELECT 1 AS ok FROM provider_connections WHERE id = ? LIMIT 1").get(b);return c?.ok===1}function w(a,b){return`[db-health:${b}] ${a}`}function x(a){if(!u(a,"quota_snapshots"))return[];let b=new Set;for(let d of a.prepare("SELECT id, provider, connection_id, created_at FROM quota_snapshots").all()){var c;let e=t(d.connection_id),f=!!e&&!v(a,e),g=!("string"==typeof(c=d.created_at)&&0!==c.trim().length&&!Number.isNaN(Date.parse(c)));(f||g)&&"number"==typeof d.id&&b.add(d.id)}return Array.from(b)}function y(a,b){if(!u(a,b))return 0;let c=a.prepare(`SELECT COUNT(*) AS count
|
|
1
|
+
"use strict";exports.id=77044,exports.ids=[77044],exports.modules={5452:(a,b,c)=>{c.d(b,{Bn:()=>n,DL:()=>l,JQ:()=>q,LY:()=>o,TX:()=>i,Tw:()=>s,U$:()=>k,Zi:()=>j,ax:()=>r,jo:()=>p,tY:()=>m,x0:()=>h,xL:()=>g});var d=c(33873);let e=c.n(d)().join(process.cwd(),"logs","application","app.log");function f(a,b){if(!a)return b;let c=Number.parseInt(a,10);return Number.isInteger(c)&&c>0?c:b}function g(){return"false"!==process.env.APP_LOG_TO_FILE}function h(){return process.env.APP_LOG_FILE_PATH||e}function i(){var a=process.env.APP_LOG_MAX_FILE_SIZE;if(!a)return 0x3200000;let b=a.match(/^(\d+)\s*(k|m|g|kb|mb|gb)?$/i);if(!b)return 0x3200000;let c=parseInt(b[1],10);switch((b[2]||"").toLowerCase()){case"k":case"kb":return 1024*c;case"m":case"mb":return 1024*c*1024;case"g":case"gb":return 1024*c*1048576;default:return c}}function j(){return f(process.env.APP_LOG_RETENTION_DAYS,7)}function k(){return f(process.env.CALL_LOG_RETENTION_DAYS,7)}function l(){return f(process.env.APP_LOG_MAX_FILES,20)}function m(){return f(process.env.CALL_LOG_MAX_ENTRIES,1e4)}function n(){return f(process.env.CALL_LOGS_TABLE_MAX_ROWS,1e5)}function o(){return function(a,b){if(!a)return b;let c=a.trim().toLowerCase();return!!["1","true","yes","on"].includes(c)||!["0","false","no","off"].includes(c)&&b}(process.env.CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS,!0)}function p(){return 1024*f(process.env.CALL_LOG_PIPELINE_MAX_SIZE_KB,512)}function q(){return f(process.env.PROXY_LOGS_TABLE_MAX_ROWS,1e5)}function r(a){return process.env.APP_LOG_LEVEL||a}function s(a){return process.env.APP_LOG_FORMAT||a}},24166:(a,b,c)=>{function d(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function e(a){return"string"==typeof a&&a.trim().length>0?a.trim():null}function f(a){let b="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):0;return Number.isFinite(b)?Math.max(0,Math.min(100,b)):0}function g(a){let b=a.trim(),c=b.indexOf("/");if(c<=0)return null;let d=b.slice(0,c).trim();return d.length>0?d:null}function h(a,b){let c=a.trim();if(c.includes("/"))return c;let d=e(b);return d?`${d}/${c}`:c}function i(a){let b=a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return b.length>0?b:"step"}function j(a,b,c,d){return[i(b||"combo"),"combo-ref"===a?"ref":"model",String(c+1),i(d)].join("-").slice(0,200)}function k(a,b,c){return!b&&((function(a){let b=new Set;if(!a)return b;if(!Array.isArray(a)&&"function"==typeof a[Symbol.iterator]&&!(d(a)&&Array.isArray(a.combos))){for(let c of a){let a=e(c);a&&b.add(a)}return b}let c=d(a)&&Array.isArray(a.combos)?a.combos:[];for(let d of Array.isArray(a)?a:c){let a="string"==typeof d?e(d):e(d?.name);a&&b.add(a)}return b})(c.allCombos).has(a)||a===e(c.comboName))}function l(a){return"string"!=typeof a&&d(a)?f(a.weight):0}function m(a){if("string"==typeof a)return e(a);if(!d(a)||"combo-ref"===a.kind)return null;let b=e(a.model);if(!b)return null;let c=e(a.providerId)||e(a.provider)||g(b);return h(b,c)}function n(a){return"string"==typeof a?g(a):d(a)&&"combo-ref"!==a.kind?e(a.providerId)||e(a.provider)||g(e(a.model)||""):null}function o(a,b={}){if("string"==typeof a){let c=e(a);return c?(k(c,null,b),c):null}if(!d(a))return null;if("combo-ref"===a.kind)return e(a.comboName);let c=e(a.model);if(!c)return null;let f="model"===a.kind,i=e(a.providerId)||e(a.provider)||g(c);return!f&&k(c,i,b)?c:h(c,i)}function p(a,b={}){let c=e(b.comboName),i="number"==typeof b.index?b.index:0;if("string"==typeof a){let d=e(a);if(!d)return null;if(k(d,null,b))return{id:j("combo-ref",c,i,d),kind:"combo-ref",comboName:d,weight:0};let f=g(d);return{id:j("model",c,i,d),kind:"model",model:d,...f?{providerId:f}:{},weight:0}}if(!d(a))return null;let l=e(a.id),m=f(a.weight),n=e(a.label);if("combo-ref"===a.kind){let b=e(a.comboName);return b?{id:l||j("combo-ref",c,i,b),kind:"combo-ref",comboName:b,weight:m,...n?{label:n}:{}}:null}let o=e(a.model);if(!o)return null;let q="model"===a.kind,r=e(a.providerId)||e(a.provider)||g(o);if(!q&&k(o,r,b))return{id:l||j("combo-ref",c,i,o),kind:"combo-ref",comboName:o,weight:m,...n?{label:n}:{}};let s=h(o,r),t=null===a.connectionId?null:e(a.connectionId)||void 0,u=Array.isArray(a.tags)?a.tags.map(a=>e(a)).filter(a=>!!a):void 0;return{id:l||j("model",c,i,t?`${s}:${t}`:s),kind:"model",model:s,...r?{providerId:r}:{},...void 0!==t?{connectionId:t}:{},weight:m,...n?{label:n}:{},...u&&u.length>0?{tags:u}:{}}}function q(a,b={}){return(Array.isArray(a)?a:[]).map((a,c)=>p(a,{...b,index:c})).filter(a=>null!==a)}function r(a,b={}){let c=e(a.name);return{...a,version:2,models:q(a.models,{comboName:c,allCombos:b.allCombos})}}c.d(b,{Bq:()=>n,Dx:()=>m,En:()=>q,Sw:()=>p,Zy:()=>l,aW:()=>o,zA:()=>r})},30032:(a,b,c)=>{c.d(b,{Lk:()=>i,Tl:()=>h,_D:()=>f,xm:()=>g});var d=c(70368);let e=new Set(["api_key","apiKey","api-key","authorization","Authorization","x-api-key","X-Api-Key","x-goog-api-key","access_token","accessToken","refresh_token","refreshToken","password","secret","token"]);function f(a){return null==a?a:"function"==typeof globalThis.structuredClone?globalThis.structuredClone(a):JSON.parse(JSON.stringify(a))}function g(a){if("string"!=typeof a)return a;let b=a.trim();if(!b)return"";try{return JSON.parse(b)}catch{return{_rawText:a}}}function h(a){return null==a?null:function a(b){if(!b||"object"!=typeof b)return b;if(Array.isArray(b))return b.map(a);let c={};for(let[d,f]of Object.entries(b))e.has(d)?c[d]="[REDACTED]":"string"==typeof f&&f.startsWith("Bearer ")?c[d]="Bearer [REDACTED]":"object"==typeof f&&null!==f?c[d]=a(f):c[d]=f;return c}(function a(b){if("string"==typeof b)return(0,d.or)(b).text;if(Array.isArray(b))return b.map(a);if(!b||"object"!=typeof b)return b;let c={};for(let[d,e]of Object.entries(b))c[d]=a(e);return c}(g(a)))}function i(a){if("string"!=typeof a||0===a.trim().length)return null;try{return JSON.parse(a)}catch{return{_rawText:a}}}},69352:(a,b,c)=>{c.d(b,{Ce:()=>u,Gd:()=>q,Iy:()=>s,L8:()=>t,bZ:()=>m,kq:()=>w,sm:()=>v});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(88189),i=c(5452);let j="object"==typeof globalThis.caches&&null!==globalThis.caches,k="phase-production-build"===process.env.NEXT_PHASE,l=(0,h._3)({isCloud:j}),m=j?null:g().join(l,"call_logs"),n="call_log_artifact_size_limit_exceeded",o="[omitted: call log artifact size limit exceeded]",p="[stream chunks omitted: call log artifact size limit exceeded]";function q(a,b){let c=new Date(a),d=(Number.isNaN(c.getTime())?new Date().toISOString():c.toISOString()).replace(/[:]/g,"-"),e=d.slice(0,10);return g().posix.join(e,`${d}_${b}.json`)}function r(a){return a.pipeline?{...a,pipeline:{error:{_omniroute_truncated:!0,reason:n}}}:a}function s(a,b=q(a.summary.timestamp,a.summary.id)){if(!m||k)return null;let c=g().join(m,b),d=`${c}.${process.pid}.${Date.now()}.tmp`;try{let f=function(a){let b,c,d=a.pipeline?(0,i.jo)():524288,e=JSON.stringify(a,null,2);if(Buffer.byteLength(e)<=d)return e;let f=JSON.stringify((b=a.pipeline,b?.streamChunks?{...a,pipeline:{...b,streamChunks:{provider:b.streamChunks.provider?.length?[p]:void 0,openai:b.streamChunks.openai?.length?[p]:void 0,client:b.streamChunks.client?.length?[p]:void 0}}}:a),null,2);if(Buffer.byteLength(f)<=d)return f;let g=JSON.stringify(r(a),null,2);if(Buffer.byteLength(g)<=d)return g;let h=JSON.stringify({...r(a),requestBody:o,responseBody:o,error:a.error?o:null},null,2);return Buffer.byteLength(h)<=d?h:(c=JSON.stringify({schemaVersion:a.schemaVersion,summary:a.summary,requestBody:o,responseBody:o,error:a.error?o:null,pipeline:{error:{_omniroute_truncated:!0,reason:n}}}),Buffer.byteLength(c)<=d?c:JSON.stringify({schemaVersion:a.schemaVersion,_omniroute_truncated:!0,reason:n}))}(a),h=Buffer.byteLength(f),j=function(a){let b=Buffer.from(a),c=0x811c9dc5;for(let a of b)c^=a,c=Math.imul(c,0x1000193)>>>0;return c.toString(16).padStart(8,"0")}(f);return e().mkdirSync(g().dirname(c),{recursive:!0}),e().writeFileSync(d,f),e().renameSync(d,c),{relPath:b,sizeBytes:h,sha256:j}}catch(a){try{e().rmSync(d,{force:!0})}catch{}return console.error("[callLogs] Failed to write request artifact:",a.message),null}}function t(a){if(!m||!a)return{artifact:null,state:"missing"};try{let b=g().join(m,a);if(!e().existsSync(b))return{artifact:null,state:"missing"};return{artifact:JSON.parse(e().readFileSync(b,"utf8")),state:"ready"}}catch(a){return console.error("[callLogs] Failed to read request artifact:",a.message),{artifact:null,state:"corrupt"}}}function u(a){if(!m||!a)return!1;try{let b=g().join(m,a);if(!e().existsSync(b))return!1;return e().rmSync(b,{force:!0}),!0}catch{return!1}}function v(a=m){if(a&&e().existsSync(a))try{for(let b of e().readdirSync(a)){let c=g().join(a,b);e().statSync(c).isDirectory()&&0===e().readdirSync(c).length&&e().rmSync(c,{recursive:!0,force:!0})}}catch{}}function w(a=m){return a&&e().existsSync(a)?e().readdirSync(a).flatMap(b=>{let c=g().join(a,b);try{if(!e().statSync(c).isDirectory())return[];return e().readdirSync(c).filter(a=>a.endsWith(".json")).map(a=>{let d=g().join(c,a),f=e().statSync(d);return{relativePath:g().posix.join(b,a),absPath:d,mtimeMs:f.mtimeMs}})}catch{return[]}}).sort((a,b)=>b.mtimeMs-a.mtimeMs):[]}},70368:(a,b,c)=>{c.d(b,{Do:()=>f,or:()=>e});let d=[{name:"email",regex:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,replacement:"[EMAIL_REDACTED]",severity:"medium"},{name:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g,replacement:"[SSN_REDACTED]",severity:"high"},{name:"credit_card",regex:/\b(?:\d{4}[-\s]?){3}\d{4}\b/g,replacement:"[CC_REDACTED]",severity:"high"},{name:"phone_us",regex:/\b(?:\+?1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g,replacement:"[PHONE_REDACTED]",severity:"medium"},{name:"phone_br",regex:/\b(?:\+?55[-.\s]?)?\(?\d{2}\)?[-.\s]?\d{4,5}[-.\s]?\d{4}\b/g,replacement:"[PHONE_REDACTED]",severity:"medium"},{name:"cpf",regex:/\b\d{3}\.\d{3}\.\d{3}-\d{2}\b/g,replacement:"[CPF_REDACTED]",severity:"high"},{name:"cnpj",regex:/\b\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}\b/g,replacement:"[CNPJ_REDACTED]",severity:"high"},{name:"ip_address",regex:/\b(?:\d{1,3}\.){3}\d{1,3}\b/g,replacement:"[IP_REDACTED]",severity:"low"},{name:"aws_key",regex:/\bAKIA[0-9A-Z]{16}\b/g,replacement:"[AWS_KEY_REDACTED]",severity:"high"},{name:"api_key_generic",regex:/\b(?:sk|pk|api|key|token)[_-][a-zA-Z0-9]{20,}\b/gi,replacement:"[API_KEY_REDACTED]",severity:"high"}];function e(a){if("true"!==process.env.PII_RESPONSE_SANITIZATION||!a||"string"!=typeof a)return{text:a,detections:[],redacted:!1};let b=process.env.PII_RESPONSE_SANITIZATION_MODE||"redact",c=[],e=a;for(let f of d){f.regex.lastIndex=0;let d=a.match(f.regex);d&&d.length>0&&(c.push({pattern:f.name,count:d.length,severity:f.severity}),"redact"===b&&(f.regex.lastIndex=0,e=e.replace(f.regex,f.replacement)))}return c.length>0&&"warn"===b&&console.warn(`[PII] Detected PII in response: ${c.map(a=>`${a.pattern}(${a.count})`).join(", ")}`),{text:"redact"===b?e:a,detections:c,redacted:"redact"===b&&c.length>0}}function f(a){if("true"!==process.env.PII_RESPONSE_SANITIZATION||!a)return a;try{for(let b of a.choices||[]){if(b.message?.content){let a=e(b.message.content);b.message.content=a.text}if(b.delta?.content){let a=e(b.delta.content);b.delta.content=a.text}}}catch{}return a}},77044:(a,b,c)=>{c.d(b,{nJ:()=>H,NJ:()=>K,oh:()=>I,G6:()=>Q,sm:()=>ae,I8:()=>G,m1:()=>F,XL:()=>O,jX:()=>af,kB:()=>P,zj:()=>ad});var d=c(87550),e=c.n(d),f=c(33873),g=c.n(f),h=c(29021),i=c.n(h),j=c(88189),k=c(1932);let l=function(){let a=process.env.OMNIROUTE_MIGRATIONS_DIR;if("string"==typeof a&&a.trim().length>0)return g().resolve(a);try{return g().join(g().dirname((0,k.fileURLToPath)("file:///home/runner/work/OmniRoute/OmniRoute/src/lib/db/migrationRunner.ts")),"migrations")}catch{}let b="file:///home/runner/work/OmniRoute/OmniRoute/src/lib/db/migrationRunner.ts";if("string"==typeof b&&b.startsWith("file://"))try{let a=decodeURIComponent(b.replace(/^file:\/\/\//,"/").replace(/^file:\/\//,""));return g().join(g().dirname(g().resolve(a)),"migrations")}catch{}let c=g().join(process.cwd(),"src","lib","db","migrations");if(i().existsSync(c))return c;let d=g().join(process.cwd(),"app","src","lib","db","migrations");if(i().existsSync(d))return d;throw Error("[Migration] Could not resolve migrations directory. Set OMNIROUTE_MIGRATIONS_DIR.")}(),m=[{fromVersion:"022",fromName:"call_logs_summary_storage",toVersion:"025",toName:"call_logs_summary_storage"},{fromVersion:"028",fromName:"provider_connection_max_concurrent",toVersion:"029",toName:"provider_connection_max_concurrent"}],n=[{version:"028",tableName:"batches",description:"batches table"},{version:"024",tableName:"sync_tokens",description:"sync_tokens table"},{version:"022",tableName:"memory_fts",description:"memory_fts virtual table"},{version:"019",tableName:"context_handoffs",description:"context_handoffs table"},{version:"017",tableName:"version_manager",description:"version_manager table"},{version:"016",tableName:"skill_executions",description:"skill_executions table"},{version:"015",tableName:"memories",description:"memories table"},{version:"013",tableName:"quota_snapshots",description:"quota_snapshots table"},{version:"011",tableName:"webhooks",description:"webhooks table"},{version:"010",tableName:"model_combo_mappings",description:"model_combo_mappings table"},{version:"008",tableName:"registered_keys",description:"registered_keys table"},{version:"006",tableName:"request_detail_logs",description:"request_detail_logs table"},{version:"004",tableName:"proxy_registry",description:"proxy_registry table"},{version:"002",tableName:"mcp_tool_audit",description:"mcp_tool_audit table"}],o=["provider_connections","combos","call_logs"];function p(a,b){let c=a.prepare("SELECT name FROM sqlite_master WHERE type IN ('table', 'view') AND name = ?").get(b);return!!c?.name}function q(a,b,c,d){a.prepare(`PRAGMA table_info(${b})`).all().some(a=>a.name===c)||a.exec(d)}var r=c(24166);function s(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function t(a){return"string"==typeof a&&a.trim().length>0?a.trim():null}function u(a,b){let c=a.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get(b);return c?.name===b}function v(a,b){let c=a.prepare("SELECT 1 AS ok FROM provider_connections WHERE id = ? LIMIT 1").get(b);return c?.ok===1}function w(a,b){return`[db-health:${b}] ${a}`}function x(a){if(!u(a,"quota_snapshots"))return[];let b=new Set;for(let d of a.prepare("SELECT id, provider, connection_id, created_at FROM quota_snapshots").all()){var c;let e=t(d.connection_id),f=!!e&&!v(a,e),g=!("string"==typeof(c=d.created_at)&&0!==c.trim().length&&!Number.isNaN(Date.parse(c)));(f||g)&&"number"==typeof d.id&&b.add(d.id)}return Array.from(b)}function y(a,b){if(!u(a,b))return 0;let c=a.prepare(`SELECT COUNT(*) AS count
|
|
2
2
|
FROM ${b}
|
|
3
3
|
WHERE api_key_id NOT IN (SELECT id FROM api_keys)`).get();return c?.count||0}function z(a,b){return u(a,b)?a.prepare(`DELETE FROM ${b} WHERE api_key_id NOT IN (SELECT id FROM api_keys)`).run().changes:0}function A(a,b,c){if(!u(a,b))return 0;let d=a.prepare(`SELECT ${c} FROM ${b}`).all(),e=0;for(let a of d){let b=a[c];if(null!=b||"options"!==c){if("string"!=typeof b){e+=1;continue}try{JSON.parse(b)}catch{e+=1}}}return e}function B(a,b,c){if(!u(a,b))return 0;let d=a.prepare(`SELECT rowid, ${c} FROM ${b}`).all(),e=a.prepare(`DELETE FROM ${b} WHERE rowid = ?`),f=a.prepare("UPDATE domain_circuit_breakers SET options = NULL WHERE rowid = ?"),g=0;for(let a of d){let d=a[c];if(null!=d||"domain_circuit_breakers"!==b){if("string"!=typeof d){if("domain_circuit_breakers"===b){g+=f.run(a.rowid).changes;continue}e.run(a.rowid),g+=1;continue}try{JSON.parse(d)}catch{if("domain_circuit_breakers"===b){g+=f.run(a.rowid).changes;continue}e.run(a.rowid),g+=1}}}return g}function C(a,b={}){let c=!0===b.autoRepair,d=b.expectedSchemaVersion||"1",e=new Date().toISOString(),f=[],g=0,h=!1,i=!1,j=()=>{c&&!i&&"function"==typeof b.createBackupBeforeRepair&&(i=!0,h=b.createBackupBeforeRepair())},k=a.pragma("integrity_check");if(k[0]?.integrity_check!=="ok"&&f.push({type:"integrity_check_failed",table:"sqlite",description:"SQLite integrity_check returned a non-ok status.",count:1}),u(a,"combos")){let b=a.prepare("SELECT id, name, data, sort_order, created_at, updated_at FROM combos ORDER BY name COLLATE NOCASE ASC").all(),d=function(a,b,c,d){if(0===b.length)return{issueCount:0,repairedCount:0};let e=new Set(b.map(a=>a.name)),f=0,g=0,h=a.prepare("UPDATE combos SET data = ?, updated_at = ? WHERE id = ?");for(let j of b){var i;let b=function(a){try{let b=JSON.parse(a);return s(b)?b:null}catch{return null}}(j.data);if(!b){if(f+=1,d.autoRepair){let a={id:j.id,name:j.name,version:2,strategy:"priority",models:[],config:{},isActive:!1,isHidden:!1,sortOrder:"number"==typeof j.sort_order?j.sort_order:0,createdAt:j.created_at||c,updatedAt:c,repairNote:w("Combo payload was rebuilt after invalid JSON was detected.",c)};h.run(JSON.stringify(a),c,j.id),g+=1}continue}let k=Array.isArray(i=b.models)?i:[];if(0===k.length)continue;let l=[],m=0,n=0,o=0;for(let[b,c]of k.entries()){if(!s(c)){if("string"==typeof c){let a=(0,r.Sw)(c,{comboName:j.name,index:b,allCombos:e});if(a?.kind==="combo-ref"){if(a.comboName===j.name||!e.has(a.comboName)){m+=1;continue}l.push(a),o+=1;continue}}l.push(c);continue}if("combo-ref"===c.kind){let a=t(c.comboName);if(!a||a===j.name||!e.has(a)){m+=1;continue}l.push(c);continue}let d=t(c.connectionId);if(d&&!v(a,d)){let a={...c};delete a.connectionId,l.push(a),n+=1;continue}l.push(c)}if(0===m&&0===n&&0===o||(f+=m+n+o,!d.autoRepair))continue;let p={...b,models:l,updatedAt:c,repairNote:w([m>0?`${m} broken combo step(s) removed.`:null,n>0?`${n} missing connection pin(s) cleared.`:null,o>0?`${o} legacy combo ref step(s) canonicalized.`:null].filter(Boolean).join(" "),c),...0===l.length?{isActive:!1}:{}};h.run(JSON.stringify(p),c,j.id),g+=m+n+o}return{issueCount:f,repairedCount:g}}(a,b,e,{autoRepair:c});d.issueCount>0&&(f.push({type:"broken_reference",table:"combos",description:"Combos contained broken combo references, legacy combo refs, invalid JSON, or pinned connections that no longer exist.",count:d.issueCount}),c&&(j(),g+=d.repairedCount))}let l=x(a).length;l>0&&(f.push({type:"stale_snapshot",table:"quota_snapshots",description:"Quota snapshots referenced missing connections or contained invalid timestamps.",count:l}),c&&(j(),g+=function(a){if(!u(a,"quota_snapshots"))return 0;let b=x(a);if(0===b.length)return 0;let c=a.prepare("DELETE FROM quota_snapshots WHERE id = ?"),d=0;for(let a of b)d+=c.run(a).changes;return d}(a)));let m=y(a,"domain_budgets");m>0&&(f.push({type:"broken_reference",table:"domain_budgets",description:"Domain budgets referenced API keys that no longer exist.",count:m}),c&&(j(),g+=z(a,"domain_budgets")));let n=y(a,"domain_cost_history");n>0&&(f.push({type:"broken_reference",table:"domain_cost_history",description:"Domain cost history referenced API keys that no longer exist.",count:n}),c&&(j(),g+=z(a,"domain_cost_history")));let o=A(a,"domain_fallback_chains","chain");o>0&&(f.push({type:"invalid_state",table:"domain_fallback_chains",description:"Fallback chain rows contained invalid JSON payloads.",count:o}),c&&(j(),g+=B(a,"domain_fallback_chains","chain")));let p=A(a,"domain_lockout_state","attempts");p>0&&(f.push({type:"invalid_state",table:"domain_lockout_state",description:"Lockout state rows contained invalid JSON payloads.",count:p}),c&&(j(),g+=B(a,"domain_lockout_state","attempts")));let q=A(a,"domain_circuit_breakers","options");q>0&&(f.push({type:"invalid_state",table:"domain_circuit_breakers",description:"Circuit breaker option payloads were invalid JSON.",count:q}),c&&(j(),g+=B(a,"domain_circuit_breakers","options")));let D=function(a,b){if(!u(a,"db_meta"))return 0;let c=a.prepare("SELECT value FROM db_meta WHERE key = 'schema_version'").get();return+(("string"==typeof c?.value?c.value:null)!==b)}(a,d);D>0&&(f.push({type:"invalid_state",table:"db_meta",description:`db_meta.schema_version did not match expected version ${d}.`,count:D}),c)&&(j(),g+=u(a,"db_meta")?a.prepare("INSERT OR REPLACE INTO db_meta (key, value) VALUES ('schema_version', ?)").run(d).changes:0);return{isHealthy:0===f.length,issues:f,repairedCount:g,backupCreated:h,autoRepair:c,checkedAt:e}}var D=c(30032),E=c(69352);let F="object"==typeof globalThis.caches&&null!==globalThis.caches,G="phase-production-build"===process.env.NEXT_PHASE,H=(0,j._3)({isCloud:F});F||(0,j.sm)();let I=F?null:g().join(H,"storage.sqlite"),J=F?null:g().join(H,"db.json"),K=F?null:g().join(H,"db_backups"),L=new Set(["syncedAvailableModels","providerLimitsCache","lkgp"]),M=[{table:"key_value",maxRows:1e4,readRows:a=>(a.prepare("SELECT namespace, key, value FROM key_value").all()??[]).filter(a=>"string"!=typeof a.namespace||!L.has(a.namespace))},{table:"provider_connections",maxRows:5e3},{table:"provider_nodes",maxRows:5e3},{table:"combos",maxRows:5e3},{table:"api_keys",maxRows:5e3},{table:"proxy_registry",maxRows:5e3},{table:"proxy_assignments",maxRows:1e4},{table:"model_combo_mappings",maxRows:5e3},{table:"sync_tokens",maxRows:5e3},{table:"registered_keys",maxRows:1e4},{table:"provider_key_limits",maxRows:1e4},{table:"account_key_limits",maxRows:1e4},{table:"upstream_proxy_config",maxRows:5e3},{table:"webhooks",maxRows:5e3}];if(!F&&!i().existsSync(H))try{i().mkdirSync(H,{recursive:!0})}catch(b){let a=b instanceof Error?b.message:String(b);console.warn(`[DB] Cannot create data directory '${H}': ${a}
|
|
4
4
|
[DB] Set the DATA_DIR environment variable to a writable path, e.g.:
|
|
@@ -8,7 +8,7 @@ ${a}`),Error(`Provider validation failed for ${b}`)}}d()}catch(a){d(a)}})},2340:
|
|
|
8
8
|
from { opacity: 1; transform: translateX(0) scale(1); }
|
|
9
9
|
to { opacity: 0; transform: translateX(100%) scale(0.95); }
|
|
10
10
|
}
|
|
11
|
-
`}),(0,d.jsx)("div",{"aria-live":"polite","aria-atomic":"false",style:{position:"fixed",top:"20px",right:"20px",zIndex:9999,display:"flex",flexDirection:"column",gap:"10px",pointerEvents:"none"},children:a.map(a=>(0,d.jsx)("div",{style:{pointerEvents:"auto"},children:(0,d.jsx)(i,{notification:a,onDismiss:b})},a.id))})]})}},22245:(a,b,c)=>{c.d(b,{default:()=>l});var d=c(48249),e=c(77360),f=c(2116),g=c.n(f),h=c(47336);let i=[{label:"Features",href:"#features"},{label:"Pricing",href:"#pricing"},{label:"Changelog",href:"https://github.com/diegosouzapw/OmniRoute/releases",external:!0}],j=[{label:"Documentation",href:"/docs"},{label:"API Reference",href:"/docs#api-reference"},{label:"Help Center",href:"https://github.com/diegosouzapw/OmniRoute/discussions",external:!0}],k=[{label:"About",href:"https://github.com/diegosouzapw/OmniRoute",external:!0},{label:"Blog",href:"https://github.com/diegosouzapw/OmniRoute/releases",external:!0},{label:"Contact",href:"https://github.com/diegosouzapw/OmniRoute/issues/new/choose",external:!0},{label:"Terms",href:"/terms"},{label:"Privacy",href:"/privacy"}];function l(){let a=(0,e.c)("stats"),b=a=>a.external?(0,d.jsx)("a",{href:a.href,target:"_blank",rel:"noopener noreferrer",className:"hover:text-primary transition-colors",children:a.label}):(0,d.jsx)(g(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label});return(0,d.jsx)("footer",{className:"bg-bg border-t border-border pt-16 pb-12",children:(0,d.jsxs)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[(0,d.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-10 mb-12",children:[(0,d.jsxs)("div",{className:"col-span-2 lg:col-span-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,d.jsx)("div",{className:"size-6 text-primary",children:(0,d.jsx)("svg",{className:"w-full h-full",fill:"currentColor",viewBox:"0 0 48 48",children:(0,d.jsx)("path",{clipRule:"evenodd",d:"M12.0799 24L4 19.2479L9.95537 8.75216L18.04 13.4961L18.0446 4H29.9554L29.96 13.4961L38.0446 8.75216L44 19.2479L35.92 24L44 28.7521L38.0446 39.2479L29.96 34.5039L29.9554 44H18.0446L18.04 34.5039L9.95537 39.2479L4 28.7521L12.0799 24Z",fillRule:"evenodd"})})}),(0,d.jsx)("span",{className:"text-xl font-bold text-text-main",children:h.v.name})]}),(0,d.jsx)("p",{className:"text-text-muted mb-6 max-w-sm font-light",children:"The unified interface for modern AI infrastructure. Secure, observable, and scalable."}),(0,d.jsxs)("div",{className:"flex gap-4",children:[(0,d.jsx)("a",{href:"https://github.com/diegosouzapw/OmniRoute/discussions",target:"_blank",rel:"noopener noreferrer",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"Community Discussions",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"})})}),(0,d.jsx)("a",{href:"https://github.com/diegosouzapw/OmniRoute",target:"_blank",rel:"noopener noreferrer",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"GitHub",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0 0 22 12.017C22 6.484 17.522 2 12 2z"})})})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:a("product")}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:i.map(a=>(0,d.jsx)("li",{children:b(a)},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:a("resources")}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:j.map(a=>(0,d.jsx)("li",{children:b(a)},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:a("company")}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:k.map(a=>(0,d.jsx)("li",{children:b(a)},a.label))})]})]}),(0,d.jsxs)("div",{className:"border-t border-border pt-8 flex flex-col md:flex-row justify-between items-center gap-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["\xa9 ",new Date().getFullYear()," ",h.v.name," Inc. All rights reserved."]}),(0,d.jsxs)("div",{className:"flex gap-6 text-sm text-text-muted",children:[(0,d.jsx)("a",{href:"/docs",className:"hover:text-primary transition-colors",children:"Documentation"}),(0,d.jsx)(g(),{href:"/terms",className:"hover:text-primary transition-colors",children:"Terms"}),(0,d.jsx)(g(),{href:"/privacy",className:"hover:text-primary transition-colors",children:"Privacy"}),(0,d.jsx)("a",{href:"https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE",target:"_blank",rel:"noopener noreferrer",className:"hover:text-primary transition-colors",children:"License"})]})]})]})})}},25251:(a,b,c)=>{c.d(b,{KC:()=>g,Xg:()=>f,vq:()=>e});var d=c(66931);let e=(0,d.oD)(),f=(0,d.Qv)();function g(a){return e[f[a]||a]||[]}},27309:(a,b,c)=>{c.d(b,{default:()=>l});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(77360),i=c(65953),j=c(53156),k=c(29518);function l({isOpen:a,onSuccess:b,onClose:c,reauthConnection:f}){let g=(0,h.c)("cursorAuthModal"),[m,n]=(0,e.useState)(""),[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(!1),y=async()=>{if(!m.trim())return void r(g("errorEnterToken"));t(!0),r(null);try{let a={accessToken:m.trim()};o.trim()&&(a.machineId=o.trim());let d=await fetch("/api/oauth/cursor/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),e=await d.json();if(!d.ok)throw Error(e.error||g("errorImportFailed"));b?.(),c()}catch(a){r(a.message)}finally{t(!1)}};return(0,d.jsx)(i.default,{isOpen:a,title:g("title"),onClose:c,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[u&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:g("autoDetecting")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:g("readingFromCursor")})]}),!u&&(0,d.jsxs)(d.Fragment,{children:[w&&(0,d.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,d.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:g("tokensAutoDetected")})]})}),!w&&!q&&(0,d.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:g("cursorNotDetected")})]})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:[g("accessToken")," ",(0,d.jsx)("span",{className:"text-red-500",children:g("required")})]}),(0,d.jsx)("textarea",{value:m,onChange:a=>n(a.target.value),placeholder:g("accessTokenPlaceholder"),rows:3,className:"w-full px-3 py-2 text-sm font-mono border border-border rounded-lg bg-background focus:outline-none focus:border-primary resize-none"})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:[g("machineId")," ",(0,d.jsx)("span",{className:"text-text-muted text-xs",children:g("optional")})]}),(0,d.jsx)(k.default,{value:o,onChange:a=>p(a.target.value),placeholder:g("machineIdPlaceholder"),className:"font-mono text-sm"})]}),q&&(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,d.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:q})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.default,{onClick:y,fullWidth:!0,disabled:s||!m.trim(),children:s?g("importing"):g("importToken")}),(0,d.jsx)(j.default,{onClick:c,variant:"ghost",fullWidth:!0,children:g("cancel")})]})]})]})})}l.propTypes={isOpen:g().bool.isRequired,onSuccess:g().func,onClose:g().func.isRequired}},27395:(a,b,c)=>{c.d(b,{A:()=>bP});var d=c(48249),e=c(67484),f=c(81220),g=c(72563),h=c(90962),i=c(1362),j=c(2950),k=c(77260),l=c(73644),m=c(53632),n=c(34320),o=c(98599),p=c(55457),q=c(37777),r=c(94635),s=c(33479),t=c(85697),u=c(2293),v=c(64671),w=c(1231),x=c(71945),y=c(65226),z=c(96330),A=c(43310),B=c(20036),C=c(81444),D=c(3582),E=c(59185),F=c(4427),G=c(19863),H=c(83217),I=c(71932),J=c(12475),K=c(77109),L=c(12207),M=c(29929),N=c(20414),O=c(81742),P=c(40328),Q=c(41272),R=c(11903),S=c(2418),T=c(90482),U=c(75950),V=c(83102),W=c(86748),X=c(69564),Y=c(42297),Z=c(19710),$=c(81646),_=c(73343),aa=c(99769),ab=c(77e3),ac=c(20696),ad=c(81756),ae=c(34940),af=c(79147),ag=c(80039),ah=c(61729),ai=c(85571),aj=c(46301),ak=c(92921),al=c(83559),am=c(61953),an=c(97459),ao=c(86793),ap=c(7336),aq=c(41240),ar=c(86695),as=c(78881),at=c(92636),au=c(95043),av=c(4914),aw=c(59714),ax=c(36256),ay=c(51248),az=c(69055),aA=c(78101),aB=c(44961),aC=c(55835),aD=c(60287),aE=c(79833),aF=c(13967),aG=c(37001),aH=c(68786),aI=c(58994),aJ=c(56469),aK=c(85964),aL=c(83071),aM=c(5835),aN=c(69445),aO=c(714),aP=c(6872),aQ=c(4553),aR=c(20387),aS=c(97627),aT=c(54261),aU=c(31424),aV=c(62208),aW=c(35983),aX=c(42057),aY=c(7657),aZ=c(95417),a$=c(19700),a_=c(49652),a0=c(12058),a1=c(83130),a2=c(27215),a3=c(36105),a4=c(9983),a5=c(12793),a6=c(59353),a7=c(66003),a8=c(95630),a9=c(33510),ba=c(29942),bb=c(41734),bc=c(89556),bd=c(73140),be=c(51366),bf=c(66742),bg=c(67083),bh=c(62373),bi=c(51097),bj=c(71571),bk=c(66520),bl=c(73192),bm=c(77034),bn=c(2065),bo=c(44811),bp=c(24384),bq=c(80750),br=c(93214),bs=c(32647),bt=c(14222),bu=c(88062),bv=c(64305),bw=c(37003),bx=c(40598),by=c(45062),bz=c(26934),bA=c(77091),bB=c(32605),bC=c(72071),bD=c(81520),bE=c(81223),bF=c(89207),bG=c(42353),bH=c(78038),bI=c(63448),bJ=c(59944);let bK={Ai21:{mono:g.A},Alibaba:{mono:i.A,color:h.A},Anthropic:{mono:j.A},Antigravity:{mono:l.A,color:k.A},AssemblyAI:{mono:n.A,color:m.A},Automatic:{mono:p.A,color:o.A},Aws:{mono:r.A,color:q.A},Azure:{mono:t.A,color:s.A},AzureAI:{mono:v.A,color:u.A},Baidu:{mono:x.A,color:w.A},Bailian:{mono:z.A,color:y.A},Baseten:{mono:A.A},Bedrock:{mono:C.A,color:B.A},Bfl:{mono:D.A},Cerebras:{mono:F.A,color:E.A},ClaudeCode:{mono:H.A,color:G.A},Cline:{mono:I.A},Cloudflare:{mono:K.A,color:J.A},Codex:{mono:M.A,color:L.A},Cohere:{mono:O.A,color:N.A},ComfyUI:{mono:Q.A,color:P.A},Cursor:{mono:R.A},Dbrx:{mono:T.A,color:S.A},DeepInfra:{mono:V.A,color:U.A},DeepSeek:{mono:X.A,color:W.A},ElevenLabs:{mono:Y.A},Exa:{mono:$.A,color:Z.A},Fal:{mono:aa.A,color:_.A},Featherless:{mono:ac.A,color:ab.A},Fireworks:{mono:ae.A,color:ad.A},Friendli:{mono:af.A},Gemini:{mono:ah.A,color:ag.A},GeminiCLI:{mono:aj.A,color:ai.A},GithubCopilot:{mono:ak.A},Google:{mono:am.A,color:al.A},Grok:{mono:an.A},Groq:{mono:ao.A},HuggingFace:{mono:aq.A,color:ap.A},Hyperbolic:{mono:as.A,color:ar.A},IBM:{mono:at.A},Inference:{mono:au.A},Jina:{mono:av.A},KiloCode:{mono:aw.A},Kimi:{mono:ay.A,color:ax.A},Lambda:{mono:az.A},LmStudio:{mono:aA.A},Meta:{mono:aC.A,color:aB.A},MetaAI:{mono:aE.A,color:aD.A},Minimax:{mono:aG.A,color:aF.A},Mistral:{mono:aI.A,color:aH.A},Moonshot:{mono:aJ.A},Morph:{mono:aL.A,color:aK.A},NanoBanana:{mono:aN.A,color:aM.A},Nebius:{mono:aO.A},NousResearch:{mono:aP.A},Novita:{mono:aR.A,color:aQ.A},Nvidia:{mono:aT.A,color:aS.A},Ollama:{mono:aU.A},OpenAI:{mono:aV.A},OpenClaw:{mono:aX.A,color:aW.A},OpenCode:{mono:aY.A},OpenRouter:{mono:aZ.A},Perplexity:{mono:a_.A,color:a$.A},Poe:{mono:a1.A,color:a0.A},Qoder:{mono:a3.A,color:a2.A},Qwen:{mono:a5.A,color:a4.A},Recraft:{mono:a6.A},Replicate:{mono:a7.A},Runway:{mono:a8.A},SambaNova:{mono:ba.A,color:a9.A},SearchApi:{mono:bb.A},SiliconCloud:{mono:bd.A,color:bc.A},Snowflake:{mono:bf.A,color:be.A},Stability:{mono:bh.A,color:bg.A},Tavily:{mono:bj.A,color:bi.A},Together:{mono:bl.A,color:bk.A},TopazLabs:{mono:bm.A},Upstage:{mono:bo.A,color:bn.A},V0:{mono:bp.A},Venice:{mono:br.A,color:bq.A},Vercel:{mono:bs.A},VertexAI:{mono:bu.A,color:bt.A},Vllm:{mono:bw.A,color:bv.A},Volcengine:{mono:by.A,color:bx.A},Voyage:{mono:bA.A,color:bz.A},WorkersAI:{mono:bC.A,color:bB.A},XAI:{mono:bD.A},XiaomiMiMo:{mono:bE.A},Xinference:{mono:bG.A,color:bF.A},ZAI:{mono:bH.A},Zhipu:{mono:bJ.A,color:bI.A}},bL={ai21:"Ai21",alibaba:"Alibaba",alicode:"Alibaba","alicode-intl":"Alibaba","amazon-q":"Aws",anthropic:"Anthropic",antigravity:"Antigravity",assemblyai:"AssemblyAI","aws-polly":"Aws",azure:"Azure","azure-ai":"AzureAI","azure-openai":"AzureAI",baidu:"Baidu","bailian-coding-plan":"Bailian",baseten:"Baseten",bedrock:"Bedrock",bfl:"Bfl","black-forest-labs":"Bfl",cerebras:"Cerebras",claude:"ClaudeCode",cline:"Cline",cloudflare:"Cloudflare","cloudflare-ai":"WorkersAI",codestral:"Mistral",codex:"Codex",cohere:"Cohere",comfyui:"ComfyUI",copilot:"GithubCopilot",cursor:"Cursor",databricks:"Dbrx",deepinfra:"DeepInfra",deepseek:"DeepSeek",elevenlabs:"ElevenLabs",exa:"Exa","exa-search":"Exa",fal:"Fal","fal-ai":"Fal",featherless:"Featherless","featherless-ai":"Featherless",fireworks:"Fireworks","fireworks-ai":"Fireworks",friendli:"Friendli",friendliai:"Friendli",gemini:"Gemini","gemini-cli":"GeminiCLI",github:"GithubCopilot","github-copilot":"GithubCopilot",glm:"Zhipu","glm-cn":"Zhipu",glmt:"Zhipu","google-pse-search":"Google",grok:"Grok","grok-web":"Grok",groq:"Groq","hugging-face":"HuggingFace",huggingface:"HuggingFace",hyperbolic:"Hyperbolic",ibm:"IBM","inference-net":"Inference",jina:"Jina","jina-ai":"Jina",kilocode:"KiloCode",kimi:"Kimi","kimi-coding":"Kimi","kimi-coding-apikey":"Kimi",lambda:"Lambda","lambda-ai":"Lambda","lm-studio":"LmStudio",lmstudio:"LmStudio","meta-llama":"Meta",minimax:"Minimax","minimax-cn":"Minimax",mistral:"Mistral",mistralai:"Mistral",moonshot:"Moonshot",morph:"Morph","muse-spark-web":"MetaAI",nanobanana:"NanoBanana",nebius:"Nebius","nous-research":"NousResearch",nousresearch:"NousResearch",novita:"Novita",nvidia:"Nvidia",ollama:"Ollama","ollama-cloud":"Ollama",openai:"OpenAI",openclaw:"OpenClaw",opencode:"OpenCode","opencode-go":"OpenCode","opencode-zen":"OpenCode","open-router":"OpenRouter",openrouter:"OpenRouter",perplexity:"Perplexity","perplexity-search":"Perplexity","perplexity-web":"Perplexity",poe:"Poe",qoder:"Qoder",qwen:"Qwen",recraft:"Recraft",replicate:"Replicate",runwayml:"Runway",sambanova:"SambaNova",sdwebui:"Automatic",searchapi:"SearchApi","searchapi-search":"SearchApi",siliconflow:"SiliconCloud",snowflake:"Snowflake",stability:"Stability","stability-ai":"Stability",tavily:"Tavily","tavily-search":"Tavily",together:"Together",topaz:"TopazLabs",upstage:"Upstage",v0:"V0","v0-vercel":"V0",venice:"Venice","vercel-ai-gateway":"Vercel",vertex:"VertexAI","vertex-partner":"VertexAI",vertexai:"VertexAI",vllm:"Vllm",volcengine:"Volcengine",voyage:"Voyage","voyage-ai":"Voyage",watsonx:"IBM","workers-ai":"WorkersAI",workersai:"WorkersAI",xai:"XAI","xiaomi-mimo":"XiaomiMiMo",xiaomimimo:"XiaomiMiMo",xinference:"Xinference",zai:"ZAI",zhipu:"Zhipu"};function bM({size:a}){return(0,d.jsxs)("svg",{width:a,height:a,viewBox:"0 0 24 24",fill:"none",style:{flex:"none"},children:[(0,d.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.4"}),(0,d.jsx)("path",{d:"M8 12h8M12 8v8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}let bN=new Set(["aimlapi","alibaba","alicode-intl","alicode","anthropic-m","anthropic","antigravity","bailian-coding-plan","blackbox","brave-search","brave","cerebras","claude","cline","codex","cohere","continue","copilot","cursor","deepgram","deepseek","droid","exa-search","fireworks","gemini-cli","gemini","github","glm","glmt","groq","ironclaw","kilo-gateway","kilocode","kimi-coding-apikey","kimi-coding","kimi","kiro","longcat","minimax-cn","minimax","mistral","nanobot","nebius","nvidia","oai-cc","oai-r","ollama-cloud","openai","openclaw","openrouter","perplexity-search","perplexity","pollinations","qwen","roo","serper-search","serper","siliconflow","tavily-search","tavily","together","xai","zeroclaw","aws-polly","blackbox-web","cliproxyapi","databricks","empower","gigachat","gitlab-duo","gitlab","heroku","linkup-search","llamagate","maritalk","modal","nanogpt","nscale","oci","ovhcloud","piapi","poe","predibase","qoder","recraft","reka","runwayml","triton","venice","voyage-ai","wandb","youcom-search"]),bO=new Set(["apikey","assemblyai","brave","cartesia","cloudflare-ai","comfyui","elevenlabs","exa-search","exa","huggingface","hyperbolic","inworld","nanobanana","oauth","opencode-go","opencode-zen","opencode","playht","puter","qianfan","scaleway","sdwebui","synthetic","vertex","windsurf","zai"]),bP=(0,e.memo)(function({providerId:a,size:b=24,type:c="color",className:g,style:h}){let i=a.toLowerCase(),j=function(a,b="color"){let c=bL[a.toLowerCase()];if(!c)return null;let d=bK[c];return"color"===b&&d.color?d.color:d.mono}(i,c),k=bN.has(i),l=bO.has(i),[m,n]=(0,e.useState)({}),o=`${i}:png`,p=`${i}:svg`,q=!j&&k&&!m[o],r=!j&&l&&!m[p]&&(!k||m[o]);return j?(0,d.jsx)("span",{className:g,style:{display:"inline-flex",alignItems:"center",...h},children:(0,e.createElement)(j,{"aria-label":a,size:b,style:{flex:"none"}})}):q?(0,d.jsx)("span",{className:g,style:{display:"inline-flex",alignItems:"center",...h},children:(0,d.jsx)(f.default,{src:`/providers/${i}.png`,alt:a,width:b,height:b,style:{objectFit:"contain"},onError:()=>{n(a=>({...a,[o]:!0}))},unoptimized:!0})}):r?(0,d.jsx)("span",{className:g,style:{display:"inline-flex",alignItems:"center",...h},children:(0,d.jsx)(f.default,{src:`/providers/${i}.svg`,alt:a,width:b,height:b,style:{objectFit:"contain"},onError:()=>n(a=>({...a,[p]:!0})),unoptimized:!0})}):(0,d.jsx)("span",{className:g,style:{display:"inline-flex",alignItems:"center",...h},children:(0,d.jsx)(bM,{size:b})})})},29494:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{default:()=>p});var e=c(48249),f=c(67484),g=c(49885),h=c.n(g),i=c(77360),j=c(65953),k=c(47825),l=c(41434),m=c(86864),n=c(70689),o=a([k,l,n]);[k,l,n]=o.then?(await o)():o;let q=[...Object.keys(n.zN),...Object.keys(n.IS),...Object.keys(n.fg)];function p({isOpen:a,onClose:b,onSelect:c,selectedModel:d,selectedModels:g=[],activeProviders:h=[],title:o,modelAliases:r={},addedModelValues:s=[],multiSelect:t=!1,showCombos:u=!0}){let v=(0,i.c)("common"),w=o??v("selectModel"),[x,y]=(0,f.useState)(""),[z,A]=(0,f.useState)([]),[B,C]=(0,f.useState)([]),[D,E]=(0,f.useState)({}),F=(0,f.useMemo)(()=>({...n.zN,...n.IS,...n.fg}),[]),G=(0,f.useMemo)(()=>{let a={},b=h.map(a=>a.provider);return[...new Set([...b])].sort((a,b)=>{let c=q.indexOf(a),d=q.indexOf(b);return(-1===c?999:c)-(-1===d?999:d)}).forEach(b=>{let c=k.Xg[b]||b,d=F[b]||{name:b,color:"#666"},e=(0,n.mq)(b)||(0,n.gb)(b),f=D[b]||[];if(d.passthroughModels){let e=Object.entries(r).filter(([,a])=>a.startsWith(`${c}/`)).map(([a,b])=>({id:b.replace(`${c}/`,""),name:a,value:b,source:"alias"})),g=f.filter(a=>!e.some(b=>b.id===a.id)).map(a=>({id:a.id,name:a.name||a.id,value:`${c}/${a.id}`,isCustom:!0,source:"api-sync"===a.source?"api-sync":"custom"})),h=[...e,...g];if(h.length>0){let e=B.find(a=>a.id===b),f=e?.name||d.name;a[b]={name:f,alias:c,color:d.color,models:h}}}else if(e){let c=B.find(a=>a.id===b),e=c?.name||d.name,g=c?.prefix||b,h=Object.entries(r).filter(([,a])=>a.startsWith(`${b}/`)).map(([a,c])=>({id:c.replace(`${b}/`,""),name:a,value:`${g}/${c.replace(`${b}/`,"")}`,source:"alias"})),i=((0,l.L)(b,f)||[]).filter(a=>!h.some(b=>b.id===a.id)).map(a=>({id:a.id,name:a.name||a.id,value:`${g}/${a.id}`,isFallback:!0,source:"fallback"})),j=f.filter(a=>!h.some(b=>b.id===a.id)&&!i.some(b=>b.id===a.id)).map(a=>({id:a.id,name:a.name||a.id,value:`${g}/${a.id}`,isCustom:!0,source:"api-sync"===a.source?"api-sync":"custom"})),k=[...h,...i,...j];k.length>0&&(a[b]={name:e,alias:g,color:d.color,models:k,isCustom:!0,hasModels:!0})}else{let e=(0,k.KC)(b),g=e.map(a=>({id:a.id,name:a.name,value:`${c}/${a.id}`,source:"system"})),h=f.filter(a=>!e.some(b=>b.id===a.id)).map(a=>({id:a.id,name:a.name||a.id,value:`${c}/${a.id}`,isCustom:!0,source:"api-sync"===a.source?"api-sync":"custom"})),i=[...g,...h];i.length>0&&(a[b]={name:d.name,alias:c,color:d.color,models:i})}}),a},[h,r,F,B,D]),H=(0,f.useMemo)(()=>{if(!x.trim())return z;let a=x.toLowerCase();return z.filter(b=>b.name.toLowerCase().includes(a))},[z,x]),I=(0,f.useMemo)(()=>{if(!x.trim())return G;let a=x.toLowerCase(),b={};return Object.entries(G).forEach(([c,d])=>{let e=d.models.filter(b=>(0,m.ir)(a,{modelId:b.id,modelName:b.name,source:b.source})),f=d.name.toLowerCase().includes(a);(e.length>0||f)&&(b[c]={...d,models:e.length>0?e:d.models})}),b},[G,x]),J=t?g:d?[d]:[],K=a=>{c(a),t||(b(),y(""))};return(0,e.jsxs)(j.default,{isOpen:a,onClose:()=>{b(),y("")},title:w,size:"md",className:"p-4!",children:[(0,e.jsx)("div",{className:"mb-3",children:(0,e.jsxs)("div",{className:"relative",children:[(0,e.jsx)("span",{className:"material-symbols-outlined absolute left-2.5 top-1/2 -translate-y-1/2 text-text-muted text-[16px]",children:"search"}),(0,e.jsx)("input",{type:"text",placeholder:v("search"),value:x,onChange:a=>y(a.target.value),className:"w-full pl-8 pr-3 py-1.5 bg-surface border border-border rounded text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"})]})}),(0,e.jsxs)("div",{className:"max-h-[300px] overflow-y-auto space-y-3",children:[u&&H.length>0&&(0,e.jsxs)("div",{children:[(0,e.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,e.jsx)("span",{className:"material-symbols-outlined text-primary text-[14px]",children:"layers"}),(0,e.jsx)("span",{className:"text-xs font-medium text-primary",children:v("combos")}),(0,e.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",H.length,")"]})]}),(0,e.jsx)("div",{className:"flex flex-wrap gap-1.5",children:H.map(a=>{let b,c=(b=a.name,J.includes(b));return(0,e.jsx)("button",{onClick:()=>K({id:a.name,name:a.name,value:a.name}),className:`
|
|
11
|
+
`}),(0,d.jsx)("div",{"aria-live":"polite","aria-atomic":"false",style:{position:"fixed",top:"20px",right:"20px",zIndex:9999,display:"flex",flexDirection:"column",gap:"10px",pointerEvents:"none"},children:a.map(a=>(0,d.jsx)("div",{style:{pointerEvents:"auto"},children:(0,d.jsx)(i,{notification:a,onDismiss:b})},a.id))})]})}},22245:(a,b,c)=>{c.d(b,{default:()=>l});var d=c(48249),e=c(77360),f=c(2116),g=c.n(f),h=c(47336);let i=[{label:"Features",href:"#features"},{label:"Pricing",href:"#pricing"},{label:"Changelog",href:"https://github.com/diegosouzapw/OmniRoute/releases",external:!0}],j=[{label:"Documentation",href:"/docs"},{label:"API Reference",href:"/docs#api-reference"},{label:"Help Center",href:"https://github.com/diegosouzapw/OmniRoute/discussions",external:!0}],k=[{label:"About",href:"https://github.com/diegosouzapw/OmniRoute",external:!0},{label:"Blog",href:"https://github.com/diegosouzapw/OmniRoute/releases",external:!0},{label:"Contact",href:"https://github.com/diegosouzapw/OmniRoute/issues/new/choose",external:!0},{label:"Terms",href:"/terms"},{label:"Privacy",href:"/privacy"}];function l(){let a=(0,e.c)("stats"),b=a=>a.external?(0,d.jsx)("a",{href:a.href,target:"_blank",rel:"noopener noreferrer",className:"hover:text-primary transition-colors",children:a.label}):(0,d.jsx)(g(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label});return(0,d.jsx)("footer",{className:"bg-bg border-t border-border pt-16 pb-12",children:(0,d.jsxs)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[(0,d.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-10 mb-12",children:[(0,d.jsxs)("div",{className:"col-span-2 lg:col-span-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,d.jsx)("div",{className:"size-6 text-primary",children:(0,d.jsx)("svg",{className:"w-full h-full",fill:"currentColor",viewBox:"0 0 48 48",children:(0,d.jsx)("path",{clipRule:"evenodd",d:"M12.0799 24L4 19.2479L9.95537 8.75216L18.04 13.4961L18.0446 4H29.9554L29.96 13.4961L38.0446 8.75216L44 19.2479L35.92 24L44 28.7521L38.0446 39.2479L29.96 34.5039L29.9554 44H18.0446L18.04 34.5039L9.95537 39.2479L4 28.7521L12.0799 24Z",fillRule:"evenodd"})})}),(0,d.jsx)("span",{className:"text-xl font-bold text-text-main",children:h.v.name})]}),(0,d.jsx)("p",{className:"text-text-muted mb-6 max-w-sm font-light",children:"The unified interface for modern AI infrastructure. Secure, observable, and scalable."}),(0,d.jsxs)("div",{className:"flex gap-4",children:[(0,d.jsx)("a",{href:"https://github.com/diegosouzapw/OmniRoute/discussions",target:"_blank",rel:"noopener noreferrer",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"Community Discussions",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"})})}),(0,d.jsx)("a",{href:"https://github.com/diegosouzapw/OmniRoute",target:"_blank",rel:"noopener noreferrer",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"GitHub",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0 0 22 12.017C22 6.484 17.522 2 12 2z"})})})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:a("product")}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:i.map(a=>(0,d.jsx)("li",{children:b(a)},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:a("resources")}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:j.map(a=>(0,d.jsx)("li",{children:b(a)},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:a("company")}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:k.map(a=>(0,d.jsx)("li",{children:b(a)},a.label))})]})]}),(0,d.jsxs)("div",{className:"border-t border-border pt-8 flex flex-col md:flex-row justify-between items-center gap-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["\xa9 ",new Date().getFullYear()," ",h.v.name," Inc. All rights reserved."]}),(0,d.jsxs)("div",{className:"flex gap-6 text-sm text-text-muted",children:[(0,d.jsx)("a",{href:"/docs",className:"hover:text-primary transition-colors",children:"Documentation"}),(0,d.jsx)(g(),{href:"/terms",className:"hover:text-primary transition-colors",children:"Terms"}),(0,d.jsx)(g(),{href:"/privacy",className:"hover:text-primary transition-colors",children:"Privacy"}),(0,d.jsx)("a",{href:"https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE",target:"_blank",rel:"noopener noreferrer",className:"hover:text-primary transition-colors",children:"License"})]})]})]})})}},25251:(a,b,c)=>{c.d(b,{KC:()=>g,Xg:()=>f,vq:()=>e});var d=c(66931);let e=(0,d.oD)(),f=(0,d.Qv)();function g(a){return e[f[a]||a]||[]}},27309:(a,b,c)=>{c.d(b,{default:()=>l});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(77360),i=c(65953),j=c(53156),k=c(29518);function l({isOpen:a,onSuccess:b,onClose:c,reauthConnection:f}){let g=(0,h.c)("cursorAuthModal"),[m,n]=(0,e.useState)(""),[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(!1),y=async()=>{if(!m.trim())return void r(g("errorEnterToken"));t(!0),r(null);try{let a={accessToken:m.trim()};o.trim()&&(a.machineId=o.trim());let d=await fetch("/api/oauth/cursor/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),e=await d.json();if(!d.ok)throw Error(e.error||g("errorImportFailed"));b?.(),c()}catch(a){r(a.message)}finally{t(!1)}};return(0,d.jsx)(i.default,{isOpen:a,title:g("title"),onClose:c,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[u&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:g("autoDetecting")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:g("readingFromCursor")})]}),!u&&(0,d.jsxs)(d.Fragment,{children:[w&&(0,d.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,d.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:g("tokensAutoDetected")})]})}),!w&&!q&&(0,d.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:g("cursorNotDetected")})]})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:[g("accessToken")," ",(0,d.jsx)("span",{className:"text-red-500",children:g("required")})]}),(0,d.jsx)("textarea",{value:m,onChange:a=>n(a.target.value),placeholder:g("accessTokenPlaceholder"),rows:3,className:"w-full px-3 py-2 text-sm font-mono border border-border rounded-lg bg-background focus:outline-none focus:border-primary resize-none"})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:[g("machineId")," ",(0,d.jsx)("span",{className:"text-text-muted text-xs",children:g("optional")})]}),(0,d.jsx)(k.default,{value:o,onChange:a=>p(a.target.value),placeholder:g("machineIdPlaceholder"),className:"font-mono text-sm"})]}),q&&(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,d.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:q})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.default,{onClick:y,fullWidth:!0,disabled:s||!m.trim(),children:s?g("importing"):g("importToken")}),(0,d.jsx)(j.default,{onClick:c,variant:"ghost",fullWidth:!0,children:g("cancel")})]})]})]})})}l.propTypes={isOpen:g().bool.isRequired,onSuccess:g().func,onClose:g().func.isRequired}},27395:(a,b,c)=>{c.d(b,{A:()=>bP});var d=c(48249),e=c(67484),f=c(81220),g=c(72563),h=c(90962),i=c(1362),j=c(2950),k=c(77260),l=c(73644),m=c(53632),n=c(34320),o=c(98599),p=c(55457),q=c(37777),r=c(94635),s=c(33479),t=c(85697),u=c(2293),v=c(64671),w=c(1231),x=c(71945),y=c(65226),z=c(96330),A=c(43310),B=c(20036),C=c(81444),D=c(3582),E=c(59185),F=c(4427),G=c(19863),H=c(83217),I=c(71932),J=c(12475),K=c(77109),L=c(12207),M=c(29929),N=c(20414),O=c(81742),P=c(40328),Q=c(41272),R=c(34284),S=c(2418),T=c(90482),U=c(75950),V=c(83102),W=c(86748),X=c(69564),Y=c(42297),Z=c(19710),$=c(81646),_=c(73343),aa=c(99769),ab=c(77e3),ac=c(20696),ad=c(81756),ae=c(34940),af=c(79147),ag=c(80039),ah=c(61729),ai=c(85571),aj=c(46301),ak=c(92921),al=c(83559),am=c(61953),an=c(97459),ao=c(86793),ap=c(7336),aq=c(41240),ar=c(86695),as=c(78881),at=c(92636),au=c(95043),av=c(4914),aw=c(59714),ax=c(36256),ay=c(51248),az=c(69055),aA=c(78101),aB=c(44961),aC=c(55835),aD=c(60287),aE=c(79833),aF=c(13967),aG=c(37001),aH=c(68786),aI=c(58994),aJ=c(56469),aK=c(85964),aL=c(83071),aM=c(5835),aN=c(69445),aO=c(714),aP=c(6872),aQ=c(4553),aR=c(20387),aS=c(97627),aT=c(54261),aU=c(31424),aV=c(62208),aW=c(35983),aX=c(42057),aY=c(7657),aZ=c(95417),a$=c(19700),a_=c(49652),a0=c(12058),a1=c(83130),a2=c(27215),a3=c(36105),a4=c(9983),a5=c(12793),a6=c(59353),a7=c(66003),a8=c(95630),a9=c(33510),ba=c(29942),bb=c(41734),bc=c(89556),bd=c(73140),be=c(51366),bf=c(66742),bg=c(67083),bh=c(62373),bi=c(51097),bj=c(71571),bk=c(66520),bl=c(73192),bm=c(77034),bn=c(2065),bo=c(44811),bp=c(24384),bq=c(80750),br=c(93214),bs=c(32647),bt=c(14222),bu=c(88062),bv=c(64305),bw=c(37003),bx=c(40598),by=c(45062),bz=c(26934),bA=c(77091),bB=c(32605),bC=c(72071),bD=c(81520),bE=c(81223),bF=c(89207),bG=c(42353),bH=c(78038),bI=c(63448),bJ=c(59944);let bK={Ai21:{mono:g.A},Alibaba:{mono:i.A,color:h.A},Anthropic:{mono:j.A},Antigravity:{mono:l.A,color:k.A},AssemblyAI:{mono:n.A,color:m.A},Automatic:{mono:p.A,color:o.A},Aws:{mono:r.A,color:q.A},Azure:{mono:t.A,color:s.A},AzureAI:{mono:v.A,color:u.A},Baidu:{mono:x.A,color:w.A},Bailian:{mono:z.A,color:y.A},Baseten:{mono:A.A},Bedrock:{mono:C.A,color:B.A},Bfl:{mono:D.A},Cerebras:{mono:F.A,color:E.A},ClaudeCode:{mono:H.A,color:G.A},Cline:{mono:I.A},Cloudflare:{mono:K.A,color:J.A},Codex:{mono:M.A,color:L.A},Cohere:{mono:O.A,color:N.A},ComfyUI:{mono:Q.A,color:P.A},Cursor:{mono:R.A},Dbrx:{mono:T.A,color:S.A},DeepInfra:{mono:V.A,color:U.A},DeepSeek:{mono:X.A,color:W.A},ElevenLabs:{mono:Y.A},Exa:{mono:$.A,color:Z.A},Fal:{mono:aa.A,color:_.A},Featherless:{mono:ac.A,color:ab.A},Fireworks:{mono:ae.A,color:ad.A},Friendli:{mono:af.A},Gemini:{mono:ah.A,color:ag.A},GeminiCLI:{mono:aj.A,color:ai.A},GithubCopilot:{mono:ak.A},Google:{mono:am.A,color:al.A},Grok:{mono:an.A},Groq:{mono:ao.A},HuggingFace:{mono:aq.A,color:ap.A},Hyperbolic:{mono:as.A,color:ar.A},IBM:{mono:at.A},Inference:{mono:au.A},Jina:{mono:av.A},KiloCode:{mono:aw.A},Kimi:{mono:ay.A,color:ax.A},Lambda:{mono:az.A},LmStudio:{mono:aA.A},Meta:{mono:aC.A,color:aB.A},MetaAI:{mono:aE.A,color:aD.A},Minimax:{mono:aG.A,color:aF.A},Mistral:{mono:aI.A,color:aH.A},Moonshot:{mono:aJ.A},Morph:{mono:aL.A,color:aK.A},NanoBanana:{mono:aN.A,color:aM.A},Nebius:{mono:aO.A},NousResearch:{mono:aP.A},Novita:{mono:aR.A,color:aQ.A},Nvidia:{mono:aT.A,color:aS.A},Ollama:{mono:aU.A},OpenAI:{mono:aV.A},OpenClaw:{mono:aX.A,color:aW.A},OpenCode:{mono:aY.A},OpenRouter:{mono:aZ.A},Perplexity:{mono:a_.A,color:a$.A},Poe:{mono:a1.A,color:a0.A},Qoder:{mono:a3.A,color:a2.A},Qwen:{mono:a5.A,color:a4.A},Recraft:{mono:a6.A},Replicate:{mono:a7.A},Runway:{mono:a8.A},SambaNova:{mono:ba.A,color:a9.A},SearchApi:{mono:bb.A},SiliconCloud:{mono:bd.A,color:bc.A},Snowflake:{mono:bf.A,color:be.A},Stability:{mono:bh.A,color:bg.A},Tavily:{mono:bj.A,color:bi.A},Together:{mono:bl.A,color:bk.A},TopazLabs:{mono:bm.A},Upstage:{mono:bo.A,color:bn.A},V0:{mono:bp.A},Venice:{mono:br.A,color:bq.A},Vercel:{mono:bs.A},VertexAI:{mono:bu.A,color:bt.A},Vllm:{mono:bw.A,color:bv.A},Volcengine:{mono:by.A,color:bx.A},Voyage:{mono:bA.A,color:bz.A},WorkersAI:{mono:bC.A,color:bB.A},XAI:{mono:bD.A},XiaomiMiMo:{mono:bE.A},Xinference:{mono:bG.A,color:bF.A},ZAI:{mono:bH.A},Zhipu:{mono:bJ.A,color:bI.A}},bL={ai21:"Ai21",alibaba:"Alibaba",alicode:"Alibaba","alicode-intl":"Alibaba","amazon-q":"Aws",anthropic:"Anthropic",antigravity:"Antigravity",assemblyai:"AssemblyAI","aws-polly":"Aws",azure:"Azure","azure-ai":"AzureAI","azure-openai":"AzureAI",baidu:"Baidu","bailian-coding-plan":"Bailian",baseten:"Baseten",bedrock:"Bedrock",bfl:"Bfl","black-forest-labs":"Bfl",cerebras:"Cerebras",claude:"ClaudeCode",cline:"Cline",cloudflare:"Cloudflare","cloudflare-ai":"WorkersAI",codestral:"Mistral",codex:"Codex",cohere:"Cohere",comfyui:"ComfyUI",copilot:"GithubCopilot",cursor:"Cursor",databricks:"Dbrx",deepinfra:"DeepInfra",deepseek:"DeepSeek",elevenlabs:"ElevenLabs",exa:"Exa","exa-search":"Exa",fal:"Fal","fal-ai":"Fal",featherless:"Featherless","featherless-ai":"Featherless",fireworks:"Fireworks","fireworks-ai":"Fireworks",friendli:"Friendli",friendliai:"Friendli",gemini:"Gemini","gemini-cli":"GeminiCLI",github:"GithubCopilot","github-copilot":"GithubCopilot",glm:"Zhipu","glm-cn":"Zhipu",glmt:"Zhipu","google-pse-search":"Google",grok:"Grok","grok-web":"Grok",groq:"Groq","hugging-face":"HuggingFace",huggingface:"HuggingFace",hyperbolic:"Hyperbolic",ibm:"IBM","inference-net":"Inference",jina:"Jina","jina-ai":"Jina",kilocode:"KiloCode",kimi:"Kimi","kimi-coding":"Kimi","kimi-coding-apikey":"Kimi",lambda:"Lambda","lambda-ai":"Lambda","lm-studio":"LmStudio",lmstudio:"LmStudio","meta-llama":"Meta",minimax:"Minimax","minimax-cn":"Minimax",mistral:"Mistral",mistralai:"Mistral",moonshot:"Moonshot",morph:"Morph","muse-spark-web":"MetaAI",nanobanana:"NanoBanana",nebius:"Nebius","nous-research":"NousResearch",nousresearch:"NousResearch",novita:"Novita",nvidia:"Nvidia",ollama:"Ollama","ollama-cloud":"Ollama",openai:"OpenAI",openclaw:"OpenClaw",opencode:"OpenCode","opencode-go":"OpenCode","opencode-zen":"OpenCode","open-router":"OpenRouter",openrouter:"OpenRouter",perplexity:"Perplexity","perplexity-search":"Perplexity","perplexity-web":"Perplexity",poe:"Poe",qoder:"Qoder",qwen:"Qwen",recraft:"Recraft",replicate:"Replicate",runwayml:"Runway",sambanova:"SambaNova",sdwebui:"Automatic",searchapi:"SearchApi","searchapi-search":"SearchApi",siliconflow:"SiliconCloud",snowflake:"Snowflake",stability:"Stability","stability-ai":"Stability",tavily:"Tavily","tavily-search":"Tavily",together:"Together",topaz:"TopazLabs",upstage:"Upstage",v0:"V0","v0-vercel":"V0",venice:"Venice","vercel-ai-gateway":"Vercel",vertex:"VertexAI","vertex-partner":"VertexAI",vertexai:"VertexAI",vllm:"Vllm",volcengine:"Volcengine",voyage:"Voyage","voyage-ai":"Voyage",watsonx:"IBM","workers-ai":"WorkersAI",workersai:"WorkersAI",xai:"XAI","xiaomi-mimo":"XiaomiMiMo",xiaomimimo:"XiaomiMiMo",xinference:"Xinference",zai:"ZAI",zhipu:"Zhipu"};function bM({size:a}){return(0,d.jsxs)("svg",{width:a,height:a,viewBox:"0 0 24 24",fill:"none",style:{flex:"none"},children:[(0,d.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.4"}),(0,d.jsx)("path",{d:"M8 12h8M12 8v8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}let bN=new Set(["aimlapi","alibaba","alicode-intl","alicode","anthropic-m","anthropic","antigravity","bailian-coding-plan","blackbox","brave-search","brave","cerebras","claude","cline","codex","cohere","continue","copilot","cursor","deepgram","deepseek","droid","exa-search","fireworks","gemini-cli","gemini","github","glm","glmt","groq","ironclaw","kilo-gateway","kilocode","kimi-coding-apikey","kimi-coding","kimi","kiro","longcat","minimax-cn","minimax","mistral","nanobot","nebius","nvidia","oai-cc","oai-r","ollama-cloud","openai","openclaw","openrouter","perplexity-search","perplexity","pollinations","qwen","roo","serper-search","serper","siliconflow","tavily-search","tavily","together","xai","zeroclaw","aws-polly","blackbox-web","cliproxyapi","databricks","empower","gigachat","gitlab-duo","gitlab","heroku","linkup-search","llamagate","maritalk","modal","nanogpt","nscale","oci","ovhcloud","piapi","poe","predibase","qoder","recraft","reka","runwayml","triton","venice","voyage-ai","wandb","youcom-search"]),bO=new Set(["apikey","assemblyai","brave","cartesia","cloudflare-ai","comfyui","elevenlabs","exa-search","exa","huggingface","hyperbolic","inworld","nanobanana","oauth","opencode-go","opencode-zen","opencode","playht","puter","qianfan","scaleway","sdwebui","synthetic","vertex","windsurf","zai"]),bP=(0,e.memo)(function({providerId:a,size:b=24,type:c="color",className:g,style:h}){let i=a.toLowerCase(),j=function(a,b="color"){let c=bL[a.toLowerCase()];if(!c)return null;let d=bK[c];return"color"===b&&d.color?d.color:d.mono}(i,c),k=bN.has(i),l=bO.has(i),[m,n]=(0,e.useState)({}),o=`${i}:png`,p=`${i}:svg`,q=!j&&k&&!m[o],r=!j&&l&&!m[p]&&(!k||m[o]);return j?(0,d.jsx)("span",{className:g,style:{display:"inline-flex",alignItems:"center",...h},children:(0,e.createElement)(j,{"aria-label":a,size:b,style:{flex:"none"}})}):q?(0,d.jsx)("span",{className:g,style:{display:"inline-flex",alignItems:"center",...h},children:(0,d.jsx)(f.default,{src:`/providers/${i}.png`,alt:a,width:b,height:b,style:{objectFit:"contain"},onError:()=>{n(a=>({...a,[o]:!0}))},unoptimized:!0})}):r?(0,d.jsx)("span",{className:g,style:{display:"inline-flex",alignItems:"center",...h},children:(0,d.jsx)(f.default,{src:`/providers/${i}.svg`,alt:a,width:b,height:b,style:{objectFit:"contain"},onError:()=>n(a=>({...a,[p]:!0})),unoptimized:!0})}):(0,d.jsx)("span",{className:g,style:{display:"inline-flex",alignItems:"center",...h},children:(0,d.jsx)(bM,{size:b})})})},29494:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{default:()=>p});var e=c(48249),f=c(67484),g=c(49885),h=c.n(g),i=c(77360),j=c(65953),k=c(47825),l=c(41434),m=c(86864),n=c(70689),o=a([k,l,n]);[k,l,n]=o.then?(await o)():o;let q=[...Object.keys(n.zN),...Object.keys(n.IS),...Object.keys(n.fg)];function p({isOpen:a,onClose:b,onSelect:c,selectedModel:d,selectedModels:g=[],activeProviders:h=[],title:o,modelAliases:r={},addedModelValues:s=[],multiSelect:t=!1,showCombos:u=!0}){let v=(0,i.c)("common"),w=o??v("selectModel"),[x,y]=(0,f.useState)(""),[z,A]=(0,f.useState)([]),[B,C]=(0,f.useState)([]),[D,E]=(0,f.useState)({}),F=(0,f.useMemo)(()=>({...n.zN,...n.IS,...n.fg}),[]),G=(0,f.useMemo)(()=>{let a={},b=h.map(a=>a.provider);return[...new Set([...b])].sort((a,b)=>{let c=q.indexOf(a),d=q.indexOf(b);return(-1===c?999:c)-(-1===d?999:d)}).forEach(b=>{let c=k.Xg[b]||b,d=F[b]||{name:b,color:"#666"},e=(0,n.mq)(b)||(0,n.gb)(b),f=D[b]||[];if(d.passthroughModels){let e=Object.entries(r).filter(([,a])=>a.startsWith(`${c}/`)).map(([a,b])=>({id:b.replace(`${c}/`,""),name:a,value:b,source:"alias"})),g=f.filter(a=>!e.some(b=>b.id===a.id)).map(a=>({id:a.id,name:a.name||a.id,value:`${c}/${a.id}`,isCustom:!0,source:"api-sync"===a.source?"api-sync":"custom"})),h=[...e,...g];if(h.length>0){let e=B.find(a=>a.id===b),f=e?.name||d.name;a[b]={name:f,alias:c,color:d.color,models:h}}}else if(e){let c=B.find(a=>a.id===b),e=c?.name||d.name,g=c?.prefix||b,h=Object.entries(r).filter(([,a])=>a.startsWith(`${b}/`)).map(([a,c])=>({id:c.replace(`${b}/`,""),name:a,value:`${g}/${c.replace(`${b}/`,"")}`,source:"alias"})),i=((0,l.L)(b,f)||[]).filter(a=>!h.some(b=>b.id===a.id)).map(a=>({id:a.id,name:a.name||a.id,value:`${g}/${a.id}`,isFallback:!0,source:"fallback"})),j=f.filter(a=>!h.some(b=>b.id===a.id)&&!i.some(b=>b.id===a.id)).map(a=>({id:a.id,name:a.name||a.id,value:`${g}/${a.id}`,isCustom:!0,source:"api-sync"===a.source?"api-sync":"custom"})),k=[...h,...i,...j];k.length>0&&(a[b]={name:e,alias:g,color:d.color,models:k,isCustom:!0,hasModels:!0})}else{let e=(0,k.KC)(b),g=e.map(a=>({id:a.id,name:a.name,value:`${c}/${a.id}`,source:"system"})),h=f.filter(a=>!e.some(b=>b.id===a.id)).map(a=>({id:a.id,name:a.name||a.id,value:`${c}/${a.id}`,isCustom:!0,source:"api-sync"===a.source?"api-sync":"custom"})),i=[...g,...h];i.length>0&&(a[b]={name:d.name,alias:c,color:d.color,models:i})}}),a},[h,r,F,B,D]),H=(0,f.useMemo)(()=>{if(!x.trim())return z;let a=x.toLowerCase();return z.filter(b=>b.name.toLowerCase().includes(a))},[z,x]),I=(0,f.useMemo)(()=>{if(!x.trim())return G;let a=x.toLowerCase(),b={};return Object.entries(G).forEach(([c,d])=>{let e=d.models.filter(b=>(0,m.ir)(a,{modelId:b.id,modelName:b.name,source:b.source})),f=d.name.toLowerCase().includes(a);(e.length>0||f)&&(b[c]={...d,models:e.length>0?e:d.models})}),b},[G,x]),J=t?g:d?[d]:[],K=a=>{c(a),t||(b(),y(""))};return(0,e.jsxs)(j.default,{isOpen:a,onClose:()=>{b(),y("")},title:w,size:"md",className:"p-4!",children:[(0,e.jsx)("div",{className:"mb-3",children:(0,e.jsxs)("div",{className:"relative",children:[(0,e.jsx)("span",{className:"material-symbols-outlined absolute left-2.5 top-1/2 -translate-y-1/2 text-text-muted text-[16px]",children:"search"}),(0,e.jsx)("input",{type:"text",placeholder:v("search"),value:x,onChange:a=>y(a.target.value),className:"w-full pl-8 pr-3 py-1.5 bg-surface border border-border rounded text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"})]})}),(0,e.jsxs)("div",{className:"max-h-[300px] overflow-y-auto space-y-3",children:[u&&H.length>0&&(0,e.jsxs)("div",{children:[(0,e.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,e.jsx)("span",{className:"material-symbols-outlined text-primary text-[14px]",children:"layers"}),(0,e.jsx)("span",{className:"text-xs font-medium text-primary",children:v("combos")}),(0,e.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",H.length,")"]})]}),(0,e.jsx)("div",{className:"flex flex-wrap gap-1.5",children:H.map(a=>{let b,c=(b=a.name,J.includes(b));return(0,e.jsx)("button",{onClick:()=>K({id:a.name,name:a.name,value:a.name}),className:`
|
|
12
12
|
px-2 py-1 rounded-xl text-xs font-medium transition-all border hover:cursor-pointer
|
|
13
13
|
${c?"bg-primary text-white border-primary":"bg-surface border-border text-text-main hover:border-primary/50 hover:bg-primary/5"}
|
|
14
14
|
`,children:a.name},a.id)})})]}),Object.entries(I).map(([a,b])=>(0,e.jsxs)("div",{children:[(0,e.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,e.jsx)("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:b.color}}),(0,e.jsx)("span",{className:"text-xs font-medium text-primary",children:b.name}),(0,e.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",b.models.length,")"]})]}),(0,e.jsx)("div",{className:"flex flex-wrap gap-1.5",children:b.models.map(a=>{let b,c=(b=a.value,J.includes(b)),d=s.includes(a.value);return(0,e.jsxs)("button",{onClick:()=>K(a),className:`
|