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.
Files changed (362) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +15 -15
  3. package/app/.next/build-manifest.json +3 -3
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/react-loadable-manifest.json +3 -3
  6. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/batch/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/cache/media/page.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/cache/media/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/memory/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/_global-error.html +1 -1
  47. package/app/.next/server/app/_global-error.rsc +1 -1
  48. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  49. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  50. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  51. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  52. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  53. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  54. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/acp/agents/route.js.nft.json +1 -1
  56. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  57. package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  58. package/app/.next/server/app/api/batches/route.js.nft.json +1 -1
  59. package/app/.next/server/app/api/cache/entries/route.js.nft.json +1 -1
  60. package/app/.next/server/app/api/cache/reasoning/route.js.nft.json +1 -1
  61. package/app/.next/server/app/api/cache/route.js.nft.json +1 -1
  62. package/app/.next/server/app/api/cache/stats/route.js.nft.json +1 -1
  63. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  64. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  65. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  66. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  67. package/app/.next/server/app/api/cli-tools/backups/route.js.nft.json +1 -1
  68. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  69. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  70. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
  71. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  72. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +1 -1
  73. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
  74. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
  75. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  76. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  77. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  78. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js.nft.json +1 -1
  79. package/app/.next/server/app/api/cli-tools/keys/route.js.nft.json +1 -1
  80. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  81. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  82. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route.js.nft.json +1 -1
  83. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  84. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  85. package/app/.next/server/app/api/cli-tools/qwen-settings/route.js +1 -1
  86. package/app/.next/server/app/api/cli-tools/qwen-settings/route.js.nft.json +1 -1
  87. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  88. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js.nft.json +1 -1
  89. package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
  90. package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
  91. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  92. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  93. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  94. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  96. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  97. package/app/.next/server/app/api/combos/builder/options/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/combos/metrics/route.js.nft.json +1 -1
  99. package/app/.next/server/app/api/combos/reorder/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/combos/route.js +1 -1
  101. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  102. package/app/.next/server/app/api/combos/test/route.js +1 -1
  103. package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
  104. package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
  106. package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
  108. package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
  109. package/app/.next/server/app/api/evals/[suiteId]/route.js.nft.json +1 -1
  110. package/app/.next/server/app/api/evals/route.js.nft.json +1 -1
  111. package/app/.next/server/app/api/evals/scorecard/route.js.nft.json +1 -1
  112. package/app/.next/server/app/api/evals/suites/[suiteId]/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/evals/suites/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
  115. package/app/.next/server/app/api/files/[id]/content/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/files/route.js.nft.json +1 -1
  117. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/internal/codex-responses-ws/route.js.nft.json +1 -1
  119. package/app/.next/server/app/api/keys/[id]/reveal/route.js.nft.json +1 -1
  120. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  121. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  122. package/app/.next/server/app/api/logs/active/route.js.nft.json +1 -1
  123. package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -1
  124. package/app/.next/server/app/api/logs/detail/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/logs/export/route.js.nft.json +1 -1
  126. package/app/.next/server/app/api/mcp/sse/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
  128. package/app/.next/server/app/api/mcp/stream/route.js.nft.json +1 -1
  129. package/app/.next/server/app/api/memory/[id]/route.js.nft.json +1 -1
  130. package/app/.next/server/app/api/memory/health/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/memory/route.js.nft.json +1 -1
  132. package/app/.next/server/app/api/model-combo-mappings/[id]/route.js.nft.json +1 -1
  133. package/app/.next/server/app/api/model-combo-mappings/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  136. package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -1
  137. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  138. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  139. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  140. package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
  141. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  142. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  143. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  144. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  145. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  146. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  147. package/app/.next/server/app/api/openapi/try/route.js.nft.json +1 -1
  148. package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
  149. package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
  150. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/pricing/sync/route.js.nft.json +1 -1
  152. package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
  153. package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
  154. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  156. package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/providers/[id]/codex-auth/apply-local/route.js.nft.json +1 -1
  158. package/app/.next/server/app/api/providers/[id]/codex-auth/export/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  160. package/app/.next/server/app/api/providers/[id]/refresh/route.js.nft.json +1 -1
  161. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  162. package/app/.next/server/app/api/providers/[id]/sync-models/route.js.nft.json +1 -1
  163. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  164. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  165. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  166. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  167. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  169. package/app/.next/server/app/api/providers/zed/import/route.js.nft.json +1 -1
  170. package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
  171. package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
  172. package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
  173. package/app/.next/server/app/api/restart/route.js.nft.json +1 -1
  174. package/app/.next/server/app/api/search/providers/route.js.nft.json +1 -1
  175. package/app/.next/server/app/api/search/stats/route.js.nft.json +1 -1
  176. package/app/.next/server/app/api/settings/auto-disable-accounts/route.js.nft.json +1 -1
  177. package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/settings/cache-config/route.js.nft.json +1 -1
  179. package/app/.next/server/app/api/settings/cache-metrics/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
  181. package/app/.next/server/app/api/settings/export-json/route.js.nft.json +1 -1
  182. package/app/.next/server/app/api/settings/favicon/route.js.nft.json +1 -1
  183. package/app/.next/server/app/api/settings/import-json/route.js.nft.json +1 -1
  184. package/app/.next/server/app/api/settings/ip-filter/route.js.nft.json +1 -1
  185. package/app/.next/server/app/api/settings/lkgp-cache/route.js.nft.json +1 -1
  186. package/app/.next/server/app/api/settings/memory/route.js.nft.json +1 -1
  187. package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -1
  188. package/app/.next/server/app/api/settings/models-dev/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/settings/payload-rules/route.js.nft.json +1 -1
  190. package/app/.next/server/app/api/settings/proxies/assignments/route.js.nft.json +1 -1
  191. package/app/.next/server/app/api/settings/proxies/bulk-assign/route.js.nft.json +1 -1
  192. package/app/.next/server/app/api/settings/proxies/health/route.js.nft.json +1 -1
  193. package/app/.next/server/app/api/settings/proxies/migrate/route.js.nft.json +1 -1
  194. package/app/.next/server/app/api/settings/proxies/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
  196. package/app/.next/server/app/api/settings/proxy/test/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/settings/purge-logs/route.js.nft.json +1 -1
  198. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  200. package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/settings/task-routing/route.js.nft.json +1 -1
  202. package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
  203. package/app/.next/server/app/api/shutdown/route.js.nft.json +1 -1
  204. package/app/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  205. package/app/.next/server/app/api/skills/executions/route.js.nft.json +1 -1
  206. package/app/.next/server/app/api/skills/install/route.js.nft.json +1 -1
  207. package/app/.next/server/app/api/skills/marketplace/install/route.js.nft.json +1 -1
  208. package/app/.next/server/app/api/skills/marketplace/route.js.nft.json +1 -1
  209. package/app/.next/server/app/api/skills/route.js.nft.json +1 -1
  210. package/app/.next/server/app/api/skills/skillssh/install/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/skills/skillssh/route.js.nft.json +1 -1
  212. package/app/.next/server/app/api/storage/health/route.js.nft.json +1 -1
  213. package/app/.next/server/app/api/sync/bundle/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
  215. package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
  216. package/app/.next/server/app/api/sync/tokens/[id]/route.js.nft.json +1 -1
  217. package/app/.next/server/app/api/sync/tokens/route.js.nft.json +1 -1
  218. package/app/.next/server/app/api/synced-available-models/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/system/env/repair/route.js.nft.json +1 -1
  220. package/app/.next/server/app/api/system/version/route.js +1 -1
  221. package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
  222. package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
  223. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  224. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  225. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  226. package/app/.next/server/app/api/tunnels/cloudflared/route.js.nft.json +1 -1
  227. package/app/.next/server/app/api/tunnels/tailscale/check/route.js.nft.json +1 -1
  228. package/app/.next/server/app/api/tunnels/tailscale/disable/route.js.nft.json +1 -1
  229. package/app/.next/server/app/api/tunnels/tailscale/enable/route.js.nft.json +1 -1
  230. package/app/.next/server/app/api/tunnels/tailscale/install/route.js.nft.json +1 -1
  231. package/app/.next/server/app/api/tunnels/tailscale/login/route.js.nft.json +1 -1
  232. package/app/.next/server/app/api/tunnels/tailscale/route.js.nft.json +1 -1
  233. package/app/.next/server/app/api/tunnels/tailscale/start-daemon/route.js.nft.json +1 -1
  234. package/app/.next/server/app/api/upstream-proxy/[providerId]/route.js.nft.json +1 -1
  235. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  236. package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
  237. package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
  238. package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
  239. package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
  240. package/app/.next/server/app/api/usage/combo-health/route.js +1 -1
  241. package/app/.next/server/app/api/usage/combo-health/route.js.nft.json +1 -1
  242. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  243. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  244. package/app/.next/server/app/api/usage/provider-limits/route.js.nft.json +1 -1
  245. package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +1 -1
  246. package/app/.next/server/app/api/usage/quota/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  248. package/app/.next/server/app/api/usage/utilization/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/v1/accounts/[id]/limits/route.js.nft.json +1 -1
  250. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  251. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  252. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/v1/batches/[id]/cancel/route.js.nft.json +1 -1
  254. package/app/.next/server/app/api/v1/batches/[id]/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/v1/batches/route.js.nft.json +1 -1
  256. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  257. package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
  258. package/app/.next/server/app/api/v1/db/health/route.js.nft.json +1 -1
  259. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  260. package/app/.next/server/app/api/v1/files/[id]/content/route.js.nft.json +1 -1
  261. package/app/.next/server/app/api/v1/files/[id]/route.js.nft.json +1 -1
  262. package/app/.next/server/app/api/v1/files/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/v1/images/edits/route.js.nft.json +1 -1
  264. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  265. package/app/.next/server/app/api/v1/issues/report/route.js.nft.json +1 -1
  266. package/app/.next/server/app/api/v1/management/proxies/assignments/route.js.nft.json +1 -1
  267. package/app/.next/server/app/api/v1/management/proxies/bulk-assign/route.js.nft.json +1 -1
  268. package/app/.next/server/app/api/v1/management/proxies/health/route.js.nft.json +1 -1
  269. package/app/.next/server/app/api/v1/management/proxies/route.js.nft.json +1 -1
  270. package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  271. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  272. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  273. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  274. package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
  275. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  276. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  277. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  278. package/app/.next/server/app/api/v1/providers/[provider]/limits/route.js.nft.json +1 -1
  279. package/app/.next/server/app/api/v1/quotas/check/route.js.nft.json +1 -1
  280. package/app/.next/server/app/api/v1/registered-keys/[id]/revoke/route.js.nft.json +1 -1
  281. package/app/.next/server/app/api/v1/registered-keys/[id]/route.js.nft.json +1 -1
  282. package/app/.next/server/app/api/v1/registered-keys/route.js.nft.json +1 -1
  283. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  284. package/app/.next/server/app/api/v1/responses/[...path]/route.js.nft.json +1 -1
  285. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  286. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  287. package/app/.next/server/app/api/v1/search/analytics/route.js.nft.json +1 -1
  288. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  289. package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  290. package/app/.next/server/app/api/v1/ws/route.js.nft.json +1 -1
  291. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  292. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  293. package/app/.next/server/app/api/version-manager/check-update/route.js +1 -1
  294. package/app/.next/server/app/api/version-manager/check-update/route.js.nft.json +1 -1
  295. package/app/.next/server/app/api/version-manager/install/route.js +1 -1
  296. package/app/.next/server/app/api/version-manager/install/route.js.nft.json +1 -1
  297. package/app/.next/server/app/api/version-manager/restart/route.js +1 -1
  298. package/app/.next/server/app/api/version-manager/restart/route.js.nft.json +1 -1
  299. package/app/.next/server/app/api/version-manager/start/route.js +1 -1
  300. package/app/.next/server/app/api/version-manager/start/route.js.nft.json +1 -1
  301. package/app/.next/server/app/api/version-manager/status/route.js +1 -1
  302. package/app/.next/server/app/api/version-manager/status/route.js.nft.json +1 -1
  303. package/app/.next/server/app/api/version-manager/stop/route.js +1 -1
  304. package/app/.next/server/app/api/version-manager/stop/route.js.nft.json +1 -1
  305. package/app/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/webhooks/[id]/test/route.js.nft.json +1 -1
  307. package/app/.next/server/app/api/webhooks/route.js.nft.json +1 -1
  308. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  309. package/app/.next/server/app/docs/page.js +1 -1
  310. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  311. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  312. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  313. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  314. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  315. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  316. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  317. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  318. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  319. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  320. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  321. package/app/.next/server/app-paths-manifest.json +15 -15
  322. package/app/.next/server/chunks/12767.js +1 -1
  323. package/app/.next/server/chunks/19849.js +1 -1
  324. package/app/.next/server/chunks/20236.js +1 -1
  325. package/app/.next/server/chunks/36040.js +4 -4
  326. package/app/.next/server/chunks/3832.js +1 -1
  327. package/app/.next/server/chunks/39548.js +1 -1
  328. package/app/.next/server/chunks/39859.js +1 -1
  329. package/app/.next/server/chunks/44088.js +1 -1
  330. package/app/.next/server/chunks/45415.js +1 -1
  331. package/app/.next/server/chunks/55672.js +1 -0
  332. package/app/.next/server/chunks/59092.js +2 -2
  333. package/app/.next/server/chunks/66094.js +1 -1
  334. package/app/.next/server/chunks/69105.js +1 -1
  335. package/app/.next/server/chunks/75225.js +1 -1
  336. package/app/.next/server/chunks/77044.js +1 -1
  337. package/app/.next/server/chunks/83648.js +1 -1
  338. package/app/.next/server/chunks/93831.js +4 -4
  339. package/app/.next/server/chunks/9679.js +3 -3
  340. package/app/.next/server/chunks/99168.js +2 -2
  341. package/app/.next/server/middleware-build-manifest.js +1 -1
  342. package/app/.next/server/middleware-react-loadable-manifest.js +1 -1
  343. package/app/.next/server/middleware.js +2 -2
  344. package/app/.next/server/pages/500.html +1 -1
  345. package/app/.next/server/server-reference-manifest.js +1 -1
  346. package/app/.next/server/server-reference-manifest.json +1 -1
  347. package/app/.next/static/chunks/{1999-fefe90c60eaa3b23.js → 1999-8cf58c233346f980.js} +1 -1
  348. package/app/.next/static/chunks/app/(dashboard)/dashboard/cache/media/page-ad8091c5b7536b7a.js +1 -0
  349. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-ccc65d29bbb19d51.js +1 -0
  350. package/app/.next/static/chunks/app/{layout-3e3b043f9b52bb80.js → layout-fbebdd84c4996160.js} +1 -1
  351. package/app/.next/static/chunks/{webpack-117eac5998a94c69.js → webpack-ea5983ad4b51e934.js} +1 -1
  352. package/app/.next/static/css/7caa8a6802c65def.css +1 -0
  353. package/app/docs/openapi.yaml +1 -1
  354. package/app/open-sse/mcp-server/server.js +15 -1
  355. package/app/package.json +1 -1
  356. package/package.json +1 -1
  357. package/app/.next/server/chunks/80812.js +0 -1
  358. package/app/.next/static/chunks/app/(dashboard)/dashboard/cache/media/page-f0289617f824bbf2.js +0 -1
  359. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-f24fde8a3f731108.js +0 -1
  360. package/app/.next/static/css/8d36e4e21725013b.css +0 -1
  361. /package/app/.next/static/{yvJ6rPtn4eb7sOBUCBGrF → qmeYzerLcoUXZ06JXgit3}/_buildManifest.js +0 -0
  362. /package/app/.next/static/{yvJ6rPtn4eb7sOBUCBGrF → qmeYzerLcoUXZ06JXgit3}/_ssgManifest.js +0 -0
@@ -61,7 +61,7 @@ data: ${JSON.stringify({tokens_generated:f,elapsed_ms:Date.now()-g,done:!0})}
61
61
  [...truncated ${a.length-65536} chars...]
62
62
  ${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 aK=new Map,aL=null,aM=0;async function aG(){let a=Date.now();return aL&&a-aM<1e4?aL:(aM=a,aL=(async()=>{let{getCombos:a}=await Promise.resolve().then(c.bind(c,33364));return a()})())}async function aH(a){let b=aK.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 aK.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,33364)),{parseModel:b}=await Promise.resolve().then(c.bind(c,99939)),{resolveComboTargets:e}=await Promise.resolve().then(c.bind(c,59092)),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}]
63
63
  ${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}]
64
- ${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(30121).then(c.bind(c,30121)),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}
64
+ ${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(30121).then(c.bind(c,30121)),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}
65
65
  `).join("\n")}
66
66
  `}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.DP)({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.lS.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})}}d()}catch(a){d(a)}})},69829:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{FB:()=>m,k0:()=>l});var e=c(55511),f=c(33364),g=a([f]);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a,b){return[...a].sort((a,c)=>{for(let d of b){let b=a[d],e=c[d];if("number"==typeof b||"number"==typeof e){let a="number"==typeof b?b:Number.MAX_SAFE_INTEGER,c="number"==typeof e?e:Number.MAX_SAFE_INTEGER;if(a!==c)return a-c;continue}let f="string"==typeof b?String(b):"",g="string"==typeof e?String(e):"",h=f.localeCompare(g,void 0,{numeric:!0});if(0!==h)return h}return 0})}function j(a,b){return Object.fromEntries(b.filter(b=>void 0!==a[b]).map(b=>[b,a[b]]))}async function k(){let[a,b,c,d,e,g]=await Promise.all([(0,f.getSettings)(),(0,f.getProviderConnections)(),(0,f.FhY)(),(0,f.OMz)(),(0,f.getCombos)(),(0,f.PXR)()]);return{settings:function(a){let{password:b,requireLogin:c,cloudEnabled:d,...e}=h(a);return e}(a),providerConnections:i(b.map(a=>{let b;return b=h(a),j(b,["id","provider","authType","name","displayName","email","priority","globalPriority","defaultModel","isActive","accessToken","refreshToken","expiresAt","expiresIn","tokenType","scope","idToken","projectId","apiKey","providerSpecificData","group"])}),["provider","name","id"]),providerNodes:i(c.map(a=>{let b;return b=h(a),j(b,["id","type","name","prefix","apiType","baseUrl","chatPath","modelsPath"])}),["type","name","id"]),modelAliases:h(d),combos:i(e.map(a=>(function(a){let{createdAt:b,updatedAt:c,...d}=h(a);return d})(a)),["sortOrder","name","id"]),apiKeys:i(g.map(a=>{let b;return b=h(a),j(b,["id","name","key","machineId","allowedModels","allowedConnections","noLog","autoResolve","isActive","accessSchedule","maxRequestsPerDay","maxRequestsPerMinute","maxSessions"])}),["name","id"])}}async function l(){let a=await k();return{version:(0,e.createHash)("sha256").update(JSON.stringify(function a(b){return Array.isArray(b)?b.map(b=>a(b)):b&&"object"==typeof b?Object.fromEntries(Object.keys(b).sort((a,b)=>a.localeCompare(b)).map(c=>[c,a(b[c])])):b}(a))).digest("hex"),bundle:a}}function m(a){return{providers:a.providerConnections,providerNodes:a.providerNodes,modelAliases:a.modelAliases,combos:a.combos,apiKeys:a.apiKeys,settings:a.settings}}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},70063:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{U:()=>m});var e=c(21020),f=c(59975),g=c(27976),h=c(32881),i=c(51263),j=c(12636),k=a([e,i]);[e,i]=k.then?(await k)():k;class n extends Error{constructor(a,b){super(a),this.statusCode=b}}async function l(a){let b=await (0,e.c1)(a).catch(()=>null);if(b)return b;let c=h.Zx[a];return c?(0,e.c1)(c).catch(()=>null):null}async function m(a){var b;let c,d,e,k;if("string"!=typeof a.query||0===a.query.trim().length)throw new n("Missing required field: query",400);if(a.query.trim().length>500)throw new n("Query must be 500 characters or fewer",400);if(a.search_type&&"web"!==a.search_type&&"news"!==a.search_type)throw new n(`Unsupported search_type: ${String(a.search_type)}`,400);let m=a.log||g,o=a.search_type||"web";if(a.provider){let b=(0,h.GZ)(a.provider);if(!b)throw new n(`Unknown search provider: ${a.provider}`,400);if(!(0,h.Ne)(b,o))throw new n(`Search provider ${a.provider} does not support search_type: ${o}`,400)}let p=(0,h.oL)(a.provider,o);if(!p)throw new n(a.provider?`Unknown search provider: ${a.provider}`:`No search providers available. Add an API key for a search provider (${(0,h.QF)().map(a=>a.id).join(", ")}) in the dashboard.`,400);let q=null,r=null;if(a.provider){if((q=await l(p.id))||"none"!==p.authType||"string"!=typeof a.provider_options?.baseUrl||!(a.provider_options.baseUrl.trim().length>0)||(q={providerSpecificData:{baseUrl:a.provider_options.baseUrl.trim()}}),!q)throw new n("none"===p.authType?`Search provider ${p.id} is not configured. Set its base URL in the dashboard or pass provider_options.baseUrl.`:`No credentials configured for search provider: ${p.id}. Add an API key for "${p.id}" in the dashboard.`,400)}else{if(!(q=await l(p.id)))for(let a of Object.values(h.c3).filter(a=>(0,h.Ne)(a,o)).sort((a,b)=>a.costPerQuery-b.costPerQuery).map(a=>a.id)){if(a===p.id)continue;let b=(0,h.GZ)(a),c=await l(a);if(b&&c){p=b,q=c;break}}if(!q)throw new n(`No credentials configured for any search provider. Add an API key for a search provider (${Object.keys(h.c3).join(", ")}) in the dashboard.`,400);for(let a of Object.values(h.c3).filter(a=>(0,h.Ne)(a,o)).sort((a,b)=>a.costPerQuery-b.costPerQuery).map(a=>a.id).filter(a=>a!==p.id)){let b=await l(a);if(b){c=a,r=b;break}}}let s=(b=p,d="number"==typeof a.max_results?a.max_results:"string"==typeof a.max_results?Number(a.max_results):NaN,e="number"==typeof a.limit?a.limit:"string"==typeof a.limit?Number(a.limit):NaN,k=Number.isFinite(d)?d:Number.isFinite(e)?e:b.defaultMaxResults,Math.min(Math.max(1,k),b.maxMaxResults)),t=(0,j.xn)(a.query.trim(),p.id,o,s,a.country,a.language,{filters:a.filters,offset:a.offset,time_range:a.time_range}),u=p.cacheTTLMs??j.Ot,{data:v,cached:w}=await (0,j.fn)(t,u,async()=>{let b=await (0,i.R)({query:a.query.trim(),provider:p.id,maxResults:s,searchType:o,country:a.country,language:a.language,timeRange:a.time_range,offset:a.offset,domainFilter:function(a){if(!a)return;let b=[];return a.include_domains?.length&&b.push(...a.include_domains),a.exclude_domains?.length&&b.push(...a.exclude_domains.map(a=>`-${a}`)),b.length>0?b:void 0}(a.filters),contentOptions:a.content,strictFilters:a.strict_filters,providerOptions:a.provider_options,credentials:q,alternateProvider:c,alternateCredentials:r,log:m});if(!b.success||!b.data)throw new n(b.error||"Search failed",b.status||502);return b.data});if(!w&&a.apiKeyId&&"local"!==a.apiKeyId&&v.usage?.search_cost_usd>0)try{(0,f.n5)(a.apiKeyId,v.usage.search_cost_usd)}catch(a){m.warn("SEARCH",`Cost recording failed: ${a?.message||String(a)}`)}return{data:v,cached:w}}d()}catch(a){d(a)}})},73299:(a,b,c)=>{c.d(b,{M4:()=>l,T4:()=>h,getDefaultDegradationMap:()=>m,getDefaultDetectionPatterns:()=>n,ns:()=>i,setBackgroundDegradationConfig:()=>g,ur:()=>k});let d=["generate a title","generate title","create a title","create a short","summarize this","summarize the","write a brief","write a summary","one-line summary","one line summary","short description","brief description","conversation title","chat title","name this conversation","name this chat","title for this","suggest a title","label this"],e={"claude-opus-4-6":"gemini-3-flash","claude-opus-4-6-thinking":"gemini-3-flash","claude-opus-4-5-20251101":"gemini-3-flash","claude-sonnet-4-5-20250929":"gemini-3-flash","claude-sonnet-4-20250514":"gemini-3-flash","claude-sonnet-4":"gemini-3-flash","gemini-3.1-pro":"gemini-3-flash","gemini-3.1-pro-high":"gemini-3-flash","gemini-3-pro-preview":"gemini-3-flash-preview","gemini-2.5-pro":"gemini-3-flash","gpt-4o":"gpt-4o-mini","gpt-5":"gpt-5-mini","gpt-5.1":"gpt-5-mini","gpt-5.1-codex":"gpt-5.1-codex-mini"},f={enabled:!1,degradationMap:{...e},detectionPatterns:[...d],stats:{detected:0,tokensSaved:0}};function g(a){f={...f,...a,stats:f.stats}}function h(){return{...f,degradationMap:{...f.degradationMap},detectionPatterns:[...f.detectionPatterns],stats:{...f.stats}}}function i(){f.stats={detected:0,tokensSaved:0}}function j(a,b){if(!a)return"";let c=a[b]??a[b.toLowerCase()]??a[b.toUpperCase()];return"string"==typeof c?c.trim():""}function k(a,b=null){var c;if(!a||"object"!=typeof a)return null;if(b){let a=[j(b,"x-task-type"),j(b,"x-request-priority"),j(b,"x-initiator")].find(Boolean);if(a&&"background"===a.toLowerCase())return"header_background"}let d=function(a){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim().length>0){let b=Number(a);return Number.isFinite(b)?b:null}return null}(a.max_tokens??a.max_completion_tokens??a.max_output_tokens);if(null!==d&&d>0&&d<50)return"low_max_tokens";let e=Array.isArray(c=a.messages??a.input??[])?c:[];if(!Array.isArray(e)||0===e.length)return null;let g=e.find(a=>"system"===a.role||"developer"===a.role);if(!g)return null;let h="string"==typeof g.content?g.content.toLowerCase():"";return h&&f.detectionPatterns.some(a=>h.includes(a.toLowerCase()))&&!(e.filter(a=>"user"===a.role).length>3)?"system_prompt_pattern":null}function l(a){if(!a)return a;let b=f.degradationMap[a];return b?(f.stats.detected++,b):a}function m(){return{...e}}function n(){return[...d]}},74362:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{G6:()=>y,Hc:()=>z,MS:()=>A,Od:()=>x,an:()=>w,nv:()=>u,xH:()=>v});var e=c(13961),f=c(21020),g=c(27976),h=c(9686),i=c(32113),j=c(23969),k=c(69590),l=c(71861),m=c(60293),n=c(94046),o=c(33364),p=c(12620),q=c(34493),r=c(26510),s=c(74163),t=a([e,f,h,k,o]);async function u(a,b,c=""){let d=await (0,e.mA)(a);if(!d.provider){if("ambiguous_model"===d.errorType){let b=d.errorMessage||`Ambiguous model '${a}'. Use provider/model prefix (ex: gh/${a} or cc/${a}).`;return g.warn("CHAT",b,{model:a,candidates:d.candidateAliases||d.candidateProviders||[]}),{error:(0,l.yj)(m.gx.BAD_REQUEST,b)}}return g.warn("CHAT","Invalid model format",{model:a}),{error:(0,l.yj)(m.gx.BAD_REQUEST,"Invalid model format")}}let{provider:f,model:h,extendedContext:k}=d,n=(0,i.a4)(b,c),o=j.PROVIDER_ID_TO_ALIAS[f]||f,p=(0,j.ux)(o,h)||(0,i.jJ)(f);"responses"===d.apiFormat&&(p="openai-responses",g.info("ROUTING","Custom model apiFormat=responses → targetFormat=openai-responses"));let q=k&&"claude"===o?" [1m]":"";return a!==`${f}/${h}`?g.info("ROUTING",`${a} → ${f}/${h}${q}`):g.info("ROUTING",`Provider: ${f}, Model: ${h}${q}`),{provider:f,model:h,sourceFormat:n,targetFormat:p,extendedContext:k}}async function v(a,b,c={}){let d=c.bypassReason||"pipeline override",e=c.providerProfile??await (0,s.LN)(a),f=(0,p.getCircuitBreaker)(a,{failureThreshold:e.failureThreshold??e.circuitBreakerThreshold,resetTimeout:e.resetTimeoutMs??e.circuitBreakerReset,onStateChange:(a,b,c)=>g.info("CIRCUIT",`${a}: ${b} → ${c}`)});if(c.ignoreCircuitBreaker&&!f.canExecute())g.info("CIRCUIT",`Bypassing OPEN circuit breaker for ${a} (${d})`);else if(!f.canExecute()){let b=f.getRetryAfterMs(),c=Math.max(Math.ceil(b/1e3),1);return g.warn("CIRCUIT",`Circuit breaker OPEN for ${a}, rejecting request`),(0,l.Mt)(a,c)}return null}async function w({bypassCircuitBreaker:a,breaker:b,body:c,provider:d,model:e,refreshedCredentials:i,proxyInfo:j,log:o,clientRawRequest:q,credentials:r,apiKeyInfo:s,userAgent:t,comboName:u,comboStrategy:v,isCombo:x,comboStepId:y,comboExecutionKey:z,extendedContext:A,providerProfile:B}){try{let g=()=>(0,n.jf)(j?.proxy||null,()=>(0,k.wk)({body:{...c,model:`${d}/${e}`},modelInfo:{provider:d,model:e,extendedContext:A},credentials:i,log:o,clientRawRequest:q,connectionId:r.connectionId,apiKeyInfo:s,userAgent:t,comboName:u,comboStrategy:v,isCombo:x,comboStepId:y,comboExecutionKey:z,onCredentialsRefreshed:async a=>{await (0,h.vN)(r.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,expiresIn:a.expiresIn,expiresAt:a.expiresAt,providerSpecificData:a.providerSpecificData,apiKey:a.apiKey,testStatus:"active"})},onRequestSuccess:async()=>{await (0,f.Pt)(r.connectionId,r)},onStreamFailure:async a=>{r.connectionId&&await (0,f.vk)(r.connectionId,Number(a?.status||m.gx.BAD_GATEWAY),String(a?.message||a?.code||"stream failure"),d,e,B)}}));if(a){if(!j?.proxy&&(0,n.Wk)()){let a=await (0,n.qT)(g);return{result:a.result,tlsFingerprintUsed:a.tlsFingerprintUsed}}return{result:await g(),tlsFingerprintUsed:!1}}if(!j?.proxy&&(0,n.Wk)()){let a=await b.execute(async()=>(0,n.qT)(g));return{result:a.result,tlsFingerprintUsed:a.tlsFingerprintUsed}}return{result:await b.execute(g),tlsFingerprintUsed:!1}}catch(a){if(a instanceof p.ez)return g.warn("CIRCUIT",`${d} circuit open during retry: ${a.message}`),{result:{success:!1,response:(0,l.Mt)(d,Math.ceil(a.retryAfterMs/1e3)),status:m.gx.SERVICE_UNAVAILABLE},tlsFingerprintUsed:!1};if(a?.code==="PROXY_UNREACHABLE"||/proxy unreachable/i.test(a?.message||"")){let b=a?.message||"Proxy unreachable";return g.warn("PROXY",b),{result:{success:!1,response:(0,l.wO)(m.gx.SERVICE_UNAVAILABLE,b,2),status:m.gx.SERVICE_UNAVAILABLE,error:b},tlsFingerprintUsed:!1}}throw a}}function x(a,b,c,d,e,f){if(a?.allRateLimited){let b=e||a.lastError||"Unavailable",h=f||Number(a.lastErrorCode)||m.gx.SERVICE_UNAVAILABLE,i="string"==typeof a.cooldownModel&&a.cooldownModel.trim().length>0?a.cooldownModel.trim():d;return"model"===a.cooldownScope&&Number(h)===m.gx.RATE_LIMITED?(g.warn("CHAT",`[${c}/${i}] all credentials cooling down${a.retryAfterHuman?` (${a.retryAfterHuman})`:""}`),(0,l.q8)({model:i,retryAfter:a.retryAfter})):(g.warn("CHAT",`[${c}/${d}] ${b} (${a.retryAfterHuman})`),(0,l.wO)(h,`[${c}/${d}] ${b}`,a.retryAfter,a.retryAfterHuman))}return e&&f?(g.warn("CHAT","Preserving last upstream error after credential exhaustion",{provider:c,model:d,lastStatus:f}),(0,l.yj)(f,e)):b?(g.warn("CHAT","No more accounts available",{provider:c}),(0,l.yj)(f||m.gx.SERVICE_UNAVAILABLE,e||"All accounts unavailable")):(g.error("AUTH",`No credentials for provider: ${c}`),(0,l.yj)(m.gx.BAD_REQUEST,`No credentials for provider: ${c}`))}async function y(a){try{return await (0,o.YDv)(a)}catch(a){return g.debug("PROXY",`Failed to resolve proxy: ${a.message}`),null}}function z({result:a,proxyInfo:b,proxyLatency:c,provider:d,model:e,sourceFormat:f,targetFormat:g,credentials:h,comboName:i,clientRawRequest:j,tlsFingerprintUsed:k=!1}){try{let f=j?.headers?.["x-forwarded-for"]||j?.headers?.["x-real-ip"]||j?.headers?.["cf-connecting-ip"]||null,g=f?f.split(",")[0].trim():null;(0,q.pq)({status:a.success?"success":408===a.status||504===a.status?"timeout":"error",proxy:b?.proxy||null,level:b?.level||"direct",levelId:b?.levelId||null,provider:d,targetUrl:`${d}/${e}`,publicIp:g,latencyMs:c,error:a.success?null:a.error||null,connectionId:h.connectionId,comboId:i||null,account:h.connectionId?.slice(0,8)||null,tlsFingerprint:k})}catch{}try{(0,r.MR)({provider:d,model:e,sourceFormat:f,targetFormat:g,status:a.success?"success":"error",statusCode:a.success?200:a.status||500,latency:c,endpoint:j?.endpoint||"/v1/chat/completions",connectionId:h.connectionId||null,comboName:i||null})}catch{}}function A(a,b){if(!a||!b)return a;try{return a.headers.set("X-OmniRoute-Session-Id",b),a}catch{let c=new Response(a.body,{status:a.status,statusText:a.statusText,headers:a.headers});return c.headers.set("X-OmniRoute-Session-Id",b),c}}[e,f,h,k,o]=t.then?(await t)():t,d()}catch(a){d(a)}})},77458:(a,b,c)=>{c.d(b,{IV:()=>g,Jh:()=>h,V7:()=>f});let d=[{name:"system_override",pattern:/\b(ignore|disregard|forget)\s+(all\s+)?(previous|prior|above|earlier)\s+(instructions?|prompts?|rules?|context)/i,severity:"high"},{name:"role_hijack",pattern:/\b(you\s+are\s+now|act\s+as\s+if|pretend\s+(to\s+be|you\s+are)|from\s+now\s+on\s+you\s+are)\b/i,severity:"medium"},{name:"system_prompt_leak",pattern:/\b(reveal|show|display|print|output|repeat)\s+(your\s+)?(system\s+prompt|instructions?|initial\s+prompt|hidden\s+prompt)/i,severity:"high"},{name:"delimiter_injection",pattern:/(\[SYSTEM\]|\[INST\]|<<SYS>>|<\|im_start\|>|<\|system\|>|<\|user\|>)/i,severity:"high"},{name:"jailbreak_dan",pattern:/\b(DAN|do\s+anything\s+now|jailbreak|developer\s+mode|enable\s+developer)\b/i,severity:"medium"},{name:"encoding_evasion",pattern:/\b(base64\s+decode|rot13|hex\s+decode|unicode\s+escape)\b.*\b(instruction|prompt|command)\b/i,severity:"medium"}],e=[{name:"email",pattern:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,replacement:"[EMAIL_REDACTED]"},{name:"cpf",pattern:/\b\d{3}\.\d{3}\.\d{3}-\d{2}\b/g,replacement:"[CPF_REDACTED]"},{name:"cnpj",pattern:/\b\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}\b/g,replacement:"[CNPJ_REDACTED]"},{name:"credit_card",pattern:/\b(?:\d{4}[-\s]?){3}\d{4}\b/g,replacement:"[CARD_REDACTED]"},{name:"phone_br",pattern:/\b\(?\d{2}\)?\s?\d{4,5}-?\d{4}\b/g,replacement:"[PHONE_REDACTED]"},{name:"ssn_us",pattern:/\b\d{3}-\d{2}-\d{4}\b/g,replacement:"[SSN_REDACTED]"}];function f(a){let b=[];for(let c of a.messages||a.input||[])if("string"==typeof c)b.push(c);else if("string"==typeof c.content)b.push(c.content);else if(Array.isArray(c.content))for(let a of c.content)"string"==typeof a?b.push(a):a.text&&b.push(a.text);if("string"==typeof a.system)b.push(a.system);else if(Array.isArray(a.system))for(let c of a.system)"string"==typeof c?b.push(c):c.text&&b.push(c.text);return b}function g(a,b=!1){let c=[],d=a;for(let f of e){let e=a.match(f.pattern);e&&e.length>0&&(c.push({type:f.name,count:e.length}),b&&(d=d.replace(f.pattern,f.replacement)))}return{text:d,detections:c}}function h(a,b=console){let c={enabled:"false"!==process.env.INPUT_SANITIZER_ENABLED,mode:process.env.INPUT_SANITIZER_MODE||"warn",piiRedaction:"true"===process.env.PII_REDACTION_ENABLED},e={blocked:!1,modified:!1,detections:[],piiDetections:[],sanitizedBody:null};if(!c.enabled)return e;let i=f(a).join("\n"),j=function(a){let b=[];for(let c of d){let d=a.match(c.pattern);d&&b.push({pattern:c.name,severity:c.severity,match:d[0].slice(0,50)})}return b}(i);if(j.length>0){e.detections=j;let a=j.filter(a=>"high"===a.severity),d=a.length>0?"warn":"info";if(b[d]&&b[d](`[SANITIZER] Prompt injection detected: ${j.map(a=>a.pattern).join(", ")}`),"block"===c.mode&&a.length>0)return e.blocked=!0,e}if(c.piiRedaction){let d=g(i,"redact"===c.mode);e.piiDetections=d.detections,d.detections.length>0&&(b.warn?.(`[SANITIZER] PII detected: ${d.detections.map(a=>`${a.type}(${a.count})`).join(", ")}`),"redact"===c.mode&&(e.sanitizedBody=function(a){let b=JSON.parse(JSON.stringify(a));for(let a of b.messages||b.input||[])if("string"==typeof a.content)a.content=g(a.content,!0).text;else if(Array.isArray(a.content))for(let b of a.content)if("string"==typeof b){let c=a.content.indexOf(b);a.content[c]=g(b,!0).text}else b.text&&(b.text=g(b.text,!0).text);return"string"==typeof b.system&&(b.system=g(b.system,!0).text),b}(a),e.modified=!0))}return e}},79335:(a,b,c)=>{c.a(a,async(a,d)=>{try{let k;c.d(b,{ic:()=>h,ne:()=>j,tm:()=>i,xp:()=>g});var e=c(33364),f=a([e]);e=(f.then?(await f)():f)[0];let l=new Map;function g(a){if(!a)return null;let b="function"==typeof a.get?b=>a.get(b):b=>a[b];return b("idempotency-key")||b("x-request-id")||null}function h(a){if(!a)return null;let b=l.get(a);return b?Date.now()>=b.expiresAt?(l.delete(a),null):{response:b.response,status:b.status}:null}function i(a,b,c,d=5e3){a&&(!k&&(k=setInterval(()=>{let a=Date.now();for(let[b,c]of l)a>=c.expiresAt&&l.delete(b)},3e4)).unref&&k.unref(),l.set(a,{response:b,status:c,expiresAt:Date.now()+d}))}async function j(){let a=5e3;try{let b=await (0,e.getSettings)();"number"==typeof b.idempotencyWindowMs&&b.idempotencyWindowMs>0&&(a=b.idempotencyWindowMs)}catch{}return{activeKeys:l.size,windowMs:a}}d()}catch(a){d(a)}})},79490:(a,b,c)=>{c.d(b,{QC:()=>j});var d=c(30675),e=c(29210);let f=new Map,g=setInterval(()=>{let a=Date.now();for(let[b,c]of f)a-c.fetchedAt>3e5&&f.delete(b)},3e5);function h(a){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a){let b=parseFloat(a);if(Number.isFinite(b))return b}return null}async function i(a,b){let c,d=f.get(a);if(d&&Date.now()-d.fetchedAt<6e4)return d.quota;let e="string"==typeof(c=b?.apiKey)&&c.trim().length>0?c.trim():null;if(!e)return null;try{let b=await fetch("https://crof.ai/usage_api/",{method:"GET",headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:AbortSignal.timeout(8e3)});if(!b.ok)return(401===b.status||403===b.status)&&f.delete(a),null;let c=await b.json(),d=function(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:{};if(0===Object.keys(b).length)return null;let c=b.usable_requests,d=null==c?null:h(c),e=h(b.credits)??0,f=0;return f=null!==d?d>0?0:1:e>0?0:1,{used:0,total:d??0,percentUsed:f,resetAt:null,usableRequests:d,credits:e}}(c);if(!d)return null;return f.set(a,{quota:d,fetchedAt:Date.now()}),d}catch{return null}}function j(){(0,d.Zd)("crof",i),(0,e.br)("crof",i)}"object"==typeof g&&"unref"in g&&g.unref?.()},82162:(a,b,c)=>{c.d(b,{G3:()=>h,detectTaskType:()=>l,g4:()=>g,kf:()=>i,oC:()=>m,qk:()=>j});let d={coding:{patterns:["write code","write a function","implement","debug","fix this","fix the","refactor","unit test","write test","write a script","code review","complete this function","add a feature","javascript","typescript","python","sql query","api endpoint"],userPatterns:["```","def ","function ","class ","import ","const ","let ","var ","SELECT ","INSERT ","<html","<div"]},creative:{patterns:["write a story","write a poem","write a song","creative writing","write a blog","write an article","write a script","write an essay","imagine","roleplay","brainstorm","creative"]},analysis:{patterns:["analyze","analyse","analysis","compare","evaluate","assess","explain","reasoning","pros and cons","advantages and disadvantages","what are the implications","in-depth","comprehensive"]},vision:{patterns:["look at this image","in this image","what do you see","describe this image","analyze this image","read this screenshot"],userPatterns:["image_url","data:image"]},summarization:{patterns:["summarize","summary","tldr","tl;dr","brief overview","key points","main points","what did","highlights from"]},background:{patterns:["generate a title","generate title","create a title","name this","short description","brief description","one-line summary","conversation title"]},chat:{patterns:[]}},e={coding:"deepseek/deepseek-chat",creative:"",analysis:"gemini/gemini-2.5-pro",vision:"openai/gpt-4o",summarization:"gemini/gemini-2.5-flash",background:"gemini/gemini-2.5-flash-lite",chat:""},f={enabled:!1,taskModelMap:{...e},detectionEnabled:!0,stats:{detected:0,routed:0}};function g(a){f={...f,...a,stats:f.stats}}function h(){return{...f,taskModelMap:{...f.taskModelMap},stats:{...f.stats}}}function i(){f.stats={detected:0,routed:0}}function j(){return{...e}}function k(a){return"string"==typeof a?a.toLowerCase():Array.isArray(a)?a.map(a=>"string"==typeof a?a.toLowerCase():a?.text?.toLowerCase()||"").join(" "):""}function l(a){if(!a||"object"!=typeof a)return"chat";let b=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:[];if(0===b.length)return"chat";if(function(a){for(let b of a)if(Array.isArray(b.content)){for(let a of b.content)if(a?.type==="image_url"||a?.type==="image")return!0}return!1}(b))return"vision";let c=b.find(a=>"system"===a.role||"developer"===a.role),e=c?k(c.content):"",f=[...b].reverse().find(a=>"user"===a.role),g=f?k(f.content):"";for(let a of["background","coding","vision","summarization","analysis","creative"]){let{patterns:b,userPatterns:c}=d[a];if(b.some(a=>e.includes(a.toLowerCase()))||b.some(a=>g.includes(a.toLowerCase()))||c?.some(a=>g.includes(a.toLowerCase())))return a}return"chat"}function m(a,b){if(!f.enabled||!f.detectionEnabled)return{model:a,taskType:"chat",wasRouted:!1};let c=l(b);f.stats.detected++;let d=f.taskModelMap[c];return d&&""!==d?(f.stats.routed++,{model:d,taskType:c,wasRouted:!0}):{model:a,taskType:c,wasRouted:!1}}},82795:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{c:()=>k});var e=c(32113),f=c(66921),g=c(55120),h=c(60293),i=c(20783),j=a([i]);function k(a,b,c=""){if(!("string"==typeof c?c:"").includes("claude-cli")||!a.messages?.length)return null;let d=a.messages,j=a=>"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"",n=!1,o=d[d.length-1];if(o?.role==="assistant"&&o.content?.[0]?.text==="{"&&(n=!0),!n){let a=j(d[0]?.content);"Warmup"===a&&(n=!0)}if(!n&&1===d.length&&d[0]?.role==="user"){let a=j(d[0]?.content);"count"===a&&(n=!0)}if(!n&&h.C8?.length){let a=d.filter(a=>"user"===a.role).map(a=>j(a.content)).join(" ");h.C8.some(b=>a.includes(b))&&(n=!0)}if(!n)return null;let p=(0,e.Tz)(a);return!1!==a.stream?function(a,b){let c=l(b),d=(0,f.Ws)(a);d.model=b;let e=m(c),h=[];for(let b of e){let c=(0,f.Y8)(g.h.OPENAI,a,b,d);if(c?.length>0)for(let b of c)h.push((0,i.v8)(b,a))}let j=(0,f.Y8)(g.h.OPENAI,a,null,d);if(j?.length>0)for(let b of j)h.push((0,i.v8)(b,a));return h.push("data: [DONE]\n\n"),{success:!0,response:new Response(h.join(""),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}}(p,b):function(a,b){let c=l(b);if(a===g.h.OPENAI)return{success:!0,response:new Response(JSON.stringify(c),{headers:{"Content-Type":"application/json"}})};let d=(0,f.Ws)(a);d.model=b;let e=m(c),h=[];for(let b of e){let c=(0,f.Y8)(g.h.OPENAI,a,b,d);c?.length>0&&h.push(...c)}let i=(0,f.Y8)(g.h.OPENAI,a,null,d);i?.length>0&&h.push(...i);let j=function(a,b){if(!a||0===a.length)return l("unknown");let c=a[a.length-1];if(b===g.h.CLAUDE&&a.find(a=>"message_stop"===a.type)){a.find(a=>"content_block_delta"===a.type);let b=a.find(a=>"message_delta"===a.type),d=a.find(a=>"message_start"===a.type);d?.message&&(c=d.message,b?.usage&&(c.usage=b.usage))}return c}(h,a);return{success:!0,response:new Response(JSON.stringify(j),{headers:{"Content-Type":"application/json"}})}}(p,b)}function l(a){let b=`chatcmpl-${Date.now()}`,c=Math.floor(Date.now()/1e3);return{id:b,object:"chat.completion",created:c,model:a,choices:[{index:0,message:{role:"assistant",content:"CLI Command Execution: Clear Terminal"},finish_reason:"stop"}],usage:{prompt_tokens:1,completion_tokens:1,total_tokens:2}}}function m(a){let{id:b,created:c,model:d,choices:e}=a,f=e[0].message.content;return[{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{role:"assistant",content:f},finish_reason:null}]},{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{},finish_reason:"stop"}],usage:a.usage}]}i=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})},83002:(a,b,c)=>{c.d(b,{CS:()=>j,Jl:()=>e});var d=c(55120);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}}}},85040:(a,b,c)=>{function d(a){if(!a)return"Unknown Account";let b="string"==typeof a.name&&a.name.trim()||"string"==typeof a.displayName&&a.displayName.trim()||"string"==typeof a.email&&a.email.trim();return b||("string"==typeof a.id&&a.id?`Account #${a.id.slice(0,6)}`:"Unknown Account")}function e(a,b){if(b?.name?.trim())return b.name.trim();if(b?.prefix?.trim())return b.prefix.trim();if(!a)return"Unknown Provider";let c=a.match(/^(openai|anthropic)-compatible-(?:chat|responses)-[0-9a-f-]{10,}$/i);return c?`Compatible (${c[1]})`:/^anthropic-compatible-cc-[0-9a-f-]{10,}$/i.test(a)?"CC Compatible":a}c.d(b,{B:()=>d,x:()=>e})},85276:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{PH:()=>w,SF:()=>z,dr:()=>x,f9:()=>B,wJ:()=>A,wt:()=>C});var e=c(33364),f=c(44963),g=c(82742),h=c(1213),i=c(53048),j=c(8959),k=c(37544),l=c(86181),m=c(94046),n=a([e,f,g,j,k]);[e,f,g,j,k]=n.then?(await n)():n;let D=new Set(["glm","glmt","minimax","minimax-cn","crof"]),E="provider_limits_auto_sync_last_run";function o(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function p(a,b,c=new Date().toISOString()){return{quotas:o(a.quotas)?a.quotas:null,plan:a.plan??null,message:"string"==typeof a.message?a.message:null,fetchedAt:c,source:b}}function q(a){return!!a&&!!a.provider&&!!j.wb.includes(a.provider)&&("oauth"===a.authType||"apikey"===a.authType&&D.has(a.provider))}function r(a,b){return Object.assign(a,{status:b})}async function s(){try{let a=await (0,i.D1)();if(!a)return;await (0,f.AF)(a)}catch(a){console.error("[ProviderLimits] Error syncing refreshed credentials to cloud:",a)}}async function t(a){let b=(0,k.SB)(a.provider),c={accessToken:a.accessToken,refreshToken:a.refreshToken,expiresAt:a.tokenExpiresAt||a.expiresAt||null,providerSpecificData:a.providerSpecificData,copilotToken:a.providerSpecificData?.copilotToken,copilotTokenExpiresAt:a.providerSpecificData?.copilotTokenExpiresAt};if(!b.needsRefresh(c))return{connection:a,refreshed:!1};let d=await b.refreshCredentials(c,console);if(!d){if("github"===a.provider&&a.accessToken)return{connection:a,refreshed:!1};throw r(Error("Failed to refresh credentials. Please re-authorize the connection."),401)}let f={updatedAt:new Date().toISOString()};if(d.accessToken&&(f.accessToken=d.accessToken),d.refreshToken&&(f.refreshToken=d.refreshToken),d.expiresIn){let a=new Date(Date.now()+1e3*d.expiresIn).toISOString();f.expiresAt=a,f.tokenExpiresAt=a}else d.expiresAt&&(f.expiresAt=d.expiresAt,f.tokenExpiresAt=d.expiresAt);return(d.copilotToken||d.copilotTokenExpiresAt)&&(f.providerSpecificData={...a.providerSpecificData||{},copilotToken:d.copilotToken,copilotTokenExpiresAt:d.copilotTokenExpiresAt}),await (0,e.rjy)(a.id,f),{connection:{...a,...f,providerSpecificData:f.providerSpecificData||a.providerSpecificData},refreshed:!0}}async function u(a,b){let c="string"==typeof b.message?b.message.toLowerCase():"";if((c.includes("token expired")||c.includes("access denied")||c.includes("re-authenticate")||c.includes("unauthorized"))&&"expired"!==a.testStatus)try{await (0,e.rjy)(a.id,{testStatus:"expired",lastErrorType:"token_expired",lastErrorAt:new Date().toISOString()})}catch(a){console.error("[ProviderLimits] Failed to sync expired status to DB:",a)}}async function v(a,b){let c=(0,h.pI)(a,b);return c?(await (0,e.rjy)(a.id,c),{...a,...c}):a}function w(){let a=Number.parseInt(process.env.PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES??"",10);return Number.isFinite(a)&&a>0?a:70}async function x(){try{let a=(await (0,e.getSettings)())[E];return"string"==typeof a&&a.trim()?a:null}catch{return null}}async function y(a){await (0,e.Xx7)({[E]:a})}function z(){return(0,e.hX7)()}async function A(a){var b;let c,d=await (0,e.McZ)(a);if(!d)throw r(Error("Connection not found"),404);if(!q(d))throw r(Error("Usage not available for this connection"),400);if("oauth"!==d.authType){let b=await (0,l.m)(d);return o(b.quotas)&&(0,g.fr)(a,d.provider,b.quotas),await u(d,b),{connection:d=await v(d,b),usage:b}}let f=await (0,e.YDv)(a),h=async a=>(0,m.jf)(a,async()=>{let a=d,b=await t(a);a=b.connection,b.refreshed&&await s();let c=await (0,l.m)(a);return d=a,{usage:c}}),i=f?.proxy||null;try{c=await h(i)}catch(d){let b=d?.message==="fetch failed"||d?.code==="PROXY_UNREACHABLE"||d?.code==="UND_ERR_CONNECT_TIMEOUT"||d?.cause?.code==="ECONNREFUSED";if(i&&b)console.warn(`[ProviderLimits] Proxy fetch threw for ${a}, retrying without proxy:`,d?.message),c=await h(null);else throw d}return i&&(b=c.usage?.message,"string"==typeof b&&(b.includes("fetch failed")||b.includes("ECONNREFUSED")||b.includes("ETIMEDOUT")||b.includes("Proxy unreachable")||b.includes("UND_ERR_CONNECT_TIMEOUT")))&&(console.warn(`[ProviderLimits] Proxy usage returned network error for ${a}, retrying without proxy:`,c.usage.message),c=await h(null)),o(c.usage.quotas)&&(0,g.fr)(a,d.provider,c.usage.quotas),await u(d,c.usage),{connection:d=await v(d,c.usage),usage:c.usage}}async function B(a,b="manual"){let{connection:c,usage:d}=await A(a),f=p(d,b);return(0,e.QBr)(a,f),{connection:c,usage:d,cache:f}}async function C(a={}){let{source:b="manual",concurrency:c=5}=a,d=(await (0,e.getProviderConnections)({isActive:!0})).filter(q),f=[],g={},h={};for(let a=0;a<d.length;a+=c){let e=d.slice(a,a+c);(await Promise.allSettled(e.map(async a=>{let{usage:c}=await A(a.id),d=p(c,b);return{connectionId:a.id,cache:d}}))).forEach((a,b)=>{let c=e[b]?.id;if(!c)return;if("fulfilled"===a.status){f.push({connectionId:a.value.connectionId,entry:a.value.cache}),g[a.value.connectionId]=a.value.cache;return}let d=a.reason;h[c]=d?.message||"Failed to refresh provider limits"})}return f.length>0&&(0,e.cRz)(f),"scheduled"===b&&await y(new Date().toISOString()),{total:d.length,succeeded:f.length,failed:d.length-f.length,caches:g,errors:h}}d()}catch(a){d(a)}})},87567:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{B:()=>m});var e=c(77044),f=c(67600),g=c(85040),h=c(18620),i=a([f]);function j(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function k(a){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim().length>0){let b=Number(a);return Number.isFinite(b)?b:0}return 0}function l(a){return"string"==typeof a?a:""}async function m(){let a=(0,e.sm)().prepare("SELECT * FROM usage_history ORDER BY timestamp ASC").all(),{getProviderConnections:b}=await Promise.all([c.e(56197),c.e(22073),c.e(33364),c.e(36009)]).then(c.bind(c,33364)),d=[];try{let a=await b();d=Array.isArray(a)?a:[]}catch{}let i={};for(let a of d){let b=j(a),c=l(b.id);c&&(i[c]=l(b.name)||l(b.email)||c)}let m=(0,f._w)(),n={totalRequests:a.length,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},last10Minutes:[],pending:m,activeRequests:[]};for(let[a,b]of Object.entries(m.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=i[a]||(0,g.B)({id:a}),e=c.match(/^(.*) \((.*)\)$/);n.activeRequests.push({model:e?e[1]:c,provider:e?e[2]:"unknown",account:b,count:d})}let o=new Date,p=new Date(6e4*Math.floor(o.getTime()/6e4)),q={};for(let a=0;a<10;a++){let b=new Date(p.getTime()-(9-a)*6e4).getTime();q[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},n.last10Minutes.push(q[b])}let r=new Date(p.getTime()-54e4);for(let b of a){let a=j(b),c=l(a.provider)||"unknown",d=l(a.model)||"unknown",e=l(a.timestamp)||new Date(0).toISOString(),f=l(a.connection_id)||null,m=l(a.api_key_id)||null,p=l(a.api_key_name)||null,s=k(a.tokens_input),t=k(a.tokens_output),u=new Date(e),v={input:k(a.tokens_input),output:k(a.tokens_output),cacheRead:k(a.tokens_cache_read),cacheCreation:k(a.tokens_cache_creation),reasoning:k(a.tokens_reasoning)},w=await (0,h.yN)(c,d,v);if(n.totalPromptTokens+=s,n.totalCompletionTokens+=t,n.totalCost+=w,u>=r&&u<=o){let a=6e4*Math.floor(u.getTime()/6e4);q[a]&&(q[a].requests++,q[a].promptTokens+=s,q[a].completionTokens+=t,q[a].cost+=w)}n.byProvider[c]||(n.byProvider[c]={requests:0,promptTokens:0,completionTokens:0,cost:0}),n.byProvider[c].requests++,n.byProvider[c].promptTokens+=s,n.byProvider[c].completionTokens+=t,n.byProvider[c].cost+=w;let x=c?`${d} (${c})`:d;if(n.byModel[x]||(n.byModel[x]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:d,provider:c,lastUsed:e}),n.byModel[x].requests++,n.byModel[x].promptTokens+=s,n.byModel[x].completionTokens+=t,n.byModel[x].cost+=w,new Date(e)>new Date(n.byModel[x].lastUsed||e)&&(n.byModel[x].lastUsed=e),f){let a=i[f]||(0,g.B)({id:f}),b=`${d} (${c} - ${a})`;n.byAccount[b]||(n.byAccount[b]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:d,provider:c,connectionId:f,accountName:a,lastUsed:e}),n.byAccount[b].requests++,n.byAccount[b].promptTokens+=s,n.byAccount[b].completionTokens+=t,n.byAccount[b].cost+=w,new Date(e)>new Date(n.byAccount[b].lastUsed||e)&&(n.byAccount[b].lastUsed=e)}if(m||p){let a=p||m||"unknown",b=m||null,c=b?`${a} (${b})`:a;n.byApiKey[c]||(n.byApiKey[c]={requests:0,promptTokens:0,completionTokens:0,cost:0,apiKeyId:b,apiKeyName:a,lastUsed:e}),n.byApiKey[c].requests++,n.byApiKey[c].promptTokens+=s,n.byApiKey[c].completionTokens+=t,n.byApiKey[c].cost+=w,new Date(e)>new Date(n.byApiKey[c].lastUsed||e)&&(n.byApiKey[c].lastUsed=e)}}return n}f=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},89122:(a,b,c)=>{function d(a){if(!a)return{};let b={..."function"==typeof a.entries?Object.fromEntries(a.entries()):{...a}},c=["authorization","x-api-key","cookie","token"];for(let a of Object.keys(b)){let d=a.toLowerCase();if(!c.some(a=>d.includes(a)))continue;let e=b[a];"string"==typeof e&&e.length>20?b[a]=`${e.slice(0,10)}...${e.slice(-5)}`:e&&(b[a]="[REDACTED]")}return b}function e(a,b=0){if(null==a)return a;if("string"==typeof a)return function(a,b=65536){return a.length<=b?a:`${a.slice(0,Math.floor(b/2))}
67
67
  [...truncated ${a.length-b} chars...]
@@ -1,4 +1,4 @@
1
- exports.id=19849,exports.ids=[19849],exports.modules={954:(a,b,c)=>{"use strict";c.d(b,{D:()=>e,U:()=>f});let d=new Set;function e(a){d.add(a)}function f(){for(let a of d)try{a()}catch(a){console.warn("[DB] Failed to reset module state:",a)}}},3845:(a,b,c)=>{var d={"./ar.json":[48464,48464],"./bg.json":[60944,60944],"./bn.json":[62215,62215],"./cs.json":[26929,26929],"./da.json":[18976,18976],"./de.json":[22372,22372],"./en.json":[31960,31960],"./es.json":[87011,87011],"./fa.json":[2238,2238],"./fi.json":[96118,96118],"./fr.json":[53911,53911],"./gu.json":[3099,3099],"./he.json":[28867,51248],"./hi.json":[18876,18876],"./hu.json":[50496,50496],"./id.json":[16930,16930],"./in.json":[30708,30708],"./it.json":[32594,32594],"./ja.json":[37650,37650],"./ko.json":[79837,79837],"./mr.json":[42428,42428],"./ms.json":[55752,33371],"./nl.json":[35097,35097],"./no.json":[88220,88220],"./phi.json":[28706,28706],"./pl.json":[99119,99119],"./pt-BR.json":[41990,41990],"./pt.json":[11623,11623],"./ro.json":[71880,71880],"./ru.json":[61526,61526],"./sk.json":[25945,25945],"./sv.json":[85094,85094],"./sw.json":[14509,14509],"./ta.json":[64112,64112],"./te.json":[7412,7412],"./th.json":[55047,55047],"./tr.json":[58509,58509],"./uk-UA.json":[11584,11584],"./ur.json":[96116,96116],"./vi.json":[22214,22214],"./zh-CN.json":[65521,65521]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=3845,a.exports=e},7224:(a,b,c)=>{Promise.resolve().then(c.bind(c,67045))},7396:(a,b,c)=>{Promise.resolve().then(c.bind(c,95127))},8979:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/not-found.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/not-found.tsx","default")},12608:(a,b,c)=>{Promise.resolve().then(c.bind(c,8979))},22746:(a,b,c)=>{"use strict";c.d(b,{CardSkeleton:()=>k,PageLoading:()=>i,Skeleton:()=>j,Spinner:()=>h,default:()=>l});var d=c(48249),e=c(77360),f=c(31846);let g={sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"};function h({size:a="md",className:b,label:c}){let i=(0,e.c)("common"),j=c??i("loading");return(0,d.jsxs)("span",{role:"status","aria-live":"polite","aria-label":j,className:(0,f.cn)("inline-flex",b),children:[(0,d.jsx)("span",{className:"sr-only",children:j}),(0,d.jsx)("span",{"aria-hidden":"true",className:(0,f.cn)("material-symbols-outlined text-primary animate-spin motion-reduce:animate-none",g[a]),children:"progress_activity"})]})}function i({message:a,className:b}){let c=(0,e.c)("common");return(0,d.jsxs)("div",{className:(0,f.cn)("fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg px-6",b),role:"status","aria-live":"polite","aria-busy":"true",children:[(0,d.jsx)(h,{size:"xl"}),(0,d.jsx)("p",{className:"mt-4 text-text-muted text-center",children:a??c("loading")})]})}function j({className:a,...b}){return(0,d.jsx)("div",{"aria-hidden":"true",className:(0,f.cn)("animate-pulse motion-reduce:animate-none rounded-lg bg-border",a),...b})}function k(){return(0,d.jsxs)("div",{className:"p-6 rounded-xl border border-border bg-surface","aria-hidden":"true",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4 gap-4",children:[(0,d.jsx)(j,{className:"h-4 w-24"}),(0,d.jsx)(j,{className:"size-10 rounded-lg"})]}),(0,d.jsx)(j,{className:"h-8 w-16 mb-2"}),(0,d.jsx)(j,{className:"h-3 w-20"})]})}function l({type:a="spinner",className:b,message:c,size:e,label:f,...g}){switch(a){case"page":return(0,d.jsx)(i,{message:c,className:b});case"skeleton":return(0,d.jsx)(j,{className:b,...g});case"card":return(0,d.jsx)(k,{});default:return(0,d.jsx)(h,{size:e,className:b,label:f})}}},31714:(a,b,c)=>{"use strict";c.d(b,{Sc:()=>i,getCachedSettings:()=>h});class d{constructor(a){this.cache=new Map,this.ttlMs=a}get(a){let b=this.cache.get(a);if(b)return Date.now()>b.expiresAt?void this.cache.delete(a):b.value}set(a,b){this.cache.set(a,{value:b,expiresAt:Date.now()+this.ttlMs})}invalidate(a){a?this.cache.delete(a):this.cache.clear()}}let e=new d(5e3),f=new d(3e4),g=new d(5e3);async function h(){let a=e.get("settings");if(a)return a;let{getSettings:b}=await Promise.all([c.e(23969),c.e(9679)]).then(c.bind(c,9679)),d=await b();return e.set("settings",d),d}function i(a){a&&"settings"!==a||e.invalidate(),a&&"pricing"!==a||f.invalidate(),a&&"connections"!==a||g.invalidate()}new d(5e3)},31846:(a,b,c)=>{"use strict";function d(...a){return a.filter(Boolean).join(" ").replace(/\s+/g," ").trim()}c.d(b,{cn:()=>d})},32444:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ThemeProvider.tsx","ThemeProvider")},39710:(a,b,c)=>{Promise.resolve().then(c.bind(c,97507))},39948:(a,b,c)=>{"use strict";c.d(b,{Dp:()=>x,eF:()=>w,k3:()=>o,k6:()=>n,lR:()=>v,mG:()=>r});var d=c(87550),e=c.n(d),f=c(33873),g=c.n(f),h=c(29021),i=c.n(h),j=c(77044),k=c(954);let l=0,m=new Set(["1","true","yes","on"]);function n(){var a=process.env.DB_BACKUP_MAX_FILES;if(!a)return 20;let b=Number.parseInt(a,10);return Number.isInteger(b)&&b>0?b:20}function o(){var a=process.env.DB_BACKUP_RETENTION_DAYS;if(void 0===a)return 0;let b=Number.parseInt(a,10);return Number.isInteger(b)&&b>=0?b:0}function p(){return j.NJ||g().join(j.nJ,"db_backups")}function q(a){if(!i().existsSync(a))return[];let b=new Map;for(let c of i().readdirSync(a)){let d;if(!c.startsWith("db_"))continue;let e=c.endsWith("-wal")||c.endsWith("-shm")?c.slice(0,-4):c.endsWith("-journal")?c.slice(0,-8):c,f=g().join(a,c);try{d=i().statSync(f)}catch{continue}let h=b.get(e)||{base:e,hasPrimary:!1,primaryMtimeMs:0,latestMtimeMs:0,files:[]};h.files.push(c),h.latestMtimeMs=Math.max(h.latestMtimeMs,d.mtimeMs),c===e&&c.endsWith(".sqlite")&&(h.hasPrimary=!0,h.primaryMtimeMs=d.mtimeMs),b.set(e,h)}return[...b.values()]}function r(a){let b=p();if(!i().existsSync(b))return{deletedBackupFamilies:0,deletedFiles:0,keptBackupFamilies:0,maxFiles:a?.maxFiles??n(),retentionDays:a?.retentionDays??o()};let c=Math.max(1,a?.maxFiles??n()),d=Math.max(0,a?.retentionDays??o()),e=d>0?Date.now()-24*d*36e5:0,f=q(b),h=new Set(f.filter(a=>a.hasPrimary).sort((a,b)=>b.primaryMtimeMs-a.primaryMtimeMs).slice(0,c).map(a=>a.base)),j=0,k=0;for(let a of f){let c=a.hasPrimary&&!h.has(a.base),f=d>0&&a.latestMtimeMs<e,l=!a.hasPrimary;if(c||f||l)for(let c of(j+=1,a.files))try{i().unlinkSync(g().join(b,c)),k+=1}catch{}}return{deletedBackupFamilies:j,deletedFiles:k,keptBackupFamilies:q(b).filter(a=>a.hasPrimary).length,maxFiles:c,retentionDays:d}}function s(){if("u">typeof process&&(void 0!==process.env.VITEST||process.argv.some(a=>a.includes("test"))))return!0;let a=process.env.DISABLE_SQLITE_AUTO_BACKUP;return!!a&&m.has(a.trim().toLowerCase())}function t(a){return new Promise(b=>setTimeout(b,a))}async function u(a,b){let c=Math.max(1,b?.maxAttempts??10),d=new Set(b?.retryableCodes??["EBUSY","EPERM"]),e=Math.max(0,b?.baseDelayMs??100);for(let b=0;b<c;b++)try{i().existsSync(a)&&i().unlinkSync(a);return}catch(f){let a=f&&"object"==typeof f&&"code"in f?f.code:"";if("ENOENT"===a)return;if(d.has(String(a))&&b<c-1)await t(e*(b+1));else throw f}}function v(a="auto"){try{if(j.I8||j.m1||!j.oh||!i().existsSync(j.oh)||"manual"!==a&&s())return null;let b=i().statSync(j.oh);if(b.size<4096)return console.warn(`[DB] Backup SKIPPED — DB too small (${b.size}B)`),null;let c=Date.now();if("manual"!==a&&"pre-restore"!==a&&c-l<36e5)return null;l=c;let d=p();if(i().existsSync(d)||i().mkdirSync(d,{recursive:!0}),"manual"!==a&&"pre-restore"!==a){let a=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();if(a.length>0){let c=a[a.length-1],e=i().statSync(g().join(d,c));if(e.size>4096&&b.size<.5*e.size)return console.warn(`[DB] Backup SKIPPED — DB shrank from ${e.size}B to ${b.size}B`),null}}let e=new Date().toISOString().replace(/[:.]/g,"-"),f=g().join(d,`db_${e}_${a}.sqlite`);return(0,j.sm)().backup(f).then(()=>{console.log(`[DB] Backup created: ${f} (${b.size} bytes)`),r()}).catch(a=>{let b=a instanceof Error?a.message:String(a);console.error("[DB] Backup failed:",b)}),{filename:g().basename(f),size:b.size}}catch(a){return console.error("[DB] Backup failed:",a instanceof Error?a.message:String(a)),null}}async function w(){let a=p();try{if(!i().existsSync(a))return[];return i().readdirSync(a).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort().reverse().map(b=>{let c=g().join(a,b),d=i().statSync(c),f=b.match(/^db_(.+?)_([^.]+)\.sqlite$/),h=f?f[2]:"unknown",j=0;try{let a=new(e())(c,{readonly:!0}),b=a.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get();j=b?.cnt||0,a.close()}catch{}return{id:b,filename:b,createdAt:d.mtime.toISOString(),size:d.size,reason:h,connectionCount:j}})}catch{return[]}}async function x(a){let b=p();if(!a.startsWith("db_")||!a.endsWith(".sqlite")||a.includes(g().sep)||a.includes("/"))throw Error("Invalid backup ID");let c=g().resolve(b,a);if(!c.startsWith(g().resolve(b)+g().sep)&&c!==g().resolve(b))throw Error("Invalid backup ID: path traversal detected");if(!i().existsSync(c))throw Error(`Backup not found: ${a}`);try{let a=new(e())(c,{readonly:!0}),b=a.pragma("integrity_check");if(a.close(),b[0]?.integrity_check!=="ok")throw Error("Backup integrity check failed")}catch(b){if(b instanceof Error&&"Backup integrity check failed"===b.message)throw b;let a=b instanceof Error?b.message:String(b);throw Error(`Backup file is corrupt: ${a}`)}if(!s()){l=0;let a=p();if(j.oh&&i().existsSync(j.oh)&&i().statSync(j.oh).size>=4096){i().existsSync(a)||i().mkdirSync(a,{recursive:!0});let b=g().join(a,`db_${new Date().toISOString().replace(/[:.]/g,"-")}_pre-restore.sqlite`),c=(0,j.sm)();await c.backup(b),l=Date.now()}}(0,j.jX)(),(0,k.U)();let d=j.oh;if(!d)throw Error("SQLITE_FILE is unavailable in local backup restore");for(let a of(await t(500),[d,`${d}-wal`,`${d}-shm`,`${d}-journal`]))a&&await u(a);i().copyFileSync(c,d);let f=(0,j.sm)(),h=f.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get()?.cnt||0,m=f.prepare("SELECT COUNT(*) as cnt FROM provider_nodes").get()?.cnt||0,n=f.prepare("SELECT COUNT(*) as cnt FROM combos").get()?.cnt||0,o=f.prepare("SELECT COUNT(*) as cnt FROM api_keys").get()?.cnt||0;return console.log(`[DB] Restored backup: ${a} (${h} connections)`),{restored:!0,backupId:a,connectionCount:h,nodeCount:m,comboCount:n,apiKeyCount:o}}},44438:(a,b,c)=>{Promise.resolve().then(c.bind(c,64385))},47336:(a,b,c)=>{"use strict";c.d(b,{v:()=>d,B:()=>e});let d={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:"3.7.2"},e={storageKey:"theme",defaultTheme:"system"}},47695:(a,b,c)=>{"use strict";c.d(b,{A:()=>i,F:()=>h});var d=c(31417),e=c(300),f=c(47336);let g=(0,d.v)()((0,e.Zr)((a,b)=>({theme:f.B.defaultTheme,colorTheme:"coral",customColor:"#3b82f6",setTheme:b=>{a({theme:b})},setColorTheme:c=>{a({colorTheme:c}),b().customColor},setCustomColorTheme:b=>{let c=function(a){let b=(a||"").trim(),c=b.startsWith("#")?b:`#${b}`;return/^#([0-9a-fA-F]{6})$/.test(c)?c.toLowerCase():"#3b82f6"}(b);a({colorTheme:"custom",customColor:c})},toggleTheme:()=>{let c="dark"===b().theme?"light":"dark";a({theme:c})},initTheme:()=>{let{theme:a,colorTheme:c,customColor:d}=b()}}),{name:f.B.storageKey})),h={coral:"#e54d5e",blue:"#3b82f6",red:"#ef4444",green:"#22c55e",violet:"#8b5cf6",orange:"#f97316",cyan:"#06b6d4"},i=g},60548:(a,b,c)=>{Promise.resolve().then(c.bind(c,65909))},61135:()=>{},64385:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/error.tsx","default")},65909:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(48249),e=c(22746);function f(){return(0,d.jsx)(e.PageLoading,{message:"Loading OmniRoute..."})}},67045:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-bg text-text-main font-[system-ui,-apple-system,sans-serif] text-center m-0",children:(0,d.jsxs)("main",{role:"alert","aria-live":"assertive",className:"flex flex-col items-center",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4","aria-hidden":"true",children:"⚠️"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-[15px] text-text-muted max-w-[400px] leading-relaxed mb-6",children:"An unexpected error occurred. This has been logged and our team will investigate."}),!1,(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row gap-3",children:[(0,d.jsx)("button",{onClick:b,"aria-label":"Retry loading the page",className:"px-8 py-3 rounded-[10px] text-white border-none text-sm font-semibold cursor-pointer transition-transform duration-200 motion-reduce:transition-none motion-reduce:transform-none shadow-warm hover:-translate-y-0.5 bg-gradient-to-br from-primary to-primary-hover focus:outline-2 focus:outline-offset-2 focus:outline-primary",children:"Try Again"}),(0,d.jsx)("a",{href:"/status",className:"px-8 py-3 rounded-[10px] text-sm font-semibold border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Open system status",children:"System Status"})]})]})})})}},69199:(a,b,c)=>{Promise.resolve().then(c.bind(c,86392)),Promise.resolve().then(c.bind(c,32444))},73857:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(48249),e=c(2116),f=c.n(e);function g(){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-bg text-text-main text-center",role:"main","aria-labelledby":"not-found-title",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-primary to-primary-hover bg-clip-text text-transparent","aria-hidden":"true",children:"404"}),(0,d.jsx)("h1",{id:"not-found-title",className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-text-muted max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row items-center gap-3",children:[(0,d.jsx)(f(),{href:"/dashboard",className:"px-8 py-3 rounded-xl text-white text-sm font-medium no-underline transition-all duration-200 motion-reduce:transition-none shadow-warm hover:-translate-y-0.5 bg-gradient-to-br from-primary to-primary-hover hover:shadow-elevated focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Return to dashboard",children:"Go to Dashboard"}),(0,d.jsx)(f(),{href:"/status",className:"px-8 py-3 rounded-xl text-sm font-medium no-underline border border-border hover:bg-bg-alt transition-colors duration-200 motion-reduce:transition-none focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Open system status page",children:"System Status"})]})]})}},75146:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249);c(67484);var e=c(47695);function f({children:a}){let{initTheme:b}=(0,e.A)();return(0,d.jsx)(d.Fragment,{children:a})}},76160:(a,b,c)=>{Promise.resolve().then(c.bind(c,73857))},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>n,generateMetadata:()=>m});var d=c(5735),e=c(50609),f=c.n(e);c(61135);var g=c(32444),h=c(68625),i=c(62026),j=c(28440),k=c(83750),l=c(9679);async function m(){let a=await (0,l.getSettings)(),b=a?.instanceName||"OmniRoute";return{title:`${b} — AI Gateway for Multi-Provider LLMs`,description:"OmniRoute is an AI gateway for multi-provider LLMs. One endpoint for all your AI providers.",icons:{icon:a?.customFaviconUrl||a?.customFaviconBase64?"/api/settings/favicon":"/favicon.svg",apple:"/apple-touch-icon.svg"}}}async function n({children:a}){let b=await (0,i.A)(),c=await (0,j.A)(),e=k.rB.includes(b);return(0,d.jsxs)("html",{lang:b,dir:e?"rtl":"ltr",suppressHydrationWarning:!0,children:[(0,d.jsxs)("head",{children:[(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),(0,d.jsx)("link",{href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap",rel:"stylesheet"}),(0,d.jsx)("script",{dangerouslySetInnerHTML:{__html:`
1
+ exports.id=19849,exports.ids=[19849],exports.modules={954:(a,b,c)=>{"use strict";c.d(b,{D:()=>e,U:()=>f});let d=new Set;function e(a){d.add(a)}function f(){for(let a of d)try{a()}catch(a){console.warn("[DB] Failed to reset module state:",a)}}},3845:(a,b,c)=>{var d={"./ar.json":[48464,48464],"./bg.json":[60944,60944],"./bn.json":[62215,62215],"./cs.json":[26929,26929],"./da.json":[18976,18976],"./de.json":[22372,22372],"./en.json":[31960,31960],"./es.json":[87011,87011],"./fa.json":[2238,2238],"./fi.json":[96118,96118],"./fr.json":[53911,53911],"./gu.json":[3099,3099],"./he.json":[28867,51248],"./hi.json":[18876,18876],"./hu.json":[50496,50496],"./id.json":[16930,16930],"./in.json":[30708,30708],"./it.json":[32594,32594],"./ja.json":[37650,37650],"./ko.json":[79837,79837],"./mr.json":[42428,42428],"./ms.json":[55752,33371],"./nl.json":[35097,35097],"./no.json":[88220,88220],"./phi.json":[28706,28706],"./pl.json":[99119,99119],"./pt-BR.json":[41990,41990],"./pt.json":[11623,11623],"./ro.json":[71880,71880],"./ru.json":[61526,61526],"./sk.json":[25945,25945],"./sv.json":[85094,85094],"./sw.json":[14509,14509],"./ta.json":[64112,64112],"./te.json":[7412,7412],"./th.json":[55047,55047],"./tr.json":[58509,58509],"./uk-UA.json":[11584,11584],"./ur.json":[96116,96116],"./vi.json":[22214,22214],"./zh-CN.json":[65521,65521]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=3845,a.exports=e},7224:(a,b,c)=>{Promise.resolve().then(c.bind(c,67045))},7396:(a,b,c)=>{Promise.resolve().then(c.bind(c,95127))},8979:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/not-found.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/not-found.tsx","default")},12608:(a,b,c)=>{Promise.resolve().then(c.bind(c,8979))},22746:(a,b,c)=>{"use strict";c.d(b,{CardSkeleton:()=>k,PageLoading:()=>i,Skeleton:()=>j,Spinner:()=>h,default:()=>l});var d=c(48249),e=c(77360),f=c(31846);let g={sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"};function h({size:a="md",className:b,label:c}){let i=(0,e.c)("common"),j=c??i("loading");return(0,d.jsxs)("span",{role:"status","aria-live":"polite","aria-label":j,className:(0,f.cn)("inline-flex",b),children:[(0,d.jsx)("span",{className:"sr-only",children:j}),(0,d.jsx)("span",{"aria-hidden":"true",className:(0,f.cn)("material-symbols-outlined text-primary animate-spin motion-reduce:animate-none",g[a]),children:"progress_activity"})]})}function i({message:a,className:b}){let c=(0,e.c)("common");return(0,d.jsxs)("div",{className:(0,f.cn)("fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg px-6",b),role:"status","aria-live":"polite","aria-busy":"true",children:[(0,d.jsx)(h,{size:"xl"}),(0,d.jsx)("p",{className:"mt-4 text-text-muted text-center",children:a??c("loading")})]})}function j({className:a,...b}){return(0,d.jsx)("div",{"aria-hidden":"true",className:(0,f.cn)("animate-pulse motion-reduce:animate-none rounded-lg bg-border",a),...b})}function k(){return(0,d.jsxs)("div",{className:"p-6 rounded-xl border border-border bg-surface","aria-hidden":"true",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4 gap-4",children:[(0,d.jsx)(j,{className:"h-4 w-24"}),(0,d.jsx)(j,{className:"size-10 rounded-lg"})]}),(0,d.jsx)(j,{className:"h-8 w-16 mb-2"}),(0,d.jsx)(j,{className:"h-3 w-20"})]})}function l({type:a="spinner",className:b,message:c,size:e,label:f,...g}){switch(a){case"page":return(0,d.jsx)(i,{message:c,className:b});case"skeleton":return(0,d.jsx)(j,{className:b,...g});case"card":return(0,d.jsx)(k,{});default:return(0,d.jsx)(h,{size:e,className:b,label:f})}}},31714:(a,b,c)=>{"use strict";c.d(b,{Sc:()=>i,getCachedSettings:()=>h});class d{constructor(a){this.cache=new Map,this.ttlMs=a}get(a){let b=this.cache.get(a);if(b)return Date.now()>b.expiresAt?void this.cache.delete(a):b.value}set(a,b){this.cache.set(a,{value:b,expiresAt:Date.now()+this.ttlMs})}invalidate(a){a?this.cache.delete(a):this.cache.clear()}}let e=new d(5e3),f=new d(3e4),g=new d(5e3);async function h(){let a=e.get("settings");if(a)return a;let{getSettings:b}=await Promise.all([c.e(23969),c.e(9679)]).then(c.bind(c,9679)),d=await b();return e.set("settings",d),d}function i(a){a&&"settings"!==a||e.invalidate(),a&&"pricing"!==a||f.invalidate(),a&&"connections"!==a||g.invalidate()}new d(5e3)},31846:(a,b,c)=>{"use strict";function d(...a){return a.filter(Boolean).join(" ").replace(/\s+/g," ").trim()}c.d(b,{cn:()=>d})},32444:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ThemeProvider.tsx","ThemeProvider")},39710:(a,b,c)=>{Promise.resolve().then(c.bind(c,97507))},39948:(a,b,c)=>{"use strict";c.d(b,{Dp:()=>x,eF:()=>w,k3:()=>o,k6:()=>n,lR:()=>v,mG:()=>r});var d=c(87550),e=c.n(d),f=c(33873),g=c.n(f),h=c(29021),i=c.n(h),j=c(77044),k=c(954);let l=0,m=new Set(["1","true","yes","on"]);function n(){var a=process.env.DB_BACKUP_MAX_FILES;if(!a)return 20;let b=Number.parseInt(a,10);return Number.isInteger(b)&&b>0?b:20}function o(){var a=process.env.DB_BACKUP_RETENTION_DAYS;if(void 0===a)return 0;let b=Number.parseInt(a,10);return Number.isInteger(b)&&b>=0?b:0}function p(){return j.NJ||g().join(j.nJ,"db_backups")}function q(a){if(!i().existsSync(a))return[];let b=new Map;for(let c of i().readdirSync(a)){let d;if(!c.startsWith("db_"))continue;let e=c.endsWith("-wal")||c.endsWith("-shm")?c.slice(0,-4):c.endsWith("-journal")?c.slice(0,-8):c,f=g().join(a,c);try{d=i().statSync(f)}catch{continue}let h=b.get(e)||{base:e,hasPrimary:!1,primaryMtimeMs:0,latestMtimeMs:0,files:[]};h.files.push(c),h.latestMtimeMs=Math.max(h.latestMtimeMs,d.mtimeMs),c===e&&c.endsWith(".sqlite")&&(h.hasPrimary=!0,h.primaryMtimeMs=d.mtimeMs),b.set(e,h)}return[...b.values()]}function r(a){let b=p();if(!i().existsSync(b))return{deletedBackupFamilies:0,deletedFiles:0,keptBackupFamilies:0,maxFiles:a?.maxFiles??n(),retentionDays:a?.retentionDays??o()};let c=Math.max(1,a?.maxFiles??n()),d=Math.max(0,a?.retentionDays??o()),e=d>0?Date.now()-24*d*36e5:0,f=q(b),h=new Set(f.filter(a=>a.hasPrimary).sort((a,b)=>b.primaryMtimeMs-a.primaryMtimeMs).slice(0,c).map(a=>a.base)),j=0,k=0;for(let a of f){let c=a.hasPrimary&&!h.has(a.base),f=d>0&&a.latestMtimeMs<e,l=!a.hasPrimary;if(c||f||l)for(let c of(j+=1,a.files))try{i().unlinkSync(g().join(b,c)),k+=1}catch{}}return{deletedBackupFamilies:j,deletedFiles:k,keptBackupFamilies:q(b).filter(a=>a.hasPrimary).length,maxFiles:c,retentionDays:d}}function s(){if("u">typeof process&&(void 0!==process.env.VITEST||process.argv.some(a=>a.includes("test"))))return!0;let a=process.env.DISABLE_SQLITE_AUTO_BACKUP;return!!a&&m.has(a.trim().toLowerCase())}function t(a){return new Promise(b=>setTimeout(b,a))}async function u(a,b){let c=Math.max(1,b?.maxAttempts??10),d=new Set(b?.retryableCodes??["EBUSY","EPERM"]),e=Math.max(0,b?.baseDelayMs??100);for(let b=0;b<c;b++)try{i().existsSync(a)&&i().unlinkSync(a);return}catch(f){let a=f&&"object"==typeof f&&"code"in f?f.code:"";if("ENOENT"===a)return;if(d.has(String(a))&&b<c-1)await t(e*(b+1));else throw f}}function v(a="auto"){try{if(j.I8||j.m1||!j.oh||!i().existsSync(j.oh)||"manual"!==a&&s())return null;let b=i().statSync(j.oh);if(b.size<4096)return console.warn(`[DB] Backup SKIPPED — DB too small (${b.size}B)`),null;let c=Date.now();if("manual"!==a&&"pre-restore"!==a&&c-l<36e5)return null;l=c;let d=p();if(i().existsSync(d)||i().mkdirSync(d,{recursive:!0}),"manual"!==a&&"pre-restore"!==a){let a=i().readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();if(a.length>0){let c=a[a.length-1],e=i().statSync(g().join(d,c));if(e.size>4096&&b.size<.5*e.size)return console.warn(`[DB] Backup SKIPPED — DB shrank from ${e.size}B to ${b.size}B`),null}}let e=new Date().toISOString().replace(/[:.]/g,"-"),f=g().join(d,`db_${e}_${a}.sqlite`);return(0,j.sm)().backup(f).then(()=>{console.log(`[DB] Backup created: ${f} (${b.size} bytes)`),r()}).catch(a=>{let b=a instanceof Error?a.message:String(a);console.error("[DB] Backup failed:",b)}),{filename:g().basename(f),size:b.size}}catch(a){return console.error("[DB] Backup failed:",a instanceof Error?a.message:String(a)),null}}async function w(){let a=p();try{if(!i().existsSync(a))return[];return i().readdirSync(a).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort().reverse().map(b=>{let c=g().join(a,b),d=i().statSync(c),f=b.match(/^db_(.+?)_([^.]+)\.sqlite$/),h=f?f[2]:"unknown",j=0;try{let a=new(e())(c,{readonly:!0}),b=a.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get();j=b?.cnt||0,a.close()}catch{}return{id:b,filename:b,createdAt:d.mtime.toISOString(),size:d.size,reason:h,connectionCount:j}})}catch{return[]}}async function x(a){let b=p();if(!a.startsWith("db_")||!a.endsWith(".sqlite")||a.includes(g().sep)||a.includes("/"))throw Error("Invalid backup ID");let c=g().resolve(b,a);if(!c.startsWith(g().resolve(b)+g().sep)&&c!==g().resolve(b))throw Error("Invalid backup ID: path traversal detected");if(!i().existsSync(c))throw Error(`Backup not found: ${a}`);try{let a=new(e())(c,{readonly:!0}),b=a.pragma("integrity_check");if(a.close(),b[0]?.integrity_check!=="ok")throw Error("Backup integrity check failed")}catch(b){if(b instanceof Error&&"Backup integrity check failed"===b.message)throw b;let a=b instanceof Error?b.message:String(b);throw Error(`Backup file is corrupt: ${a}`)}if(!s()){l=0;let a=p();if(j.oh&&i().existsSync(j.oh)&&i().statSync(j.oh).size>=4096){i().existsSync(a)||i().mkdirSync(a,{recursive:!0});let b=g().join(a,`db_${new Date().toISOString().replace(/[:.]/g,"-")}_pre-restore.sqlite`),c=(0,j.sm)();await c.backup(b),l=Date.now()}}(0,j.jX)(),(0,k.U)();let d=j.oh;if(!d)throw Error("SQLITE_FILE is unavailable in local backup restore");for(let a of(await t(500),[d,`${d}-wal`,`${d}-shm`,`${d}-journal`]))a&&await u(a);i().copyFileSync(c,d);let f=(0,j.sm)(),h=f.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get()?.cnt||0,m=f.prepare("SELECT COUNT(*) as cnt FROM provider_nodes").get()?.cnt||0,n=f.prepare("SELECT COUNT(*) as cnt FROM combos").get()?.cnt||0,o=f.prepare("SELECT COUNT(*) as cnt FROM api_keys").get()?.cnt||0;return console.log(`[DB] Restored backup: ${a} (${h} connections)`),{restored:!0,backupId:a,connectionCount:h,nodeCount:m,comboCount:n,apiKeyCount:o}}},44438:(a,b,c)=>{Promise.resolve().then(c.bind(c,64385))},47336:(a,b,c)=>{"use strict";c.d(b,{v:()=>d,B:()=>e});let d={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:"3.7.3"},e={storageKey:"theme",defaultTheme:"system"}},47695:(a,b,c)=>{"use strict";c.d(b,{A:()=>i,F:()=>h});var d=c(31417),e=c(300),f=c(47336);let g=(0,d.v)()((0,e.Zr)((a,b)=>({theme:f.B.defaultTheme,colorTheme:"coral",customColor:"#3b82f6",setTheme:b=>{a({theme:b})},setColorTheme:c=>{a({colorTheme:c}),b().customColor},setCustomColorTheme:b=>{let c=function(a){let b=(a||"").trim(),c=b.startsWith("#")?b:`#${b}`;return/^#([0-9a-fA-F]{6})$/.test(c)?c.toLowerCase():"#3b82f6"}(b);a({colorTheme:"custom",customColor:c})},toggleTheme:()=>{let c="dark"===b().theme?"light":"dark";a({theme:c})},initTheme:()=>{let{theme:a,colorTheme:c,customColor:d}=b()}}),{name:f.B.storageKey})),h={coral:"#e54d5e",blue:"#3b82f6",red:"#ef4444",green:"#22c55e",violet:"#8b5cf6",orange:"#f97316",cyan:"#06b6d4"},i=g},60548:(a,b,c)=>{Promise.resolve().then(c.bind(c,65909))},61135:()=>{},64385:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/error.tsx","default")},65909:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(48249),e=c(22746);function f(){return(0,d.jsx)(e.PageLoading,{message:"Loading OmniRoute..."})}},67045:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-bg text-text-main font-[system-ui,-apple-system,sans-serif] text-center m-0",children:(0,d.jsxs)("main",{role:"alert","aria-live":"assertive",className:"flex flex-col items-center",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4","aria-hidden":"true",children:"⚠️"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-[15px] text-text-muted max-w-[400px] leading-relaxed mb-6",children:"An unexpected error occurred. This has been logged and our team will investigate."}),!1,(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row gap-3",children:[(0,d.jsx)("button",{onClick:b,"aria-label":"Retry loading the page",className:"px-8 py-3 rounded-[10px] text-white border-none text-sm font-semibold cursor-pointer transition-transform duration-200 motion-reduce:transition-none motion-reduce:transform-none shadow-warm hover:-translate-y-0.5 bg-gradient-to-br from-primary to-primary-hover focus:outline-2 focus:outline-offset-2 focus:outline-primary",children:"Try Again"}),(0,d.jsx)("a",{href:"/status",className:"px-8 py-3 rounded-[10px] text-sm font-semibold border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Open system status",children:"System Status"})]})]})})})}},69199:(a,b,c)=>{Promise.resolve().then(c.bind(c,86392)),Promise.resolve().then(c.bind(c,32444))},73857:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(48249),e=c(2116),f=c.n(e);function g(){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-bg text-text-main text-center",role:"main","aria-labelledby":"not-found-title",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-primary to-primary-hover bg-clip-text text-transparent","aria-hidden":"true",children:"404"}),(0,d.jsx)("h1",{id:"not-found-title",className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-text-muted max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row items-center gap-3",children:[(0,d.jsx)(f(),{href:"/dashboard",className:"px-8 py-3 rounded-xl text-white text-sm font-medium no-underline transition-all duration-200 motion-reduce:transition-none shadow-warm hover:-translate-y-0.5 bg-gradient-to-br from-primary to-primary-hover hover:shadow-elevated focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Return to dashboard",children:"Go to Dashboard"}),(0,d.jsx)(f(),{href:"/status",className:"px-8 py-3 rounded-xl text-sm font-medium no-underline border border-border hover:bg-bg-alt transition-colors duration-200 motion-reduce:transition-none focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Open system status page",children:"System Status"})]})]})}},75146:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249);c(67484);var e=c(47695);function f({children:a}){let{initTheme:b}=(0,e.A)();return(0,d.jsx)(d.Fragment,{children:a})}},76160:(a,b,c)=>{Promise.resolve().then(c.bind(c,73857))},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>n,generateMetadata:()=>m});var d=c(5735),e=c(50609),f=c.n(e);c(61135);var g=c(32444),h=c(68625),i=c(62026),j=c(28440),k=c(83750),l=c(9679);async function m(){let a=await (0,l.getSettings)(),b=a?.instanceName||"OmniRoute";return{title:`${b} — AI Gateway for Multi-Provider LLMs`,description:"OmniRoute is an AI gateway for multi-provider LLMs. One endpoint for all your AI providers.",icons:{icon:a?.customFaviconUrl||a?.customFaviconBase64?"/api/settings/favicon":"/favicon.svg",apple:"/apple-touch-icon.svg"}}}async function n({children:a}){let b=await (0,i.A)(),c=await (0,j.A)(),e=k.rB.includes(b);return(0,d.jsxs)("html",{lang:b,dir:e?"rtl":"ltr",suppressHydrationWarning:!0,children:[(0,d.jsxs)("head",{children:[(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),(0,d.jsx)("link",{href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap",rel:"stylesheet"}),(0,d.jsx)("script",{dangerouslySetInnerHTML:{__html:`
2
2
  try {
3
3
  const stored = localStorage.getItem('theme');
4
4
  const parsed = stored ? JSON.parse(stored) : null;