omniroute 0.3.0 → 0.4.0

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 (884) hide show
  1. package/README.md +35 -1150
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +28 -23
  4. package/app/.next/build-manifest.json +2 -2
  5. package/app/.next/prerender-manifest.json +75 -3
  6. package/app/.next/routes-manifest.json +30 -0
  7. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -0
  17. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -0
  18. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -0
  19. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  23. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  29. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  35. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  38. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  44. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  47. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/_global-error/page.js +2 -2
  50. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/_global-error.html +2 -2
  52. package/app/.next/server/app/_global-error.rsc +3 -3
  53. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  54. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  55. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  56. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  57. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
  58. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  59. package/app/.next/server/app/_not-found/page.js +1 -1
  60. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  61. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/_not-found.html +1 -1
  63. package/app/.next/server/app/_not-found.rsc +5 -5
  64. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +5 -5
  65. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  66. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  67. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  68. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  69. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  70. package/app/.next/server/app/api/auth/login/route.js +1 -1
  71. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  72. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/api/cache/route.js +2 -0
  75. package/app/.next/server/app/api/cache/route.js.nft.json +1 -0
  76. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -0
  77. package/app/.next/server/app/api/cache/stats/route.js +1 -1
  78. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -157
  80. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  81. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  83. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  85. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  87. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  89. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  91. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  93. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  95. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  98. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  100. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  102. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/cloud/auth/route.js +1 -156
  104. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -156
  107. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  108. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -156
  110. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  111. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  113. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  116. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  117. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/combos/route.js +1 -1
  120. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  121. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/combos/test/route.js +1 -156
  123. package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
  124. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/compliance/audit-log/route.js +1 -156
  126. package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/db-backups/route.js +1 -156
  129. package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
  130. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/fallback/chains/route.js +3 -1
  134. package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/init/route.js +1 -1
  137. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  138. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  140. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  141. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/keys/route.js +1 -1
  143. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  144. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/models/alias/route.js +1 -1
  146. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  147. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/models/catalog/route.js +2 -156
  150. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/models/route.js +2 -156
  153. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  154. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/monitoring/health/route.js +2 -0
  156. package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -0
  157. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -0
  158. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
  159. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  160. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  163. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  164. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  167. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  171. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  172. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/policies/route.js +3 -1
  174. package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
  175. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/pricing/models/route.js +1 -156
  178. package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
  179. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/pricing/route.js +1 -156
  181. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  182. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/provider-models/route.js +1 -156
  184. package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
  185. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -156
  187. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  188. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/provider-nodes/route.js +2 -156
  190. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  191. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/api/providers/[id]/models/route.js +2 -156
  194. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  197. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  198. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  200. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/api/providers/client/route.js +1 -156
  203. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  204. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/api/providers/route.js +2 -1
  206. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  207. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  208. package/app/.next/server/app/api/providers/test-batch/route.js +2 -156
  209. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  210. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app/api/providers/validate/route.js +1 -156
  212. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  213. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  214. package/app/.next/server/app/api/rate-limit/route.js +1 -156
  215. package/app/.next/server/app/api/rate-limit/route.js.nft.json +1 -1
  216. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/api/rate-limits/route.js +1 -1
  218. package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  220. package/app/.next/server/app/api/resilience/reset/route.js +1 -1
  221. package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
  222. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  223. package/app/.next/server/app/api/resilience/route.js +1 -156
  224. package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
  225. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  226. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  227. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  228. package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -156
  229. package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
  230. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  231. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  232. package/app/.next/server/app/api/settings/proxy/route.js +1 -156
  233. package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
  234. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  235. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  236. package/app/.next/server/app/api/settings/require-login/route.js +1 -156
  237. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  238. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  239. package/app/.next/server/app/api/settings/route.js +1 -1
  240. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  241. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  242. package/app/.next/server/app/api/settings/system-prompt/route.js +1 -156
  243. package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
  244. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  245. package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -156
  246. package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  248. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  249. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  250. package/app/.next/server/app/api/sync/cloud/route.js +1 -1
  251. package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
  252. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  253. package/app/.next/server/app/api/sync/initialize/route.js +1 -1
  254. package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  256. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  257. package/app/.next/server/app/api/telemetry/summary/route.js +1 -1
  258. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  259. package/app/.next/server/app/api/token-health/route.js +1 -156
  260. package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
  261. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  262. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  263. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  264. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  265. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  266. package/app/.next/server/app/api/translator/send/route.js +1 -1
  267. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  268. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  269. package/app/.next/server/app/api/translator/translate/route.js +1 -156
  270. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  271. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  272. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  273. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  274. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  275. package/app/.next/server/app/api/usage/analytics/route.js +1 -156
  276. package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
  277. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  278. package/app/.next/server/app/api/usage/budget/route.js +3 -1
  279. package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
  280. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  281. package/app/.next/server/app/api/usage/call-logs/[id]/route.js +1 -156
  282. package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
  283. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  284. package/app/.next/server/app/api/usage/call-logs/route.js +1 -156
  285. package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
  286. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  287. package/app/.next/server/app/api/usage/history/route.js +1 -156
  288. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  289. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  290. package/app/.next/server/app/api/usage/logs/route.js +1 -156
  291. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  292. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  293. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  294. package/app/.next/server/app/api/usage/request-logs/route.js +1 -156
  295. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  296. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  297. package/app/.next/server/app/api/v1/api/chat/route.js +1 -156
  298. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  299. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  300. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  301. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  302. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  303. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  304. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  305. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  306. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  307. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  308. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  309. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  310. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  311. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  312. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  313. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  314. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  315. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  316. package/app/.next/server/app/api/v1/messages/route.js +1 -156
  317. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  318. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  319. package/app/.next/server/app/api/v1/models/route.js +2 -1
  320. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  321. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  322. package/app/.next/server/app/api/v1/moderations/route.js +1 -156
  323. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  324. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  325. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -156
  326. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  327. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  328. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -156
  329. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  330. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  331. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
  332. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  333. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  334. package/app/.next/server/app/api/v1/rerank/route.js +1 -156
  335. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  336. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  337. package/app/.next/server/app/api/v1/responses/route.js +1 -156
  338. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  339. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  340. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  341. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -156
  342. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  343. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  344. package/app/.next/server/app/api/v1beta/models/route.js +2 -1
  345. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  346. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  347. package/app/.next/server/app/callback/page.js +1 -1
  348. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  349. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  350. package/app/.next/server/app/callback.html +1 -1
  351. package/app/.next/server/app/callback.rsc +5 -5
  352. package/app/.next/server/app/callback.segments/_full.segment.rsc +5 -5
  353. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  354. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  355. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  356. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  357. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  358. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  359. package/app/.next/server/app/dashboard/cli-tools.rsc +7 -7
  360. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  361. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  362. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  363. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  364. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  365. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  366. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  367. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  368. package/app/.next/server/app/dashboard/combos.html +1 -1
  369. package/app/.next/server/app/dashboard/combos.rsc +7 -7
  370. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  371. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  372. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  373. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  374. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  375. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  376. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  377. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  378. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  379. package/app/.next/server/app/dashboard/endpoint.rsc +7 -7
  380. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  381. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  382. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  383. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  384. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  385. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  386. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  387. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  388. package/app/.next/server/app/dashboard/health.html +1 -0
  389. package/app/.next/server/app/dashboard/health.meta +17 -0
  390. package/app/.next/server/app/dashboard/health.rsc +24 -0
  391. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +9 -0
  392. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +4 -0
  393. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +4 -0
  394. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -0
  395. package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +24 -0
  396. package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +6 -0
  397. package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +9 -0
  398. package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +5 -0
  399. package/app/.next/server/app/dashboard/onboarding.html +1 -1
  400. package/app/.next/server/app/dashboard/onboarding.rsc +6 -6
  401. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +1 -1
  402. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
  403. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  404. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  405. package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +6 -6
  406. package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
  407. package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +4 -4
  408. package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +2 -2
  409. package/app/.next/server/app/dashboard/profile.html +1 -1
  410. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  411. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  412. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  413. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  414. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  415. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  416. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  417. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  418. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  419. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  420. package/app/.next/server/app/dashboard/providers/new.rsc +7 -7
  421. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  422. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  423. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  424. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  425. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  426. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
  427. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  428. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  429. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  430. package/app/.next/server/app/dashboard/providers.html +1 -1
  431. package/app/.next/server/app/dashboard/providers.rsc +7 -7
  432. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  433. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  434. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  435. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  436. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
  437. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  438. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  439. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  440. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  441. package/app/.next/server/app/dashboard/settings/pricing.rsc +6 -6
  442. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  443. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  444. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  445. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  446. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  447. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
  448. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  449. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  450. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  451. package/app/.next/server/app/dashboard/settings.html +1 -1
  452. package/app/.next/server/app/dashboard/settings.rsc +7 -7
  453. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
  454. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  455. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  456. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  457. package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +7 -7
  458. package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
  459. package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +4 -4
  460. package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +2 -2
  461. package/app/.next/server/app/dashboard/translator.html +2 -2
  462. package/app/.next/server/app/dashboard/translator.rsc +7 -7
  463. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  464. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  465. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  466. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  467. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  468. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  469. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  470. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  471. package/app/.next/server/app/dashboard/usage.html +2 -2
  472. package/app/.next/server/app/dashboard/usage.rsc +7 -7
  473. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  474. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  475. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  476. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  477. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  478. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  479. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  480. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  481. package/app/.next/server/app/docs/page.js +3 -2
  482. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  483. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  484. package/app/.next/server/app/docs.html +1 -1
  485. package/app/.next/server/app/docs.rsc +21 -20
  486. package/app/.next/server/app/docs.segments/_full.segment.rsc +21 -20
  487. package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  488. package/app/.next/server/app/docs.segments/_index.segment.rsc +4 -4
  489. package/app/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  490. package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  491. package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  492. package/app/.next/server/app/forbidden/page.js +2 -0
  493. package/app/.next/server/app/forbidden/page.js.nft.json +1 -0
  494. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -0
  495. package/app/.next/server/app/forbidden.html +1 -0
  496. package/app/.next/server/app/forbidden.meta +15 -0
  497. package/app/.next/server/app/forbidden.rsc +23 -0
  498. package/app/.next/server/app/forbidden.segments/_full.segment.rsc +23 -0
  499. package/app/.next/server/app/forbidden.segments/_head.segment.rsc +6 -0
  500. package/app/.next/server/app/forbidden.segments/_index.segment.rsc +9 -0
  501. package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +5 -0
  502. package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +9 -0
  503. package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +4 -0
  504. package/app/.next/server/app/forgot-password/page.js +2 -0
  505. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -0
  506. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -0
  507. package/app/.next/server/app/forgot-password.html +1 -0
  508. package/app/.next/server/app/forgot-password.meta +15 -0
  509. package/app/.next/server/app/forgot-password.rsc +23 -0
  510. package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +23 -0
  511. package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +6 -0
  512. package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +9 -0
  513. package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +5 -0
  514. package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +9 -0
  515. package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +4 -0
  516. package/app/.next/server/app/index.html +1 -1
  517. package/app/.next/server/app/index.rsc +5 -5
  518. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  519. package/app/.next/server/app/index.segments/_full.segment.rsc +5 -5
  520. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  521. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  522. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  523. package/app/.next/server/app/landing/page.js +1 -1
  524. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  525. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  526. package/app/.next/server/app/landing.html +1 -1
  527. package/app/.next/server/app/landing.rsc +5 -5
  528. package/app/.next/server/app/landing.segments/_full.segment.rsc +5 -5
  529. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  530. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  531. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  532. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  533. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  534. package/app/.next/server/app/login/page.js +1 -1
  535. package/app/.next/server/app/login/page.js.nft.json +1 -1
  536. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  537. package/app/.next/server/app/login.html +1 -1
  538. package/app/.next/server/app/login.rsc +6 -6
  539. package/app/.next/server/app/login.segments/_full.segment.rsc +6 -6
  540. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  541. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  542. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  543. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  544. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  545. package/app/.next/server/app/page.js +1 -1
  546. package/app/.next/server/app/page.js.nft.json +1 -1
  547. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  548. package/app/.next/server/app/privacy/page.js +1 -1
  549. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  550. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  551. package/app/.next/server/app/privacy.html +1 -1
  552. package/app/.next/server/app/privacy.rsc +20 -21
  553. package/app/.next/server/app/privacy.segments/_full.segment.rsc +20 -21
  554. package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
  555. package/app/.next/server/app/privacy.segments/_index.segment.rsc +4 -4
  556. package/app/.next/server/app/privacy.segments/_tree.segment.rsc +2 -2
  557. package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +2 -2
  558. package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
  559. package/app/.next/server/app/terms/page.js +1 -1
  560. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  561. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  562. package/app/.next/server/app/terms.html +1 -1
  563. package/app/.next/server/app/terms.rsc +21 -19
  564. package/app/.next/server/app/terms.segments/_full.segment.rsc +21 -19
  565. package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
  566. package/app/.next/server/app/terms.segments/_index.segment.rsc +4 -4
  567. package/app/.next/server/app/terms.segments/_tree.segment.rsc +2 -2
  568. package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
  569. package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
  570. package/app/.next/server/app-paths-manifest.json +28 -23
  571. package/app/.next/server/chunks/1228.js +3 -1
  572. package/app/.next/server/chunks/152.js +1 -1
  573. package/app/.next/server/chunks/1746.js +1 -0
  574. package/app/.next/server/chunks/216.js +37 -0
  575. package/app/.next/server/chunks/2399.js +1 -1
  576. package/app/.next/server/chunks/3676.js +2 -1
  577. package/app/.next/server/chunks/4004.js +1 -1
  578. package/app/.next/server/chunks/4352.js +46 -0
  579. package/app/.next/server/chunks/4436.js +1 -1
  580. package/app/.next/server/chunks/4443.js +1 -1
  581. package/app/.next/server/chunks/{8259.js → 4469.js} +52 -2
  582. package/app/.next/server/chunks/4755.js +3 -3
  583. package/app/.next/server/chunks/4832.js +2 -2
  584. package/app/.next/server/chunks/5040.js +1 -1
  585. package/app/.next/server/chunks/5727.js +1 -0
  586. package/app/.next/server/chunks/7093.js +2 -0
  587. package/app/.next/server/chunks/7615.js +9 -2
  588. package/app/.next/server/chunks/7763.js +1 -0
  589. package/app/.next/server/chunks/7802.js +1 -0
  590. package/app/.next/server/chunks/7968.js +3 -1
  591. package/app/.next/server/chunks/8392.js +1 -0
  592. package/app/.next/server/chunks/8847.js +3 -0
  593. package/app/.next/server/chunks/9263.js +1 -0
  594. package/app/.next/server/middleware.js +207 -2
  595. package/app/.next/server/pages/404.html +1 -1
  596. package/app/.next/server/pages/500.html +2 -2
  597. package/app/.next/server/server-reference-manifest.js +1 -1
  598. package/app/.next/server/server-reference-manifest.json +1 -1
  599. package/app/.next/static/H6LKncewEoggilnvYL9Ff/_buildManifest.js +1 -0
  600. package/app/.next/static/chunks/1525-ec661e96acc6574e.js +21 -0
  601. package/app/.next/static/chunks/3191-0bbb8ebd1bd32d1d.js +1 -0
  602. package/app/.next/static/chunks/{6941-0643e7aebf5ed645.js → 6941-77ce2b3be7709b94.js} +1 -1
  603. package/app/.next/static/chunks/7896-6e5648294ec51150.js +2 -0
  604. package/app/.next/static/chunks/9751-3a35163d337d54ea.js +37 -0
  605. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-148b0ad18f6bec86.js → page-4cec40aa933b932e.js} +1 -1
  606. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-28e46119138cf102.js → page-962f1e2bfe0d0b8d.js} +1 -1
  607. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-5caaa75c0ab78bc1.js +1 -0
  608. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-81352b2272952085.js +1 -0
  609. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-3d3dabe4363d421d.js +1 -0
  610. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-c02303813bcb9777.js +1 -0
  611. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-57279ed20b5399be.js +1 -0
  612. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-4bd8ea64f2e8008b.js → page-9667287d75830fd5.js} +1 -1
  613. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-d08547fcb1031577.js +1 -0
  614. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-26179a630baa2686.js +1 -0
  615. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-c891465a1a2938d2.js → page-6190920e7526556c.js} +1 -1
  616. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/{page-7a0943932e7e5e51.js → page-d1066b6c4c28fe46.js} +1 -1
  617. package/app/.next/static/chunks/app/(dashboard)/{layout-e84875e22efbf437.js → layout-b6fc79d0628b97e3.js} +1 -1
  618. package/app/.next/static/chunks/app/_global-error/page-c02303813bcb9777.js +1 -0
  619. package/app/.next/static/chunks/app/_not-found/page-c02303813bcb9777.js +1 -0
  620. package/app/.next/static/chunks/app/api/auth/login/route-c02303813bcb9777.js +1 -0
  621. package/app/.next/static/chunks/app/api/auth/logout/route-c02303813bcb9777.js +1 -0
  622. package/app/.next/static/chunks/app/api/cache/route-c02303813bcb9777.js +1 -0
  623. package/app/.next/static/chunks/app/api/cache/stats/route-c02303813bcb9777.js +1 -0
  624. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-c02303813bcb9777.js +1 -0
  625. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-c02303813bcb9777.js +1 -0
  626. package/app/.next/static/chunks/app/api/cli-tools/backups/route-c02303813bcb9777.js +1 -0
  627. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-c02303813bcb9777.js +1 -0
  628. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-c02303813bcb9777.js +1 -0
  629. package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-c02303813bcb9777.js +1 -0
  630. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-c02303813bcb9777.js +1 -0
  631. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-c02303813bcb9777.js +1 -0
  632. package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-c02303813bcb9777.js +1 -0
  633. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-c02303813bcb9777.js +1 -0
  634. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-c02303813bcb9777.js +1 -0
  635. package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-c02303813bcb9777.js +1 -0
  636. package/app/.next/static/chunks/app/api/cloud/auth/route-c02303813bcb9777.js +1 -0
  637. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-c02303813bcb9777.js +1 -0
  638. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-c02303813bcb9777.js +1 -0
  639. package/app/.next/static/chunks/app/api/cloud/models/alias/route-c02303813bcb9777.js +1 -0
  640. package/app/.next/static/chunks/app/api/combos/[id]/route-c02303813bcb9777.js +1 -0
  641. package/app/.next/static/chunks/app/api/combos/metrics/route-c02303813bcb9777.js +1 -0
  642. package/app/.next/static/chunks/app/api/combos/route-c02303813bcb9777.js +1 -0
  643. package/app/.next/static/chunks/app/api/combos/test/route-c02303813bcb9777.js +1 -0
  644. package/app/.next/static/chunks/app/api/compliance/audit-log/route-c02303813bcb9777.js +1 -0
  645. package/app/.next/static/chunks/app/api/db-backups/route-c02303813bcb9777.js +1 -0
  646. package/app/.next/static/chunks/app/api/evals/[suiteId]/route-c02303813bcb9777.js +1 -0
  647. package/app/.next/static/chunks/app/api/evals/route-c02303813bcb9777.js +1 -0
  648. package/app/.next/static/chunks/app/api/fallback/chains/route-c02303813bcb9777.js +1 -0
  649. package/app/.next/static/chunks/app/api/init/route-c02303813bcb9777.js +1 -0
  650. package/app/.next/static/chunks/app/api/keys/[id]/route-c02303813bcb9777.js +1 -0
  651. package/app/.next/static/chunks/app/api/keys/route-c02303813bcb9777.js +1 -0
  652. package/app/.next/static/chunks/app/api/models/alias/route-c02303813bcb9777.js +1 -0
  653. package/app/.next/static/chunks/app/api/models/availability/route-c02303813bcb9777.js +1 -0
  654. package/app/.next/static/chunks/app/api/models/catalog/route-c02303813bcb9777.js +1 -0
  655. package/app/.next/static/chunks/app/api/models/route-c02303813bcb9777.js +1 -0
  656. package/app/.next/static/chunks/app/api/monitoring/health/route-c02303813bcb9777.js +1 -0
  657. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-c02303813bcb9777.js +1 -0
  658. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-c02303813bcb9777.js +1 -0
  659. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-c02303813bcb9777.js +1 -0
  660. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-c02303813bcb9777.js +1 -0
  661. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-c02303813bcb9777.js +1 -0
  662. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-c02303813bcb9777.js +1 -0
  663. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-c02303813bcb9777.js +1 -0
  664. package/app/.next/static/chunks/app/api/policies/route-c02303813bcb9777.js +1 -0
  665. package/app/.next/static/chunks/app/api/pricing/defaults/route-c02303813bcb9777.js +1 -0
  666. package/app/.next/static/chunks/app/api/pricing/models/route-c02303813bcb9777.js +1 -0
  667. package/app/.next/static/chunks/app/api/pricing/route-c02303813bcb9777.js +1 -0
  668. package/app/.next/static/chunks/app/api/provider-models/route-c02303813bcb9777.js +1 -0
  669. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-c02303813bcb9777.js +1 -0
  670. package/app/.next/static/chunks/app/api/provider-nodes/route-c02303813bcb9777.js +1 -0
  671. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-c02303813bcb9777.js +1 -0
  672. package/app/.next/static/chunks/app/api/providers/[id]/models/route-c02303813bcb9777.js +1 -0
  673. package/app/.next/static/chunks/app/api/providers/[id]/route-c02303813bcb9777.js +1 -0
  674. package/app/.next/static/chunks/app/api/providers/[id]/test/route-c02303813bcb9777.js +1 -0
  675. package/app/.next/static/chunks/app/api/providers/client/route-c02303813bcb9777.js +1 -0
  676. package/app/.next/static/chunks/app/api/providers/route-c02303813bcb9777.js +1 -0
  677. package/app/.next/static/chunks/app/api/providers/test-batch/route-c02303813bcb9777.js +1 -0
  678. package/app/.next/static/chunks/app/api/providers/validate/route-c02303813bcb9777.js +1 -0
  679. package/app/.next/static/chunks/app/api/rate-limit/route-c02303813bcb9777.js +1 -0
  680. package/app/.next/static/chunks/app/api/rate-limits/route-c02303813bcb9777.js +1 -0
  681. package/app/.next/static/chunks/app/api/resilience/reset/route-c02303813bcb9777.js +1 -0
  682. package/app/.next/static/chunks/app/api/resilience/route-c02303813bcb9777.js +1 -0
  683. package/app/.next/static/chunks/app/api/restart/route-c02303813bcb9777.js +1 -0
  684. package/app/.next/static/chunks/app/api/sessions/route-c02303813bcb9777.js +1 -0
  685. package/app/.next/static/chunks/app/api/settings/combo-defaults/route-c02303813bcb9777.js +1 -0
  686. package/app/.next/static/chunks/app/api/settings/ip-filter/route-c02303813bcb9777.js +1 -0
  687. package/app/.next/static/chunks/app/api/settings/proxy/route-c02303813bcb9777.js +1 -0
  688. package/app/.next/static/chunks/app/api/settings/proxy/test/route-c02303813bcb9777.js +1 -0
  689. package/app/.next/static/chunks/app/api/settings/require-login/route-c02303813bcb9777.js +1 -0
  690. package/app/.next/static/chunks/app/api/settings/route-c02303813bcb9777.js +1 -0
  691. package/app/.next/static/chunks/app/api/settings/system-prompt/route-c02303813bcb9777.js +1 -0
  692. package/app/.next/static/chunks/app/api/settings/thinking-budget/route-c02303813bcb9777.js +1 -0
  693. package/app/.next/static/chunks/app/api/shutdown/route-c02303813bcb9777.js +1 -0
  694. package/app/.next/static/chunks/app/api/storage/health/route-c02303813bcb9777.js +1 -0
  695. package/app/.next/static/chunks/app/api/sync/cloud/route-c02303813bcb9777.js +1 -0
  696. package/app/.next/static/chunks/app/api/sync/initialize/route-c02303813bcb9777.js +1 -0
  697. package/app/.next/static/chunks/app/api/tags/route-c02303813bcb9777.js +1 -0
  698. package/app/.next/static/chunks/app/api/telemetry/summary/route-c02303813bcb9777.js +1 -0
  699. package/app/.next/static/chunks/app/api/token-health/route-c02303813bcb9777.js +1 -0
  700. package/app/.next/static/chunks/app/api/translator/detect/route-c02303813bcb9777.js +1 -0
  701. package/app/.next/static/chunks/app/api/translator/history/route-c02303813bcb9777.js +1 -0
  702. package/app/.next/static/chunks/app/api/translator/load/route-c02303813bcb9777.js +1 -0
  703. package/app/.next/static/chunks/app/api/translator/save/route-c02303813bcb9777.js +1 -0
  704. package/app/.next/static/chunks/app/api/translator/send/route-c02303813bcb9777.js +1 -0
  705. package/app/.next/static/chunks/app/api/translator/translate/route-c02303813bcb9777.js +1 -0
  706. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-c02303813bcb9777.js +1 -0
  707. package/app/.next/static/chunks/app/api/usage/analytics/route-c02303813bcb9777.js +1 -0
  708. package/app/.next/static/chunks/app/api/usage/budget/route-c02303813bcb9777.js +1 -0
  709. package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-c02303813bcb9777.js +1 -0
  710. package/app/.next/static/chunks/app/api/usage/call-logs/route-c02303813bcb9777.js +1 -0
  711. package/app/.next/static/chunks/app/api/usage/history/route-c02303813bcb9777.js +1 -0
  712. package/app/.next/static/chunks/app/api/usage/logs/route-c02303813bcb9777.js +1 -0
  713. package/app/.next/static/chunks/app/api/usage/proxy-logs/route-c02303813bcb9777.js +1 -0
  714. package/app/.next/static/chunks/app/api/usage/request-logs/route-c02303813bcb9777.js +1 -0
  715. package/app/.next/static/chunks/app/api/v1/api/chat/route-c02303813bcb9777.js +1 -0
  716. package/app/.next/static/chunks/app/api/v1/audio/speech/route-c02303813bcb9777.js +1 -0
  717. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-c02303813bcb9777.js +1 -0
  718. package/app/.next/static/chunks/app/api/v1/chat/completions/route-c02303813bcb9777.js +1 -0
  719. package/app/.next/static/chunks/app/api/v1/embeddings/route-c02303813bcb9777.js +1 -0
  720. package/app/.next/static/chunks/app/api/v1/images/generations/route-c02303813bcb9777.js +1 -0
  721. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-c02303813bcb9777.js +1 -0
  722. package/app/.next/static/chunks/app/api/v1/messages/route-c02303813bcb9777.js +1 -0
  723. package/app/.next/static/chunks/app/api/v1/models/route-c02303813bcb9777.js +1 -0
  724. package/app/.next/static/chunks/app/api/v1/moderations/route-c02303813bcb9777.js +1 -0
  725. package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-c02303813bcb9777.js +1 -0
  726. package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-c02303813bcb9777.js +1 -0
  727. package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-c02303813bcb9777.js +1 -0
  728. package/app/.next/static/chunks/app/api/v1/rerank/route-c02303813bcb9777.js +1 -0
  729. package/app/.next/static/chunks/app/api/v1/responses/route-c02303813bcb9777.js +1 -0
  730. package/app/.next/static/chunks/app/api/v1/route-c02303813bcb9777.js +1 -0
  731. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-c02303813bcb9777.js +1 -0
  732. package/app/.next/static/chunks/app/api/v1beta/models/route-c02303813bcb9777.js +1 -0
  733. package/app/.next/static/chunks/app/forbidden/page-6806872971c364f0.js +1 -0
  734. package/app/.next/static/chunks/app/forgot-password/page-9c116a597f3df4d1.js +1 -0
  735. package/app/.next/static/chunks/app/global-error-6abc2976016d7bd1.js +1 -0
  736. package/app/.next/static/chunks/app/layout-6504ce60623b0a41.js +1 -0
  737. package/app/.next/static/chunks/app/login/{page-e99ed6a85e91ae7c.js → page-93ac51059ef434b7.js} +1 -1
  738. package/app/.next/static/chunks/app/not-found-e1af8b9c5785b71b.js +1 -0
  739. package/app/.next/static/chunks/app/page-c02303813bcb9777.js +1 -0
  740. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-c02303813bcb9777.js +1 -0
  741. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-c02303813bcb9777.js +1 -0
  742. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c02303813bcb9777.js +1 -0
  743. package/app/.next/static/css/2ecfad7c4409b17e.css +1 -0
  744. package/app/package.json +2 -2
  745. package/package.json +2 -2
  746. package/app/.next/server/chunks/1969.js +0 -1
  747. package/app/.next/server/chunks/21.js +0 -46
  748. package/app/.next/server/chunks/4412.js +0 -156
  749. package/app/.next/server/chunks/481.js +0 -156
  750. package/app/.next/server/chunks/5267.js +0 -1
  751. package/app/.next/server/chunks/5640.js +0 -1
  752. package/app/.next/server/chunks/9328.js +0 -156
  753. package/app/.next/static/HcUrNktdfL89Ss5F7FHxP/_buildManifest.js +0 -1
  754. package/app/.next/static/chunks/1525-213a0aff01eb1c70.js +0 -21
  755. package/app/.next/static/chunks/7896-5591822b8348e380.js +0 -1
  756. package/app/.next/static/chunks/8013-04b90e92e614b5d9.js +0 -1
  757. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-ab8b870377087bc7.js +0 -1
  758. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-bc5764734a448526.js +0 -1
  759. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-329f30be723f33ce.js +0 -1
  760. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-fb1fa9ae8a3af8c8.js +0 -1
  761. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-fc3451fe77f856f1.js +0 -1
  762. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-95b884cdbf859e56.js +0 -1
  763. package/app/.next/static/chunks/app/_global-error/page-329f30be723f33ce.js +0 -1
  764. package/app/.next/static/chunks/app/_not-found/page-329f30be723f33ce.js +0 -1
  765. package/app/.next/static/chunks/app/api/auth/login/route-329f30be723f33ce.js +0 -1
  766. package/app/.next/static/chunks/app/api/auth/logout/route-329f30be723f33ce.js +0 -1
  767. package/app/.next/static/chunks/app/api/cache/stats/route-329f30be723f33ce.js +0 -1
  768. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-329f30be723f33ce.js +0 -1
  769. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-329f30be723f33ce.js +0 -1
  770. package/app/.next/static/chunks/app/api/cli-tools/backups/route-329f30be723f33ce.js +0 -1
  771. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-329f30be723f33ce.js +0 -1
  772. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-329f30be723f33ce.js +0 -1
  773. package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-329f30be723f33ce.js +0 -1
  774. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-329f30be723f33ce.js +0 -1
  775. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-329f30be723f33ce.js +0 -1
  776. package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-329f30be723f33ce.js +0 -1
  777. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-329f30be723f33ce.js +0 -1
  778. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-329f30be723f33ce.js +0 -1
  779. package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-329f30be723f33ce.js +0 -1
  780. package/app/.next/static/chunks/app/api/cloud/auth/route-329f30be723f33ce.js +0 -1
  781. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-329f30be723f33ce.js +0 -1
  782. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-329f30be723f33ce.js +0 -1
  783. package/app/.next/static/chunks/app/api/cloud/models/alias/route-329f30be723f33ce.js +0 -1
  784. package/app/.next/static/chunks/app/api/combos/[id]/route-329f30be723f33ce.js +0 -1
  785. package/app/.next/static/chunks/app/api/combos/metrics/route-329f30be723f33ce.js +0 -1
  786. package/app/.next/static/chunks/app/api/combos/route-329f30be723f33ce.js +0 -1
  787. package/app/.next/static/chunks/app/api/combos/test/route-329f30be723f33ce.js +0 -1
  788. package/app/.next/static/chunks/app/api/compliance/audit-log/route-329f30be723f33ce.js +0 -1
  789. package/app/.next/static/chunks/app/api/db-backups/route-329f30be723f33ce.js +0 -1
  790. package/app/.next/static/chunks/app/api/evals/[suiteId]/route-329f30be723f33ce.js +0 -1
  791. package/app/.next/static/chunks/app/api/evals/route-329f30be723f33ce.js +0 -1
  792. package/app/.next/static/chunks/app/api/fallback/chains/route-329f30be723f33ce.js +0 -1
  793. package/app/.next/static/chunks/app/api/init/route-329f30be723f33ce.js +0 -1
  794. package/app/.next/static/chunks/app/api/keys/[id]/route-329f30be723f33ce.js +0 -1
  795. package/app/.next/static/chunks/app/api/keys/route-329f30be723f33ce.js +0 -1
  796. package/app/.next/static/chunks/app/api/models/alias/route-329f30be723f33ce.js +0 -1
  797. package/app/.next/static/chunks/app/api/models/availability/route-329f30be723f33ce.js +0 -1
  798. package/app/.next/static/chunks/app/api/models/catalog/route-329f30be723f33ce.js +0 -1
  799. package/app/.next/static/chunks/app/api/models/route-329f30be723f33ce.js +0 -1
  800. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-329f30be723f33ce.js +0 -1
  801. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-329f30be723f33ce.js +0 -1
  802. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-329f30be723f33ce.js +0 -1
  803. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-329f30be723f33ce.js +0 -1
  804. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-329f30be723f33ce.js +0 -1
  805. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-329f30be723f33ce.js +0 -1
  806. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-329f30be723f33ce.js +0 -1
  807. package/app/.next/static/chunks/app/api/policies/route-329f30be723f33ce.js +0 -1
  808. package/app/.next/static/chunks/app/api/pricing/defaults/route-329f30be723f33ce.js +0 -1
  809. package/app/.next/static/chunks/app/api/pricing/models/route-329f30be723f33ce.js +0 -1
  810. package/app/.next/static/chunks/app/api/pricing/route-329f30be723f33ce.js +0 -1
  811. package/app/.next/static/chunks/app/api/provider-models/route-329f30be723f33ce.js +0 -1
  812. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-329f30be723f33ce.js +0 -1
  813. package/app/.next/static/chunks/app/api/provider-nodes/route-329f30be723f33ce.js +0 -1
  814. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-329f30be723f33ce.js +0 -1
  815. package/app/.next/static/chunks/app/api/providers/[id]/models/route-329f30be723f33ce.js +0 -1
  816. package/app/.next/static/chunks/app/api/providers/[id]/route-329f30be723f33ce.js +0 -1
  817. package/app/.next/static/chunks/app/api/providers/[id]/test/route-329f30be723f33ce.js +0 -1
  818. package/app/.next/static/chunks/app/api/providers/client/route-329f30be723f33ce.js +0 -1
  819. package/app/.next/static/chunks/app/api/providers/route-329f30be723f33ce.js +0 -1
  820. package/app/.next/static/chunks/app/api/providers/test-batch/route-329f30be723f33ce.js +0 -1
  821. package/app/.next/static/chunks/app/api/providers/validate/route-329f30be723f33ce.js +0 -1
  822. package/app/.next/static/chunks/app/api/rate-limit/route-329f30be723f33ce.js +0 -1
  823. package/app/.next/static/chunks/app/api/rate-limits/route-329f30be723f33ce.js +0 -1
  824. package/app/.next/static/chunks/app/api/resilience/reset/route-329f30be723f33ce.js +0 -1
  825. package/app/.next/static/chunks/app/api/resilience/route-329f30be723f33ce.js +0 -1
  826. package/app/.next/static/chunks/app/api/restart/route-329f30be723f33ce.js +0 -1
  827. package/app/.next/static/chunks/app/api/sessions/route-329f30be723f33ce.js +0 -1
  828. package/app/.next/static/chunks/app/api/settings/combo-defaults/route-329f30be723f33ce.js +0 -1
  829. package/app/.next/static/chunks/app/api/settings/ip-filter/route-329f30be723f33ce.js +0 -1
  830. package/app/.next/static/chunks/app/api/settings/proxy/route-329f30be723f33ce.js +0 -1
  831. package/app/.next/static/chunks/app/api/settings/proxy/test/route-329f30be723f33ce.js +0 -1
  832. package/app/.next/static/chunks/app/api/settings/require-login/route-329f30be723f33ce.js +0 -1
  833. package/app/.next/static/chunks/app/api/settings/route-329f30be723f33ce.js +0 -1
  834. package/app/.next/static/chunks/app/api/settings/system-prompt/route-329f30be723f33ce.js +0 -1
  835. package/app/.next/static/chunks/app/api/settings/thinking-budget/route-329f30be723f33ce.js +0 -1
  836. package/app/.next/static/chunks/app/api/shutdown/route-329f30be723f33ce.js +0 -1
  837. package/app/.next/static/chunks/app/api/storage/health/route-329f30be723f33ce.js +0 -1
  838. package/app/.next/static/chunks/app/api/sync/cloud/route-329f30be723f33ce.js +0 -1
  839. package/app/.next/static/chunks/app/api/sync/initialize/route-329f30be723f33ce.js +0 -1
  840. package/app/.next/static/chunks/app/api/tags/route-329f30be723f33ce.js +0 -1
  841. package/app/.next/static/chunks/app/api/telemetry/summary/route-329f30be723f33ce.js +0 -1
  842. package/app/.next/static/chunks/app/api/token-health/route-329f30be723f33ce.js +0 -1
  843. package/app/.next/static/chunks/app/api/translator/detect/route-329f30be723f33ce.js +0 -1
  844. package/app/.next/static/chunks/app/api/translator/history/route-329f30be723f33ce.js +0 -1
  845. package/app/.next/static/chunks/app/api/translator/load/route-329f30be723f33ce.js +0 -1
  846. package/app/.next/static/chunks/app/api/translator/save/route-329f30be723f33ce.js +0 -1
  847. package/app/.next/static/chunks/app/api/translator/send/route-329f30be723f33ce.js +0 -1
  848. package/app/.next/static/chunks/app/api/translator/translate/route-329f30be723f33ce.js +0 -1
  849. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-329f30be723f33ce.js +0 -1
  850. package/app/.next/static/chunks/app/api/usage/analytics/route-329f30be723f33ce.js +0 -1
  851. package/app/.next/static/chunks/app/api/usage/budget/route-329f30be723f33ce.js +0 -1
  852. package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-329f30be723f33ce.js +0 -1
  853. package/app/.next/static/chunks/app/api/usage/call-logs/route-329f30be723f33ce.js +0 -1
  854. package/app/.next/static/chunks/app/api/usage/history/route-329f30be723f33ce.js +0 -1
  855. package/app/.next/static/chunks/app/api/usage/logs/route-329f30be723f33ce.js +0 -1
  856. package/app/.next/static/chunks/app/api/usage/proxy-logs/route-329f30be723f33ce.js +0 -1
  857. package/app/.next/static/chunks/app/api/usage/request-logs/route-329f30be723f33ce.js +0 -1
  858. package/app/.next/static/chunks/app/api/v1/api/chat/route-329f30be723f33ce.js +0 -1
  859. package/app/.next/static/chunks/app/api/v1/audio/speech/route-329f30be723f33ce.js +0 -1
  860. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-329f30be723f33ce.js +0 -1
  861. package/app/.next/static/chunks/app/api/v1/chat/completions/route-329f30be723f33ce.js +0 -1
  862. package/app/.next/static/chunks/app/api/v1/embeddings/route-329f30be723f33ce.js +0 -1
  863. package/app/.next/static/chunks/app/api/v1/images/generations/route-329f30be723f33ce.js +0 -1
  864. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-329f30be723f33ce.js +0 -1
  865. package/app/.next/static/chunks/app/api/v1/messages/route-329f30be723f33ce.js +0 -1
  866. package/app/.next/static/chunks/app/api/v1/models/route-329f30be723f33ce.js +0 -1
  867. package/app/.next/static/chunks/app/api/v1/moderations/route-329f30be723f33ce.js +0 -1
  868. package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-329f30be723f33ce.js +0 -1
  869. package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-329f30be723f33ce.js +0 -1
  870. package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-329f30be723f33ce.js +0 -1
  871. package/app/.next/static/chunks/app/api/v1/rerank/route-329f30be723f33ce.js +0 -1
  872. package/app/.next/static/chunks/app/api/v1/responses/route-329f30be723f33ce.js +0 -1
  873. package/app/.next/static/chunks/app/api/v1/route-329f30be723f33ce.js +0 -1
  874. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-329f30be723f33ce.js +0 -1
  875. package/app/.next/static/chunks/app/api/v1beta/models/route-329f30be723f33ce.js +0 -1
  876. package/app/.next/static/chunks/app/global-error-bbdc13af28c5aba1.js +0 -1
  877. package/app/.next/static/chunks/app/layout-485b011f69e6ed37.js +0 -1
  878. package/app/.next/static/chunks/app/not-found-2ba4520c9df30430.js +0 -1
  879. package/app/.next/static/chunks/app/page-329f30be723f33ce.js +0 -1
  880. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-329f30be723f33ce.js +0 -1
  881. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-329f30be723f33ce.js +0 -1
  882. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-329f30be723f33ce.js +0 -1
  883. package/app/.next/static/css/2862d4067eab20b2.css +0 -1
  884. /package/app/.next/static/{HcUrNktdfL89Ss5F7FHxP → H6LKncewEoggilnvYL9Ff}/_ssgManifest.js +0 -0
@@ -1 +1,2 @@
1
- exports.id=3676,exports.ids=[3676],exports.modules={4858:(a,b,c)=>{Promise.resolve().then(c.bind(c,68852))},6264:(a,b,c)=>{Promise.resolve().then(c.bind(c,56143))},15637:(a,b,c)=>{"use strict";c.d(b,{KC:()=>d.KC,Xg:()=>d.Xg});var d=c(53982);Object.entries(c(18741).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})))},18111:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(31417),e=c(300),f=c(83084);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}))},18741:(a,b,c)=>{"use strict";c.d(b,{DI:()=>h,IS:()=>d,JH:()=>g,MA:()=>l,Q2:()=>k,fg:()=>f,gb:()=>j,mq:()=>i,wG:()=>n,wb:()=>o,zN:()=>e,zt:()=>m});let d={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"}},e={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"}},f={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"}},g="openai-compatible-",h="anthropic-compatible-";function i(a){return"string"==typeof a&&a.startsWith(g)}function j(a){return"string"==typeof a&&a.startsWith(h)}let k={...d,...e,...f},l={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function m(a){for(let b of Object.values(k))if(b.alias===a||b.id===a)return b;return null}function n(a){let b=k[a];return b?.alias||a}Object.values(k).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(k).reduce((a,b)=>(a[b.id]=b.alias,a),{});let o=["antigravity","kiro","github","codex","claude"]},20240:(a,b,c)=>{Promise.resolve().then(c.bind(c,71569))},20651:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h,metadata:()=>g});var d=c(5735),e=c(75329);c(61135);var f=c(68852);c(63781);let g={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"}};function h({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.jsx)("body",{className:`${e.variable} font-sans antialiased`,suppressHydrationWarning:!0,children:(0,d.jsx)(f.ThemeProvider,{children:a})})]})}},29968:(a,b,c)=>{Promise.resolve().then(c.bind(c,82191))},45026:(a,b,c)=>{Promise.resolve().then(c.bind(c,66434))},53982:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>g,vq:()=>f,KC:()=>h});let d={claude:{id:"claude",alias:"cc",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/1.0.83 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.55.1","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":"arm64","X-Stainless-Os":"MacOS","X-Stainless-Timeout":"60"},oauth:{clientIdEnv:"CLAUDE_OAUTH_CLIENT_ID",clientIdDefault:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://console.anthropic.com/v1/oauth/token"},models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}]},gemini:{id:"gemini",alias:"gemini",format:"gemini",executor:"default",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",urlBuilder:(a,b,c)=>`${a}/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"x-goog-api-key",oauth:{clientIdEnv:"GEMINI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},"gemini-cli":{id:"gemini-cli",alias:"gc",format:"gemini-cli",executor:"gemini-cli",baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",urlBuilder:(a,b,c)=>`${a}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"oauth",authHeader:"bearer",oauth:{clientIdEnv:"GEMINI_CLI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_CLI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},codex:{id:"codex",alias:"cx",format:"openai-responses",executor:"codex",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",headers:{Version:"0.92.0","Openai-Beta":"responses=experimental","User-Agent":"codex-cli/0.92.0 (Windows 10.0.26100; x64)"},oauth:{clientIdEnv:"CODEX_OAUTH_CLIENT_ID",clientIdDefault:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecretEnv:"CODEX_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://auth.openai.com/oauth/token"},models:[{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}]},qwen:{id:"qwen",alias:"qw",format:"openai",executor:"default",baseUrl:"https://portal.qwen.ai/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},oauth:{clientIdEnv:"QWEN_OAUTH_CLIENT_ID",clientIdDefault:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"}]},iflow:{id:"iflow",alias:"if",format:"openai",executor:"default",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"kimi-k2",name:"Kimi K2"},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3.2-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-v3.2-reasoner",name:"DeepSeek V3.2 Reasoner"},{id:"minimax-m2.1",name:"MiniMax M2.1"},{id:"glm-4.7",name:"GLM 4.7"}]},antigravity:{id:"antigravity",alias:"ag",format:"antigravity",executor:"antigravity",baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://cloudcode-pa.googleapis.com"],urlBuilder:(a,b,c)=>`${a}${c?"/v1internal:streamGenerateContent?alt=sse":"/v1internal:generateContent"}`,authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"antigravity/1.104.0 darwin/arm64"},oauth:{clientIdEnv:"ANTIGRAVITY_OAUTH_CLIENT_ID",clientIdDefault:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecretEnv:"ANTIGRAVITY_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"claude-opus-4-5-thinking",name:"Claude Opus 4.5 Thinking"},{id:"claude-sonnet-4-5-thinking",name:"Claude Sonnet 4.5 Thinking"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5"},{id:"gemini-3-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}]},github:{id:"github",alias:"gh",format:"openai",executor:"github",baseUrl:"https://api.githubcopilot.com/chat/completions",responsesBaseUrl:"https://api.githubcopilot.com/responses",authType:"oauth",authHeader:"bearer",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},models:[{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",targetFormat:"openai-responses"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex",targetFormat:"openai-responses"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5 (Full ID)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}]},kiro:{id:"kiro",alias:"kr",format:"kiro",executor:"kiro",baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",authType:"oauth",authHeader:"bearer",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},oauth:{tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},models:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"}]},cursor:{id:"cursor",alias:"cu",format:"cursor",executor:"cursor",baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",authType:"oauth",authHeader:"bearer",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3",models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"}]},openai:{id:"openai",alias:"openai",format:"openai",executor:"default",baseUrl:"https://api.openai.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}]},anthropic:{id:"anthropic",alias:"anthropic",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01"},models:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}]},openrouter:{id:"openrouter",alias:"openrouter",format:"openai",executor:"default",baseUrl:"https://openrouter.ai/api/v1/chat/completions",authType:"apikey",authHeader:"bearer",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},models:[{id:"auto",name:"Auto (Best Available)"}]},glm:{id:"glm",alias:"glm",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM 4.6"},{id:"glm-4.5v",name:"GLM 4.5V (Vision)"},{id:"glm-4.5",name:"GLM 4.5"},{id:"glm-4.5-air",name:"GLM 4.5 Air"},{id:"glm-4-32b",name:"GLM 4 32B"}]},kimi:{id:"kimi",alias:"kimi",format:"openai",executor:"default",baseUrl:"https://api.moonshot.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},cohere:{id:"cohere",alias:"cohere",format:"openai",executor:"default",baseUrl:"https://api.cohere.com/v2/chat",authType:"apikey",authHeader:"bearer",models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},nvidia:{id:"nvidia",alias:"nvidia",format:"openai",executor:"default",baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}]},nebius:{id:"nebius",alias:"nebius",format:"openai",executor:"default",baseUrl:"https://api.tokenfactory.nebius.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}]},siliconflow:{id:"siliconflow",alias:"siliconflow",format:"openai",executor:"default",baseUrl:"https://api.siliconflow.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}]},hyperbolic:{id:"hyperbolic",alias:"hyp",format:"openai",executor:"default",baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]}},e=new Map;for(let a of Object.values(d))a.alias&&a.alias!==a.id&&e.set(a.alias,a);let f=function(){let a={};for(let b of Object.values(d))if(b.models&&b.models.length>0){let c=b.alias||b.id;a[c]||(a[c]=b.models)}return a}(),g=function(){let a={};for(let b of Object.values(d))a[b.id]=b.alias||b.id;return a}();function h(a){return f[g[a]||a]||[]}},55899:(a,b,c)=>{"use strict";c.d(b,{A:()=>k});var d=c(22513),e=c(60021);let f=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_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}}"u">typeof require&&require.main===module&&j().catch(console.log);let k=j},56037:(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.js\" 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.js","default")},56143:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsx)("html",{children:(0,d.jsxs)("body",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"100vh",padding:"24px",background:"#0a0a0f",color:"#e0e0e0",fontFamily:"system-ui, -apple-system, sans-serif",textAlign:"center",margin:0},children:[(0,d.jsx)("div",{style:{fontSize:"64px",marginBottom:"16px"},children:"⚠️"}),(0,d.jsx)("h1",{style:{fontSize:"28px",fontWeight:700,marginBottom:"8px"},children:"Something went wrong"}),(0,d.jsx)("p",{style:{fontSize:"15px",color:"#888",maxWidth:"400px",lineHeight:1.5,marginBottom:"24px"},children:"An unexpected error occurred. This has been logged and our team will investigate."}),!1,(0,d.jsx)("button",{onClick:b,style:{padding:"12px 32px",borderRadius:"10px",background:"linear-gradient(135deg, #6366f1, #8b5cf6)",color:"#fff",border:"none",fontSize:"14px",fontWeight:600,cursor:"pointer",transition:"transform 0.2s",boxShadow:"0 4px 16px rgba(99, 102, 241, 0.3)"},onMouseEnter:a=>a.target.style.transform="translateY(-2px)",onMouseLeave:a=>a.target.style.transform="translateY(0)",children:"Try Again"})]})})}},61135:()=>{},63781:(a,b,c)=>{"use strict";var d=c(55899),e=c(60021),f=c(85640);let g="[HealthCheck]",h=!1;async function i(){try{let a=await (0,e.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await j(b)}catch(a){console.error(`${g} Error checking ${b.name||b.id}:`,a.message)}}catch(a){console.error(`${g} Sweep error:`,a.message)}}async function j(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,f.Ny)(a.provider)){let b=new Date().toISOString();await (0,e.rj)(a.id,{lastHealthCheckAt:b}),console.log(`${g} Skipping ${a.provider}/${a.name||a.email||a.id} (refresh unsupported)`);return}let c=a.lastHealthCheckAt?new Date(a.lastHealthCheckAt).getTime():0;if(Date.now()-c<60*b*1e3)return;console.log(`${g} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let d={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await (0,f.iD)(a.provider,d,{info:(a,b)=>console.log(`${g} [${a}] ${b}`),warn:(a,b)=>console.warn(`${g} [${a}] ${b}`),error:(a,b,c)=>console.error(`${g} [${a}] ${b}`,c||"")}),i=new Date().toISOString();if((0,f.jT)(h)){await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"expired",lastError:`Refresh token consumed (${h.error}). Please re-authenticate this account.`,lastErrorAt:i,lastErrorType:h.error,lastErrorSource:"oauth",errorCode:h.error,isActive:!1,refreshToken:null}),console.error(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${h.error}). Connection deactivated. Re-authenticate to restore.`);return}if(h&&h.accessToken){let b={accessToken:h.accessToken,lastHealthCheckAt:i,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};h.refreshToken&&(b.refreshToken=h.refreshToken),h.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*h.expiresIn).toISOString()),await (0,e.rj)(a.id,b),console.log(`${g} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:i,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),console.warn(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}h=!0,console.log(`${g} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{i(),setInterval(i,6e4)},1e4);let k=!1;(async function(){if(!k)try{await (0,d.A)(),k=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return k})().catch(console.log)},66434:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249);c(67484);var e=c(18111);function f({children:a}){let{initTheme:b}=(0,e.A)();return(0,d.jsx)(d.Fragment,{children:a})}},68852:(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.js","ThemeProvider")},70440:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(88868);let e=async a=>[{type:"image/x-icon",sizes:"16x16",url:(0,d.fillMetadataSegment)(".",await a.params,"favicon.ico")+"?603d046c9a6fdfbb"}]},71569:(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.js\" 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.js","default")},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))},82191:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(48249),e=c(2116);function f(){return(0,d.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"100vh",padding:"24px",background:"var(--bg-primary, #0a0a0f)",color:"var(--text-primary, #e0e0e0)",textAlign:"center"},children:[(0,d.jsx)("div",{style:{fontSize:"96px",fontWeight:800,background:"linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #a855f7 100%)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",lineHeight:1,marginBottom:"8px"},children:"404"}),(0,d.jsx)("h1",{style:{fontSize:"24px",fontWeight:600,marginBottom:"8px"},children:"Page not found"}),(0,d.jsx)("p",{style:{fontSize:"15px",color:"var(--text-secondary, #888)",maxWidth:"400px",lineHeight:1.5,marginBottom:"32px"},children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsx)(e,{href:"/dashboard",style:{padding:"12px 32px",borderRadius:"10px",background:"linear-gradient(135deg, #6366f1, #8b5cf6)",color:"#fff",fontSize:"14px",fontWeight:600,textDecoration:"none",transition:"all 0.2s",boxShadow:"0 4px 16px rgba(99, 102, 241, 0.3)"},children:"Go to Dashboard"})]})}},83084:(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(18741);c(15637);let e={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:"0.3.0"},f={storageKey:"theme",defaultTheme:"system"}},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))},96536:(a,b,c)=>{Promise.resolve().then(c.bind(c,56037))}};
1
+ exports.id=3676,exports.ids=[3676],exports.modules={4858:(a,b,c)=>{Promise.resolve().then(c.bind(c,68852))},6264:(a,b,c)=>{Promise.resolve().then(c.bind(c,56143))},15637:(a,b,c)=>{"use strict";c.d(b,{KC:()=>d.KC,Xg:()=>d.Xg});var d=c(53982);Object.entries(c(41916).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})))},18111:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(31417),e=c(300),f=c(83084);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}))},20240:(a,b,c)=>{Promise.resolve().then(c.bind(c,71569))},20651:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h,metadata:()=>g});var d=c(5735),e=c(75329);c(61135);var f=c(68852);c(63781);let g={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"}};function h({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:`${e.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)(f.ThemeProvider,{children:a})]})]})}},22513:(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,19))).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)})}}},29968:(a,b,c)=>{Promise.resolve().then(c.bind(c,82191))},41916:(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")},45026:(a,b,c)=>{Promise.resolve().then(c.bind(c,66434))},53982:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>g,vq:()=>f,KC:()=>h});let d={claude:{id:"claude",alias:"cc",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/1.0.83 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.55.1","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":"arm64","X-Stainless-Os":"MacOS","X-Stainless-Timeout":"60"},oauth:{clientIdEnv:"CLAUDE_OAUTH_CLIENT_ID",clientIdDefault:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://console.anthropic.com/v1/oauth/token"},models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}]},gemini:{id:"gemini",alias:"gemini",format:"gemini",executor:"default",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",urlBuilder:(a,b,c)=>`${a}/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"x-goog-api-key",oauth:{clientIdEnv:"GEMINI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},"gemini-cli":{id:"gemini-cli",alias:"gc",format:"gemini-cli",executor:"gemini-cli",baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",urlBuilder:(a,b,c)=>`${a}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"oauth",authHeader:"bearer",oauth:{clientIdEnv:"GEMINI_CLI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_CLI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},codex:{id:"codex",alias:"cx",format:"openai-responses",executor:"codex",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",headers:{Version:"0.92.0","Openai-Beta":"responses=experimental","User-Agent":"codex-cli/0.92.0 (Windows 10.0.26100; x64)"},oauth:{clientIdEnv:"CODEX_OAUTH_CLIENT_ID",clientIdDefault:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecretEnv:"CODEX_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://auth.openai.com/oauth/token"},models:[{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}]},qwen:{id:"qwen",alias:"qw",format:"openai",executor:"default",baseUrl:"https://portal.qwen.ai/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},oauth:{clientIdEnv:"QWEN_OAUTH_CLIENT_ID",clientIdDefault:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"}]},iflow:{id:"iflow",alias:"if",format:"openai",executor:"default",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"kimi-k2",name:"Kimi K2"},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3.2-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-v3.2-reasoner",name:"DeepSeek V3.2 Reasoner"},{id:"minimax-m2.1",name:"MiniMax M2.1"},{id:"glm-4.7",name:"GLM 4.7"}]},antigravity:{id:"antigravity",alias:"ag",format:"antigravity",executor:"antigravity",baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://cloudcode-pa.googleapis.com"],urlBuilder:(a,b,c)=>`${a}${c?"/v1internal:streamGenerateContent?alt=sse":"/v1internal:generateContent"}`,authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"antigravity/1.104.0 darwin/arm64"},oauth:{clientIdEnv:"ANTIGRAVITY_OAUTH_CLIENT_ID",clientIdDefault:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecretEnv:"ANTIGRAVITY_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"claude-opus-4-5-thinking",name:"Claude Opus 4.5 Thinking"},{id:"claude-sonnet-4-5-thinking",name:"Claude Sonnet 4.5 Thinking"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5"},{id:"gemini-3-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}]},github:{id:"github",alias:"gh",format:"openai",executor:"github",baseUrl:"https://api.githubcopilot.com/chat/completions",responsesBaseUrl:"https://api.githubcopilot.com/responses",authType:"oauth",authHeader:"bearer",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},models:[{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",targetFormat:"openai-responses"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex",targetFormat:"openai-responses"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5 (Full ID)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}]},kiro:{id:"kiro",alias:"kr",format:"kiro",executor:"kiro",baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",authType:"oauth",authHeader:"bearer",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},oauth:{tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},models:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"}]},cursor:{id:"cursor",alias:"cu",format:"cursor",executor:"cursor",baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",authType:"oauth",authHeader:"bearer",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3",models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"}]},openai:{id:"openai",alias:"openai",format:"openai",executor:"default",baseUrl:"https://api.openai.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}]},anthropic:{id:"anthropic",alias:"anthropic",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01"},models:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}]},openrouter:{id:"openrouter",alias:"openrouter",format:"openai",executor:"default",baseUrl:"https://openrouter.ai/api/v1/chat/completions",authType:"apikey",authHeader:"bearer",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},models:[{id:"auto",name:"Auto (Best Available)"}]},glm:{id:"glm",alias:"glm",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM 4.6"},{id:"glm-4.5v",name:"GLM 4.5V (Vision)"},{id:"glm-4.5",name:"GLM 4.5"},{id:"glm-4.5-air",name:"GLM 4.5 Air"},{id:"glm-4-32b",name:"GLM 4 32B"}]},kimi:{id:"kimi",alias:"kimi",format:"openai",executor:"default",baseUrl:"https://api.moonshot.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},cohere:{id:"cohere",alias:"cohere",format:"openai",executor:"default",baseUrl:"https://api.cohere.com/v2/chat",authType:"apikey",authHeader:"bearer",models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},nvidia:{id:"nvidia",alias:"nvidia",format:"openai",executor:"default",baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}]},nebius:{id:"nebius",alias:"nebius",format:"openai",executor:"default",baseUrl:"https://api.tokenfactory.nebius.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}]},siliconflow:{id:"siliconflow",alias:"siliconflow",format:"openai",executor:"default",baseUrl:"https://api.siliconflow.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}]},hyperbolic:{id:"hyperbolic",alias:"hyp",format:"openai",executor:"default",baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]}},e=new Map;for(let a of Object.values(d))a.alias&&a.alias!==a.id&&e.set(a.alias,a);let f=function(){let a={};for(let b of Object.values(d))if(b.models&&b.models.length>0){let c=b.alias||b.id;a[c]||(a[c]=b.models)}return a}(),g=function(){let a={};for(let b of Object.values(d))a[b.id]=b.alias||b.id;return a}();function h(a){return f[g[a]||a]||[]}},55899:(a,b,c)=>{"use strict";c.d(b,{A:()=>k});var d=c(22513),e=c(24352);let f=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_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}}"u">typeof require&&require.main===module&&j().catch(a=>console.error("[CloudSync] init failed:",a));let k=j},56037:(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.js\" 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.js","default")},56143:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsx)("html",{children:(0,d.jsxs)("body",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[#0a0a0f] text-[#e0e0e0] font-[system-ui,-apple-system,sans-serif] text-center m-0",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4",children:"⚠️"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-[15px] text-[#888] max-w-[400px] leading-relaxed mb-6",children:"An unexpected error occurred. This has been logged and our team will investigate."}),!1,(0,d.jsx)("button",{onClick:b,className:"px-8 py-3 rounded-[10px] text-white border-none text-sm font-semibold cursor-pointer transition-transform duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6]",children:"Try Again"})]})})}},61135:()=>{},63781:(a,b,c)=>{"use strict";var d=c(55899),e=c(24352),f=c(85640);let g="[HealthCheck]",h=!1;async function i(){try{let a=await (0,e.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await j(b)}catch(a){console.error(`${g} Error checking ${b.name||b.id}:`,a.message)}}catch(a){console.error(`${g} Sweep error:`,a.message)}}async function j(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,f.Ny)(a.provider)){let b=new Date().toISOString();await (0,e.rj)(a.id,{lastHealthCheckAt:b}),console.log(`${g} Skipping ${a.provider}/${a.name||a.email||a.id} (refresh unsupported)`);return}let c=a.lastHealthCheckAt?new Date(a.lastHealthCheckAt).getTime():0;if(Date.now()-c<60*b*1e3)return;console.log(`${g} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let d={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await (0,f.iD)(a.provider,d,{info:(a,b)=>console.log(`${g} [${a}] ${b}`),warn:(a,b)=>console.warn(`${g} [${a}] ${b}`),error:(a,b,c)=>console.error(`${g} [${a}] ${b}`,c||"")}),i=new Date().toISOString();if((0,f.jT)(h)){await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"expired",lastError:`Refresh token consumed (${h.error}). Please re-authenticate this account.`,lastErrorAt:i,lastErrorType:h.error,lastErrorSource:"oauth",errorCode:h.error,isActive:!1,refreshToken:null}),console.error(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${h.error}). Connection deactivated. Re-authenticate to restore.`);return}if(h&&h.accessToken){let b={accessToken:h.accessToken,lastHealthCheckAt:i,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};h.refreshToken&&(b.refreshToken=h.refreshToken),h.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*h.expiresIn).toISOString()),await (0,e.rj)(a.id,b),console.log(`${g} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:i,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),console.warn(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}h=!0,console.log(`${g} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{i(),setInterval(i,6e4)},1e4);let k=!1;(async function(){if(!k)try{await (0,d.A)(),k=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return k})().catch(a=>console.error("[CloudSync] ensure failed:",a))},66434:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249);c(67484);var e=c(18111);function f({children:a}){let{initTheme:b}=(0,e.A)();return(0,d.jsx)(d.Fragment,{children:a})}},68852:(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.js","ThemeProvider")},70440:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(88868);let e=async a=>[{type:"image/x-icon",sizes:"16x16",url:(0,d.fillMetadataSegment)(".",await a.params,"favicon.ico")+"?603d046c9a6fdfbb"}]},71569:(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.js\" 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.js","default")},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))},82191:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(48249),e=c(2116);function f(){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[var(--bg-primary,#0a0a0f)] text-[var(--text-primary,#e0e0e0)] text-center",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-[#6366f1] via-[#8b5cf6] to-[#a855f7] bg-clip-text text-transparent",children:"404"}),(0,d.jsx)("h1",{className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--text-secondary,#888)] max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsx)(e,{href:"/dashboard",className:"px-8 py-3 rounded-[10px] text-white text-sm font-semibold no-underline transition-all duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6]",children:"Go to Dashboard"})]})}},83084:(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(41916);c(15637);let e={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:"0.4.0"},f={storageKey:"theme",defaultTheme:"system"}},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))},96536:(a,b,c)=>{Promise.resolve().then(c.bind(c,56037))}};
@@ -1 +1 @@
1
- "use strict";exports.id=4004,exports.ids=[4004,7271],exports.modules={24004:(a,b,c)=>{c.d(b,{$E:()=>m,Kr:()=>s,UE:()=>t,YO:()=>o,getAllRateLimitStatus:()=>u,mg:()=>l,rh:()=>k});var d=c(57217);c(49263);var e=c(28108),f=c(97271);let g=new Map,h=new Set,i=!1,j={maxConcurrent:10,minTime:0,reservoir:null,reservoirRefreshAmount:null,reservoirRefreshInterval:null};async function k(){if(!i){i=!0;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,60021)),b=await a(),i=0,j=0;for(let a of b)if(a.rateLimitProtection)h.add(a.id),i++;else if(a.provider&&"apikey"===(0,e.oQ)(a.provider)&&a.isActive){h.add(a.id),j++;let b=`${a.provider}:${a.id}`;g.has(b)||g.set(b,new d({maxConcurrent:f.DEFAULT_API_LIMITS.concurrentRequests,minTime:f.DEFAULT_API_LIMITS.minTimeBetweenRequests,reservoir:f.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshAmount:f.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshInterval:6e4,id:b}))}(i>0||j>0)&&console.log(`🛡️ [RATE-LIMIT] Loaded ${i} explicit + ${j} auto-enabled (API key) protection(s)`)}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function l(a){h.add(a)}function m(a){for(let[b]of(h.delete(a),g))if(b.includes(a)){let a=g.get(b);a?.disconnect(),g.delete(b)}}function n(a,b,c=null){let e=c?`${a}:${b}:${c}`:`${a}:${b}`;if(!g.has(e)){let a=new d({...j,id:e});a.on("queued",()=>{let b=a.counts();b.QUEUED>0&&console.log(`⏳ [RATE-LIMIT] ${e} — ${b.QUEUED} request(s) queued, ${b.RUNNING} running`)}),g.set(e,a)}return g.get(e)}async function o(a,b,c,d){return h.has(b)?n(a,b,null).schedule(d):d()}let p={limit:"x-ratelimit-limit-requests",remaining:"x-ratelimit-remaining-requests",reset:"x-ratelimit-reset-requests",limitTokens:"x-ratelimit-limit-tokens",remainingTokens:"x-ratelimit-remaining-tokens",resetTokens:"x-ratelimit-reset-tokens",retryAfter:"retry-after",overLimit:"x-ratelimit-over-limit"},q={limit:"anthropic-ratelimit-requests-limit",remaining:"anthropic-ratelimit-requests-remaining",reset:"anthropic-ratelimit-requests-reset",limitTokens:"anthropic-ratelimit-input-tokens-limit",remainingTokens:"anthropic-ratelimit-input-tokens-remaining",resetTokens:"anthropic-ratelimit-input-tokens-reset",retryAfter:"retry-after"};function r(a){if(!a)return null;let b=a.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+)s)?(?:(\d+)ms)?$/);if(b){let[,a,c,d,e]=b;return(3600*parseInt(a||0)+60*parseInt(c||0)+parseInt(d||0))*1e3+parseInt(e||0)}let c=parseFloat(a);if(!isNaN(c)&&c>0)return c>17e8?Math.max(0,1e3*c-Date.now()):1e3*c;try{let b=new Date(a);if(!isNaN(b.getTime()))return Math.max(0,b.getTime()-Date.now())}catch{}return null}function s(a,b,c,d,e=null){if(!h.has(b)||!c)return;let f=n(a,b,null),g="claude"===a||"anthropic"===a?q:p,i=a=>"function"==typeof c.get?c.get(a):c[a]||null,j=parseInt(i(g.limit)),k=parseInt(i(g.remaining)),l=i(g.reset),m=i(g.retryAfter),o=i(p.overLimit);if(429===d){let c=r(m)||6e4;console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — 429 received, pausing for ${Math.ceil(c/1e3)}s`),f.updateSettings({reservoir:0,reservoirRefreshAmount:j||60,reservoirRefreshInterval:c});return}if("yes"===o){console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — near capacity, slowing down`),f.updateSettings({minTime:200});return}if(!isNaN(j)&&j>0){let c=r(l)||6e4,d={minTime:Math.max(0,Math.floor(6e4/j)-10)};!isNaN(k)&&(k<.1*j?(d.reservoir=k,d.reservoirRefreshAmount=j,d.reservoirRefreshInterval=c,console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — ${k}/${j} remaining, throttling`)):k>.5*j&&(d.minTime=0,d.reservoir=null,d.reservoirRefreshAmount=null,d.reservoirRefreshInterval=null)),f.updateSettings(d)}}function t(a,b){let c=`${a}:${b}`,d=g.get(c);if(!d)return{enabled:h.has(b),active:!1,queued:0,running:0};let e=d.counts();return{enabled:h.has(b),active:!0,queued:e.QUEUED||0,running:e.RUNNING||0,executing:e.EXECUTING||0,done:e.DONE||0}}function u(){let a={};for(let[b,c]of g){let d=c.counts();a[b]={queued:d.QUEUED||0,running:d.RUNNING||0,executing:d.EXECUTING||0}}return a}},49263:(a,b,c)=>{c.d(b,{AO:()=>l,N:()=>i,Qo:()=>o,R7:()=>h,T_:()=>f,UY:()=>n,hk:()=>k,vp:()=>m});var d=c(97271),e=c(28108);function f(a){let b=(0,e.oQ)(a);return d.PROVIDER_PROFILES[b]??d.PROVIDER_PROFILES.apikey}let g=new Map;function h(a,b,c,d,e){if(!c)return;let f=`${a}:${b}:${c}`;g.set(f,{reason:d,until:Date.now()+e,lockedAt:Date.now()})}function i(){let a=Date.now(),b=[];for(let[c,d]of g)if(a<=d.until){let[e,f,g]=c.split(":");b.push({provider:e,connectionId:f,model:g,reason:d.reason,remainingMs:d.until-a})}return b}function j(a=0){return Math.min(d.EQ.base*Math.pow(2,a),d.EQ.max)}function k(a,b,c=0,e=null,g=null){if(b){let a="string"==typeof b?b:JSON.stringify(b),e=a.toLowerCase();if(e.includes("no credentials"))return{shouldFallback:!0,cooldownMs:d.Bm.notFound,reason:d.QS.AUTH_ERROR};if(e.includes("request not allowed"))return{shouldFallback:!0,cooldownMs:d.Bm.requestNotAllowed,reason:d.QS.RATE_LIMIT_EXCEEDED};if(e.includes("rate limit")||e.includes("too many requests")||e.includes("quota exceeded")||e.includes("capacity")||e.includes("overloaded")){let b=Math.min(c+1,d.EQ.maxLevel),e=function(a){if(!a)return d.QS.UNKNOWN;let b=String(a).toLowerCase();return b.includes("quota exceeded")||b.includes("quota depleted")||b.includes("billing")?d.QS.QUOTA_EXHAUSTED:b.includes("rate limit")||b.includes("too many requests")||b.includes("rate_limit")?d.QS.RATE_LIMIT_EXCEEDED:b.includes("capacity")||b.includes("overloaded")||b.includes("resource exhausted")?d.QS.MODEL_CAPACITY:b.includes("unauthorized")||b.includes("invalid api key")||b.includes("authentication")?d.QS.AUTH_ERROR:b.includes("server error")||b.includes("internal error")?d.QS.SERVER_ERROR:d.QS.UNKNOWN}(a);return{shouldFallback:!0,cooldownMs:j(c),newBackoffLevel:b,reason:e}}}if(a===d.gx.UNAUTHORIZED)return{shouldFallback:!0,cooldownMs:d.Bm.unauthorized,reason:d.QS.AUTH_ERROR};if(a===d.gx.PAYMENT_REQUIRED||a===d.gx.FORBIDDEN)return{shouldFallback:!0,cooldownMs:d.Bm.paymentRequired,reason:d.QS.QUOTA_EXHAUSTED};if(a===d.gx.NOT_FOUND)return{shouldFallback:!0,cooldownMs:d.Bm.notFound,reason:d.QS.UNKNOWN};if(a===d.gx.RATE_LIMITED){let a=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:!0,cooldownMs:j(c),newBackoffLevel:a,reason:d.QS.RATE_LIMIT_EXCEEDED}}if([d.gx.NOT_ACCEPTABLE,d.gx.REQUEST_TIMEOUT,d.gx.SERVER_ERROR,d.gx.BAD_GATEWAY,d.gx.SERVICE_UNAVAILABLE,d.gx.GATEWAY_TIMEOUT].includes(a)){let a=g?f(g):null,b=a?.transientCooldown??d.Bm.transientInitial,e=a?.maxBackoffLevel??d.EQ.maxLevel;return{shouldFallback:!0,cooldownMs:Math.min(b*Math.pow(2,c),d.Bm.transientMax),newBackoffLevel:Math.min(c+1,e),reason:d.QS.SERVER_ERROR}}return a===d.gx.BAD_REQUEST?{shouldFallback:!1,cooldownMs:0,reason:d.QS.UNKNOWN}:{shouldFallback:!0,cooldownMs:d.Bm.transient,reason:d.QS.UNKNOWN}}function l(a){return!!a&&new Date(a).getTime()>Date.now()}function m(a){return new Date(Date.now()+a).toISOString()}function n(a){let b=null,c=Date.now();for(let d of a){if(!d.rateLimitedUntil)continue;let a=new Date(d.rateLimitedUntil).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function o(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}setInterval(()=>{let a=Date.now();for(let[b,c]of g)a>c.until&&g.delete(b)},15e3).unref()},97271:(a,b,c)=>{c.d(b,{$V:()=>n,EQ:()=>u,Co:()=>m,Bm:()=>w,DEFAULT_API_LIMITS:()=>y,O:()=>t,Uc:()=>p,eo:()=>q,LY:()=>s,MT:()=>j,gx:()=>r,NA:()=>o,xq:()=>l,PROVIDER_PROFILES:()=>x,QS:()=>v,C8:()=>z,TH:()=>k});var d=c(29021),e=c(33873);let f=["clientId","clientSecret","tokenUrl","authUrl","refreshUrl"],g=0,h=null;var i=c(28108);let j=parseInt(process.env.FETCH_TIMEOUT_MS||"120000",10),k=parseInt(process.env.STREAM_IDLE_TIMEOUT_MS||"60000",10),l=(0,i.Z0)();!function(a){let b;if(h&&Date.now()-g<6e4)return;let c=(b=process.env.DATA_DIR||(0,e.join)(process.cwd(),"data"),(0,e.join)(b,"provider-credentials.json"));if(!(0,d.existsSync)(c))return h||console.log("[CREDENTIALS] No external credentials file found, using defaults."),h=a,g=Date.now();try{let b=(0,d.readFileSync)(c,"utf-8"),e=JSON.parse(b),g=0;for(let[b,c]of Object.entries(e)){if(!a[b]){console.log(`[CREDENTIALS] Warning: unknown provider "${b}" in credentials file, skipping.`);continue}if(!c||"object"!=typeof c){console.log(`[CREDENTIALS] Warning: provider "${b}" value must be an object, got ${typeof c}. Skipping.`);continue}for(let d of f)void 0!==c[d]&&(a[b][d]=c[d],g++)}let i=null!==h;console.log(`[CREDENTIALS] ${i?"Reloaded":"Loaded"} external credentials: ${g} field(s) from ${c}`)}catch(a){console.log(`[CREDENTIALS] Error reading credentials file: ${a.message}. Using defaults.`)}h=a,g=Date.now()}(l);let m="You are Claude Code, Anthropic's official CLI for Claude.",n="Please ignore the following [ignore]You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**[/ignore]",o={google:{token:"https://oauth2.googleapis.com/token",auth:"https://accounts.google.com/o/oauth2/auth"},openai:{token:"https://auth.openai.com/oauth/token",auth:"https://auth.openai.com/oauth/authorize"},anthropic:{token:"https://console.anthropic.com/v1/oauth/token",auth:"https://console.anthropic.com/v1/oauth/authorize"},qwen:{token:"https://chat.qwen.ai/api/v1/oauth2/token",auth:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{token:"https://iflow.cn/oauth/token",auth:"https://iflow.cn/oauth"},github:{token:"https://github.com/login/oauth/access_token",auth:"https://github.com/login/oauth/authorize",deviceCode:"https://github.com/login/device/code"}},p=64e3,q=32e3,r={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},s={[r.BAD_REQUEST]:{type:"invalid_request_error",code:"bad_request"},[r.UNAUTHORIZED]:{type:"authentication_error",code:"invalid_api_key"},[r.FORBIDDEN]:{type:"permission_error",code:"insufficient_quota"},[r.NOT_FOUND]:{type:"invalid_request_error",code:"model_not_found"},[r.RATE_LIMITED]:{type:"rate_limit_error",code:"rate_limit_exceeded"},[r.SERVER_ERROR]:{type:"server_error",code:"internal_server_error"},[r.BAD_GATEWAY]:{type:"server_error",code:"bad_gateway"},[r.SERVICE_UNAVAILABLE]:{type:"server_error",code:"service_unavailable"},[r.GATEWAY_TIMEOUT]:{type:"server_error",code:"gateway_timeout"}},t={[r.BAD_REQUEST]:"Bad request",[r.UNAUTHORIZED]:"Invalid API key provided",[r.FORBIDDEN]:"You exceeded your current quota",[r.NOT_FOUND]:"Model not found",[r.RATE_LIMITED]:"Rate limit exceeded",[r.SERVER_ERROR]:"Internal server error",[r.BAD_GATEWAY]:"Bad gateway - upstream provider error",[r.SERVICE_UNAVAILABLE]:"Service temporarily unavailable",[r.GATEWAY_TIMEOUT]:"Gateway timeout"},u={base:1e3,max:12e4,maxLevel:15},v={QUOTA_EXHAUSTED:"quota_exhausted",RATE_LIMIT_EXCEEDED:"rate_limit_exceeded",MODEL_CAPACITY:"model_capacity",SERVER_ERROR:"server_error",AUTH_ERROR:"auth_error",UNKNOWN:"unknown"},w={unauthorized:12e4,paymentRequired:12e4,notFound:12e4,transientInitial:5e3,transientMax:6e4,transient:5e3,requestNotAllowed:5e3,rateLimit:12e4,serviceUnavailable:2e3,authExpired:12e4},x={oauth:{transientCooldown:5e3,rateLimitCooldown:6e4,maxBackoffLevel:8,circuitBreakerThreshold:3,circuitBreakerReset:6e4},apikey:{transientCooldown:3e3,rateLimitCooldown:0,maxBackoffLevel:5,circuitBreakerThreshold:5,circuitBreakerReset:3e4}},y={requestsPerMinute:100,minTimeBetweenRequests:200,concurrentRequests:10},z=["Please write a 5-10 word title for the following conversation:"]}};
1
+ "use strict";exports.id=4004,exports.ids=[4004,7271,9263],exports.modules={24004:(a,b,c)=>{c.d(b,{$E:()=>m,Kr:()=>s,UE:()=>t,YO:()=>o,getAllRateLimitStatus:()=>u,mg:()=>l,rh:()=>k});var d=c(57217);c(49263);var e=c(28108),f=c(97271);let g=new Map,h=new Set,i=!1,j={maxConcurrent:10,minTime:0,reservoir:null,reservoirRefreshAmount:null,reservoirRefreshInterval:null};async function k(){if(!i){i=!0;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,24352)),b=await a(),i=0,j=0;for(let a of b)if(a.rateLimitProtection)h.add(a.id),i++;else if(a.provider&&"apikey"===(0,e.oQ)(a.provider)&&a.isActive){h.add(a.id),j++;let b=`${a.provider}:${a.id}`;g.has(b)||g.set(b,new d({maxConcurrent:f.DEFAULT_API_LIMITS.concurrentRequests,minTime:f.DEFAULT_API_LIMITS.minTimeBetweenRequests,reservoir:f.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshAmount:f.DEFAULT_API_LIMITS.requestsPerMinute,reservoirRefreshInterval:6e4,id:b}))}(i>0||j>0)&&console.log(`🛡️ [RATE-LIMIT] Loaded ${i} explicit + ${j} auto-enabled (API key) protection(s)`)}catch(a){console.error("[RATE-LIMIT] Failed to load settings:",a.message)}}}function l(a){h.add(a)}function m(a){for(let[b]of(h.delete(a),g))if(b.includes(a)){let a=g.get(b);a?.disconnect(),g.delete(b)}}function n(a,b,c=null){let e=c?`${a}:${b}:${c}`:`${a}:${b}`;if(!g.has(e)){let a=new d({...j,id:e});a.on("queued",()=>{let b=a.counts();b.QUEUED>0&&console.log(`⏳ [RATE-LIMIT] ${e} — ${b.QUEUED} request(s) queued, ${b.RUNNING} running`)}),g.set(e,a)}return g.get(e)}async function o(a,b,c,d){return h.has(b)?n(a,b,null).schedule(d):d()}let p={limit:"x-ratelimit-limit-requests",remaining:"x-ratelimit-remaining-requests",reset:"x-ratelimit-reset-requests",limitTokens:"x-ratelimit-limit-tokens",remainingTokens:"x-ratelimit-remaining-tokens",resetTokens:"x-ratelimit-reset-tokens",retryAfter:"retry-after",overLimit:"x-ratelimit-over-limit"},q={limit:"anthropic-ratelimit-requests-limit",remaining:"anthropic-ratelimit-requests-remaining",reset:"anthropic-ratelimit-requests-reset",limitTokens:"anthropic-ratelimit-input-tokens-limit",remainingTokens:"anthropic-ratelimit-input-tokens-remaining",resetTokens:"anthropic-ratelimit-input-tokens-reset",retryAfter:"retry-after"};function r(a){if(!a)return null;let b=a.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+)s)?(?:(\d+)ms)?$/);if(b){let[,a,c,d,e]=b;return(3600*parseInt(a||0)+60*parseInt(c||0)+parseInt(d||0))*1e3+parseInt(e||0)}let c=parseFloat(a);if(!isNaN(c)&&c>0)return c>17e8?Math.max(0,1e3*c-Date.now()):1e3*c;try{let b=new Date(a);if(!isNaN(b.getTime()))return Math.max(0,b.getTime()-Date.now())}catch{}return null}function s(a,b,c,d,e=null){if(!h.has(b)||!c)return;let f=n(a,b,null),g="claude"===a||"anthropic"===a?q:p,i=a=>"function"==typeof c.get?c.get(a):c[a]||null,j=parseInt(i(g.limit)),k=parseInt(i(g.remaining)),l=i(g.reset),m=i(g.retryAfter),o=i(p.overLimit);if(429===d){let c=r(m)||6e4;console.log(`🚫 [RATE-LIMIT] ${a}:${b.slice(0,8)} — 429 received, pausing for ${Math.ceil(c/1e3)}s`),f.updateSettings({reservoir:0,reservoirRefreshAmount:j||60,reservoirRefreshInterval:c});return}if("yes"===o){console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — near capacity, slowing down`),f.updateSettings({minTime:200});return}if(!isNaN(j)&&j>0){let c=r(l)||6e4,d={minTime:Math.max(0,Math.floor(6e4/j)-10)};!isNaN(k)&&(k<.1*j?(d.reservoir=k,d.reservoirRefreshAmount=j,d.reservoirRefreshInterval=c,console.log(`⚠️ [RATE-LIMIT] ${a}:${b.slice(0,8)} — ${k}/${j} remaining, throttling`)):k>.5*j&&(d.minTime=0,d.reservoir=null,d.reservoirRefreshAmount=null,d.reservoirRefreshInterval=null)),f.updateSettings(d)}}function t(a,b){let c=`${a}:${b}`,d=g.get(c);if(!d)return{enabled:h.has(b),active:!1,queued:0,running:0};let e=d.counts();return{enabled:h.has(b),active:!0,queued:e.QUEUED||0,running:e.RUNNING||0,executing:e.EXECUTING||0,done:e.DONE||0}}function u(){let a={};for(let[b,c]of g){let d=c.counts();a[b]={queued:d.QUEUED||0,running:d.RUNNING||0,executing:d.EXECUTING||0}}return a}},49263:(a,b,c)=>{c.d(b,{AO:()=>l,Qo:()=>o,R7:()=>h,T_:()=>f,UY:()=>n,getAllModelLockouts:()=>i,hk:()=>k,vp:()=>m});var d=c(97271),e=c(28108);function f(a){let b=(0,e.oQ)(a);return d.PROVIDER_PROFILES[b]??d.PROVIDER_PROFILES.apikey}let g=new Map;function h(a,b,c,d,e){if(!c)return;let f=`${a}:${b}:${c}`;g.set(f,{reason:d,until:Date.now()+e,lockedAt:Date.now()})}function i(){let a=Date.now(),b=[];for(let[c,d]of g)if(a<=d.until){let[e,f,g]=c.split(":");b.push({provider:e,connectionId:f,model:g,reason:d.reason,remainingMs:d.until-a})}return b}function j(a=0){return Math.min(d.EQ.base*Math.pow(2,a),d.EQ.max)}function k(a,b,c=0,e=null,g=null){if(b){let a="string"==typeof b?b:JSON.stringify(b),e=a.toLowerCase();if(e.includes("no credentials"))return{shouldFallback:!0,cooldownMs:d.Bm.notFound,reason:d.QS.AUTH_ERROR};if(e.includes("request not allowed"))return{shouldFallback:!0,cooldownMs:d.Bm.requestNotAllowed,reason:d.QS.RATE_LIMIT_EXCEEDED};if(e.includes("rate limit")||e.includes("too many requests")||e.includes("quota exceeded")||e.includes("capacity")||e.includes("overloaded")){let b=Math.min(c+1,d.EQ.maxLevel),e=function(a){if(!a)return d.QS.UNKNOWN;let b=String(a).toLowerCase();return b.includes("quota exceeded")||b.includes("quota depleted")||b.includes("billing")?d.QS.QUOTA_EXHAUSTED:b.includes("rate limit")||b.includes("too many requests")||b.includes("rate_limit")?d.QS.RATE_LIMIT_EXCEEDED:b.includes("capacity")||b.includes("overloaded")||b.includes("resource exhausted")?d.QS.MODEL_CAPACITY:b.includes("unauthorized")||b.includes("invalid api key")||b.includes("authentication")?d.QS.AUTH_ERROR:b.includes("server error")||b.includes("internal error")?d.QS.SERVER_ERROR:d.QS.UNKNOWN}(a);return{shouldFallback:!0,cooldownMs:j(c),newBackoffLevel:b,reason:e}}}if(a===d.gx.UNAUTHORIZED)return{shouldFallback:!0,cooldownMs:d.Bm.unauthorized,reason:d.QS.AUTH_ERROR};if(a===d.gx.PAYMENT_REQUIRED||a===d.gx.FORBIDDEN)return{shouldFallback:!0,cooldownMs:d.Bm.paymentRequired,reason:d.QS.QUOTA_EXHAUSTED};if(a===d.gx.NOT_FOUND)return{shouldFallback:!0,cooldownMs:d.Bm.notFound,reason:d.QS.UNKNOWN};if(a===d.gx.RATE_LIMITED){let a=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:!0,cooldownMs:j(c),newBackoffLevel:a,reason:d.QS.RATE_LIMIT_EXCEEDED}}if([d.gx.NOT_ACCEPTABLE,d.gx.REQUEST_TIMEOUT,d.gx.SERVER_ERROR,d.gx.BAD_GATEWAY,d.gx.SERVICE_UNAVAILABLE,d.gx.GATEWAY_TIMEOUT].includes(a)){let a=g?f(g):null,b=a?.transientCooldown??d.Bm.transientInitial,e=a?.maxBackoffLevel??d.EQ.maxLevel;return{shouldFallback:!0,cooldownMs:Math.min(b*Math.pow(2,c),d.Bm.transientMax),newBackoffLevel:Math.min(c+1,e),reason:d.QS.SERVER_ERROR}}return a===d.gx.BAD_REQUEST?{shouldFallback:!1,cooldownMs:0,reason:d.QS.UNKNOWN}:{shouldFallback:!0,cooldownMs:d.Bm.transient,reason:d.QS.UNKNOWN}}function l(a){return!!a&&new Date(a).getTime()>Date.now()}function m(a){return new Date(Date.now()+a).toISOString()}function n(a){let b=null,c=Date.now();for(let d of a){if(!d.rateLimitedUntil)continue;let a=new Date(d.rateLimitedUntil).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function o(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}setInterval(()=>{let a=Date.now();for(let[b,c]of g)a>c.until&&g.delete(b)},15e3).unref()},97271:(a,b,c)=>{c.d(b,{$V:()=>n,EQ:()=>u,Co:()=>m,Bm:()=>w,DEFAULT_API_LIMITS:()=>y,O:()=>t,Uc:()=>p,eo:()=>q,LY:()=>s,MT:()=>j,gx:()=>r,NA:()=>o,xq:()=>l,PROVIDER_PROFILES:()=>x,QS:()=>v,C8:()=>z,TH:()=>k});var d=c(29021),e=c(33873);let f=["clientId","clientSecret","tokenUrl","authUrl","refreshUrl"],g=0,h=null;var i=c(28108);let j=parseInt(process.env.FETCH_TIMEOUT_MS||"120000",10),k=parseInt(process.env.STREAM_IDLE_TIMEOUT_MS||"60000",10),l=(0,i.Z0)();!function(a){let b;if(h&&Date.now()-g<6e4)return;let c=(b=process.env.DATA_DIR||(0,e.join)(process.cwd(),"data"),(0,e.join)(b,"provider-credentials.json"));if(!(0,d.existsSync)(c))return h||console.log("[CREDENTIALS] No external credentials file found, using defaults."),h=a,g=Date.now();try{let b=(0,d.readFileSync)(c,"utf-8"),e=JSON.parse(b),g=0;for(let[b,c]of Object.entries(e)){if(!a[b]){console.log(`[CREDENTIALS] Warning: unknown provider "${b}" in credentials file, skipping.`);continue}if(!c||"object"!=typeof c){console.log(`[CREDENTIALS] Warning: provider "${b}" value must be an object, got ${typeof c}. Skipping.`);continue}for(let d of f)void 0!==c[d]&&(a[b][d]=c[d],g++)}let i=null!==h;console.log(`[CREDENTIALS] ${i?"Reloaded":"Loaded"} external credentials: ${g} field(s) from ${c}`)}catch(a){console.log(`[CREDENTIALS] Error reading credentials file: ${a.message}. Using defaults.`)}h=a,g=Date.now()}(l);let m="You are Claude Code, Anthropic's official CLI for Claude.",n="Please ignore the following [ignore]You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**[/ignore]",o={google:{token:"https://oauth2.googleapis.com/token",auth:"https://accounts.google.com/o/oauth2/auth"},openai:{token:"https://auth.openai.com/oauth/token",auth:"https://auth.openai.com/oauth/authorize"},anthropic:{token:"https://console.anthropic.com/v1/oauth/token",auth:"https://console.anthropic.com/v1/oauth/authorize"},qwen:{token:"https://chat.qwen.ai/api/v1/oauth2/token",auth:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{token:"https://iflow.cn/oauth/token",auth:"https://iflow.cn/oauth"},github:{token:"https://github.com/login/oauth/access_token",auth:"https://github.com/login/oauth/authorize",deviceCode:"https://github.com/login/device/code"}},p=64e3,q=32e3,r={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},s={[r.BAD_REQUEST]:{type:"invalid_request_error",code:"bad_request"},[r.UNAUTHORIZED]:{type:"authentication_error",code:"invalid_api_key"},[r.FORBIDDEN]:{type:"permission_error",code:"insufficient_quota"},[r.NOT_FOUND]:{type:"invalid_request_error",code:"model_not_found"},[r.RATE_LIMITED]:{type:"rate_limit_error",code:"rate_limit_exceeded"},[r.SERVER_ERROR]:{type:"server_error",code:"internal_server_error"},[r.BAD_GATEWAY]:{type:"server_error",code:"bad_gateway"},[r.SERVICE_UNAVAILABLE]:{type:"server_error",code:"service_unavailable"},[r.GATEWAY_TIMEOUT]:{type:"server_error",code:"gateway_timeout"}},t={[r.BAD_REQUEST]:"Bad request",[r.UNAUTHORIZED]:"Invalid API key provided",[r.FORBIDDEN]:"You exceeded your current quota",[r.NOT_FOUND]:"Model not found",[r.RATE_LIMITED]:"Rate limit exceeded",[r.SERVER_ERROR]:"Internal server error",[r.BAD_GATEWAY]:"Bad gateway - upstream provider error",[r.SERVICE_UNAVAILABLE]:"Service temporarily unavailable",[r.GATEWAY_TIMEOUT]:"Gateway timeout"},u={base:1e3,max:12e4,maxLevel:15},v={QUOTA_EXHAUSTED:"quota_exhausted",RATE_LIMIT_EXCEEDED:"rate_limit_exceeded",MODEL_CAPACITY:"model_capacity",SERVER_ERROR:"server_error",AUTH_ERROR:"auth_error",UNKNOWN:"unknown"},w={unauthorized:12e4,paymentRequired:12e4,notFound:12e4,transientInitial:5e3,transientMax:6e4,transient:5e3,requestNotAllowed:5e3,rateLimit:12e4,serviceUnavailable:2e3,authExpired:12e4},x={oauth:{transientCooldown:5e3,rateLimitCooldown:6e4,maxBackoffLevel:8,circuitBreakerThreshold:3,circuitBreakerReset:6e4},apikey:{transientCooldown:3e3,rateLimitCooldown:0,maxBackoffLevel:5,circuitBreakerThreshold:5,circuitBreakerReset:3e4}},y={requestsPerMinute:100,minTimeBetweenRequests:200,concurrentRequests:10},z=["Please write a 5-10 word title for the following conversation:"]}};
@@ -0,0 +1,46 @@
1
+ "use strict";exports.id=4352,exports.ids=[4352],exports.modules={24352:(a,b,c)=>{c.d(b,{S8:()=>R,lR:()=>j,bI:()=>E,Iq:()=>$,jd:()=>W,iE:()=>y,i0:()=>H,Lh:()=>_,CG:()=>Y,fv:()=>M,fK:()=>B,op:()=>C,Pc:()=>J,HL:()=>as,NL:()=>Q,v9:()=>ab,PX:()=>Z,L:()=>U,Dj:()=>V,Uv:()=>T,uv:()=>P,c:()=>N,OM:()=>K,r4:()=>ag,getPricingForModel:()=>ah,Mc:()=>x,getProviderConnections:()=>w,Qu:()=>G,Fh:()=>F,ru:()=>ap,o4:()=>aq,mt:()=>ad,Nx:()=>af,eF:()=>k,BD:()=>S,VT:()=>ak,yF:()=>aj,YD:()=>at,Dp:()=>l,L9:()=>O,o5:()=>L,PM:()=>au,oG:()=>X,KJ:()=>ai,rj:()=>A,ho:()=>I,Xx:()=>ae,ek:()=>aa});var d=c(94755),e=c(14469),f=c(87550),g=c(76760),h=c(73024);let i=0;function j(a="auto"){try{if(e.I8||e.m1||!e.oh||!h.existsSync(e.oh))return null;let b=h.statSync(e.oh);if(b.size<4096)return console.warn(`[DB] Backup SKIPPED — DB too small (${b.size}B)`),null;let c=Date.now();if("manual"!==a&&"pre-restore"!==a&&c-i<36e5)return null;i=c;let d=e.NJ||g.join(e.nJ,"db_backups");h.existsSync(d)||h.mkdirSync(d,{recursive:!0});let f=h.readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();if(f.length>0){let a=f[f.length-1],c=h.statSync(g.join(d,a));if(c.size>4096&&b.size<.5*c.size)return console.warn(`[DB] Backup SKIPPED — DB shrank from ${c.size}B to ${b.size}B`),null}let j=new Date().toISOString().replace(/[:.]/g,"-"),k=g.join(d,`db_${j}_${a}.sqlite`);(0,e.sm)().backup(k).then(()=>{console.log(`[DB] Backup created: ${k} (${b.size} bytes)`)}).catch(a=>{console.error("[DB] Backup failed:",a.message)});let l=h.readdirSync(d).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort();for(;l.length>20;){let a=0,b=1/0;for(let c=0;c<l.length-1;c++)try{let e=h.statSync(g.join(d,l[c]));e.size<b&&(b=e.size,a=c)}catch{a=c;break}try{h.unlinkSync(g.join(d,l[a]))}catch{}l.splice(a,1)}return{filename:g.basename(k),size:b.size}}catch(a){return console.error("[DB] Backup failed:",a.message),null}}async function k(){let a=e.NJ||g.join(e.nJ,"db_backups");try{if(!h.existsSync(a))return[];return h.readdirSync(a).filter(a=>a.startsWith("db_")&&a.endsWith(".sqlite")).sort().reverse().map(b=>{let c=g.join(a,b),d=h.statSync(c),e=b.match(/^db_(.+?)_([^.]+)\.sqlite$/),i=e?e[2]:"unknown",j=0;try{let a=new f(c,{readonly:!0}),b=a.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get();j=b?.cnt||0,a.close()}catch{}return{id:b,filename:b,createdAt:d.mtime.toISOString(),size:d.size,reason:i,connectionCount:j}})}catch{return[]}}async function l(a){let b=e.NJ||g.join(e.nJ,"db_backups"),c=g.join(b,a);if(!a.startsWith("db_")||!a.endsWith(".sqlite"))throw Error("Invalid backup ID");if(!h.existsSync(c))throw Error(`Backup not found: ${a}`);try{let a=new f(c,{readonly:!0}),b=a.pragma("integrity_check");if(a.close(),b[0]?.integrity_check!=="ok")throw Error("Backup integrity check failed")}catch(a){if("Backup integrity check failed"===a.message)throw a;throw Error(`Backup file is corrupt: ${a.message}`)}for(let a of(i=0,j("pre-restore"),(0,e.jX)(),[e.oh,`${e.oh}-wal`,`${e.oh}-shm`,`${e.oh}-journal`]))a&&h.existsSync(a)&&h.unlinkSync(a);h.copyFileSync(c,e.oh);let d=(0,e.sm)(),k=d.prepare("SELECT COUNT(*) as cnt FROM provider_connections").get()?.cnt||0,l=d.prepare("SELECT COUNT(*) as cnt FROM provider_nodes").get()?.cnt||0,m=d.prepare("SELECT COUNT(*) as cnt FROM combos").get()?.cnt||0,n=d.prepare("SELECT COUNT(*) as cnt FROM api_keys").get()?.cnt||0;return console.log(`[DB] Restored backup: ${a} (${k} connections)`),{restored:!0,backupId:a,connectionCount:k,nodeCount:l,comboCount:m,apiKeyCount:n}}var m=c(55511);let n="aes-256-gcm",o="enc:v1:",p=null;function q(){if(null!==p)return p;let a=process.env.STORAGE_ENCRYPTION_KEY;return a?p=(0,m.scryptSync)(a,"omniroute-field-encryption-v1",32):null}function r(){return!!process.env.STORAGE_ENCRYPTION_KEY}function s(a){if(!a||"string"!=typeof a)return a;let b=q();if(!b||a.startsWith(o))return a;let c=(0,m.randomBytes)(16),d=(0,m.createCipheriv)(n,b,c),e=d.update(a,"utf8","hex");e+=d.final("hex");let f=d.getAuthTag().toString("hex");return`${o}${c.toString("hex")}:${e}:${f}`}function t(a){if(!a||"string"!=typeof a||!a.startsWith(o))return a;let b=q();if(!b)return console.warn("[Encryption] Found encrypted data but STORAGE_ENCRYPTION_KEY is not set. Cannot decrypt."),a;let c=a.slice(o.length).split(":");if(3!==c.length)return console.error("[Encryption] Malformed encrypted value"),a;let[d,e,f]=c;try{let a=Buffer.from(d,"hex"),c=Buffer.from(f,"hex"),g=(0,m.createDecipheriv)(n,b,a);g.setAuthTag(c);let h=g.update(e,"hex","utf8");return h+=g.final("utf8")}catch(b){return console.error("[Encryption] Decryption failed:",b.message),a}}function u(a){return r()&&(a.apiKey&&(a.apiKey=s(a.apiKey)),a.accessToken&&(a.accessToken=s(a.accessToken)),a.refreshToken&&(a.refreshToken=s(a.refreshToken)),a.idToken&&(a.idToken=s(a.idToken))),a}function v(a){return a&&r()?{...a,apiKey:t(a.apiKey),accessToken:t(a.accessToken),refreshToken:t(a.refreshToken),idToken:t(a.idToken)}:a}async function w(a={}){let b=(0,e.sm)(),c="SELECT * FROM provider_connections",d=[],f={};return a.provider&&(d.push("provider = @provider"),f.provider=a.provider),void 0!==a.isActive&&(d.push("is_active = @isActive"),f.isActive=+!!a.isActive),d.length>0&&(c+=" WHERE "+d.join(" AND ")),c+=" ORDER BY priority ASC, updated_at DESC",b.prepare(c).all(f).map(a=>v((0,e.G6)((0,e.kB)(a))))}async function x(a){let b=(0,e.sm)().prepare("SELECT * FROM provider_connections WHERE id = ?").get(a);return b?v((0,e.G6)((0,e.kB)(b))):null}async function y(a){var b,c;let f=(0,e.sm)(),g=new Date().toISOString(),h=null;if("oauth"===a.authType&&a.email?h=f.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth' AND email = ?").get(a.provider,a.email):"oauth"!==a.authType||a.email?"apikey"===a.authType&&a.name&&(h=f.prepare("SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'apikey' AND name = ?").get(a.provider,a.name)):h=f.prepare(`SELECT * FROM provider_connections WHERE provider = ? AND auth_type = 'oauth'
2
+ ORDER BY updated_at DESC LIMIT 1`).get(a.provider),h){let b={...(0,e.kB)(h),...a,updatedAt:g};return z(f,h.id,b),j("pre-write"),(0,e.G6)(b)}let i=a.name||null;if(!i&&"oauth"===a.authType)if(a.email)i=a.email;else{let b=f.prepare("SELECT COUNT(*) as cnt FROM provider_connections WHERE provider = ?").get(a.provider)?.cnt||0;i=`Account ${b+1}`}let k=a.priority;if(!k){let b=f.prepare("SELECT MAX(priority) as maxP FROM provider_connections WHERE provider = ?").get(a.provider);k=(b?.maxP||0)+1}let l={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:i,priority:k,isActive:void 0===a.isActive||a.isActive,createdAt:g,updatedAt:g};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","idToken","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","lastErrorType","lastErrorSource","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","rateLimitProtection"])void 0!==a[b]&&null!==a[b]&&(l[b]=a[b]);return a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(l.providerSpecificData=a.providerSpecificData),b=f,c=u({...l}),b.prepare(`
3
+ INSERT INTO provider_connections (
4
+ id, provider, auth_type, name, email, priority, is_active,
5
+ access_token, refresh_token, expires_at, token_expires_at,
6
+ scope, project_id, test_status, error_code, last_error,
7
+ last_error_at, last_error_type, last_error_source, backoff_level,
8
+ rate_limited_until, health_check_interval, last_health_check_at,
9
+ last_tested, api_key, id_token, provider_specific_data,
10
+ expires_in, display_name, global_priority, default_model,
11
+ token_type, consecutive_use_count, rate_limit_protection, created_at, updated_at
12
+ ) VALUES (
13
+ @id, @provider, @authType, @name, @email, @priority, @isActive,
14
+ @accessToken, @refreshToken, @expiresAt, @tokenExpiresAt,
15
+ @scope, @projectId, @testStatus, @errorCode, @lastError,
16
+ @lastErrorAt, @lastErrorType, @lastErrorSource, @backoffLevel,
17
+ @rateLimitedUntil, @healthCheckInterval, @lastHealthCheckAt,
18
+ @lastTested, @apiKey, @idToken, @providerSpecificData,
19
+ @expiresIn, @displayName, @globalPriority, @defaultModel,
20
+ @tokenType, @consecutiveUseCount, @rateLimitProtection, @createdAt, @updatedAt
21
+ )
22
+ `).run({id:c.id,provider:c.provider,authType:c.authType||null,name:c.name||null,email:c.email||null,priority:c.priority||0,isActive:+(!1!==c.isActive),accessToken:c.accessToken||null,refreshToken:c.refreshToken||null,expiresAt:c.expiresAt||null,tokenExpiresAt:c.tokenExpiresAt||null,scope:c.scope||null,projectId:c.projectId||null,testStatus:c.testStatus||null,errorCode:c.errorCode||null,lastError:c.lastError||null,lastErrorAt:c.lastErrorAt||null,lastErrorType:c.lastErrorType||null,lastErrorSource:c.lastErrorSource||null,backoffLevel:c.backoffLevel||0,rateLimitedUntil:c.rateLimitedUntil||null,healthCheckInterval:c.healthCheckInterval||null,lastHealthCheckAt:c.lastHealthCheckAt||null,lastTested:c.lastTested||null,apiKey:c.apiKey||null,idToken:c.idToken||null,providerSpecificData:c.providerSpecificData?JSON.stringify(c.providerSpecificData):null,expiresIn:c.expiresIn||null,displayName:c.displayName||null,globalPriority:c.globalPriority||null,defaultModel:c.defaultModel||null,tokenType:c.tokenType||null,consecutiveUseCount:c.consecutiveUseCount||0,rateLimitProtection:+(!0===c.rateLimitProtection||1===c.rateLimitProtection),createdAt:c.createdAt,updatedAt:c.updatedAt}),D(f,a.provider),j("pre-write"),(0,e.G6)(l)}function z(a,b,c){let d=c.updatedAt||new Date().toISOString();a.prepare(`
23
+ UPDATE provider_connections SET
24
+ provider = @provider, auth_type = @authType, name = @name, email = @email,
25
+ priority = @priority, is_active = @isActive, access_token = @accessToken,
26
+ refresh_token = @refreshToken, expires_at = @expiresAt, token_expires_at = @tokenExpiresAt,
27
+ scope = @scope, project_id = @projectId, test_status = @testStatus, error_code = @errorCode,
28
+ last_error = @lastError, last_error_at = @lastErrorAt, last_error_type = @lastErrorType,
29
+ last_error_source = @lastErrorSource, backoff_level = @backoffLevel,
30
+ rate_limited_until = @rateLimitedUntil, health_check_interval = @healthCheckInterval,
31
+ last_health_check_at = @lastHealthCheckAt, last_tested = @lastTested, api_key = @apiKey,
32
+ id_token = @idToken, provider_specific_data = @providerSpecificData,
33
+ expires_in = @expiresIn, display_name = @displayName, global_priority = @globalPriority,
34
+ default_model = @defaultModel, token_type = @tokenType,
35
+ consecutive_use_count = @consecutiveUseCount,
36
+ rate_limit_protection = @rateLimitProtection,
37
+ updated_at = @updatedAt
38
+ WHERE id = @id
39
+ `).run({id:b,provider:c.provider,authType:c.authType||null,name:c.name||null,email:c.email||null,priority:c.priority||0,isActive:+(!1!==c.isActive),accessToken:c.accessToken||null,refreshToken:c.refreshToken||null,expiresAt:c.expiresAt||null,tokenExpiresAt:c.tokenExpiresAt||null,scope:c.scope||null,projectId:c.projectId||null,testStatus:c.testStatus||null,errorCode:c.errorCode||null,lastError:c.lastError||null,lastErrorAt:c.lastErrorAt||null,lastErrorType:c.lastErrorType||null,lastErrorSource:c.lastErrorSource||null,backoffLevel:c.backoffLevel||0,rateLimitedUntil:c.rateLimitedUntil||null,healthCheckInterval:c.healthCheckInterval||null,lastHealthCheckAt:c.lastHealthCheckAt||null,lastTested:c.lastTested||null,apiKey:c.apiKey||null,idToken:c.idToken||null,providerSpecificData:c.providerSpecificData?JSON.stringify(c.providerSpecificData):null,expiresIn:c.expiresIn||null,displayName:c.displayName||null,globalPriority:c.globalPriority||null,defaultModel:c.defaultModel||null,tokenType:c.tokenType||null,consecutiveUseCount:c.consecutiveUseCount||0,rateLimitProtection:+(!0===c.rateLimitProtection||1===c.rateLimitProtection),updatedAt:d})}async function A(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT * FROM provider_connections WHERE id = ?").get(a);if(!d)return null;let f={...(0,e.kB)(d),...b,updatedAt:new Date().toISOString()};return z(c,a,u({...f})),j("pre-write"),void 0!==b.priority&&D(c,d.provider),(0,e.G6)(f)}async function B(a){let b=(0,e.sm)(),c=b.prepare("SELECT provider FROM provider_connections WHERE id = ?").get(a);return!!c&&(b.prepare("DELETE FROM provider_connections WHERE id = ?").run(a),D(b,c.provider),j("pre-write"),!0)}async function C(a){let b=(0,e.sm)().prepare("DELETE FROM provider_connections WHERE provider = ?").run(a);return j("pre-write"),b.changes}function D(a,b){let c=a.prepare("SELECT id, priority, updated_at FROM provider_connections WHERE provider = ? ORDER BY priority ASC, updated_at DESC").all(b),d=a.prepare("UPDATE provider_connections SET priority = ? WHERE id = ?");c.forEach((a,b)=>{d.run(b+1,a.id)})}async function E(){return 0}async function F(a={}){let b=(0,e.sm)(),c="SELECT * FROM provider_nodes",d={};return a.type&&(c+=" WHERE type = @type",d.type=a.type),b.prepare(c).all(d).map(e.kB)}async function G(a){let b=(0,e.sm)().prepare("SELECT * FROM provider_nodes WHERE id = ?").get(a);return b?(0,e.kB)(b):null}async function H(a){let b=(0,e.sm)(),c=new Date().toISOString(),f={id:a.id||(0,d.A)(),type:a.type,name:a.name,prefix:a.prefix||null,apiType:a.apiType||null,baseUrl:a.baseUrl||null,createdAt:c,updatedAt:c};return b.prepare(`
40
+ INSERT INTO provider_nodes (id, type, name, prefix, api_type, base_url, created_at, updated_at)
41
+ VALUES (@id, @type, @name, @prefix, @apiType, @baseUrl, @createdAt, @updatedAt)
42
+ `).run(f),j("pre-write"),f}async function I(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT * FROM provider_nodes WHERE id = ?").get(a);if(!d)return null;let f={...(0,e.kB)(d),...b,updatedAt:new Date().toISOString()};return c.prepare(`
43
+ UPDATE provider_nodes SET type = @type, name = @name, prefix = @prefix,
44
+ api_type = @apiType, base_url = @baseUrl, updated_at = @updatedAt
45
+ WHERE id = @id
46
+ `).run({id:a,type:f.type,name:f.name,prefix:f.prefix||null,apiType:f.apiType||null,baseUrl:f.baseUrl||null,updatedAt:f.updatedAt}),j("pre-write"),f}async function J(a){let b=(0,e.sm)(),c=b.prepare("SELECT * FROM provider_nodes WHERE id = ?").get(a);return c?(b.prepare("DELETE FROM provider_nodes WHERE id = ?").run(a),j("pre-write"),(0,e.kB)(c)):null}async function K(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'modelAliases'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function L(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('modelAliases', ?, ?)").run(a,JSON.stringify(b)),j("pre-write")}async function M(a){(0,e.sm)().prepare("DELETE FROM key_value WHERE namespace = 'modelAliases' AND key = ?").run(a),j("pre-write")}async function N(a){let b=(0,e.sm)();if(a){let c=b.prepare("SELECT value FROM key_value WHERE namespace = 'mitmAlias' AND key = ?").get(a);return c?JSON.parse(c.value):{}}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'mitmAlias'").all(),d={};for(let a of c)d[a.key]=JSON.parse(a.value);return d}async function O(a,b){(0,e.sm)().prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('mitmAlias', ?, ?)").run(a,JSON.stringify(b||{})),j("pre-write")}async function P(a){let b=(0,e.sm)();if(a){let c=b.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);return c?JSON.parse(c.value):[]}let c=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),d={};for(let a of c)d[a.key]=JSON.parse(a.value);return d}async function Q(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'customModels'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function R(a,b,c){let d=(0,e.sm)(),f=d.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a),g=f?JSON.parse(f.value):[],h=g.find(a=>a.id===b);if(h)return h;let i={id:b,name:c||b};return g.push(i),d.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('customModels', ?, ?)").run(a,JSON.stringify(g)),j("pre-write"),i}async function S(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT value FROM key_value WHERE namespace = 'customModels' AND key = ?").get(a);if(!d)return!1;let f=JSON.parse(d.value),g=f.length,h=f.filter(a=>a.id!==b);return h.length!==g&&(0===h.length?c.prepare("DELETE FROM key_value WHERE namespace = 'customModels' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'customModels' AND key = ?").run(JSON.stringify(h),a),j("pre-write"),!0)}async function T(){return(0,e.sm)().prepare("SELECT data FROM combos ORDER BY name").all().map(a=>JSON.parse(a.data))}async function U(a){let b=(0,e.sm)().prepare("SELECT data FROM combos WHERE id = ?").get(a);return b?JSON.parse(b.data):null}async function V(a){let b=(0,e.sm)().prepare("SELECT data FROM combos WHERE name = ?").get(a);return b?JSON.parse(b.data):null}async function W(a){let b=(0,e.sm)(),c=new Date().toISOString(),f={id:(0,d.A)(),name:a.name,models:a.models||[],strategy:a.strategy||"priority",config:a.config||{},createdAt:c,updatedAt:c};return b.prepare("INSERT INTO combos (id, name, data, created_at, updated_at) VALUES (?, ?, ?, ?, ?)").run(f.id,f.name,JSON.stringify(f),c,c),j("pre-write"),f}async function X(a,b){let c=(0,e.sm)(),d=c.prepare("SELECT data FROM combos WHERE id = ?").get(a);if(!d)return null;let f={...JSON.parse(d.data),...b,updatedAt:new Date().toISOString()};return c.prepare("UPDATE combos SET name = ?, data = ?, updated_at = ? WHERE id = ?").run(f.name,JSON.stringify(f),f.updatedAt,a),j("pre-write"),f}async function Y(a){return 0!==(0,e.sm)().prepare("DELETE FROM combos WHERE id = ?").run(a).changes&&(j("pre-write"),!0)}async function Z(){return(0,e.sm)().prepare("SELECT * FROM api_keys ORDER BY created_at").all().map(e.kB)}async function $(a,b){if(!b)throw Error("machineId is required");let f=(0,e.sm)(),g=new Date().toISOString(),{generateApiKeyWithMachine:h}=await c.e(1362).then(c.bind(c,41362)),i=h(b),k={id:(0,d.A)(),name:a,key:i.key,machineId:b,createdAt:g};return f.prepare("INSERT INTO api_keys (id, name, key, machine_id, created_at) VALUES (?, ?, ?, ?, ?)").run(k.id,k.name,k.key,k.machineId,k.createdAt),j("pre-write"),k}async function _(a){return 0!==(0,e.sm)().prepare("DELETE FROM api_keys WHERE id = ?").run(a).changes&&(j("pre-write"),!0)}async function aa(a){return!!(0,e.sm)().prepare("SELECT 1 FROM api_keys WHERE key = ?").get(a)}async function ab(a){if(!a)return null;let b=(0,e.sm)().prepare("SELECT id, name, machine_id FROM api_keys WHERE key = ?").get(a);return b?{id:b.id,name:b.name,machineId:b.machine_id}:null}var ac=c(29485);async function ad(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'settings'").all(),b={cloudEnabled:!1,stickyRoundRobinLimit:3,requireLogin:!0};for(let c of a)b[c.key]=JSON.parse(c.value);return b}async function ae(a){let b=(0,e.sm)(),c=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('settings', ?, ?)");return b.transaction(()=>{for(let[b,d]of Object.entries(a))c.run(b,JSON.stringify(d))})(),j("pre-write"),ad()}async function af(){return!0===(await ad()).cloudEnabled}async function ag(){let a=(0,e.sm)().prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),b={};for(let c of a)b[c.key]=JSON.parse(c.value);let{getDefaultPricing:d}=await c.e(6599).then(c.bind(c,6599)),f=d(),g={};for(let[a,c]of Object.entries(f))if(g[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))g[a][c]=g[a][c]?{...g[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(g[a])for(let[b,d]of Object.entries(c))g[a][b]||(g[a][b]=d);else g[a]={...c};return g}async function ah(a,b){let d=await ag();if(d[a]?.[b])return d[a][b];let{PROVIDER_ID_TO_ALIAS:e}=await Promise.resolve().then(c.bind(c,29485)),f=e[a];if(f&&d[f])return d[f][b]||null;let g=a?.replace(/-cn$/,"");return g&&g!==a&&d[g]&&d[g][b]||null}async function ai(a){let b=(0,e.sm)(),c=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('pricing', ?, ?)"),d=b.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),f={};for(let a of d)f[a.key]=JSON.parse(a.value);b.transaction(()=>{for(let[b,d]of Object.entries(a))c.run(b,JSON.stringify({...f[b]||{},...d}))})(),j("pre-write");let g={};for(let a of b.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all())g[a.key]=JSON.parse(a.value);return g}async function aj(a,b){let c=(0,e.sm)();if(b){let d=c.prepare("SELECT value FROM key_value WHERE namespace = 'pricing' AND key = ?").get(a);if(d){let e=JSON.parse(d.value);delete e[b],0===Object.keys(e).length?c.prepare("DELETE FROM key_value WHERE namespace = 'pricing' AND key = ?").run(a):c.prepare("UPDATE key_value SET value = ? WHERE namespace = 'pricing' AND key = ?").run(JSON.stringify(e),a)}}else c.prepare("DELETE FROM key_value WHERE namespace = 'pricing' AND key = ?").run(a);j("pre-write");let d=c.prepare("SELECT key, value FROM key_value WHERE namespace = 'pricing'").all(),f={};for(let a of d)f[a.key]=JSON.parse(a.value);return f}async function ak(){return(0,e.sm)().prepare("DELETE FROM key_value WHERE namespace = 'pricing'").run(),j("pre-write"),{}}let al={global:null,providers:{},combos:{},keys:{}},am=Object.entries(ac.PROVIDER_ID_TO_ALIAS).reduce((a,[b,c])=>(c&&(a[c]=b),a[b]=b,a),{});function an(a){return"string"!=typeof a?a:am[a]||a}function ao(a){if(!a)return null;if("object"==typeof a&&a.type)return a;if("string"!=typeof a)return null;try{let b=new URL(a);return{type:b.protocol.replace(":","").replace("//","")||"http",host:b.hostname,port:b.port||("socks5:"===b.protocol?"1080":"8080"),username:b.username||"",password:b.password||""}}catch{let b=a.split(":");return{type:"http",host:b[0]||a,port:b[1]||"8080",username:"",password:""}}}async function ap(){let a=(0,e.sm)(),b=a.prepare("SELECT key, value FROM key_value WHERE namespace = 'proxyConfig'").all(),c={...al};for(let a of b)c[a.key]=JSON.parse(a.value);let d=!1;if(c.global&&"string"==typeof c.global&&(c.global=ao(c.global),d=!0),c.providers)for(let[a,b]of Object.entries(c.providers))"string"==typeof b&&(c.providers[a]=ao(b),d=!0);if(d){let b=a.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)");void 0!==c.global&&b.run("global",JSON.stringify(c.global)),c.providers&&b.run("providers",JSON.stringify(c.providers))}return c}async function aq(a,b){let c=await ap();if("global"===a)return c.global||null;let d=c[a+"s"]||c[a]||{};return(b?d[b]:null)||null}async function ar(a,b,c){let d=(0,e.sm)(),f=await ap();if("global"===a)f.global=c||null,d.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', 'global', ?)").run(JSON.stringify(f.global));else{let e=a+"s";f[e]||(f[e]={}),c?f[e][b]=c:delete f[e][b],d.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)").run(e,JSON.stringify(f[e]))}return j("pre-write"),f}async function as(a,b){return ar(a,b,null)}async function at(a){let b=await ap();if(a&&b.keys?.[a])return{proxy:b.keys[a],level:"key",levelId:a};let c=(0,e.sm)(),d=c.prepare("SELECT provider FROM provider_connections WHERE id = ?").get(a);if(d){if(b.combos&&Object.keys(b.combos).length>0){for(let a of c.prepare("SELECT id, data FROM combos").all())if(b.combos[a.id])try{if((JSON.parse(a.data).models||[]).some(a=>(function(a){if(a&&"string"==typeof a.provider)return an(a.provider);let b="string"==typeof a?a:"string"==typeof a?.model?a.model:null;if(!b)return null;let[c]=b.split("/",1);return c?an(c):null})(a)===d.provider))return{proxy:b.combos[a.id],level:"combo",levelId:a.id}}catch{}}if(b.providers?.[d.provider])return{proxy:b.providers[d.provider],level:"provider",levelId:d.provider}}return b.global?{proxy:b.global,level:"global",levelId:null}:{proxy:null,level:"direct",levelId:null}}async function au(a){if(void 0!==a.level)return ar(a.level,a.id||null,a.proxy);let b=(0,e.sm)(),c=await ap(),d=b.prepare("INSERT OR REPLACE INTO key_value (namespace, key, value) VALUES ('proxyConfig', ?, ?)");return b.transaction(()=>{for(let b of(void 0!==a.global&&(c.global=a.global||null,d.run("global",JSON.stringify(c.global))),["providers","combos","keys"]))if(a[b]){for(let[d,e]of(c[b]={...c[b]||{},...a[b]},Object.entries(c[b])))e||delete c[b][d];d.run(b,JSON.stringify(c[b]))}})(),j("pre-write"),c}},29485:(a,b,c)=>{c.d(b,{PROVIDER_ID_TO_ALIAS:()=>f,ux:()=>g,vq:()=>e});var d=c(28108);let e=(0,d.oD)(),f=(0,d.Qv)();function g(a,b){let c=e[a];if(!c)return null;let d=c.find(a=>a.id===b);return d?.targetFormat||null}}};
@@ -1 +1 @@
1
- exports.id=4436,exports.ids=[4436],exports.modules={5643:(a,b,c)=>{Promise.resolve().then(c.bind(c,63869))},63869:(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/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js\" 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/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},65315:(a,b,c)=>{Promise.resolve().then(c.bind(c,88239))},74864:(a,b,c)=>{"use strict";c.d(b,{D1:()=>e});var d=c(22513);async function e(){return await (0,d.Xj)()}},88239:(a,b,c)=>{"use strict";c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c(81220),h=c(64755),i=c(16103),j=c(18741);let k=process.env.NEXT_PUBLIC_CLOUD_URL,l=15e3;function m({machineId:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)([]),[m,q]=(0,e.useState)(!0),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(""),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)([]),[z,A]=(0,e.useState)(null),[B,C]=(0,e.useState)(!1),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(null),[L,M]=(0,e.useState)(""),[N,O]=(0,e.useState)(null),{copied:P,copy:Q}=(0,i.C)(),R=(0,e.useMemo)(()=>{let a=x.filter(a=>!a.type),b=x.filter(a=>"embedding"===a.type),c=x.filter(a=>"image"===a.type),d=x.filter(a=>"rerank"===a.type),e=x.filter(a=>"audio"===a.type&&"transcription"===a.subtype);return{chat:a,embeddings:b,images:c,rerank:d,audioTranscription:e,audioSpeech:x.filter(a=>"audio"===a.type&&"speech"===a.subtype),moderation:x.filter(a=>"moderation"===a.type)}},[x]),S=(0,e.useMemo)(()=>Object.entries(j.Q2).map(([a,b])=>{let c=f.filter(b=>b.provider===a),d=c.filter(a=>!1!==a.isActive&&("active"===a.testStatus||"success"===a.testStatus||"unknown"===a.testStatus)).length,e=c.filter(a=>!1!==a.isActive&&("error"===a.testStatus||"expired"===a.testStatus||"unavailable"===a.testStatus)).length;return{id:a,provider:b,total:c.length,connected:d,errors:e}}),[f]),T=async(a,b=l)=>{let c=new AbortController,d=setTimeout(()=>c.abort(),b);try{let b=await fetch("/api/sync/cloud",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:a}),signal:c.signal}),d=await b.json().catch(()=>({}));return{ok:b.ok,status:b.status,data:d}}catch(a){if(a?.name==="AbortError")return{ok:!1,status:408,data:{error:"Cloud request timeout"}};return{ok:!1,status:500,data:{error:a.message||"Cloud request failed"}}}finally{clearTimeout(d)}},U=async()=>{try{let[a,b]=await Promise.all([fetch("/api/keys"),fetch("/api/providers")]),[d,e]=await Promise.all([a.json(),b.json()]);a.ok&&c(d.keys||[]),b.ok&&g(e.connections||[])}catch(a){console.log("Error fetching data:",a)}finally{q(!1)}},V=a=>{a?E(!0):G(!0)},W=async()=>{I(!0),M("syncing");try{let{ok:a,data:b}=await T("enable");a?(M("verifying"),b.verified?(C(!0),K({type:"success",message:"Cloud Proxy connected and verified!"})):(C(!0),K({type:"warning",message:b.verifyError||"Connected but verification failed"})),E(!1),b.createdKey&&await U()):K({type:"error",message:b.error||"Failed to enable cloud"})}catch(a){K({type:"error",message:a.message})}finally{I(!1),M("")}},X=async()=>{I(!0),M("syncing");try{await T("sync"),M("disabling");let{ok:a,data:b}=await T("disable");a?(C(!1),K({type:"success",message:"Cloud disabled"}),G(!1)):K({type:"error",message:b.error||"Failed to disable cloud"})}catch(a){console.log("Error disabling cloud:",a),K({type:"error",message:"Failed to disable cloud"})}finally{I(!1),M("")}},Y=async()=>{if(t.trim())try{let a=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),b=await a.json();a.ok&&(w(b.key),await U(),u(""),s(!1))}catch(a){console.log("Error creating key:",a)}},Z=async a=>{if(confirm("Delete this API key?"))try{(await fetch(`/api/keys/${a}`,{method:"DELETE"})).ok&&c(b.filter(b=>b.id!==a))}catch(a){console.log("Error deleting key:",a)}},[$,_]=(0,e.useState)("/v1"),aa=`${k}/v1`;if(m)return(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsx)(h.Qv,{}),(0,d.jsx)(h.Qv,{})]});let ab=B?aa:$;return(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsxs)(h.Zp,{className:"",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"API Endpoint"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:B?"Using Cloud Proxy":"Using Local Server"}),a&&(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Machine ID: ",a.slice(0,8),"..."]})]}),(0,d.jsx)("div",{className:"flex items-center gap-2",children:B?(0,d.jsx)(h.$n,{size:"sm",variant:"secondary",icon:"cloud_off",onClick:()=>V(!1),disabled:H,className:"bg-red-500/10! text-red-500! hover:bg-red-500/20! border-red-500/30!",children:"Disable Cloud"}):(0,d.jsx)(h.$n,{variant:"primary",icon:"cloud_upload",onClick:()=>V(!0),disabled:H,className:"bg-linear-to-r from-primary to-blue-500 hover:from-primary-hover hover:to-blue-600",children:"Enable Cloud"})})]}),(0,d.jsxs)("div",{className:"flex gap-2 mb-3",children:[(0,d.jsx)(h.pd,{value:ab,readOnly:!0,className:`flex-1 font-mono text-sm ${B?"animate-border-glow":""}`}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"endpoint_url"===P?"check":"content_copy",onClick:()=>Q(ab,"endpoint_url"),children:"endpoint_url"===P?"Copied!":"Copy"})]})]}),(0,d.jsx)(h.Zp,{children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"Quick Start"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"First-time setup checklist for API clients and IDE tools."})]}),(0,d.jsxs)("ol",{className:"grid grid-cols-1 md:grid-cols-2 gap-3 text-sm",children:[(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-3",children:[(0,d.jsx)("span",{className:"font-semibold",children:"1. Create API key"}),(0,d.jsx)("p",{className:"text-text-muted mt-1",children:"Generate one key per environment to isolate usage and revoke safely."})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-3",children:[(0,d.jsx)("span",{className:"font-semibold",children:"2. Connect provider account"}),(0,d.jsx)("p",{className:"text-text-muted mt-1",children:"Configure providers in Dashboard and validate with Test Connection."})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-3",children:[(0,d.jsx)("span",{className:"font-semibold",children:"3. Use endpoint"}),(0,d.jsxs)("p",{className:"text-text-muted mt-1",children:["Point clients to ",(0,d.jsx)("code",{children:ab})," and send requests to"," ",(0,d.jsx)("code",{children:"/chat/completions"}),"."]})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-3",children:[(0,d.jsx)("span",{className:"font-semibold",children:"4. Monitor usage"}),(0,d.jsx)("p",{className:"text-text-muted mt-1",children:"Track requests, tokens, errors, and cost in Usage and Request Logger."})]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:[{label:"Documentation",href:"/docs"},{label:"OpenAI API compatibility",href:"/docs#api-reference"},{label:"Cherry/Codex compatibility",href:"/docs#client-compatibility"},{label:"Report issue",href:"https://github.com/decolua/omniroute/issues",external:!0}].map(a=>(0,d.jsxs)("a",{href:a.href,target:a.external?"_blank":void 0,rel:a.external?"noopener noreferrer":void 0,className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium border border-border text-text-muted hover:text-text-main hover:bg-bg-subtle transition-colors",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:a.external?"open_in_new":"arrow_forward"}),a.label]},a.href))})]})}),(0,d.jsxs)(h.Zp,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"API Keys"}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>s(!0),children:"Create Key"})]}),0===b.length?(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,d.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No API keys yet"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to get started"}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>s(!0),children:"Create Key"})]}):(0,d.jsx)("div",{className:"flex flex-col",children:b.map(a=>(0,d.jsxs)("div",{className:"group flex items-center justify-between py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0",children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono",children:a.key}),(0,d.jsx)("button",{onClick:()=>Q(a.key,a.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",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:P===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString()]})]}),(0,d.jsx)("button",{onClick:()=>Z(a.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-0 group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]},a.id))})]}),(0,d.jsxs)(h.Zp,{children:[(0,d.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"Providers Overview"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:[S.filter(a=>a.total>0).length," configured of"," ",S.length," available providers"]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3",children:S.map(a=>(0,d.jsx)(n,{item:a,onClick:()=>O(a)},a.id))})]}),(0,d.jsxs)(h.Zp,{children:[(0,d.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"Available Endpoints"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:[x.length," models across"," ",[R.chat,R.embeddings,R.images,R.rerank,R.audioTranscription,R.audioSpeech,R.moderation].filter(a=>a.length>0).length," ","endpoints"]})]})}),(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)(p,{icon:"chat",iconColor:"text-blue-500",iconBg:"bg-blue-500/10",title:"Chat Completions",path:"/v1/chat/completions",description:"Streaming & non-streaming chat with all providers",models:R.chat,expanded:"chat"===z,onToggle:()=>A("chat"===z?null:"chat"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"data_array",iconColor:"text-emerald-500",iconBg:"bg-emerald-500/10",title:"Embeddings",path:"/v1/embeddings",description:"Text embeddings for search & RAG pipelines",models:R.embeddings,expanded:"embeddings"===z,onToggle:()=>A("embeddings"===z?null:"embeddings"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"image",iconColor:"text-purple-500",iconBg:"bg-purple-500/10",title:"Image Generation",path:"/v1/images/generations",description:"Generate images from text prompts",models:R.images,expanded:"images"===z,onToggle:()=>A("images"===z?null:"images"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"sort",iconColor:"text-amber-500",iconBg:"bg-amber-500/10",title:"Rerank",path:"/v1/rerank",description:"Rerank documents by relevance to a query",models:R.rerank,expanded:"rerank"===z,onToggle:()=>A("rerank"===z?null:"rerank"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"mic",iconColor:"text-rose-500",iconBg:"bg-rose-500/10",title:"Audio Transcription",path:"/v1/audio/transcriptions",description:"Transcribe audio files to text (Whisper)",models:R.audioTranscription,expanded:"audioTranscription"===z,onToggle:()=>A("audioTranscription"===z?null:"audioTranscription"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"record_voice_over",iconColor:"text-cyan-500",iconBg:"bg-cyan-500/10",title:"Text to Speech",path:"/v1/audio/speech",description:"Convert text to natural-sounding speech",models:R.audioSpeech,expanded:"audioSpeech"===z,onToggle:()=>A("audioSpeech"===z?null:"audioSpeech"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"shield",iconColor:"text-orange-500",iconBg:"bg-orange-500/10",title:"Moderations",path:"/v1/moderations",description:"Content moderation and safety classification",models:R.moderation,expanded:"moderation"===z,onToggle:()=>A("moderation"===z?null:"moderation"),copy:Q,copied:P,baseUrl:ab})]})]}),!1,(0,d.jsx)(h.aF,{isOpen:D,title:"Enable Cloud Proxy",onClose:()=>E(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200 font-medium mb-2",children:"What you will get"}),(0,d.jsxs)("ul",{className:"text-sm text-blue-700 dark:text-blue-300 space-y-1",children:[(0,d.jsx)("li",{children:"• Access your API from anywhere in the world"}),(0,d.jsx)("li",{children:"• Share endpoint with your team easily"}),(0,d.jsx)("li",{children:"• No need to open ports or configure firewall"}),(0,d.jsx)("li",{children:"• Fast global edge network"})]})]}),(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 font-medium mb-1",children:"Note"}),(0,d.jsxs)("ul",{className:"text-sm text-yellow-700 dark:text-yellow-300 space-y-1",children:[(0,d.jsx)("li",{children:"• Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted."}),(0,d.jsx)("li",{children:"• Cloud is currently unstable with Claude Code OAuth in some cases."})]})]}),H&&(0,d.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-primary/10 border border-primary/30 rounded-lg",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-primary",children:"progress_activity"}),(0,d.jsx)("div",{className:"flex-1",children:(0,d.jsxs)("p",{className:"text-sm font-medium text-primary",children:["syncing"===L&&"Syncing data to cloud...","verifying"===L&&"Verifying connection..."]})})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:W,fullWidth:!0,disabled:H,children:H?(0,d.jsxs)("span",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"syncing"===L?"Syncing...":"Verifying..."]}):"Enable Cloud"}),(0,d.jsx)(h.$n,{onClick:()=>E(!1),variant:"ghost",fullWidth:!0,disabled:H,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:r,title:"Create API Key",onClose:()=>{s(!1),u("")},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(h.pd,{label:"Key Name",value:t,onChange:a=>u(a.target.value),placeholder:"Production Key"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:Y,fullWidth:!0,disabled:!t.trim(),children:"Create"}),(0,d.jsx)(h.$n,{onClick:()=>{s(!1),u("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:!!v,title:"API Key Created",onClose:()=>w(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:v||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"created_key"===P?"check":"content_copy",onClick:()=>Q(v,"created_key"),children:"created_key"===P?"Copied!":"Copy"})]}),(0,d.jsx)(h.$n,{onClick:()=>w(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(h.aF,{isOpen:F,title:"Disable Cloud Proxy",onClose:()=>!H&&G(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-red-600 dark:text-red-400",children:"warning"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-red-800 dark:text-red-200 font-medium mb-1",children:"Warning"}),(0,d.jsx)("p",{className:"text-sm text-red-700 dark:text-red-300",children:"All auth sessions will be deleted from cloud."})]})]})}),H&&(0,d.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-primary/10 border border-primary/30 rounded-lg",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-primary",children:"progress_activity"}),(0,d.jsx)("div",{className:"flex-1",children:(0,d.jsxs)("p",{className:"text-sm font-medium text-primary",children:["syncing"===L&&"Syncing latest data...","disabling"===L&&"Disabling cloud..."]})})]}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Are you sure you want to disable cloud proxy?"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:X,fullWidth:!0,disabled:H,className:"bg-red-500! hover:bg-red-600! text-white!",children:H?(0,d.jsxs)("span",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"syncing"===L?"Syncing...":"Disabling..."]}):"Disable Cloud"}),(0,d.jsx)(h.$n,{onClick:()=>G(!1),variant:"ghost",fullWidth:!0,disabled:H,children:"Cancel"})]})]})}),N&&(0,d.jsx)(o,{provider:N,models:x,copy:Q,copied:P,onClose:()=>O(null)})]})}function n({item:a,onClick:b}){let[c,f]=(0,e.useState)(!1),h=a.errors>0?"text-red-500":a.connected>0?"text-green-500":"text-text-muted";return(0,d.jsx)("div",{className:"border border-border rounded-lg p-3 hover:bg-surface/40 transition-colors cursor-pointer",onClick:b,role:"button",tabIndex:0,onKeyDown:a=>"Enter"===a.key&&b?.(),children:(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center",style:{backgroundColor:`${a.provider.color||"#888"}15`},children:c?(0,d.jsx)("span",{className:"text-[10px] font-bold",style:{color:a.provider.color||"#888"},children:a.provider.textIcon||a.provider.id.slice(0,2).toUpperCase()}):(0,d.jsx)(g.default,{src:`/providers/${a.provider.id}.png`,alt:a.provider.name,width:26,height:26,className:"object-contain rounded-lg",sizes:"26px",onError:()=>f(!0)})}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"text-sm font-semibold truncate",children:a.provider.name}),(0,d.jsx)("p",{className:`text-xs ${h}`,children:0===a.total?"Not configured":`${a.connected} active \xb7 ${a.errors} error`})]}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["#",a.total]})]})})}function o({provider:a,models:b,copy:c,copied:f,onClose:g}){let i=a.provider.alias||a.id,j=(0,e.useMemo)(()=>b.filter(b=>b.owned_by===i||b.owned_by===a.id),[b,i,a.id]),k=j.filter(a=>!a.type),l=j.filter(a=>"embedding"===a.type),m=j.filter(a=>"image"===a.type),n=(a,b,e)=>0===e.length?null:(0,d.jsxs)("div",{className:"mb-4",children:[(0,d.jsxs)("h4",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:b}),a," (",e.length,")"]}),(0,d.jsx)("div",{className:"flex flex-col gap-1",children:e.map(a=>{let b=`modal-${a.id}`;return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg hover:bg-surface/60 group",children:[(0,d.jsx)("code",{className:"text-sm font-mono flex-1 truncate",children:a.id}),a.custom&&(0,d.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-primary/10 text-primary",children:"custom"}),(0,d.jsx)("button",{onClick:()=>c(a.id,b),className:"p-1 hover:bg-sidebar rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-opacity",title:"Copy model ID",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:f===b?"check":"content_copy"})})]},a.id)})})]});return(0,d.jsx)(h.aF,{isOpen:!0,onClose:g,title:`${a.provider.name} — Models`,children:(0,d.jsx)("div",{className:"max-h-[60vh] overflow-y-auto",children:0===j.length?(0,d.jsx)("p",{className:"text-sm text-text-muted py-4 text-center",children:"No models available for this provider."}):(0,d.jsxs)(d.Fragment,{children:[n("Chat","chat",k),n("Embedding","data_array",l),n("Image","image",m)]})})})}function p({icon:a,iconColor:b,iconBg:c,title:f,path:g,description:h,models:i,expanded:k,onToggle:l,copy:m,copied:n,baseUrl:o}){let p=(0,e.useMemo)(()=>{let a={};for(let b of i){let c=b.owned_by||"unknown";a[c]||(a[c]=[]),a[c].push(b)}return Object.entries(a).sort((a,b)=>b[1].length-a[1].length)},[i]),q=a=>j.Q2[a]||(0,j.zt)(a),r=`endpoint_${g}`;return(0,d.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden",children:[(0,d.jsxs)("button",{onClick:l,className:"w-full flex items-center gap-3 p-4 hover:bg-surface/50 transition-colors text-left",children:[(0,d.jsx)("div",{className:`flex items-center justify-center size-10 rounded-lg ${c} shrink-0`,children:(0,d.jsx)("span",{className:`material-symbols-outlined text-xl ${b}`,children:a})}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"font-semibold text-sm",children:f}),(0,d.jsxs)("span",{className:"text-xs px-2 py-0.5 rounded-full bg-surface text-text-muted font-medium",children:[i.length," ",1===i.length?"model":"models"]})]}),(0,d.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:h})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-lg transition-transform ${k?"rotate-180":""}`,children:"expand_more"})]}),k&&(0,d.jsxs)("div",{className:"border-t border-border px-4 pb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-3 mb-3",children:[(0,d.jsxs)("code",{className:"flex-1 text-xs font-mono text-text-muted bg-surface/80 px-3 py-1.5 rounded-lg truncate",children:[o.replace(/\/v1$/,""),g]}),(0,d.jsx)("button",{onClick:()=>m(`${o.replace(/\/v1$/,"")}${g}`,r),className:"p-1.5 hover:bg-surface rounded-lg text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:n===r?"check":"content_copy"})})]}),(0,d.jsx)("div",{className:"flex flex-col gap-2",children:p.map(([a,b])=>(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,d.jsx)("div",{className:"size-2.5 rounded-full shrink-0",style:{backgroundColor:q(a)?.color||"#888"}}),(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main",children:q(a)?.name||a}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["(",b.length,")"]})]}),(0,d.jsx)("div",{className:"ml-5 flex flex-wrap gap-1.5",children:b.map(a=>(0,d.jsx)("span",{className:"text-xs px-2 py-0.5 rounded-md bg-surface/80 text-text-muted font-mono",title:a.id,children:a.root||a.id.split("/").pop()},a.id))})]},a))})]})]})}m.propTypes={machineId:f.string.isRequired},n.propTypes={item:f.shape({id:f.string.isRequired,provider:f.shape({id:f.string.isRequired,name:f.string.isRequired,color:f.string,textIcon:f.string}).isRequired,total:f.number.isRequired,connected:f.number.isRequired,errors:f.number.isRequired}).isRequired,onClick:f.func},o.propTypes={provider:f.object.isRequired,models:f.array.isRequired,copy:f.func.isRequired,copied:f.string,onClose:f.func.isRequired},p.propTypes={icon:f.string.isRequired,iconColor:f.string.isRequired,iconBg:f.string.isRequired,title:f.string.isRequired,path:f.string.isRequired,description:f.string.isRequired,models:f.array.isRequired,expanded:f.bool.isRequired,onToggle:f.func.isRequired,copy:f.func.isRequired,copied:f.string,baseUrl:f.string.isRequired}}};
1
+ exports.id=4436,exports.ids=[4436],exports.modules={5643:(a,b,c)=>{Promise.resolve().then(c.bind(c,63869))},63869:(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/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js\" 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/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},65315:(a,b,c)=>{Promise.resolve().then(c.bind(c,88239))},74864:(a,b,c)=>{"use strict";c.d(b,{D1:()=>e});var d=c(22513);async function e(){return await (0,d.Xj)()}},88239:(a,b,c)=>{"use strict";c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c(81220),h=c(64755),i=c(16103),j=c(41916);let k=process.env.NEXT_PUBLIC_CLOUD_URL,l=15e3;function m({machineId:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)([]),[m,q]=(0,e.useState)(!0),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(""),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)([]),[z,A]=(0,e.useState)(null),[B,C]=(0,e.useState)(!1),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(null),[L,M]=(0,e.useState)(""),[N,O]=(0,e.useState)(null),{copied:P,copy:Q}=(0,i.C)(),R=(0,e.useMemo)(()=>{let a=x.filter(a=>!a.type),b=x.filter(a=>"embedding"===a.type),c=x.filter(a=>"image"===a.type),d=x.filter(a=>"rerank"===a.type),e=x.filter(a=>"audio"===a.type&&"transcription"===a.subtype);return{chat:a,embeddings:b,images:c,rerank:d,audioTranscription:e,audioSpeech:x.filter(a=>"audio"===a.type&&"speech"===a.subtype),moderation:x.filter(a=>"moderation"===a.type)}},[x]),S=(0,e.useMemo)(()=>Object.entries(j.Q2).map(([a,b])=>{let c=f.filter(b=>b.provider===a),d=c.filter(a=>!1!==a.isActive&&("active"===a.testStatus||"success"===a.testStatus||"unknown"===a.testStatus)).length,e=c.filter(a=>!1!==a.isActive&&("error"===a.testStatus||"expired"===a.testStatus||"unavailable"===a.testStatus)).length;return{id:a,provider:b,total:c.length,connected:d,errors:e}}),[f]),T=async(a,b=l)=>{let c=new AbortController,d=setTimeout(()=>c.abort(),b);try{let b=await fetch("/api/sync/cloud",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:a}),signal:c.signal}),d=await b.json().catch(()=>({}));return{ok:b.ok,status:b.status,data:d}}catch(a){if(a?.name==="AbortError")return{ok:!1,status:408,data:{error:"Cloud request timeout"}};return{ok:!1,status:500,data:{error:a.message||"Cloud request failed"}}}finally{clearTimeout(d)}},U=async()=>{try{let[a,b]=await Promise.all([fetch("/api/keys"),fetch("/api/providers")]),[d,e]=await Promise.all([a.json(),b.json()]);a.ok&&c(d.keys||[]),b.ok&&g(e.connections||[])}catch(a){console.log("Error fetching data:",a)}finally{q(!1)}},V=a=>{a?E(!0):G(!0)},W=async()=>{I(!0),M("syncing");try{let{ok:a,data:b}=await T("enable");a?(M("verifying"),b.verified?(C(!0),K({type:"success",message:"Cloud Proxy connected and verified!"})):(C(!0),K({type:"warning",message:b.verifyError||"Connected but verification failed"})),E(!1),b.createdKey&&await U()):K({type:"error",message:b.error||"Failed to enable cloud"})}catch(a){K({type:"error",message:a.message})}finally{I(!1),M("")}},X=async()=>{I(!0),M("syncing");try{await T("sync"),M("disabling");let{ok:a,data:b}=await T("disable");a?(C(!1),K({type:"success",message:"Cloud disabled"}),G(!1)):K({type:"error",message:b.error||"Failed to disable cloud"})}catch(a){console.log("Error disabling cloud:",a),K({type:"error",message:"Failed to disable cloud"})}finally{I(!1),M("")}},Y=async()=>{if(t.trim())try{let a=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),b=await a.json();a.ok&&(w(b.key),await U(),u(""),s(!1))}catch(a){console.log("Error creating key:",a)}},Z=async a=>{if(confirm("Delete this API key?"))try{(await fetch(`/api/keys/${a}`,{method:"DELETE"})).ok&&c(b.filter(b=>b.id!==a))}catch(a){console.log("Error deleting key:",a)}},[$,_]=(0,e.useState)("/v1"),aa=`${k}/v1`;if(m)return(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsx)(h.Qv,{}),(0,d.jsx)(h.Qv,{})]});let ab=B?aa:$;return(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsxs)(h.Zp,{className:"",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"API Endpoint"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:B?"Using Cloud Proxy":"Using Local Server"}),a&&(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Machine ID: ",a.slice(0,8),"..."]})]}),(0,d.jsx)("div",{className:"flex items-center gap-2",children:B?(0,d.jsx)(h.$n,{size:"sm",variant:"secondary",icon:"cloud_off",onClick:()=>V(!1),disabled:H,className:"bg-red-500/10! text-red-500! hover:bg-red-500/20! border-red-500/30!",children:"Disable Cloud"}):(0,d.jsx)(h.$n,{variant:"primary",icon:"cloud_upload",onClick:()=>V(!0),disabled:H,className:"bg-linear-to-r from-primary to-blue-500 hover:from-primary-hover hover:to-blue-600",children:"Enable Cloud"})})]}),(0,d.jsxs)("div",{className:"flex gap-2 mb-3",children:[(0,d.jsx)(h.pd,{value:ab,readOnly:!0,className:`flex-1 font-mono text-sm ${B?"animate-border-glow":""}`}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"endpoint_url"===P?"check":"content_copy",onClick:()=>Q(ab,"endpoint_url"),children:"endpoint_url"===P?"Copied!":"Copy"})]})]}),(0,d.jsx)(h.Zp,{children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"Quick Start"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"First-time setup checklist for API clients and IDE tools."})]}),(0,d.jsxs)("ol",{className:"grid grid-cols-1 md:grid-cols-2 gap-3 text-sm",children:[(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-3",children:[(0,d.jsx)("span",{className:"font-semibold",children:"1. Create API key"}),(0,d.jsx)("p",{className:"text-text-muted mt-1",children:"Generate one key per environment to isolate usage and revoke safely."})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-3",children:[(0,d.jsx)("span",{className:"font-semibold",children:"2. Connect provider account"}),(0,d.jsx)("p",{className:"text-text-muted mt-1",children:"Configure providers in Dashboard and validate with Test Connection."})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-3",children:[(0,d.jsx)("span",{className:"font-semibold",children:"3. Use endpoint"}),(0,d.jsxs)("p",{className:"text-text-muted mt-1",children:["Point clients to ",(0,d.jsx)("code",{children:ab})," and send requests to"," ",(0,d.jsx)("code",{children:"/chat/completions"}),"."]})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-3",children:[(0,d.jsx)("span",{className:"font-semibold",children:"4. Monitor usage"}),(0,d.jsx)("p",{className:"text-text-muted mt-1",children:"Track requests, tokens, errors, and cost in Usage and Request Logger."})]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:[{label:"Documentation",href:"/docs"},{label:"OpenAI API compatibility",href:"/docs#api-reference"},{label:"Cherry/Codex compatibility",href:"/docs#client-compatibility"},{label:"Report issue",href:"https://github.com/decolua/omniroute/issues",external:!0}].map(a=>(0,d.jsxs)("a",{href:a.href,target:a.external?"_blank":void 0,rel:a.external?"noopener noreferrer":void 0,className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium border border-border text-text-muted hover:text-text-main hover:bg-bg-subtle transition-colors",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:a.external?"open_in_new":"arrow_forward"}),a.label]},a.href))})]})}),(0,d.jsxs)(h.Zp,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"API Keys"}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>s(!0),children:"Create Key"})]}),0===b.length?(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,d.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No API keys yet"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to get started"}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>s(!0),children:"Create Key"})]}):(0,d.jsx)("div",{className:"flex flex-col",children:b.map(a=>(0,d.jsxs)("div",{className:"group flex items-center justify-between py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0",children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono",children:a.key}),(0,d.jsx)("button",{onClick:()=>Q(a.key,a.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",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:P===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString()]})]}),(0,d.jsx)("button",{onClick:()=>Z(a.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-0 group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]},a.id))})]}),(0,d.jsxs)(h.Zp,{children:[(0,d.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"Providers Overview"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:[S.filter(a=>a.total>0).length," configured of"," ",S.length," available providers"]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3",children:S.map(a=>(0,d.jsx)(n,{item:a,onClick:()=>O(a)},a.id))})]}),(0,d.jsxs)(h.Zp,{children:[(0,d.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"Available Endpoints"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:[x.length," models across"," ",[R.chat,R.embeddings,R.images,R.rerank,R.audioTranscription,R.audioSpeech,R.moderation].filter(a=>a.length>0).length," ","endpoints"]})]})}),(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)(p,{icon:"chat",iconColor:"text-blue-500",iconBg:"bg-blue-500/10",title:"Chat Completions",path:"/v1/chat/completions",description:"Streaming & non-streaming chat with all providers",models:R.chat,expanded:"chat"===z,onToggle:()=>A("chat"===z?null:"chat"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"data_array",iconColor:"text-emerald-500",iconBg:"bg-emerald-500/10",title:"Embeddings",path:"/v1/embeddings",description:"Text embeddings for search & RAG pipelines",models:R.embeddings,expanded:"embeddings"===z,onToggle:()=>A("embeddings"===z?null:"embeddings"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"image",iconColor:"text-purple-500",iconBg:"bg-purple-500/10",title:"Image Generation",path:"/v1/images/generations",description:"Generate images from text prompts",models:R.images,expanded:"images"===z,onToggle:()=>A("images"===z?null:"images"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"sort",iconColor:"text-amber-500",iconBg:"bg-amber-500/10",title:"Rerank",path:"/v1/rerank",description:"Rerank documents by relevance to a query",models:R.rerank,expanded:"rerank"===z,onToggle:()=>A("rerank"===z?null:"rerank"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"mic",iconColor:"text-rose-500",iconBg:"bg-rose-500/10",title:"Audio Transcription",path:"/v1/audio/transcriptions",description:"Transcribe audio files to text (Whisper)",models:R.audioTranscription,expanded:"audioTranscription"===z,onToggle:()=>A("audioTranscription"===z?null:"audioTranscription"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"record_voice_over",iconColor:"text-cyan-500",iconBg:"bg-cyan-500/10",title:"Text to Speech",path:"/v1/audio/speech",description:"Convert text to natural-sounding speech",models:R.audioSpeech,expanded:"audioSpeech"===z,onToggle:()=>A("audioSpeech"===z?null:"audioSpeech"),copy:Q,copied:P,baseUrl:ab}),(0,d.jsx)(p,{icon:"shield",iconColor:"text-orange-500",iconBg:"bg-orange-500/10",title:"Moderations",path:"/v1/moderations",description:"Content moderation and safety classification",models:R.moderation,expanded:"moderation"===z,onToggle:()=>A("moderation"===z?null:"moderation"),copy:Q,copied:P,baseUrl:ab})]})]}),!1,(0,d.jsx)(h.aF,{isOpen:D,title:"Enable Cloud Proxy",onClose:()=>E(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200 font-medium mb-2",children:"What you will get"}),(0,d.jsxs)("ul",{className:"text-sm text-blue-700 dark:text-blue-300 space-y-1",children:[(0,d.jsx)("li",{children:"• Access your API from anywhere in the world"}),(0,d.jsx)("li",{children:"• Share endpoint with your team easily"}),(0,d.jsx)("li",{children:"• No need to open ports or configure firewall"}),(0,d.jsx)("li",{children:"• Fast global edge network"})]})]}),(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 font-medium mb-1",children:"Note"}),(0,d.jsxs)("ul",{className:"text-sm text-yellow-700 dark:text-yellow-300 space-y-1",children:[(0,d.jsx)("li",{children:"• Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted."}),(0,d.jsx)("li",{children:"• Cloud is currently unstable with Claude Code OAuth in some cases."})]})]}),H&&(0,d.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-primary/10 border border-primary/30 rounded-lg",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-primary",children:"progress_activity"}),(0,d.jsx)("div",{className:"flex-1",children:(0,d.jsxs)("p",{className:"text-sm font-medium text-primary",children:["syncing"===L&&"Syncing data to cloud...","verifying"===L&&"Verifying connection..."]})})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:W,fullWidth:!0,disabled:H,children:H?(0,d.jsxs)("span",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"syncing"===L?"Syncing...":"Verifying..."]}):"Enable Cloud"}),(0,d.jsx)(h.$n,{onClick:()=>E(!1),variant:"ghost",fullWidth:!0,disabled:H,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:r,title:"Create API Key",onClose:()=>{s(!1),u("")},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(h.pd,{label:"Key Name",value:t,onChange:a=>u(a.target.value),placeholder:"Production Key"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:Y,fullWidth:!0,disabled:!t.trim(),children:"Create"}),(0,d.jsx)(h.$n,{onClick:()=>{s(!1),u("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:!!v,title:"API Key Created",onClose:()=>w(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:v||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"created_key"===P?"check":"content_copy",onClick:()=>Q(v,"created_key"),children:"created_key"===P?"Copied!":"Copy"})]}),(0,d.jsx)(h.$n,{onClick:()=>w(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(h.aF,{isOpen:F,title:"Disable Cloud Proxy",onClose:()=>!H&&G(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-red-600 dark:text-red-400",children:"warning"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-red-800 dark:text-red-200 font-medium mb-1",children:"Warning"}),(0,d.jsx)("p",{className:"text-sm text-red-700 dark:text-red-300",children:"All auth sessions will be deleted from cloud."})]})]})}),H&&(0,d.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-primary/10 border border-primary/30 rounded-lg",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-primary",children:"progress_activity"}),(0,d.jsx)("div",{className:"flex-1",children:(0,d.jsxs)("p",{className:"text-sm font-medium text-primary",children:["syncing"===L&&"Syncing latest data...","disabling"===L&&"Disabling cloud..."]})})]}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Are you sure you want to disable cloud proxy?"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:X,fullWidth:!0,disabled:H,className:"bg-red-500! hover:bg-red-600! text-white!",children:H?(0,d.jsxs)("span",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"syncing"===L?"Syncing...":"Disabling..."]}):"Disable Cloud"}),(0,d.jsx)(h.$n,{onClick:()=>G(!1),variant:"ghost",fullWidth:!0,disabled:H,children:"Cancel"})]})]})}),N&&(0,d.jsx)(o,{provider:N,models:x,copy:Q,copied:P,onClose:()=>O(null)})]})}function n({item:a,onClick:b}){let[c,f]=(0,e.useState)(!1),h=a.errors>0?"text-red-500":a.connected>0?"text-green-500":"text-text-muted";return(0,d.jsx)("div",{className:"border border-border rounded-lg p-3 hover:bg-surface/40 transition-colors cursor-pointer",onClick:b,role:"button",tabIndex:0,onKeyDown:a=>"Enter"===a.key&&b?.(),children:(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center",style:{backgroundColor:`${a.provider.color||"#888"}15`},children:c?(0,d.jsx)("span",{className:"text-[10px] font-bold",style:{color:a.provider.color||"#888"},children:a.provider.textIcon||a.provider.id.slice(0,2).toUpperCase()}):(0,d.jsx)(g.default,{src:`/providers/${a.provider.id}.png`,alt:a.provider.name,width:26,height:26,className:"object-contain rounded-lg",sizes:"26px",onError:()=>f(!0)})}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"text-sm font-semibold truncate",children:a.provider.name}),(0,d.jsx)("p",{className:`text-xs ${h}`,children:0===a.total?"Not configured":`${a.connected} active \xb7 ${a.errors} error`})]}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["#",a.total]})]})})}function o({provider:a,models:b,copy:c,copied:f,onClose:g}){let i=a.provider.alias||a.id,j=(0,e.useMemo)(()=>b.filter(b=>b.owned_by===i||b.owned_by===a.id),[b,i,a.id]),k=j.filter(a=>!a.type),l=j.filter(a=>"embedding"===a.type),m=j.filter(a=>"image"===a.type),n=(a,b,e)=>0===e.length?null:(0,d.jsxs)("div",{className:"mb-4",children:[(0,d.jsxs)("h4",{className:"text-xs font-semibold text-text-muted uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:b}),a," (",e.length,")"]}),(0,d.jsx)("div",{className:"flex flex-col gap-1",children:e.map(a=>{let b=`modal-${a.id}`;return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg hover:bg-surface/60 group",children:[(0,d.jsx)("code",{className:"text-sm font-mono flex-1 truncate",children:a.id}),a.custom&&(0,d.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-primary/10 text-primary",children:"custom"}),(0,d.jsx)("button",{onClick:()=>c(a.id,b),className:"p-1 hover:bg-sidebar rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-opacity",title:"Copy model ID",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:f===b?"check":"content_copy"})})]},a.id)})})]});return(0,d.jsx)(h.aF,{isOpen:!0,onClose:g,title:`${a.provider.name} — Models`,children:(0,d.jsx)("div",{className:"max-h-[60vh] overflow-y-auto",children:0===j.length?(0,d.jsx)("p",{className:"text-sm text-text-muted py-4 text-center",children:"No models available for this provider."}):(0,d.jsxs)(d.Fragment,{children:[n("Chat","chat",k),n("Embedding","data_array",l),n("Image","image",m)]})})})}function p({icon:a,iconColor:b,iconBg:c,title:f,path:g,description:h,models:i,expanded:k,onToggle:l,copy:m,copied:n,baseUrl:o}){let p=(0,e.useMemo)(()=>{let a={};for(let b of i){let c=b.owned_by||"unknown";a[c]||(a[c]=[]),a[c].push(b)}return Object.entries(a).sort((a,b)=>b[1].length-a[1].length)},[i]),q=a=>j.Q2[a]||(0,j.zt)(a),r=`endpoint_${g}`;return(0,d.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden",children:[(0,d.jsxs)("button",{onClick:l,className:"w-full flex items-center gap-3 p-4 hover:bg-surface/50 transition-colors text-left",children:[(0,d.jsx)("div",{className:`flex items-center justify-center size-10 rounded-lg ${c} shrink-0`,children:(0,d.jsx)("span",{className:`material-symbols-outlined text-xl ${b}`,children:a})}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"font-semibold text-sm",children:f}),(0,d.jsxs)("span",{className:"text-xs px-2 py-0.5 rounded-full bg-surface text-text-muted font-medium",children:[i.length," ",1===i.length?"model":"models"]})]}),(0,d.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:h})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-lg transition-transform ${k?"rotate-180":""}`,children:"expand_more"})]}),k&&(0,d.jsxs)("div",{className:"border-t border-border px-4 pb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-3 mb-3",children:[(0,d.jsxs)("code",{className:"flex-1 text-xs font-mono text-text-muted bg-surface/80 px-3 py-1.5 rounded-lg truncate",children:[o.replace(/\/v1$/,""),g]}),(0,d.jsx)("button",{onClick:()=>m(`${o.replace(/\/v1$/,"")}${g}`,r),className:"p-1.5 hover:bg-surface rounded-lg text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:n===r?"check":"content_copy"})})]}),(0,d.jsx)("div",{className:"flex flex-col gap-2",children:p.map(([a,b])=>(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,d.jsx)("div",{className:"size-2.5 rounded-full shrink-0",style:{backgroundColor:q(a)?.color||"#888"}}),(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main",children:q(a)?.name||a}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["(",b.length,")"]})]}),(0,d.jsx)("div",{className:"ml-5 flex flex-wrap gap-1.5",children:b.map(a=>(0,d.jsx)("span",{className:"text-xs px-2 py-0.5 rounded-md bg-surface/80 text-text-muted font-mono",title:a.id,children:a.root||a.id.split("/").pop()},a.id))})]},a))})]})]})}m.propTypes={machineId:f.string.isRequired},n.propTypes={item:f.shape({id:f.string.isRequired,provider:f.shape({id:f.string.isRequired,name:f.string.isRequired,color:f.string,textIcon:f.string}).isRequired,total:f.number.isRequired,connected:f.number.isRequired,errors:f.number.isRequired}).isRequired,onClick:f.func},o.propTypes={provider:f.object.isRequired,models:f.array.isRequired,copy:f.func.isRequired,copied:f.string,onClose:f.func.isRequired},p.propTypes={icon:f.string.isRequired,iconColor:f.string.isRequired,iconBg:f.string.isRequired,title:f.string.isRequired,path:f.string.isRequired,description:f.string.isRequired,models:f.array.isRequired,expanded:f.bool.isRequired,onToggle:f.func.isRequired,copy:f.func.isRequired,copied:f.string,baseUrl:f.string.isRequired}}};