omniroute 1.4.4 → 1.4.7

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 (725) hide show
  1. package/app/.env +110 -0
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +39 -39
  4. package/app/.next/build-manifest.json +3 -3
  5. package/app/.next/prerender-manifest.json +3 -3
  6. package/app/.next/required-server-files.json +4 -4
  7. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  8. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +2 -2
  11. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
  14. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +3 -3
  17. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  20. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  23. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  26. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  29. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  32. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +2 -2
  35. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  38. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  41. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  44. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  56. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  59. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
  62. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  65. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/_global-error/page.js +3 -3
  68. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/_global-error.html +2 -2
  70. package/app/.next/server/app/_global-error.rsc +4 -4
  71. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +4 -4
  72. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  73. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  74. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  75. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  76. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  77. package/app/.next/server/app/_not-found/page.js +2 -2
  78. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  79. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/_not-found.html +1 -1
  81. package/app/.next/server/app/_not-found.rsc +5 -5
  82. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +5 -5
  83. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  84. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  85. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  86. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  87. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  88. package/app/.next/server/app/api/auth/login/route.js +1 -1
  89. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  91. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/auth/status/route.js +1 -1
  93. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/cache/route.js +1 -1
  95. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/cache/stats/route.js +1 -1
  97. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  99. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +3 -3
  101. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  103. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  105. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  107. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  109. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  111. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  113. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js +1 -1
  115. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  117. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  119. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  121. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
  123. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  125. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  127. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  129. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  131. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  133. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/combos/metrics/route.js +1 -1
  136. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/combos/route.js +1 -1
  138. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  139. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/combos/test/route.js +1 -1
  141. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/compliance/audit-log/route.js +1 -1
  143. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/db-backups/export/route.js +1 -1
  145. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/db-backups/exportAll/route.js +1 -1
  147. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/db-backups/import/route.js +1 -1
  149. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/db-backups/route.js +1 -1
  151. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -1
  153. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/evals/route.js +1 -1
  155. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/fallback/chains/route.js +2 -2
  157. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/init/route.js +1 -1
  159. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  161. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/keys/route.js +1 -1
  163. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/logs/console/route.js +1 -1
  165. package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -1
  166. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/models/alias/route.js +1 -1
  168. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/models/availability/route.js +1 -1
  170. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/models/catalog/route.js +2 -2
  172. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/models/route.js +2 -2
  174. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/monitoring/health/route.js +2 -2
  176. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
  178. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  179. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  181. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  183. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  185. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  187. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  189. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  191. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/policies/route.js +2 -2
  193. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/api/pricing/defaults/route.js +1 -1
  195. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/api/pricing/models/route.js +1 -1
  197. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/api/pricing/route.js +1 -1
  199. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/api/provider-metrics/route.js +2 -2
  201. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/api/provider-models/route.js +1 -1
  203. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  205. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/api/provider-nodes/route.js +2 -2
  207. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  208. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  209. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/api/providers/[id]/models/route.js +2 -2
  211. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  212. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  213. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  214. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  215. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  216. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/api/providers/client/route.js +1 -1
  218. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  219. package/app/.next/server/app/api/providers/route.js +2 -2
  220. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  221. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  222. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  223. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  224. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  225. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  226. package/app/.next/server/app/api/rate-limit/route.js +1 -1
  227. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  228. package/app/.next/server/app/api/rate-limits/route.js +1 -1
  229. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  230. package/app/.next/server/app/api/resilience/reset/route.js +1 -1
  231. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  232. package/app/.next/server/app/api/resilience/route.js +1 -1
  233. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  234. package/app/.next/server/app/api/restart/route.js +1 -1
  235. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  236. package/app/.next/server/app/api/sessions/route.js +1 -1
  237. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  238. package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -1
  239. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  240. package/app/.next/server/app/api/settings/ip-filter/route.js +1 -1
  241. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  242. package/app/.next/server/app/api/settings/proxy/route.js +1 -1
  243. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  244. package/app/.next/server/app/api/settings/proxy/test/route.js +1 -1
  245. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  246. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  247. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  248. package/app/.next/server/app/api/settings/route.js +1 -1
  249. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  250. package/app/.next/server/app/api/settings/system-prompt/route.js +1 -1
  251. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  252. package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -1
  253. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  254. package/app/.next/server/app/api/shutdown/route.js +1 -1
  255. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  256. package/app/.next/server/app/api/storage/health/route.js +1 -1
  257. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  258. package/app/.next/server/app/api/sync/cloud/route.js +1 -1
  259. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  260. package/app/.next/server/app/api/sync/initialize/route.js +1 -1
  261. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  262. package/app/.next/server/app/api/tags/route.js +1 -1
  263. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  264. package/app/.next/server/app/api/telemetry/summary/route.js +1 -1
  265. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  266. package/app/.next/server/app/api/token-health/route.js +1 -1
  267. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  268. package/app/.next/server/app/api/translator/detect/route.js +1 -1
  269. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  270. package/app/.next/server/app/api/translator/history/route.js +1 -1
  271. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  272. package/app/.next/server/app/api/translator/load/route.js +1 -1
  273. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  274. package/app/.next/server/app/api/translator/save/route.js +1 -1
  275. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  276. package/app/.next/server/app/api/translator/send/route.js +1 -1
  277. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  278. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  279. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  280. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  281. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  282. package/app/.next/server/app/api/usage/analytics/route.js +1 -1
  283. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  284. package/app/.next/server/app/api/usage/budget/route.js +2 -2
  285. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  286. package/app/.next/server/app/api/usage/call-logs/[id]/route.js +1 -1
  287. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  288. package/app/.next/server/app/api/usage/call-logs/route.js +1 -1
  289. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  290. package/app/.next/server/app/api/usage/history/route.js +1 -1
  291. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  292. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  293. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  294. package/app/.next/server/app/api/usage/proxy-logs/route.js +1 -1
  295. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  296. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  297. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  298. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  299. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  300. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  301. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  302. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  303. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  304. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  305. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  307. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  308. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  309. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  310. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  311. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  312. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  313. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  314. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  315. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  316. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  317. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  318. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  319. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  320. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  321. package/app/.next/server/app/api/v1/models/route.js +2 -2
  322. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  323. package/app/.next/server/app/api/v1/moderations/route.js +1 -1
  324. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  325. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  326. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -1
  327. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  328. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  329. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
  330. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  331. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  332. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
  333. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  334. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  335. package/app/.next/server/app/api/v1/rerank/route.js +1 -1
  336. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  337. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  338. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  339. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  340. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  341. package/app/.next/server/app/api/v1/route.js +1 -1
  342. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  343. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  344. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  345. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  346. package/app/.next/server/app/api/v1beta/models/route.js +2 -2
  347. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  348. package/app/.next/server/app/callback/page.js +2 -2
  349. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  350. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  351. package/app/.next/server/app/callback.html +1 -1
  352. package/app/.next/server/app/callback.rsc +6 -6
  353. package/app/.next/server/app/callback.segments/_full.segment.rsc +6 -6
  354. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  355. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  356. package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
  357. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +2 -2
  358. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  359. package/app/.next/server/app/dashboard/analytics.html +2 -2
  360. package/app/.next/server/app/dashboard/analytics.rsc +8 -8
  361. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +2 -2
  362. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +2 -2
  363. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  364. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  365. package/app/.next/server/app/dashboard/analytics.segments/_full.segment.rsc +8 -8
  366. package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  367. package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +4 -4
  368. package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
  369. package/app/.next/server/app/dashboard/api-manager.html +1 -1
  370. package/app/.next/server/app/dashboard/api-manager.rsc +7 -7
  371. package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk/dashboard/api-manager/__PAGE__.segment.rsc +2 -2
  372. package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk/dashboard/api-manager.segment.rsc +1 -1
  373. package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  374. package/app/.next/server/app/dashboard/api-manager.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  375. package/app/.next/server/app/dashboard/api-manager.segments/_full.segment.rsc +7 -7
  376. package/app/.next/server/app/dashboard/api-manager.segments/_head.segment.rsc +1 -1
  377. package/app/.next/server/app/dashboard/api-manager.segments/_index.segment.rsc +4 -4
  378. package/app/.next/server/app/dashboard/api-manager.segments/_tree.segment.rsc +1 -1
  379. package/app/.next/server/app/dashboard/audit-log.html +1 -1
  380. package/app/.next/server/app/dashboard/audit-log.rsc +7 -7
  381. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard/audit-log/__PAGE__.segment.rsc +2 -2
  382. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard/audit-log.segment.rsc +1 -1
  383. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  384. package/app/.next/server/app/dashboard/audit-log.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  385. package/app/.next/server/app/dashboard/audit-log.segments/_full.segment.rsc +7 -7
  386. package/app/.next/server/app/dashboard/audit-log.segments/_head.segment.rsc +1 -1
  387. package/app/.next/server/app/dashboard/audit-log.segments/_index.segment.rsc +4 -4
  388. package/app/.next/server/app/dashboard/audit-log.segments/_tree.segment.rsc +1 -1
  389. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  390. package/app/.next/server/app/dashboard/cli-tools.rsc +8 -8
  391. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  392. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  393. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  394. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  395. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
  396. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  397. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  398. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  399. package/app/.next/server/app/dashboard/combos.html +1 -1
  400. package/app/.next/server/app/dashboard/combos.rsc +7 -7
  401. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  402. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  403. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  404. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  405. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  406. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  407. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  408. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  409. package/app/.next/server/app/dashboard/costs.html +1 -1
  410. package/app/.next/server/app/dashboard/costs.rsc +7 -7
  411. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +2 -2
  412. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs.segment.rsc +1 -1
  413. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  414. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  415. package/app/.next/server/app/dashboard/costs.segments/_full.segment.rsc +7 -7
  416. package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
  417. package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +4 -4
  418. package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +1 -1
  419. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  420. package/app/.next/server/app/dashboard/endpoint.rsc +8 -8
  421. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  422. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  423. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  424. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  425. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  426. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  427. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  428. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  429. package/app/.next/server/app/dashboard/health.html +1 -1
  430. package/app/.next/server/app/dashboard/health.rsc +7 -7
  431. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +2 -2
  432. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +1 -1
  433. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  434. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  435. package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +7 -7
  436. package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
  437. package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +4 -4
  438. package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +1 -1
  439. package/app/.next/server/app/dashboard/limits.html +2 -2
  440. package/app/.next/server/app/dashboard/limits.rsc +7 -7
  441. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +2 -2
  442. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +1 -1
  443. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  444. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  445. package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +7 -7
  446. package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +1 -1
  447. package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +4 -4
  448. package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +1 -1
  449. package/app/.next/server/app/dashboard/logs.html +1 -1
  450. package/app/.next/server/app/dashboard/logs.rsc +7 -7
  451. package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +2 -2
  452. package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs.segment.rsc +1 -1
  453. package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  454. package/app/.next/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  455. package/app/.next/server/app/dashboard/logs.segments/_full.segment.rsc +7 -7
  456. package/app/.next/server/app/dashboard/logs.segments/_head.segment.rsc +1 -1
  457. package/app/.next/server/app/dashboard/logs.segments/_index.segment.rsc +4 -4
  458. package/app/.next/server/app/dashboard/logs.segments/_tree.segment.rsc +1 -1
  459. package/app/.next/server/app/dashboard/onboarding.html +1 -1
  460. package/app/.next/server/app/dashboard/onboarding.rsc +7 -7
  461. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +2 -2
  462. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
  463. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  464. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  465. package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +7 -7
  466. package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
  467. package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +4 -4
  468. package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +1 -1
  469. package/app/.next/server/app/dashboard/profile.html +1 -1
  470. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  471. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  472. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  473. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  474. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  475. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  476. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  477. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  478. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  479. package/app/.next/server/app/dashboard/providers/new.html +2 -2
  480. package/app/.next/server/app/dashboard/providers/new.rsc +9 -9
  481. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  482. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  483. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +3 -3
  484. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  485. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  486. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +9 -9
  487. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  488. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  489. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  490. package/app/.next/server/app/dashboard/providers.html +2 -2
  491. package/app/.next/server/app/dashboard/providers.rsc +9 -9
  492. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  493. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +3 -3
  494. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  495. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  496. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +9 -9
  497. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  498. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  499. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  500. package/app/.next/server/app/dashboard/settings/pricing.html +2 -2
  501. package/app/.next/server/app/dashboard/settings/pricing.rsc +9 -9
  502. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +2 -2
  503. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  504. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +3 -3
  505. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  506. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  507. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +9 -9
  508. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  509. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  510. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  511. package/app/.next/server/app/dashboard/settings.html +1 -1
  512. package/app/.next/server/app/dashboard/settings.rsc +9 -9
  513. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
  514. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +3 -3
  515. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  516. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  517. package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +9 -9
  518. package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
  519. package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +4 -4
  520. package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +1 -1
  521. package/app/.next/server/app/dashboard/translator.html +2 -2
  522. package/app/.next/server/app/dashboard/translator.rsc +7 -7
  523. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  524. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  525. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  526. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  527. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  528. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  529. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  530. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  531. package/app/.next/server/app/dashboard/usage.html +1 -1
  532. package/app/.next/server/app/dashboard/usage.rsc +7 -7
  533. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  534. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  535. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  536. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  537. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  538. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  539. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  540. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  541. package/app/.next/server/app/docs/page.js +3 -3
  542. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  543. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  544. package/app/.next/server/app/docs.html +1 -1
  545. package/app/.next/server/app/docs.rsc +6 -6
  546. package/app/.next/server/app/docs.segments/_full.segment.rsc +6 -6
  547. package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  548. package/app/.next/server/app/docs.segments/_index.segment.rsc +4 -4
  549. package/app/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
  550. package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +2 -2
  551. package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  552. package/app/.next/server/app/forbidden/page.js +2 -2
  553. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  554. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  555. package/app/.next/server/app/forbidden.html +1 -1
  556. package/app/.next/server/app/forbidden.rsc +6 -6
  557. package/app/.next/server/app/forbidden.segments/_full.segment.rsc +6 -6
  558. package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
  559. package/app/.next/server/app/forbidden.segments/_index.segment.rsc +4 -4
  560. package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +1 -1
  561. package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +2 -2
  562. package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +1 -1
  563. package/app/.next/server/app/forgot-password/page.js +2 -2
  564. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  565. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  566. package/app/.next/server/app/forgot-password.html +1 -1
  567. package/app/.next/server/app/forgot-password.rsc +6 -6
  568. package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +6 -6
  569. package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
  570. package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +4 -4
  571. package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +1 -1
  572. package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +2 -2
  573. package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +1 -1
  574. package/app/.next/server/app/index.html +1 -1
  575. package/app/.next/server/app/index.rsc +5 -5
  576. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  577. package/app/.next/server/app/index.segments/_full.segment.rsc +5 -5
  578. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  579. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  580. package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  581. package/app/.next/server/app/landing/page.js +2 -2
  582. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  583. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  584. package/app/.next/server/app/landing.html +1 -1
  585. package/app/.next/server/app/landing.rsc +6 -6
  586. package/app/.next/server/app/landing.segments/_full.segment.rsc +6 -6
  587. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  588. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  589. package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
  590. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  591. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  592. package/app/.next/server/app/login/page.js +2 -2
  593. package/app/.next/server/app/login/page.js.nft.json +1 -1
  594. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  595. package/app/.next/server/app/login.html +1 -1
  596. package/app/.next/server/app/login.rsc +6 -6
  597. package/app/.next/server/app/login.segments/_full.segment.rsc +6 -6
  598. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  599. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  600. package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  601. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  602. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  603. package/app/.next/server/app/page.js +2 -2
  604. package/app/.next/server/app/page.js.nft.json +1 -1
  605. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  606. package/app/.next/server/app/privacy/page.js +2 -2
  607. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  608. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  609. package/app/.next/server/app/privacy.html +1 -1
  610. package/app/.next/server/app/privacy.rsc +6 -6
  611. package/app/.next/server/app/privacy.segments/_full.segment.rsc +6 -6
  612. package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
  613. package/app/.next/server/app/privacy.segments/_index.segment.rsc +4 -4
  614. package/app/.next/server/app/privacy.segments/_tree.segment.rsc +1 -1
  615. package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +2 -2
  616. package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
  617. package/app/.next/server/app/terms/page.js +2 -2
  618. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  619. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  620. package/app/.next/server/app/terms.html +1 -1
  621. package/app/.next/server/app/terms.rsc +6 -6
  622. package/app/.next/server/app/terms.segments/_full.segment.rsc +6 -6
  623. package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
  624. package/app/.next/server/app/terms.segments/_index.segment.rsc +4 -4
  625. package/app/.next/server/app/terms.segments/_tree.segment.rsc +1 -1
  626. package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +2 -2
  627. package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
  628. package/app/.next/server/app-paths-manifest.json +39 -39
  629. package/app/.next/server/chunks/2180.js +1 -1
  630. package/app/.next/server/chunks/2767.js +10 -3
  631. package/app/.next/server/chunks/2901.js +2 -2
  632. package/app/.next/server/chunks/2910.js +1 -1
  633. package/app/.next/server/chunks/3447.js +1 -1
  634. package/app/.next/server/chunks/3596.js +1 -1
  635. package/app/.next/server/chunks/3699.js +1 -1
  636. package/app/.next/server/chunks/{1079.js → 3875.js} +3 -1
  637. package/app/.next/server/chunks/4488.js +1 -1
  638. package/app/.next/server/chunks/4555.js +2 -0
  639. package/app/.next/server/chunks/7109.js +8 -1
  640. package/app/.next/server/chunks/7544.js +1 -1
  641. package/app/.next/server/chunks/7669.js +1 -3
  642. package/app/.next/server/chunks/8020.js +3 -3
  643. package/app/.next/server/chunks/9340.js +1 -0
  644. package/app/.next/server/chunks/9342.js +1 -1
  645. package/app/.next/server/chunks/9548.js +1 -0
  646. package/app/.next/server/chunks/9824.js +2 -2
  647. package/app/.next/server/middleware-build-manifest.js +1 -1
  648. package/app/.next/server/middleware.js +3 -3
  649. package/app/.next/server/next-font-manifest.js +1 -1
  650. package/app/.next/server/next-font-manifest.json +1 -1
  651. package/app/.next/server/pages/404.html +1 -1
  652. package/app/.next/server/pages/500.html +2 -2
  653. package/app/.next/server/server-reference-manifest.js +1 -1
  654. package/app/.next/server/server-reference-manifest.json +1 -1
  655. package/app/.next/static/chunks/5846-2c4546bdeb7831c9.js +2 -0
  656. package/app/.next/static/chunks/{993-4cb24412f8681dc9.js → 993-752f870a62aaf876.js} +2 -2
  657. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-ce5214cdf489c9df.js +1 -0
  658. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/{page-f8b57e41a1b6fce6.js → page-6344a09a1154d6dc.js} +1 -1
  659. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-3cd39fac822a566f.js +1 -0
  660. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-6ae6b46b8b9ee7cd.js +1 -0
  661. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-8c9acf99ce223053.js +15 -0
  662. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-f017a1a13b450ed3.js → page-857905019c595756.js} +1 -1
  663. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-9495b294cfe54d73.js → page-5a82e1f5cca87cee.js} +1 -1
  664. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-d03f1918040e8465.js +1 -0
  665. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/{page-58ea3e55f475ea7b.js → page-0169ca5192c1b893.js} +1 -1
  666. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-9d2db3ffd0cd5015.js +1 -0
  667. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/{page-88e667cb7ae99420.js → page-e14488a7109c0f13.js} +1 -1
  668. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/{page-19072ecdea202e4e.js → page-81203ee77efdd0cd.js} +1 -1
  669. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-01aca3906b8c8ba7.js +1 -0
  670. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-cb598848bd0a7e86.js +1 -0
  671. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{error-2f0177a2197dd556.js → error-f0730d6d62d02e82.js} +1 -1
  672. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{loading-99ab4d478260d53b.js → loading-59cbccd6d5185ca9.js} +1 -1
  673. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-3ab9f92f47a73f63.js +1 -0
  674. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-7fec684a49291104.js → page-b2c004336791d971.js} +1 -1
  675. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{error-e844916e39172c8b.js → error-cc85c3ff1f63aea6.js} +1 -1
  676. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{loading-bb068659ee679ff4.js → loading-19fc771a287bcb4c.js} +1 -1
  677. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-1520c9997f0825c6.js +1 -0
  678. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/page-c2ad2471d6f91021.js +1 -0
  679. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-775e1506821cac94.js → page-98cd4cff63d3f6ad.js} +1 -1
  680. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/{page-51a813eac9d71eed.js → page-bf5e1638364cc605.js} +1 -1
  681. package/app/.next/static/chunks/app/(dashboard)/{layout-cf710bbfb7c3ba11.js → layout-a51fdf255b9032e6.js} +1 -1
  682. package/app/.next/static/chunks/app/callback/{page-5c58a06902dd94ed.js → page-62842cc24b02df73.js} +1 -1
  683. package/app/.next/static/chunks/app/docs/page-806674e3087684d3.js +1 -0
  684. package/app/.next/static/chunks/app/{error-0d59fc4efafbc38c.js → error-f918d9961a2368d3.js} +1 -1
  685. package/app/.next/static/chunks/app/forbidden/page-ffdc570744f9c562.js +1 -0
  686. package/app/.next/static/chunks/app/forgot-password/page-8f9648bd3eecaa38.js +1 -0
  687. package/app/.next/static/chunks/app/global-error-504ff9093e2a997d.js +1 -0
  688. package/app/.next/static/chunks/app/landing/page-0de497612697b7a5.js +1 -0
  689. package/app/.next/static/chunks/app/layout-b2831c1c9ed30545.js +1 -0
  690. package/app/.next/static/chunks/app/login/{page-ca4dde4376ccd169.js → page-66d190ded7707ae3.js} +1 -1
  691. package/app/.next/static/chunks/app/not-found-11b712c853d93172.js +1 -0
  692. package/app/.next/static/chunks/app/privacy/page-806674e3087684d3.js +1 -0
  693. package/app/.next/static/chunks/app/terms/page-806674e3087684d3.js +1 -0
  694. package/app/.next/static/chunks/{main-app-c9da11a8061df107.js → main-app-ae230f6bf51a5edb.js} +1 -1
  695. package/app/logs/application/app.log +19725 -0
  696. package/app/package.json +1 -1
  697. package/app/server.js +1 -1
  698. package/package.json +1 -1
  699. package/app/.next/server/chunks/2760.js +0 -1
  700. package/app/.next/server/chunks/4168.js +0 -8
  701. package/app/.next/server/chunks/5248.js +0 -1
  702. package/app/.next/server/chunks/9979.js +0 -2
  703. package/app/.next/static/chunks/5846-1bd03fb1b4b4c154.js +0 -2
  704. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-6f1750506292c630.js +0 -1
  705. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-10e24238da560d00.js +0 -1
  706. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c37f849e39b1bf02.js +0 -1
  707. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-918d5f38d5cdbbc2.js +0 -15
  708. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-90f0a2f2cfc02a76.js +0 -1
  709. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-2a3cd7fd5ca34713.js +0 -1
  710. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-d2651dc387e7fdfd.js +0 -1
  711. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-56e8174ce9caec1b.js +0 -1
  712. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-200bed170f9ee2b0.js +0 -1
  713. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-06d076294b449efb.js +0 -1
  714. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/page-1b3f14c99d3edf09.js +0 -1
  715. package/app/.next/static/chunks/app/docs/page-8f74097544a61b9d.js +0 -1
  716. package/app/.next/static/chunks/app/forbidden/page-86b6392f80a3ff69.js +0 -1
  717. package/app/.next/static/chunks/app/forgot-password/page-373672767bb0aae4.js +0 -1
  718. package/app/.next/static/chunks/app/global-error-41eef2a698918fc1.js +0 -1
  719. package/app/.next/static/chunks/app/landing/page-09741814aaca7548.js +0 -1
  720. package/app/.next/static/chunks/app/layout-3375493e8f9133db.js +0 -1
  721. package/app/.next/static/chunks/app/not-found-1dbd8c3e506fe00f.js +0 -1
  722. package/app/.next/static/chunks/app/privacy/page-8f74097544a61b9d.js +0 -1
  723. package/app/.next/static/chunks/app/terms/page-8f74097544a61b9d.js +0 -1
  724. /package/app/.next/static/{vSmFE3KrF-V4aQjNDtjwN → NQRiYUSKWLNu62D-HnLpL}/_buildManifest.js +0 -0
  725. /package/app/.next/static/{vSmFE3KrF-V4aQjNDtjwN → NQRiYUSKWLNu62D-HnLpL}/_ssgManifest.js +0 -0
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omniroute",
3
- "version": "1.4.4",
3
+ "version": "1.4.7",
4
4
  "description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",
5
5
  "type": "module",
6
6
  "bin": {
package/app/server.js CHANGED
@@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
15
15
  const hostname = process.env.HOSTNAME || '0.0.0.0'
16
16
 
17
17
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
18
- const nextConfig = {"env":{},"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.mjs","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/OmniRoute/OmniRoute","allowedDevOrigins":["192.168.*"],"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.mjs","turbopack":{"root":"/home/runner/work/OmniRoute/OmniRoute"},"serverExternalPackages":["better-sqlite3"],"transpilePackages":["@omniroute/open-sse"],"distDirRoot":".next","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/chat/completions","destination":"/api/v1/chat/completions"},{"source":"/responses","destination":"/api/v1/responses"},{"source":"/models","destination":"/api/v1/models"},{"source":"/v1/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1/v1","destination":"/api/v1"},{"source":"/codex/:path*","destination":"/api/v1/responses"},{"source":"/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1","destination":"/api/v1"}],"fallback":[]}}
18
+ const nextConfig = {"env":{},"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.mjs","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/diegosouzapw/dev/proxys/9router","allowedDevOrigins":["192.168.*"],"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":23,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.mjs","turbopack":{"root":"/home/diegosouzapw/dev/proxys/9router"},"serverExternalPackages":["better-sqlite3"],"transpilePackages":["@omniroute/open-sse"],"distDirRoot":".next","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/chat/completions","destination":"/api/v1/chat/completions"},{"source":"/responses","destination":"/api/v1/responses"},{"source":"/models","destination":"/api/v1/models"},{"source":"/v1/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1/v1","destination":"/api/v1"},{"source":"/codex/:path*","destination":"/api/v1/responses"},{"source":"/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1","destination":"/api/v1"}],"fallback":[]}}
19
19
 
20
20
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
21
21
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omniroute",
3
- "version": "1.4.4",
3
+ "version": "1.4.7",
4
4
  "description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1 +0,0 @@
1
- "use strict";exports.id=2760,exports.ids=[2760,4755],exports.modules={19225:(a,b,c)=>{a.exports=c(44870)},21020:(a,b,c)=>{c.d(b,{Pt:()=>k,Tr:()=>l,c1:()=>i,kI:()=>m,vk:()=>j});var d=c(22901),e=c(74163),f=c(83779);let g=Promise.resolve(),h=new Map;async function i(a,b=null){let c,h=g;g=new Promise(a=>{c=a});try{let c;await h;let g=await (0,d.getProviderConnections)({provider:a,isActive:!0});if(f.debug("AUTH",`${a} | total connections: ${g.length}, excludeId: ${b||"none"}`),0===g.length){let b=await (0,d.getProviderConnections)({provider:a});if(f.debug("AUTH",`${a} | all connections (incl inactive): ${b.length}`),b.length>0){let c=(0,e.UY)(b);if(c)return f.warn("AUTH",`${a} | all ${b.length} accounts rate limited (${(0,e.Qo)(c)})`),{allRateLimited:!0,retryAfter:c,retryAfterHuman:(0,e.Qo)(c)};f.warn("AUTH",`${a} | ${b.length} accounts found but none active`),b.forEach(a=>{f.debug("AUTH",` → ${a.id?.slice(0,8)} | isActive=${a.isActive} | rateLimitedUntil=${a.rateLimitedUntil||"none"} | testStatus=${a.testStatus}`)})}return f.warn("AUTH",`No credentials for ${a}`),null}let i=g.filter(a=>!(b&&a.id===b||(0,e.AO)(a.rateLimitedUntil)));if(f.debug("AUTH",`${a} | available: ${i.length}/${g.length}`),g.forEach(a=>{let c=b&&a.id===b,d=(0,e.AO)(a.rateLimitedUntil);(c||d)&&f.debug("AUTH",` → ${a.id?.slice(0,8)} | ${c?"excluded":""} ${d?`rateLimited until ${a.rateLimitedUntil}`:""}`)}),0===i.length){let b=(0,e.UY)(g);if(b){let c=g.filter(a=>a.rateLimitedUntil&&new Date(a.rateLimitedUntil).getTime()>Date.now()).sort((a,b)=>new Date(a.rateLimitedUntil).getTime()-new Date(b.rateLimitedUntil).getTime())[0];return f.warn("AUTH",`${a} | all ${g.length} active accounts rate limited (${(0,e.Qo)(b)}) | lastErrorCode=${c?.errorCode}, lastError=${c?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:b,retryAfterHuman:(0,e.Qo)(b),lastError:c?.lastError||null,lastErrorCode:c?.errorCode||null}}return f.warn("AUTH",`${a} | all ${g.length} accounts unavailable`),null}let j=await (0,d.V7)(),k=j.fallbackStrategy||"fill-first";if("round-robin"===k){let a=j.stickyRoundRobinLimit||3,b=[...i].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt).getTime()-new Date(a.lastUsedAt).getTime():-1:1:(a.priority||999)-(b.priority||999))[0],e=b?.consecutiveUseCount||0;b&&b.lastUsedAt&&e<a?(c=b,await (0,d.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(c.consecutiveUseCount||0)+1})):(c=[...i].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt).getTime()-new Date(b.lastUsedAt).getTime():1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else if("p2c"===k)if(i.length<=2)c=i[0];else{let a=Math.floor(Math.random()*i.length),b=Math.floor(Math.random()*(i.length-1));b>=a&&b++;let d=i[a],e=i[b],f=(d.consecutiveUseCount||0)+10*!!d.lastError,g=(e.consecutiveUseCount||0)+10*!!e.lastError;c=f<=g?d:e}else if("random"===k){let a=Math.floor(Math.random()*i.length);c=i[a]}else c="least-used"===k?[...i].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt).getTime()-new Date(b.lastUsedAt).getTime():1:-1:(a.priority||999)-(b.priority||999))[0]:"cost-optimized"===k?[...i].sort((a,b)=>(a.priority||999)-(b.priority||999))[0]:i[0];return{apiKey:c.apiKey,accessToken:c.accessToken,refreshToken:c.refreshToken,expiresAt:c.tokenExpiresAt||c.expiresAt||null,projectId:c.projectId,copilotToken:c.providerSpecificData?.copilotToken,providerSpecificData:c.providerSpecificData,connectionId:c.id,testStatus:c.testStatus,lastError:c.lastError,rateLimitedUntil:c.rateLimitedUntil}}finally{c&&c()}}async function j(a,b,c,g=null,i=null){let k,l=h.get(a)||Promise.resolve();h.set(a,new Promise(a=>{k=a}));try{await l;let h=(await (0,d.getProviderConnections)({provider:g})).find(b=>b.id===a),j=h?.backoffLevel||0;if(h?.rateLimitedUntil&&new Date(h.rateLimitedUntil).getTime()>Date.now())return f.info("AUTH",`${a.slice(0,8)} already marked unavailable (until ${h.rateLimitedUntil}), skipping duplicate mark`),{shouldFallback:!0,cooldownMs:new Date(h.rateLimitedUntil).getTime()-Date.now()};let{shouldFallback:k,cooldownMs:m,newBackoffLevel:n,reason:o}=(0,e.hk)(b,c,j,i,g);if(!k)return{shouldFallback:!1,cooldownMs:0};let p=(0,e.vp)(m),q="string"==typeof c?c.slice(0,100):"Provider error";return await (0,d.rj)(a,{rateLimitedUntil:p,testStatus:"unavailable",lastError:q,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:n??j}),g&&i&&m>0&&(0,e.R7)(g,a,i,o||"unknown",m),g&&b&&q&&console.error(`❌ ${g} [${b}]: ${q}`),{shouldFallback:!0,cooldownMs:m}}finally{k&&k(),h.delete(a)}}async function k(a,b){("unavailable"===b.testStatus||b.lastError||b.rateLimitedUntil)&&(await (0,d.rj)(a,{testStatus:"active",lastError:null,lastErrorAt:null,rateLimitedUntil:null,backoffLevel:0}),f.info("AUTH",`Account ${a.slice(0,8)} error cleared`))}function l(a){let b=a.headers.get("Authorization");return b?.startsWith("Bearer ")?b.slice(7):null}async function m(a){return!!a&&await (0,d.ek)(a)}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},83779:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>l,error:()=>o,info:()=>m,maskKey:()=>j,request:()=>p,response:()=>q,stream:()=>r,warn:()=>n});var d=c(74552),e=c.n(d),f=c(33873),g=c(29021);function h(){let a="false"!==process.env.LOG_TO_FILE,b=process.env.LOG_FILE_PATH||(0,f.join)(process.cwd(),"logs/application/app.log");return{logToFile:a,logFilePath:b,maxFileSize:function(a){if(!a)return 0x3200000;let b=a.match(/^(\d+)\s*(k|m|g|kb|mb|gb)?$/i);if(!b)return 0x3200000;let c=parseInt(b[1],10);switch((b[2]||"").toLowerCase()){case"k":case"kb":return 1024*c;case"m":case"mb":return 1024*c*1024;case"g":case"gb":return 1024*c*1048576;default:return c}}(process.env.LOG_MAX_FILE_SIZE),retentionDays:parseInt(process.env.LOG_RETENTION_DAYS||String(7),10)}}let i={level:process.env.LOG_LEVEL||"info",base:{service:"omniroute"},timestamp:e().stdTimeFunctions.isoTime,formatters:{level:a=>({level:a})}};function j(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}let k=(function(){let a=h(),b=i.level||"info";if(a.logToFile)try{let d=h();if(d.logToFile){var c;let a;c=d.logFilePath,a=(0,f.dirname)(c),(0,g.existsSync)(a)||(0,g.mkdirSync)(a,{recursive:!0}),function(a,b){try{if(!(0,g.existsSync)(a)||(0,g.statSync)(a).size<b)return;let c=(0,f.dirname)(a),d=(0,f.extname)(a),e=(0,f.basename)(a,d),h=new Date,i=`${h.getFullYear()}-${String(h.getMonth()+1).padStart(2,"0")}-${String(h.getDate()).padStart(2,"0")}_${String(h.getHours()).padStart(2,"0")}${String(h.getMinutes()).padStart(2,"0")}${String(h.getSeconds()).padStart(2,"0")}`,j=(0,f.join)(c,`${e}.${i}${d}`);(0,g.renameSync)(a,j)}catch{}}(d.logFilePath,d.maxFileSize),function(a,b){try{let c=(0,f.dirname)(a);if(!(0,g.existsSync)(c))return;let d=(0,f.extname)(a),e=(0,f.basename)(a,d),h=(0,g.readdirSync)(c),i=Date.now()-24*b*36e5;for(let b of h)if(b.startsWith(e+".")&&b.endsWith(d)&&b!==(0,f.basename)(a)){let a=(0,f.join)(c,b);try{(0,g.statSync)(a).mtimeMs<i&&(0,g.unlinkSync)(a)}catch{}}}catch{}}(d.logFilePath,d.retentionDays)}let j=(0,f.resolve)(a.logFilePath);return e()({...i,transport:{targets:[{target:"pino/file",options:{destination:1},level:b},{target:"pino/file",options:{destination:j,mkdir:!0},level:b}]}})}catch{console.warn("[logger] Failed to set up file transport, falling back to console only")}return e()(i)})().child({module:"sse"});function l(a,b,c){k.debug({tag:a,...s(c)},b)}function m(a,b,c){k.info({tag:a,...s(c)},b)}function n(a,b,c){k.warn({tag:a,...s(c)},b)}function o(a,b,c){k.error({tag:a,...s(c)},b)}function p(a,b,c){k.info({tag:"HTTP",method:a,path:b,...s(c)},`📥 ${a} ${b}`)}function q(a,b,c){k[a<400?"info":"error"]({tag:"HTTP",status:a,duration:b,...s(c)},`📤 ${a} (${b}ms)`)}function r(a,b){k.debug({tag:"STREAM",event:a,...s(b)},`🌊 ${a}`)}function s(a){return a?"string"==typeof a?{detail:a}:"object"==typeof a?a:{detail:String(a)}:{}}},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},92556:(a,b,c)=>{c.d(b,{$N:()=>e,J5:()=>d});let d=process.env.CORS_ORIGIN||"*",e={"Access-Control-Allow-Origin":d,"Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, x-api-key, anthropic-version"}},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};
@@ -1,8 +0,0 @@
1
- "use strict";exports.id=4168,exports.ids=[4168],exports.modules={34493:(a,b,c)=>{c.d(b,{GL:()=>i,XT:()=>j,pq:()=>h});var d=c(94755),e=c(42910);let f=!e.m1&&!e.I8,g=[];if(f)try{for(let a of(0,e.sm)().prepare("SELECT * FROM proxy_logs ORDER BY timestamp DESC LIMIT ?").all(500))g.push({id:a.id,timestamp:a.timestamp,status:a.status||"success",proxy:a.proxy_host?{type:a.proxy_type,host:a.proxy_host,port:a.proxy_port}:null,level:a.level||"direct",levelId:a.level_id||null,provider:a.provider||null,targetUrl:a.target_url||null,publicIp:a.public_ip||null,latencyMs:a.latency_ms||0,error:a.error||null,connectionId:a.connection_id||null,comboId:a.combo_id||null,account:a.account||null,tlsFingerprint:1===a.tls_fingerprint});g.length>0&&console.log(`[proxyLogger] Loaded ${g.length} proxy logs from SQLite`)}catch(a){console.warn("[proxyLogger] Failed to load from DB:",a.message)}function h(a){let b={id:(0,d.A)(),timestamp:new Date().toISOString(),status:a.status||"success",proxy:a.proxy||null,level:a.level||"direct",levelId:a.levelId||null,provider:a.provider||null,targetUrl:a.targetUrl||null,publicIp:a.publicIp||null,latencyMs:a.latencyMs||0,error:a.error||null,connectionId:a.connectionId||null,comboId:a.comboId||null,account:a.account||null,tlsFingerprint:a.tlsFingerprint||!1};if(g.unshift(b),g.length>500&&(g.length=500),f)try{let a=(0,e.sm)();a.prepare(`INSERT INTO proxy_logs (id, timestamp, status, proxy_type, proxy_host, proxy_port,
2
- level, level_id, provider, target_url, public_ip, latency_ms, error,
3
- connection_id, combo_id, account, tls_fingerprint)
4
- VALUES (@id, @timestamp, @status, @proxyType, @proxyHost, @proxyPort,
5
- @level, @levelId, @provider, @targetUrl, @publicIp, @latencyMs, @error,
6
- @connectionId, @comboId, @account, @tlsFingerprint)`).run({id:b.id,timestamp:b.timestamp,status:b.status,proxyType:b.proxy?.type||null,proxyHost:b.proxy?.host||null,proxyPort:b.proxy?.port||null,level:b.level,levelId:b.levelId,provider:b.provider,targetUrl:b.targetUrl,publicIp:b.publicIp,latencyMs:b.latencyMs,error:b.error,connectionId:b.connectionId,comboId:b.comboId,account:b.account,tlsFingerprint:+!!b.tlsFingerprint});let c=a.prepare("SELECT COUNT(*) as cnt FROM proxy_logs").get()?.cnt||0;c>500&&a.prepare(`DELETE FROM proxy_logs WHERE id IN (
7
- SELECT id FROM proxy_logs ORDER BY timestamp ASC LIMIT ?
8
- )`).run(c-500)}catch(a){console.warn("[proxyLogger] Failed to persist:",a.message)}return b}function i(a={}){let b=[...g];if(a.status&&(b="ok"===a.status?b.filter(a=>"success"===a.status):b.filter(b=>b.status===a.status)),a.type&&(b=b.filter(b=>b.proxy?.type===a.type)),a.provider&&(b=b.filter(b=>b.provider===a.provider)),a.level&&(b=b.filter(b=>b.level===a.level)),a.search){let c=a.search.toLowerCase();b=b.filter(a=>(a.proxy?.host||"").toLowerCase().includes(c)||(a.provider||"").toLowerCase().includes(c)||(a.targetUrl||"").toLowerCase().includes(c)||(a.publicIp||"").toLowerCase().includes(c)||(a.level||"").toLowerCase().includes(c)||(a.error||"").toLowerCase().includes(c)||(a.account||"").toLowerCase().includes(c))}let c=a.limit||300;return b.slice(0,c)}function j(){if(g.length=0,f)try{(0,e.sm)().prepare("DELETE FROM proxy_logs").run()}catch(a){console.warn("[proxyLogger] Failed to clear DB:",a.message)}}},76340:(a,b,c)=>{let d;c.d(b,{Wk:()=>s,jf:()=>p,qT:()=>r});var e=c(16698),f=c(79522);try{({createSession:d}=c(22546))}catch{d=null}class g{constructor(){this.session=null,this.available=!!d}async getSession(){if(!this.available)return null;if(this.session)return this.session;let a=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy||void 0,b={browser:"chrome_124",os:"macos"};return a&&(b.proxy=a,console.log(`[TlsClient] Using proxy: ${a}`)),this.session=await d(b),console.log("[TlsClient] Session created (Chrome 124 TLS fingerprint)"),this.session}async fetch(a,b={}){let c=await this.getSession();if(!c)throw Error("wreq-js not available");let d={method:(b.method||"GET").toUpperCase(),headers:b.headers,body:b.body,redirect:"manual"===b.redirect?"manual":"follow"};return b.signal&&(d.signal=b.signal),await c.fetch(a,d)}async exit(){this.session&&(await this.session.close(),this.session=null)}}let h=new g;function i(){return"true"===process.env.ENABLE_TLS_FINGERPRINT}let j=new e.AsyncLocalStorage,k="u">typeof caches&&"object"==typeof caches,l=Symbol.for("omniroute.proxyFetch.state"),m=(globalThis[l]||(globalThis[l]={originalFetch:globalThis.fetch,proxyContext:new e.AsyncLocalStorage,isPatched:!1}),globalThis[l]),n=m.originalFetch,o=m.proxyContext;async function p(a,b){if("function"!=typeof b)throw TypeError("runWithProxyContext requires a callback function");let c=a?(0,f.HN)(a):null;return o.run(a||null,async()=>(c&&console.log(`[ProxyFetch] Applied request proxy context: ${(0,f.OK)(c)}`),b()))}async function q(a,b={}){let c;if(b?.dispatcher)return n(a,b);let d="string"==typeof a?a:a&&"string"==typeof a.url?a.url:String(a);try{c=function(a){let b=o.getStore();if(b)return{source:"context",proxyUrl:(0,f.HN)(b)};let c=function(a){let b;if(function(a){let b,c=process.env.NO_PROXY||process.env.no_proxy;if(!c)return!1;try{b=new URL(a)}catch{return!1}let d=b.hostname.toLowerCase(),e=b.port||("https:"===b.protocol?"443":"80");return c.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>{if("*"===a)return!0;let[b,c]=a.split(":");return(!c||c===e)&&!!b&&(b.startsWith(".")?d.endsWith(b)||d===b.slice(1):d===b||d.endsWith(`.${b}`))})}(a))return null;try{b=new URL(a).protocol}catch{return null}let c="https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy;return c?(0,f.zP)(c,"environment proxy"):null}(a);return c?{source:"env",proxyUrl:c}:{source:"direct",proxyUrl:null}}(d)}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy configuration error: ${a}`),b}let{source:e,proxyUrl:g}=c;if(!g){if(i()&&h.available)try{let a=j.getStore();return a&&(a.used=!0),await h.fetch(d,b)}catch(c){let a=c instanceof Error?c.message:String(c);console.warn(`[ProxyFetch] TLS fingerprint failed, falling back to native fetch: ${a}`);let b=j.getStore();b&&(b.used=!1)}return n(a,b)}try{let c=(0,f.I_)(g);return await n(a,{...b,dispatcher:c})}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy request failed (${e}, fail-closed): ${a}`),b}}async function r(a){let b={used:!1};return{result:await j.run(b,a),tlsFingerprintUsed:b.used}}function s(){return i()&&h.available}k||m.isPatched||(globalThis.fetch=q,m.isPatched=!0)},79522:(a,b,c)=>{c.d(b,{HN:()=>m,I_:()=>n,OK:()=>k,QX:()=>j,zP:()=>l});var d=c(47774),e=c(20406);let f=Symbol.for("omniroute.proxyDispatcher.cache"),g=new Set(["http:","https:","socks5:"]);function h(a){return"https:"===a||"wss:"===a?"443":"socks5:"===a?"1080":"8080"}function i(a,b){if(!a)return h(b);let c=Number(a);if(!Number.isInteger(c)||c<1||c>65535)throw Error("[ProxyDispatcher] Invalid proxy port");return String(c)}function j(){return"true"===process.env.ENABLE_SOCKS5_PROXY}function k(a){let b=new URL(a),c=b.port||h(b.protocol);return`${b.protocol}//${b.hostname}:${c}`}function l(a,b="proxy",{allowSocks5:c=j()}={}){let d;try{d=new URL(a)}catch{throw Error(`[ProxyDispatcher] Invalid ${b} URL`)}if(!g.has(d.protocol))throw Error(`[ProxyDispatcher] Unsupported ${b} protocol: ${d.protocol.replace(":","")}`);if("socks5:"===d.protocol&&!c)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)");if(!d.hostname)throw Error(`[ProxyDispatcher] Invalid ${b} host`);return d.port=i(d.port,d.protocol),d.toString()}function m(a,{allowSocks5:b=j()}={}){if(!a)return null;if("string"==typeof a)return l(a,"context proxy",{allowSocks5:b});if("object"!=typeof a||Array.isArray(a))throw Error("[ProxyDispatcher] Invalid context proxy config");let c=String(a.type||"http").toLowerCase(),d=`${c}:`;if(!g.has(d))throw Error(`[ProxyDispatcher] Unsupported context proxy protocol: ${c}`);if("socks5:"===d&&!b)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)");if(!a.host)throw Error("[ProxyDispatcher] Context proxy host is required");let e=i(a.port,d),f=new URL(`${c}://${a.host}:${e}`);return a.username&&(f.username=a.username,f.password=a.password||""),l(f.toString(),"context proxy",{allowSocks5:b})}function n(a){let b=l(a,"proxy dispatcher"),c=(globalThis[f]||(globalThis[f]=new Map),globalThis[f]),g=c.get(b);if(g)return g;let h=new URL(b);if("socks5:"===h.protocol){let a={type:5,host:h.hostname,port:Number(i(h.port,h.protocol))};h.username&&(a.userId=decodeURIComponent(h.username)),h.password&&(a.password=decodeURIComponent(h.password)),g=(0,e.vI)(a)}else g=new d.ProxyAgent(b);return c.set(b,g),g}}};
@@ -1 +0,0 @@
1
- exports.id=5248,exports.ids=[5248],exports.modules={1596:(a,b,c)=>{"use strict";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/shared/components/ColumnToggle.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/shared/components/ColumnToggle.tsx","default")},1972:(a,b,c)=>{Promise.resolve().then(c.bind(c,45567)),Promise.resolve().then(c.bind(c,4355)),Promise.resolve().then(c.bind(c,77088)),Promise.resolve().then(c.bind(c,53156)),Promise.resolve().then(c.bind(c,2490)),Promise.resolve().then(c.bind(c,52198)),Promise.resolve().then(c.bind(c,27309)),Promise.resolve().then(c.bind(c,50818)),Promise.resolve().then(c.bind(c,85974)),Promise.resolve().then(c.bind(c,67083)),Promise.resolve().then(c.bind(c,22245)),Promise.resolve().then(c.bind(c,14797)),Promise.resolve().then(c.bind(c,29518)),Promise.resolve().then(c.bind(c,98004)),Promise.resolve().then(c.bind(c,41371)),Promise.resolve().then(c.bind(c,53140)),Promise.resolve().then(c.bind(c,16116)),Promise.resolve().then(c.bind(c,47047)),Promise.resolve().then(c.bind(c,22746)),Promise.resolve().then(c.bind(c,1237)),Promise.resolve().then(c.bind(c,65953)),Promise.resolve().then(c.bind(c,29494)),Promise.resolve().then(c.bind(c,18732)),Promise.resolve().then(c.bind(c,8744)),Promise.resolve().then(c.bind(c,56589)),Promise.resolve().then(c.bind(c,73979)),Promise.resolve().then(c.bind(c,46230)),Promise.resolve().then(c.bind(c,86059)),Promise.resolve().then(c.bind(c,59256)),Promise.resolve().then(c.bind(c,65892)),Promise.resolve().then(c.bind(c,75146)),Promise.resolve().then(c.bind(c,59869)),Promise.resolve().then(c.bind(c,65472)),Promise.resolve().then(c.bind(c,62688)),Promise.resolve().then(c.bind(c,82054))},6676:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(5735);c(97528),c(84028),c(65630),c(39896),c(37487),c(23520),c(44453),c(9037),c(83746),c(19411),c(32444),c(84832),c(11669),c(70643),c(77406),c(92452),c(22571),c(11492),c(44389),c(60595),c(23059),c(33696),c(8598),c(91685),c(13618),c(20263),c(9465),c(77042),c(53504),c(89806),c(62805),c(1596),c(73272);var e=c(51098);function f({children:a}){return(0,d.jsx)(e.default,{children:a})}c(27914)},8598:(a,b,c)=>{"use strict";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/shared/components/KiroAuthModal.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/shared/components/KiroAuthModal.tsx","default")},9037:(a,b,c)=>{"use strict";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/shared/components/Badge.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/shared/components/Badge.tsx","default")},9465:(a,b,c)=>{"use strict";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/shared/components/SegmentedControl.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/shared/components/SegmentedControl.tsx","default")},11492:(a,b,c)=>{"use strict";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/shared/components/UsageStats.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/shared/components/UsageStats.tsx","default")},11669:(a,b,c)=>{"use strict";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/shared/components/Header.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/shared/components/Header.tsx","default")},13618:(a,b,c)=>{"use strict";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/shared/components/KiroSocialOAuthModal.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/shared/components/KiroSocialOAuthModal.tsx","default")},19411:(a,b,c)=>{"use strict";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/shared/components/ThemeToggle.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/shared/components/ThemeToggle.tsx","default")},20263:(a,b,c)=>{"use strict";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/shared/components/CursorAuthModal.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/shared/components/CursorAuthModal.tsx","default")},22571:(a,b,c)=>{"use strict";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/shared/components/ManualConfigModal.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/shared/components/ManualConfigModal.tsx","default")},23059:(a,b,c)=>{"use strict";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/shared/components/ProxyConfigModal.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/shared/components/ProxyConfigModal.tsx","default")},23520:(a,b,c)=>{"use strict";c.d(b,{CardSkeleton:()=>h,PageLoading:()=>f,Skeleton:()=>g,Spinner:()=>e,default:()=>i});var d=c(77943);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call Spinner() from the server but Spinner 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/Loading.tsx","Spinner"),f=(0,d.registerClientReference)(function(){throw Error("Attempted to call PageLoading() from the server but PageLoading 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/Loading.tsx","PageLoading"),g=(0,d.registerClientReference)(function(){throw Error("Attempted to call Skeleton() from the server but Skeleton 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/Loading.tsx","Skeleton"),h=(0,d.registerClientReference)(function(){throw Error("Attempted to call CardSkeleton() from the server but CardSkeleton 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/Loading.tsx","CardSkeleton"),i=(0,d.registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Loading.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Loading.tsx","default")},27914:(a,b,c)=>{"use strict";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/shared/components/layouts/AuthLayout.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/shared/components/layouts/AuthLayout.tsx","default")},33696:(a,b,c)=>{"use strict";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/shared/components/ProxyLogger.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/shared/components/ProxyLogger.tsx","default")},37487:(a,b,c)=>{"use strict";c.d(b,{ConfirmModal:()=>f,default:()=>e});var d=c(77943);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Modal.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/shared/components/Modal.tsx","default"),f=(0,d.registerClientReference)(function(){throw Error("Attempted to call ConfirmModal() from the server but ConfirmModal 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/Modal.tsx","ConfirmModal")},39896:(a,b,c)=>{"use strict";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/shared/components/Card.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/shared/components/Card.tsx","default")},44389:(a,b,c)=>{"use strict";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/shared/components/UsageAnalytics.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/shared/components/UsageAnalytics.tsx","default")},44453:(a,b,c)=>{"use strict";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/shared/components/Avatar.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/shared/components/Avatar.tsx","default")},49236:(a,b,c)=>{Promise.resolve().then(c.bind(c,44453)),Promise.resolve().then(c.bind(c,9037)),Promise.resolve().then(c.bind(c,77042)),Promise.resolve().then(c.bind(c,97528)),Promise.resolve().then(c.bind(c,39896)),Promise.resolve().then(c.bind(c,1596)),Promise.resolve().then(c.bind(c,20263)),Promise.resolve().then(c.bind(c,73272)),Promise.resolve().then(c.bind(c,53504)),Promise.resolve().then(c.bind(c,62805)),Promise.resolve().then(c.bind(c,70643)),Promise.resolve().then(c.bind(c,11669)),Promise.resolve().then(c.bind(c,84028)),Promise.resolve().then(c.bind(c,8598)),Promise.resolve().then(c.bind(c,91685)),Promise.resolve().then(c.bind(c,13618)),Promise.resolve().then(c.bind(c,27914)),Promise.resolve().then(c.bind(c,51098)),Promise.resolve().then(c.bind(c,23520)),Promise.resolve().then(c.bind(c,22571)),Promise.resolve().then(c.bind(c,37487)),Promise.resolve().then(c.bind(c,92452)),Promise.resolve().then(c.bind(c,89806)),Promise.resolve().then(c.bind(c,77406)),Promise.resolve().then(c.bind(c,23059)),Promise.resolve().then(c.bind(c,33696)),Promise.resolve().then(c.bind(c,60595)),Promise.resolve().then(c.bind(c,9465)),Promise.resolve().then(c.bind(c,65630)),Promise.resolve().then(c.bind(c,84832)),Promise.resolve().then(c.bind(c,32444)),Promise.resolve().then(c.bind(c,19411)),Promise.resolve().then(c.bind(c,83746)),Promise.resolve().then(c.bind(c,44389)),Promise.resolve().then(c.bind(c,11492))},51098:(a,b,c)=>{"use strict";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/shared/components/layouts/DashboardLayout.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/shared/components/layouts/DashboardLayout.tsx","default")},53504:(a,b,c)=>{"use strict";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/shared/components/EmptyState.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/shared/components/EmptyState.tsx","default")},60595:(a,b,c)=>{"use strict";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/shared/components/RequestLoggerV2.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/shared/components/RequestLoggerV2.tsx","default")},62805:(a,b,c)=>{"use strict";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/shared/components/FilterBar.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/shared/components/FilterBar.tsx","default")},65630:(a,b,c)=>{"use strict";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/shared/components/Select.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/shared/components/Select.tsx","default")},70643:(a,b,c)=>{"use strict";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/shared/components/Footer.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/shared/components/Footer.tsx","default")},73272:(a,b,c)=>{"use strict";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/shared/components/DataTable.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/shared/components/DataTable.tsx","default")},77042:(a,b,c)=>{"use strict";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/shared/components/Breadcrumbs.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/shared/components/Breadcrumbs.tsx","default")},77406:(a,b,c)=>{"use strict";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/shared/components/OAuthModal.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/shared/components/OAuthModal.tsx","default")},83746:(a,b,c)=>{"use strict";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/shared/components/Toggle.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/shared/components/Toggle.tsx","default")},84028:(a,b,c)=>{"use strict";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/shared/components/Input.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/shared/components/Input.tsx","default")},84832:(a,b,c)=>{"use strict";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/shared/components/Sidebar.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/shared/components/Sidebar.tsx","default")},89806:(a,b,c)=>{"use strict";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/shared/components/NotificationToast.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/shared/components/NotificationToast.tsx","default")},91685:(a,b,c)=>{"use strict";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/shared/components/KiroOAuthWrapper.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/shared/components/KiroOAuthWrapper.tsx","default")},92452:(a,b,c)=>{"use strict";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/shared/components/ModelSelectModal.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/shared/components/ModelSelectModal.tsx","default")},97528:(a,b,c)=>{"use strict";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/shared/components/Button.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/shared/components/Button.tsx","default")}};
@@ -1,2 +0,0 @@
1
- exports.id=9979,exports.ids=[9979],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")},21280:(a,b,c)=>{"use strict";c.d(b,{S_:()=>m});var d=c(22901),e=c(87068);let f="[HealthCheck]",g=null,h=0,i=null;async function j(){let a=Date.now();return null!==g&&a-h<3e4?g:null!==i?i:i=(async()=>{try{let b=await (0,d.V7)();return g=!0===b.hideHealthCheckLogs,h=a,g}catch{return!1}finally{i=null}})()}function k(a,...b){j().then(c=>{c||console.log(a,...b)})}function l(a,...b){j().then(c=>{c||console.error(a,...b)})}function m(){g=null,h=0}let n=!1;async function o(){try{let a=await (0,d.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await p(b)}catch(a){l(`${f} Error checking ${b.name||b.id}:`,a.message)}}catch(a){l(`${f} Sweep error:`,a.message)}}async function p(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,e.Ny)(a.provider)){let b=new Date().toISOString();await (0,d.rj)(a.id,{lastHealthCheckAt:b}),k(`${f} Skipping ${a.provider}/${a.name||a.email||a.id} (refresh unsupported)`);return}let c=a.lastHealthCheckAt?new Date(a.lastHealthCheckAt).getTime():0;if(Date.now()-c<60*b*1e3)return;k(`${f} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let g={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await j(),i=await (0,e.iD)(a.provider,g,{info:(a,b)=>{h||console.log(`${f} [${a}] ${b}`)},warn:(a,b)=>{h||console.warn(`${f} [${a}] ${b}`)},error:(a,b,c)=>{h||console.error(`${f} [${a}] ${b}`,c||"")}}),m=new Date().toISOString();if((0,e.jT)(i)){await (0,d.rj)(a.id,{lastHealthCheckAt:m,testStatus:"expired",lastError:`Refresh token consumed (${i.error}). Please re-authenticate this account.`,lastErrorAt:m,lastErrorType:i.error,lastErrorSource:"oauth",errorCode:i.error,isActive:!1,refreshToken:null}),l(`${f} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${i.error}). Connection deactivated. Re-authenticate to restore.`);return}if(i&&i.accessToken){let b={accessToken:i.accessToken,lastHealthCheckAt:m,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};i.refreshToken&&(b.refreshToken=i.refreshToken),i.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*i.expiresIn).toISOString()),await (0,d.rj)(a.id,b),k(`${f} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,d.rj)(a.id,{lastHealthCheckAt:m,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:m,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),function(a,...b){j().then(c=>{c||console.warn(a,...b)})}(`${f} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}n=!0,k(`${f} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{o(),setInterval(o,6e4)},1e4)},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")},39710:(a,b,c)=>{Promise.resolve().then(c.bind(c,97507))},44438:(a,b,c)=>{Promise.resolve().then(c.bind(c,64385))},47695:(a,b,c)=>{"use strict";c.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(22901);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:()=>{},64385:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/error.tsx","default")},67045:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[#0a0a0f] text-[#e0e0e0] font-[system-ui,-apple-system,sans-serif] text-center m-0",children:(0,d.jsxs)("main",{role:"alert","aria-live":"assertive",className:"flex flex-col items-center",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4","aria-hidden":"true",children:"⚠️"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-[15px] text-[#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,"aria-label":"Retry loading the page",className:"px-8 py-3 rounded-[10px] text-white border-none text-sm font-semibold cursor-pointer transition-transform duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6] focus:outline-2 focus:outline-offset-2 focus:outline-[#6366f1]",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-bg text-text-main text-center",role:"main","aria-labelledby":"not-found-title",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-primary to-primary-hover bg-clip-text text-transparent","aria-hidden":"true",children:"404"}),(0,d.jsx)("h1",{id:"not-found-title",className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-text-muted max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsx)(f(),{href:"/dashboard",className:"px-8 py-3 rounded-xl text-white text-sm font-medium no-underline transition-all duration-200 shadow-warm hover:-translate-y-0.5 bg-gradient-to-br from-primary to-primary-hover hover:shadow-elevated focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Return to dashboard",children:"Go to Dashboard"})]})}},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.4.4"},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(91057);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)})}}},91057:(a,b,c)=>{"use strict";var d=c(49226);c(21280);let e=!1;(async function(){if(!e)try{await (0,d.A)(),e=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return e})().catch(a=>console.error("[CloudSync] ensure failed:",a))},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:"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"},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:"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"},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:"iflow",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",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:"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"},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",modelsUrl:"https://api.kilo.ai/api/openrouter/models",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"openrouter/free",name:"Free Models Router"},{id:"qwen/qwen3-vl-235b-a22b-thinking",name:"Qwen3 VL 235B A22B Thinking"},{id:"qwen/qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen/qwen3-vl-30b-a3b-thinking",name:"Qwen3 VL 30B A3B Thinking"},{id:"stepfun/step-3.5-flash:free",name:"StepFun Step 3.5 Flash"},{id:"arcee-ai/trinity-large-preview:free",name:"Arcee AI Trinity Large Preview"},{id:"openai/gpt-4o-mini",name:"GPT-4o Mini"},{id:"openai/gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"openai/gpt-5-nano",name:"GPT-5 Nano"},{id:"openai/gpt-5-mini",name:"GPT-5 Mini"},{id:"anthropic/claude-3-haiku",name:"Claude 3 Haiku"},{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"google/gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"deepseek/deepseek-chat-v3.1",name:"DeepSeek V3.1"},{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-scout",name:"Llama 4 Scout"},{id:"meta-llama/llama-4-maverick",name:"Llama 4 Maverick"},{id:"qwen/qwen3-8b",name:"Qwen3 8B"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"qwen/qwen3-coder",name:"Qwen3 Coder 480B"},{id:"qwen/qwq-32b",name:"QwQ 32B"},{id:"mistralai/mistral-small-24b-instruct-2501",name:"Mistral Small 3"},{id:"mistralai/mistral-7b-instruct",name:"Mistral 7B"},{id:"x-ai/grok-code-fast-1",name:"Grok Code Fast 1"},{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},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))},97507:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-[60vh] p-6 text-center",role:"alert","aria-live":"assertive",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4","aria-hidden":"true",children:"\uD83D\uDD27"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2 text-[var(--color-text-main)]",children:"Internal Server Error"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--color-text-muted)] max-w-[400px] leading-relaxed mb-2",children:"Something went wrong while processing your request. Our team has been notified and is working on a fix."}),a?.digest&&(0,d.jsxs)("p",{className:"text-xs text-[var(--color-text-muted)] mb-6 font-mono",children:["Error ID: ",a.digest]}),!1,(0,d.jsxs)("div",{className:"flex gap-3",children:[(0,d.jsx)("button",{onClick:b,"aria-label":"Retry loading the page",className:"px-6 py-2.5 rounded-lg text-white text-sm font-semibold cursor-pointer transition-all duration-200 bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]",children:"Try Again"}),(0,d.jsx)("a",{href:"/dashboard",className:"px-6 py-2.5 rounded-lg text-[var(--color-text-main)] text-sm font-semibold cursor-pointer transition-all duration-200 border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]","aria-label":"Return to dashboard",children:"Go to Dashboard"})]})]})}}};
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5846],{20909:(e,a,i)=>{i.d(a,{Q2:()=>h,DI:()=>c,fg:()=>d,MA:()=>g,IS:()=>s,zN:()=>l,JH:()=>m,wb:()=>f,wG:()=>b,zt:()=>k,gb:()=>u,mq:()=>p});var t=i(47173);let o=t.Ikc({id:t.YjP().min(1),alias:t.YjP().min(1),name:t.YjP().min(1),icon:t.YjP().min(1),color:t.YjP().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:t.YjP().optional(),website:t.YjP().url().optional(),passthroughModels:t.zMY().optional()}),n=t.g1P(t.YjP(),o);function r(e,a){let i=n.safeParse(e);if(!i.success){let e=i.error.issues.map(e=>` ${e.path.join(".")}: ${e.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${a} has invalid entries:
2
- ${e}`),Error(`Provider validation failed for ${a}`)}}let s={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},l={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},d={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"}},m="openai-compatible-",c="anthropic-compatible-";function p(e){return"string"==typeof e&&e.startsWith(m)}function u(e){return"string"==typeof e&&e.startsWith(c)}let h={...s,...l,...d},g={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function k(e){for(let a of Object.values(h))if(a.alias===e||a.id===e)return a;return null}function b(e){let a=h[e];return a?.alias||e}Object.values(h).reduce((e,a)=>(e[a.alias]=a.id,e),{}),Object.values(h).reduce((e,a)=>(e[a.id]=a.alias,e),{});let f=["antigravity","kiro","github","codex","claude"];r(s,"FREE_PROVIDERS"),r(l,"OAUTH_PROVIDERS"),r(d,"APIKEY_PROVIDERS")},35144:(e,a,i)=>{i.d(a,{Xg:()=>r,vq:()=>n,KC:()=>s}),i(41463);let t={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:(e,a,i)=>`${e}/${a}:${i?"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:"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"},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:(e,a,i)=>`${e}:${i?"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:"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"},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:"iflow",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",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:(e,a,i)=>`${e}${i?"/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:"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"},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",modelsUrl:"https://api.kilo.ai/api/openrouter/models",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"openrouter/free",name:"Free Models Router"},{id:"qwen/qwen3-vl-235b-a22b-thinking",name:"Qwen3 VL 235B A22B Thinking"},{id:"qwen/qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen/qwen3-vl-30b-a3b-thinking",name:"Qwen3 VL 30B A3B Thinking"},{id:"stepfun/step-3.5-flash:free",name:"StepFun Step 3.5 Flash"},{id:"arcee-ai/trinity-large-preview:free",name:"Arcee AI Trinity Large Preview"},{id:"openai/gpt-4o-mini",name:"GPT-4o Mini"},{id:"openai/gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"openai/gpt-5-nano",name:"GPT-5 Nano"},{id:"openai/gpt-5-mini",name:"GPT-5 Mini"},{id:"anthropic/claude-3-haiku",name:"Claude 3 Haiku"},{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"google/gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"deepseek/deepseek-chat-v3.1",name:"DeepSeek V3.1"},{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-scout",name:"Llama 4 Scout"},{id:"meta-llama/llama-4-maverick",name:"Llama 4 Maverick"},{id:"qwen/qwen3-8b",name:"Qwen3 8B"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"qwen/qwen3-coder",name:"Qwen3 Coder 480B"},{id:"qwen/qwq-32b",name:"QwQ 32B"},{id:"mistralai/mistral-small-24b-instruct-2501",name:"Mistral Small 3"},{id:"mistralai/mistral-7b-instruct",name:"Mistral 7B"},{id:"x-ai/grok-code-fast-1",name:"Grok Code Fast 1"},{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},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"}]}},o=new Map;for(let e of Object.values(t))e.alias&&e.alias!==e.id&&o.set(e.alias,e);let n=function(){let e={};for(let a of Object.values(t))if(a.models&&a.models.length>0){let i=a.alias||a.id;e[i]||(e[i]=a.models)}return e}(),r=function(){let e={};for(let a of Object.values(t))e[a.id]=a.alias||a.id;return e}();function s(e){return n[r[e]||e]||[]}},52529:(e,a,i)=>{i.d(a,{Q2:()=>t.Q2,fg:()=>t.fg,vQ:()=>o,MA:()=>t.MA,zN:()=>t.zN,B2:()=>n});var t=i(20909);i(81135);let o={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:"1.4.4"},n={storageKey:"theme",defaultTheme:"system"}},55846:(e,a,i)=>{i.d(a,{ThemeProvider:()=>r});var t=i(95155),o=i(12115),n=i(76851);function r({children:e}){let{initTheme:a}=(0,n.A)();return(0,o.useEffect)(()=>{a()},[a]),(0,t.jsx)(t.Fragment,{children:e})}},76851:(e,a,i)=>{i.d(a,{A:()=>s});var t=i(1934),o=i(31692),n=i(52529);function r(e){let a=document.documentElement,i=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";"dark"===("system"===e?i:e)?a.classList.add("dark"):a.classList.remove("dark")}let s=(0,t.v)()((0,o.Zr)((e,a)=>({theme:n.B2.defaultTheme,setTheme:a=>{e({theme:a}),r(a)},toggleTheme:()=>{let i="dark"===a().theme?"light":"dark";e({theme:i}),r(i)},initTheme:()=>{r(a().theme)}}),{name:n.B2.storageKey}))},81135:(e,a,i)=>{i.d(a,{KC:()=>t.KC,Xg:()=>t.Xg});var t=i(35144);Object.entries(i(20909).Q2).filter(([,e])=>e.passthroughModels).map(([e])=>e),Object.entries(t.vq).flatMap(([e,a])=>a.map(a=>({provider:e,model:a.id,name:a.name})))}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[597],{1138:(s,a,r)=>{Promise.resolve().then(r.bind(r,4053))},4053:(s,a,r)=>{"use strict";r.r(a),r.d(a,{default:()=>e});var d=r(95155);function e(){return(0,d.jsxs)("div",{className:"space-y-6 animate-pulse p-6",children:[(0,d.jsx)("div",{className:"h-8 bg-gray-200 dark:bg-gray-700 rounded w-40"}),(0,d.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:[1,2,3,4].map(s=>(0,d.jsx)("div",{className:"h-24 bg-gray-200 dark:bg-gray-700 rounded-lg"},s))}),(0,d.jsx)("div",{className:"h-64 bg-gray-200 dark:bg-gray-700 rounded-lg"})]})}}},s=>{s.O(0,[8441,3794,7358],()=>s(s.s=1138)),_N_E=s.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2888],{42712:(e,t,s)=>{"use strict";s.d(t,{default:()=>n});var l=s(95155),a=s(12115),r=s(40993),i=s(30949);function n(){let[e,t]=(0,a.useState)([]),[s,n]=(0,a.useState)([]),[c,o]=(0,a.useState)(!0),[x,m]=(0,a.useState)(!1),[h,p]=(0,a.useState)(""),[u,y]=(0,a.useState)(null),[g,b]=(0,a.useState)(null),[j,f]=(0,a.useState)(!1),[N,v]=(0,a.useState)(""),[k,C]=(0,a.useState)(null),[w,S]=(0,a.useState)(!1),[A,_]=(0,a.useState)({}),{copied:$,copy:K}=(0,i.C)();(0,a.useEffect)(()=>{E(),P()},[]);let P=async()=>{try{let e=await fetch("/v1/models");if(e.ok){let t=await e.json();n(t.data||[])}}catch(e){console.log("Error fetching models:",e)}},E=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let s=await e.json();t(s.keys||[]),I(s.keys||[])}}catch(e){console.log("Error fetching keys:",e)}finally{o(!1)}},I=async e=>{if(0!==e.length)try{let t=await fetch("/api/usage/call-logs?limit=1000");if(!t.ok)return;let s=await t.json(),l={};for(let t of e){let e=(s||[]).filter(e=>e.apiKeyId===t.id||e.apiKeyName===t.name);l[t.id]={totalRequests:e.length,lastUsed:e.length>0?e.sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())[0]?.timestamp:null}}_(l)}catch(e){console.log("Error fetching usage stats:",e)}},M=(0,a.useCallback)(()=>C(null),[]),T=async()=>{let e=h.replace(/[<>]/g,"").replace(/"/g,"").replace(/'/g,"").trim().slice(0,100),t=e&&e.trim()?e.length>100?{valid:!1,error:"Key name must be 100 characters or less"}:/^[a-zA-Z0-9_\-\s]+$/.test(e)?{valid:!0}:{valid:!1,error:"Key name can only contain letters, numbers, spaces, hyphens, and underscores"}:{valid:!1,error:"Key name is required"};if(!t.valid)return void C(t.error||"Invalid key name");S(!0),M();try{let t=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})}),s=await t.json();t.ok?(y(s.key),await E(),p(""),m(!1)):C(s.error||"Failed to create key")}catch(e){console.error("Error creating key:",e),C("Failed to create key. Please try again.")}finally{S(!1)}},O=async e=>{if(!e||"string"!=typeof e||!/^[a-zA-Z0-9_-]+$/.test(e))return void C("Invalid key ID");if(confirm("Delete this API key?")){S(!0),M();try{let s=await fetch(`/api/keys/${encodeURIComponent(e)}`,{method:"DELETE"});if(s.ok)t(t=>t.filter(t=>t.id!==e));else{let e=await s.json();C(e.error||"Failed to delete key")}}catch(e){console.error("Error deleting key:",e),C("Failed to delete key. Please try again.")}finally{S(!1)}}},D=e=>{e&&e.id&&(b(e),f(!0))},F=async e=>{if(!g||!g.id)return;if(!Array.isArray(e))return void C("Invalid models selection");if(e.length>500)return void C("Cannot select more than 500 models");let t=e.filter(e=>"string"==typeof e&&e.length>0&&e.length<200);S(!0),M();try{let e=await fetch(`/api/keys/${encodeURIComponent(g.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({allowedModels:t})});if(e.ok)await E(),f(!1),b(null);else{let t=await e.json();C(t.error||"Failed to update permissions")}}catch(e){console.error("Error updating permissions:",e),C("Failed to update permissions. Please try again.")}finally{S(!1)}},R=function(e,t){let[s,l]=(0,a.useState)(e);return(0,a.useEffect)(()=>{let t=setTimeout(()=>l(e),150);return()=>clearTimeout(t)},[e,150]),s}(N,0),z=(0,a.useMemo)(()=>{let e={};for(let t of s){let s=t.owned_by||"unknown";e[s]||(e[s]=[]),e[s].push(t)}return Object.entries(e).sort((e,t)=>e[0].localeCompare(t[0]))},[s]),U=(0,a.useMemo)(()=>{if(!R.trim())return z;let e=R.toLowerCase();return z.map(([t,s])=>[t,s.filter(s=>s.id.toLowerCase().includes(e)||t.toLowerCase().includes(e))]).filter(([,e])=>e.length>0)},[z,R]);return c?(0,l.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,l.jsx)(r.Qv,{}),(0,l.jsx)(r.Qv,{})]}):(0,l.jsxs)("div",{className:"flex flex-col gap-8",children:[k&&(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-red-500/10 border border-red-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-red-500",children:"error"}),(0,l.jsx)("p",{className:"text-sm text-red-700 dark:text-red-300 flex-1",children:k}),(0,l.jsx)("button",{onClick:M,className:"text-red-500 hover:text-red-700 transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined",children:"close"})})]}),e.length>0&&(0,l.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-primary/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-lg",children:"vpn_key"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:e.length}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Total Keys"})]})]})}),(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-amber-500/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-amber-500 text-lg",children:"lock"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:e.filter(e=>Array.isArray(e.allowedModels)&&e.allowedModels.length>0).length}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Restricted"})]})]})}),(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-blue-500/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-blue-500 text-lg",children:"bar_chart"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:Object.values(A).reduce((e,t)=>e+t.totalRequests,0)}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Total Requests"})]})]})}),(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-emerald-500/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-emerald-500 text-lg",children:"model_training"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:s.length}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Models Available"})]})]})})]}),(0,l.jsx)(r.Zp,{children:(0,l.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-lg font-semibold",children:"API Key Management"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Create and manage API keys for authenticating requests to your endpoint"})]}),(0,l.jsx)(r.$n,{icon:"add",onClick:()=>m(!0),children:"Create Key"})]})}),(0,l.jsxs)(r.Zp,{children:[(0,l.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-10 rounded-lg bg-amber-500/10 shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-xl text-amber-500",children:"vpn_key"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("h3",{className:"font-semibold",children:"Registered Keys"}),(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[e.length," ",1===e.length?"key":"keys"," registered"]})]})]})}),(0,l.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Each key isolates usage tracking and can be revoked independently. Keys are masked after creation for security."}),0===e.length?(0,l.jsxs)("div",{className:"text-center py-12 border border-dashed border-border rounded-lg",children:[(0,l.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,l.jsx)("p",{className:"text-text-main font-medium mb-2",children:"No API keys yet"}),(0,l.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to authenticate requests to your endpoint"}),(0,l.jsx)(r.$n,{icon:"add",onClick:()=>m(!0),children:"Create Your First Key"})]}):(0,l.jsxs)("div",{className:"flex flex-col border border-border rounded-lg overflow-hidden",children:[(0,l.jsxs)("div",{className:"grid grid-cols-12 gap-4 px-4 py-3 bg-surface/50 border-b border-border text-xs font-semibold text-text-muted uppercase tracking-wider",children:[(0,l.jsx)("div",{className:"col-span-2",children:"Name"}),(0,l.jsx)("div",{className:"col-span-3",children:"Key"}),(0,l.jsx)("div",{className:"col-span-2",children:"Permissions"}),(0,l.jsx)("div",{className:"col-span-2",children:"Usage"}),(0,l.jsx)("div",{className:"col-span-1",children:"Created"}),(0,l.jsx)("div",{className:"col-span-2 text-right",children:"Actions"})]}),e.map(e=>{let t=A[e.id],s=Array.isArray(e.allowedModels)&&e.allowedModels.length>0;return(0,l.jsxs)("div",{className:"grid grid-cols-12 gap-4 px-4 py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 hover:bg-surface/30 transition-colors group",children:[(0,l.jsxs)("div",{className:"col-span-2 flex items-center gap-2",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-sm ${s?"text-amber-500":"text-emerald-500"}`,children:s?"lock":"lock_open"}),(0,l.jsx)("span",{className:"text-sm font-medium truncate",title:e.name,children:e.name})]}),(0,l.jsxs)("div",{className:"col-span-3 flex items-center gap-1.5",children:[(0,l.jsx)("code",{className:"text-sm text-text-muted font-mono truncate",children:e.key}),(0,l.jsx)("button",{onClick:()=>K(e.key,e.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all shrink-0",title:"Copy masked key",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:$===e.id?"check":"content_copy"})})]}),(0,l.jsx)("div",{className:"col-span-2 flex items-center",children:s?(0,l.jsxs)("button",{onClick:()=>D(e),className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-amber-500/10 text-amber-600 dark:text-amber-400 text-xs font-medium hover:bg-amber-500/20 transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"lock"}),e.allowedModels.length," ",1===e.allowedModels.length?"model":"models"]}):(0,l.jsxs)("button",{onClick:()=>D(e),className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-green-500/10 text-green-600 dark:text-green-400 text-xs font-medium hover:bg-green-500/20 transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"lock_open"}),"All models"]})}),(0,l.jsxs)("div",{className:"col-span-2 flex flex-col justify-center",children:[(0,l.jsxs)("span",{className:"text-sm font-medium tabular-nums",children:[t?.totalRequests??0," ",(0,l.jsx)("span",{className:"text-text-muted font-normal text-xs",children:"reqs"})]}),t?.lastUsed?(0,l.jsxs)("span",{className:"text-[10px] text-text-muted",children:["Last: ",new Date(t.lastUsed).toLocaleDateString()]}):(0,l.jsx)("span",{className:"text-[10px] text-text-muted italic",children:"Never used"})]}),(0,l.jsx)("div",{className:"col-span-1 flex items-center text-sm text-text-muted",children:new Date(e.createdAt).toLocaleDateString()}),(0,l.jsxs)("div",{className:"col-span-2 flex items-center justify-end gap-1",children:[(0,l.jsx)("button",{onClick:()=>D(e),className:"p-2 hover:bg-primary/10 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all",title:"Edit permissions",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tune"})}),(0,l.jsx)("button",{onClick:()=>O(e.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-0 group-hover:opacity-100 transition-all",title:"Delete key",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},e.id)})]})]}),(0,l.jsx)(r.Zp,{children:(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-10 rounded-lg bg-blue-500/10 shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-xl text-blue-500",children:"lightbulb"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("h3",{className:"font-semibold mb-2",children:"Usage Tips"}),(0,l.jsxs)("ul",{className:"text-sm text-text-muted space-y-1.5",children:[(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsxs)("span",{children:["Use API keys in the"," ",(0,l.jsx)("code",{className:"text-xs bg-surface px-1.5 py-0.5 rounded",children:"Authorization"})," ","header as"," ",(0,l.jsx)("code",{className:"text-xs bg-surface px-1.5 py-0.5 rounded",children:"Bearer YOUR_KEY"})]})]}),(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:"Keys are only shown once during creation — store them securely"})]}),(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:"Create separate keys for different clients or environments"})]}),(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:"Restrict keys to specific models for better security and cost control"})]})]})]})]})}),(0,l.jsx)(r.aF,{isOpen:x,title:"Create API Key",onClose:()=>{m(!1),p("")},children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-sm font-medium text-text-main mb-1.5 block",children:"Key Name"}),(0,l.jsx)(r.pd,{value:h,onChange:e=>p(e.target.value),placeholder:"e.g., Production Key, Development Key",autoFocus:!0}),(0,l.jsx)("p",{className:"text-xs text-text-muted mt-1.5",children:"Choose a descriptive name to identify this key's purpose"})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(r.$n,{onClick:()=>{m(!1),p("")},variant:"ghost",fullWidth:!0,children:"Cancel"}),(0,l.jsx)(r.$n,{onClick:T,fullWidth:!0,disabled:!h.trim(),children:"Create Key"})]})]})}),(0,l.jsx)(r.aF,{isOpen:!!u,title:"API Key Created",onClose:()=>y(null),children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 border border-green-200 dark:border-green-800 rounded-lg p-4",children:(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200 font-medium mb-1",children:"Key created successfully!"}),(0,l.jsx)("p",{className:"text-sm text-green-700 dark:text-green-300",children:"Copy and store this key now — it won't be shown again."})]})]})}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(r.pd,{value:u||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,l.jsx)(r.$n,{variant:"secondary",icon:"created_key"===$?"check":"content_copy",onClick:()=>K(u,"created_key"),children:"created_key"===$?"Copied!":"Copy"})]}),(0,l.jsx)(r.$n,{onClick:()=>y(null),fullWidth:!0,children:"Done"})]})}),g&&(0,l.jsx)(d,{isOpen:j,onClose:()=>{f(!1),b(null)},apiKey:g,modelsByProvider:U,allModels:s,searchModel:N,onSearchChange:v,onSave:F},g.id)]})}let d=(0,a.memo)(function({isOpen:e,onClose:t,apiKey:s,modelsByProvider:i,allModels:n,searchModel:d,onSearchChange:c,onSave:o}){let x=Array.isArray(s?.allowedModels)?s.allowedModels:[],[m,h]=(0,a.useState)(x),[p,u]=(0,a.useState)(0===x.length),[y,g]=(0,a.useState)(()=>x.length>0?new Set(i.map(([e])=>e)):new Set),b=(0,a.useCallback)(e=>{p||h(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[p]),j=(0,a.useCallback)((e,t)=>{if(p)return;let s=t.map(e=>e.id);h(e=>s.every(t=>e.includes(t))?e.filter(e=>!s.includes(e)):[...new Set([...e,...s])])},[p]),f=(0,a.useCallback)(()=>{u(!0),h([])},[]),N=(0,a.useCallback)(()=>{u(!1),g(new Set(i.map(([e])=>e)))},[i]),v=(0,a.useCallback)(e=>{g(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),k=(0,a.useCallback)(()=>{h(n.map(e=>e.id))},[n]),C=(0,a.useCallback)(()=>{h([])},[]),w=(0,a.useCallback)(()=>{o(p?[]:m)},[o,p,m]);(0,a.useCallback)(()=>{c("")},[c]);let S=m.length,A=n.length;return(0,l.jsx)(r.aF,{isOpen:!!t&&e,title:`Permissions: ${s?.name||""}`,onClose:t,children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex gap-2 p-1 bg-surface rounded-lg",children:[(0,l.jsxs)("button",{onClick:f,className:`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-all ${p?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"lock_open"}),"Allow All"]}),(0,l.jsxs)("button",{onClick:N,className:`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-all ${!p?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"lock"}),"Restrict"]})]}),(0,l.jsxs)("div",{className:`flex items-start gap-2 p-3 rounded-lg ${p?"bg-green-500/10 border border-green-500/30":"bg-amber-500/10 border border-amber-500/30"}`,children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-[18px] ${p?"text-green-500":"text-amber-500"}`,children:p?"info":"warning"}),(0,l.jsx)("p",{className:`text-xs ${p?"text-green-700 dark:text-green-300":"text-amber-700 dark:text-amber-300"}`,children:p?"This key can access all available models.":`This key can access ${S} of ${A} models.`})]}),!p&&S>0&&(0,l.jsxs)("div",{className:"flex flex-col gap-1.5 p-2 bg-primary/5 rounded-lg border border-primary/20",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsxs)("span",{className:"text-xs font-medium text-primary",children:[S," selected"]}),(0,l.jsxs)("div",{className:"flex gap-1",children:[(0,l.jsx)("button",{onClick:k,className:"text-[10px] text-primary hover:bg-primary/10 px-1.5 py-0.5 rounded transition-colors",children:"All"}),(0,l.jsx)("button",{onClick:C,className:"text-[10px] text-red-500 hover:bg-red-500/10 px-1.5 py-0.5 rounded transition-colors",children:"Clear"})]})]}),(0,l.jsx)("div",{className:"flex flex-wrap gap-1 max-h-16 overflow-y-auto content-start",children:m.map(e=>(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 px-1.5 py-0.5 bg-white dark:bg-surface text-text-main text-[10px] rounded border border-border",children:[(0,l.jsx)("span",{className:"font-mono truncate max-w-[120px]",title:e,children:e}),(0,l.jsx)("button",{onClick:()=>b(e),className:"text-text-muted hover:text-red-500 transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},e))})]}),!p&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsx)(r.pd,{value:d,onChange:e=>c(e.target.value),placeholder:"Search models by name or provider...",icon:"search"}),d&&(0,l.jsx)("button",{onClick:()=>c(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-main",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,l.jsx)("div",{className:"max-h-[280px] overflow-y-auto border border-border rounded-lg divide-y divide-border",children:0===i.length?(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center py-6 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-2xl mb-1",children:"search_off"}),(0,l.jsx)("p",{className:"text-xs",children:"No models found"})]}):i.map(([e,t])=>{let s=m.filter(e=>t.some(t=>t.id===e)).length,a=t.every(e=>m.includes(e.id)),r=s>0&&!a;return(0,l.jsxs)("div",{className:"group",children:[(0,l.jsxs)("button",{onClick:()=>v(e),className:"w-full flex items-center gap-2 px-3 py-2 hover:bg-surface/50 transition-colors text-left",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-base transition-transform duration-200 ${y.has(e)?"rotate-90":""}`,children:"chevron_right"}),(0,l.jsxs)("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[(0,l.jsx)("div",{className:"relative flex items-center cursor-pointer shrink-0",onClick:s=>{s.stopPropagation(),j(e,t)},children:(0,l.jsxs)("div",{className:`w-4 h-4 rounded border-2 transition-colors flex items-center justify-center ${a?"bg-primary border-primary":r?"bg-primary/20 border-primary":"border-border hover:border-primary/50"}`,children:[a&&(0,l.jsx)("span",{className:"material-symbols-outlined text-white text-[12px]",children:"check"}),r&&!a&&(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-[12px]",children:"remove"})]})}),(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main truncate",children:e}),(0,l.jsx)("span",{className:"text-[10px] text-text-muted bg-surface px-1 py-0.5 rounded shrink-0",children:t.length})]}),s>0&&(0,l.jsx)("span",{className:"text-[10px] font-medium text-primary bg-primary/10 px-1.5 py-0.5 rounded-full shrink-0",children:s})]}),y.has(e)&&(0,l.jsx)("div",{className:"px-3 pb-2 pl-9",children:(0,l.jsx)("div",{className:"flex flex-wrap gap-1",children:t.map(e=>{let t=m.includes(e.id);return(0,l.jsx)("button",{onClick:()=>b(e.id),className:`inline-flex items-center gap-1 px-2 py-1 rounded-full text-[10px] font-mono transition-all ${t?"bg-primary text-white":"bg-surface border border-border text-text-muted hover:border-primary/50 hover:text-text-main"}`,title:e.id,children:e.id},e.id)})})})]},e)})})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(r.$n,{onClick:w,fullWidth:!0,children:"Save Permissions"}),(0,l.jsx)(r.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})})},57018:(e,t,s)=>{Promise.resolve().then(s.bind(s,42712))}},e=>{e.O(0,[8500,9751,782,1149,5846,993,8441,3794,7358],()=>e(e.s=57018)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6782],{29698:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var o=r(95155),a=r(12115);function l(){let[e,t]=(0,a.useState)([]),[r,l]=(0,a.useState)(!0),[s,c]=(0,a.useState)(null),[d,n]=(0,a.useState)(""),[i,x]=(0,a.useState)(""),[u,m]=(0,a.useState)(0),[b,p]=(0,a.useState)(!1),h=(0,a.useCallback)(async()=>{l(!0),c(null);try{let e=new URLSearchParams;d&&e.set("action",d),i&&e.set("actor",i),e.set("limit",String(26)),e.set("offset",String(u));let r=await fetch(`/api/compliance/audit-log?${e.toString()}`);if(!r.ok)throw Error(`HTTP ${r.status}`);let o=await r.json();p(o.length>25),t(o.slice(0,25))}catch(e){c(e.message||"Failed to fetch audit log")}finally{l(!1)}},[d,i,u]);(0,a.useEffect)(()=>{h()},[h]);let v=()=>{m(0),h()};return(0,o.jsxs)("div",{className:"max-w-6xl mx-auto p-6 space-y-6",children:[(0,o.jsxs)("div",{className:"flex items-center justify-between",children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("h1",{className:"text-2xl font-bold text-[var(--color-text-main)]",children:"Audit Log"}),(0,o.jsx)("p",{className:"text-sm text-[var(--color-text-muted)] mt-1",children:"Administrative actions and security events"})]}),(0,o.jsx)("button",{onClick:h,disabled:r,"aria-label":"Refresh audit log",className:"px-4 py-2 rounded-lg text-sm font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] transition-colors disabled:opacity-50",children:r?"Loading...":"Refresh"})]}),(0,o.jsxs)("div",{className:"flex flex-wrap gap-3 p-4 rounded-xl bg-[var(--color-surface)] border border-[var(--color-border)]",role:"search","aria-label":"Filter audit log entries",children:[(0,o.jsx)("input",{type:"text",placeholder:"Filter by action...",value:d,onChange:e=>n(e.target.value),onKeyDown:e=>"Enter"===e.key&&v(),"aria-label":"Filter by action type",className:"flex-1 min-w-[180px] px-3 py-2 rounded-lg text-sm bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] placeholder:text-[var(--color-text-muted)] focus:outline-2 focus:outline-[var(--color-accent)]"}),(0,o.jsx)("input",{type:"text",placeholder:"Filter by actor...",value:i,onChange:e=>x(e.target.value),onKeyDown:e=>"Enter"===e.key&&v(),"aria-label":"Filter by actor",className:"flex-1 min-w-[180px] px-3 py-2 rounded-lg text-sm bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] placeholder:text-[var(--color-text-muted)] focus:outline-2 focus:outline-[var(--color-accent)]"}),(0,o.jsx)("button",{onClick:v,className:"px-4 py-2 rounded-lg text-sm font-medium bg-[var(--color-accent)] text-white hover:bg-[var(--color-accent-hover)] transition-colors focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]",children:"Search"})]}),s&&(0,o.jsx)("div",{className:"p-4 rounded-lg bg-red-500/10 border border-red-500/30 text-red-400 text-sm",role:"alert",children:s}),(0,o.jsx)("div",{className:"overflow-x-auto rounded-xl border border-[var(--color-border)]",children:(0,o.jsxs)("table",{className:"w-full text-sm",role:"table","aria-label":"Audit log entries",children:[(0,o.jsx)("thead",{children:(0,o.jsxs)("tr",{className:"bg-[var(--color-bg-alt)] border-b border-[var(--color-border)]",children:[(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:"Timestamp"}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:"Action"}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:"Actor"}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:"Target"}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:"Details"}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:"IP"})]})}),(0,o.jsx)("tbody",{children:0!==e.length||r?e.map(e=>{var t;return(0,o.jsxs)("tr",{className:"border-b border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] transition-colors",children:[(0,o.jsx)("td",{className:"px-4 py-3 whitespace-nowrap text-[var(--color-text-muted)] font-mono text-xs",children:(e=>{try{return new Date(e).toLocaleString()}catch{return e}})(e.timestamp)}),(0,o.jsx)("td",{className:"px-4 py-3",children:(0,o.jsx)("span",{className:`inline-block px-2 py-0.5 rounded-md text-xs font-medium border ${(t=e.action).includes("delete")||t.includes("remove")?"bg-red-500/15 text-red-400 border-red-500/20":t.includes("create")||t.includes("add")?"bg-green-500/15 text-green-400 border-green-500/20":t.includes("update")||t.includes("change")?"bg-blue-500/15 text-blue-400 border-blue-500/20":t.includes("login")||t.includes("auth")?"bg-purple-500/15 text-purple-400 border-purple-500/20":"bg-gray-500/15 text-gray-400 border-gray-500/20"}`,children:e.action})}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-main)]",children:e.actor}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] max-w-[200px] truncate",children:e.target||"—"}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] max-w-[300px] truncate font-mono text-xs",children:e.details?JSON.stringify(e.details):"—"}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] font-mono text-xs whitespace-nowrap",children:e.ip_address||"—"})]},e.id)}):(0,o.jsx)("tr",{children:(0,o.jsx)("td",{colSpan:6,className:"px-4 py-8 text-center text-[var(--color-text-muted)]",children:"No audit log entries found"})})})]})}),(0,o.jsxs)("div",{className:"flex items-center justify-between",children:[(0,o.jsxs)("p",{className:"text-xs text-[var(--color-text-muted)]",children:["Showing ",e.length," entries (offset ",u,")"]}),(0,o.jsxs)("div",{className:"flex gap-2",children:[(0,o.jsx)("button",{onClick:()=>m(Math.max(0,u-25)),disabled:0===u,className:"px-3 py-1.5 rounded-lg text-xs font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] disabled:opacity-30 transition-colors",children:"← Previous"}),(0,o.jsx)("button",{onClick:()=>m(u+25),disabled:!b,className:"px-3 py-1.5 rounded-lg text-xs font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] disabled:opacity-30 transition-colors",children:"Next →"})]})]})]})}},61265:(e,t,r)=>{Promise.resolve().then(r.bind(r,29698))}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=61265)),_N_E=e.O()}]);