omniroute 1.0.0 → 1.0.1

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 (426) hide show
  1. package/README.de.md +5 -5
  2. package/README.es.md +5 -5
  3. package/README.fr.md +5 -5
  4. package/README.it.md +5 -5
  5. package/README.md +1 -1
  6. package/README.pt-BR.md +1 -1
  7. package/README.ru.md +5 -5
  8. package/README.zh-CN.md +5 -5
  9. package/app/.next/BUILD_ID +1 -1
  10. package/app/.next/app-path-routes-manifest.json +36 -36
  11. package/app/.next/build-manifest.json +2 -2
  12. package/app/.next/prerender-manifest.json +3 -3
  13. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/limits/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/profile/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/_global-error.html +2 -2
  32. package/app/.next/server/app/_global-error.rsc +1 -1
  33. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  34. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  35. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  36. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  37. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  38. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  39. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/_not-found.html +1 -1
  41. package/app/.next/server/app/_not-found.rsc +2 -2
  42. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  43. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  44. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  45. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  46. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  47. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  48. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  53. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  55. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
  57. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  59. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  61. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +1 -1
  63. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  65. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  67. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  70. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  72. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  74. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
  76. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/models/route.js +1 -1
  100. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  102. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  105. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/providers/route.js +1 -1
  124. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  134. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/callback.html +1 -1
  183. package/app/.next/server/app/callback.rsc +2 -2
  184. package/app/.next/server/app/callback.segments/_full.segment.rsc +2 -2
  185. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  186. package/app/.next/server/app/callback.segments/_index.segment.rsc +2 -2
  187. package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
  188. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  189. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  190. package/app/.next/server/app/dashboard/analytics.html +1 -1
  191. package/app/.next/server/app/dashboard/analytics.rsc +4 -4
  192. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +2 -2
  193. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  194. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  195. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  196. package/app/.next/server/app/dashboard/analytics.segments/_full.segment.rsc +4 -4
  197. package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  198. package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +2 -2
  199. package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
  200. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  201. package/app/.next/server/app/dashboard/cli-tools.rsc +4 -4
  202. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  203. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  204. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  205. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  206. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +4 -4
  207. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  208. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +2 -2
  209. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  210. package/app/.next/server/app/dashboard/combos.html +1 -1
  211. package/app/.next/server/app/dashboard/combos.rsc +4 -4
  212. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  213. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  214. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  215. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  216. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +4 -4
  217. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  218. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +2 -2
  219. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  220. package/app/.next/server/app/dashboard/costs.html +1 -1
  221. package/app/.next/server/app/dashboard/costs.rsc +4 -4
  222. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +2 -2
  223. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs.segment.rsc +1 -1
  224. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  225. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  226. package/app/.next/server/app/dashboard/costs.segments/_full.segment.rsc +4 -4
  227. package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
  228. package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +2 -2
  229. package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +1 -1
  230. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  231. package/app/.next/server/app/dashboard/endpoint.rsc +4 -4
  232. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  233. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  234. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  235. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  236. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +4 -4
  237. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  238. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +2 -2
  239. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  240. package/app/.next/server/app/dashboard/health.html +1 -1
  241. package/app/.next/server/app/dashboard/health.rsc +4 -4
  242. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +2 -2
  243. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +1 -1
  244. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  245. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  246. package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +4 -4
  247. package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
  248. package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +2 -2
  249. package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +1 -1
  250. package/app/.next/server/app/dashboard/limits.html +2 -2
  251. package/app/.next/server/app/dashboard/limits.rsc +4 -4
  252. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +2 -2
  253. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +1 -1
  254. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  255. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  256. package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +4 -4
  257. package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +1 -1
  258. package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +2 -2
  259. package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +1 -1
  260. package/app/.next/server/app/dashboard/onboarding.html +1 -1
  261. package/app/.next/server/app/dashboard/onboarding.rsc +3 -3
  262. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +1 -1
  263. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
  264. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  265. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  266. package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +3 -3
  267. package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
  268. package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +2 -2
  269. package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +1 -1
  270. package/app/.next/server/app/dashboard/profile.html +1 -1
  271. package/app/.next/server/app/dashboard/profile.rsc +3 -3
  272. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  273. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  274. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  275. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  276. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +3 -3
  277. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  278. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +2 -2
  279. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  280. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  281. package/app/.next/server/app/dashboard/providers/new.rsc +4 -4
  282. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  283. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  284. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  285. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  286. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  287. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +4 -4
  288. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  289. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +2 -2
  290. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  291. package/app/.next/server/app/dashboard/providers.html +1 -1
  292. package/app/.next/server/app/dashboard/providers.rsc +4 -4
  293. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  294. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  295. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  296. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  297. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +4 -4
  298. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  299. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +2 -2
  300. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  301. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  302. package/app/.next/server/app/dashboard/settings/pricing.rsc +3 -3
  303. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  304. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  305. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  306. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  307. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  308. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  309. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  310. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +2 -2
  311. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  312. package/app/.next/server/app/dashboard/settings.html +1 -1
  313. package/app/.next/server/app/dashboard/settings.rsc +4 -4
  314. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
  315. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  316. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  317. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  318. package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +4 -4
  319. package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
  320. package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +2 -2
  321. package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +1 -1
  322. package/app/.next/server/app/dashboard/translator.html +2 -2
  323. package/app/.next/server/app/dashboard/translator.rsc +4 -4
  324. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  325. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  326. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  327. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  328. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +4 -4
  329. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  330. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +2 -2
  331. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  332. package/app/.next/server/app/dashboard/usage.html +1 -1
  333. package/app/.next/server/app/dashboard/usage.rsc +4 -4
  334. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  335. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  336. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  337. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  338. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +4 -4
  339. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  340. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +2 -2
  341. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  342. package/app/.next/server/app/docs/page.js +1 -1
  343. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  344. package/app/.next/server/app/docs.html +1 -1
  345. package/app/.next/server/app/docs.rsc +2 -2
  346. package/app/.next/server/app/docs.segments/_full.segment.rsc +2 -2
  347. package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  348. package/app/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  349. package/app/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
  350. package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  351. package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  352. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  353. package/app/.next/server/app/forbidden.html +1 -1
  354. package/app/.next/server/app/forbidden.rsc +2 -2
  355. package/app/.next/server/app/forbidden.segments/_full.segment.rsc +2 -2
  356. package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
  357. package/app/.next/server/app/forbidden.segments/_index.segment.rsc +2 -2
  358. package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +1 -1
  359. package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +1 -1
  360. package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +1 -1
  361. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  362. package/app/.next/server/app/forgot-password.html +1 -1
  363. package/app/.next/server/app/forgot-password.rsc +3 -3
  364. package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +3 -3
  365. package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
  366. package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +2 -2
  367. package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +1 -1
  368. package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +2 -2
  369. package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +1 -1
  370. package/app/.next/server/app/index.html +1 -1
  371. package/app/.next/server/app/index.rsc +2 -2
  372. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  373. package/app/.next/server/app/index.segments/_full.segment.rsc +2 -2
  374. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  375. package/app/.next/server/app/index.segments/_index.segment.rsc +2 -2
  376. package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  377. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  378. package/app/.next/server/app/landing.html +1 -1
  379. package/app/.next/server/app/landing.rsc +2 -2
  380. package/app/.next/server/app/landing.segments/_full.segment.rsc +2 -2
  381. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  382. package/app/.next/server/app/landing.segments/_index.segment.rsc +2 -2
  383. package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
  384. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  385. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  386. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  387. package/app/.next/server/app/login.html +1 -1
  388. package/app/.next/server/app/login.rsc +3 -3
  389. package/app/.next/server/app/login.segments/_full.segment.rsc +3 -3
  390. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  391. package/app/.next/server/app/login.segments/_index.segment.rsc +2 -2
  392. package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  393. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  394. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  395. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  396. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  397. package/app/.next/server/app/privacy.html +1 -1
  398. package/app/.next/server/app/privacy.rsc +2 -2
  399. package/app/.next/server/app/privacy.segments/_full.segment.rsc +2 -2
  400. package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
  401. package/app/.next/server/app/privacy.segments/_index.segment.rsc +2 -2
  402. package/app/.next/server/app/privacy.segments/_tree.segment.rsc +1 -1
  403. package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +1 -1
  404. package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
  405. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  406. package/app/.next/server/app/terms.html +1 -1
  407. package/app/.next/server/app/terms.rsc +2 -2
  408. package/app/.next/server/app/terms.segments/_full.segment.rsc +2 -2
  409. package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
  410. package/app/.next/server/app/terms.segments/_index.segment.rsc +2 -2
  411. package/app/.next/server/app/terms.segments/_tree.segment.rsc +1 -1
  412. package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
  413. package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
  414. package/app/.next/server/app-paths-manifest.json +36 -36
  415. package/app/.next/server/chunks/5583.js +1 -1
  416. package/app/.next/server/chunks/9824.js +1 -1
  417. package/app/.next/server/pages/404.html +1 -1
  418. package/app/.next/server/pages/500.html +2 -2
  419. package/app/.next/server/server-reference-manifest.js +1 -1
  420. package/app/.next/server/server-reference-manifest.json +1 -1
  421. package/app/.next/static/chunks/{5846-e5043393303d82cc.js → 5846-dfe52e95348ffdd8.js} +1 -1
  422. package/app/.next/static/chunks/{993-547810f7937fb3fe.js → 993-5102e3fd1db64935.js} +1 -1
  423. package/app/package.json +1 -1
  424. package/package.json +1 -1
  425. /package/app/.next/static/{r6jUR903zdObDI9pgxvsU → mo3wTjoSYKP1E96Wu512B}/_buildManifest.js +0 -0
  426. /package/app/.next/static/{r6jUR903zdObDI9pgxvsU → mo3wTjoSYKP1E96Wu512B}/_ssgManifest.js +0 -0
@@ -2,16 +2,16 @@
2
2
  "/_not-found/page": "app/_not-found/page.js",
3
3
  "/_global-error/page": "app/_global-error/page.js",
4
4
  "/api/auth/login/route": "app/api/auth/login/route.js",
5
- "/api/cache/route": "app/api/cache/route.js",
6
5
  "/api/auth/logout/route": "app/api/auth/logout/route.js",
6
+ "/api/cache/route": "app/api/cache/route.js",
7
7
  "/api/cache/stats/route": "app/api/cache/stats/route.js",
8
8
  "/api/cli-tools/antigravity-mitm/alias/route": "app/api/cli-tools/antigravity-mitm/alias/route.js",
9
9
  "/api/cli-tools/backups/route": "app/api/cli-tools/backups/route.js",
10
10
  "/api/cli-tools/codex-profiles/route": "app/api/cli-tools/codex-profiles/route.js",
11
11
  "/api/cli-tools/guide-settings/[toolId]/route": "app/api/cli-tools/guide-settings/[toolId]/route.js",
12
12
  "/api/cloud/auth/route": "app/api/cloud/auth/route.js",
13
- "/api/cloud/model/resolve/route": "app/api/cloud/model/resolve/route.js",
14
13
  "/api/cloud/credentials/update/route": "app/api/cloud/credentials/update/route.js",
14
+ "/api/cloud/model/resolve/route": "app/api/cloud/model/resolve/route.js",
15
15
  "/api/cloud/models/alias/route": "app/api/cloud/models/alias/route.js",
16
16
  "/api/combos/[id]/route": "app/api/combos/[id]/route.js",
17
17
  "/api/combos/metrics/route": "app/api/combos/metrics/route.js",
@@ -21,10 +21,10 @@
21
21
  "/api/db-backups/exportAll/route": "app/api/db-backups/exportAll/route.js",
22
22
  "/api/db-backups/import/route": "app/api/db-backups/import/route.js",
23
23
  "/api/db-backups/route": "app/api/db-backups/route.js",
24
- "/api/evals/[suiteId]/route": "app/api/evals/[suiteId]/route.js",
25
24
  "/api/evals/route": "app/api/evals/route.js",
26
- "/api/fallback/chains/route": "app/api/fallback/chains/route.js",
25
+ "/api/evals/[suiteId]/route": "app/api/evals/[suiteId]/route.js",
27
26
  "/api/init/route": "app/api/init/route.js",
27
+ "/api/fallback/chains/route": "app/api/fallback/chains/route.js",
28
28
  "/api/keys/[id]/route": "app/api/keys/[id]/route.js",
29
29
  "/api/keys/route": "app/api/keys/route.js",
30
30
  "/api/models/alias/route": "app/api/models/alias/route.js",
@@ -32,17 +32,17 @@
32
32
  "/api/models/catalog/route": "app/api/models/catalog/route.js",
33
33
  "/api/models/route": "app/api/models/route.js",
34
34
  "/api/monitoring/health/route": "app/api/monitoring/health/route.js",
35
- "/api/oauth/cursor/import/route": "app/api/oauth/cursor/import/route.js",
36
35
  "/api/oauth/[provider]/[action]/route": "app/api/oauth/[provider]/[action]/route.js",
37
36
  "/api/oauth/cursor/auto-import/route": "app/api/oauth/cursor/auto-import/route.js",
37
+ "/api/oauth/cursor/import/route": "app/api/oauth/cursor/import/route.js",
38
38
  "/api/oauth/kiro/auto-import/route": "app/api/oauth/kiro/auto-import/route.js",
39
39
  "/api/oauth/kiro/import/route": "app/api/oauth/kiro/import/route.js",
40
40
  "/api/oauth/kiro/social-authorize/route": "app/api/oauth/kiro/social-authorize/route.js",
41
41
  "/api/oauth/kiro/social-exchange/route": "app/api/oauth/kiro/social-exchange/route.js",
42
- "/api/policies/route": "app/api/policies/route.js",
43
42
  "/api/pricing/defaults/route": "app/api/pricing/defaults/route.js",
44
- "/api/pricing/models/route": "app/api/pricing/models/route.js",
43
+ "/api/policies/route": "app/api/policies/route.js",
45
44
  "/api/pricing/route": "app/api/pricing/route.js",
45
+ "/api/pricing/models/route": "app/api/pricing/models/route.js",
46
46
  "/api/provider-metrics/route": "app/api/provider-metrics/route.js",
47
47
  "/api/provider-models/route": "app/api/provider-models/route.js",
48
48
  "/api/provider-nodes/[id]/route": "app/api/provider-nodes/[id]/route.js",
@@ -51,98 +51,98 @@
51
51
  "/api/providers/[id]/route": "app/api/providers/[id]/route.js",
52
52
  "/api/providers/client/route": "app/api/providers/client/route.js",
53
53
  "/api/providers/route": "app/api/providers/route.js",
54
+ "/api/providers/test-batch/route": "app/api/providers/test-batch/route.js",
54
55
  "/api/providers/validate/route": "app/api/providers/validate/route.js",
55
56
  "/api/rate-limit/route": "app/api/rate-limit/route.js",
56
- "/api/providers/test-batch/route": "app/api/providers/test-batch/route.js",
57
57
  "/api/rate-limits/route": "app/api/rate-limits/route.js",
58
58
  "/api/resilience/reset/route": "app/api/resilience/reset/route.js",
59
- "/api/restart/route": "app/api/restart/route.js",
60
59
  "/api/resilience/route": "app/api/resilience/route.js",
60
+ "/api/restart/route": "app/api/restart/route.js",
61
61
  "/api/sessions/route": "app/api/sessions/route.js",
62
- "/api/settings/ip-filter/route": "app/api/settings/ip-filter/route.js",
63
62
  "/api/settings/combo-defaults/route": "app/api/settings/combo-defaults/route.js",
63
+ "/api/settings/ip-filter/route": "app/api/settings/ip-filter/route.js",
64
64
  "/api/settings/require-login/route": "app/api/settings/require-login/route.js",
65
65
  "/api/settings/route": "app/api/settings/route.js",
66
- "/api/settings/thinking-budget/route": "app/api/settings/thinking-budget/route.js",
67
66
  "/api/settings/system-prompt/route": "app/api/settings/system-prompt/route.js",
67
+ "/api/settings/thinking-budget/route": "app/api/settings/thinking-budget/route.js",
68
+ "/api/shutdown/route": "app/api/shutdown/route.js",
68
69
  "/api/storage/health/route": "app/api/storage/health/route.js",
69
70
  "/api/sync/cloud/route": "app/api/sync/cloud/route.js",
70
- "/api/shutdown/route": "app/api/shutdown/route.js",
71
- "/api/sync/initialize/route": "app/api/sync/initialize/route.js",
72
71
  "/api/tags/route": "app/api/tags/route.js",
73
- "/api/translator/detect/route": "app/api/translator/detect/route.js",
72
+ "/api/sync/initialize/route": "app/api/sync/initialize/route.js",
74
73
  "/api/telemetry/summary/route": "app/api/telemetry/summary/route.js",
75
- "/api/translator/history/route": "app/api/translator/history/route.js",
76
74
  "/api/token-health/route": "app/api/token-health/route.js",
75
+ "/api/translator/detect/route": "app/api/translator/detect/route.js",
77
76
  "/api/translator/load/route": "app/api/translator/load/route.js",
77
+ "/api/translator/history/route": "app/api/translator/history/route.js",
78
78
  "/api/translator/save/route": "app/api/translator/save/route.js",
79
79
  "/api/translator/send/route": "app/api/translator/send/route.js",
80
80
  "/api/translator/translate/route": "app/api/translator/translate/route.js",
81
81
  "/api/usage/[connectionId]/route": "app/api/usage/[connectionId]/route.js",
82
82
  "/api/usage/analytics/route": "app/api/usage/analytics/route.js",
83
+ "/api/usage/call-logs/[id]/route": "app/api/usage/call-logs/[id]/route.js",
83
84
  "/api/usage/budget/route": "app/api/usage/budget/route.js",
84
85
  "/api/usage/call-logs/route": "app/api/usage/call-logs/route.js",
85
86
  "/api/usage/history/route": "app/api/usage/history/route.js",
86
- "/api/usage/call-logs/[id]/route": "app/api/usage/call-logs/[id]/route.js",
87
87
  "/api/usage/logs/route": "app/api/usage/logs/route.js",
88
- "/api/v1/api/chat/route": "app/api/v1/api/chat/route.js",
89
88
  "/api/usage/request-logs/route": "app/api/usage/request-logs/route.js",
90
- "/api/v1/audio/speech/route": "app/api/v1/audio/speech/route.js",
89
+ "/api/v1/api/chat/route": "app/api/v1/api/chat/route.js",
91
90
  "/api/v1/audio/transcriptions/route": "app/api/v1/audio/transcriptions/route.js",
91
+ "/api/v1/audio/speech/route": "app/api/v1/audio/speech/route.js",
92
92
  "/api/v1/chat/completions/route": "app/api/v1/chat/completions/route.js",
93
93
  "/api/v1/embeddings/route": "app/api/v1/embeddings/route.js",
94
- "/api/v1/messages/count_tokens/route": "app/api/v1/messages/count_tokens/route.js",
95
94
  "/api/v1/images/generations/route": "app/api/v1/images/generations/route.js",
95
+ "/api/v1/messages/count_tokens/route": "app/api/v1/messages/count_tokens/route.js",
96
96
  "/api/v1/messages/route": "app/api/v1/messages/route.js",
97
- "/api/v1/models/route": "app/api/v1/models/route.js",
98
97
  "/api/v1/moderations/route": "app/api/v1/moderations/route.js",
99
98
  "/api/v1/providers/[provider]/chat/completions/route": "app/api/v1/providers/[provider]/chat/completions/route.js",
99
+ "/api/v1/models/route": "app/api/v1/models/route.js",
100
100
  "/api/v1/providers/[provider]/embeddings/route": "app/api/v1/providers/[provider]/embeddings/route.js",
101
101
  "/api/v1/providers/[provider]/images/generations/route": "app/api/v1/providers/[provider]/images/generations/route.js",
102
- "/api/v1/rerank/route": "app/api/v1/rerank/route.js",
103
102
  "/api/v1/responses/route": "app/api/v1/responses/route.js",
104
- "/api/v1beta/models/[...path]/route": "app/api/v1beta/models/[...path]/route.js",
105
103
  "/api/v1/route": "app/api/v1/route.js",
106
104
  "/api/v1beta/models/route": "app/api/v1beta/models/route.js",
105
+ "/api/v1/rerank/route": "app/api/v1/rerank/route.js",
106
+ "/api/v1beta/models/[...path]/route": "app/api/v1beta/models/[...path]/route.js",
107
107
  "/api/cli-tools/antigravity-mitm/route": "app/api/cli-tools/antigravity-mitm/route.js",
108
- "/api/cli-tools/claude-settings/route": "app/api/cli-tools/claude-settings/route.js",
109
108
  "/api/cli-tools/cline-settings/route": "app/api/cli-tools/cline-settings/route.js",
109
+ "/api/cli-tools/claude-settings/route": "app/api/cli-tools/claude-settings/route.js",
110
110
  "/api/cli-tools/droid-settings/route": "app/api/cli-tools/droid-settings/route.js",
111
- "/api/cli-tools/openclaw-settings/route": "app/api/cli-tools/openclaw-settings/route.js",
112
- "/api/cli-tools/runtime/[toolId]/route": "app/api/cli-tools/runtime/[toolId]/route.js",
113
111
  "/api/cli-tools/codex-settings/route": "app/api/cli-tools/codex-settings/route.js",
114
- "/api/cli-tools/status/route": "app/api/cli-tools/status/route.js",
115
112
  "/api/cli-tools/kilo-settings/route": "app/api/cli-tools/kilo-settings/route.js",
113
+ "/api/cli-tools/runtime/[toolId]/route": "app/api/cli-tools/runtime/[toolId]/route.js",
114
+ "/api/cli-tools/status/route": "app/api/cli-tools/status/route.js",
116
115
  "/api/combos/test/route": "app/api/combos/test/route.js",
117
116
  "/api/provider-nodes/route": "app/api/provider-nodes/route.js",
118
- "/api/providers/[id]/test/route": "app/api/providers/[id]/test/route.js",
119
- "/api/settings/proxy/test/route": "app/api/settings/proxy/test/route.js",
117
+ "/api/cli-tools/openclaw-settings/route": "app/api/cli-tools/openclaw-settings/route.js",
120
118
  "/api/settings/proxy/route": "app/api/settings/proxy/route.js",
121
119
  "/api/usage/proxy-logs/route": "app/api/usage/proxy-logs/route.js",
120
+ "/api/settings/proxy/test/route": "app/api/settings/proxy/test/route.js",
121
+ "/api/providers/[id]/test/route": "app/api/providers/[id]/test/route.js",
122
122
  "/callback/page": "app/callback/page.js",
123
123
  "/docs/page": "app/docs/page.js",
124
- "/forgot-password/page": "app/forgot-password/page.js",
125
124
  "/forbidden/page": "app/forbidden/page.js",
125
+ "/forgot-password/page": "app/forgot-password/page.js",
126
126
  "/landing/page": "app/landing/page.js",
127
127
  "/login/page": "app/login/page.js",
128
128
  "/page": "app/page.js",
129
- "/terms/page": "app/terms/page.js",
130
129
  "/privacy/page": "app/privacy/page.js",
131
- "/(dashboard)/dashboard/cli-tools/page": "app/(dashboard)/dashboard/cli-tools/page.js",
132
- "/(dashboard)/dashboard/analytics/page": "app/(dashboard)/dashboard/analytics/page.js",
130
+ "/terms/page": "app/terms/page.js",
133
131
  "/(dashboard)/dashboard/costs/page": "app/(dashboard)/dashboard/costs/page.js",
132
+ "/(dashboard)/dashboard/analytics/page": "app/(dashboard)/dashboard/analytics/page.js",
133
+ "/(dashboard)/dashboard/cli-tools/page": "app/(dashboard)/dashboard/cli-tools/page.js",
134
134
  "/(dashboard)/dashboard/endpoint/page": "app/(dashboard)/dashboard/endpoint/page.js",
135
- "/(dashboard)/dashboard/health/page": "app/(dashboard)/dashboard/health/page.js",
136
135
  "/(dashboard)/dashboard/limits/page": "app/(dashboard)/dashboard/limits/page.js",
136
+ "/(dashboard)/dashboard/health/page": "app/(dashboard)/dashboard/health/page.js",
137
137
  "/(dashboard)/dashboard/profile/page": "app/(dashboard)/dashboard/profile/page.js",
138
138
  "/(dashboard)/dashboard/providers/new/page": "app/(dashboard)/dashboard/providers/new/page.js",
139
- "/(dashboard)/dashboard/settings/pricing/page": "app/(dashboard)/dashboard/settings/pricing/page.js",
140
139
  "/(dashboard)/dashboard/settings/page": "app/(dashboard)/dashboard/settings/page.js",
140
+ "/(dashboard)/dashboard/settings/pricing/page": "app/(dashboard)/dashboard/settings/pricing/page.js",
141
141
  "/(dashboard)/dashboard/page": "app/(dashboard)/dashboard/page.js",
142
+ "/(dashboard)/dashboard/usage/page": "app/(dashboard)/dashboard/usage/page.js",
142
143
  "/(dashboard)/dashboard/onboarding/page": "app/(dashboard)/dashboard/onboarding/page.js",
143
- "/(dashboard)/dashboard/translator/page": "app/(dashboard)/dashboard/translator/page.js",
144
144
  "/(dashboard)/dashboard/combos/page": "app/(dashboard)/dashboard/combos/page.js",
145
- "/(dashboard)/dashboard/usage/page": "app/(dashboard)/dashboard/usage/page.js",
145
+ "/(dashboard)/dashboard/translator/page": "app/(dashboard)/dashboard/translator/page.js",
146
146
  "/(dashboard)/dashboard/providers/page": "app/(dashboard)/dashboard/providers/page.js",
147
147
  "/(dashboard)/dashboard/providers/[id]/page": "app/(dashboard)/dashboard/providers/[id]/page.js"
148
148
  }
@@ -1,2 +1,2 @@
1
1
  exports.id=5583,exports.ids=[5583],exports.modules={7224:(a,b,c)=>{Promise.resolve().then(c.bind(c,67045))},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))},17084:(a,b,c)=>{"use strict";c.d(b,{Q2:()=>o,DI:()=>l,fg:()=>j,MA:()=>p,IS:()=>h,zN:()=>i,JH:()=>k,wb:()=>s,wG:()=>r,zt:()=>q,gb:()=>n,mq:()=>m});var d=c(60258);let e=d.Ikc({id:d.YjP().min(1),alias:d.YjP().min(1),name:d.YjP().min(1),icon:d.YjP().min(1),color:d.YjP().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:d.YjP().optional(),website:d.YjP().url().optional(),passthroughModels:d.zMY().optional()}),f=d.g1P(d.YjP(),e);function g(a,b){let c=f.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}`)}}let h={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"}},i={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"}},j={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"},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"}},k="openai-compatible-",l="anthropic-compatible-";function m(a){return"string"==typeof a&&a.startsWith(k)}function n(a){return"string"==typeof a&&a.startsWith(l)}let o={...h,...i,...j},p={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function q(a){for(let b of Object.values(o))if(b.alias===a||b.id===a)return b;return null}function r(a){let b=o[a];return b?.alias||a}Object.values(o).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(o).reduce((a,b)=>(a[b.id]=b.alias,a),{});let s=["antigravity","kiro","github","codex","claude"];g(h,"FREE_PROVIDERS"),g(i,"OAUTH_PROVIDERS"),g(j,"APIKEY_PROVIDERS")},25977:(a,b,c)=>{"use strict";var d=c(49226),e=c(40287),f=c(87068);let g="[HealthCheck]",h=!1;async function i(){try{let a=await (0,e.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await j(b)}catch(a){console.error(`${g} Error checking ${b.name||b.id}:`,a.message)}}catch(a){console.error(`${g} Sweep error:`,a.message)}}async function j(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,f.Ny)(a.provider)){let b=new Date().toISOString();await (0,e.rj)(a.id,{lastHealthCheckAt:b}),console.log(`${g} 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;console.log(`${g} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let d={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await (0,f.iD)(a.provider,d,{info:(a,b)=>console.log(`${g} [${a}] ${b}`),warn:(a,b)=>console.warn(`${g} [${a}] ${b}`),error:(a,b,c)=>console.error(`${g} [${a}] ${b}`,c||"")}),i=new Date().toISOString();if((0,f.jT)(h)){await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"expired",lastError:`Refresh token consumed (${h.error}). Please re-authenticate this account.`,lastErrorAt:i,lastErrorType:h.error,lastErrorSource:"oauth",errorCode:h.error,isActive:!1,refreshToken:null}),console.error(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${h.error}). Connection deactivated. Re-authenticate to restore.`);return}if(h&&h.accessToken){let b={accessToken:h.accessToken,lastHealthCheckAt:i,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};h.refreshToken&&(b.refreshToken=h.refreshToken),h.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*h.expiresIn).toISOString()),await (0,e.rj)(a.id,b),console.log(`${g} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:i,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),console.warn(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}h=!0,console.log(`${g} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{i(),setInterval(i,6e4)},1e4);let k=!1;(async function(){if(!k)try{await (0,d.A)(),k=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return k})().catch(a=>console.error("[CloudSync] ensure failed:",a))},29348:(a,b,c)=>{Promise.resolve().then(c.bind(c,75146))},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")},47695:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(31417),e=c(300),f=c(73959);let g=(0,d.v)()((0,e.Zr)((a,b)=>({theme:f.B2.defaultTheme,setTheme:b=>{a({theme:b})},toggleTheme:()=>{let c="dark"===b().theme?"light":"dark";a({theme:c})},initTheme:()=>{b().theme}}),{name:f.B2.storageKey}))},47825:(a,b,c)=>{"use strict";c.d(b,{KC:()=>d.KC,Xg:()=>d.Xg});var d=c(97319);Object.entries(c(17084).Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},49226:(a,b,c)=>{"use strict";c.d(b,{A:()=>k});var d=c(90357),e=c(40287);let f=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||process.env.NEXT_PUBLIC_APP_URL||"http://localhost:20128";class g{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(`${f}/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 h=null;async function i(a=null,b=15){return h||(h=new g(a,b)),h}async function j(){try{await (0,e.bI)();let a=await i(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&&j().catch(a=>console.error("[CloudSync] init failed:",a));let k=j},61135:()=>{},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",{children:(0,d.jsxs)("body",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[#0a0a0f] text-[#e0e0e0] font-[system-ui,-apple-system,sans-serif] text-center m-0",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4",children:"⚠️"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-[15px] text-[#888] max-w-[400px] leading-relaxed mb-6",children:"An unexpected error occurred. This has been logged and our team will investigate."}),!1,(0,d.jsx)("button",{onClick:b,className:"px-8 py-3 rounded-[10px] text-white border-none text-sm font-semibold cursor-pointer transition-transform duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6]",children:"Try Again"})]})})}},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-[var(--bg-primary,#0a0a0f)] text-[var(--text-primary,#e0e0e0)] text-center",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-[#6366f1] via-[#8b5cf6] to-[#a855f7] bg-clip-text text-transparent",children:"404"}),(0,d.jsx)("h1",{className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--text-secondary,#888)] max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsx)(f(),{href:"/dashboard",className:"px-8 py-3 rounded-[10px] text-white text-sm font-semibold no-underline transition-all duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6]",children:"Go to Dashboard"})]})}},73959:(a,b,c)=>{"use strict";c.d(b,{Q2:()=>d.Q2,fg:()=>d.fg,vQ:()=>e,MA:()=>d.MA,zN:()=>d.zN,B2:()=>f});var d=c(17084);c(47825);let e={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:"1.0.0"},f={storageKey:"theme",defaultTheme:"system"}},75146:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249);c(67484);var e=c(47695);function f({children:a}){let{initTheme:b}=(0,e.A)();return(0,d.jsx)(d.Fragment,{children:a})}},76160:(a,b,c)=>{Promise.resolve().then(c.bind(c,73857))},76196:(a,b,c)=>{Promise.resolve().then(c.bind(c,32444))},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i,metadata:()=>h});var d=c(5735),e=c(50609),f=c.n(e);c(61135);var g=c(32444);c(25977);let h={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"}};function i({children:a}){return(0,d.jsxs)("html",{lang:"en",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)(g.ThemeProvider,{children:a})]})]})}},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))},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")},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)})}}},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-pro-preview",name:"Gemini 3 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"}]},"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-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 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:"default",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-opus-4-5-thinking",name:"Claude Opus 4.5 Thinking"},{id:"claude-sonnet-4-5-thinking",name:"Claude Sonnet 4.5 Thinking"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5"},{id:"gemini-3-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}]},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",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:"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"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],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"}]},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"}]},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))}};
2
+ ${a}`),Error(`Provider validation failed for ${b}`)}}let h={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"}},i={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"}},j={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"},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"}},k="openai-compatible-",l="anthropic-compatible-";function m(a){return"string"==typeof a&&a.startsWith(k)}function n(a){return"string"==typeof a&&a.startsWith(l)}let o={...h,...i,...j},p={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function q(a){for(let b of Object.values(o))if(b.alias===a||b.id===a)return b;return null}function r(a){let b=o[a];return b?.alias||a}Object.values(o).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(o).reduce((a,b)=>(a[b.id]=b.alias,a),{});let s=["antigravity","kiro","github","codex","claude"];g(h,"FREE_PROVIDERS"),g(i,"OAUTH_PROVIDERS"),g(j,"APIKEY_PROVIDERS")},25977:(a,b,c)=>{"use strict";var d=c(49226),e=c(40287),f=c(87068);let g="[HealthCheck]",h=!1;async function i(){try{let a=await (0,e.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await j(b)}catch(a){console.error(`${g} Error checking ${b.name||b.id}:`,a.message)}}catch(a){console.error(`${g} Sweep error:`,a.message)}}async function j(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,f.Ny)(a.provider)){let b=new Date().toISOString();await (0,e.rj)(a.id,{lastHealthCheckAt:b}),console.log(`${g} 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;console.log(`${g} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let d={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await (0,f.iD)(a.provider,d,{info:(a,b)=>console.log(`${g} [${a}] ${b}`),warn:(a,b)=>console.warn(`${g} [${a}] ${b}`),error:(a,b,c)=>console.error(`${g} [${a}] ${b}`,c||"")}),i=new Date().toISOString();if((0,f.jT)(h)){await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"expired",lastError:`Refresh token consumed (${h.error}). Please re-authenticate this account.`,lastErrorAt:i,lastErrorType:h.error,lastErrorSource:"oauth",errorCode:h.error,isActive:!1,refreshToken:null}),console.error(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${h.error}). Connection deactivated. Re-authenticate to restore.`);return}if(h&&h.accessToken){let b={accessToken:h.accessToken,lastHealthCheckAt:i,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};h.refreshToken&&(b.refreshToken=h.refreshToken),h.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*h.expiresIn).toISOString()),await (0,e.rj)(a.id,b),console.log(`${g} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:i,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),console.warn(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}h=!0,console.log(`${g} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{i(),setInterval(i,6e4)},1e4);let k=!1;(async function(){if(!k)try{await (0,d.A)(),k=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return k})().catch(a=>console.error("[CloudSync] ensure failed:",a))},29348:(a,b,c)=>{Promise.resolve().then(c.bind(c,75146))},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")},47695:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(31417),e=c(300),f=c(73959);let g=(0,d.v)()((0,e.Zr)((a,b)=>({theme:f.B2.defaultTheme,setTheme:b=>{a({theme:b})},toggleTheme:()=>{let c="dark"===b().theme?"light":"dark";a({theme:c})},initTheme:()=>{b().theme}}),{name:f.B2.storageKey}))},47825:(a,b,c)=>{"use strict";c.d(b,{KC:()=>d.KC,Xg:()=>d.Xg});var d=c(97319);Object.entries(c(17084).Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},49226:(a,b,c)=>{"use strict";c.d(b,{A:()=>k});var d=c(90357),e=c(40287);let f=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||process.env.NEXT_PUBLIC_APP_URL||"http://localhost:20128";class g{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(`${f}/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 h=null;async function i(a=null,b=15){return h||(h=new g(a,b)),h}async function j(){try{await (0,e.bI)();let a=await i(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&&j().catch(a=>console.error("[CloudSync] init failed:",a));let k=j},61135:()=>{},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",{children:(0,d.jsxs)("body",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[#0a0a0f] text-[#e0e0e0] font-[system-ui,-apple-system,sans-serif] text-center m-0",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4",children:"⚠️"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-[15px] text-[#888] max-w-[400px] leading-relaxed mb-6",children:"An unexpected error occurred. This has been logged and our team will investigate."}),!1,(0,d.jsx)("button",{onClick:b,className:"px-8 py-3 rounded-[10px] text-white border-none text-sm font-semibold cursor-pointer transition-transform duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6]",children:"Try Again"})]})})}},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-[var(--bg-primary,#0a0a0f)] text-[var(--text-primary,#e0e0e0)] text-center",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-[#6366f1] via-[#8b5cf6] to-[#a855f7] bg-clip-text text-transparent",children:"404"}),(0,d.jsx)("h1",{className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--text-secondary,#888)] max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsx)(f(),{href:"/dashboard",className:"px-8 py-3 rounded-[10px] text-white text-sm font-semibold no-underline transition-all duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6]",children:"Go to Dashboard"})]})}},73959:(a,b,c)=>{"use strict";c.d(b,{Q2:()=>d.Q2,fg:()=>d.fg,vQ:()=>e,MA:()=>d.MA,zN:()=>d.zN,B2:()=>f});var d=c(17084);c(47825);let e={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:"1.0.1"},f={storageKey:"theme",defaultTheme:"system"}},75146:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249);c(67484);var e=c(47695);function f({children:a}){let{initTheme:b}=(0,e.A)();return(0,d.jsx)(d.Fragment,{children:a})}},76160:(a,b,c)=>{Promise.resolve().then(c.bind(c,73857))},76196:(a,b,c)=>{Promise.resolve().then(c.bind(c,32444))},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i,metadata:()=>h});var d=c(5735),e=c(50609),f=c.n(e);c(61135);var g=c(32444);c(25977);let h={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"}};function i({children:a}){return(0,d.jsxs)("html",{lang:"en",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)(g.ThemeProvider,{children:a})]})]})}},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))},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")},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)})}}},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-pro-preview",name:"Gemini 3 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"}]},"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-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 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:"default",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-opus-4-5-thinking",name:"Claude Opus 4.5 Thinking"},{id:"claude-sonnet-4-5-thinking",name:"Claude Sonnet 4.5 Thinking"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5"},{id:"gemini-3-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}]},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",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:"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"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],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"}]},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"}]},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))}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=9824,exports.ids=[9824],exports.modules={1237:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(67484),f=c(65953),g=c(53156);function h({isOpen:a,onClose:b,title:c="Manual Configuration",configs:h=[]}){let[i,j]=(0,e.useState)(null),k=async(a,b)=>{try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(a);else{let b=document.createElement("textarea");b.value=a,b.style.position="fixed",b.style.left="-9999px",b.style.top="-9999px",b.style.opacity="0",document.body.appendChild(b),b.focus(),b.select(),document.execCommand("copy"),document.body.removeChild(b)}j(b),setTimeout(()=>j(null),2e3)}catch(a){console.log("Failed to copy:",a)}};return(0,d.jsx)(f.default,{isOpen:a,onClose:b,title:c,size:"xl",children:(0,d.jsx)("div",{className:"flex flex-col gap-4",children:h.map((a,b)=>(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm font-medium text-text-main",children:a.filename}),(0,d.jsxs)(g.default,{variant:"ghost",size:"sm",onClick:()=>k(a.content,b),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:i===b?"check":"content_copy"}),i===b?"Copied!":"Copy"]})]}),(0,d.jsx)("pre",{className:"px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs overflow-x-auto whitespace-pre-wrap break-all max-h-60 overflow-y-auto border border-border",children:a.content})]},b))})})}},2490:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(31846);function f({children:a,title:b,subtitle:c,icon:f,action:g,padding:h="md",hover:i=!1,className:j,...k}){return(0,d.jsxs)("div",{className:(0,e.cn)("bg-surface","border border-black/5 dark:border-white/5","rounded-lg shadow-sm",i&&"hover:shadow-md hover:border-primary/30 transition-all cursor-pointer",{none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"}[h],j),...k,children:[(b||g)&&(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[f&&(0,d.jsx)("div",{className:"p-2 rounded-lg bg-bg text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:f})}),(0,d.jsxs)("div",{children:[b&&(0,d.jsx)("h3",{className:"text-text-main font-semibold",children:b}),c&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:c})]})]}),g]}),a]})}f.Section=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-4 rounded-lg","bg-black/[0.02] dark:bg-white/[0.02]","border border-black/5 dark:border-white/5",b),...c,children:a})},f.Row=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-3 -mx-3 px-3 transition-colors","border-b border-black/5 dark:border-white/5 last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]",b),...c,children:a})},f.ListItem=function({children:a,actions:b,className:c,...f}){return(0,d.jsxs)("div",{className:(0,e.cn)("group flex items-center justify-between p-3 -mx-3 px-3","border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]","transition-colors",c),...f,children:[(0,d.jsx)("div",{className:"flex-1 min-w-0",children:a}),b&&(0,d.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",children:b})]})}},4355:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(31846);let f={default:"bg-black/5 dark:bg-white/10 text-text-muted",primary:"bg-primary/10 text-primary",success:"bg-green-500/10 text-green-600 dark:text-green-400",warning:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",error:"bg-red-500/10 text-red-600 dark:text-red-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400"},g={sm:"px-2 py-0.5 text-[10px]",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1.5 text-sm"};function h({children:a,variant:b="default",size:c="md",dot:h=!1,icon:i,className:j}){return(0,d.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-1.5 rounded-full font-semibold",f[b],g[c],j),children:[h&&(0,d.jsx)("span",{"aria-hidden":"true",className:(0,e.cn)("size-1.5 rounded-full","success"===b&&"bg-green-500","warning"===b&&"bg-yellow-500","error"===b&&"bg-red-500","info"===b&&"bg-blue-500","primary"===b&&"bg-primary","default"===b&&"bg-gray-500")}),i&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]","aria-hidden":"true",children:i}),a]})}},8744:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(29824),i=c(73295);function j({isOpen:a,provider:b,providerInfo:c,onSuccess:f,onClose:g,idcConfig:j}){let[k,l]=(0,e.useState)("waiting"),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)(!1),y=(0,e.useRef)(null),{copied:z,copy:A}=(0,i.C)(),[B,C]=(0,e.useState)(!1),[D,E]=(0,e.useState)("/callback?code=...");(0,e.useRef)(!1),(0,e.useRef)(!1);let F=(0,e.useCallback)(async(a,c)=>{if(m)try{let d=await fetch(`/api/oauth/${b}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,redirectUri:m.redirectUri,codeVerifier:m.codeVerifier,state:c})}),e=await d.json();if(!d.ok)throw Error(e.error);l("success"),f?.()}catch(a){r(a.message),l("error")}},[m,b,f]),G=(0,e.useCallback)(async(a,c,d,e)=>{x(!0);for(let g=0;g<60;g++){await new Promise(a=>setTimeout(a,1e3*d));try{let g=await fetch(`/api/oauth/${b}/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:a,codeVerifier:c,extraData:e})}),h=await g.json();if(h.success){l("success"),x(!1),f?.();return}if("expired_token"===h.error||"access_denied"===h.error)throw Error(h.errorDescription||h.error);"slow_down"===h.error&&(d=Math.min(d+5,30))}catch(a){r(a.message),l("error"),x(!1);return}}r("Authorization timeout"),l("error"),x(!1)},[b,f]),H=(0,e.useCallback)(async()=>{if(b)try{if(r(null),"github"===b||"qwen"===b||"kiro"===b||"kimi-coding"===b||"kilocode"===b){t(!0),l("waiting");let a=await fetch(`/api/oauth/${b}/device-code`),c=await a.json();if(!a.ok)throw Error(c.error);v(c);let d=c.verification_uri_complete||c.verification_uri;d&&window.open(d,"oauth_verify");let e="kiro"===b?{_clientId:c._clientId,_clientSecret:c._clientSecret}:null;G(c.device_code,c.codeVerifier,c.interval||5,e);return}if("codex"===b&&B){try{let a=await fetch("/api/oauth/codex/start-callback-server"),b=await a.json();if(!a.ok)throw Error(b.error);n({...b,redirectUri:b.redirectUri}),l("waiting"),window.open(b.authUrl,"oauth_auth"),x(!0);for(let a=0;a<150;a++){await new Promise(a=>setTimeout(a,2e3));let a=await fetch("/api/oauth/codex/poll-callback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),b=await a.json();if(b.success){l("success"),x(!1),f?.();return}if(b.error&&!b.pending)throw Error(b.errorDescription||b.error)}throw x(!1),Error("Authorization timeout")}catch(a){x(!1),l("input"),r(a.message+" — You can paste the callback URL manually below.")}return}let a=window.location.port||("https:"===window.location.protocol?"443":"80"),c=`http://localhost:${a}/callback`,d=await fetch(`/api/oauth/${b}/authorize?redirect_uri=${encodeURIComponent(c)}`),e=await d.json();if(!d.ok)throw Error(e.error);n({...e,redirectUri:c}),B?(l("waiting"),y.current=window.open(e.authUrl,"oauth_popup","width=600,height=700"),y.current||l("input")):(l("input"),window.open(e.authUrl,"oauth_auth"))}catch(a){r(a.message),l("error")}},[b,B,G,f]),I=async()=>{try{r(null);let a=new URL(o),b=a.searchParams.get("code"),c=a.searchParams.get("state"),d=a.searchParams.get("error");if(d)throw Error(a.searchParams.get("error_description")||d);if(!b)throw Error("No authorization code found in URL");await F(b,c)}catch(a){r(a.message),l("error")}};return b&&c?(0,d.jsx)(h.aF,{isOpen:a,title:`Connect ${c.name}`,onClose:g,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["waiting"===k&&!s&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Waiting for Authorization"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Complete the authorization in the popup window."}),(0,d.jsx)(h.$n,{variant:"ghost",onClick:()=>l("input"),children:"Popup blocked? Enter URL manually"})]}),"waiting"===k&&s&&u&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"text-center py-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Visit the URL below and enter the code:"}),(0,d.jsxs)("div",{className:"bg-sidebar p-4 rounded-lg mb-4",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Verification URL"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("code",{className:"flex-1 text-sm break-all",children:u.verification_uri}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"verify_url"===z?"check":"content_copy",onClick:()=>A(u.verification_uri,"verify_url")})]})]}),(0,d.jsxs)("div",{className:"bg-primary/10 p-4 rounded-lg",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Your Code"}),(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,d.jsx)("p",{className:"text-2xl font-mono font-bold text-primary",children:u.user_code}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"user_code"===z?"check":"content_copy",onClick:()=>A(u.user_code,"user_code")})]})]})]}),w&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),"Waiting for authorization..."]})]}),"input"===k&&!s&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[!B&&(0,d.jsxs)("div",{className:"rounded-lg border border-blue-500/30 bg-blue-500/10 p-3 text-xs text-blue-200",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm align-middle mr-1",children:"info"}),(0,d.jsx)("strong",{children:"Remote access:"})," Since you're accessing OmniRoute remotely, after authorizing you'll see an error page (localhost not found). That's expected — just copy the full URL from your browser's address bar and paste it below."]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:m?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"auth_url"===z?"check":"content_copy",onClick:()=>A(m?.authUrl,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser."}),(0,d.jsx)(h.pd,{value:o,onChange:a=>p(a.target.value),placeholder:D,className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:I,fullWidth:!0,disabled:!o,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===k&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your ",c.name," account has been connected."]}),(0,d.jsx)(h.$n,{onClick:g,fullWidth:!0,children:"Done"})]}),"error"===k&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:q}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:H,variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(h.$n,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}j.propTypes={isOpen:g().bool.isRequired,provider:g().string,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},14797:(a,b,c)=>{c.d(b,{default:()=>p});var d=c(48249),e=c(19099),f=c(2116),g=c.n(f),h=c(81220),i=c(49885),j=c.n(i),k=c(29824),l=c(67484);let m={healthy:{icon:"check_circle",color:"#22c55e",tooltip:"All tokens healthy"},warning:{icon:"warning",color:"#f59e0b",tooltip:"Some tokens need attention"},error:{icon:"error",color:"#ef4444",tooltip:"Token refresh failures detected"},unknown:{icon:"help",color:"#6b7280",tooltip:"Health status unknown"}};function n(){let[a,b]=(0,l.useState)(null),[c,e]=(0,l.useState)(!1);if(!a||0===a.total)return null;let f=m[a.status]||m.unknown;return(0,d.jsxs)("div",{className:"relative",onMouseEnter:()=>e(!0),onMouseLeave:()=>e(!1),children:[(0,d.jsxs)("button",{className:"flex items-center gap-1 px-2 py-1.5 rounded-lg hover:bg-surface/30 transition-colors",title:f.tooltip,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:f.color},children:f.icon}),a.errored>0&&(0,d.jsx)("span",{className:"text-xs font-medium",style:{color:f.color},children:a.errored})]}),c&&(0,d.jsxs)("div",{className:"absolute top-full right-0 mt-1 z-50 min-w-[200px] p-3 rounded-lg shadow-lg",style:{background:"rgba(15, 15, 25, 0.95)",border:"1px solid rgba(255,255,255,0.1)",backdropFilter:"blur(12px)"},children:[(0,d.jsx)("p",{className:"text-xs font-medium text-text-main mb-2",children:"Token Health"}),(0,d.jsxs)("div",{className:"flex flex-col gap-1 text-xs",children:[(0,d.jsxs)("div",{className:"flex justify-between",children:[(0,d.jsx)("span",{className:"text-text-muted",children:"Total OAuth"}),(0,d.jsx)("span",{className:"text-text-main",children:a.total})]}),(0,d.jsxs)("div",{className:"flex justify-between",children:[(0,d.jsx)("span",{className:"text-emerald-400",children:"Healthy"}),(0,d.jsx)("span",{className:"text-text-main",children:a.healthy})]}),a.errored>0&&(0,d.jsxs)("div",{className:"flex justify-between",children:[(0,d.jsx)("span",{className:"text-red-400",children:"Errored"}),(0,d.jsx)("span",{className:"text-text-main",children:a.errored})]}),a.warning>0&&(0,d.jsxs)("div",{className:"flex justify-between",children:[(0,d.jsx)("span",{className:"text-amber-400",children:"Warning"}),(0,d.jsx)("span",{className:"text-text-main",children:a.warning})]}),a.lastCheckAt&&(0,d.jsxs)("div",{className:"flex justify-between mt-1 pt-1 border-t border-white/5",children:[(0,d.jsx)("span",{className:"text-text-muted",children:"Last check"}),(0,d.jsx)("span",{className:"text-text-muted",children:new Date(a.lastCheckAt).toLocaleTimeString()})]})]})]})]})}var o=c(17084);function p({onMenuClick:a,showMenuButton:b=!0}){let c=(0,e.usePathname)(),f=(0,e.useRouter)(),{title:i,description:j,breadcrumbs:l}=(a=>{if(!a)return{title:"",description:"",breadcrumbs:[]};let b=a.match(/\/providers\/([^/]+)$/);if(b){let a=b[1],c=o.zN[a]||o.IS[a]||o.fg[a];if(c)return{title:c.name,description:"",breadcrumbs:[{label:"Providers",href:"/dashboard/providers"},{label:c.name,image:`/providers/${c.id}.png`}]};if(a.startsWith(o.JH))return{title:"OpenAI Compatible",description:"",breadcrumbs:[{label:"Providers",href:"/dashboard/providers"},{label:"OpenAI Compatible",image:"/providers/oai-cc.png"}]};if(a.startsWith(o.DI))return{title:"Anthropic Compatible",description:"",breadcrumbs:[{label:"Providers",href:"/dashboard/providers"},{label:"Anthropic Compatible",image:"/providers/anthropic-m.png"}]}}return a.includes("/providers")?{title:"Providers",description:"Manage your AI provider connections",breadcrumbs:[]}:a.includes("/combos")?{title:"Combos",description:"Model combos with fallback",breadcrumbs:[]}:a.includes("/usage")?{title:"Usage & Analytics",description:"Monitor your API usage, token consumption, and request logs",breadcrumbs:[]}:a.includes("/analytics")?{title:"Analytics",description:"Charts, trends, and evaluation insights",breadcrumbs:[]}:a.includes("/cli-tools")?{title:"CLI Tools",description:"Configure CLI tools",breadcrumbs:[]}:"/dashboard"===a?{title:"Home",description:"Welcome to OmniRoute",breadcrumbs:[]}:a.includes("/endpoint")?{title:"Endpoint",description:"API endpoint configuration",breadcrumbs:[]}:a.includes("/profile")?{title:"Settings",description:"Manage your preferences",breadcrumbs:[]}:{title:"",description:"",breadcrumbs:[]}})(c),m=async()=>{try{(await fetch("/api/auth/logout",{method:"POST"})).ok&&(f.push("/login"),f.refresh())}catch(a){console.error("Failed to logout:",a)}};return(0,d.jsxs)("header",{className:"flex items-center justify-between px-8 py-5 border-b border-black/5 dark:border-white/5 bg-bg/80 backdrop-blur-xl z-10 sticky top-0",children:[(0,d.jsx)("div",{className:"flex items-center gap-3 lg:hidden",children:b&&(0,d.jsx)("button",{onClick:a,className:"text-text-main hover:text-primary transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined",children:"menu"})})}),(0,d.jsx)("div",{className:"hidden lg:flex flex-col",children:l.length>0?(0,d.jsx)("div",{className:"flex items-center gap-2",children:l.map((a,b)=>(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[b>0&&(0,d.jsx)("span",{className:"material-symbols-outlined text-text-muted text-base",children:"chevron_right"}),a.href?(0,d.jsx)(g(),{href:a.href,className:"text-text-muted hover:text-primary transition-colors",children:a.label}):(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[a.image&&(0,d.jsx)(h.default,{src:a.image,alt:a.label,width:28,height:28,className:"object-contain rounded max-w-[28px] max-h-[28px]",sizes:"28px",onError:a=>{a.currentTarget.style.display="none"}}),(0,d.jsx)("h1",{className:"text-2xl font-semibold text-text-main tracking-tight",children:a.label})]})]},`${a.label}-${a.href||"current"}`))}):i?(0,d.jsxs)("div",{children:[(0,d.jsx)("h1",{className:"text-2xl font-semibold text-text-main tracking-tight",children:i}),j&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:j})]}):null}),(0,d.jsxs)("div",{className:"flex items-center gap-3 ml-auto",children:[(0,d.jsx)(k.UW,{}),(0,d.jsx)(n,{}),(0,d.jsx)("button",{onClick:m,className:"flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-red-500 hover:bg-red-500/10 transition-all",title:"Logout",children:(0,d.jsx)("span",{className:"material-symbols-outlined",children:"logout"})})]})]})}p.propTypes={onMenuClick:j().func,showMenuButton:j().bool}},16116:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(49885),f=c.n(e),g=c(59869);function h({children:a}){return(0,d.jsxs)("div",{className:"min-h-screen flex flex-col relative bg-bg transition-colors duration-500 overflow-x-hidden selection:bg-primary/20 selection:text-primary",children:[(0,d.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-primary/5 dark:bg-primary/5 rounded-full blur-[100px] pointer-events-none z-0"}),(0,d.jsx)("div",{className:"fixed bottom-0 right-0 w-[600px] h-[600px] bg-orange-200/20 dark:bg-orange-900/10 rounded-full blur-[120px] pointer-events-none z-0 translate-y-1/3 translate-x-1/3"}),(0,d.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,d.jsx)(g.default,{variant:"card"})}),(0,d.jsx)("main",{className:"flex-1 flex flex-col items-center justify-center p-4 sm:p-6 z-10 w-full h-full",children:a})]})}h.propTypes={children:f().node.isRequired}},17908:(a,b,c)=>{function d(a){try{return new Date(a).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return"-"}}function e(a){return a?a<1e3?`${a}ms`:`${(a/1e3).toFixed(1)}s`:"-"}function f(a,b=2,c=2){return a?a.length<=b+c?`${a.slice(0,1)}***`:`${a.slice(0,b)}***${a.slice(-c)}`:""}function g(a){if(!a||"-"===a)return"-";let b=a.indexOf("@");return b>3?a.slice(0,3)+"***"+a.slice(b):a.length>8?a.slice(0,5)+"***":a}function h(a,b){if(!a&&!b)return"—";let c=a?f(a,2,1):"key";return b?`${c} (${f(b,4,4)})`:c}function i(a){return a>=1e9?`${(a/1e9).toFixed(1)}B`:a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}K`:new Intl.NumberFormat().format(a||0)}function j(a){return new Intl.NumberFormat().format(a||0)}function k(a){return`$${(a||0).toFixed(2)}`}function l(a,b=50){if(!a)return"-";try{let c=new URL(a),d=c.hostname+c.pathname;return d.length>b?d.slice(0,b)+"…":d}catch{return a.length>b?a.slice(0,b)+"…":a}}c.d(b,{F0:()=>k,Ib:()=>g,VK:()=>i,VO:()=>h,Y1:()=>l,a3:()=>e,fU:()=>d,xW:()=>j})},18732:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(35005),f=c(67484);let g={success:"✓",error:"✕",warning:"⚠",info:"ℹ"},h={success:{bg:"rgba(16, 185, 129, 0.15)",border:"rgba(16, 185, 129, 0.4)",icon:"#10b981"},error:{bg:"rgba(239, 68, 68, 0.15)",border:"rgba(239, 68, 68, 0.4)",icon:"#ef4444"},warning:{bg:"rgba(245, 158, 11, 0.15)",border:"rgba(245, 158, 11, 0.4)",icon:"#f59e0b"},info:{bg:"rgba(59, 130, 246, 0.15)",border:"rgba(59, 130, 246, 0.4)",icon:"#3b82f6"}};function i({notification:a,onDismiss:b}){let[c,e]=(0,f.useState)(!1),i=h[a.type]||h.info;return(0,d.jsxs)("div",{role:"alert","aria-live":"polite",style:{display:"flex",alignItems:"flex-start",gap:"12px",padding:"14px 16px",borderRadius:"10px",backgroundColor:i.bg,border:`1px solid ${i.border}`,backdropFilter:"blur(12px)",boxShadow:"0 8px 32px rgba(0,0,0,0.2)",minWidth:"320px",maxWidth:"420px",animation:c?"toastOut 0.2s ease-in forwards":"toastIn 0.3s ease-out forwards",transition:"all 0.2s ease"},children:[(0,d.jsx)("span",{style:{fontSize:"18px",color:i.icon,fontWeight:"bold",lineHeight:1,marginTop:"2px"},children:g[a.type]}),(0,d.jsxs)("div",{style:{flex:1,minWidth:0},children:[a.title&&(0,d.jsx)("div",{style:{fontWeight:600,fontSize:"14px",color:"var(--text-primary, #fff)",marginBottom:"2px"},children:a.title}),(0,d.jsx)("div",{style:{fontSize:"13px",color:"var(--text-secondary, #ccc)",lineHeight:1.4},children:a.message})]}),a.dismissible&&(0,d.jsx)("button",{onClick:()=>{e(!0),setTimeout(()=>b(a.id),200)},"aria-label":"Dismiss notification",style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-secondary, #999)",fontSize:"16px",padding:"0 2px",lineHeight:1,opacity:.6,transition:"opacity 0.15s"},onMouseEnter:a=>a.currentTarget.style.opacity="1",onMouseLeave:a=>a.currentTarget.style.opacity="0.6",children:"\xd7"})]})}function j(){let{notifications:a,removeNotification:b}=(0,e.i)();return 0===a.length?null:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("style",{children:`
1
+ "use strict";exports.id=9824,exports.ids=[9824],exports.modules={1237:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(67484),f=c(65953),g=c(53156);function h({isOpen:a,onClose:b,title:c="Manual Configuration",configs:h=[]}){let[i,j]=(0,e.useState)(null),k=async(a,b)=>{try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(a);else{let b=document.createElement("textarea");b.value=a,b.style.position="fixed",b.style.left="-9999px",b.style.top="-9999px",b.style.opacity="0",document.body.appendChild(b),b.focus(),b.select(),document.execCommand("copy"),document.body.removeChild(b)}j(b),setTimeout(()=>j(null),2e3)}catch(a){console.log("Failed to copy:",a)}};return(0,d.jsx)(f.default,{isOpen:a,onClose:b,title:c,size:"xl",children:(0,d.jsx)("div",{className:"flex flex-col gap-4",children:h.map((a,b)=>(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm font-medium text-text-main",children:a.filename}),(0,d.jsxs)(g.default,{variant:"ghost",size:"sm",onClick:()=>k(a.content,b),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:i===b?"check":"content_copy"}),i===b?"Copied!":"Copy"]})]}),(0,d.jsx)("pre",{className:"px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs overflow-x-auto whitespace-pre-wrap break-all max-h-60 overflow-y-auto border border-border",children:a.content})]},b))})})}},2490:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(31846);function f({children:a,title:b,subtitle:c,icon:f,action:g,padding:h="md",hover:i=!1,className:j,...k}){return(0,d.jsxs)("div",{className:(0,e.cn)("bg-surface","border border-black/5 dark:border-white/5","rounded-lg shadow-sm",i&&"hover:shadow-md hover:border-primary/30 transition-all cursor-pointer",{none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"}[h],j),...k,children:[(b||g)&&(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[f&&(0,d.jsx)("div",{className:"p-2 rounded-lg bg-bg text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:f})}),(0,d.jsxs)("div",{children:[b&&(0,d.jsx)("h3",{className:"text-text-main font-semibold",children:b}),c&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:c})]})]}),g]}),a]})}f.Section=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-4 rounded-lg","bg-black/[0.02] dark:bg-white/[0.02]","border border-black/5 dark:border-white/5",b),...c,children:a})},f.Row=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-3 -mx-3 px-3 transition-colors","border-b border-black/5 dark:border-white/5 last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]",b),...c,children:a})},f.ListItem=function({children:a,actions:b,className:c,...f}){return(0,d.jsxs)("div",{className:(0,e.cn)("group flex items-center justify-between p-3 -mx-3 px-3","border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]","transition-colors",c),...f,children:[(0,d.jsx)("div",{className:"flex-1 min-w-0",children:a}),b&&(0,d.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",children:b})]})}},4355:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(31846);let f={default:"bg-black/5 dark:bg-white/10 text-text-muted",primary:"bg-primary/10 text-primary",success:"bg-green-500/10 text-green-600 dark:text-green-400",warning:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",error:"bg-red-500/10 text-red-600 dark:text-red-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400"},g={sm:"px-2 py-0.5 text-[10px]",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1.5 text-sm"};function h({children:a,variant:b="default",size:c="md",dot:h=!1,icon:i,className:j}){return(0,d.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-1.5 rounded-full font-semibold",f[b],g[c],j),children:[h&&(0,d.jsx)("span",{"aria-hidden":"true",className:(0,e.cn)("size-1.5 rounded-full","success"===b&&"bg-green-500","warning"===b&&"bg-yellow-500","error"===b&&"bg-red-500","info"===b&&"bg-blue-500","primary"===b&&"bg-primary","default"===b&&"bg-gray-500")}),i&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]","aria-hidden":"true",children:i}),a]})}},8744:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(29824),i=c(73295);function j({isOpen:a,provider:b,providerInfo:c,onSuccess:f,onClose:g,idcConfig:j}){let[k,l]=(0,e.useState)("waiting"),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)(!1),y=(0,e.useRef)(null),{copied:z,copy:A}=(0,i.C)(),[B,C]=(0,e.useState)(!1),[D,E]=(0,e.useState)("/callback?code=...");(0,e.useRef)(!1),(0,e.useRef)(!1);let F=(0,e.useCallback)(async(a,c)=>{if(m)try{let d=await fetch(`/api/oauth/${b}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,redirectUri:m.redirectUri,codeVerifier:m.codeVerifier,state:c})}),e=await d.json();if(!d.ok)throw Error(e.error);l("success"),f?.()}catch(a){r(a.message),l("error")}},[m,b,f]),G=(0,e.useCallback)(async(a,c,d,e)=>{x(!0);for(let g=0;g<60;g++){await new Promise(a=>setTimeout(a,1e3*d));try{let g=await fetch(`/api/oauth/${b}/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:a,codeVerifier:c,extraData:e})}),h=await g.json();if(h.success){l("success"),x(!1),f?.();return}if("expired_token"===h.error||"access_denied"===h.error)throw Error(h.errorDescription||h.error);"slow_down"===h.error&&(d=Math.min(d+5,30))}catch(a){r(a.message),l("error"),x(!1);return}}r("Authorization timeout"),l("error"),x(!1)},[b,f]),H=(0,e.useCallback)(async()=>{if(b)try{let a;if(r(null),"github"===b||"qwen"===b||"kiro"===b||"kimi-coding"===b||"kilocode"===b){t(!0),l("waiting");let a=await fetch(`/api/oauth/${b}/device-code`),c=await a.json();if(!a.ok)throw Error(c.error);v(c);let d=c.verification_uri_complete||c.verification_uri;d&&window.open(d,"oauth_verify");let e="kiro"===b?{_clientId:c._clientId,_clientSecret:c._clientSecret}:null;G(c.device_code,c.codeVerifier,c.interval||5,e);return}if("codex"===b&&B){try{let a=await fetch("/api/oauth/codex/start-callback-server"),b=await a.json();if(!a.ok)throw Error(b.error);n({...b,redirectUri:b.redirectUri}),l("waiting"),window.open(b.authUrl,"oauth_auth"),x(!0);for(let a=0;a<150;a++){await new Promise(a=>setTimeout(a,2e3));let a=await fetch("/api/oauth/codex/poll-callback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),b=await a.json();if(b.success){l("success"),x(!1),f?.();return}if(b.error&&!b.pending)throw Error(b.errorDescription||b.error)}throw x(!1),Error("Authorization timeout")}catch(a){x(!1),l("input"),r(a.message+" — You can paste the callback URL manually below.")}return}if("codex"===b||"openai"===b)a="http://localhost:1455/auth/callback";else{let b=window.location.port||("https:"===window.location.protocol?"443":"80");a=`http://localhost:${b}/callback`}let c=await fetch(`/api/oauth/${b}/authorize?redirect_uri=${encodeURIComponent(a)}`),d=await c.json();if(!c.ok)throw Error(d.error);n({...d,redirectUri:a}),B?(l("waiting"),y.current=window.open(d.authUrl,"oauth_popup","width=600,height=700"),y.current||l("input")):(l("input"),window.open(d.authUrl,"oauth_auth"))}catch(a){r(a.message),l("error")}},[b,B,G,f]),I=async()=>{try{r(null);let a=new URL(o),b=a.searchParams.get("code"),c=a.searchParams.get("state"),d=a.searchParams.get("error");if(d)throw Error(a.searchParams.get("error_description")||d);if(!b)throw Error("No authorization code found in URL");await F(b,c)}catch(a){r(a.message),l("error")}};return b&&c?(0,d.jsx)(h.aF,{isOpen:a,title:`Connect ${c.name}`,onClose:g,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["waiting"===k&&!s&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Waiting for Authorization"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Complete the authorization in the popup window."}),(0,d.jsx)(h.$n,{variant:"ghost",onClick:()=>l("input"),children:"Popup blocked? Enter URL manually"})]}),"waiting"===k&&s&&u&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"text-center py-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Visit the URL below and enter the code:"}),(0,d.jsxs)("div",{className:"bg-sidebar p-4 rounded-lg mb-4",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Verification URL"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("code",{className:"flex-1 text-sm break-all",children:u.verification_uri}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"verify_url"===z?"check":"content_copy",onClick:()=>A(u.verification_uri,"verify_url")})]})]}),(0,d.jsxs)("div",{className:"bg-primary/10 p-4 rounded-lg",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Your Code"}),(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,d.jsx)("p",{className:"text-2xl font-mono font-bold text-primary",children:u.user_code}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"user_code"===z?"check":"content_copy",onClick:()=>A(u.user_code,"user_code")})]})]})]}),w&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),"Waiting for authorization..."]})]}),"input"===k&&!s&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[!B&&(0,d.jsxs)("div",{className:"rounded-lg border border-blue-500/30 bg-blue-500/10 p-3 text-xs text-blue-200",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm align-middle mr-1",children:"info"}),(0,d.jsx)("strong",{children:"Remote access:"})," Since you're accessing OmniRoute remotely, after authorizing you'll see an error page (localhost not found). That's expected — just copy the full URL from your browser's address bar and paste it below."]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:m?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"auth_url"===z?"check":"content_copy",onClick:()=>A(m?.authUrl,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser."}),(0,d.jsx)(h.pd,{value:o,onChange:a=>p(a.target.value),placeholder:D,className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:I,fullWidth:!0,disabled:!o,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===k&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your ",c.name," account has been connected."]}),(0,d.jsx)(h.$n,{onClick:g,fullWidth:!0,children:"Done"})]}),"error"===k&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:q}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:H,variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(h.$n,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}j.propTypes={isOpen:g().bool.isRequired,provider:g().string,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},14797:(a,b,c)=>{c.d(b,{default:()=>p});var d=c(48249),e=c(19099),f=c(2116),g=c.n(f),h=c(81220),i=c(49885),j=c.n(i),k=c(29824),l=c(67484);let m={healthy:{icon:"check_circle",color:"#22c55e",tooltip:"All tokens healthy"},warning:{icon:"warning",color:"#f59e0b",tooltip:"Some tokens need attention"},error:{icon:"error",color:"#ef4444",tooltip:"Token refresh failures detected"},unknown:{icon:"help",color:"#6b7280",tooltip:"Health status unknown"}};function n(){let[a,b]=(0,l.useState)(null),[c,e]=(0,l.useState)(!1);if(!a||0===a.total)return null;let f=m[a.status]||m.unknown;return(0,d.jsxs)("div",{className:"relative",onMouseEnter:()=>e(!0),onMouseLeave:()=>e(!1),children:[(0,d.jsxs)("button",{className:"flex items-center gap-1 px-2 py-1.5 rounded-lg hover:bg-surface/30 transition-colors",title:f.tooltip,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:f.color},children:f.icon}),a.errored>0&&(0,d.jsx)("span",{className:"text-xs font-medium",style:{color:f.color},children:a.errored})]}),c&&(0,d.jsxs)("div",{className:"absolute top-full right-0 mt-1 z-50 min-w-[200px] p-3 rounded-lg shadow-lg",style:{background:"rgba(15, 15, 25, 0.95)",border:"1px solid rgba(255,255,255,0.1)",backdropFilter:"blur(12px)"},children:[(0,d.jsx)("p",{className:"text-xs font-medium text-text-main mb-2",children:"Token Health"}),(0,d.jsxs)("div",{className:"flex flex-col gap-1 text-xs",children:[(0,d.jsxs)("div",{className:"flex justify-between",children:[(0,d.jsx)("span",{className:"text-text-muted",children:"Total OAuth"}),(0,d.jsx)("span",{className:"text-text-main",children:a.total})]}),(0,d.jsxs)("div",{className:"flex justify-between",children:[(0,d.jsx)("span",{className:"text-emerald-400",children:"Healthy"}),(0,d.jsx)("span",{className:"text-text-main",children:a.healthy})]}),a.errored>0&&(0,d.jsxs)("div",{className:"flex justify-between",children:[(0,d.jsx)("span",{className:"text-red-400",children:"Errored"}),(0,d.jsx)("span",{className:"text-text-main",children:a.errored})]}),a.warning>0&&(0,d.jsxs)("div",{className:"flex justify-between",children:[(0,d.jsx)("span",{className:"text-amber-400",children:"Warning"}),(0,d.jsx)("span",{className:"text-text-main",children:a.warning})]}),a.lastCheckAt&&(0,d.jsxs)("div",{className:"flex justify-between mt-1 pt-1 border-t border-white/5",children:[(0,d.jsx)("span",{className:"text-text-muted",children:"Last check"}),(0,d.jsx)("span",{className:"text-text-muted",children:new Date(a.lastCheckAt).toLocaleTimeString()})]})]})]})]})}var o=c(17084);function p({onMenuClick:a,showMenuButton:b=!0}){let c=(0,e.usePathname)(),f=(0,e.useRouter)(),{title:i,description:j,breadcrumbs:l}=(a=>{if(!a)return{title:"",description:"",breadcrumbs:[]};let b=a.match(/\/providers\/([^/]+)$/);if(b){let a=b[1],c=o.zN[a]||o.IS[a]||o.fg[a];if(c)return{title:c.name,description:"",breadcrumbs:[{label:"Providers",href:"/dashboard/providers"},{label:c.name,image:`/providers/${c.id}.png`}]};if(a.startsWith(o.JH))return{title:"OpenAI Compatible",description:"",breadcrumbs:[{label:"Providers",href:"/dashboard/providers"},{label:"OpenAI Compatible",image:"/providers/oai-cc.png"}]};if(a.startsWith(o.DI))return{title:"Anthropic Compatible",description:"",breadcrumbs:[{label:"Providers",href:"/dashboard/providers"},{label:"Anthropic Compatible",image:"/providers/anthropic-m.png"}]}}return a.includes("/providers")?{title:"Providers",description:"Manage your AI provider connections",breadcrumbs:[]}:a.includes("/combos")?{title:"Combos",description:"Model combos with fallback",breadcrumbs:[]}:a.includes("/usage")?{title:"Usage & Analytics",description:"Monitor your API usage, token consumption, and request logs",breadcrumbs:[]}:a.includes("/analytics")?{title:"Analytics",description:"Charts, trends, and evaluation insights",breadcrumbs:[]}:a.includes("/cli-tools")?{title:"CLI Tools",description:"Configure CLI tools",breadcrumbs:[]}:"/dashboard"===a?{title:"Home",description:"Welcome to OmniRoute",breadcrumbs:[]}:a.includes("/endpoint")?{title:"Endpoint",description:"API endpoint configuration",breadcrumbs:[]}:a.includes("/profile")?{title:"Settings",description:"Manage your preferences",breadcrumbs:[]}:{title:"",description:"",breadcrumbs:[]}})(c),m=async()=>{try{(await fetch("/api/auth/logout",{method:"POST"})).ok&&(f.push("/login"),f.refresh())}catch(a){console.error("Failed to logout:",a)}};return(0,d.jsxs)("header",{className:"flex items-center justify-between px-8 py-5 border-b border-black/5 dark:border-white/5 bg-bg/80 backdrop-blur-xl z-10 sticky top-0",children:[(0,d.jsx)("div",{className:"flex items-center gap-3 lg:hidden",children:b&&(0,d.jsx)("button",{onClick:a,className:"text-text-main hover:text-primary transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined",children:"menu"})})}),(0,d.jsx)("div",{className:"hidden lg:flex flex-col",children:l.length>0?(0,d.jsx)("div",{className:"flex items-center gap-2",children:l.map((a,b)=>(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[b>0&&(0,d.jsx)("span",{className:"material-symbols-outlined text-text-muted text-base",children:"chevron_right"}),a.href?(0,d.jsx)(g(),{href:a.href,className:"text-text-muted hover:text-primary transition-colors",children:a.label}):(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[a.image&&(0,d.jsx)(h.default,{src:a.image,alt:a.label,width:28,height:28,className:"object-contain rounded max-w-[28px] max-h-[28px]",sizes:"28px",onError:a=>{a.currentTarget.style.display="none"}}),(0,d.jsx)("h1",{className:"text-2xl font-semibold text-text-main tracking-tight",children:a.label})]})]},`${a.label}-${a.href||"current"}`))}):i?(0,d.jsxs)("div",{children:[(0,d.jsx)("h1",{className:"text-2xl font-semibold text-text-main tracking-tight",children:i}),j&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:j})]}):null}),(0,d.jsxs)("div",{className:"flex items-center gap-3 ml-auto",children:[(0,d.jsx)(k.UW,{}),(0,d.jsx)(n,{}),(0,d.jsx)("button",{onClick:m,className:"flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-red-500 hover:bg-red-500/10 transition-all",title:"Logout",children:(0,d.jsx)("span",{className:"material-symbols-outlined",children:"logout"})})]})]})}p.propTypes={onMenuClick:j().func,showMenuButton:j().bool}},16116:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(49885),f=c.n(e),g=c(59869);function h({children:a}){return(0,d.jsxs)("div",{className:"min-h-screen flex flex-col relative bg-bg transition-colors duration-500 overflow-x-hidden selection:bg-primary/20 selection:text-primary",children:[(0,d.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-primary/5 dark:bg-primary/5 rounded-full blur-[100px] pointer-events-none z-0"}),(0,d.jsx)("div",{className:"fixed bottom-0 right-0 w-[600px] h-[600px] bg-orange-200/20 dark:bg-orange-900/10 rounded-full blur-[120px] pointer-events-none z-0 translate-y-1/3 translate-x-1/3"}),(0,d.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,d.jsx)(g.default,{variant:"card"})}),(0,d.jsx)("main",{className:"flex-1 flex flex-col items-center justify-center p-4 sm:p-6 z-10 w-full h-full",children:a})]})}h.propTypes={children:f().node.isRequired}},17908:(a,b,c)=>{function d(a){try{return new Date(a).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return"-"}}function e(a){return a?a<1e3?`${a}ms`:`${(a/1e3).toFixed(1)}s`:"-"}function f(a,b=2,c=2){return a?a.length<=b+c?`${a.slice(0,1)}***`:`${a.slice(0,b)}***${a.slice(-c)}`:""}function g(a){if(!a||"-"===a)return"-";let b=a.indexOf("@");return b>3?a.slice(0,3)+"***"+a.slice(b):a.length>8?a.slice(0,5)+"***":a}function h(a,b){if(!a&&!b)return"—";let c=a?f(a,2,1):"key";return b?`${c} (${f(b,4,4)})`:c}function i(a){return a>=1e9?`${(a/1e9).toFixed(1)}B`:a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}K`:new Intl.NumberFormat().format(a||0)}function j(a){return new Intl.NumberFormat().format(a||0)}function k(a){return`$${(a||0).toFixed(2)}`}function l(a,b=50){if(!a)return"-";try{let c=new URL(a),d=c.hostname+c.pathname;return d.length>b?d.slice(0,b)+"…":d}catch{return a.length>b?a.slice(0,b)+"…":a}}c.d(b,{F0:()=>k,Ib:()=>g,VK:()=>i,VO:()=>h,Y1:()=>l,a3:()=>e,fU:()=>d,xW:()=>j})},18732:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(35005),f=c(67484);let g={success:"✓",error:"✕",warning:"⚠",info:"ℹ"},h={success:{bg:"rgba(16, 185, 129, 0.15)",border:"rgba(16, 185, 129, 0.4)",icon:"#10b981"},error:{bg:"rgba(239, 68, 68, 0.15)",border:"rgba(239, 68, 68, 0.4)",icon:"#ef4444"},warning:{bg:"rgba(245, 158, 11, 0.15)",border:"rgba(245, 158, 11, 0.4)",icon:"#f59e0b"},info:{bg:"rgba(59, 130, 246, 0.15)",border:"rgba(59, 130, 246, 0.4)",icon:"#3b82f6"}};function i({notification:a,onDismiss:b}){let[c,e]=(0,f.useState)(!1),i=h[a.type]||h.info;return(0,d.jsxs)("div",{role:"alert","aria-live":"polite",style:{display:"flex",alignItems:"flex-start",gap:"12px",padding:"14px 16px",borderRadius:"10px",backgroundColor:i.bg,border:`1px solid ${i.border}`,backdropFilter:"blur(12px)",boxShadow:"0 8px 32px rgba(0,0,0,0.2)",minWidth:"320px",maxWidth:"420px",animation:c?"toastOut 0.2s ease-in forwards":"toastIn 0.3s ease-out forwards",transition:"all 0.2s ease"},children:[(0,d.jsx)("span",{style:{fontSize:"18px",color:i.icon,fontWeight:"bold",lineHeight:1,marginTop:"2px"},children:g[a.type]}),(0,d.jsxs)("div",{style:{flex:1,minWidth:0},children:[a.title&&(0,d.jsx)("div",{style:{fontWeight:600,fontSize:"14px",color:"var(--text-primary, #fff)",marginBottom:"2px"},children:a.title}),(0,d.jsx)("div",{style:{fontSize:"13px",color:"var(--text-secondary, #ccc)",lineHeight:1.4},children:a.message})]}),a.dismissible&&(0,d.jsx)("button",{onClick:()=>{e(!0),setTimeout(()=>b(a.id),200)},"aria-label":"Dismiss notification",style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-secondary, #999)",fontSize:"16px",padding:"0 2px",lineHeight:1,opacity:.6,transition:"opacity 0.15s"},onMouseEnter:a=>a.currentTarget.style.opacity="1",onMouseLeave:a=>a.currentTarget.style.opacity="0.6",children:"\xd7"})]})}function j(){let{notifications:a,removeNotification:b}=(0,e.i)();return 0===a.length?null:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("style",{children:`
2
2
  @keyframes toastIn {
3
3
  from { opacity: 0; transform: translateX(100%) scale(0.95); }
4
4
  to { opacity: 1; transform: translateX(0) scale(1); }