omniroute 2.2.7 → 2.2.9

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 (241) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +30 -30
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  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-log/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/cli-tools/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  29. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/.well-known/agent.json/route_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/_global-error.html +2 -2
  44. package/app/.next/server/app/_global-error.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  46. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  47. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  48. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  49. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  50. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  51. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/a2a/route_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/api/a2a/status/route_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/a2a/tasks/[id]/route_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/api/a2a/tasks/route_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/api/acp/agents/route_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  66. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  68. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  70. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  72. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  74. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  76. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  78. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  81. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  86. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
  88. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/combos/auto/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  105. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/mcp/audit/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/mcp/audit/stats/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/mcp/sse/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/mcp/stream/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/models/openrouter-catalog/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/models/route.js +1 -1
  121. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  123. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  134. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/provider-models/route.js +1 -1
  137. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/providers/route.js +1 -1
  146. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/rate-limits/route.js +1 -1
  151. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/usage/quota/route.js +1 -1
  188. package/app/.next/server/app/api/usage/quota/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  203. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  207. package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
  208. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  209. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app/docs/page.js +1 -1
  212. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  213. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  214. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  215. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  216. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  218. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  219. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  220. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  221. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  222. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  223. package/app/.next/server/app-paths-manifest.json +30 -30
  224. package/app/.next/server/chunks/1308.js +1 -1
  225. package/app/.next/server/chunks/2767.js +1 -1
  226. package/app/.next/server/chunks/2901.js +2 -2
  227. package/app/.next/server/chunks/7889.js +1 -1
  228. package/app/.next/server/chunks/8252.js +1 -1
  229. package/app/.next/server/chunks/8907.js +1 -1
  230. package/app/.next/server/pages/500.html +2 -2
  231. package/app/.next/server/server-reference-manifest.js +1 -1
  232. package/app/.next/server/server-reference-manifest.json +1 -1
  233. package/app/.next/static/chunks/{5846-53cd6c08e430000f.js → 5846-8e1f453716b806e2.js} +1 -1
  234. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-ee3b3c7b9ecbad30.js +1 -0
  235. package/app/.next/static/css/582ee19bc38ed4de.css +1 -0
  236. package/app/package.json +4 -3
  237. package/package.json +4 -3
  238. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-3c3feb78cfbe855c.js +0 -1
  239. package/app/.next/static/css/cdfb5e35aff0fead.css +0 -1
  240. /package/app/.next/static/{x1cP1OFEBq9SF6sjujo4h → nykkDoQvjzB4lMnpiBw6C}/_buildManifest.js +0 -0
  241. /package/app/.next/static/{x1cP1OFEBq9SF6sjujo4h → nykkDoQvjzB4lMnpiBw6C}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=1308,exports.ids=[293,1308,4163],exports.modules={1308:(a,b,c)=>{c.d(b,{$E:()=>r,Eo:()=>A,Kr:()=>x,UE:()=>y,YO:()=>t,getAllRateLimitStatus:()=>z,mg:()=>q,rh:()=>p});var d=c(57217),e=c.n(d);c(74163);var f=c(83596),g=c(60293);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}let j=new Map,k=new Set,l={},m=null,n=!1,o={maxConcurrent:10,minTime:0,reservoir:null,reservoirRefreshAmount:null,reservoirRefreshInterval:null};async function p(){if(!n){n=!0;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,22901)),b=await a(),d=0,l=0,m=0;for(let a of b){let b=h(a),c="string"==typeof b.id?b.id:"",n="string"==typeof b.provider?b.provider:"",o=!0===b.isActive,p=!0===b.rateLimitProtection,q=i(b.customRpm,0),r=i(b.customTpm,0);if(c&&n){if(q>0||r>0){k.add(c),m++;let a=`${n}:${c}`,b=q>0?q:g.DEFAULT_API_LIMITS.requestsPerMinute,d=Math.max(0,Math.floor(6e4/b)-10);j.has(a)||j.set(a,new(e())({maxConcurrent:g.DEFAULT_API_LIMITS.concurrentRequests,minTime:d,reservoir:b,reservoirRefreshAmount:b,reservoirRefreshInterval:6e4,id:a}))}else if(p)k.add(c),d++;else if("apikey"===(0,f.oQ)(n)&&o){k.add(c),l++;let a=`${n}:${c}`;j.has(a)||j.set(a,new(e())({maxConcurrent:g.DEFAULT_API_LIMITS.concurrentRequests,minTime:g.DEFAULT_API_LIMITS.minTimeBetweenRequests,reservoir:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshAmount:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshInterval:6e4,id:a}))}}}(d>0||l>0||m>0)&&console.log(`🛡️ [RATE-LIMIT] Loaded ${d} explicit + ${l} auto-enabled + ${m} custom rpm/tpm protection(s)`),await B()}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function q(a){k.add(a)}function r(a){for(let[b]of(k.delete(a),j))if(b.includes(a)){let a=j.get(b);a?.disconnect(),j.delete(b)}}function s(a,b,c=null){let d=c?`${a}:${b}:${c}`:`${a}:${b}`;if(!j.has(d)){let a=new(e())({...o,id:d});a.on("queued",()=>{let b=a.counts();b.QUEUED>0&&console.log(`⏳ [RATE-LIMIT] ${d} — ${b.QUEUED} request(s) queued, ${b.RUNNING} running`)}),j.set(d,a)}return j.get(d)}async function t(a,b,c,d){return k.has(b)?s(a,b,null).schedule(d):d()}let u={limit:"x-ratelimit-limit-requests",remaining:"x-ratelimit-remaining-requests",reset:"x-ratelimit-reset-requests",limitTokens:"x-ratelimit-limit-tokens",remainingTokens:"x-ratelimit-remaining-tokens",resetTokens:"x-ratelimit-reset-tokens",retryAfter:"retry-after",overLimit:"x-ratelimit-over-limit"},v={limit:"anthropic-ratelimit-requests-limit",remaining:"anthropic-ratelimit-requests-remaining",reset:"anthropic-ratelimit-requests-reset",limitTokens:"anthropic-ratelimit-input-tokens-limit",remainingTokens:"anthropic-ratelimit-input-tokens-remaining",resetTokens:"anthropic-ratelimit-input-tokens-reset",retryAfter:"retry-after"};function w(a){if(!a)return null;let b=a.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+)s)?(?:(\d+)ms)?$/);if(b){let[,a,c,d,e]=b;return(3600*parseInt(a||0)+60*parseInt(c||0)+parseInt(d||0))*1e3+parseInt(e||0)}let c=parseFloat(a);if(!isNaN(c)&&c>0)return c>17e8?Math.max(0,1e3*c-Date.now()):1e3*c;try{let b=new Date(a);if(!isNaN(b.getTime()))return Math.max(0,b.getTime()-Date.now())}catch{}return null}function x(a,b,d,e,f=null){if(!k.has(b)||!d)return;let g=s(a,b,null),h="claude"===a||"anthropic"===a?v:u,i=a=>"function"==typeof d.get?d.get(a):d[a]||null,j=parseInt(i(h.limit)),n=parseInt(i(h.remaining)),o=i(h.reset),p=i(h.retryAfter),q=i(u.overLimit);if(429===e){let c=w(p)||6e4;console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — 429 received, pausing for ${Math.ceil(c/1e3)}s`),g.updateSettings({reservoir:0,reservoirRefreshAmount:j||60,reservoirRefreshInterval:c});return}if("yes"===q){console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — near capacity, slowing down`),g.updateSettings({minTime:200});return}if(!isNaN(j)&&j>0){var r,t,y;let d=w(o)||6e4,e={minTime:Math.max(0,Math.floor(6e4/j)-10)};!isNaN(n)&&(n<.1*j?(e.reservoir=n,e.reservoirRefreshAmount=j,e.reservoirRefreshInterval=d,console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — ${n}/${j} remaining, throttling`)):n>.5*j&&(e.minTime=0,e.reservoir=null,e.reservoirRefreshAmount=null,e.reservoirRefreshInterval=null)),g.updateSettings(e),r=a,t=b,y={limit:j,remaining:n,minTime:e.minTime},l[`${r}:${t}`]={...y,provider:r,connectionId:t,lastUpdated:Date.now()},m||(m=setTimeout(async()=>{m=null;try{let{updateSettings:a}=await Promise.resolve().then(c.bind(c,9679));await a({learnedRateLimits:JSON.stringify(l)}),console.log(`💾 [RATE-LIMIT] Persisted learned limits for ${Object.keys(l).length} provider(s)`)}catch(a){console.error("[RATE-LIMIT] Failed to persist learned limits:",a.message)}},6e4))}}function y(a,b){let c=`${a}:${b}`,d=j.get(c);if(!d)return{enabled:k.has(b),active:!1,queued:0,running:0};let e=d.counts();return{enabled:k.has(b),active:!0,queued:e.QUEUED||0,running:e.RUNNING||0,executing:e.EXECUTING||0,done:e.DONE||0}}function z(){let a={};for(let[b,c]of j){let d=c.counts();a[b]={queued:d.QUEUED||0,running:d.RUNNING||0,executing:d.EXECUTING||0}}return a}function A(){return{...l}}async function B(){try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,9679)),b=await a(),d=b?.learnedRateLimits;if("string"!=typeof d||0===d.trim().length)return;let e=h(JSON.parse(d)),f=0;for(let[a,b]of Object.entries(e)){let c=h(b),d=i(c.lastUpdated,0);if(d>0&&Date.now()-d>864e5)continue;let e="string"==typeof c.connectionId?c.connectionId:"",g="string"==typeof c.provider?c.provider:"",m=i(c.limit,0),n=i(c.remaining,0),o=i(c.minTime,0);if(l[a]={provider:g,connectionId:e,lastUpdated:d,...m>0?{limit:m}:{},...n>=0?{remaining:n}:{},...o>=0?{minTime:o}:{}},e&&k.has(e)){let b=j.get(a);if(b&&m>0){let a=o||Math.max(0,Math.floor(6e4/m)-10);b.updateSettings({minTime:a}),f++}}}f>0&&console.log(`📥 [RATE-LIMIT] Restored ${f} learned rate limit(s) from persistence`)}catch(a){console.error("[RATE-LIMIT] Failed to load persisted limits:",a.message)}}},60293:(a,b,c)=>{c.d(b,{$V:()=>n,EQ:()=>u,Co:()=>m,Bm:()=>w,DEFAULT_API_LIMITS:()=>y,O:()=>t,Uc:()=>p,eo:()=>q,LY:()=>s,MT:()=>j,gx:()=>r,NA:()=>o,xq:()=>l,PROVIDER_PROFILES:()=>x,QS:()=>v,C8:()=>z,TH:()=>k});var d=c(29021),e=c(33873);let f=["clientId","clientSecret","tokenUrl","authUrl","refreshUrl"],g=0,h=null;var i=c(83596);let j=parseInt(process.env.FETCH_TIMEOUT_MS||"120000",10),k=parseInt(process.env.STREAM_IDLE_TIMEOUT_MS||"60000",10),l=(0,i.Z0)();!function(a){let b;if(h&&Date.now()-g<6e4)return;let c=(b=process.env.DATA_DIR||(0,e.join)(process.cwd(),"data"),(0,e.join)(b,"provider-credentials.json"));if(!(0,d.existsSync)(c))return h||console.log("[CREDENTIALS] No external credentials file found, using defaults."),h=a,g=Date.now();try{let b=(0,d.readFileSync)(c,"utf-8"),e=JSON.parse(b),g=0;for(let[b,c]of Object.entries(e)){if(!a[b]){console.log(`[CREDENTIALS] Warning: unknown provider "${b}" in credentials file, skipping.`);continue}if(!c||"object"!=typeof c){console.log(`[CREDENTIALS] Warning: provider "${b}" value must be an object, got ${typeof c}. Skipping.`);continue}for(let d of f)void 0!==c[d]&&(a[b][d]=c[d],g++)}let i=null!==h;console.log(`[CREDENTIALS] ${i?"Reloaded":"Loaded"} external credentials: ${g} field(s) from ${c}`)}catch(a){console.log(`[CREDENTIALS] Error reading credentials file: ${a.message}. Using defaults.`)}h=a,g=Date.now()}(l);let m="You are Claude Code, Anthropic's official CLI for Claude.",n="Please ignore the following [ignore]You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**[/ignore]",o={google:{token:"https://oauth2.googleapis.com/token",auth:"https://accounts.google.com/o/oauth2/auth"},openai:{token:"https://auth.openai.com/oauth/token",auth:"https://auth.openai.com/oauth/authorize"},anthropic:{token:"https://console.anthropic.com/v1/oauth/token",auth:"https://console.anthropic.com/v1/oauth/authorize"},qwen:{token:"https://chat.qwen.ai/api/v1/oauth2/token",auth:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{token:"https://iflow.cn/oauth/token",auth:"https://iflow.cn/oauth"},github:{token:"https://github.com/login/oauth/access_token",auth:"https://github.com/login/oauth/authorize",deviceCode:"https://github.com/login/device/code"}},p=64e3,q=32e3,r={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},s={[r.BAD_REQUEST]:{type:"invalid_request_error",code:"bad_request"},[r.UNAUTHORIZED]:{type:"authentication_error",code:"invalid_api_key"},[r.FORBIDDEN]:{type:"permission_error",code:"insufficient_quota"},[r.NOT_FOUND]:{type:"invalid_request_error",code:"model_not_found"},[r.RATE_LIMITED]:{type:"rate_limit_error",code:"rate_limit_exceeded"},[r.SERVER_ERROR]:{type:"server_error",code:"internal_server_error"},[r.BAD_GATEWAY]:{type:"server_error",code:"bad_gateway"},[r.SERVICE_UNAVAILABLE]:{type:"server_error",code:"service_unavailable"},[r.GATEWAY_TIMEOUT]:{type:"server_error",code:"gateway_timeout"}},t={[r.BAD_REQUEST]:"Bad request",[r.UNAUTHORIZED]:"Invalid API key provided",[r.FORBIDDEN]:"You exceeded your current quota",[r.NOT_FOUND]:"Model not found",[r.RATE_LIMITED]:"Rate limit exceeded",[r.SERVER_ERROR]:"Internal server error",[r.BAD_GATEWAY]:"Bad gateway - upstream provider error",[r.SERVICE_UNAVAILABLE]:"Service temporarily unavailable",[r.GATEWAY_TIMEOUT]:"Gateway timeout"},u={base:1e3,max:12e4,maxLevel:15},v={QUOTA_EXHAUSTED:"quota_exhausted",RATE_LIMIT_EXCEEDED:"rate_limit_exceeded",MODEL_CAPACITY:"model_capacity",SERVER_ERROR:"server_error",AUTH_ERROR:"auth_error",UNKNOWN:"unknown"},w={unauthorized:12e4,paymentRequired:12e4,notFound:12e4,transientInitial:5e3,transientMax:6e4,transient:5e3,requestNotAllowed:5e3,rateLimit:12e4,serviceUnavailable:2e3,authExpired:12e4},x={oauth:{transientCooldown:5e3,rateLimitCooldown:6e4,maxBackoffLevel:8,circuitBreakerThreshold:3,circuitBreakerReset:6e4},apikey:{transientCooldown:3e3,rateLimitCooldown:0,maxBackoffLevel:5,circuitBreakerThreshold:5,circuitBreakerReset:3e4}},y={requestsPerMinute:100,minTimeBetweenRequests:200,concurrentRequests:10},z=["Please write a 5-10 word title for the following conversation:"]},74163:(a,b,c)=>{c.d(b,{AO:()=>m,Qo:()=>p,R7:()=>i,T_:()=>f,UY:()=>o,getAllModelLockouts:()=>j,hk:()=>l,vp:()=>n});var d=c(60293),e=c(83596);function f(a){let b=(0,e.oQ)(a);return d.PROVIDER_PROFILES[b]??d.PROVIDER_PROFILES.apikey}let g=new Map,h=null;function i(a,b,c,d,e){if(!c)return;if(!h)try{h=setInterval(()=>{let a=Date.now();for(let[b,c]of g)a>c.until&&g.delete(b)},15e3),"object"==typeof h&&"unref"in h&&h.unref?.()}catch{}let f=`${a}:${b}:${c}`;g.set(f,{reason:d,until:Date.now()+e,lockedAt:Date.now()})}function j(){let a=Date.now(),b=[];for(let[c,d]of g)if(a<=d.until){let[e,f,g]=c.split(":");b.push({provider:e,connectionId:f,model:g,reason:d.reason,remainingMs:d.until-a})}return b}function k(a=0){return Math.min(d.EQ.base*Math.pow(2,a),d.EQ.max)}function l(a,b,c=0,e=null,g=null){if(b){let a="string"==typeof b?b:JSON.stringify(b),e=a.toLowerCase();if(e.includes("no credentials"))return{shouldFallback:!0,cooldownMs:d.Bm.notFound,reason:d.QS.AUTH_ERROR};if(e.includes("request not allowed"))return{shouldFallback:!0,cooldownMs:d.Bm.requestNotAllowed,reason:d.QS.RATE_LIMIT_EXCEEDED};if(e.includes("rate limit")||e.includes("too many requests")||e.includes("quota exceeded")||e.includes("capacity")||e.includes("overloaded")){let b=Math.min(c+1,d.EQ.maxLevel),e=function(a){if(!a)return d.QS.UNKNOWN;let b=String(a).toLowerCase();return b.includes("quota exceeded")||b.includes("quota depleted")||b.includes("billing")?d.QS.QUOTA_EXHAUSTED:b.includes("rate limit")||b.includes("too many requests")||b.includes("rate_limit")?d.QS.RATE_LIMIT_EXCEEDED:b.includes("capacity")||b.includes("overloaded")||b.includes("resource exhausted")?d.QS.MODEL_CAPACITY:b.includes("unauthorized")||b.includes("invalid api key")||b.includes("authentication")?d.QS.AUTH_ERROR:b.includes("server error")||b.includes("internal error")?d.QS.SERVER_ERROR:d.QS.UNKNOWN}(a);return{shouldFallback:!0,cooldownMs:k(c),newBackoffLevel:b,reason:e}}}if(a===d.gx.UNAUTHORIZED)return{shouldFallback:!0,cooldownMs:d.Bm.unauthorized,reason:d.QS.AUTH_ERROR};if(a===d.gx.PAYMENT_REQUIRED||a===d.gx.FORBIDDEN)return{shouldFallback:!0,cooldownMs:d.Bm.paymentRequired,reason:d.QS.QUOTA_EXHAUSTED};if(a===d.gx.NOT_FOUND)return{shouldFallback:!0,cooldownMs:d.Bm.notFound,reason:d.QS.UNKNOWN};if(a===d.gx.RATE_LIMITED){let a=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:!0,cooldownMs:k(c),newBackoffLevel:a,reason:d.QS.RATE_LIMIT_EXCEEDED}}if([d.gx.NOT_ACCEPTABLE,d.gx.REQUEST_TIMEOUT,d.gx.SERVER_ERROR,d.gx.BAD_GATEWAY,d.gx.SERVICE_UNAVAILABLE,d.gx.GATEWAY_TIMEOUT].includes(a)){let a=g?f(g):null,b=a?.transientCooldown??d.Bm.transientInitial,e=a?.maxBackoffLevel??d.EQ.maxLevel;return{shouldFallback:!0,cooldownMs:Math.min(b*Math.pow(2,c),d.Bm.transientMax),newBackoffLevel:Math.min(c+1,e),reason:d.QS.SERVER_ERROR}}return a===d.gx.BAD_REQUEST?{shouldFallback:!1,cooldownMs:0,reason:d.QS.UNKNOWN}:{shouldFallback:!0,cooldownMs:d.Bm.transient,reason:d.QS.UNKNOWN}}function m(a){return!!a&&new Date(a).getTime()>Date.now()}function n(a){return new Date(Date.now()+a).toISOString()}function o(a){let b=null,c=Date.now();for(let d of a){if(!d.rateLimitedUntil)continue;let a=new Date(d.rateLimitedUntil).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function p(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}}};
1
+ "use strict";exports.id=1308,exports.ids=[293,1308,4163],exports.modules={1308:(a,b,c)=>{c.d(b,{$E:()=>s,Eo:()=>B,Kr:()=>y,UE:()=>z,YO:()=>u,getAllRateLimitStatus:()=>A,mg:()=>r,rh:()=>q});var d=c(57217),e=c.n(d);c(74163);var f=c(83596),g=c(60293);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}let j=new Map,k=new Set,l={},m=null,n=!1,o=parseInt(process.env.RATE_LIMIT_MAX_WAIT_MS||"120000",10),p={maxConcurrent:10,minTime:0,reservoir:null,reservoirRefreshAmount:null,reservoirRefreshInterval:null,maxWait:o};async function q(){if(!n){n=!0;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,22901)),b=await a(),d=0,l=0,m=0;for(let a of b){let b=h(a),c="string"==typeof b.id?b.id:"",n="string"==typeof b.provider?b.provider:"",p=!0===b.isActive,q=!0===b.rateLimitProtection,r=i(b.customRpm,0),s=i(b.customTpm,0);if(c&&n){if(r>0||s>0){k.add(c),m++;let a=`${n}:${c}`,b=r>0?r:g.DEFAULT_API_LIMITS.requestsPerMinute,d=Math.max(0,Math.floor(6e4/b)-10);j.has(a)||j.set(a,new(e())({maxConcurrent:g.DEFAULT_API_LIMITS.concurrentRequests,minTime:d,reservoir:b,reservoirRefreshAmount:b,reservoirRefreshInterval:6e4,maxWait:o,id:a}))}else if(q)k.add(c),d++;else if("apikey"===(0,f.oQ)(n)&&p){k.add(c),l++;let a=`${n}:${c}`;j.has(a)||j.set(a,new(e())({maxConcurrent:g.DEFAULT_API_LIMITS.concurrentRequests,minTime:g.DEFAULT_API_LIMITS.minTimeBetweenRequests,reservoir:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshAmount:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshInterval:6e4,maxWait:o,id:a}))}}}(d>0||l>0||m>0)&&console.log(`🛡️ [RATE-LIMIT] Loaded ${d} explicit + ${l} auto-enabled + ${m} custom rpm/tpm protection(s)`),await C()}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function r(a){k.add(a)}function s(a){for(let[b]of(k.delete(a),j))if(b.includes(a)){let a=j.get(b);a?.disconnect(),j.delete(b)}}function t(a,b,c=null){let d=c?`${a}:${b}:${c}`:`${a}:${b}`;if(!j.has(d)){let a=new(e())({...p,id:d});a.on("queued",()=>{let b=a.counts();b.QUEUED>0&&console.log(`⏳ [RATE-LIMIT] ${d} — ${b.QUEUED} request(s) queued, ${b.RUNNING} running`)}),j.set(d,a)}return j.get(d)}async function u(a,b,c,d){return k.has(b)?t(a,b,null).schedule(d):d()}let v={limit:"x-ratelimit-limit-requests",remaining:"x-ratelimit-remaining-requests",reset:"x-ratelimit-reset-requests",limitTokens:"x-ratelimit-limit-tokens",remainingTokens:"x-ratelimit-remaining-tokens",resetTokens:"x-ratelimit-reset-tokens",retryAfter:"retry-after",overLimit:"x-ratelimit-over-limit"},w={limit:"anthropic-ratelimit-requests-limit",remaining:"anthropic-ratelimit-requests-remaining",reset:"anthropic-ratelimit-requests-reset",limitTokens:"anthropic-ratelimit-input-tokens-limit",remainingTokens:"anthropic-ratelimit-input-tokens-remaining",resetTokens:"anthropic-ratelimit-input-tokens-reset",retryAfter:"retry-after"};function x(a){if(!a)return null;let b=a.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+)s)?(?:(\d+)ms)?$/);if(b){let[,a,c,d,e]=b;return(3600*parseInt(a||0)+60*parseInt(c||0)+parseInt(d||0))*1e3+parseInt(e||0)}let c=parseFloat(a);if(!isNaN(c)&&c>0)return c>17e8?Math.max(0,1e3*c-Date.now()):1e3*c;try{let b=new Date(a);if(!isNaN(b.getTime()))return Math.max(0,b.getTime()-Date.now())}catch{}return null}function y(a,b,d,e,f=null){if(!k.has(b)||!d)return;let g=t(a,b,null),h="claude"===a||"anthropic"===a?w:v,i=a=>"function"==typeof d.get?d.get(a):d[a]||null,j=parseInt(i(h.limit)),n=parseInt(i(h.remaining)),o=i(h.reset),p=i(h.retryAfter),q=i(v.overLimit);if(429===e){let c=x(p)||6e4;console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — 429 received, pausing for ${Math.ceil(c/1e3)}s`),g.updateSettings({reservoir:0,reservoirRefreshAmount:j||60,reservoirRefreshInterval:c});return}if("yes"===q){console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — near capacity, slowing down`),g.updateSettings({minTime:200});return}if(!isNaN(j)&&j>0){var r,s,u;let d=x(o)||6e4,e={minTime:Math.max(0,Math.floor(6e4/j)-10)};!isNaN(n)&&(n<.1*j?(e.reservoir=n,e.reservoirRefreshAmount=j,e.reservoirRefreshInterval=d,console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — ${n}/${j} remaining, throttling`)):n>.5*j&&(e.minTime=0,e.reservoir=null,e.reservoirRefreshAmount=null,e.reservoirRefreshInterval=null)),g.updateSettings(e),r=a,s=b,u={limit:j,remaining:n,minTime:e.minTime},l[`${r}:${s}`]={...u,provider:r,connectionId:s,lastUpdated:Date.now()},m||(m=setTimeout(async()=>{m=null;try{let{updateSettings:a}=await Promise.resolve().then(c.bind(c,9679));await a({learnedRateLimits:JSON.stringify(l)}),console.log(`💾 [RATE-LIMIT] Persisted learned limits for ${Object.keys(l).length} provider(s)`)}catch(a){console.error("[RATE-LIMIT] Failed to persist learned limits:",a.message)}},6e4))}}function z(a,b){let c=`${a}:${b}`,d=j.get(c);if(!d)return{enabled:k.has(b),active:!1,queued:0,running:0};let e=d.counts();return{enabled:k.has(b),active:!0,queued:e.QUEUED||0,running:e.RUNNING||0,executing:e.EXECUTING||0,done:e.DONE||0}}function A(){let a={};for(let[b,c]of j){let d=c.counts();a[b]={queued:d.QUEUED||0,running:d.RUNNING||0,executing:d.EXECUTING||0}}return a}function B(){return{...l}}async function C(){try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,9679)),b=await a(),d=b?.learnedRateLimits;if("string"!=typeof d||0===d.trim().length)return;let e=h(JSON.parse(d)),f=0;for(let[a,b]of Object.entries(e)){let c=h(b),d=i(c.lastUpdated,0);if(d>0&&Date.now()-d>864e5)continue;let e="string"==typeof c.connectionId?c.connectionId:"",g="string"==typeof c.provider?c.provider:"",m=i(c.limit,0),n=i(c.remaining,0),o=i(c.minTime,0);if(l[a]={provider:g,connectionId:e,lastUpdated:d,...m>0?{limit:m}:{},...n>=0?{remaining:n}:{},...o>=0?{minTime:o}:{}},e&&k.has(e)){let b=j.get(a);if(b&&m>0){let a=o||Math.max(0,Math.floor(6e4/m)-10);b.updateSettings({minTime:a}),f++}}}f>0&&console.log(`📥 [RATE-LIMIT] Restored ${f} learned rate limit(s) from persistence`)}catch(a){console.error("[RATE-LIMIT] Failed to load persisted limits:",a.message)}}},60293:(a,b,c)=>{c.d(b,{$V:()=>n,EQ:()=>u,Co:()=>m,Bm:()=>w,DEFAULT_API_LIMITS:()=>y,O:()=>t,Uc:()=>p,eo:()=>q,LY:()=>s,MT:()=>j,gx:()=>r,NA:()=>o,xq:()=>l,PROVIDER_PROFILES:()=>x,QS:()=>v,C8:()=>z,TH:()=>k});var d=c(29021),e=c(33873);let f=["clientId","clientSecret","tokenUrl","authUrl","refreshUrl"],g=0,h=null;var i=c(83596);let j=parseInt(process.env.FETCH_TIMEOUT_MS||"120000",10),k=parseInt(process.env.STREAM_IDLE_TIMEOUT_MS||"60000",10),l=(0,i.Z0)();!function(a){let b;if(h&&Date.now()-g<6e4)return;let c=(b=process.env.DATA_DIR||(0,e.join)(process.cwd(),"data"),(0,e.join)(b,"provider-credentials.json"));if(!(0,d.existsSync)(c))return h||console.log("[CREDENTIALS] No external credentials file found, using defaults."),h=a,g=Date.now();try{let b=(0,d.readFileSync)(c,"utf-8"),e=JSON.parse(b),g=0;for(let[b,c]of Object.entries(e)){if(!a[b]){console.log(`[CREDENTIALS] Warning: unknown provider "${b}" in credentials file, skipping.`);continue}if(!c||"object"!=typeof c){console.log(`[CREDENTIALS] Warning: provider "${b}" value must be an object, got ${typeof c}. Skipping.`);continue}for(let d of f)void 0!==c[d]&&(a[b][d]=c[d],g++)}let i=null!==h;console.log(`[CREDENTIALS] ${i?"Reloaded":"Loaded"} external credentials: ${g} field(s) from ${c}`)}catch(a){console.log(`[CREDENTIALS] Error reading credentials file: ${a.message}. Using defaults.`)}h=a,g=Date.now()}(l);let m="You are Claude Code, Anthropic's official CLI for Claude.",n="Please ignore the following [ignore]You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**[/ignore]",o={google:{token:"https://oauth2.googleapis.com/token",auth:"https://accounts.google.com/o/oauth2/auth"},openai:{token:"https://auth.openai.com/oauth/token",auth:"https://auth.openai.com/oauth/authorize"},anthropic:{token:"https://console.anthropic.com/v1/oauth/token",auth:"https://console.anthropic.com/v1/oauth/authorize"},qwen:{token:"https://chat.qwen.ai/api/v1/oauth2/token",auth:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{token:"https://iflow.cn/oauth/token",auth:"https://iflow.cn/oauth"},github:{token:"https://github.com/login/oauth/access_token",auth:"https://github.com/login/oauth/authorize",deviceCode:"https://github.com/login/device/code"}},p=64e3,q=32e3,r={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},s={[r.BAD_REQUEST]:{type:"invalid_request_error",code:"bad_request"},[r.UNAUTHORIZED]:{type:"authentication_error",code:"invalid_api_key"},[r.FORBIDDEN]:{type:"permission_error",code:"insufficient_quota"},[r.NOT_FOUND]:{type:"invalid_request_error",code:"model_not_found"},[r.RATE_LIMITED]:{type:"rate_limit_error",code:"rate_limit_exceeded"},[r.SERVER_ERROR]:{type:"server_error",code:"internal_server_error"},[r.BAD_GATEWAY]:{type:"server_error",code:"bad_gateway"},[r.SERVICE_UNAVAILABLE]:{type:"server_error",code:"service_unavailable"},[r.GATEWAY_TIMEOUT]:{type:"server_error",code:"gateway_timeout"}},t={[r.BAD_REQUEST]:"Bad request",[r.UNAUTHORIZED]:"Invalid API key provided",[r.FORBIDDEN]:"You exceeded your current quota",[r.NOT_FOUND]:"Model not found",[r.RATE_LIMITED]:"Rate limit exceeded",[r.SERVER_ERROR]:"Internal server error",[r.BAD_GATEWAY]:"Bad gateway - upstream provider error",[r.SERVICE_UNAVAILABLE]:"Service temporarily unavailable",[r.GATEWAY_TIMEOUT]:"Gateway timeout"},u={base:1e3,max:12e4,maxLevel:15},v={QUOTA_EXHAUSTED:"quota_exhausted",RATE_LIMIT_EXCEEDED:"rate_limit_exceeded",MODEL_CAPACITY:"model_capacity",SERVER_ERROR:"server_error",AUTH_ERROR:"auth_error",UNKNOWN:"unknown"},w={unauthorized:12e4,paymentRequired:12e4,notFound:12e4,transientInitial:5e3,transientMax:6e4,transient:5e3,requestNotAllowed:5e3,rateLimit:12e4,serviceUnavailable:2e3,authExpired:12e4},x={oauth:{transientCooldown:5e3,rateLimitCooldown:6e4,maxBackoffLevel:8,circuitBreakerThreshold:3,circuitBreakerReset:6e4},apikey:{transientCooldown:3e3,rateLimitCooldown:0,maxBackoffLevel:5,circuitBreakerThreshold:5,circuitBreakerReset:3e4}},y={requestsPerMinute:100,minTimeBetweenRequests:200,concurrentRequests:10},z=["Please write a 5-10 word title for the following conversation:"]},74163:(a,b,c)=>{c.d(b,{AO:()=>m,Qo:()=>p,R7:()=>i,T_:()=>f,UY:()=>o,getAllModelLockouts:()=>j,hk:()=>l,vp:()=>n});var d=c(60293),e=c(83596);function f(a){let b=(0,e.oQ)(a);return d.PROVIDER_PROFILES[b]??d.PROVIDER_PROFILES.apikey}let g=new Map,h=null;function i(a,b,c,d,e){if(!c)return;if(!h)try{h=setInterval(()=>{let a=Date.now();for(let[b,c]of g)a>c.until&&g.delete(b)},15e3),"object"==typeof h&&"unref"in h&&h.unref?.()}catch{}let f=`${a}:${b}:${c}`;g.set(f,{reason:d,until:Date.now()+e,lockedAt:Date.now()})}function j(){let a=Date.now(),b=[];for(let[c,d]of g)if(a<=d.until){let[e,f,g]=c.split(":");b.push({provider:e,connectionId:f,model:g,reason:d.reason,remainingMs:d.until-a})}return b}function k(a=0){return Math.min(d.EQ.base*Math.pow(2,a),d.EQ.max)}function l(a,b,c=0,e=null,g=null){if(b){let a="string"==typeof b?b:JSON.stringify(b),e=a.toLowerCase();if(e.includes("no credentials"))return{shouldFallback:!0,cooldownMs:d.Bm.notFound,reason:d.QS.AUTH_ERROR};if(e.includes("request not allowed"))return{shouldFallback:!0,cooldownMs:d.Bm.requestNotAllowed,reason:d.QS.RATE_LIMIT_EXCEEDED};if(e.includes("rate limit")||e.includes("too many requests")||e.includes("quota exceeded")||e.includes("capacity")||e.includes("overloaded")){let b=Math.min(c+1,d.EQ.maxLevel),e=function(a){if(!a)return d.QS.UNKNOWN;let b=String(a).toLowerCase();return b.includes("quota exceeded")||b.includes("quota depleted")||b.includes("billing")?d.QS.QUOTA_EXHAUSTED:b.includes("rate limit")||b.includes("too many requests")||b.includes("rate_limit")?d.QS.RATE_LIMIT_EXCEEDED:b.includes("capacity")||b.includes("overloaded")||b.includes("resource exhausted")?d.QS.MODEL_CAPACITY:b.includes("unauthorized")||b.includes("invalid api key")||b.includes("authentication")?d.QS.AUTH_ERROR:b.includes("server error")||b.includes("internal error")?d.QS.SERVER_ERROR:d.QS.UNKNOWN}(a);return{shouldFallback:!0,cooldownMs:k(c),newBackoffLevel:b,reason:e}}}if(a===d.gx.UNAUTHORIZED)return{shouldFallback:!0,cooldownMs:d.Bm.unauthorized,reason:d.QS.AUTH_ERROR};if(a===d.gx.PAYMENT_REQUIRED||a===d.gx.FORBIDDEN)return{shouldFallback:!0,cooldownMs:d.Bm.paymentRequired,reason:d.QS.QUOTA_EXHAUSTED};if(a===d.gx.NOT_FOUND)return{shouldFallback:!0,cooldownMs:d.Bm.notFound,reason:d.QS.UNKNOWN};if(a===d.gx.RATE_LIMITED){let a=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:!0,cooldownMs:k(c),newBackoffLevel:a,reason:d.QS.RATE_LIMIT_EXCEEDED}}if([d.gx.NOT_ACCEPTABLE,d.gx.REQUEST_TIMEOUT,d.gx.SERVER_ERROR,d.gx.BAD_GATEWAY,d.gx.SERVICE_UNAVAILABLE,d.gx.GATEWAY_TIMEOUT].includes(a)){let a=g?f(g):null,b=a?.transientCooldown??d.Bm.transientInitial,e=a?.maxBackoffLevel??d.EQ.maxLevel;return{shouldFallback:!0,cooldownMs:Math.min(b*Math.pow(2,c),d.Bm.transientMax),newBackoffLevel:Math.min(c+1,e),reason:d.QS.SERVER_ERROR}}return a===d.gx.BAD_REQUEST?{shouldFallback:!1,cooldownMs:0,reason:d.QS.UNKNOWN}:{shouldFallback:!0,cooldownMs:d.Bm.transient,reason:d.QS.UNKNOWN}}function m(a){return!!a&&new Date(a).getTime()>Date.now()}function n(a){return new Date(Date.now()+a).toISOString()}function o(a){let b=null,c=Date.now();for(let d of a){if(!d.rateLimitedUntil)continue;let a=new Date(d.rateLimitedUntil).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function p(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=2767,exports.ids=[2767],exports.modules={1308:(a,b,c)=>{c.d(b,{$E:()=>r,Eo:()=>A,Kr:()=>x,UE:()=>y,YO:()=>t,getAllRateLimitStatus:()=>z,mg:()=>q,rh:()=>p});var d=c(57217),e=c.n(d);c(74163);var f=c(83596),g=c(60293);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}let j=new Map,k=new Set,l={},m=null,n=!1,o={maxConcurrent:10,minTime:0,reservoir:null,reservoirRefreshAmount:null,reservoirRefreshInterval:null};async function p(){if(!n){n=!0;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,22901)),b=await a(),d=0,l=0,m=0;for(let a of b){let b=h(a),c="string"==typeof b.id?b.id:"",n="string"==typeof b.provider?b.provider:"",o=!0===b.isActive,p=!0===b.rateLimitProtection,q=i(b.customRpm,0),r=i(b.customTpm,0);if(c&&n){if(q>0||r>0){k.add(c),m++;let a=`${n}:${c}`,b=q>0?q:g.DEFAULT_API_LIMITS.requestsPerMinute,d=Math.max(0,Math.floor(6e4/b)-10);j.has(a)||j.set(a,new(e())({maxConcurrent:g.DEFAULT_API_LIMITS.concurrentRequests,minTime:d,reservoir:b,reservoirRefreshAmount:b,reservoirRefreshInterval:6e4,id:a}))}else if(p)k.add(c),d++;else if("apikey"===(0,f.oQ)(n)&&o){k.add(c),l++;let a=`${n}:${c}`;j.has(a)||j.set(a,new(e())({maxConcurrent:g.DEFAULT_API_LIMITS.concurrentRequests,minTime:g.DEFAULT_API_LIMITS.minTimeBetweenRequests,reservoir:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshAmount:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshInterval:6e4,id:a}))}}}(d>0||l>0||m>0)&&console.log(`🛡️ [RATE-LIMIT] Loaded ${d} explicit + ${l} auto-enabled + ${m} custom rpm/tpm protection(s)`),await B()}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function q(a){k.add(a)}function r(a){for(let[b]of(k.delete(a),j))if(b.includes(a)){let a=j.get(b);a?.disconnect(),j.delete(b)}}function s(a,b,c=null){let d=c?`${a}:${b}:${c}`:`${a}:${b}`;if(!j.has(d)){let a=new(e())({...o,id:d});a.on("queued",()=>{let b=a.counts();b.QUEUED>0&&console.log(`⏳ [RATE-LIMIT] ${d} — ${b.QUEUED} request(s) queued, ${b.RUNNING} running`)}),j.set(d,a)}return j.get(d)}async function t(a,b,c,d){return k.has(b)?s(a,b,null).schedule(d):d()}let u={limit:"x-ratelimit-limit-requests",remaining:"x-ratelimit-remaining-requests",reset:"x-ratelimit-reset-requests",limitTokens:"x-ratelimit-limit-tokens",remainingTokens:"x-ratelimit-remaining-tokens",resetTokens:"x-ratelimit-reset-tokens",retryAfter:"retry-after",overLimit:"x-ratelimit-over-limit"},v={limit:"anthropic-ratelimit-requests-limit",remaining:"anthropic-ratelimit-requests-remaining",reset:"anthropic-ratelimit-requests-reset",limitTokens:"anthropic-ratelimit-input-tokens-limit",remainingTokens:"anthropic-ratelimit-input-tokens-remaining",resetTokens:"anthropic-ratelimit-input-tokens-reset",retryAfter:"retry-after"};function w(a){if(!a)return null;let b=a.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+)s)?(?:(\d+)ms)?$/);if(b){let[,a,c,d,e]=b;return(3600*parseInt(a||0)+60*parseInt(c||0)+parseInt(d||0))*1e3+parseInt(e||0)}let c=parseFloat(a);if(!isNaN(c)&&c>0)return c>17e8?Math.max(0,1e3*c-Date.now()):1e3*c;try{let b=new Date(a);if(!isNaN(b.getTime()))return Math.max(0,b.getTime()-Date.now())}catch{}return null}function x(a,b,d,e,f=null){if(!k.has(b)||!d)return;let g=s(a,b,null),h="claude"===a||"anthropic"===a?v:u,i=a=>"function"==typeof d.get?d.get(a):d[a]||null,j=parseInt(i(h.limit)),n=parseInt(i(h.remaining)),o=i(h.reset),p=i(h.retryAfter),q=i(u.overLimit);if(429===e){let c=w(p)||6e4;console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — 429 received, pausing for ${Math.ceil(c/1e3)}s`),g.updateSettings({reservoir:0,reservoirRefreshAmount:j||60,reservoirRefreshInterval:c});return}if("yes"===q){console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — near capacity, slowing down`),g.updateSettings({minTime:200});return}if(!isNaN(j)&&j>0){var r,t,y;let d=w(o)||6e4,e={minTime:Math.max(0,Math.floor(6e4/j)-10)};!isNaN(n)&&(n<.1*j?(e.reservoir=n,e.reservoirRefreshAmount=j,e.reservoirRefreshInterval=d,console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — ${n}/${j} remaining, throttling`)):n>.5*j&&(e.minTime=0,e.reservoir=null,e.reservoirRefreshAmount=null,e.reservoirRefreshInterval=null)),g.updateSettings(e),r=a,t=b,y={limit:j,remaining:n,minTime:e.minTime},l[`${r}:${t}`]={...y,provider:r,connectionId:t,lastUpdated:Date.now()},m||(m=setTimeout(async()=>{m=null;try{let{updateSettings:a}=await Promise.resolve().then(c.bind(c,9679));await a({learnedRateLimits:JSON.stringify(l)}),console.log(`💾 [RATE-LIMIT] Persisted learned limits for ${Object.keys(l).length} provider(s)`)}catch(a){console.error("[RATE-LIMIT] Failed to persist learned limits:",a.message)}},6e4))}}function y(a,b){let c=`${a}:${b}`,d=j.get(c);if(!d)return{enabled:k.has(b),active:!1,queued:0,running:0};let e=d.counts();return{enabled:k.has(b),active:!0,queued:e.QUEUED||0,running:e.RUNNING||0,executing:e.EXECUTING||0,done:e.DONE||0}}function z(){let a={};for(let[b,c]of j){let d=c.counts();a[b]={queued:d.QUEUED||0,running:d.RUNNING||0,executing:d.EXECUTING||0}}return a}function A(){return{...l}}async function B(){try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,9679)),b=await a(),d=b?.learnedRateLimits;if("string"!=typeof d||0===d.trim().length)return;let e=h(JSON.parse(d)),f=0;for(let[a,b]of Object.entries(e)){let c=h(b),d=i(c.lastUpdated,0);if(d>0&&Date.now()-d>864e5)continue;let e="string"==typeof c.connectionId?c.connectionId:"",g="string"==typeof c.provider?c.provider:"",m=i(c.limit,0),n=i(c.remaining,0),o=i(c.minTime,0);if(l[a]={provider:g,connectionId:e,lastUpdated:d,...m>0?{limit:m}:{},...n>=0?{remaining:n}:{},...o>=0?{minTime:o}:{}},e&&k.has(e)){let b=j.get(a);if(b&&m>0){let a=o||Math.max(0,Math.floor(6e4/m)-10);b.updateSettings({minTime:a}),f++}}}f>0&&console.log(`📥 [RATE-LIMIT] Restored ${f} learned rate limit(s) from persistence`)}catch(a){console.error("[RATE-LIMIT] Failed to load persisted limits:",a.message)}}},6327:(a,b,c)=>{function d({onDisconnect:a,log:b,provider:c,model:e}={}){let f=new AbortController,g=Date.now(),h=!1,i=null,j=a=>{let b=Date.now()-g,d=c?.toUpperCase()||"UNKNOWN";console.log(`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 🌊 [STREAM] ${d} | ${e||"unknown"} | ${b}ms | ${a}`)};return{signal:f.signal,startTime:g,isConnected:()=>!h,handleDisconnect:(b="client_closed")=>{h||(h=!0,j(`disconnect: ${b}`),i=setTimeout(()=>{f.abort()},500),a?.({reason:b,duration:Date.now()-g}))},handleComplete:()=>{!h&&(h=!0,j("complete"),i&&(clearTimeout(i),i=null))},handleError:a=>{(i&&(clearTimeout(i),i=null),a instanceof Error&&"AbortError"===a.name)?j("aborted"):a instanceof Error?j(`error: ${a.message}`):j("error: unknown")},abort:()=>f.abort()}}function e(a,b,c){var d;let e,f;return d={readable:a.body.pipeThrough(b),writable:{getWriter:()=>({abort:()=>{}})}},e=d.readable.getReader(),f=d.writable.getWriter(),new ReadableStream({async pull(a){if(!c.isConnected())return void a.close();try{let{done:b,value:d}=await e.read();if(b){c.handleComplete(),a.close();return}a.enqueue(d)}catch(b){c.handleError(b),a.error(b)}},cancel(a){c.handleDisconnect(a||"cancelled"),e.cancel(),f.abort()}})}c.d(b,{Jb:()=>e,jd:()=>d})},8550:(a,b,c)=>{c.d(b,{M:()=>d});function d(a,b){if(!a||"object"!=typeof a)return null;if(a.usage&&"object"==typeof a.usage&&void 0!==a.usage.prompt_tokens)return{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens};let c=a.response?.usage||a.usage;return c&&"object"==typeof c&&(void 0!==c.input_tokens||void 0!==c.output_tokens)?{prompt_tokens:c.input_tokens||0,completion_tokens:c.output_tokens||0,cached_tokens:c.cache_read_input_tokens,cache_creation_input_tokens:c.cache_creation_input_tokens,reasoning_tokens:c.reasoning_tokens||c.output_tokens_details?.reasoning_tokens}:a.usage&&"object"==typeof a.usage&&(void 0!==a.usage.input_tokens||void 0!==a.usage.output_tokens)?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usageMetadata&&"object"==typeof a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null}},9315:(a,b,c)=>{c.d(b,{Cb:()=>n,IL:()=>q,QS:()=>r,RE:()=>p,TZ:()=>s,gR:()=>m,yv:()=>o});var d=c(77598),e=c.n(d),f=c(44594),g=c(42910);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim().length>0){let c=Number(a);return Number.isFinite(c)?c:b}return b}let j=null,k={hits:0,misses:0,tokensSaved:0};function l(){return j||(j=new f.q({maxSize:parseInt(process.env.SEMANTIC_CACHE_MAX_SIZE||"100",10),maxBytes:parseInt(process.env.SEMANTIC_CACHE_MAX_BYTES||String(4194304),10),defaultTTL:parseInt(process.env.SEMANTIC_CACHE_TTL_MS||"1800000",10)})),j}function m(a,b,c=0,d=1){var f;let g=JSON.stringify({model:a,messages:Array.isArray(f=b)?f.map(a=>({role:a.role||"user",content:"string"==typeof a.content?a.content:JSON.stringify(a.content)})):[],temperature:c,top_p:d});return e().createHash("sha256").update(g).digest("hex")}function n(a){let b=l().get(a);if(b)return k.hits++,k.tokensSaved+=b.tokensSaved||0,b.response;try{let b=(0,g.sm)(),c=b.prepare("SELECT response, tokens_saved FROM semantic_cache WHERE signature = ? AND expires_at > datetime('now')").get(a);if(c){let d=h(c),e="string"==typeof d.response?d.response:null;if(!e)return k.misses++,null;let f=JSON.parse(e),g=i(d.tokens_saved,0);return l().set(a,{response:f,tokensSaved:g}),b.prepare("UPDATE semantic_cache SET hit_count = hit_count + 1 WHERE signature = ?").run(a),k.hits++,k.tokensSaved+=g,f}}catch{}return k.misses++,null}function o(a,b,c,d=0,f=36e5){let h=parseInt(process.env.SEMANTIC_CACHE_TTL_MS||String(f),10);l().set(a,{response:c,tokensSaved:d},h);try{let f=(0,g.sm)(),i=e().randomUUID(),j=a.slice(0,16),k=new Date().toISOString(),l=new Date(Date.now()+h).toISOString();f.prepare(`INSERT OR REPLACE INTO semantic_cache (id, signature, model, prompt_hash, response, tokens_saved, hit_count, created_at, expires_at)
1
+ "use strict";exports.id=2767,exports.ids=[2767],exports.modules={1308:(a,b,c)=>{c.d(b,{$E:()=>s,Eo:()=>B,Kr:()=>y,UE:()=>z,YO:()=>u,getAllRateLimitStatus:()=>A,mg:()=>r,rh:()=>q});var d=c(57217),e=c.n(d);c(74163);var f=c(83596),g=c(60293);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}let j=new Map,k=new Set,l={},m=null,n=!1,o=parseInt(process.env.RATE_LIMIT_MAX_WAIT_MS||"120000",10),p={maxConcurrent:10,minTime:0,reservoir:null,reservoirRefreshAmount:null,reservoirRefreshInterval:null,maxWait:o};async function q(){if(!n){n=!0;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,22901)),b=await a(),d=0,l=0,m=0;for(let a of b){let b=h(a),c="string"==typeof b.id?b.id:"",n="string"==typeof b.provider?b.provider:"",p=!0===b.isActive,q=!0===b.rateLimitProtection,r=i(b.customRpm,0),s=i(b.customTpm,0);if(c&&n){if(r>0||s>0){k.add(c),m++;let a=`${n}:${c}`,b=r>0?r:g.DEFAULT_API_LIMITS.requestsPerMinute,d=Math.max(0,Math.floor(6e4/b)-10);j.has(a)||j.set(a,new(e())({maxConcurrent:g.DEFAULT_API_LIMITS.concurrentRequests,minTime:d,reservoir:b,reservoirRefreshAmount:b,reservoirRefreshInterval:6e4,maxWait:o,id:a}))}else if(q)k.add(c),d++;else if("apikey"===(0,f.oQ)(n)&&p){k.add(c),l++;let a=`${n}:${c}`;j.has(a)||j.set(a,new(e())({maxConcurrent:g.DEFAULT_API_LIMITS.concurrentRequests,minTime:g.DEFAULT_API_LIMITS.minTimeBetweenRequests,reservoir:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshAmount:g.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshInterval:6e4,maxWait:o,id:a}))}}}(d>0||l>0||m>0)&&console.log(`🛡️ [RATE-LIMIT] Loaded ${d} explicit + ${l} auto-enabled + ${m} custom rpm/tpm protection(s)`),await C()}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function r(a){k.add(a)}function s(a){for(let[b]of(k.delete(a),j))if(b.includes(a)){let a=j.get(b);a?.disconnect(),j.delete(b)}}function t(a,b,c=null){let d=c?`${a}:${b}:${c}`:`${a}:${b}`;if(!j.has(d)){let a=new(e())({...p,id:d});a.on("queued",()=>{let b=a.counts();b.QUEUED>0&&console.log(`⏳ [RATE-LIMIT] ${d} — ${b.QUEUED} request(s) queued, ${b.RUNNING} running`)}),j.set(d,a)}return j.get(d)}async function u(a,b,c,d){return k.has(b)?t(a,b,null).schedule(d):d()}let v={limit:"x-ratelimit-limit-requests",remaining:"x-ratelimit-remaining-requests",reset:"x-ratelimit-reset-requests",limitTokens:"x-ratelimit-limit-tokens",remainingTokens:"x-ratelimit-remaining-tokens",resetTokens:"x-ratelimit-reset-tokens",retryAfter:"retry-after",overLimit:"x-ratelimit-over-limit"},w={limit:"anthropic-ratelimit-requests-limit",remaining:"anthropic-ratelimit-requests-remaining",reset:"anthropic-ratelimit-requests-reset",limitTokens:"anthropic-ratelimit-input-tokens-limit",remainingTokens:"anthropic-ratelimit-input-tokens-remaining",resetTokens:"anthropic-ratelimit-input-tokens-reset",retryAfter:"retry-after"};function x(a){if(!a)return null;let b=a.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+)s)?(?:(\d+)ms)?$/);if(b){let[,a,c,d,e]=b;return(3600*parseInt(a||0)+60*parseInt(c||0)+parseInt(d||0))*1e3+parseInt(e||0)}let c=parseFloat(a);if(!isNaN(c)&&c>0)return c>17e8?Math.max(0,1e3*c-Date.now()):1e3*c;try{let b=new Date(a);if(!isNaN(b.getTime()))return Math.max(0,b.getTime()-Date.now())}catch{}return null}function y(a,b,d,e,f=null){if(!k.has(b)||!d)return;let g=t(a,b,null),h="claude"===a||"anthropic"===a?w:v,i=a=>"function"==typeof d.get?d.get(a):d[a]||null,j=parseInt(i(h.limit)),n=parseInt(i(h.remaining)),o=i(h.reset),p=i(h.retryAfter),q=i(v.overLimit);if(429===e){let c=x(p)||6e4;console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — 429 received, pausing for ${Math.ceil(c/1e3)}s`),g.updateSettings({reservoir:0,reservoirRefreshAmount:j||60,reservoirRefreshInterval:c});return}if("yes"===q){console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — near capacity, slowing down`),g.updateSettings({minTime:200});return}if(!isNaN(j)&&j>0){var r,s,u;let d=x(o)||6e4,e={minTime:Math.max(0,Math.floor(6e4/j)-10)};!isNaN(n)&&(n<.1*j?(e.reservoir=n,e.reservoirRefreshAmount=j,e.reservoirRefreshInterval=d,console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — ${n}/${j} remaining, throttling`)):n>.5*j&&(e.minTime=0,e.reservoir=null,e.reservoirRefreshAmount=null,e.reservoirRefreshInterval=null)),g.updateSettings(e),r=a,s=b,u={limit:j,remaining:n,minTime:e.minTime},l[`${r}:${s}`]={...u,provider:r,connectionId:s,lastUpdated:Date.now()},m||(m=setTimeout(async()=>{m=null;try{let{updateSettings:a}=await Promise.resolve().then(c.bind(c,9679));await a({learnedRateLimits:JSON.stringify(l)}),console.log(`💾 [RATE-LIMIT] Persisted learned limits for ${Object.keys(l).length} provider(s)`)}catch(a){console.error("[RATE-LIMIT] Failed to persist learned limits:",a.message)}},6e4))}}function z(a,b){let c=`${a}:${b}`,d=j.get(c);if(!d)return{enabled:k.has(b),active:!1,queued:0,running:0};let e=d.counts();return{enabled:k.has(b),active:!0,queued:e.QUEUED||0,running:e.RUNNING||0,executing:e.EXECUTING||0,done:e.DONE||0}}function A(){let a={};for(let[b,c]of j){let d=c.counts();a[b]={queued:d.QUEUED||0,running:d.RUNNING||0,executing:d.EXECUTING||0}}return a}function B(){return{...l}}async function C(){try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,9679)),b=await a(),d=b?.learnedRateLimits;if("string"!=typeof d||0===d.trim().length)return;let e=h(JSON.parse(d)),f=0;for(let[a,b]of Object.entries(e)){let c=h(b),d=i(c.lastUpdated,0);if(d>0&&Date.now()-d>864e5)continue;let e="string"==typeof c.connectionId?c.connectionId:"",g="string"==typeof c.provider?c.provider:"",m=i(c.limit,0),n=i(c.remaining,0),o=i(c.minTime,0);if(l[a]={provider:g,connectionId:e,lastUpdated:d,...m>0?{limit:m}:{},...n>=0?{remaining:n}:{},...o>=0?{minTime:o}:{}},e&&k.has(e)){let b=j.get(a);if(b&&m>0){let a=o||Math.max(0,Math.floor(6e4/m)-10);b.updateSettings({minTime:a}),f++}}}f>0&&console.log(`📥 [RATE-LIMIT] Restored ${f} learned rate limit(s) from persistence`)}catch(a){console.error("[RATE-LIMIT] Failed to load persisted limits:",a.message)}}},6327:(a,b,c)=>{function d({onDisconnect:a,log:b,provider:c,model:e}={}){let f=new AbortController,g=Date.now(),h=!1,i=null,j=a=>{let b=Date.now()-g,d=c?.toUpperCase()||"UNKNOWN";console.log(`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 🌊 [STREAM] ${d} | ${e||"unknown"} | ${b}ms | ${a}`)};return{signal:f.signal,startTime:g,isConnected:()=>!h,handleDisconnect:(b="client_closed")=>{h||(h=!0,j(`disconnect: ${b}`),i=setTimeout(()=>{f.abort()},500),a?.({reason:b,duration:Date.now()-g}))},handleComplete:()=>{!h&&(h=!0,j("complete"),i&&(clearTimeout(i),i=null))},handleError:a=>{(i&&(clearTimeout(i),i=null),a instanceof Error&&"AbortError"===a.name)?j("aborted"):a instanceof Error?j(`error: ${a.message}`):j("error: unknown")},abort:()=>f.abort()}}function e(a,b,c){var d;let e,f;return d={readable:a.body.pipeThrough(b),writable:{getWriter:()=>({abort:()=>{}})}},e=d.readable.getReader(),f=d.writable.getWriter(),new ReadableStream({async pull(a){if(!c.isConnected())return void a.close();try{let{done:b,value:d}=await e.read();if(b){c.handleComplete(),a.close();return}a.enqueue(d)}catch(b){c.handleError(b),a.error(b)}},cancel(a){c.handleDisconnect(a||"cancelled"),e.cancel(),f.abort()}})}c.d(b,{Jb:()=>e,jd:()=>d})},8550:(a,b,c)=>{c.d(b,{M:()=>d});function d(a,b){if(!a||"object"!=typeof a)return null;if(a.usage&&"object"==typeof a.usage&&void 0!==a.usage.prompt_tokens)return{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens};let c=a.response?.usage||a.usage;return c&&"object"==typeof c&&(void 0!==c.input_tokens||void 0!==c.output_tokens)?{prompt_tokens:c.input_tokens||0,completion_tokens:c.output_tokens||0,cached_tokens:c.cache_read_input_tokens,cache_creation_input_tokens:c.cache_creation_input_tokens,reasoning_tokens:c.reasoning_tokens||c.output_tokens_details?.reasoning_tokens}:a.usage&&"object"==typeof a.usage&&(void 0!==a.usage.input_tokens||void 0!==a.usage.output_tokens)?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usageMetadata&&"object"==typeof a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null}},9315:(a,b,c)=>{c.d(b,{Cb:()=>n,IL:()=>q,QS:()=>r,RE:()=>p,TZ:()=>s,gR:()=>m,yv:()=>o});var d=c(77598),e=c.n(d),f=c(44594),g=c(42910);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim().length>0){let c=Number(a);return Number.isFinite(c)?c:b}return b}let j=null,k={hits:0,misses:0,tokensSaved:0};function l(){return j||(j=new f.q({maxSize:parseInt(process.env.SEMANTIC_CACHE_MAX_SIZE||"100",10),maxBytes:parseInt(process.env.SEMANTIC_CACHE_MAX_BYTES||String(4194304),10),defaultTTL:parseInt(process.env.SEMANTIC_CACHE_TTL_MS||"1800000",10)})),j}function m(a,b,c=0,d=1){var f;let g=JSON.stringify({model:a,messages:Array.isArray(f=b)?f.map(a=>({role:a.role||"user",content:"string"==typeof a.content?a.content:JSON.stringify(a.content)})):[],temperature:c,top_p:d});return e().createHash("sha256").update(g).digest("hex")}function n(a){let b=l().get(a);if(b)return k.hits++,k.tokensSaved+=b.tokensSaved||0,b.response;try{let b=(0,g.sm)(),c=b.prepare("SELECT response, tokens_saved FROM semantic_cache WHERE signature = ? AND expires_at > datetime('now')").get(a);if(c){let d=h(c),e="string"==typeof d.response?d.response:null;if(!e)return k.misses++,null;let f=JSON.parse(e),g=i(d.tokens_saved,0);return l().set(a,{response:f,tokensSaved:g}),b.prepare("UPDATE semantic_cache SET hit_count = hit_count + 1 WHERE signature = ?").run(a),k.hits++,k.tokensSaved+=g,f}}catch{}return k.misses++,null}function o(a,b,c,d=0,f=36e5){let h=parseInt(process.env.SEMANTIC_CACHE_TTL_MS||String(f),10);l().set(a,{response:c,tokensSaved:d},h);try{let f=(0,g.sm)(),i=e().randomUUID(),j=a.slice(0,16),k=new Date().toISOString(),l=new Date(Date.now()+h).toISOString();f.prepare(`INSERT OR REPLACE INTO semantic_cache (id, signature, model, prompt_hash, response, tokens_saved, hit_count, created_at, expires_at)
2
2
  VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?)`).run(i,a,b,j,JSON.stringify(c),d,k,l)}catch{}}function p(){try{return(0,g.sm)().prepare("DELETE FROM semantic_cache WHERE expires_at <= datetime('now')").run().changes}catch{return 0}}function q(){l().clear();try{(0,g.sm)().prepare("DELETE FROM semantic_cache").run()}catch{}k={hits:0,misses:0,tokensSaved:0}}function r(){let a=l().getStats(),b=0;try{let a=(0,g.sm)().prepare("SELECT COUNT(*) as count FROM semantic_cache WHERE expires_at > datetime('now')").get();b=i(h(a).count,0)}catch{}let c=k.hits+k.misses;return{memoryEntries:a.size,dbEntries:b,hits:k.hits,misses:k.misses,hitRate:c>0?(k.hits/c*100).toFixed(1):"0.0",tokensSaved:k.tokensSaved}}function s(a,b){return b?.get?.("x-omniroute-no-cache")!=="true"&&!1===a.stream&&(a.temperature??0)===0}},9686:(a,b,c)=>{c.d(b,{eU:()=>i,vN:()=>h});var d=c(27976),e=c(22901),f=c(87068);let g=f.oD;async function h(a,b){try{let c={};b.accessToken&&(c.accessToken=b.accessToken),b.refreshToken&&(c.refreshToken=b.refreshToken),b.expiresIn&&(c.expiresAt=new Date(Date.now()+1e3*b.expiresIn).toISOString(),c.expiresIn=b.expiresIn),b.providerSpecificData&&(c.providerSpecificData=b.providerSpecificData);let f=await (0,e.rj)(a,c);return d.info("TOKEN_REFRESH","Credentials updated in localDb",{connectionId:a,success:!!f}),!!f}catch(b){return d.error("TOKEN_REFRESH","Error updating credentials in localDb",{connectionId:a,error:b.message}),!1}}async function i(a,b){let c={...b};if(c.expiresAt){let b=new Date(c.expiresAt).getTime(),e=Date.now();if(b-e<g){let g;d.info("TOKEN_REFRESH","Token expiring soon, refreshing proactively",{provider:a,expiresIn:Math.round((b-e)/1e3)});let i=await (g=c,(0,f.iD)(a,g,d));i&&i.accessToken&&(await h(c.connectionId,i),c={...c,accessToken:i.accessToken,refreshToken:i.refreshToken||c.refreshToken,expiresAt:i.expiresIn?new Date(Date.now()+1e3*i.expiresIn).toISOString():c.expiresAt})}}if("github"===a&&c.providerSpecificData?.copilotTokenExpiresAt){let b=1e3*c.providerSpecificData.copilotTokenExpiresAt,e=Date.now();if(b-e<g){let g;d.info("TOKEN_REFRESH","Copilot token expiring soon, refreshing proactively",{provider:a,expiresIn:Math.round((b-e)/1e3)});let i=await (g=c.accessToken,(0,f.jR)(g,d));i&&(await h(c.connectionId,{providerSpecificData:{...c.providerSpecificData,copilotToken:i.token,copilotTokenExpiresAt:i.expiresAt}}),c.providerSpecificData={...c.providerSpecificData,copilotToken:i.token,copilotTokenExpiresAt:i.expiresAt})}}return c}},12767:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>B});var e=c(21020),f=c(13961),g=c(32113),h=c(69590),i=c(71861),j=c(17669),k=c(60293),l=c(23969),m=c(76340),n=c(27976),o=c(9686),p=c(22901),q=c(34493),r=c(26510),s=c(77458),t=c(12620),u=c(20864),v=c(82742),w=c(44057),x=c(59545),y=c(78790),z=c(70884),A=a([h]);async function B(a,b=null){let c,d=(0,x.KZ)(),g=new w.TT(d);try{g.startPhase("parse"),c=await a.json(),g.endPhase()}catch{return n.warn("CHAT","Invalid JSON body"),(0,i.yj)(k.gx.BAD_REQUEST,"Invalid JSON body")}g.startPhase("validate");let h=(0,s.Jh)(c,n);if(h.blocked)return n.warn("SANITIZER","Request blocked due to prompt injection",{detections:h.detections}),(0,i.yj)(k.gx.BAD_REQUEST,"Request rejected: suspicious content detected");h.modified&&h.sanitizedBody&&(c=h.sanitizedBody),g.endPhase(),b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let l=new URL(a.url),m=c.model,o=c.messages?.length||c.input?.length||0,q=c.tools?.length||0,r=c.reasoning_effort||c.reasoning?.effort||null;n.request("POST",`${l.pathname} | ${m} | ${o} msgs${q?` | ${q} tools`:""}${r?` | effort=${r}`:""}`);let t=a.headers.get("Authorization"),v=(0,e.Tr)(a);if(t&&v?n.debug("AUTH",`API Key: ${n.maskKey(v)}`):n.debug("AUTH","No API key provided (local mode)"),"true"===process.env.REQUIRE_API_KEY){if(!v)return n.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,i.yj)(k.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(v))return n.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,i.yj)(k.gx.UNAUTHORIZED,"Invalid API key")}if(!m)return n.warn("CHAT","Missing model"),(0,i.yj)(k.gx.BAD_REQUEST,"Missing model");g.startPhase("policy");let y=await (0,z.S)(a,m);if(y.rejection)return n.warn("POLICY",`API key policy rejected: ${m} (key=${y.apiKeyInfo?.id||"unknown"})`),y.rejection;let A=y.apiKeyInfo;g.endPhase(),g.startPhase("resolve");let D=await (0,f.$m)(m);if(D){n.info("CHAT",`Combo "${m}" [${D.strategy||"priority"}] with ${D.models.length} models`);let d=async a=>{let b=await (0,f.mA)(a),c=b.provider;if(!c)return!0;if(!(0,u.fj)(c,b.model||a))return n.debug("AVAILABILITY",`${c}/${b.model} in cooldown, skipping`),!1;let d=await (0,e.c1)(c);return!!d&&!d.allRateLimited},[h,i]=await Promise.all([(0,p.V7)().catch(()=>({})),(0,p.Uv)().catch(()=>[])]);g.endPhase();let k=await (0,j.Pr)({body:c,combo:D,handleSingleModel:(c,d)=>C(c,d,b,a,D.name,A,g),isModelAvailable:d,log:n,settings:h,allCombos:i});return(0,w.N3)(g),k}g.endPhase();let E=await C(c,m,b,a,null,A,g);return(0,w.N3)(g),E}async function C(a,b,c=null,d=null,f=null,g=null,h=null){var j,l;let m=await D(b,a);if(m.error)return m.error;let{provider:p,model:s,sourceFormat:w,targetFormat:x}=m,z=(j=p,l=s,(0,u.fj)(j,l)?(0,t.getCircuitBreaker)(j,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>n.info("CIRCUIT",`${a}: ${b} → ${c}`)}).canExecute()?null:(n.warn("CIRCUIT",`Circuit breaker OPEN for ${j}, rejecting request`),(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Provider ${j} circuit breaker is open`,30)):(n.warn("AVAILABILITY",`${j}/${l} is in cooldown, rejecting request`),(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Model ${j}/${l} is temporarily unavailable (cooldown)`,30)));if(z)return z;let A=(0,t.getCircuitBreaker)(p,{failureThreshold:5,resetTimeout:3e4,onStateChange:(a,b,c)=>n.info("CIRCUIT",`${a}: ${b} → ${c}`)}),B=d?.headers?.get("user-agent")||"",G=null,H=null,I=null;for(;;){let b=await (0,e.c1)(p,G);if(!b||b.allRateLimited)return(429===I||503===I)&&((0,u.gC)(p,s,6e4,`HTTP ${I}`),n.info("AVAILABILITY",`${p}/${s} marked unavailable — all accounts exhausted (HTTP ${I})`)),function(a,b,c,d,e,f){if(a?.allRateLimited){let b=e||a.lastError||"Unavailable",g=f||Number(a.lastErrorCode)||k.gx.SERVICE_UNAVAILABLE;return n.warn("CHAT",`[${c}/${d}] ${b} (${a.retryAfterHuman})`),(0,i.wO)(g,`[${c}/${d}] ${b}`,a.retryAfter,a.retryAfterHuman)}return b?(n.warn("CHAT","No more accounts available",{provider:c}),(0,i.yj)(f||k.gx.SERVICE_UNAVAILABLE,e||"All accounts unavailable")):(n.error("AUTH",`No credentials for provider: ${c}`),(0,i.yj)(k.gx.BAD_REQUEST,`No credentials for provider: ${c}`))}(b,G,p,s,H,I);let d=b.connectionId.slice(0,8);n.info("AUTH",`Using ${p} account: ${d}...`);let j=await (0,o.eU)(p,b),l=await F(b.connectionId),m=Date.now();h&&h.startPhase("connect");let{result:t,tlsFingerprintUsed:z}=await E({breaker:A,body:a,provider:p,model:s,refreshedCredentials:j,proxyInfo:l,log:n,clientRawRequest:c,credentials:b,apiKeyInfo:g,userAgent:B,comboName:f});h&&h.endPhase();let C=Date.now()-m;if(function({result:a,proxyInfo:b,proxyLatency:c,provider:d,model:e,sourceFormat:f,targetFormat:g,credentials:h,comboName:i,clientRawRequest:j,tlsFingerprintUsed:k=!1}){try{(0,q.pq)({status:a.success?"success":408===a.status||504===a.status?"timeout":"error",proxy:b?.proxy||null,level:b?.level||"direct",levelId:b?.levelId||null,provider:d,targetUrl:`${d}/${e}`,latencyMs:c,error:a.success?null:a.error||null,connectionId:h.connectionId,comboId:i||null,account:h.connectionId?.slice(0,8)||null,tlsFingerprint:k})}catch{}try{(0,r.MR)({provider:d,model:e,sourceFormat:f,targetFormat:g,status:a.success?"success":"error",statusCode:a.success?200:a.status||500,latency:c,endpoint:j?.endpoint||"/v1/chat/completions",connectionId:h.connectionId||null,comboName:i||null})}catch{}}({result:t,proxyInfo:l,proxyLatency:C,provider:p,model:s,sourceFormat:w,targetFormat:x,credentials:b,comboName:f,clientRawRequest:c,tlsFingerprintUsed:z}),t.success)return(0,u.DQ)(p,s),function(a,b){if(a?.id)try{let c=b.usage||{},d=((c.prompt_tokens||0)+(c.completion_tokens||0))*1e-6;d>0&&(0,y.n5)(a.id,d)}catch{}}(g,t),h&&h.startPhase("finalize"),h&&h.endPhase(),t.response;429===t.status&&(0,v.Dk)(b.connectionId,p);let{shouldFallback:D}=await (0,e.vk)(b.connectionId,t.status,t.error,p);if(D){n.warn("AUTH",`Account ${d}... unavailable (${t.status}), trying fallback`),G=b.connectionId,H=t.error,I=t.status;continue}return t.response}}async function D(a,b){let c=await (0,f.mA)(a);if(!c.provider){if("ambiguous_model"===c.errorType){let b=c.errorMessage||`Ambiguous model '${a}'. Use provider/model prefix (ex: gh/${a} or cc/${a}).`;return n.warn("CHAT",b,{model:a,candidates:c.candidateAliases||c.candidateProviders||[]}),{error:(0,i.yj)(k.gx.BAD_REQUEST,b)}}return n.warn("CHAT","Invalid model format",{model:a}),{error:(0,i.yj)(k.gx.BAD_REQUEST,"Invalid model format")}}let{provider:d,model:e}=c,h=(0,g.Tz)(b),j=l.PROVIDER_ID_TO_ALIAS[d]||d,m=(0,l.ux)(j,e)||(0,g.jJ)(d);return"responses"===c.apiFormat&&(m="openai-responses",n.info("ROUTING",`Custom model apiFormat=responses → targetFormat=openai-responses`)),a!==`${d}/${e}`?n.info("ROUTING",`${a} → ${d}/${e}`):n.info("ROUTING",`Provider: ${d}, Model: ${e}`),{provider:d,model:e,sourceFormat:h,targetFormat:m}}async function E({breaker:a,body:b,provider:c,model:d,refreshedCredentials:f,proxyInfo:g,log:j,clientRawRequest:l,credentials:p,apiKeyInfo:q,userAgent:r,comboName:s}){try{let i=()=>(0,m.jf)(g?.proxy||null,()=>(0,h.w)({body:{...b,model:`${c}/${d}`},modelInfo:{provider:c,model:d},credentials:f,log:j,clientRawRequest:l,connectionId:p.connectionId,apiKeyInfo:q,userAgent:r,comboName:s,onCredentialsRefreshed:async a=>{await (0,o.vN)(p.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(p.connectionId,p)}}));if(!g?.proxy&&(0,m.Wk)()){let b=await a.execute(async()=>(0,m.qT)(i));return{result:b.result,tlsFingerprintUsed:b.tlsFingerprintUsed}}return{result:await a.execute(i),tlsFingerprintUsed:!1}}catch(a){if(a instanceof t.ez)return n.warn("CIRCUIT",`${c} circuit open during retry: ${a.message}`),{result:{success:!1,response:(0,i.wO)(k.gx.SERVICE_UNAVAILABLE,`Provider ${c} circuit breaker is open`,Math.ceil(a.retryAfterMs/1e3)),status:k.gx.SERVICE_UNAVAILABLE},tlsFingerprintUsed:!1};throw a}}async function F(a){try{return await (0,p.YD)(a)}catch(a){return n.debug("PROXY",`Failed to resolve proxy: ${a.message}`),null}}h=(A.then?(await A)():A)[0],d()}catch(a){d(a)}})},13961:(a,b,c)=>{c.d(b,{$m:()=>h,mA:()=>g});var d=c(22901),e=c(99939);async function f(a,b){try{let c=await (0,d.uv)(a);if(!Array.isArray(c))return;let e=c.find(a=>a.id===b);return e?.apiFormat==="responses"?"responses":void 0}catch{return}}async function g(a){let b=(0,e.Xh)(a);if(b.providerAlias||b.provider){let a=b.providerAlias||b.provider,c=(await (0,d.Fh)({type:"openai-compatible"})).find(b=>b.prefix===a);if(c){let a=await f(c.id,b.model);return{provider:c.id,model:b.model,...a&&{apiFormat:a}}}let e=(await (0,d.Fh)({type:"anthropic-compatible"})).find(b=>b.prefix===a);if(e){let a=await f(e.id,b.model);return{provider:e.id,model:b.model,...a&&{apiFormat:a}}}}return b.isAlias?(0,e.js)(a,d.OM):(0,e.js)(a,null)}async function h(a){let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b:null}},20864:(a,b,c)=>{c.d(b,{DQ:()=>h,GX:()=>j,Wj:()=>i,fj:()=>f,gC:()=>g});let d=new Map;function e(a,b){return`${a}::${b}`}function f(a,b){let c=e(a,b),f=d.get(c);return!f||Date.now()-f.unavailableSince>=f.cooldownMs&&(d.delete(c),!0)}function g(a,b,c=6e4,f){let h=e(a,b);d.set(h,{provider:a,model:b,unavailableSince:Date.now(),cooldownMs:c,reason:f||"unknown"})}function h(a,b){return d.delete(e(a,b))}function i(){let a=Date.now(),b=[];for(let[c,e]of d.entries()){let f=a-e.unavailableSince;if(f>=e.cooldownMs){d.delete(c);continue}b.push({provider:e.provider,model:e.model,reason:e.reason||"unknown",remainingMs:e.cooldownMs-f,unavailableSince:new Date(e.unavailableSince).toISOString()})}return b}function j(){return i(),d.size}},26510:(a,b,c)=>{function d(){return globalThis.__translatorEvents||(globalThis.__translatorEvents=[]),globalThis.__translatorEvents}function e(a){if(!a||"object"!=typeof a)return;let b=d();b.unshift({id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),...a}),b.length>200&&(b.length=200)}function f(a=50){let b=Number(a),c=Number.isFinite(b)&&b>0?Math.min(Math.floor(b),200):50,e=d();return{events:e.slice(0,c),total:e.length}}c.d(b,{MR:()=>e,zS:()=>f})},26695:(a,b,c)=>{c.d(b,{lm:()=>g.lm,l2:()=>r,i5:()=>q,v8:()=>j});var d=c(79631),e=c(55120),f=c(19704),g=c(50101);function h(a){if(!a)return null;let b=a.trimStart();if(!b||100!==b.charCodeAt(0))return null;let c=b.slice(5).trim();if("[DONE]"===c)return{done:!0};try{return JSON.parse(c)}catch(a){return c.length>0&&console.log(`[WARN] Failed to parse SSE line (${c.length} chars): ${c.substring(0,200)}...`),null}}function i(a,b){if(b===e.h.OPENAI&&a.choices?.[0]?.delta){let b=a.choices[0].delta;return b.content&&""!==b.content||b.reasoning_content&&""!==b.reasoning_content||b.tool_calls&&b.tool_calls.length>0||a.choices[0].finish_reason||b.role}if(b===e.h.CLAUDE){let b="content_block_delta"===a.type,c=a.delta?.text&&""!==a.delta.text,d=a.delta?.thinking&&""!==a.delta.thinking,e=a.delta?.partial_json&&""!==a.delta.partial_json;return!b||!!c||!!d||!!e}if(b===e.h.GEMINI&&a.candidates?.[0]){let b=a.candidates[0];if(b.finishReason)return!0;let c=b.content?.parts;return!!c&&0!==c.length&&c.some(a=>a.text&&""!==a.text||a.functionCall||a.executableCode)}return!0}function j(a,b){return null==a?"data: null\n\n":a&&a.done?"data: [DONE]\n\n":a&&a.event&&a.data?`event: ${a.event}
3
3
  data: ${JSON.stringify(a.data)}
4
4
 
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=2901,exports.ids=[2901],exports.modules={22901:(a,b,c)=>{c.d(b,{S8:()=>P,lR:()=>f.lR,bI:()=>B,Iq:()=>Y.Iq,jd:()=>V,iE:()=>v,i0:()=>E,Lh:()=>Y.Lh,CG:()=>X,fv:()=>K,fK:()=>y,op:()=>z,Pc:()=>G,HL:()=>Z.HL,NL:()=>O,yg:()=>Y.yg,v9:()=>Y.v9,PX:()=>Y.PX,L:()=>T,Dj:()=>U,Uv:()=>S,uv:()=>N,c:()=>L,OM:()=>I,r4:()=>Z.r4,getPricingForModel:()=>Z.PS,Mc:()=>u,getProviderConnections:()=>t,Qu:()=>D,Fh:()=>C,ru:()=>Z.ru,o4:()=>Z.o4,V7:()=>Z.getSettings,Nx:()=>Z.isCloudEnabled,Oo:()=>Y.Oo,eF:()=>f.eF,BD:()=>Q,VT:()=>Z.VT,yF:()=>Z.yF,YD:()=>Z.YD,Dp:()=>f.Dp,L9:()=>M,o5:()=>J,PM:()=>Z.PM,Jg:()=>Y.Jg,oG:()=>W,KJ:()=>Z.KJ,rj:()=>x,ho:()=>F,Xx:()=>Z.updateSettings,ek:()=>Y.validateApiKey});var d=c(94755),e=c(42910),f=c(39948),g=c(55511);let h="aes-256-gcm",i="enc:v1:",j=null;function k(){if(null!==j)return j;let a=process.env.STORAGE_ENCRYPTION_KEY;return a?j=(0,g.scryptSync)(a,"omniroute-field-encryption-v1",32):null}function l(){return!!process.env.STORAGE_ENCRYPTION_KEY}function m(a){if(!a||"string"!=typeof a)return a;let b=k();if(!b||a.startsWith(i))return a;let c=(0,g.randomBytes)(16),d=(0,g.createCipheriv)(h,b,c),e=d.update(a,"utf8","hex");e+=d.final("hex");let f=d.getAuthTag().toString("hex");return`${i}${c.toString("hex")}:${e}:${f}`}function n(a){if(!a||"string"!=typeof a||!a.startsWith(i))return a;let b=k();if(!b)return console.warn("[Encryption] Found encrypted data but STORAGE_ENCRYPTION_KEY is not set. Cannot decrypt."),a;let c=a.slice(i.length).split(":");if(3!==c.length)return console.error("[Encryption] Malformed encrypted value"),a;let[d,e,f]=c;try{let a=Buffer.from(d,"hex"),c=Buffer.from(f,"hex"),i=(0,g.createDecipheriv)(h,b,a);i.setAuthTag(c);let j=i.update(e,"hex","utf8");return j+=i.final("utf8")}catch(b){return console.error("[Encryption] Decryption failed:",b instanceof Error?b.message:String(b)),a}}function o(a){return l()&&a&&(a.apiKey&&(a.apiKey=m(a.apiKey)),a.accessToken&&(a.accessToken=m(a.accessToken)),a.refreshToken&&(a.refreshToken=m(a.refreshToken)),a.idToken&&(a.idToken=m(a.idToken))),a}function p(a){return a&&l()?{...a,apiKey:n(a.apiKey),accessToken:n(a.accessToken),refreshToken:n(a.refreshToken),idToken:n(a.idToken)}:a}function q(a){return a&&"object"==typeof a?a:{}}function r(a){return"string"==typeof a?a:null}function s(a){return"number"==typeof a?a:0}async function t(a={}){let b=(0,e.sm)(),c="SELECT * FROM provider_connections",d=[],f={};return a.provider&&(d.push("provider = @provider"),f.provider=a.provider),void 0!==a.isActive&&(d.push("is_active = @isActive"),f.isActive=+!!a.isActive),d.length>0&&(c+=" WHERE "+d.join(" AND ")),c+=" ORDER BY priority ASC, updated_at DESC",b.prepare(c).all(f).map(a=>p((0,e.G6)((0,e.kB)(a))))}async function u(a){let b=(0,e.sm)().prepare("SELECT * FROM provider_connections WHERE id = ?").get(a);return b?p((0,e.G6)((0,e.kB)(b))):null}async function v(a){var b,c;let g=(0,e.sm)(),h=new Date().toISOString(),i=null;if("oauth"===a.authType&&a.email){let b=r(q(a.providerSpecificData).workspaceId);"codex"===a.provider&&b?(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND json_extract(provider_specific_data, '$.workspaceId') = ? AND email = ?").get(a.provider,b,a.email)||null)||(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND json_extract(provider_specific_data, '$.workspaceId') = ? AND (email IS NULL OR email = '')").get(a.provider,b)||null):i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND email = ?").get(a.provider,a.email)||null}else"apikey"===a.authType&&a.name&&(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'apikey' AND name = ?").get(a.provider,a.name)||null);if(i){let b=r(i.id);if(!b)return null;let c={...q((0,e.kB)(i)),...a,updatedAt:h};return w(g,b,c),(0,f.lR)("pre-write"),(0,e.G6)(c)}let j=a.name||null;if(!j&&"oauth"===a.authType)if(a.email)j=a.email;else{let b=s(q(g.prepare("SELECT COUNT(*) as cnt FROM provider_connections WHERE provider = ?").get(a.provider)).cnt);j=`Account ${b+1}`}let k=a.priority;k||(k=s(q(g.prepare("SELECT MAX(priority) as maxP FROM provider_connections WHERE provider = ?").get(a.provider)).maxP)+1);let l={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:j,priority:k,isActive:void 0===a.isActive||a.isActive,createdAt:h,updatedAt:h};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","idToken","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","lastErrorType","lastErrorSource","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","rateLimitProtection"])void 0!==a[b]&&null!==a[b]&&(l[b]=a[b]);a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(l.providerSpecificData=a.providerSpecificData),b=g,c=o({...l}),b.prepare(`
1
+ "use strict";exports.id=2901,exports.ids=[2901],exports.modules={22901:(a,b,c)=>{c.d(b,{S8:()=>P,lR:()=>f.lR,bI:()=>B,Iq:()=>Z.Iq,jd:()=>W,iE:()=>v,i0:()=>E,Lh:()=>Z.Lh,CG:()=>Y,fv:()=>K,fK:()=>y,op:()=>z,Pc:()=>G,HL:()=>$.HL,NL:()=>O,yg:()=>Z.yg,v9:()=>Z.v9,PX:()=>Z.PX,L:()=>U,Dj:()=>V,Uv:()=>T,uv:()=>N,c:()=>L,OM:()=>I,r4:()=>$.r4,getPricingForModel:()=>$.PS,Mc:()=>u,getProviderConnections:()=>t,Qu:()=>D,Fh:()=>C,ru:()=>$.ru,o4:()=>$.o4,V7:()=>$.getSettings,Nx:()=>$.isCloudEnabled,Oo:()=>Z.Oo,eF:()=>f.eF,BD:()=>Q,VT:()=>$.VT,yF:()=>$.yF,YD:()=>$.YD,Dp:()=>f.Dp,L9:()=>M,o5:()=>J,PM:()=>$.PM,Jg:()=>Z.Jg,oG:()=>X,is:()=>R,KJ:()=>$.KJ,rj:()=>x,ho:()=>F,Xx:()=>$.updateSettings,ek:()=>Z.validateApiKey});var d=c(94755),e=c(42910),f=c(39948),g=c(55511);let h="aes-256-gcm",i="enc:v1:",j=null;function k(){if(null!==j)return j;let a=process.env.STORAGE_ENCRYPTION_KEY;return a?j=(0,g.scryptSync)(a,"omniroute-field-encryption-v1",32):null}function l(){return!!process.env.STORAGE_ENCRYPTION_KEY}function m(a){if(!a||"string"!=typeof a)return a;let b=k();if(!b||a.startsWith(i))return a;let c=(0,g.randomBytes)(16),d=(0,g.createCipheriv)(h,b,c),e=d.update(a,"utf8","hex");e+=d.final("hex");let f=d.getAuthTag().toString("hex");return`${i}${c.toString("hex")}:${e}:${f}`}function n(a){if(!a||"string"!=typeof a||!a.startsWith(i))return a;let b=k();if(!b)return console.warn("[Encryption] Found encrypted data but STORAGE_ENCRYPTION_KEY is not set. Cannot decrypt."),a;let c=a.slice(i.length).split(":");if(3!==c.length)return console.error("[Encryption] Malformed encrypted value"),a;let[d,e,f]=c;try{let a=Buffer.from(d,"hex"),c=Buffer.from(f,"hex"),i=(0,g.createDecipheriv)(h,b,a);i.setAuthTag(c);let j=i.update(e,"hex","utf8");return j+=i.final("utf8")}catch(b){return console.error("[Encryption] Decryption failed:",b instanceof Error?b.message:String(b)),a}}function o(a){return l()&&a&&(a.apiKey&&(a.apiKey=m(a.apiKey)),a.accessToken&&(a.accessToken=m(a.accessToken)),a.refreshToken&&(a.refreshToken=m(a.refreshToken)),a.idToken&&(a.idToken=m(a.idToken))),a}function p(a){return a&&l()?{...a,apiKey:n(a.apiKey),accessToken:n(a.accessToken),refreshToken:n(a.refreshToken),idToken:n(a.idToken)}:a}function q(a){return a&&"object"==typeof a?a:{}}function r(a){return"string"==typeof a?a:null}function s(a){return"number"==typeof a?a:0}async function t(a={}){let b=(0,e.sm)(),c="SELECT * FROM provider_connections",d=[],f={};return a.provider&&(d.push("provider = @provider"),f.provider=a.provider),void 0!==a.isActive&&(d.push("is_active = @isActive"),f.isActive=+!!a.isActive),d.length>0&&(c+=" WHERE "+d.join(" AND ")),c+=" ORDER BY priority ASC, updated_at DESC",b.prepare(c).all(f).map(a=>p((0,e.G6)((0,e.kB)(a))))}async function u(a){let b=(0,e.sm)().prepare("SELECT * FROM provider_connections WHERE id = ?").get(a);return b?p((0,e.G6)((0,e.kB)(b))):null}async function v(a){var b,c;let g=(0,e.sm)(),h=new Date().toISOString(),i=null;if("oauth"===a.authType&&a.email){let b=r(q(a.providerSpecificData).workspaceId);"codex"===a.provider&&b?(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND json_extract(provider_specific_data, '$.workspaceId') = ? AND email = ?").get(a.provider,b,a.email)||null)||(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND json_extract(provider_specific_data, '$.workspaceId') = ? AND (email IS NULL OR email = '')").get(a.provider,b)||null):i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND email = ?").get(a.provider,a.email)||null}else"apikey"===a.authType&&a.name&&(i=g.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'apikey' AND name = ?").get(a.provider,a.name)||null);if(i){let b=r(i.id);if(!b)return null;let c={...q((0,e.kB)(i)),...a,updatedAt:h};return w(g,b,c),(0,f.lR)("pre-write"),(0,e.G6)(c)}let j=a.name||null;if(!j&&"oauth"===a.authType)if(a.email)j=a.email;else{let b=s(q(g.prepare("SELECT COUNT(*) as cnt FROM provider_connections WHERE provider = ?").get(a.provider)).cnt);j=`Account ${b+1}`}let k=a.priority;k||(k=s(q(g.prepare("SELECT MAX(priority) as maxP FROM provider_connections WHERE provider = ?").get(a.provider)).maxP)+1);let l={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:j,priority:k,isActive:void 0===a.isActive||a.isActive,createdAt:h,updatedAt:h};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","idToken","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","lastErrorType","lastErrorSource","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","rateLimitProtection"])void 0!==a[b]&&null!==a[b]&&(l[b]=a[b]);a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(l.providerSpecificData=a.providerSpecificData),b=g,c=o({...l}),b.prepare(`
2
2
  INSERT INTO provider_connections (
3
3
  id, provider, auth_type, name, email, priority, is_active,
4
4
  access_token, refresh_token, expires_at, token_expires_at,
@@ -43,4 +43,4 @@
43
43
  UPDATE provider_nodes SET type = @type, name = @name, prefix = @prefix,
44
44
  api_type = @apiType, base_url = @baseUrl, updated_at = @updatedAt
45
45
  WHERE id = @id
46
- `).run({id:a,type:g.type,name:g.name,prefix:g.prefix||null,apiType:g.apiType||null,baseUrl:g.baseUrl||null,updatedAt:g.updatedAt}),(0,f.lR)("pre-write"),g}async function G(a){let b=(0,e.sm)(),c=b.prepare("SELECT * FROM provider_nodes WHERE id = ?").get(a);return c?(b.prepare("DELETE FROM provider_nodes WHERE id = ?").run(a),(0,f.lR)("pre-write"),(0,e.kB)(c)):null}function H(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:{};return{key:"string"==typeof b.key?b.key:null,value:"string"==typeof b.value?b.value:null}}async function I(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'modelAliases'").all(),b={};for(let c of a){let{key:a,value:d}=H(c);a&&null!==d&&(b[a]=JSON.parse(d))}return b}async function J(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('modelAliases', ?, ?)").run(a,JSON.stringify(b)),(0,f.lR)("pre-write")}async function K(a){(0,e.sm)().prepare("DELETE FROM key_value WHERE namespace = 'modelAliases' AND key = ?").run(a),(0,f.lR)("pre-write")}async function L(a){let b=(0,e.sm)();if(a){let c=H(b.prepare("SELECT value FROM key_value WHERE namespace = 'mitmAlias' AND key = ?").get(a)).value;return c?JSON.parse(c):{}}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'mitmAlias'").all(),d={};for(let a of c){let{key:b,value:c}=H(a);b&&null!==c&&(d[b]=JSON.parse(c))}return d}async function M(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('mitmAlias', ?, ?)").run(a,JSON.stringify(b||{})),(0,f.lR)("pre-write")}async function N(a){let b=(0,e.sm)();if(a){let c=H(b.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a)).value;return c?JSON.parse(c):[]}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),d={};for(let a of c){let{key:b,value:c}=H(a);b&&null!==c&&(d[b]=JSON.parse(c))}return d}async function O(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),b={};for(let c of a){let{key:a,value:d}=H(c);a&&null!==d&&(b[a]=JSON.parse(d))}return b}async function P(a,b,c,d="manual",g="chat-completions",h=["chat"]){let i=(0,e.sm)(),j=H(i.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a)).value,k=j?JSON.parse(j):[],l=k.find(a=>a.id===b);if(l)return l;let m={id:b,name:c||b,source:d,apiFormat:g,supportedEndpoints:h};return k.push(m),i.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('customModels', ?, ?)").run(a,JSON.stringify(k)),(0,f.lR)("pre-write"),m}async function Q(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);if(!d)return!1;let g=H(d).value;if(!g)return!1;let h=JSON.parse(g),i=h.length,j=h.filter(a=>a.id!==b);return j.length!==i&&(0===j.length?c.prepare("DELETE FROM key_value WHERE namespace = 'customModels' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'customModels' AND key = ?").run(JSON.stringify(j),a),(0,f.lR)("pre-write"),!0)}function R(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:{};return"string"==typeof b.data?b.data:null}async function S(){return(0,e.sm)().prepare("SELECT data FROM combos ORDER BY name").all().map(a=>R(a)).filter(a=>null!==a).map(a=>JSON.parse(a))}async function T(a){let b=R((0,e.sm)().prepare("SELECT data FROM combos WHERE id = ?").get(a));return b?JSON.parse(b):null}async function U(a){let b=R((0,e.sm)().prepare("SELECT data FROM combos WHERE name = ?").get(a));return b?JSON.parse(b):null}async function V(a){let b=(0,e.sm)(),c=new Date().toISOString(),g={id:(0,d.A)(),name:a.name,models:a.models||[],strategy:a.strategy||"priority",config:a.config||{},createdAt:c,updatedAt:c};return b.prepare("INSERT INTO combos (id, name, data, created_at, updated_at) VALUES (?, ?, ?, ?, ?)").run(g.id,g.name,JSON.stringify(g),c,c),(0,f.lR)("pre-write"),g}async function W(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT data FROM combos WHERE id = ?").get(a);if(!d)return null;let g=R(d);if(!g)return null;let h={...JSON.parse(g),...b,updatedAt:new Date().toISOString()};return c.prepare("UPDATE combos SET name = ?, data = ?, updated_at = ? WHERE id = ?").run(h.name,JSON.stringify(h),h.updatedAt,a),(0,f.lR)("pre-write"),h}async function X(a){return 0!==(0,e.sm)().prepare("DELETE FROM combos WHERE id = ?").run(a).changes&&((0,f.lR)("pre-write"),!0)}var Y=c(80500),Z=c(9679)},80500:(a,b,c)=>{c.d(b,{Iq:()=>B,Jg:()=>C,Lh:()=>D,Oo:()=>G,PX:()=>x,v9:()=>F,validateApiKey:()=>E,yg:()=>y});var d=c(94755),e=c(42910),f=c(39948),g=c(954),h=c(81249);let i=!1,j=new Map,k=new Map,l=new Map,m=new Map,n=null,o=null,p=null,q=null,r=null,s=null;function t(){j.clear(),k.clear(),m.clear()}function u(a){return a&&"object"==typeof a?a:{}}function v(a){if(a.size>1e3){let b=Math.floor(200),c=0;for(let d of a.keys()){if(c++>=b)break;a.delete(d)}}}function w(a){if(!i)try{let b=a.prepare("PRAGMA table_info(api_keys)").all(),c=new Set(b.map(a=>String(a.name??"")));c.has("allowed_models")||(a.exec("ALTER TABLE api_keys ADD COLUMN allowed_models TEXT"),console.log("[DB] Added api_keys.allowed_models column")),c.has("no_log")||(a.exec("ALTER TABLE api_keys ADD COLUMN no_log INTEGER NOT NULL DEFAULT 0"),console.log("[DB] Added api_keys.no_log column")),i=!0}catch(a){console.warn("[DB] Failed to verify api_keys schema:",a instanceof Error?a.message:String(a))}if(n&&o&&p&&q&&r&&s||(n=a.prepare("SELECT * FROM api_keys ORDER BY created_at"),o=a.prepare("SELECT * FROM api_keys WHERE id = ?"),p=a.prepare("SELECT 1 FROM api_keys WHERE key = ?"),q=a.prepare("SELECT id, name, machine_id, allowed_models, no_log FROM api_keys WHERE key = ?"),r=a.prepare("INSERT INTO api_keys (id, name, key, machine_id, allowed_models, no_log, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)"),s=a.prepare("DELETE FROM api_keys WHERE id = ?")),!n||!o||!p||!q||!r||!s)throw Error("Failed to initialize API key prepared statements");return{getAllKeys:n,getKeyById:o,validateKey:p,getKeyMetadata:q,insertKey:r,deleteKey:s}}async function x(){return w((0,e.sm)()).getAllKeys.all().map(a=>{let b=u((0,e.kB)(a));return b.allowedModels=z(b.allowedModels),b.noLog=A(b.noLog),"string"==typeof b.id&&b.id.length>0&&(0,h.Ct)(b.id,!0===b.noLog),b})}async function y(a){let b=w((0,e.sm)()).getKeyById.get(a);if(!b)return null;let c=u((0,e.kB)(b));return c.allowedModels=z(c.allowedModels),c.noLog=A(c.noLog),"string"==typeof c.id&&c.id.length>0&&(0,h.Ct)(c.id,!0===c.noLog),c}function z(a){if(!a||"string"!=typeof a||""===a.trim())return[];try{let b=JSON.parse(a);return Array.isArray(b)?b.filter(a=>"string"==typeof a):[]}catch{return[]}}function A(a){return!0===a||1===a||"1"===a}async function B(a,b){if(!b)throw Error("machineId is required");let g=(0,e.sm)(),i=new Date().toISOString(),{generateApiKeyWithMachine:j}=await c.e(2286).then(c.bind(c,62286)),k=j(b),l={id:(0,d.A)(),name:a,key:k.key,machineId:b,allowedModels:[],noLog:!1,createdAt:i};return w(g).insertKey.run(l.id,l.name,l.key,l.machineId,"[]",0,l.createdAt),(0,h.Ct)(l.id,!1),(0,f.lR)("pre-write"),l}async function C(a,b){let c=(0,e.sm)();w(c);let d=Array.isArray(b)||void 0===b?{allowedModels:b||[]}:{allowedModels:b.allowedModels,noLog:b.noLog};if(void 0===d.allowedModels&&void 0===d.noLog)return!1;let g=[],i={id:a};return void 0!==d.allowedModels&&(g.push("allowed_models = @allowedModels"),i.allowedModels=JSON.stringify(d.allowedModels||[])),void 0!==d.noLog&&(g.push("no_log = @noLog"),i.noLog=+!!d.noLog),0!==c.prepare(`UPDATE api_keys SET ${g.join(", ")} WHERE id = @id`).run(i).changes&&(void 0!==d.noLog&&(0,h.Ct)(a,d.noLog),t(),(0,f.lR)("pre-write"),!0)}async function D(a){return 0!==w((0,e.sm)()).deleteKey.run(a).changes&&((0,h.Ct)(a,!1),t(),(0,f.lR)("pre-write"),!0)}async function E(a){if(!a||"string"!=typeof a)return!1;let b=Date.now(),c=j.get(a);if(c&&b-c.timestamp<6e4)return c.valid;let d=!!w((0,e.sm)()).validateKey.get(a);return d&&(v(j),j.set(a,{valid:!0,timestamp:b})),d}async function F(a){if(!a||"string"!=typeof a)return null;let b=Date.now(),c=k.get(a);if(c&&b-c.timestamp<6e4)return c.value;let d=w((0,e.sm)()).getKeyMetadata.get(a);if(!d)return null;let f=u(d),g="string"==typeof f.id?f.id:"",i="string"==typeof f.name?f.name:"",j=f.machine_id??f.machineId,l={id:g,name:i,machineId:"string"==typeof j?j:null,allowedModels:z(f.allowed_models??f.allowedModels),noLog:A(f.no_log??f.noLog)};return l.id?((0,h.Ct)(l.id,!0===l.noLog),v(k),k.set(a,{value:l,timestamp:b}),l):null}async function G(a,b){if(!a)return!0;if(!b)return!1;let c=`${a}:${b}`,d=Date.now(),e=m.get(c);if(e&&d-e.timestamp<6e4)return e.allowed;let f=await F(a);if(!f)return!1;let{allowedModels:g}=f;if(!g||0===g.length)return!0;let h=!1;for(let a of g){if(a===b){h=!0;break}if(a.endsWith("/*")){let c=a.slice(0,-2);if(b.startsWith(c+"/")||b.startsWith(c)){h=!0;break}}if(a.includes("*")&&(function(a){let b=l.get(a);if(!b){let c=a.replace(/\*/g,".*");if(b=RegExp(`^${c}$`),l.set(a,b),l.size>100){let a=l.keys().next().value;a&&l.delete(a)}}return b})(a).test(b)){h=!0;break}}return v(m),m.set(c,{allowed:h,timestamp:d}),h}(0,g.D)(function(){n=null,o=null,p=null,q=null,r=null,s=null,i=!1,t(),m.clear(),l.clear()})}};
46
+ `).run({id:a,type:g.type,name:g.name,prefix:g.prefix||null,apiType:g.apiType||null,baseUrl:g.baseUrl||null,updatedAt:g.updatedAt}),(0,f.lR)("pre-write"),g}async function G(a){let b=(0,e.sm)(),c=b.prepare("SELECT * FROM provider_nodes WHERE id = ?").get(a);return c?(b.prepare("DELETE FROM provider_nodes WHERE id = ?").run(a),(0,f.lR)("pre-write"),(0,e.kB)(c)):null}function H(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:{};return{key:"string"==typeof b.key?b.key:null,value:"string"==typeof b.value?b.value:null}}async function I(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'modelAliases'").all(),b={};for(let c of a){let{key:a,value:d}=H(c);a&&null!==d&&(b[a]=JSON.parse(d))}return b}async function J(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('modelAliases', ?, ?)").run(a,JSON.stringify(b)),(0,f.lR)("pre-write")}async function K(a){(0,e.sm)().prepare("DELETE FROM key_value WHERE namespace = 'modelAliases' AND key = ?").run(a),(0,f.lR)("pre-write")}async function L(a){let b=(0,e.sm)();if(a){let c=H(b.prepare("SELECT value FROM key_value WHERE namespace = 'mitmAlias' AND key = ?").get(a)).value;return c?JSON.parse(c):{}}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'mitmAlias'").all(),d={};for(let a of c){let{key:b,value:c}=H(a);b&&null!==c&&(d[b]=JSON.parse(c))}return d}async function M(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('mitmAlias', ?, ?)").run(a,JSON.stringify(b||{})),(0,f.lR)("pre-write")}async function N(a){let b=(0,e.sm)();if(a){let c=H(b.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a)).value;return c?JSON.parse(c):[]}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),d={};for(let a of c){let{key:b,value:c}=H(a);b&&null!==c&&(d[b]=JSON.parse(c))}return d}async function O(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),b={};for(let c of a){let{key:a,value:d}=H(c);a&&null!==d&&(b[a]=JSON.parse(d))}return b}async function P(a,b,c,d="manual",g="chat-completions",h=["chat"]){let i=(0,e.sm)(),j=H(i.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a)).value,k=j?JSON.parse(j):[],l=k.find(a=>a.id===b);if(l)return l;let m={id:b,name:c||b,source:d,apiFormat:g,supportedEndpoints:h};return k.push(m),i.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('customModels', ?, ?)").run(a,JSON.stringify(k)),(0,f.lR)("pre-write"),m}async function Q(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);if(!d)return!1;let g=H(d).value;if(!g)return!1;let h=JSON.parse(g),i=h.length,j=h.filter(a=>a.id!==b);return j.length!==i&&(0===j.length?c.prepare("DELETE FROM key_value WHERE namespace = 'customModels' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'customModels' AND key = ?").run(JSON.stringify(j),a),(0,f.lR)("pre-write"),!0)}async function R(a,b,c={}){let d=(0,e.sm)(),g=d.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);if(!g)return null;let h=H(g).value;if(!h)return null;let i=JSON.parse(h),j=i.findIndex(a=>a.id===b);if(-1===j)return null;let k=i[j],l={...k,...void 0!==c.modelName?{name:c.modelName||k.name}:{},...void 0!==c.apiFormat?{apiFormat:c.apiFormat}:{},...void 0!==c.supportedEndpoints?{supportedEndpoints:c.supportedEndpoints}:{}};return i[j]=l,d.prepare("UPDATE key_value SET value = ? WHERE namespace = 'customModels' AND key = ?").run(JSON.stringify(i),a),(0,f.lR)("pre-write"),l}function S(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:{};return"string"==typeof b.data?b.data:null}async function T(){return(0,e.sm)().prepare("SELECT data FROM combos ORDER BY name").all().map(a=>S(a)).filter(a=>null!==a).map(a=>JSON.parse(a))}async function U(a){let b=S((0,e.sm)().prepare("SELECT data FROM combos WHERE id = ?").get(a));return b?JSON.parse(b):null}async function V(a){let b=S((0,e.sm)().prepare("SELECT data FROM combos WHERE name = ?").get(a));return b?JSON.parse(b):null}async function W(a){let b=(0,e.sm)(),c=new Date().toISOString(),g={id:(0,d.A)(),name:a.name,models:a.models||[],strategy:a.strategy||"priority",config:a.config||{},createdAt:c,updatedAt:c};return b.prepare("INSERT INTO combos (id, name, data, created_at, updated_at) VALUES (?, ?, ?, ?, ?)").run(g.id,g.name,JSON.stringify(g),c,c),(0,f.lR)("pre-write"),g}async function X(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT data FROM combos WHERE id = ?").get(a);if(!d)return null;let g=S(d);if(!g)return null;let h={...JSON.parse(g),...b,updatedAt:new Date().toISOString()};return c.prepare("UPDATE combos SET name = ?, data = ?, updated_at = ? WHERE id = ?").run(h.name,JSON.stringify(h),h.updatedAt,a),(0,f.lR)("pre-write"),h}async function Y(a){return 0!==(0,e.sm)().prepare("DELETE FROM combos WHERE id = ?").run(a).changes&&((0,f.lR)("pre-write"),!0)}var Z=c(80500),$=c(9679)},80500:(a,b,c)=>{c.d(b,{Iq:()=>B,Jg:()=>C,Lh:()=>D,Oo:()=>G,PX:()=>x,v9:()=>F,validateApiKey:()=>E,yg:()=>y});var d=c(94755),e=c(42910),f=c(39948),g=c(954),h=c(81249);let i=!1,j=new Map,k=new Map,l=new Map,m=new Map,n=null,o=null,p=null,q=null,r=null,s=null;function t(){j.clear(),k.clear(),m.clear()}function u(a){return a&&"object"==typeof a?a:{}}function v(a){if(a.size>1e3){let b=Math.floor(200),c=0;for(let d of a.keys()){if(c++>=b)break;a.delete(d)}}}function w(a){if(!i)try{let b=a.prepare("PRAGMA table_info(api_keys)").all(),c=new Set(b.map(a=>String(a.name??"")));c.has("allowed_models")||(a.exec("ALTER TABLE api_keys ADD COLUMN allowed_models TEXT"),console.log("[DB] Added api_keys.allowed_models column")),c.has("no_log")||(a.exec("ALTER TABLE api_keys ADD COLUMN no_log INTEGER NOT NULL DEFAULT 0"),console.log("[DB] Added api_keys.no_log column")),i=!0}catch(a){console.warn("[DB] Failed to verify api_keys schema:",a instanceof Error?a.message:String(a))}if(n&&o&&p&&q&&r&&s||(n=a.prepare("SELECT * FROM api_keys ORDER BY created_at"),o=a.prepare("SELECT * FROM api_keys WHERE id = ?"),p=a.prepare("SELECT 1 FROM api_keys WHERE key = ?"),q=a.prepare("SELECT id, name, machine_id, allowed_models, no_log FROM api_keys WHERE key = ?"),r=a.prepare("INSERT INTO api_keys (id, name, key, machine_id, allowed_models, no_log, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)"),s=a.prepare("DELETE FROM api_keys WHERE id = ?")),!n||!o||!p||!q||!r||!s)throw Error("Failed to initialize API key prepared statements");return{getAllKeys:n,getKeyById:o,validateKey:p,getKeyMetadata:q,insertKey:r,deleteKey:s}}async function x(){return w((0,e.sm)()).getAllKeys.all().map(a=>{let b=u((0,e.kB)(a));return b.allowedModels=z(b.allowedModels),b.noLog=A(b.noLog),"string"==typeof b.id&&b.id.length>0&&(0,h.Ct)(b.id,!0===b.noLog),b})}async function y(a){let b=w((0,e.sm)()).getKeyById.get(a);if(!b)return null;let c=u((0,e.kB)(b));return c.allowedModels=z(c.allowedModels),c.noLog=A(c.noLog),"string"==typeof c.id&&c.id.length>0&&(0,h.Ct)(c.id,!0===c.noLog),c}function z(a){if(!a||"string"!=typeof a||""===a.trim())return[];try{let b=JSON.parse(a);return Array.isArray(b)?b.filter(a=>"string"==typeof a):[]}catch{return[]}}function A(a){return!0===a||1===a||"1"===a}async function B(a,b){if(!b)throw Error("machineId is required");let g=(0,e.sm)(),i=new Date().toISOString(),{generateApiKeyWithMachine:j}=await c.e(2286).then(c.bind(c,62286)),k=j(b),l={id:(0,d.A)(),name:a,key:k.key,machineId:b,allowedModels:[],noLog:!1,createdAt:i};return w(g).insertKey.run(l.id,l.name,l.key,l.machineId,"[]",0,l.createdAt),(0,h.Ct)(l.id,!1),(0,f.lR)("pre-write"),l}async function C(a,b){let c=(0,e.sm)();w(c);let d=Array.isArray(b)||void 0===b?{allowedModels:b||[]}:{allowedModels:b.allowedModels,noLog:b.noLog};if(void 0===d.allowedModels&&void 0===d.noLog)return!1;let g=[],i={id:a};return void 0!==d.allowedModels&&(g.push("allowed_models = @allowedModels"),i.allowedModels=JSON.stringify(d.allowedModels||[])),void 0!==d.noLog&&(g.push("no_log = @noLog"),i.noLog=+!!d.noLog),0!==c.prepare(`UPDATE api_keys SET ${g.join(", ")} WHERE id = @id`).run(i).changes&&(void 0!==d.noLog&&(0,h.Ct)(a,d.noLog),t(),(0,f.lR)("pre-write"),!0)}async function D(a){return 0!==w((0,e.sm)()).deleteKey.run(a).changes&&((0,h.Ct)(a,!1),t(),(0,f.lR)("pre-write"),!0)}async function E(a){if(!a||"string"!=typeof a)return!1;let b=Date.now(),c=j.get(a);if(c&&b-c.timestamp<6e4)return c.valid;let d=!!w((0,e.sm)()).validateKey.get(a);return d&&(v(j),j.set(a,{valid:!0,timestamp:b})),d}async function F(a){if(!a||"string"!=typeof a)return null;let b=Date.now(),c=k.get(a);if(c&&b-c.timestamp<6e4)return c.value;let d=w((0,e.sm)()).getKeyMetadata.get(a);if(!d)return null;let f=u(d),g="string"==typeof f.id?f.id:"",i="string"==typeof f.name?f.name:"",j=f.machine_id??f.machineId,l={id:g,name:i,machineId:"string"==typeof j?j:null,allowedModels:z(f.allowed_models??f.allowedModels),noLog:A(f.no_log??f.noLog)};return l.id?((0,h.Ct)(l.id,!0===l.noLog),v(k),k.set(a,{value:l,timestamp:b}),l):null}async function G(a,b){if(!a)return!0;if(!b)return!1;let c=`${a}:${b}`,d=Date.now(),e=m.get(c);if(e&&d-e.timestamp<6e4)return e.allowed;let f=await F(a);if(!f)return!1;let{allowedModels:g}=f;if(!g||0===g.length)return!0;let h=!1;for(let a of g){if(a===b){h=!0;break}if(a.endsWith("/*")){let c=a.slice(0,-2);if(b.startsWith(c+"/")||b.startsWith(c)){h=!0;break}}if(a.includes("*")&&(function(a){let b=l.get(a);if(!b){let c=a.replace(/\*/g,".*");if(b=RegExp(`^${c}$`),l.set(a,b),l.size>100){let a=l.keys().next().value;a&&l.delete(a)}}return b})(a).test(b)){h=!0;break}}return v(m),m.set(c,{allowed:h,timestamp:d}),h}(0,g.D)(function(){n=null,o=null,p=null,q=null,r=null,s=null,i=!1,t(),m.clear(),l.clear()})}};
@@ -1,2 +1,2 @@
1
1
  exports.id=7889,exports.ids=[7889],exports.modules={2143:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{LA:()=>g});var e=c(42971),f=a([e]);let h=(e=(f.then?(await f)():f)[0]).z.object({id:e.z.string().min(1),alias:e.z.string().min(1),name:e.z.string().min(1),icon:e.z.string().min(1),color:e.z.string().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:e.z.string().optional(),website:e.z.string().url().optional(),passthroughModels:e.z.boolean().optional()}),i=e.z.record(e.z.string(),h);function g(a,b){let c=i.safeParse(a);if(!c.success){let a=c.error.issues.map(a=>` ${a.path.join(".")}: ${a.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${b} has invalid entries:
2
- ${a}`),Error(`Provider validation failed for ${b}`)}}d()}catch(a){d(a)}})},3845:(a,b,c)=>{var d={"./ar.json":[48464,8464],"./bg.json":[60944,944],"./da.json":[18976,8976],"./de.json":[22372,2372],"./en.json":[31960,1960],"./es.json":[87011,7011],"./fi.json":[96118,6118],"./fr.json":[53911,3911],"./he.json":[51248,1248],"./hu.json":[50496,496],"./id.json":[16930,6930],"./in.json":[30708,708],"./it.json":[32594,2594],"./ja.json":[37650,7650],"./ko.json":[79837,9837],"./ms.json":[55752,3371],"./nl.json":[35097,5097],"./no.json":[88220,8220],"./phi.json":[28706,8706],"./pl.json":[99119,9119],"./pt-BR.json":[41990,1990],"./pt.json":[11623,1623],"./ro.json":[71880,1880],"./ru.json":[61526,1526],"./sk.json":[25945,5945],"./sv.json":[85094,5094],"./th.json":[55047,5047],"./uk-UA.json":[11584,1584],"./vi.json":[22214,2214],"./zh-CN.json":[65521,5521]};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))},21280:(a,b,c)=>{"use strict";c.d(b,{S_:()=>o});var d=c(22901),e=c(87068);let f="[HealthCheck]",g=new Set(["1","true","yes","on"]);function h(a){let b=process.env[a];return!!b&&g.has(b.trim().toLowerCase())}let i=null,j=0,k=null;async function l(){if(h("OMNIROUTE_HIDE_HEALTHCHECK_LOGS"))return!0;let a=Date.now();return null!==i&&a-j<3e4?i:null!==k?k:k=(async()=>{try{let b=await (0,d.V7)();return i=!0===b.hideHealthCheckLogs,j=a,i}catch{return!1}finally{k=null}})()}function m(a,...b){l().then(c=>{c||console.log(a,...b)})}function n(a,...b){l().then(c=>{c||console.error(a,...b)})}function o(){i=null,j=0}let p=!1;async function q(){try{let a=await (0,d.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await r(b)}catch(a){n(`${f} Error checking ${b.name||b.id}:`,a.message)}}catch(a){n(`${f} Sweep error:`,a.message)}}async function r(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,e.Ny)(a.provider)){let b=new Date().toISOString();await (0,d.rj)(a.id,{lastHealthCheckAt:b}),m(`${f} Skipping ${a.provider}/${a.name||a.email||a.id} (refresh unsupported)`);return}let c=a.lastHealthCheckAt?new Date(a.lastHealthCheckAt).getTime():0;if(Date.now()-c<60*b*1e3)return;m(`${f} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let g={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await l(),i=await (0,e.iD)(a.provider,g,{info:(a,b)=>{h||console.log(`${f} [${a}] ${b}`)},warn:(a,b)=>{h||console.warn(`${f} [${a}] ${b}`)},error:(a,b,c)=>{h||console.error(`${f} [${a}] ${b}`,c||"")}}),j=new Date().toISOString();if((0,e.jT)(i)){await (0,d.rj)(a.id,{lastHealthCheckAt:j,testStatus:"expired",lastError:`Refresh token consumed (${i.error}). Please re-authenticate this account.`,lastErrorAt:j,lastErrorType:i.error,lastErrorSource:"oauth",errorCode:i.error,isActive:!1,refreshToken:null}),n(`${f} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${i.error}). Connection deactivated. Re-authenticate to restore.`);return}if(i&&i.accessToken){let b={accessToken:i.accessToken,lastHealthCheckAt:j,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};i.refreshToken&&(b.refreshToken=i.refreshToken),i.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*i.expiresIn).toISOString()),await (0,d.rj)(a.id,b),m(`${f} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,d.rj)(a.id,{lastHealthCheckAt:j,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:j,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),function(a,...b){l().then(c=>{c||console.warn(a,...b)})}(`${f} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}h("OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK")||(p=!0,m(`${f} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{q(),setInterval(q,6e4)},1e4))},22746:(a,b,c)=>{"use strict";c.d(b,{CardSkeleton:()=>j,PageLoading:()=>h,Skeleton:()=>i,Spinner:()=>g,default:()=>k});var d=c(48249),e=c(31846);let f={sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"};function g({size:a="md",className:b,label:c="Loading"}){return(0,d.jsxs)("span",{role:"status","aria-live":"polite","aria-label":c,className:(0,e.cn)("inline-flex",b),children:[(0,d.jsx)("span",{className:"sr-only",children:c}),(0,d.jsx)("span",{"aria-hidden":"true",className:(0,e.cn)("material-symbols-outlined text-primary animate-spin motion-reduce:animate-none",f[a]),children:"progress_activity"})]})}function h({message:a="Loading...",className:b}){return(0,d.jsxs)("div",{className:(0,e.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)(g,{size:"xl"}),(0,d.jsx)("p",{className:"mt-4 text-text-muted text-center",children:a})]})}function i({className:a,...b}){return(0,d.jsx)("div",{"aria-hidden":"true",className:(0,e.cn)("animate-pulse motion-reduce:animate-none rounded-lg bg-border",a),...b})}function j(){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)(i,{className:"h-4 w-24"}),(0,d.jsx)(i,{className:"size-10 rounded-lg"})]}),(0,d.jsx)(i,{className:"h-8 w-16 mb-2"}),(0,d.jsx)(i,{className:"h-3 w-20"})]})}function k({type:a="spinner",className:b,message:c,size:e,label:f,...k}){switch(a){case"page":return(0,d.jsx)(h,{message:c,className:b});case"skeleton":return(0,d.jsx)(i,{className:b,...k});case"card":return(0,d.jsx)(j,{});default:return(0,d.jsx)(g,{size:e,className:b,label:f})}}},30758:a=>{"use strict";a.exports={rE:"2.2.7"}},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))},44438:(a,b,c)=>{Promise.resolve().then(c.bind(c,64385))},47695:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>k,F:()=>j});var e=c(31417),f=c(300),g=c(51729),h=a([g]);g=(h.then?(await h)():h)[0];let i=(0,e.v)()((0,f.Zr)((a,b)=>({theme:g.B2.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=b().theme,d="dark"===c?"light":"dark";a({theme:d})},initTheme:()=>{let{theme:a,colorTheme:c,customColor:d}=b()}}),{name:g.B2.storageKey})),j={coral:"#e54d5e",blue:"#3b82f6",red:"#ef4444",green:"#22c55e",violet:"#8b5cf6",orange:"#f97316",cyan:"#06b6d4"},k=i;d()}catch(a){d(a)}})},47825:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{KC:()=>e.KC,Xg:()=>e.Xg});var e=c(97319),f=c(70689),g=a([f]);f=(g.then?(await g)():g)[0],Object.entries(f.Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(e.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),d()}catch(a){d(a)}})},49226:(a,b,c)=>{"use strict";c.d(b,{A:()=>l});var d=c(90357),e=c(22901);let{dashboardPort:f}=(0,c(83238).z)(),g=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||process.env.NEXT_PUBLIC_APP_URL||`http://localhost:${f}`;class h{constructor(a=null,b=15){this.machineId=a,this.intervalMinutes=b,this.intervalId=null}async initializeMachineId(){this.machineId||(this.machineId=await (0,d.Xj)())}async start(){this.intervalId||(await this.initializeMachineId(),setTimeout(()=>{this.syncWithRetry().catch(()=>{})},3e4),this.intervalId=setInterval(()=>{this.syncWithRetry().catch(()=>{})},60*this.intervalMinutes*1e3))}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null)}async syncWithRetry(a=1){for(let b=1;b<=a;b++)try{return await this.sync()}catch(d){if(b===a)return null;let c=Math.min(1e3*Math.pow(2,b),1e4);await new Promise(a=>setTimeout(a,c))}}async sync(){if(!await (0,e.Nx)())return null;await this.initializeMachineId();let a=await fetch(`${g}/api/sync/cloud`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({machineId:this.machineId,action:"sync"})});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Sync failed");return await a.json()}isRunning(){return null!==this.intervalId}}let i=null;async function j(a=null,b=15){return i||(i=new h(a,b)),i}async function k(){try{await (0,e.bI)();let a=await j(null,15);return await a.start(),a}catch(a){throw console.error("[CloudSync] Error initializing scheduler:",a),a}}a=c.hmd(a),c.c[c.s]===a&&k().catch(a=>console.error("[CloudSync] init failed:",a));let l=k},51729:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B2:()=>j,MA:()=>f.MA,Q2:()=>f.Q2,fg:()=>f.fg,vQ:()=>i,zN:()=>f.zN});var e=c(30758),f=c(70689),g=c(47825),h=a([f,g]);[f,g]=h.then?(await h)():h;let i={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:e.rE},j={storageKey:"theme",defaultTheme:"system"};d()}catch(a){d(a)}})},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))},70689:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{DI:()=>o,IS:()=>k,JH:()=>n,MA:()=>q,Q2:()=>p,fg:()=>m,gb:()=>h,mq:()=>g,wG:()=>j,wb:()=>r,zN:()=>l,zt:()=>i});var e=c(2143),f=a([e]);e=(f.then?(await f)():f)[0];let k={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},l={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},m={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"}},n="openai-compatible-",o="anthropic-compatible-";function g(a){return"string"==typeof a&&a.startsWith(n)}function h(a){return"string"==typeof a&&a.startsWith(o)}let p={...k,...l,...m},q={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function i(a){for(let b of Object.values(p))if(b.alias===a||b.id===a)return b;return null}function j(a){let b=p[a];return b?.alias||a}Object.values(p).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(p).reduce((a,b)=>(a[b.id]=b.alias,a),{});let r=["antigravity","kiro","github","codex","claude","kimi-coding"];(0,e.LA)(k,"FREE_PROVIDERS"),(0,e.LA)(l,"OAUTH_PROVIDERS"),(0,e.LA)(m,"APIKEY_PROVIDERS"),d()}catch(a){d(a)}})},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.a(a,async(a,d)=>{try{c.d(b,{ThemeProvider:()=>h});var e=c(48249);c(67484);var f=c(47695),g=a([f]);function h({children:a}){let{initTheme:b}=(0,f.A)();return(0,e.jsx)(e.Fragment,{children:a})}f=(g.then?(await g)():g)[0],d()}catch(a){d(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:()=>m,metadata:()=>l});var d=c(5735),e=c(50609),f=c.n(e);c(61135);var g=c(32444);c(91057);var h=c(68625),i=c(62026),j=c(28440),k=c(83750);let l={title:"OmniRoute — AI Gateway for Multi-Provider LLMs",description:"OmniRoute is an AI gateway for multi-provider LLMs. One endpoint for all your AI providers.",icons:{icon:"/favicon.svg",apple:"/apple-touch-icon.svg"}};async function m({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.jsxs)("body",{className:`${f().variable} font-sans antialiased`,suppressHydrationWarning:!0,children:[(0,d.jsx)("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-50 focus:px-4 focus:py-2 focus:bg-[#6366f1] focus:text-white focus:rounded-lg focus:text-sm focus:font-semibold focus:shadow-lg",children:"Skip to content"}),(0,d.jsx)(h.A,{locale:b,messages:c,children:(0,d.jsx)(g.ThemeProvider,{children:a})})]})]})}},77447:(a,b,c)=>{Promise.resolve().then(c.bind(c,62626)),Promise.resolve().then(c.bind(c,75146))},78335:()=>{},79369:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},79803:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(29389),e=c(65573),f=c(83750);let g=(0,d.A)(async()=>{let a=await (0,e.UL)(),b=a.get(f.CL)?.value||"";b||(b=(await (0,e.b3)()).get("x-locale")||""),f.YZ.includes(b)||(b=f.Xn);let d=(await c(3845)(`./${b}.json`)).default;return{locale:b,messages:d}})},81227:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/global-error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/global-error.tsx","default")},83238:(a,b,c)=>{"use strict";function d(a,b){if(!a)return b;let c=Number.parseInt(String(a),10);return!Number.isFinite(c)||c<1||c>65535?b:c}function e(){let a=d(process.env.OMNIROUTE_PORT||process.env.PORT,20128),b=!!process.env.API_PORT,c=!!process.env.DASHBOARD_PORT;return{port:a,apiPort:d(process.env.API_PORT,a),dashboardPort:d(process.env.DASHBOARD_PORT,a),apiPortExplicit:b,dashboardPortExplicit:c}}c.d(b,{z:()=>e})},83750:(a,b,c)=>{"use strict";c.d(b,{CL:()=>g,Xn:()=>e,YZ:()=>d,rB:()=>f});let d=["en","pt-BR","es","fr","it","ru","zh-CN","de","in","th","uk-UA","ar","ja","vi","bg","da","fi","he","hu","id","ko","ms","nl","no","pt","ro","pl","sk","sv","phi"],e="en",f=["ar","he"],g="NEXT_LOCALE"},89097:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},90357:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>e});var d=c(19713);async function e(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let a=(0,d.machineIdSync)();return(await Promise.resolve().then(c.t.bind(c,55511,23))).createHash("sha256").update(a+b).digest("hex").substring(0,16)}catch(a){return console.log("Error getting machine ID:",a),crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){let b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)})}}},91057:(a,b,c)=>{"use strict";var d=c(49226);c(21280);let e=!1;(async function(){if(!e)try{await (0,d.A)(),e=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return e})().catch(a=>console.error("[CloudSync] ensure failed:",a))},95127:(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/loading.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/loading.tsx","default")},96487:()=>{},97319:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>g,vq:()=>f,KC:()=>h});let d={claude:{id:"claude",alias:"cc",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/1.0.83 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.55.1","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":"arm64","X-Stainless-Os":"MacOS","X-Stainless-Timeout":"60"},oauth:{clientIdEnv:"CLAUDE_OAUTH_CLIENT_ID",clientIdDefault:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://console.anthropic.com/v1/oauth/token"},models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}]},gemini:{id:"gemini",alias:"gemini",format:"gemini",executor:"default",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",urlBuilder:(a,b,c)=>`${a}/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"x-goog-api-key",oauth:{clientIdEnv:"GEMINI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3.1-flash",name:"Gemini 3.1 Flash"},{id:"gemini-3-pro-preview",name:"Gemini 3.0 Pro Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3.0 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},"gemini-cli":{id:"gemini-cli",alias:"gc",format:"gemini-cli",executor:"gemini-cli",baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",urlBuilder:(a,b,c)=>`${a}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"oauth",authHeader:"bearer",oauth:{clientIdEnv:"GEMINI_CLI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_CLI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3.1-flash",name:"Gemini 3.1 Flash"},{id:"gemini-3-flash-preview",name:"Gemini 3.0 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3.0 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},codex:{id:"codex",alias:"cx",format:"openai-responses",executor:"codex",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",headers:{Version:"0.92.0","Openai-Beta":"responses=experimental","User-Agent":"codex-cli/0.92.0 (Windows 10.0.26100; x64)"},oauth:{clientIdEnv:"CODEX_OAUTH_CLIENT_ID",clientIdDefault:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecretEnv:"CODEX_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://auth.openai.com/oauth/token"},models:[{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}]},qwen:{id:"qwen",alias:"qw",format:"openai",executor:"default",baseUrl:"https://portal.qwen.ai/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},oauth:{clientIdEnv:"QWEN_OAUTH_CLIENT_ID",clientIdDefault:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"}]},iflow:{id:"iflow",alias:"if",format:"openai",executor:"iflow",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"kimi-k2",name:"Kimi K2"},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3.2-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-v3.2-reasoner",name:"DeepSeek V3.2 Reasoner"},{id:"minimax-m2.1",name:"MiniMax M2.1"},{id:"glm-4.7",name:"GLM 4.7"}]},antigravity:{id:"antigravity",alias:"ag",format:"antigravity",executor:"antigravity",baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://cloudcode-pa.googleapis.com"],urlBuilder:(a,b,c)=>`${a}${c?"/v1internal:streamGenerateContent?alt=sse":"/v1internal:generateContent"}`,authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"antigravity/1.104.0 darwin/arm64"},oauth:{clientIdEnv:"ANTIGRAVITY_OAUTH_CLIENT_ID",clientIdDefault:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecretEnv:"ANTIGRAVITY_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low"},{id:"gemini-3.1-flash",name:"Gemini 3.1 Flash"},{id:"gemini-3-flash",name:"Gemini 3.0 Flash"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}]},github:{id:"github",alias:"gh",format:"openai",executor:"github",baseUrl:"https://api.githubcopilot.com/chat/completions",responsesBaseUrl:"https://api.githubcopilot.com/responses",authType:"oauth",authHeader:"bearer",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},models:[{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",targetFormat:"openai-responses"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex",targetFormat:"openai-responses"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5 (Full ID)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}]},kiro:{id:"kiro",alias:"kr",format:"kiro",executor:"kiro",baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",authType:"oauth",authHeader:"bearer",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},oauth:{tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},models:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"}]},cursor:{id:"cursor",alias:"cu",format:"cursor",executor:"cursor",baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",authType:"oauth",authHeader:"bearer",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3",models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"}]},openai:{id:"openai",alias:"openai",format:"openai",executor:"default",baseUrl:"https://api.openai.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}]},anthropic:{id:"anthropic",alias:"anthropic",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01"},models:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}]},openrouter:{id:"openrouter",alias:"openrouter",format:"openai",executor:"default",baseUrl:"https://openrouter.ai/api/v1/chat/completions",authType:"apikey",authHeader:"bearer",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},models:[{id:"auto",name:"Auto (Best Available)"}]},glm:{id:"glm",alias:"glm",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM 4.6"},{id:"glm-4.5v",name:"GLM 4.5V (Vision)"},{id:"glm-4.5",name:"GLM 4.5"},{id:"glm-4.5-air",name:"GLM 4.5 Air"},{id:"glm-4-32b",name:"GLM 4 32B"}]},kimi:{id:"kimi",alias:"kimi",format:"openai",executor:"default",baseUrl:"https://api.moonshot.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",modelsUrl:"https://api.kilo.ai/api/openrouter/models",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"openrouter/free",name:"Free Models Router"},{id:"qwen/qwen3-vl-235b-a22b-thinking",name:"Qwen3 VL 235B A22B Thinking"},{id:"qwen/qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen/qwen3-vl-30b-a3b-thinking",name:"Qwen3 VL 30B A3B Thinking"},{id:"stepfun/step-3.5-flash:free",name:"StepFun Step 3.5 Flash"},{id:"arcee-ai/trinity-large-preview:free",name:"Arcee AI Trinity Large Preview"},{id:"openai/gpt-4o-mini",name:"GPT-4o Mini"},{id:"openai/gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"openai/gpt-5-nano",name:"GPT-5 Nano"},{id:"openai/gpt-5-mini",name:"GPT-5 Mini"},{id:"anthropic/claude-3-haiku",name:"Claude 3 Haiku"},{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"google/gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"deepseek/deepseek-chat-v3.1",name:"DeepSeek V3.1"},{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-scout",name:"Llama 4 Scout"},{id:"meta-llama/llama-4-maverick",name:"Llama 4 Maverick"},{id:"qwen/qwen3-8b",name:"Qwen3 8B"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"qwen/qwen3-coder",name:"Qwen3 Coder 480B"},{id:"qwen/qwq-32b",name:"QwQ 32B"},{id:"mistralai/mistral-small-24b-instruct-2501",name:"Mistral Small 3"},{id:"mistralai/mistral-7b-instruct",name:"Mistral 7B"},{id:"x-ai/grok-code-fast-1",name:"Grok Code Fast 1"},{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},blackbox:{id:"blackbox",alias:"bb",format:"openai",executor:"default",baseUrl:"https://api.blackbox.ai/v1/chat/completions",modelsUrl:"https://api.blackbox.ai/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"deepseek-v3",name:"DeepSeek V3"},{id:"blackboxai",name:"Blackbox AI"},{id:"blackboxai-pro",name:"Blackbox AI Pro"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",format:"openai",executor:"default",baseUrl:"https://api.ollama.com/v1/chat/completions",modelsUrl:"https://api.ollama.com/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gemma3:27b",name:"Gemma 3 27B"},{id:"llama3.3:70b",name:"Llama 3.3 70B"},{id:"qwen3:72b",name:"Qwen3 72B"},{id:"devstral:24b",name:"Devstral 24B"},{id:"deepseek-r2:671b",name:"DeepSeek R2 671B"},{id:"phi4:14b",name:"Phi 4 14B"},{id:"mistral-small3.2:24b",name:"Mistral Small 3.2 24B"}],passthroughModels:!0},cohere:{id:"cohere",alias:"cohere",format:"openai",executor:"default",baseUrl:"https://api.cohere.com/v2/chat",authType:"apikey",authHeader:"bearer",models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},nvidia:{id:"nvidia",alias:"nvidia",format:"openai",executor:"default",baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}]},nebius:{id:"nebius",alias:"nebius",format:"openai",executor:"default",baseUrl:"https://api.tokenfactory.nebius.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}]},siliconflow:{id:"siliconflow",alias:"siliconflow",format:"openai",executor:"default",baseUrl:"https://api.siliconflow.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}]},hyperbolic:{id:"hyperbolic",alias:"hyp",format:"openai",executor:"default",baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]}},e=new Map;for(let a of Object.values(d))a.alias&&a.alias!==a.id&&e.set(a.alias,a);let f=function(){let a={};for(let b of Object.values(d))if(b.models&&b.models.length>0){let c=b.alias||b.id;a[c]||(a[c]=b.models)}return a}(),g=function(){let a={};for(let b of Object.values(d))a[b.id]=b.alias||b.id;return a}();function h(a){return f[g[a]||a]||[]}},97496:(a,b,c)=>{Promise.resolve().then(c.bind(c,81227))},97507:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-[60vh] p-6 text-center",role:"alert","aria-live":"assertive",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4","aria-hidden":"true",children:"\uD83D\uDD27"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2 text-[var(--color-text-main)]",children:"Internal Server Error"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--color-text-muted)] max-w-[400px] leading-relaxed mb-2",children:"Something went wrong while processing your request. Our team has been notified and is working on a fix."}),a?.digest&&(0,d.jsxs)("p",{className:"text-xs text-[var(--color-text-muted)] mb-6 font-mono",children:["Error ID: ",a.digest]}),!1,(0,d.jsxs)("div",{className:"flex gap-3",children:[(0,d.jsx)("button",{onClick:b,"aria-label":"Retry loading the page",className:"px-6 py-2.5 rounded-lg text-white text-sm font-semibold cursor-pointer transition-all duration-200 motion-reduce:transition-none bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]",children:"Try Again"}),(0,d.jsx)("a",{href:"/dashboard",className:"px-6 py-2.5 rounded-lg text-[var(--color-text-main)] text-sm font-semibold cursor-pointer transition-all duration-200 motion-reduce:transition-none border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]","aria-label":"Return to dashboard",children:"Go to Dashboard"}),(0,d.jsx)("a",{href:"/status",className:"px-6 py-2.5 rounded-lg text-[var(--color-text-main)] text-sm font-semibold cursor-pointer transition-all duration-200 motion-reduce:transition-none border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]","aria-label":"Open system status",children:"System Status"})]})]})}}};
2
+ ${a}`),Error(`Provider validation failed for ${b}`)}}d()}catch(a){d(a)}})},3845:(a,b,c)=>{var d={"./ar.json":[48464,8464],"./bg.json":[60944,944],"./da.json":[18976,8976],"./de.json":[22372,2372],"./en.json":[31960,1960],"./es.json":[87011,7011],"./fi.json":[96118,6118],"./fr.json":[53911,3911],"./he.json":[51248,1248],"./hu.json":[50496,496],"./id.json":[16930,6930],"./in.json":[30708,708],"./it.json":[32594,2594],"./ja.json":[37650,7650],"./ko.json":[79837,9837],"./ms.json":[55752,3371],"./nl.json":[35097,5097],"./no.json":[88220,8220],"./phi.json":[28706,8706],"./pl.json":[99119,9119],"./pt-BR.json":[41990,1990],"./pt.json":[11623,1623],"./ro.json":[71880,1880],"./ru.json":[61526,1526],"./sk.json":[25945,5945],"./sv.json":[85094,5094],"./th.json":[55047,5047],"./uk-UA.json":[11584,1584],"./vi.json":[22214,2214],"./zh-CN.json":[65521,5521]};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))},21280:(a,b,c)=>{"use strict";c.d(b,{S_:()=>o});var d=c(22901),e=c(87068);let f="[HealthCheck]",g=new Set(["1","true","yes","on"]);function h(a){let b=process.env[a];return!!b&&g.has(b.trim().toLowerCase())}let i=null,j=0,k=null;async function l(){if(h("OMNIROUTE_HIDE_HEALTHCHECK_LOGS"))return!0;let a=Date.now();return null!==i&&a-j<3e4?i:null!==k?k:k=(async()=>{try{let b=await (0,d.V7)();return i=!0===b.hideHealthCheckLogs,j=a,i}catch{return!1}finally{k=null}})()}function m(a,...b){l().then(c=>{c||console.log(a,...b)})}function n(a,...b){l().then(c=>{c||console.error(a,...b)})}function o(){i=null,j=0}let p=!1;async function q(){try{let a=await (0,d.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await r(b)}catch(a){n(`${f} Error checking ${b.name||b.id}:`,a.message)}}catch(a){n(`${f} Sweep error:`,a.message)}}async function r(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,e.Ny)(a.provider)){let b=new Date().toISOString();await (0,d.rj)(a.id,{lastHealthCheckAt:b}),m(`${f} Skipping ${a.provider}/${a.name||a.email||a.id} (refresh unsupported)`);return}let c=a.lastHealthCheckAt?new Date(a.lastHealthCheckAt).getTime():0;if(Date.now()-c<60*b*1e3)return;m(`${f} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let g={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await l(),i=await (0,e.iD)(a.provider,g,{info:(a,b)=>{h||console.log(`${f} [${a}] ${b}`)},warn:(a,b)=>{h||console.warn(`${f} [${a}] ${b}`)},error:(a,b,c)=>{h||console.error(`${f} [${a}] ${b}`,c||"")}}),j=new Date().toISOString();if((0,e.jT)(i)){await (0,d.rj)(a.id,{lastHealthCheckAt:j,testStatus:"expired",lastError:`Refresh token consumed (${i.error}). Please re-authenticate this account.`,lastErrorAt:j,lastErrorType:i.error,lastErrorSource:"oauth",errorCode:i.error,isActive:!1,refreshToken:null}),n(`${f} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${i.error}). Connection deactivated. Re-authenticate to restore.`);return}if(i&&i.accessToken){let b={accessToken:i.accessToken,lastHealthCheckAt:j,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};i.refreshToken&&(b.refreshToken=i.refreshToken),i.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*i.expiresIn).toISOString()),await (0,d.rj)(a.id,b),m(`${f} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,d.rj)(a.id,{lastHealthCheckAt:j,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:j,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),function(a,...b){l().then(c=>{c||console.warn(a,...b)})}(`${f} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}h("OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK")||(p=!0,m(`${f} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{q(),setInterval(q,6e4)},1e4))},22746:(a,b,c)=>{"use strict";c.d(b,{CardSkeleton:()=>j,PageLoading:()=>h,Skeleton:()=>i,Spinner:()=>g,default:()=>k});var d=c(48249),e=c(31846);let f={sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"};function g({size:a="md",className:b,label:c="Loading"}){return(0,d.jsxs)("span",{role:"status","aria-live":"polite","aria-label":c,className:(0,e.cn)("inline-flex",b),children:[(0,d.jsx)("span",{className:"sr-only",children:c}),(0,d.jsx)("span",{"aria-hidden":"true",className:(0,e.cn)("material-symbols-outlined text-primary animate-spin motion-reduce:animate-none",f[a]),children:"progress_activity"})]})}function h({message:a="Loading...",className:b}){return(0,d.jsxs)("div",{className:(0,e.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)(g,{size:"xl"}),(0,d.jsx)("p",{className:"mt-4 text-text-muted text-center",children:a})]})}function i({className:a,...b}){return(0,d.jsx)("div",{"aria-hidden":"true",className:(0,e.cn)("animate-pulse motion-reduce:animate-none rounded-lg bg-border",a),...b})}function j(){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)(i,{className:"h-4 w-24"}),(0,d.jsx)(i,{className:"size-10 rounded-lg"})]}),(0,d.jsx)(i,{className:"h-8 w-16 mb-2"}),(0,d.jsx)(i,{className:"h-3 w-20"})]})}function k({type:a="spinner",className:b,message:c,size:e,label:f,...k}){switch(a){case"page":return(0,d.jsx)(h,{message:c,className:b});case"skeleton":return(0,d.jsx)(i,{className:b,...k});case"card":return(0,d.jsx)(j,{});default:return(0,d.jsx)(g,{size:e,className:b,label:f})}}},30758:a=>{"use strict";a.exports={rE:"2.2.9"}},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))},44438:(a,b,c)=>{Promise.resolve().then(c.bind(c,64385))},47695:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>k,F:()=>j});var e=c(31417),f=c(300),g=c(51729),h=a([g]);g=(h.then?(await h)():h)[0];let i=(0,e.v)()((0,f.Zr)((a,b)=>({theme:g.B2.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=b().theme,d="dark"===c?"light":"dark";a({theme:d})},initTheme:()=>{let{theme:a,colorTheme:c,customColor:d}=b()}}),{name:g.B2.storageKey})),j={coral:"#e54d5e",blue:"#3b82f6",red:"#ef4444",green:"#22c55e",violet:"#8b5cf6",orange:"#f97316",cyan:"#06b6d4"},k=i;d()}catch(a){d(a)}})},47825:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{KC:()=>e.KC,Xg:()=>e.Xg});var e=c(97319),f=c(70689),g=a([f]);f=(g.then?(await g)():g)[0],Object.entries(f.Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(e.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),d()}catch(a){d(a)}})},49226:(a,b,c)=>{"use strict";c.d(b,{A:()=>l});var d=c(90357),e=c(22901);let{dashboardPort:f}=(0,c(83238).z)(),g=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||process.env.NEXT_PUBLIC_APP_URL||`http://localhost:${f}`;class h{constructor(a=null,b=15){this.machineId=a,this.intervalMinutes=b,this.intervalId=null}async initializeMachineId(){this.machineId||(this.machineId=await (0,d.Xj)())}async start(){this.intervalId||(await this.initializeMachineId(),setTimeout(()=>{this.syncWithRetry().catch(()=>{})},3e4),this.intervalId=setInterval(()=>{this.syncWithRetry().catch(()=>{})},60*this.intervalMinutes*1e3))}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null)}async syncWithRetry(a=1){for(let b=1;b<=a;b++)try{return await this.sync()}catch(d){if(b===a)return null;let c=Math.min(1e3*Math.pow(2,b),1e4);await new Promise(a=>setTimeout(a,c))}}async sync(){if(!await (0,e.Nx)())return null;await this.initializeMachineId();let a=await fetch(`${g}/api/sync/cloud`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({machineId:this.machineId,action:"sync"})});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Sync failed");return await a.json()}isRunning(){return null!==this.intervalId}}let i=null;async function j(a=null,b=15){return i||(i=new h(a,b)),i}async function k(){try{await (0,e.bI)();let a=await j(null,15);return await a.start(),a}catch(a){throw console.error("[CloudSync] Error initializing scheduler:",a),a}}a=c.hmd(a),c.c[c.s]===a&&k().catch(a=>console.error("[CloudSync] init failed:",a));let l=k},51729:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B2:()=>j,MA:()=>f.MA,Q2:()=>f.Q2,fg:()=>f.fg,vQ:()=>i,zN:()=>f.zN});var e=c(30758),f=c(70689),g=c(47825),h=a([f,g]);[f,g]=h.then?(await h)():h;let i={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:e.rE},j={storageKey:"theme",defaultTheme:"system"};d()}catch(a){d(a)}})},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))},70689:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{DI:()=>o,IS:()=>k,JH:()=>n,MA:()=>q,Q2:()=>p,fg:()=>m,gb:()=>h,mq:()=>g,wG:()=>j,wb:()=>r,zN:()=>l,zt:()=>i});var e=c(2143),f=a([e]);e=(f.then?(await f)():f)[0];let k={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},l={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},m={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"}},n="openai-compatible-",o="anthropic-compatible-";function g(a){return"string"==typeof a&&a.startsWith(n)}function h(a){return"string"==typeof a&&a.startsWith(o)}let p={...k,...l,...m},q={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function i(a){for(let b of Object.values(p))if(b.alias===a||b.id===a)return b;return null}function j(a){let b=p[a];return b?.alias||a}Object.values(p).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(p).reduce((a,b)=>(a[b.id]=b.alias,a),{});let r=["antigravity","kiro","github","codex","claude","kimi-coding"];(0,e.LA)(k,"FREE_PROVIDERS"),(0,e.LA)(l,"OAUTH_PROVIDERS"),(0,e.LA)(m,"APIKEY_PROVIDERS"),d()}catch(a){d(a)}})},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.a(a,async(a,d)=>{try{c.d(b,{ThemeProvider:()=>h});var e=c(48249);c(67484);var f=c(47695),g=a([f]);function h({children:a}){let{initTheme:b}=(0,f.A)();return(0,e.jsx)(e.Fragment,{children:a})}f=(g.then?(await g)():g)[0],d()}catch(a){d(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:()=>m,metadata:()=>l});var d=c(5735),e=c(50609),f=c.n(e);c(61135);var g=c(32444);c(91057);var h=c(68625),i=c(62026),j=c(28440),k=c(83750);let l={title:"OmniRoute — AI Gateway for Multi-Provider LLMs",description:"OmniRoute is an AI gateway for multi-provider LLMs. One endpoint for all your AI providers.",icons:{icon:"/favicon.svg",apple:"/apple-touch-icon.svg"}};async function m({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.jsxs)("body",{className:`${f().variable} font-sans antialiased`,suppressHydrationWarning:!0,children:[(0,d.jsx)("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-50 focus:px-4 focus:py-2 focus:bg-[#6366f1] focus:text-white focus:rounded-lg focus:text-sm focus:font-semibold focus:shadow-lg",children:"Skip to content"}),(0,d.jsx)(h.A,{locale:b,messages:c,children:(0,d.jsx)(g.ThemeProvider,{children:a})})]})]})}},77447:(a,b,c)=>{Promise.resolve().then(c.bind(c,62626)),Promise.resolve().then(c.bind(c,75146))},78335:()=>{},79369:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},79803:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(29389),e=c(65573),f=c(83750);let g=(0,d.A)(async()=>{let a=await (0,e.UL)(),b=a.get(f.CL)?.value||"";b||(b=(await (0,e.b3)()).get("x-locale")||""),f.YZ.includes(b)||(b=f.Xn);let d=(await c(3845)(`./${b}.json`)).default;return{locale:b,messages:d}})},81227:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/global-error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/global-error.tsx","default")},83238:(a,b,c)=>{"use strict";function d(a,b){if(!a)return b;let c=Number.parseInt(String(a),10);return!Number.isFinite(c)||c<1||c>65535?b:c}function e(){let a=d(process.env.OMNIROUTE_PORT||process.env.PORT,20128),b=!!process.env.API_PORT,c=!!process.env.DASHBOARD_PORT;return{port:a,apiPort:d(process.env.API_PORT,a),dashboardPort:d(process.env.DASHBOARD_PORT,a),apiPortExplicit:b,dashboardPortExplicit:c}}c.d(b,{z:()=>e})},83750:(a,b,c)=>{"use strict";c.d(b,{CL:()=>g,Xn:()=>e,YZ:()=>d,rB:()=>f});let d=["en","pt-BR","es","fr","it","ru","zh-CN","de","in","th","uk-UA","ar","ja","vi","bg","da","fi","he","hu","id","ko","ms","nl","no","pt","ro","pl","sk","sv","phi"],e="en",f=["ar","he"],g="NEXT_LOCALE"},89097:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},90357:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>e});var d=c(19713);async function e(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let a=(0,d.machineIdSync)();return(await Promise.resolve().then(c.t.bind(c,55511,23))).createHash("sha256").update(a+b).digest("hex").substring(0,16)}catch(a){return console.log("Error getting machine ID:",a),crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){let b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)})}}},91057:(a,b,c)=>{"use strict";var d=c(49226);c(21280);let e=!1;(async function(){if(!e)try{await (0,d.A)(),e=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return e})().catch(a=>console.error("[CloudSync] ensure failed:",a))},95127:(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/loading.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/loading.tsx","default")},96487:()=>{},97319:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>g,vq:()=>f,KC:()=>h});let d={claude:{id:"claude",alias:"cc",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/1.0.83 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.55.1","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":"arm64","X-Stainless-Os":"MacOS","X-Stainless-Timeout":"60"},oauth:{clientIdEnv:"CLAUDE_OAUTH_CLIENT_ID",clientIdDefault:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://console.anthropic.com/v1/oauth/token"},models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}]},gemini:{id:"gemini",alias:"gemini",format:"gemini",executor:"default",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",urlBuilder:(a,b,c)=>`${a}/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"x-goog-api-key",oauth:{clientIdEnv:"GEMINI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3.1-flash",name:"Gemini 3.1 Flash"},{id:"gemini-3-pro-preview",name:"Gemini 3.0 Pro Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3.0 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},"gemini-cli":{id:"gemini-cli",alias:"gc",format:"gemini-cli",executor:"gemini-cli",baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",urlBuilder:(a,b,c)=>`${a}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"oauth",authHeader:"bearer",oauth:{clientIdEnv:"GEMINI_CLI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_CLI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3.1-flash",name:"Gemini 3.1 Flash"},{id:"gemini-3-flash-preview",name:"Gemini 3.0 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3.0 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},codex:{id:"codex",alias:"cx",format:"openai-responses",executor:"codex",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",headers:{Version:"0.92.0","Openai-Beta":"responses=experimental","User-Agent":"codex-cli/0.92.0 (Windows 10.0.26100; x64)"},oauth:{clientIdEnv:"CODEX_OAUTH_CLIENT_ID",clientIdDefault:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecretEnv:"CODEX_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://auth.openai.com/oauth/token"},models:[{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}]},qwen:{id:"qwen",alias:"qw",format:"openai",executor:"default",baseUrl:"https://portal.qwen.ai/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},oauth:{clientIdEnv:"QWEN_OAUTH_CLIENT_ID",clientIdDefault:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"}]},iflow:{id:"iflow",alias:"if",format:"openai",executor:"iflow",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"kimi-k2",name:"Kimi K2"},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3.2-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-v3.2-reasoner",name:"DeepSeek V3.2 Reasoner"},{id:"minimax-m2.1",name:"MiniMax M2.1"},{id:"glm-4.7",name:"GLM 4.7"}]},antigravity:{id:"antigravity",alias:"ag",format:"antigravity",executor:"antigravity",baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://cloudcode-pa.googleapis.com"],urlBuilder:(a,b,c)=>`${a}${c?"/v1internal:streamGenerateContent?alt=sse":"/v1internal:generateContent"}`,authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"antigravity/1.104.0 darwin/arm64"},oauth:{clientIdEnv:"ANTIGRAVITY_OAUTH_CLIENT_ID",clientIdDefault:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecretEnv:"ANTIGRAVITY_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low"},{id:"gemini-3.1-flash",name:"Gemini 3.1 Flash"},{id:"gemini-3-flash",name:"Gemini 3.0 Flash"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}]},github:{id:"github",alias:"gh",format:"openai",executor:"github",baseUrl:"https://api.githubcopilot.com/chat/completions",responsesBaseUrl:"https://api.githubcopilot.com/responses",authType:"oauth",authHeader:"bearer",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},models:[{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",targetFormat:"openai-responses"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex",targetFormat:"openai-responses"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5 (Full ID)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}]},kiro:{id:"kiro",alias:"kr",format:"kiro",executor:"kiro",baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",authType:"oauth",authHeader:"bearer",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},oauth:{tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},models:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"}]},cursor:{id:"cursor",alias:"cu",format:"cursor",executor:"cursor",baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",authType:"oauth",authHeader:"bearer",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3",models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"}]},openai:{id:"openai",alias:"openai",format:"openai",executor:"default",baseUrl:"https://api.openai.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}]},anthropic:{id:"anthropic",alias:"anthropic",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01"},models:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}]},openrouter:{id:"openrouter",alias:"openrouter",format:"openai",executor:"default",baseUrl:"https://openrouter.ai/api/v1/chat/completions",authType:"apikey",authHeader:"bearer",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},models:[{id:"auto",name:"Auto (Best Available)"}]},glm:{id:"glm",alias:"glm",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM 4.6"},{id:"glm-4.5v",name:"GLM 4.5V (Vision)"},{id:"glm-4.5",name:"GLM 4.5"},{id:"glm-4.5-air",name:"GLM 4.5 Air"},{id:"glm-4-32b",name:"GLM 4 32B"}]},kimi:{id:"kimi",alias:"kimi",format:"openai",executor:"default",baseUrl:"https://api.moonshot.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",modelsUrl:"https://api.kilo.ai/api/openrouter/models",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"openrouter/free",name:"Free Models Router"},{id:"qwen/qwen3-vl-235b-a22b-thinking",name:"Qwen3 VL 235B A22B Thinking"},{id:"qwen/qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen/qwen3-vl-30b-a3b-thinking",name:"Qwen3 VL 30B A3B Thinking"},{id:"stepfun/step-3.5-flash:free",name:"StepFun Step 3.5 Flash"},{id:"arcee-ai/trinity-large-preview:free",name:"Arcee AI Trinity Large Preview"},{id:"openai/gpt-4o-mini",name:"GPT-4o Mini"},{id:"openai/gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"openai/gpt-5-nano",name:"GPT-5 Nano"},{id:"openai/gpt-5-mini",name:"GPT-5 Mini"},{id:"anthropic/claude-3-haiku",name:"Claude 3 Haiku"},{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"google/gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"deepseek/deepseek-chat-v3.1",name:"DeepSeek V3.1"},{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-scout",name:"Llama 4 Scout"},{id:"meta-llama/llama-4-maverick",name:"Llama 4 Maverick"},{id:"qwen/qwen3-8b",name:"Qwen3 8B"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"qwen/qwen3-coder",name:"Qwen3 Coder 480B"},{id:"qwen/qwq-32b",name:"QwQ 32B"},{id:"mistralai/mistral-small-24b-instruct-2501",name:"Mistral Small 3"},{id:"mistralai/mistral-7b-instruct",name:"Mistral 7B"},{id:"x-ai/grok-code-fast-1",name:"Grok Code Fast 1"},{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},blackbox:{id:"blackbox",alias:"bb",format:"openai",executor:"default",baseUrl:"https://api.blackbox.ai/v1/chat/completions",modelsUrl:"https://api.blackbox.ai/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"deepseek-v3",name:"DeepSeek V3"},{id:"blackboxai",name:"Blackbox AI"},{id:"blackboxai-pro",name:"Blackbox AI Pro"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",format:"openai",executor:"default",baseUrl:"https://api.ollama.com/v1/chat/completions",modelsUrl:"https://api.ollama.com/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gemma3:27b",name:"Gemma 3 27B"},{id:"llama3.3:70b",name:"Llama 3.3 70B"},{id:"qwen3:72b",name:"Qwen3 72B"},{id:"devstral:24b",name:"Devstral 24B"},{id:"deepseek-r2:671b",name:"DeepSeek R2 671B"},{id:"phi4:14b",name:"Phi 4 14B"},{id:"mistral-small3.2:24b",name:"Mistral Small 3.2 24B"}],passthroughModels:!0},cohere:{id:"cohere",alias:"cohere",format:"openai",executor:"default",baseUrl:"https://api.cohere.com/v2/chat",authType:"apikey",authHeader:"bearer",models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},nvidia:{id:"nvidia",alias:"nvidia",format:"openai",executor:"default",baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}]},nebius:{id:"nebius",alias:"nebius",format:"openai",executor:"default",baseUrl:"https://api.tokenfactory.nebius.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}]},siliconflow:{id:"siliconflow",alias:"siliconflow",format:"openai",executor:"default",baseUrl:"https://api.siliconflow.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}]},hyperbolic:{id:"hyperbolic",alias:"hyp",format:"openai",executor:"default",baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]}},e=new Map;for(let a of Object.values(d))a.alias&&a.alias!==a.id&&e.set(a.alias,a);let f=function(){let a={};for(let b of Object.values(d))if(b.models&&b.models.length>0){let c=b.alias||b.id;a[c]||(a[c]=b.models)}return a}(),g=function(){let a={};for(let b of Object.values(d))a[b.id]=b.alias||b.id;return a}();function h(a){return f[g[a]||a]||[]}},97496:(a,b,c)=>{Promise.resolve().then(c.bind(c,81227))},97507:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-[60vh] p-6 text-center",role:"alert","aria-live":"assertive",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4","aria-hidden":"true",children:"\uD83D\uDD27"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2 text-[var(--color-text-main)]",children:"Internal Server Error"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--color-text-muted)] max-w-[400px] leading-relaxed mb-2",children:"Something went wrong while processing your request. Our team has been notified and is working on a fix."}),a?.digest&&(0,d.jsxs)("p",{className:"text-xs text-[var(--color-text-muted)] mb-6 font-mono",children:["Error ID: ",a.digest]}),!1,(0,d.jsxs)("div",{className:"flex gap-3",children:[(0,d.jsx)("button",{onClick:b,"aria-label":"Retry loading the page",className:"px-6 py-2.5 rounded-lg text-white text-sm font-semibold cursor-pointer transition-all duration-200 motion-reduce:transition-none bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]",children:"Try Again"}),(0,d.jsx)("a",{href:"/dashboard",className:"px-6 py-2.5 rounded-lg text-[var(--color-text-main)] text-sm font-semibold cursor-pointer transition-all duration-200 motion-reduce:transition-none border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]","aria-label":"Return to dashboard",children:"Go to Dashboard"}),(0,d.jsx)("a",{href:"/status",className:"px-6 py-2.5 rounded-lg text-[var(--color-text-main)] text-sm font-semibold cursor-pointer transition-all duration-200 motion-reduce:transition-none border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]","aria-label":"Open system status",children:"System Status"})]})]})}}};