omniroute 2.0.14 → 2.0.15

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 (851) hide show
  1. package/README.md +2 -0
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +50 -49
  4. package/app/.next/build-manifest.json +3 -3
  5. package/app/.next/prerender-manifest.json +3 -3
  6. package/app/.next/required-server-files.json +1 -1
  7. package/app/.next/routes-manifest.json +6 -0
  8. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js +2 -2
  9. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js +2 -2
  12. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  15. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +2 -2
  18. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
  21. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js +2 -2
  24. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js.nft.json +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +4 -4
  27. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  30. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  33. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  36. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  39. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  42. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +2 -2
  45. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js +2 -2
  48. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/media/page.js +2 -2
  51. package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  54. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  57. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js +2 -2
  60. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  63. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  66. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  69. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  72. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  75. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  76. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  78. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  79. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
  81. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  82. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  84. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  85. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/.well-known/agent.json/route.js +1 -1
  87. package/app/.next/server/app/.well-known/agent.json/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/400/page.js +2 -2
  89. package/app/.next/server/app/400/page.js.nft.json +1 -1
  90. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/401/page.js +2 -2
  92. package/app/.next/server/app/401/page.js.nft.json +1 -1
  93. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/403/page.js +2 -2
  95. package/app/.next/server/app/403/page.js.nft.json +1 -1
  96. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/408/page.js +2 -2
  98. package/app/.next/server/app/408/page.js.nft.json +1 -1
  99. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/429/page.js +2 -2
  101. package/app/.next/server/app/429/page.js.nft.json +1 -1
  102. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/500/page.js +2 -2
  104. package/app/.next/server/app/500/page.js.nft.json +1 -1
  105. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/502/page.js +2 -2
  107. package/app/.next/server/app/502/page.js.nft.json +1 -1
  108. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/503/page.js +2 -2
  110. package/app/.next/server/app/503/page.js.nft.json +1 -1
  111. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/_global-error/page.js +3 -3
  113. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/_global-error.html +2 -2
  115. package/app/.next/server/app/_global-error.rsc +5 -5
  116. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +5 -5
  117. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  118. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  119. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  120. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +4 -4
  121. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  122. package/app/.next/server/app/_not-found/page.js +2 -2
  123. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  124. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/a2a/route.js +2 -2
  126. package/app/.next/server/app/a2a/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/a2a/status/route.js +1 -1
  128. package/app/.next/server/app/api/a2a/status/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route.js +1 -1
  130. package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/a2a/tasks/[id]/route.js +1 -1
  132. package/app/.next/server/app/api/a2a/tasks/[id]/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/a2a/tasks/route.js +1 -1
  134. package/app/.next/server/app/api/a2a/tasks/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/acp/agents/route.js +1 -1
  136. package/app/.next/server/app/api/acp/agents/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/auth/login/route.js +1 -1
  138. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  140. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/auth/status/route.js +1 -1
  142. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/cache/route.js +1 -1
  144. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/cache/stats/route.js +1 -1
  146. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  148. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  150. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  152. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  154. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  156. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  158. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
  160. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  162. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js +1 -1
  164. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  166. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route.js +1 -1
  168. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  170. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  172. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
  174. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  176. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  178. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  180. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  182. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  184. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/combos/auto/route.js +1 -1
  186. package/app/.next/server/app/api/combos/auto/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/combos/metrics/route.js +1 -1
  188. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/combos/route.js +1 -1
  190. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/combos/test/route.js +1 -1
  192. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/api/compliance/audit-log/route.js +1 -1
  194. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/api/db-backups/export/route.js +1 -1
  196. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/api/db-backups/exportAll/route.js +1 -1
  198. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/api/db-backups/import/route.js +1 -1
  200. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/db-backups/route.js +1 -1
  202. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  203. package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -1
  204. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/api/evals/route.js +1 -1
  206. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  207. package/app/.next/server/app/api/fallback/chains/route.js +2 -2
  208. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  209. package/app/.next/server/app/api/init/route.js +1 -1
  210. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  212. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  213. package/app/.next/server/app/api/keys/route.js +1 -1
  214. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  215. package/app/.next/server/app/api/logs/console/route.js +1 -1
  216. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/api/mcp/audit/route.js +2 -2
  218. package/app/.next/server/app/api/mcp/audit/route_client-reference-manifest.js +1 -1
  219. package/app/.next/server/app/api/mcp/audit/stats/route.js +2 -2
  220. package/app/.next/server/app/api/mcp/audit/stats/route_client-reference-manifest.js +1 -1
  221. package/app/.next/server/app/api/mcp/sse/route.js +1 -1
  222. package/app/.next/server/app/api/mcp/sse/route_client-reference-manifest.js +1 -1
  223. package/app/.next/server/app/api/mcp/status/route.js +1 -1
  224. package/app/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/api/mcp/stream/route.js +1 -1
  226. package/app/.next/server/app/api/mcp/stream/route_client-reference-manifest.js +1 -1
  227. package/app/.next/server/app/api/mcp/tools/route.js +1 -1
  228. package/app/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  229. package/app/.next/server/app/api/models/alias/route.js +1 -1
  230. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  231. package/app/.next/server/app/api/models/availability/route.js +1 -1
  232. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  233. package/app/.next/server/app/api/models/catalog/route.js +1 -1
  234. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  235. package/app/.next/server/app/api/models/openrouter-catalog/route.js +1 -0
  236. package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -0
  237. package/app/.next/server/app/api/models/openrouter-catalog/route_client-reference-manifest.js +1 -0
  238. package/app/.next/server/app/api/models/route.js +2 -2
  239. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  240. package/app/.next/server/app/api/monitoring/health/route.js +2 -2
  241. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  242. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  243. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  244. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  245. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  246. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  247. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  248. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  249. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  250. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  251. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  252. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  253. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  254. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  255. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  256. package/app/.next/server/app/api/policies/route.js +2 -2
  257. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  258. package/app/.next/server/app/api/pricing/defaults/route.js +1 -1
  259. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  260. package/app/.next/server/app/api/pricing/models/route.js +1 -1
  261. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  262. package/app/.next/server/app/api/pricing/route.js +1 -1
  263. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  264. package/app/.next/server/app/api/provider-metrics/route.js +2 -2
  265. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  266. package/app/.next/server/app/api/provider-models/route.js +1 -1
  267. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  268. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  269. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  270. package/app/.next/server/app/api/provider-nodes/route.js +2 -2
  271. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  272. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  273. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  274. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  275. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  276. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  277. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  278. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  279. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  280. package/app/.next/server/app/api/providers/client/route.js +1 -1
  281. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  282. package/app/.next/server/app/api/providers/route.js +2 -2
  283. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  284. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  285. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  286. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  287. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  288. package/app/.next/server/app/api/rate-limit/route.js +1 -1
  289. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  290. package/app/.next/server/app/api/rate-limits/route.js +1 -1
  291. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  292. package/app/.next/server/app/api/resilience/reset/route.js +1 -1
  293. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  294. package/app/.next/server/app/api/resilience/route.js +1 -1
  295. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  296. package/app/.next/server/app/api/restart/route.js +1 -1
  297. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  298. package/app/.next/server/app/api/sessions/route.js +1 -1
  299. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  300. package/app/.next/server/app/api/settings/background-degradation/route.js +1 -1
  301. package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -1
  302. package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -1
  303. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  304. package/app/.next/server/app/api/settings/ip-filter/route.js +1 -1
  305. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  306. package/app/.next/server/app/api/settings/model-aliases/route.js +1 -1
  307. package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -1
  308. package/app/.next/server/app/api/settings/proxy/route.js +1 -1
  309. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  310. package/app/.next/server/app/api/settings/proxy/test/route.js +1 -1
  311. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  312. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  313. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  314. package/app/.next/server/app/api/settings/route.js +1 -1
  315. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  316. package/app/.next/server/app/api/settings/system-prompt/route.js +1 -1
  317. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  318. package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -1
  319. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  320. package/app/.next/server/app/api/shutdown/route.js +1 -1
  321. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  322. package/app/.next/server/app/api/storage/health/route.js +1 -1
  323. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  324. package/app/.next/server/app/api/sync/cloud/route.js +1 -1
  325. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  326. package/app/.next/server/app/api/sync/initialize/route.js +1 -1
  327. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  328. package/app/.next/server/app/api/tags/route.js +1 -1
  329. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  330. package/app/.next/server/app/api/telemetry/summary/route.js +1 -1
  331. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  332. package/app/.next/server/app/api/token-health/route.js +1 -1
  333. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  334. package/app/.next/server/app/api/translator/detect/route.js +1 -1
  335. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  336. package/app/.next/server/app/api/translator/history/route.js +1 -1
  337. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  338. package/app/.next/server/app/api/translator/load/route.js +1 -1
  339. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  340. package/app/.next/server/app/api/translator/save/route.js +1 -1
  341. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  342. package/app/.next/server/app/api/translator/send/route.js +1 -1
  343. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  344. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  345. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  346. package/app/.next/server/app/api/usage/[connectionId]/route.js +2 -2
  347. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  348. package/app/.next/server/app/api/usage/analytics/route.js +1 -1
  349. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  350. package/app/.next/server/app/api/usage/budget/route.js +2 -2
  351. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  352. package/app/.next/server/app/api/usage/call-logs/[id]/route.js +1 -1
  353. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  354. package/app/.next/server/app/api/usage/call-logs/route.js +1 -1
  355. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  356. package/app/.next/server/app/api/usage/history/route.js +1 -1
  357. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  358. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  359. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  360. package/app/.next/server/app/api/usage/proxy-logs/route.js +1 -1
  361. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  362. package/app/.next/server/app/api/usage/quota/route.js +1 -1
  363. package/app/.next/server/app/api/usage/quota/route_client-reference-manifest.js +1 -1
  364. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  365. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  366. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  367. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  368. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  369. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  370. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  371. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  372. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  373. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  374. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  375. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  376. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  377. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  378. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  379. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  380. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  381. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  382. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  383. package/app/.next/server/app/api/v1/models/route.js +1 -1
  384. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  385. package/app/.next/server/app/api/v1/moderations/route.js +1 -1
  386. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  387. package/app/.next/server/app/api/v1/music/generations/route.js +1 -1
  388. package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
  389. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -1
  390. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  391. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
  392. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  393. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
  394. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  395. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  396. package/app/.next/server/app/api/v1/rerank/route.js +1 -1
  397. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  398. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  399. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  400. package/app/.next/server/app/api/v1/route.js +1 -1
  401. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  402. package/app/.next/server/app/api/v1/videos/generations/route.js +1 -1
  403. package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
  404. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  405. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  406. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  407. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  408. package/app/.next/server/app/callback/page.js +2 -2
  409. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  410. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  411. package/app/.next/server/app/docs/page.js +4 -4
  412. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  413. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  414. package/app/.next/server/app/forbidden/page.js +2 -2
  415. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  416. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  417. package/app/.next/server/app/forgot-password/page.js +2 -2
  418. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  419. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  420. package/app/.next/server/app/landing/page.js +2 -2
  421. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  422. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  423. package/app/.next/server/app/login/page.js +2 -2
  424. package/app/.next/server/app/login/page.js.nft.json +1 -1
  425. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  426. package/app/.next/server/app/maintenance/page.js +2 -2
  427. package/app/.next/server/app/maintenance/page.js.nft.json +1 -1
  428. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  429. package/app/.next/server/app/offline/page.js +2 -2
  430. package/app/.next/server/app/offline/page.js.nft.json +1 -1
  431. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  432. package/app/.next/server/app/page.js +2 -2
  433. package/app/.next/server/app/page.js.nft.json +1 -1
  434. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  435. package/app/.next/server/app/privacy/page.js +2 -2
  436. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  437. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  438. package/app/.next/server/app/status/page.js +2 -2
  439. package/app/.next/server/app/status/page.js.nft.json +1 -1
  440. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  441. package/app/.next/server/app/terms/page.js +2 -2
  442. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  443. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  444. package/app/.next/server/app-paths-manifest.json +50 -49
  445. package/app/.next/server/chunks/2910.js +1 -1
  446. package/app/.next/server/chunks/3648.js +2 -2
  447. package/app/.next/server/chunks/438.js +1 -1
  448. package/app/.next/server/chunks/4488.js +1 -1
  449. package/app/.next/server/chunks/4935.js +1 -1
  450. package/app/.next/server/chunks/5248.js +1 -0
  451. package/app/.next/server/chunks/5419.js +1 -1
  452. package/app/.next/server/chunks/6743.js +1 -1
  453. package/app/.next/server/chunks/7109.js +1 -1
  454. package/app/.next/server/chunks/7544.js +2 -2
  455. package/app/.next/server/chunks/7889.js +2 -0
  456. package/app/.next/server/chunks/8020.js +3 -3
  457. package/app/.next/server/chunks/9548.js +1 -1
  458. package/app/.next/server/chunks/9854.js +1 -1
  459. package/app/.next/server/middleware-build-manifest.js +1 -1
  460. package/app/.next/server/middleware.js +3 -3
  461. package/app/.next/server/next-font-manifest.js +1 -1
  462. package/app/.next/server/next-font-manifest.json +1 -1
  463. package/app/.next/server/pages/500.html +2 -2
  464. package/app/.next/server/server-reference-manifest.js +1 -1
  465. package/app/.next/server/server-reference-manifest.json +1 -1
  466. package/app/.next/static/9TbRsQGZYpzUzbh5jF8PL/_buildManifest.js +1 -0
  467. package/app/.next/static/chunks/{5846-c6f43f3a355ccea0.js → 5846-9617718359b23768.js} +1 -1
  468. package/app/.next/static/chunks/{647-549907058cdc88c1.js → 647-ffe8ad14f7499725.js} +2 -2
  469. package/app/.next/static/chunks/app/(dashboard)/dashboard/a2a/page-43d6fa6b75cca497.js +1 -0
  470. package/app/.next/static/chunks/app/(dashboard)/dashboard/agents/{page-9a7e08c4edef033d.js → page-19a12c8a9e5ddcd0.js} +1 -1
  471. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-49ae846d72948391.js +1 -0
  472. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/{page-6ab7701da3357bb9.js → page-bef5c045e7eae657.js} +1 -1
  473. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-16f886b3711a6a50.js +1 -0
  474. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-e5bf8955e7b9a4f5.js +1 -0
  475. package/app/.next/static/chunks/app/(dashboard)/dashboard/auto-combo/{page-851063ded34ab7a6.js → page-8e609f4c9b26a901.js} +1 -1
  476. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-d1e5ed188e14c618.js +15 -0
  477. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-8d4d2f071d114b90.js +1 -0
  478. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-8f6233f59f5277e9.js → page-7a233357dfbd2e05.js} +1 -1
  479. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-7b1037d65eef97a8.js +1 -0
  480. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/{page-1e1eb2f79d606ab2.js → page-66ee4e631429e0d8.js} +1 -1
  481. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-2def921499d2ce60.js +1 -0
  482. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/{page-95e4b5e0bf023d76.js → page-6e4bcb48b8731915.js} +1 -1
  483. package/app/.next/static/chunks/app/(dashboard)/dashboard/mcp/page-8e35334b9f393139.js +1 -0
  484. package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-1d0ca9b5d3eaf7cd.js +1 -0
  485. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/{page-5378e9473a20cd6a.js → page-d424641c7e428be9.js} +1 -1
  486. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-d75ccdb976b36258.js +1 -0
  487. package/app/.next/static/chunks/app/(dashboard)/dashboard/playground/{page-a8b59a29fb924d18.js → page-25e333c3c3c88920.js} +1 -1
  488. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/{page-3efa7798e9a68e36.js → page-f2474691bb72deca.js} +1 -1
  489. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-7aa887699971d87f.js +1 -0
  490. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{error-a5ae03ba05400b04.js → error-0400f175dd1372fa.js} +1 -1
  491. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/loading-9552383fd2e11282.js +1 -0
  492. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-d57908b59d4b482c.js +1 -0
  493. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-cd0feb6c545b8a49.js → page-87f0d43ce6cca0cb.js} +1 -1
  494. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{error-ec9643134a96bbcd.js → error-c39d18f10fb7d3f6.js} +1 -1
  495. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{loading-3519a633b514f31a.js → loading-b5faf05c78a2cc54.js} +1 -1
  496. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{page-cbaa4b638a583fe9.js → page-6b38a30bfddf3b89.js} +1 -1
  497. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/{page-69eb8b0eb0e9de00.js → page-a4b8b03ffb39da1d.js} +1 -1
  498. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-10c186a0db5fde20.js → page-9168bf910743b2f5.js} +2 -2
  499. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-9e20463252daf023.js +1 -0
  500. package/app/.next/static/chunks/app/(dashboard)/{layout-7ae0c66c22bee8a1.js → layout-6d0afc53f5f2a538.js} +1 -1
  501. package/app/.next/static/chunks/app/.well-known/agent.json/{route-3efa7798e9a68e36.js → route-f2474691bb72deca.js} +1 -1
  502. package/app/.next/static/chunks/app/400/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  503. package/app/.next/static/chunks/app/401/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  504. package/app/.next/static/chunks/app/403/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  505. package/app/.next/static/chunks/app/408/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  506. package/app/.next/static/chunks/app/429/page-3b77bf358909019a.js +1 -0
  507. package/app/.next/static/chunks/app/500/page-3b77bf358909019a.js +1 -0
  508. package/app/.next/static/chunks/app/502/page-3b77bf358909019a.js +1 -0
  509. package/app/.next/static/chunks/app/503/page-3b77bf358909019a.js +1 -0
  510. package/app/.next/static/chunks/app/_global-error/{page-3efa7798e9a68e36.js → page-f2474691bb72deca.js} +1 -1
  511. package/app/.next/static/chunks/app/_not-found/{page-3efa7798e9a68e36.js → page-f2474691bb72deca.js} +1 -1
  512. package/app/.next/static/chunks/app/a2a/route-f2474691bb72deca.js +1 -0
  513. package/app/.next/static/chunks/app/api/a2a/status/route-f2474691bb72deca.js +1 -0
  514. package/app/.next/static/chunks/app/api/a2a/tasks/[id]/cancel/route-f2474691bb72deca.js +1 -0
  515. package/app/.next/static/chunks/app/api/a2a/tasks/[id]/route-f2474691bb72deca.js +1 -0
  516. package/app/.next/static/chunks/app/api/a2a/tasks/route-f2474691bb72deca.js +1 -0
  517. package/app/.next/static/chunks/app/api/acp/agents/route-f2474691bb72deca.js +1 -0
  518. package/app/.next/static/chunks/app/api/auth/login/route-f2474691bb72deca.js +1 -0
  519. package/app/.next/static/chunks/app/api/auth/logout/route-f2474691bb72deca.js +1 -0
  520. package/app/.next/static/chunks/app/api/auth/status/route-f2474691bb72deca.js +1 -0
  521. package/app/.next/static/chunks/app/api/cache/route-f2474691bb72deca.js +1 -0
  522. package/app/.next/static/chunks/app/api/cache/stats/route-f2474691bb72deca.js +1 -0
  523. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f2474691bb72deca.js +1 -0
  524. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-f2474691bb72deca.js +1 -0
  525. package/app/.next/static/chunks/app/api/cli-tools/backups/route-f2474691bb72deca.js +1 -0
  526. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-f2474691bb72deca.js +1 -0
  527. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-f2474691bb72deca.js +1 -0
  528. package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-f2474691bb72deca.js +1 -0
  529. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-f2474691bb72deca.js +1 -0
  530. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-f2474691bb72deca.js +1 -0
  531. package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-f2474691bb72deca.js +1 -0
  532. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-f2474691bb72deca.js +1 -0
  533. package/app/.next/static/chunks/app/api/cli-tools/openclaw/auto-order/route-f2474691bb72deca.js +1 -0
  534. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-f2474691bb72deca.js +1 -0
  535. package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-f2474691bb72deca.js +1 -0
  536. package/app/.next/static/chunks/app/api/cli-tools/status/route-f2474691bb72deca.js +1 -0
  537. package/app/.next/static/chunks/app/api/cloud/auth/route-f2474691bb72deca.js +1 -0
  538. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-f2474691bb72deca.js +1 -0
  539. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-f2474691bb72deca.js +1 -0
  540. package/app/.next/static/chunks/app/api/cloud/models/alias/route-f2474691bb72deca.js +1 -0
  541. package/app/.next/static/chunks/app/api/combos/[id]/route-f2474691bb72deca.js +1 -0
  542. package/app/.next/static/chunks/app/api/combos/auto/route-f2474691bb72deca.js +1 -0
  543. package/app/.next/static/chunks/app/api/combos/metrics/route-f2474691bb72deca.js +1 -0
  544. package/app/.next/static/chunks/app/api/combos/route-f2474691bb72deca.js +1 -0
  545. package/app/.next/static/chunks/app/api/combos/test/route-f2474691bb72deca.js +1 -0
  546. package/app/.next/static/chunks/app/api/compliance/audit-log/route-f2474691bb72deca.js +1 -0
  547. package/app/.next/static/chunks/app/api/db-backups/export/route-f2474691bb72deca.js +1 -0
  548. package/app/.next/static/chunks/app/api/db-backups/exportAll/route-f2474691bb72deca.js +1 -0
  549. package/app/.next/static/chunks/app/api/db-backups/import/route-f2474691bb72deca.js +1 -0
  550. package/app/.next/static/chunks/app/api/db-backups/route-f2474691bb72deca.js +1 -0
  551. package/app/.next/static/chunks/app/api/evals/[suiteId]/route-f2474691bb72deca.js +1 -0
  552. package/app/.next/static/chunks/app/api/evals/route-f2474691bb72deca.js +1 -0
  553. package/app/.next/static/chunks/app/api/fallback/chains/route-f2474691bb72deca.js +1 -0
  554. package/app/.next/static/chunks/app/api/init/route-f2474691bb72deca.js +1 -0
  555. package/app/.next/static/chunks/app/api/keys/[id]/route-f2474691bb72deca.js +1 -0
  556. package/app/.next/static/chunks/app/api/keys/route-f2474691bb72deca.js +1 -0
  557. package/app/.next/static/chunks/app/api/logs/console/route-f2474691bb72deca.js +1 -0
  558. package/app/.next/static/chunks/app/api/mcp/audit/route-f2474691bb72deca.js +1 -0
  559. package/app/.next/static/chunks/app/api/mcp/audit/stats/route-f2474691bb72deca.js +1 -0
  560. package/app/.next/static/chunks/app/api/mcp/sse/route-f2474691bb72deca.js +1 -0
  561. package/app/.next/static/chunks/app/api/mcp/status/route-f2474691bb72deca.js +1 -0
  562. package/app/.next/static/chunks/app/api/mcp/stream/route-f2474691bb72deca.js +1 -0
  563. package/app/.next/static/chunks/app/api/mcp/tools/route-f2474691bb72deca.js +1 -0
  564. package/app/.next/static/chunks/app/api/models/alias/route-f2474691bb72deca.js +1 -0
  565. package/app/.next/static/chunks/app/api/models/availability/route-f2474691bb72deca.js +1 -0
  566. package/app/.next/static/chunks/app/api/models/catalog/route-f2474691bb72deca.js +1 -0
  567. package/app/.next/static/chunks/app/api/models/openrouter-catalog/route-f2474691bb72deca.js +1 -0
  568. package/app/.next/static/chunks/app/api/models/route-f2474691bb72deca.js +1 -0
  569. package/app/.next/static/chunks/app/api/monitoring/health/route-f2474691bb72deca.js +1 -0
  570. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-f2474691bb72deca.js +1 -0
  571. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-f2474691bb72deca.js +1 -0
  572. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-f2474691bb72deca.js +1 -0
  573. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-f2474691bb72deca.js +1 -0
  574. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-f2474691bb72deca.js +1 -0
  575. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-f2474691bb72deca.js +1 -0
  576. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-f2474691bb72deca.js +1 -0
  577. package/app/.next/static/chunks/app/api/policies/route-f2474691bb72deca.js +1 -0
  578. package/app/.next/static/chunks/app/api/pricing/defaults/route-f2474691bb72deca.js +1 -0
  579. package/app/.next/static/chunks/app/api/pricing/models/route-f2474691bb72deca.js +1 -0
  580. package/app/.next/static/chunks/app/api/pricing/route-f2474691bb72deca.js +1 -0
  581. package/app/.next/static/chunks/app/api/provider-metrics/route-f2474691bb72deca.js +1 -0
  582. package/app/.next/static/chunks/app/api/provider-models/route-f2474691bb72deca.js +1 -0
  583. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-f2474691bb72deca.js +1 -0
  584. package/app/.next/static/chunks/app/api/provider-nodes/route-f2474691bb72deca.js +1 -0
  585. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-f2474691bb72deca.js +1 -0
  586. package/app/.next/static/chunks/app/api/providers/[id]/models/route-f2474691bb72deca.js +1 -0
  587. package/app/.next/static/chunks/app/api/providers/[id]/route-f2474691bb72deca.js +1 -0
  588. package/app/.next/static/chunks/app/api/providers/[id]/test/route-f2474691bb72deca.js +1 -0
  589. package/app/.next/static/chunks/app/api/providers/client/route-f2474691bb72deca.js +1 -0
  590. package/app/.next/static/chunks/app/api/providers/route-f2474691bb72deca.js +1 -0
  591. package/app/.next/static/chunks/app/api/providers/test-batch/route-f2474691bb72deca.js +1 -0
  592. package/app/.next/static/chunks/app/api/providers/validate/route-f2474691bb72deca.js +1 -0
  593. package/app/.next/static/chunks/app/api/rate-limit/route-f2474691bb72deca.js +1 -0
  594. package/app/.next/static/chunks/app/api/rate-limits/route-f2474691bb72deca.js +1 -0
  595. package/app/.next/static/chunks/app/api/resilience/reset/route-f2474691bb72deca.js +1 -0
  596. package/app/.next/static/chunks/app/api/resilience/route-f2474691bb72deca.js +1 -0
  597. package/app/.next/static/chunks/app/api/restart/route-f2474691bb72deca.js +1 -0
  598. package/app/.next/static/chunks/app/api/sessions/route-f2474691bb72deca.js +1 -0
  599. package/app/.next/static/chunks/app/api/settings/background-degradation/route-f2474691bb72deca.js +1 -0
  600. package/app/.next/static/chunks/app/api/settings/combo-defaults/route-f2474691bb72deca.js +1 -0
  601. package/app/.next/static/chunks/app/api/settings/ip-filter/route-f2474691bb72deca.js +1 -0
  602. package/app/.next/static/chunks/app/api/settings/model-aliases/route-f2474691bb72deca.js +1 -0
  603. package/app/.next/static/chunks/app/api/settings/proxy/route-f2474691bb72deca.js +1 -0
  604. package/app/.next/static/chunks/app/api/settings/proxy/test/route-f2474691bb72deca.js +1 -0
  605. package/app/.next/static/chunks/app/api/settings/require-login/route-f2474691bb72deca.js +1 -0
  606. package/app/.next/static/chunks/app/api/settings/route-f2474691bb72deca.js +1 -0
  607. package/app/.next/static/chunks/app/api/settings/system-prompt/route-f2474691bb72deca.js +1 -0
  608. package/app/.next/static/chunks/app/api/settings/thinking-budget/route-f2474691bb72deca.js +1 -0
  609. package/app/.next/static/chunks/app/api/shutdown/route-f2474691bb72deca.js +1 -0
  610. package/app/.next/static/chunks/app/api/storage/health/route-f2474691bb72deca.js +1 -0
  611. package/app/.next/static/chunks/app/api/sync/cloud/route-f2474691bb72deca.js +1 -0
  612. package/app/.next/static/chunks/app/api/sync/initialize/route-f2474691bb72deca.js +1 -0
  613. package/app/.next/static/chunks/app/api/tags/route-f2474691bb72deca.js +1 -0
  614. package/app/.next/static/chunks/app/api/telemetry/summary/route-f2474691bb72deca.js +1 -0
  615. package/app/.next/static/chunks/app/api/token-health/route-f2474691bb72deca.js +1 -0
  616. package/app/.next/static/chunks/app/api/translator/detect/route-f2474691bb72deca.js +1 -0
  617. package/app/.next/static/chunks/app/api/translator/history/route-f2474691bb72deca.js +1 -0
  618. package/app/.next/static/chunks/app/api/translator/load/route-f2474691bb72deca.js +1 -0
  619. package/app/.next/static/chunks/app/api/translator/save/route-f2474691bb72deca.js +1 -0
  620. package/app/.next/static/chunks/app/api/translator/send/route-f2474691bb72deca.js +1 -0
  621. package/app/.next/static/chunks/app/api/translator/translate/route-f2474691bb72deca.js +1 -0
  622. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-f2474691bb72deca.js +1 -0
  623. package/app/.next/static/chunks/app/api/usage/analytics/route-f2474691bb72deca.js +1 -0
  624. package/app/.next/static/chunks/app/api/usage/budget/route-f2474691bb72deca.js +1 -0
  625. package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-f2474691bb72deca.js +1 -0
  626. package/app/.next/static/chunks/app/api/usage/call-logs/route-f2474691bb72deca.js +1 -0
  627. package/app/.next/static/chunks/app/api/usage/history/route-f2474691bb72deca.js +1 -0
  628. package/app/.next/static/chunks/app/api/usage/logs/route-f2474691bb72deca.js +1 -0
  629. package/app/.next/static/chunks/app/api/usage/proxy-logs/route-f2474691bb72deca.js +1 -0
  630. package/app/.next/static/chunks/app/api/usage/quota/route-f2474691bb72deca.js +1 -0
  631. package/app/.next/static/chunks/app/api/usage/request-logs/route-f2474691bb72deca.js +1 -0
  632. package/app/.next/static/chunks/app/api/v1/api/chat/route-f2474691bb72deca.js +1 -0
  633. package/app/.next/static/chunks/app/api/v1/audio/speech/route-f2474691bb72deca.js +1 -0
  634. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-f2474691bb72deca.js +1 -0
  635. package/app/.next/static/chunks/app/api/v1/chat/completions/route-f2474691bb72deca.js +1 -0
  636. package/app/.next/static/chunks/app/api/v1/embeddings/route-f2474691bb72deca.js +1 -0
  637. package/app/.next/static/chunks/app/api/v1/images/generations/route-f2474691bb72deca.js +1 -0
  638. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-f2474691bb72deca.js +1 -0
  639. package/app/.next/static/chunks/app/api/v1/messages/route-f2474691bb72deca.js +1 -0
  640. package/app/.next/static/chunks/app/api/v1/models/route-f2474691bb72deca.js +1 -0
  641. package/app/.next/static/chunks/app/api/v1/moderations/route-f2474691bb72deca.js +1 -0
  642. package/app/.next/static/chunks/app/api/v1/music/generations/route-f2474691bb72deca.js +1 -0
  643. package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-f2474691bb72deca.js +1 -0
  644. package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-f2474691bb72deca.js +1 -0
  645. package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-f2474691bb72deca.js +1 -0
  646. package/app/.next/static/chunks/app/api/v1/rerank/route-f2474691bb72deca.js +1 -0
  647. package/app/.next/static/chunks/app/api/v1/responses/route-f2474691bb72deca.js +1 -0
  648. package/app/.next/static/chunks/app/api/v1/route-f2474691bb72deca.js +1 -0
  649. package/app/.next/static/chunks/app/api/v1/videos/generations/route-f2474691bb72deca.js +1 -0
  650. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-f2474691bb72deca.js +1 -0
  651. package/app/.next/static/chunks/app/api/v1beta/models/route-f2474691bb72deca.js +1 -0
  652. package/app/.next/static/chunks/app/callback/{page-0f0ebc0820dd18a5.js → page-585a53f7dc6a30f1.js} +1 -1
  653. package/app/.next/static/chunks/app/docs/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
  654. package/app/.next/static/chunks/app/{error-32c03f14529d3920.js → error-f7f595c541537e63.js} +1 -1
  655. package/app/.next/static/chunks/app/forbidden/page-b33079c1573b0bfa.js +1 -0
  656. package/app/.next/static/chunks/app/forgot-password/page-90cd6259c75badfc.js +1 -0
  657. package/app/.next/static/chunks/app/global-error-1dfd1c91ad5199fe.js +1 -0
  658. package/app/.next/static/chunks/app/landing/page-9d540ab1716f8e3e.js +1 -0
  659. package/app/.next/static/chunks/app/{layout-070972eb026af319.js → layout-108592eafb959363.js} +1 -1
  660. package/app/.next/static/chunks/app/{loading-da2f6e1471afc070.js → loading-e063375d5b12a2f7.js} +1 -1
  661. package/app/.next/static/chunks/app/login/{page-26d717c652d56032.js → page-cf6b82187b09a701.js} +1 -1
  662. package/app/.next/static/chunks/app/maintenance/page-3b77bf358909019a.js +1 -0
  663. package/app/.next/static/chunks/app/not-found-511518956bcae7bc.js +1 -0
  664. package/app/.next/static/chunks/app/offline/page-9d6ea493783a0219.js +1 -0
  665. package/app/.next/static/chunks/app/page-f2474691bb72deca.js +1 -0
  666. package/app/.next/static/chunks/app/privacy/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
  667. package/app/.next/static/chunks/app/status/page-4e5e9b5a513aa474.js +1 -0
  668. package/app/.next/static/chunks/app/terms/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
  669. package/app/.next/static/chunks/{main-app-ae230f6bf51a5edb.js → main-app-c9da11a8061df107.js} +1 -1
  670. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-f2474691bb72deca.js +1 -0
  671. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-f2474691bb72deca.js +1 -0
  672. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f2474691bb72deca.js +1 -0
  673. package/app/logs/application/app.log +0 -2788
  674. package/app/package.json +1 -1
  675. package/app/server.js +1 -1
  676. package/package.json +1 -1
  677. package/app/.env +0 -122
  678. package/app/.next/server/chunks/1909.js +0 -2
  679. package/app/.next/server/chunks/7167.js +0 -1
  680. package/app/.next/static/-8uV9_pF9xHPyJ274VYJM/_buildManifest.js +0 -1
  681. package/app/.next/static/chunks/app/(dashboard)/dashboard/a2a/page-ed1f5b1ae0e01c02.js +0 -1
  682. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-6a2bb3ad980b05b9.js +0 -1
  683. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-027b3eb09d2d46e0.js +0 -1
  684. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c9b98846b8479f3f.js +0 -1
  685. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-86acc32f9984a4e2.js +0 -15
  686. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-ac5dcffbe54f77f9.js +0 -1
  687. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-36f33de29eb978a1.js +0 -1
  688. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-65334129a8e63369.js +0 -1
  689. package/app/.next/static/chunks/app/(dashboard)/dashboard/mcp/page-d9b5c3282ec5d809.js +0 -1
  690. package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-72b768421394b42c.js +0 -1
  691. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-40d20c1273f57206.js +0 -1
  692. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-350aed2e86512c23.js +0 -1
  693. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/loading-7deaa9f550841465.js +0 -1
  694. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-3ef302da4b756e50.js +0 -1
  695. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-8c8f2d59d0cbb516.js +0 -1
  696. package/app/.next/static/chunks/app/429/page-3b9079ea400ca287.js +0 -1
  697. package/app/.next/static/chunks/app/500/page-3b9079ea400ca287.js +0 -1
  698. package/app/.next/static/chunks/app/502/page-3b9079ea400ca287.js +0 -1
  699. package/app/.next/static/chunks/app/503/page-3b9079ea400ca287.js +0 -1
  700. package/app/.next/static/chunks/app/a2a/route-3efa7798e9a68e36.js +0 -1
  701. package/app/.next/static/chunks/app/api/a2a/status/route-3efa7798e9a68e36.js +0 -1
  702. package/app/.next/static/chunks/app/api/a2a/tasks/[id]/cancel/route-3efa7798e9a68e36.js +0 -1
  703. package/app/.next/static/chunks/app/api/a2a/tasks/[id]/route-3efa7798e9a68e36.js +0 -1
  704. package/app/.next/static/chunks/app/api/a2a/tasks/route-3efa7798e9a68e36.js +0 -1
  705. package/app/.next/static/chunks/app/api/acp/agents/route-3efa7798e9a68e36.js +0 -1
  706. package/app/.next/static/chunks/app/api/auth/login/route-3efa7798e9a68e36.js +0 -1
  707. package/app/.next/static/chunks/app/api/auth/logout/route-3efa7798e9a68e36.js +0 -1
  708. package/app/.next/static/chunks/app/api/auth/status/route-3efa7798e9a68e36.js +0 -1
  709. package/app/.next/static/chunks/app/api/cache/route-3efa7798e9a68e36.js +0 -1
  710. package/app/.next/static/chunks/app/api/cache/stats/route-3efa7798e9a68e36.js +0 -1
  711. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-3efa7798e9a68e36.js +0 -1
  712. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-3efa7798e9a68e36.js +0 -1
  713. package/app/.next/static/chunks/app/api/cli-tools/backups/route-3efa7798e9a68e36.js +0 -1
  714. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-3efa7798e9a68e36.js +0 -1
  715. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-3efa7798e9a68e36.js +0 -1
  716. package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-3efa7798e9a68e36.js +0 -1
  717. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-3efa7798e9a68e36.js +0 -1
  718. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-3efa7798e9a68e36.js +0 -1
  719. package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-3efa7798e9a68e36.js +0 -1
  720. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-3efa7798e9a68e36.js +0 -1
  721. package/app/.next/static/chunks/app/api/cli-tools/openclaw/auto-order/route-3efa7798e9a68e36.js +0 -1
  722. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-3efa7798e9a68e36.js +0 -1
  723. package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-3efa7798e9a68e36.js +0 -1
  724. package/app/.next/static/chunks/app/api/cli-tools/status/route-3efa7798e9a68e36.js +0 -1
  725. package/app/.next/static/chunks/app/api/cloud/auth/route-3efa7798e9a68e36.js +0 -1
  726. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-3efa7798e9a68e36.js +0 -1
  727. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-3efa7798e9a68e36.js +0 -1
  728. package/app/.next/static/chunks/app/api/cloud/models/alias/route-3efa7798e9a68e36.js +0 -1
  729. package/app/.next/static/chunks/app/api/combos/[id]/route-3efa7798e9a68e36.js +0 -1
  730. package/app/.next/static/chunks/app/api/combos/auto/route-3efa7798e9a68e36.js +0 -1
  731. package/app/.next/static/chunks/app/api/combos/metrics/route-3efa7798e9a68e36.js +0 -1
  732. package/app/.next/static/chunks/app/api/combos/route-3efa7798e9a68e36.js +0 -1
  733. package/app/.next/static/chunks/app/api/combos/test/route-3efa7798e9a68e36.js +0 -1
  734. package/app/.next/static/chunks/app/api/compliance/audit-log/route-3efa7798e9a68e36.js +0 -1
  735. package/app/.next/static/chunks/app/api/db-backups/export/route-3efa7798e9a68e36.js +0 -1
  736. package/app/.next/static/chunks/app/api/db-backups/exportAll/route-3efa7798e9a68e36.js +0 -1
  737. package/app/.next/static/chunks/app/api/db-backups/import/route-3efa7798e9a68e36.js +0 -1
  738. package/app/.next/static/chunks/app/api/db-backups/route-3efa7798e9a68e36.js +0 -1
  739. package/app/.next/static/chunks/app/api/evals/[suiteId]/route-3efa7798e9a68e36.js +0 -1
  740. package/app/.next/static/chunks/app/api/evals/route-3efa7798e9a68e36.js +0 -1
  741. package/app/.next/static/chunks/app/api/fallback/chains/route-3efa7798e9a68e36.js +0 -1
  742. package/app/.next/static/chunks/app/api/init/route-3efa7798e9a68e36.js +0 -1
  743. package/app/.next/static/chunks/app/api/keys/[id]/route-3efa7798e9a68e36.js +0 -1
  744. package/app/.next/static/chunks/app/api/keys/route-3efa7798e9a68e36.js +0 -1
  745. package/app/.next/static/chunks/app/api/logs/console/route-3efa7798e9a68e36.js +0 -1
  746. package/app/.next/static/chunks/app/api/mcp/audit/route-3efa7798e9a68e36.js +0 -1
  747. package/app/.next/static/chunks/app/api/mcp/audit/stats/route-3efa7798e9a68e36.js +0 -1
  748. package/app/.next/static/chunks/app/api/mcp/sse/route-3efa7798e9a68e36.js +0 -1
  749. package/app/.next/static/chunks/app/api/mcp/status/route-3efa7798e9a68e36.js +0 -1
  750. package/app/.next/static/chunks/app/api/mcp/stream/route-3efa7798e9a68e36.js +0 -1
  751. package/app/.next/static/chunks/app/api/mcp/tools/route-3efa7798e9a68e36.js +0 -1
  752. package/app/.next/static/chunks/app/api/models/alias/route-3efa7798e9a68e36.js +0 -1
  753. package/app/.next/static/chunks/app/api/models/availability/route-3efa7798e9a68e36.js +0 -1
  754. package/app/.next/static/chunks/app/api/models/catalog/route-3efa7798e9a68e36.js +0 -1
  755. package/app/.next/static/chunks/app/api/models/route-3efa7798e9a68e36.js +0 -1
  756. package/app/.next/static/chunks/app/api/monitoring/health/route-3efa7798e9a68e36.js +0 -1
  757. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-3efa7798e9a68e36.js +0 -1
  758. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-3efa7798e9a68e36.js +0 -1
  759. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-3efa7798e9a68e36.js +0 -1
  760. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-3efa7798e9a68e36.js +0 -1
  761. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-3efa7798e9a68e36.js +0 -1
  762. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-3efa7798e9a68e36.js +0 -1
  763. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-3efa7798e9a68e36.js +0 -1
  764. package/app/.next/static/chunks/app/api/policies/route-3efa7798e9a68e36.js +0 -1
  765. package/app/.next/static/chunks/app/api/pricing/defaults/route-3efa7798e9a68e36.js +0 -1
  766. package/app/.next/static/chunks/app/api/pricing/models/route-3efa7798e9a68e36.js +0 -1
  767. package/app/.next/static/chunks/app/api/pricing/route-3efa7798e9a68e36.js +0 -1
  768. package/app/.next/static/chunks/app/api/provider-metrics/route-3efa7798e9a68e36.js +0 -1
  769. package/app/.next/static/chunks/app/api/provider-models/route-3efa7798e9a68e36.js +0 -1
  770. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-3efa7798e9a68e36.js +0 -1
  771. package/app/.next/static/chunks/app/api/provider-nodes/route-3efa7798e9a68e36.js +0 -1
  772. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-3efa7798e9a68e36.js +0 -1
  773. package/app/.next/static/chunks/app/api/providers/[id]/models/route-3efa7798e9a68e36.js +0 -1
  774. package/app/.next/static/chunks/app/api/providers/[id]/route-3efa7798e9a68e36.js +0 -1
  775. package/app/.next/static/chunks/app/api/providers/[id]/test/route-3efa7798e9a68e36.js +0 -1
  776. package/app/.next/static/chunks/app/api/providers/client/route-3efa7798e9a68e36.js +0 -1
  777. package/app/.next/static/chunks/app/api/providers/route-3efa7798e9a68e36.js +0 -1
  778. package/app/.next/static/chunks/app/api/providers/test-batch/route-3efa7798e9a68e36.js +0 -1
  779. package/app/.next/static/chunks/app/api/providers/validate/route-3efa7798e9a68e36.js +0 -1
  780. package/app/.next/static/chunks/app/api/rate-limit/route-3efa7798e9a68e36.js +0 -1
  781. package/app/.next/static/chunks/app/api/rate-limits/route-3efa7798e9a68e36.js +0 -1
  782. package/app/.next/static/chunks/app/api/resilience/reset/route-3efa7798e9a68e36.js +0 -1
  783. package/app/.next/static/chunks/app/api/resilience/route-3efa7798e9a68e36.js +0 -1
  784. package/app/.next/static/chunks/app/api/restart/route-3efa7798e9a68e36.js +0 -1
  785. package/app/.next/static/chunks/app/api/sessions/route-3efa7798e9a68e36.js +0 -1
  786. package/app/.next/static/chunks/app/api/settings/background-degradation/route-3efa7798e9a68e36.js +0 -1
  787. package/app/.next/static/chunks/app/api/settings/combo-defaults/route-3efa7798e9a68e36.js +0 -1
  788. package/app/.next/static/chunks/app/api/settings/ip-filter/route-3efa7798e9a68e36.js +0 -1
  789. package/app/.next/static/chunks/app/api/settings/model-aliases/route-3efa7798e9a68e36.js +0 -1
  790. package/app/.next/static/chunks/app/api/settings/proxy/route-3efa7798e9a68e36.js +0 -1
  791. package/app/.next/static/chunks/app/api/settings/proxy/test/route-3efa7798e9a68e36.js +0 -1
  792. package/app/.next/static/chunks/app/api/settings/require-login/route-3efa7798e9a68e36.js +0 -1
  793. package/app/.next/static/chunks/app/api/settings/route-3efa7798e9a68e36.js +0 -1
  794. package/app/.next/static/chunks/app/api/settings/system-prompt/route-3efa7798e9a68e36.js +0 -1
  795. package/app/.next/static/chunks/app/api/settings/thinking-budget/route-3efa7798e9a68e36.js +0 -1
  796. package/app/.next/static/chunks/app/api/shutdown/route-3efa7798e9a68e36.js +0 -1
  797. package/app/.next/static/chunks/app/api/storage/health/route-3efa7798e9a68e36.js +0 -1
  798. package/app/.next/static/chunks/app/api/sync/cloud/route-3efa7798e9a68e36.js +0 -1
  799. package/app/.next/static/chunks/app/api/sync/initialize/route-3efa7798e9a68e36.js +0 -1
  800. package/app/.next/static/chunks/app/api/tags/route-3efa7798e9a68e36.js +0 -1
  801. package/app/.next/static/chunks/app/api/telemetry/summary/route-3efa7798e9a68e36.js +0 -1
  802. package/app/.next/static/chunks/app/api/token-health/route-3efa7798e9a68e36.js +0 -1
  803. package/app/.next/static/chunks/app/api/translator/detect/route-3efa7798e9a68e36.js +0 -1
  804. package/app/.next/static/chunks/app/api/translator/history/route-3efa7798e9a68e36.js +0 -1
  805. package/app/.next/static/chunks/app/api/translator/load/route-3efa7798e9a68e36.js +0 -1
  806. package/app/.next/static/chunks/app/api/translator/save/route-3efa7798e9a68e36.js +0 -1
  807. package/app/.next/static/chunks/app/api/translator/send/route-3efa7798e9a68e36.js +0 -1
  808. package/app/.next/static/chunks/app/api/translator/translate/route-3efa7798e9a68e36.js +0 -1
  809. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-3efa7798e9a68e36.js +0 -1
  810. package/app/.next/static/chunks/app/api/usage/analytics/route-3efa7798e9a68e36.js +0 -1
  811. package/app/.next/static/chunks/app/api/usage/budget/route-3efa7798e9a68e36.js +0 -1
  812. package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-3efa7798e9a68e36.js +0 -1
  813. package/app/.next/static/chunks/app/api/usage/call-logs/route-3efa7798e9a68e36.js +0 -1
  814. package/app/.next/static/chunks/app/api/usage/history/route-3efa7798e9a68e36.js +0 -1
  815. package/app/.next/static/chunks/app/api/usage/logs/route-3efa7798e9a68e36.js +0 -1
  816. package/app/.next/static/chunks/app/api/usage/proxy-logs/route-3efa7798e9a68e36.js +0 -1
  817. package/app/.next/static/chunks/app/api/usage/quota/route-3efa7798e9a68e36.js +0 -1
  818. package/app/.next/static/chunks/app/api/usage/request-logs/route-3efa7798e9a68e36.js +0 -1
  819. package/app/.next/static/chunks/app/api/v1/api/chat/route-3efa7798e9a68e36.js +0 -1
  820. package/app/.next/static/chunks/app/api/v1/audio/speech/route-3efa7798e9a68e36.js +0 -1
  821. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-3efa7798e9a68e36.js +0 -1
  822. package/app/.next/static/chunks/app/api/v1/chat/completions/route-3efa7798e9a68e36.js +0 -1
  823. package/app/.next/static/chunks/app/api/v1/embeddings/route-3efa7798e9a68e36.js +0 -1
  824. package/app/.next/static/chunks/app/api/v1/images/generations/route-3efa7798e9a68e36.js +0 -1
  825. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-3efa7798e9a68e36.js +0 -1
  826. package/app/.next/static/chunks/app/api/v1/messages/route-3efa7798e9a68e36.js +0 -1
  827. package/app/.next/static/chunks/app/api/v1/models/route-3efa7798e9a68e36.js +0 -1
  828. package/app/.next/static/chunks/app/api/v1/moderations/route-3efa7798e9a68e36.js +0 -1
  829. package/app/.next/static/chunks/app/api/v1/music/generations/route-3efa7798e9a68e36.js +0 -1
  830. package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-3efa7798e9a68e36.js +0 -1
  831. package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-3efa7798e9a68e36.js +0 -1
  832. package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-3efa7798e9a68e36.js +0 -1
  833. package/app/.next/static/chunks/app/api/v1/rerank/route-3efa7798e9a68e36.js +0 -1
  834. package/app/.next/static/chunks/app/api/v1/responses/route-3efa7798e9a68e36.js +0 -1
  835. package/app/.next/static/chunks/app/api/v1/route-3efa7798e9a68e36.js +0 -1
  836. package/app/.next/static/chunks/app/api/v1/videos/generations/route-3efa7798e9a68e36.js +0 -1
  837. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-3efa7798e9a68e36.js +0 -1
  838. package/app/.next/static/chunks/app/api/v1beta/models/route-3efa7798e9a68e36.js +0 -1
  839. package/app/.next/static/chunks/app/forbidden/page-8d8e1709a1e32585.js +0 -1
  840. package/app/.next/static/chunks/app/forgot-password/page-d5c9b77748aa9deb.js +0 -1
  841. package/app/.next/static/chunks/app/global-error-5840b1caa830f2ec.js +0 -1
  842. package/app/.next/static/chunks/app/landing/page-75b0c988db383cfc.js +0 -1
  843. package/app/.next/static/chunks/app/maintenance/page-3b9079ea400ca287.js +0 -1
  844. package/app/.next/static/chunks/app/not-found-faf36d2a9a452506.js +0 -1
  845. package/app/.next/static/chunks/app/offline/page-bf68bf461af876a3.js +0 -1
  846. package/app/.next/static/chunks/app/page-3efa7798e9a68e36.js +0 -1
  847. package/app/.next/static/chunks/app/status/page-29a433b40631ce12.js +0 -1
  848. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-3efa7798e9a68e36.js +0 -1
  849. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-3efa7798e9a68e36.js +0 -1
  850. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-3efa7798e9a68e36.js +0 -1
  851. /package/app/.next/static/{-8uV9_pF9xHPyJ274VYJM → 9TbRsQGZYpzUzbh5jF8PL}/_ssgManifest.js +0 -0
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omniroute",
3
- "version": "2.0.14",
3
+ "version": "2.0.15",
4
4
  "description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",
5
5
  "type": "module",
6
6
  "bin": {
package/app/server.js CHANGED
@@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
15
15
  const hostname = process.env.HOSTNAME || '0.0.0.0'
16
16
 
17
17
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
18
- const nextConfig = {"env":{},"typescript":{"ignoreBuildErrors":true},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.mjs","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":".","allowedDevOrigins":["192.168.*"],"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":23,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.mjs","turbopack":{"resolveAlias":{"next-intl/config":"./src/i18n/request.ts"},"root":"."},"serverExternalPackages":["better-sqlite3","zod"],"transpilePackages":["@omniroute/open-sse"],"distDirRoot":".next","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/chat/completions","destination":"/api/v1/chat/completions"},{"source":"/responses","destination":"/api/v1/responses"},{"source":"/models","destination":"/api/v1/models"},{"source":"/v1/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1/v1","destination":"/api/v1"},{"source":"/codex/:path*","destination":"/api/v1/responses"},{"source":"/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1","destination":"/api/v1"}],"fallback":[]}}
18
+ const nextConfig = {"env":{},"typescript":{"ignoreBuildErrors":true},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.mjs","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":".","allowedDevOrigins":["192.168.*"],"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.mjs","turbopack":{"resolveAlias":{"next-intl/config":"./src/i18n/request.ts"},"root":"."},"serverExternalPackages":["better-sqlite3","zod"],"transpilePackages":["@omniroute/open-sse"],"distDirRoot":".next","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/chat/completions","destination":"/api/v1/chat/completions"},{"source":"/responses","destination":"/api/v1/responses"},{"source":"/models","destination":"/api/v1/models"},{"source":"/v1/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1/v1","destination":"/api/v1"},{"source":"/codex/:path*","destination":"/api/v1/responses"},{"source":"/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1","destination":"/api/v1"}],"fallback":[]}}
19
19
 
20
20
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
21
21
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omniroute",
3
- "version": "2.0.14",
3
+ "version": "2.0.15",
4
4
  "description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",
5
5
  "type": "module",
6
6
  "bin": {
package/app/.env DELETED
@@ -1,122 +0,0 @@
1
- # OmniRoute environment contract
2
- # This file reflects actual runtime usage in the current codebase.
3
-
4
- # Required
5
- JWT_SECRET=change-me-to-a-long-random-secret
6
- INITIAL_PASSWORD=123456
7
- DATA_DIR=$HOME/.omniroute
8
-
9
- # Storage (SQLite)
10
- STORAGE_DRIVER=sqlite
11
- STORAGE_ENCRYPTION_KEY=change-me-storage-encryption-key
12
- STORAGE_ENCRYPTION_KEY_VERSION=v1
13
- LOG_RETENTION_DAYS=90
14
- SQLITE_MAX_SIZE_MB=2048
15
- SQLITE_CLEAN_LEGACY_FILES=true
16
-
17
- # Recommended runtime variables
18
- PORT=20128
19
- NODE_ENV=production
20
- INSTANCE_NAME=omniroute
21
-
22
- # Recommended security and ops variables
23
- API_KEY_SECRET=endpoint-proxy-api-key-secret
24
- MACHINE_ID_SALT=endpoint-proxy-salt
25
- ENABLE_REQUEST_LOGS=true
26
- AUTH_COOKIE_SECURE=false
27
- REQUIRE_API_KEY=false
28
-
29
- # Cloud sync variables
30
- # Must point to this running instance so internal sync jobs can call /api/sync/cloud.
31
- # Server-side preferred variables:
32
- BASE_URL=http://localhost:20128
33
- CLOUD_URL=https://cloud.omniroute.online
34
- # Backward-compatible/public variables:
35
- NEXT_PUBLIC_BASE_URL=http://localhost:20128
36
- NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online
37
-
38
- # Optional outbound proxy variables for upstream provider calls
39
- # Lowercase variants are also supported: http_proxy, https_proxy, all_proxy, no_proxy
40
- # HTTP_PROXY=http://127.0.0.1:7890
41
- # HTTPS_PROXY=http://127.0.0.1:7890
42
- # ALL_PROXY=socks5://127.0.0.1:7890
43
- # NO_PROXY=localhost,127.0.0.1
44
- ENABLE_SOCKS5_PROXY=true
45
- NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=true
46
- ENABLE_TLS_FINGERPRINT=true
47
-
48
- # Optional CLI runtime overrides (Docker/host integration)
49
- # CLI_MODE=auto
50
- # CLI_EXTRA_PATHS=/host-cli/bin
51
- # CLI_CONFIG_HOME=/root
52
- # CLI_ALLOW_CONFIG_WRITES=true
53
- # CLI_CLAUDE_BIN=claude
54
- # CLI_CODEX_BIN=codex
55
- # CLI_DROID_BIN=droid
56
- # CLI_OPENCLAW_BIN=openclaw
57
- # CLI_CURSOR_BIN=agent
58
- # CLI_CLINE_BIN=cline
59
- # CLI_ROO_BIN=roo
60
- # CLI_CONTINUE_BIN=cn
61
-
62
- # Currently unused by application runtime (kept as reference)
63
- # INSTANCE_NAME=omniroute
64
-
65
- # Provider OAuth Credentials (optional — override hardcoded defaults)
66
- # These can also be set via data/provider-credentials.json
67
- # CLAUDE_OAUTH_CLIENT_ID=
68
- # GEMINI_OAUTH_CLIENT_ID=
69
- GEMINI_OAUTH_CLIENT_SECRET=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
70
- # GEMINI_CLI_OAUTH_CLIENT_ID=
71
- GEMINI_CLI_OAUTH_CLIENT_SECRET=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
72
- # CODEX_OAUTH_CLIENT_ID=
73
- # CODEX_OAUTH_CLIENT_SECRET=
74
- # QWEN_OAUTH_CLIENT_ID=
75
- # IFLOW_OAUTH_CLIENT_ID=
76
- IFLOW_OAUTH_CLIENT_SECRET=4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW
77
- # ANTIGRAVITY_OAUTH_CLIENT_ID=
78
- ANTIGRAVITY_OAUTH_CLIENT_SECRET=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
79
-
80
- # Provider User-Agent Overrides (optional — customize per-provider User-Agent headers)
81
- # Format: {PROVIDER_ID}_USER_AGENT=custom-value
82
- CLAUDE_USER_AGENT=claude-cli/1.0.83 (external, cli)
83
- CODEX_USER_AGENT=codex-cli/0.92.0 (Windows 10.0.26100; x64)
84
- GITHUB_USER_AGENT=GitHubCopilotChat/0.26.7
85
- ANTIGRAVITY_USER_AGENT=antigravity/1.104.0 darwin/arm64
86
- KIRO_USER_AGENT=AWS-SDK-JS/3.0.0 kiro-ide/1.0.0
87
- IFLOW_USER_AGENT=iFlow-Cli
88
- QWEN_USER_AGENT=google-api-nodejs-client/9.15.1
89
- CURSOR_USER_AGENT=connect-es/1.6.1
90
- GEMINI_CLI_USER_AGENT=google-api-nodejs-client/9.15.1
91
-
92
- # API Key Providers (Phase 1 + Phase 4)
93
- # Add via Dashboard → Providers → Add API Key, or set here
94
- # DEEPSEEK_API_KEY=
95
- # GROQ_API_KEY=
96
- # XAI_API_KEY=
97
- # MISTRAL_API_KEY=
98
- # PERPLEXITY_API_KEY=
99
- # TOGETHER_API_KEY=
100
- # FIREWORKS_API_KEY=
101
- # CEREBRAS_API_KEY=
102
- # COHERE_API_KEY=
103
- # NVIDIA_API_KEY=
104
-
105
- # Embedding Providers (optional — used by /v1/embeddings)
106
- # NEBIUS_API_KEY=
107
- # Provider keys above (openai, mistral, together, fireworks, nvidia) also work for embeddings
108
-
109
- # Timeout settings
110
- # FETCH_TIMEOUT_MS=120000
111
- # STREAM_IDLE_TIMEOUT_MS=60000
112
-
113
- # CORS configuration (default: * allows all origins)
114
- # CORS_ORIGINS=*
115
-
116
- # Logging
117
- # LOG_LEVEL=info
118
- # LOG_FORMAT=text
119
- LOG_TO_FILE=true
120
- # LOG_FILE_PATH=logs/application/app.log
121
- # LOG_MAX_FILE_SIZE=50M
122
- # LOG_RETENTION_DAYS=7
@@ -1,2 +0,0 @@
1
- exports.id=1909,exports.ids=[1909],exports.modules={2143:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{LA:()=>g});var e=c(42971),f=a([e]);let h=(e=(f.then?(await f)():f)[0]).z.object({id:e.z.string().min(1),alias:e.z.string().min(1),name:e.z.string().min(1),icon:e.z.string().min(1),color:e.z.string().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:e.z.string().optional(),website:e.z.string().url().optional(),passthroughModels:e.z.boolean().optional()}),i=e.z.record(e.z.string(),h);function g(a,b){let c=i.safeParse(a);if(!c.success){let a=c.error.issues.map(a=>` ${a.path.join(".")}: ${a.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${b} has invalid entries:
2
- ${a}`),Error(`Provider validation failed for ${b}`)}}d()}catch(a){d(a)}})},3845:(a,b,c)=>{var d={"./ar.json":[48464,8464],"./bg.json":[60944,944],"./da.json":[18976,8976],"./de.json":[22372,2372],"./en.json":[31960,1960],"./es.json":[87011,7011],"./fi.json":[96118,6118],"./fr.json":[53911,3911],"./he.json":[51248,1248],"./hu.json":[50496,496],"./id.json":[16930,6930],"./in.json":[30708,708],"./it.json":[32594,2594],"./ja.json":[37650,7650],"./ko.json":[79837,9837],"./ms.json":[55752,3371],"./nl.json":[35097,5097],"./no.json":[88220,8220],"./phi.json":[28706,8706],"./pl.json":[99119,9119],"./pt-BR.json":[41990,1990],"./pt.json":[11623,1623],"./ro.json":[71880,1880],"./ru.json":[61526,1526],"./sk.json":[25945,5945],"./sv.json":[85094,5094],"./th.json":[55047,5047],"./uk-UA.json":[11584,1584],"./vi.json":[22214,2214],"./zh-CN.json":[65521,5521]};function e(a){if(!c.o(d,a))return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b});var b=d[a],e=b[0];return c.e(b[1]).then(()=>c.t(e,19))}e.keys=()=>Object.keys(d),e.id=3845,a.exports=e},8979:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/diegosouzapw/dev/proxys/9router/src/app/not-found.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/diegosouzapw/dev/proxys/9router/src/app/not-found.tsx","default")},14004:(a,b,c)=>{Promise.resolve().then(c.bind(c,81227))},14521:(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))},15336:(a,b,c)=>{Promise.resolve().then(c.bind(c,95127))},21280:(a,b,c)=>{"use strict";c.d(b,{S_:()=>o});var d=c(22901),e=c(87068);let f="[HealthCheck]",g=new Set(["1","true","yes","on"]);function h(a){let b=process.env[a];return!!b&&g.has(b.trim().toLowerCase())}let i=null,j=0,k=null;async function l(){if(h("OMNIROUTE_HIDE_HEALTHCHECK_LOGS"))return!0;let a=Date.now();return null!==i&&a-j<3e4?i:null!==k?k:k=(async()=>{try{let b=await (0,d.V7)();return i=!0===b.hideHealthCheckLogs,j=a,i}catch{return!1}finally{k=null}})()}function m(a,...b){l().then(c=>{c||console.log(a,...b)})}function n(a,...b){l().then(c=>{c||console.error(a,...b)})}function o(){i=null,j=0}let p=!1;async function q(){try{let a=await (0,d.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await r(b)}catch(a){n(`${f} Error checking ${b.name||b.id}:`,a.message)}}catch(a){n(`${f} Sweep error:`,a.message)}}async function r(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,e.Ny)(a.provider)){let b=new Date().toISOString();await (0,d.rj)(a.id,{lastHealthCheckAt:b}),m(`${f} Skipping ${a.provider}/${a.name||a.email||a.id} (refresh unsupported)`);return}let c=a.lastHealthCheckAt?new Date(a.lastHealthCheckAt).getTime():0;if(Date.now()-c<60*b*1e3)return;m(`${f} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let g={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await l(),i=await (0,e.iD)(a.provider,g,{info:(a,b)=>{h||console.log(`${f} [${a}] ${b}`)},warn:(a,b)=>{h||console.warn(`${f} [${a}] ${b}`)},error:(a,b,c)=>{h||console.error(`${f} [${a}] ${b}`,c||"")}}),j=new Date().toISOString();if((0,e.jT)(i)){await (0,d.rj)(a.id,{lastHealthCheckAt:j,testStatus:"expired",lastError:`Refresh token consumed (${i.error}). Please re-authenticate this account.`,lastErrorAt:j,lastErrorType:i.error,lastErrorSource:"oauth",errorCode:i.error,isActive:!1,refreshToken:null}),n(`${f} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${i.error}). Connection deactivated. Re-authenticate to restore.`);return}if(i&&i.accessToken){let b={accessToken:i.accessToken,lastHealthCheckAt:j,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};i.refreshToken&&(b.refreshToken=i.refreshToken),i.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*i.expiresIn).toISOString()),await (0,d.rj)(a.id,b),m(`${f} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,d.rj)(a.id,{lastHealthCheckAt:j,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:j,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),function(a,...b){l().then(c=>{c||console.warn(a,...b)})}(`${f} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}h("OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK")||(p=!0,m(`${f} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{q(),setInterval(q,6e4)},1e4))},22746:(a,b,c)=>{"use strict";c.d(b,{CardSkeleton:()=>j,PageLoading:()=>h,Skeleton:()=>i,Spinner:()=>g,default:()=>k});var d=c(48249),e=c(31846);let f={sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"};function g({size:a="md",className:b,label:c="Loading"}){return(0,d.jsxs)("span",{role:"status","aria-live":"polite","aria-label":c,className:(0,e.cn)("inline-flex",b),children:[(0,d.jsx)("span",{className:"sr-only",children:c}),(0,d.jsx)("span",{"aria-hidden":"true",className:(0,e.cn)("material-symbols-outlined text-primary animate-spin motion-reduce:animate-none",f[a]),children:"progress_activity"})]})}function h({message:a="Loading...",className:b}){return(0,d.jsxs)("div",{className:(0,e.cn)("fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg px-6",b),role:"status","aria-live":"polite","aria-busy":"true",children:[(0,d.jsx)(g,{size:"xl"}),(0,d.jsx)("p",{className:"mt-4 text-text-muted text-center",children:a})]})}function i({className:a,...b}){return(0,d.jsx)("div",{"aria-hidden":"true",className:(0,e.cn)("animate-pulse motion-reduce:animate-none rounded-lg bg-border",a),...b})}function j(){return(0,d.jsxs)("div",{className:"p-6 rounded-xl border border-border bg-surface","aria-hidden":"true",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4 gap-4",children:[(0,d.jsx)(i,{className:"h-4 w-24"}),(0,d.jsx)(i,{className:"size-10 rounded-lg"})]}),(0,d.jsx)(i,{className:"h-8 w-16 mb-2"}),(0,d.jsx)(i,{className:"h-3 w-20"})]})}function k({type:a="spinner",className:b,message:c,size:e,label:f,...k}){switch(a){case"page":return(0,d.jsx)(h,{message:c,className:b});case"skeleton":return(0,d.jsx)(i,{className:b,...k});case"card":return(0,d.jsx)(j,{});default:return(0,d.jsx)(g,{size:e,className:b,label:f})}}},30758:a=>{"use strict";a.exports={rE:"2.0.14"}},30807:(a,b,c)=>{Promise.resolve().then(c.bind(c,62626)),Promise.resolve().then(c.bind(c,75146))},31846:(a,b,c)=>{"use strict";function d(...a){return a.filter(Boolean).join(" ").replace(/\s+/g," ").trim()}c.d(b,{cn:()=>d})},32444:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/diegosouzapw/dev/proxys/9router/src/shared/components/ThemeProvider.tsx","ThemeProvider")},33314:(a,b,c)=>{Promise.resolve().then(c.bind(c,64385))},45300:(a,b,c)=>{Promise.resolve().then(c.bind(c,8979))},47508:(a,b,c)=>{Promise.resolve().then(c.bind(c,73857))},47695:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>k,F:()=>j});var e=c(31417),f=c(300),g=c(51729),h=a([g]);g=(h.then?(await h)():h)[0];let i=(0,e.v)()((0,f.Zr)((a,b)=>({theme:g.B2.defaultTheme,colorTheme:"coral",customColor:"#3b82f6",setTheme:b=>{a({theme:b})},setColorTheme:c=>{a({colorTheme:c}),b().customColor},setCustomColorTheme:b=>{let c=function(a){let b=(a||"").trim(),c=b.startsWith("#")?b:`#${b}`;return/^#([0-9a-fA-F]{6})$/.test(c)?c.toLowerCase():"#3b82f6"}(b);a({colorTheme:"custom",customColor:c})},toggleTheme:()=>{let c=b().theme,d="dark"===c?"light":"dark";a({theme:d})},initTheme:()=>{let{theme:a,colorTheme:c,customColor:d}=b()}}),{name:g.B2.storageKey})),j={coral:"#e54d5e",blue:"#3b82f6",red:"#ef4444",green:"#22c55e",violet:"#8b5cf6",orange:"#f97316",cyan:"#06b6d4"},k=i;d()}catch(a){d(a)}})},47825:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{KC:()=>e.KC,Xg:()=>e.Xg});var e=c(97319),f=c(70689),g=a([f]);f=(g.then?(await g)():g)[0],Object.entries(f.Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(e.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),d()}catch(a){d(a)}})},49226:(a,b,c)=>{"use strict";c.d(b,{A:()=>l});var d=c(90357),e=c(22901);let{dashboardPort:f}=(0,c(83238).z)(),g=process.env.BASE_URL||"http://localhost:20128";class h{constructor(a=null,b=15){this.machineId=a,this.intervalMinutes=b,this.intervalId=null}async initializeMachineId(){this.machineId||(this.machineId=await (0,d.Xj)())}async start(){this.intervalId||(await this.initializeMachineId(),setTimeout(()=>{this.syncWithRetry().catch(()=>{})},3e4),this.intervalId=setInterval(()=>{this.syncWithRetry().catch(()=>{})},60*this.intervalMinutes*1e3))}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null)}async syncWithRetry(a=1){for(let b=1;b<=a;b++)try{return await this.sync()}catch(d){if(b===a)return null;let c=Math.min(1e3*Math.pow(2,b),1e4);await new Promise(a=>setTimeout(a,c))}}async sync(){if(!await (0,e.Nx)())return null;await this.initializeMachineId();let a=await fetch(`${g}/api/sync/cloud`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({machineId:this.machineId,action:"sync"})});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Sync failed");return await a.json()}isRunning(){return null!==this.intervalId}}let i=null;async function j(a=null,b=15){return i||(i=new h(a,b)),i}async function k(){try{await (0,e.bI)();let a=await j(null,15);return await a.start(),a}catch(a){throw console.error("[CloudSync] Error initializing scheduler:",a),a}}a=c.hmd(a),c.c[c.s]===a&&k().catch(a=>console.error("[CloudSync] init failed:",a));let l=k},50969:(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))},51466:(a,b,c)=>{Promise.resolve().then(c.bind(c,97507))},51729:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B2:()=>j,MA:()=>f.MA,Q2:()=>f.Q2,fg:()=>f.fg,vQ:()=>i,zN:()=>f.zN});var e=c(30758),f=c(70689),g=c(47825),h=a([f,g]);[f,g]=h.then?(await h)():h;let i={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:e.rE},j={storageKey:"theme",defaultTheme:"system"};d()}catch(a){d(a)}})},61135:()=>{},62536:(a,b,c)=>{Promise.resolve().then(c.bind(c,65909))},64385:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/diegosouzapw/dev/proxys/9router/src/app/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/diegosouzapw/dev/proxys/9router/src/app/error.tsx","default")},65909:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(48249),e=c(22746);function f(){return(0,d.jsx)(e.PageLoading,{message:"Loading OmniRoute..."})}},66740:(a,b,c)=>{Promise.resolve().then(c.bind(c,67045))},67045:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-bg text-text-main font-[system-ui,-apple-system,sans-serif] text-center m-0",children:(0,d.jsxs)("main",{role:"alert","aria-live":"assertive",className:"flex flex-col items-center",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4","aria-hidden":"true",children:"⚠️"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-[15px] text-text-muted max-w-[400px] leading-relaxed mb-6",children:"An unexpected error occurred. This has been logged and our team will investigate."}),!1,(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row gap-3",children:[(0,d.jsx)("button",{onClick:b,"aria-label":"Retry loading the page",className:"px-8 py-3 rounded-[10px] text-white border-none text-sm font-semibold cursor-pointer transition-transform duration-200 motion-reduce:transition-none motion-reduce:transform-none shadow-warm hover:-translate-y-0.5 bg-gradient-to-br from-primary to-primary-hover focus:outline-2 focus:outline-offset-2 focus:outline-primary",children:"Try Again"}),(0,d.jsx)("a",{href:"/status",className:"px-8 py-3 rounded-[10px] text-sm font-semibold border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Open system status",children:"System Status"})]})]})})})}},70559:(a,b,c)=>{Promise.resolve().then(c.bind(c,86392)),Promise.resolve().then(c.bind(c,32444))},70689:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{DI:()=>o,IS:()=>k,JH:()=>n,MA:()=>q,Q2:()=>p,fg:()=>m,gb:()=>h,mq:()=>g,wG:()=>j,wb:()=>r,zN:()=>l,zt:()=>i});var e=c(2143),f=a([e]);e=(f.then?(await f)():f)[0];let k={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},l={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},m={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"}},n="openai-compatible-",o="anthropic-compatible-";function g(a){return"string"==typeof a&&a.startsWith(n)}function h(a){return"string"==typeof a&&a.startsWith(o)}let p={...k,...l,...m},q={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function i(a){for(let b of Object.values(p))if(b.alias===a||b.id===a)return b;return null}function j(a){let b=p[a];return b?.alias||a}Object.values(p).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(p).reduce((a,b)=>(a[b.id]=b.alias,a),{});let r=["antigravity","kiro","github","codex","claude"];(0,e.LA)(k,"FREE_PROVIDERS"),(0,e.LA)(l,"OAUTH_PROVIDERS"),(0,e.LA)(m,"APIKEY_PROVIDERS"),d()}catch(a){d(a)}})},73857:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(48249),e=c(2116),f=c.n(e);function g(){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-bg text-text-main text-center",role:"main","aria-labelledby":"not-found-title",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-primary to-primary-hover bg-clip-text text-transparent","aria-hidden":"true",children:"404"}),(0,d.jsx)("h1",{id:"not-found-title",className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-text-muted max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row items-center gap-3",children:[(0,d.jsx)(f(),{href:"/dashboard",className:"px-8 py-3 rounded-xl text-white text-sm font-medium no-underline transition-all duration-200 motion-reduce:transition-none shadow-warm hover:-translate-y-0.5 bg-gradient-to-br from-primary to-primary-hover hover:shadow-elevated focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Return to dashboard",children:"Go to Dashboard"}),(0,d.jsx)(f(),{href:"/status",className:"px-8 py-3 rounded-xl text-sm font-medium no-underline border border-border hover:bg-bg-alt transition-colors duration-200 motion-reduce:transition-none focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Open system status page",children:"System Status"})]})]})}},75146:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{ThemeProvider:()=>h});var e=c(48249);c(67484);var f=c(47695),g=a([f]);function h({children:a}){let{initTheme:b}=(0,f.A)();return(0,e.jsx)(e.Fragment,{children:a})}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>m,metadata:()=>l});var d=c(5735),e=c(50609),f=c.n(e);c(61135);var g=c(32444);c(91057);var h=c(68625),i=c(62026),j=c(28440),k=c(83750);let l={title:"OmniRoute — AI Gateway for Multi-Provider LLMs",description:"OmniRoute is an AI gateway for multi-provider LLMs. One endpoint for all your AI providers.",icons:{icon:"/favicon.svg",apple:"/apple-touch-icon.svg"}};async function m({children:a}){let b=await (0,i.A)(),c=await (0,j.A)(),e=k.rB.includes(b);return(0,d.jsxs)("html",{lang:b,dir:e?"rtl":"ltr",suppressHydrationWarning:!0,children:[(0,d.jsxs)("head",{children:[(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),(0,d.jsx)("link",{href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap",rel:"stylesheet"})]}),(0,d.jsxs)("body",{className:`${f().variable} font-sans antialiased`,suppressHydrationWarning:!0,children:[(0,d.jsx)("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-50 focus:px-4 focus:py-2 focus:bg-[#6366f1] focus:text-white focus:rounded-lg focus:text-sm focus:font-semibold focus:shadow-lg",children:"Skip to content"}),(0,d.jsx)(h.A,{locale:b,messages:c,children:(0,d.jsx)(g.ThemeProvider,{children:a})})]})]})}},78335:()=>{},79803:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(29389),e=c(65573),f=c(83750);let g=(0,d.A)(async()=>{let a=await (0,e.UL)(),b=a.get(f.CL)?.value||"";b||(b=(await (0,e.b3)()).get("x-locale")||""),f.YZ.includes(b)||(b=f.Xn);let d=(await c(3845)(`./${b}.json`)).default;return{locale:b,messages:d}})},81227:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/diegosouzapw/dev/proxys/9router/src/app/global-error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/diegosouzapw/dev/proxys/9router/src/app/global-error.tsx","default")},83238:(a,b,c)=>{"use strict";function d(a,b){if(!a)return b;let c=Number.parseInt(String(a),10);return!Number.isFinite(c)||c<1||c>65535?b:c}function e(){let a=d(process.env.OMNIROUTE_PORT||process.env.PORT,20128),b=!!process.env.API_PORT,c=!!process.env.DASHBOARD_PORT;return{port:a,apiPort:d(process.env.API_PORT,a),dashboardPort:d(process.env.DASHBOARD_PORT,a),apiPortExplicit:b,dashboardPortExplicit:c}}c.d(b,{z:()=>e})},83750:(a,b,c)=>{"use strict";c.d(b,{CL:()=>g,Xn:()=>e,YZ:()=>d,rB:()=>f});let d=["en","pt-BR","es","fr","it","ru","zh-CN","de","in","th","uk-UA","ar","ja","vi","bg","da","fi","he","hu","id","ko","ms","nl","no","pt","ro","pl","sk","sv","phi"],e="en",f=["ar","he"],g="NEXT_LOCALE"},90357:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>e});var d=c(19713);async function e(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let a=(0,d.machineIdSync)();return(await Promise.resolve().then(c.t.bind(c,55511,23))).createHash("sha256").update(a+b).digest("hex").substring(0,16)}catch(a){return console.log("Error getting machine ID:",a),crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){let b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)})}}},91057:(a,b,c)=>{"use strict";var d=c(49226);c(21280);let e=!1;(async function(){if(!e)try{await (0,d.A)(),e=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return e})().catch(a=>console.error("[CloudSync] ensure failed:",a))},95127:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/diegosouzapw/dev/proxys/9router/src/app/loading.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/diegosouzapw/dev/proxys/9router/src/app/loading.tsx","default")},96487:()=>{},97319:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>g,vq:()=>f,KC:()=>h});let d={claude:{id:"claude",alias:"cc",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/1.0.83 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.55.1","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":"arm64","X-Stainless-Os":"MacOS","X-Stainless-Timeout":"60"},oauth:{clientIdEnv:"CLAUDE_OAUTH_CLIENT_ID",clientIdDefault:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://console.anthropic.com/v1/oauth/token"},models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}]},gemini:{id:"gemini",alias:"gemini",format:"gemini",executor:"default",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",urlBuilder:(a,b,c)=>`${a}/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"x-goog-api-key",oauth:{clientIdEnv:"GEMINI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3.1-flash",name:"Gemini 3.1 Flash"},{id:"gemini-3-pro-preview",name:"Gemini 3.0 Pro Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3.0 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},"gemini-cli":{id:"gemini-cli",alias:"gc",format:"gemini-cli",executor:"gemini-cli",baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",urlBuilder:(a,b,c)=>`${a}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"oauth",authHeader:"bearer",oauth:{clientIdEnv:"GEMINI_CLI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_CLI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3.1-flash",name:"Gemini 3.1 Flash"},{id:"gemini-3-flash-preview",name:"Gemini 3.0 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3.0 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},codex:{id:"codex",alias:"cx",format:"openai-responses",executor:"codex",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",headers:{Version:"0.92.0","Openai-Beta":"responses=experimental","User-Agent":"codex-cli/0.92.0 (Windows 10.0.26100; x64)"},oauth:{clientIdEnv:"CODEX_OAUTH_CLIENT_ID",clientIdDefault:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecretEnv:"CODEX_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://auth.openai.com/oauth/token"},models:[{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}]},qwen:{id:"qwen",alias:"qw",format:"openai",executor:"default",baseUrl:"https://portal.qwen.ai/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},oauth:{clientIdEnv:"QWEN_OAUTH_CLIENT_ID",clientIdDefault:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"}]},iflow:{id:"iflow",alias:"if",format:"openai",executor:"iflow",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"kimi-k2",name:"Kimi K2"},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3.2-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-v3.2-reasoner",name:"DeepSeek V3.2 Reasoner"},{id:"minimax-m2.1",name:"MiniMax M2.1"},{id:"glm-4.7",name:"GLM 4.7"}]},antigravity:{id:"antigravity",alias:"ag",format:"antigravity",executor:"antigravity",baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://cloudcode-pa.googleapis.com"],urlBuilder:(a,b,c)=>`${a}${c?"/v1internal:streamGenerateContent?alt=sse":"/v1internal:generateContent"}`,authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"antigravity/1.104.0 darwin/arm64"},oauth:{clientIdEnv:"ANTIGRAVITY_OAUTH_CLIENT_ID",clientIdDefault:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecretEnv:"ANTIGRAVITY_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low"},{id:"gemini-3.1-flash",name:"Gemini 3.1 Flash"},{id:"gemini-3-flash",name:"Gemini 3.0 Flash"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}]},github:{id:"github",alias:"gh",format:"openai",executor:"github",baseUrl:"https://api.githubcopilot.com/chat/completions",responsesBaseUrl:"https://api.githubcopilot.com/responses",authType:"oauth",authHeader:"bearer",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},models:[{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",targetFormat:"openai-responses"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex",targetFormat:"openai-responses"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5 (Full ID)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}]},kiro:{id:"kiro",alias:"kr",format:"kiro",executor:"kiro",baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",authType:"oauth",authHeader:"bearer",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},oauth:{tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},models:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"}]},cursor:{id:"cursor",alias:"cu",format:"cursor",executor:"cursor",baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",authType:"oauth",authHeader:"bearer",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3",models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"}]},openai:{id:"openai",alias:"openai",format:"openai",executor:"default",baseUrl:"https://api.openai.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}]},anthropic:{id:"anthropic",alias:"anthropic",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01"},models:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}]},openrouter:{id:"openrouter",alias:"openrouter",format:"openai",executor:"default",baseUrl:"https://openrouter.ai/api/v1/chat/completions",authType:"apikey",authHeader:"bearer",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},models:[{id:"auto",name:"Auto (Best Available)"}]},glm:{id:"glm",alias:"glm",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM 4.6"},{id:"glm-4.5v",name:"GLM 4.5V (Vision)"},{id:"glm-4.5",name:"GLM 4.5"},{id:"glm-4.5-air",name:"GLM 4.5 Air"},{id:"glm-4-32b",name:"GLM 4 32B"}]},kimi:{id:"kimi",alias:"kimi",format:"openai",executor:"default",baseUrl:"https://api.moonshot.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",modelsUrl:"https://api.kilo.ai/api/openrouter/models",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"openrouter/free",name:"Free Models Router"},{id:"qwen/qwen3-vl-235b-a22b-thinking",name:"Qwen3 VL 235B A22B Thinking"},{id:"qwen/qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen/qwen3-vl-30b-a3b-thinking",name:"Qwen3 VL 30B A3B Thinking"},{id:"stepfun/step-3.5-flash:free",name:"StepFun Step 3.5 Flash"},{id:"arcee-ai/trinity-large-preview:free",name:"Arcee AI Trinity Large Preview"},{id:"openai/gpt-4o-mini",name:"GPT-4o Mini"},{id:"openai/gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"openai/gpt-5-nano",name:"GPT-5 Nano"},{id:"openai/gpt-5-mini",name:"GPT-5 Mini"},{id:"anthropic/claude-3-haiku",name:"Claude 3 Haiku"},{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"google/gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"deepseek/deepseek-chat-v3.1",name:"DeepSeek V3.1"},{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-scout",name:"Llama 4 Scout"},{id:"meta-llama/llama-4-maverick",name:"Llama 4 Maverick"},{id:"qwen/qwen3-8b",name:"Qwen3 8B"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"qwen/qwen3-coder",name:"Qwen3 Coder 480B"},{id:"qwen/qwq-32b",name:"QwQ 32B"},{id:"mistralai/mistral-small-24b-instruct-2501",name:"Mistral Small 3"},{id:"mistralai/mistral-7b-instruct",name:"Mistral 7B"},{id:"x-ai/grok-code-fast-1",name:"Grok Code Fast 1"},{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},blackbox:{id:"blackbox",alias:"bb",format:"openai",executor:"default",baseUrl:"https://api.blackbox.ai/v1/chat/completions",modelsUrl:"https://api.blackbox.ai/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"deepseek-v3",name:"DeepSeek V3"},{id:"blackboxai",name:"Blackbox AI"},{id:"blackboxai-pro",name:"Blackbox AI Pro"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},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]||[]}},97507:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-[60vh] p-6 text-center",role:"alert","aria-live":"assertive",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4","aria-hidden":"true",children:"\uD83D\uDD27"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2 text-[var(--color-text-main)]",children:"Internal Server Error"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--color-text-muted)] max-w-[400px] leading-relaxed mb-2",children:"Something went wrong while processing your request. Our team has been notified and is working on a fix."}),a?.digest&&(0,d.jsxs)("p",{className:"text-xs text-[var(--color-text-muted)] mb-6 font-mono",children:["Error ID: ",a.digest]}),!1,(0,d.jsxs)("div",{className:"flex gap-3",children:[(0,d.jsx)("button",{onClick:b,"aria-label":"Retry loading the page",className:"px-6 py-2.5 rounded-lg text-white text-sm font-semibold cursor-pointer transition-all duration-200 motion-reduce:transition-none bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]",children:"Try Again"}),(0,d.jsx)("a",{href:"/dashboard",className:"px-6 py-2.5 rounded-lg text-[var(--color-text-main)] text-sm font-semibold cursor-pointer transition-all duration-200 motion-reduce:transition-none border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]","aria-label":"Return to dashboard",children:"Go to Dashboard"}),(0,d.jsx)("a",{href:"/status",className:"px-6 py-2.5 rounded-lg text-[var(--color-text-main)] text-sm font-semibold cursor-pointer transition-all duration-200 motion-reduce:transition-none border border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] no-underline focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]","aria-label":"Open system status",children:"System Status"})]})]})}}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=7167,exports.ids=[7167],exports.modules={15102:(a,b,c)=>{c.d(b,{Uk:()=>f,bV:()=>e,lw:()=>g});let d={openai:{id:"openai",baseUrl:"https://api.openai.com/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"gpt-image-1",name:"GPT Image 1"},{id:"dall-e-3",name:"DALL-E 3"},{id:"dall-e-2",name:"DALL-E 2"}],supportedSizes:["1024x1024","1024x1792","1792x1024","256x256","512x512"]},xai:{id:"xai",baseUrl:"https://api.x.ai/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"grok-2-image-1212",name:"Grok 2 Image"}],supportedSizes:["1024x1024"]},together:{id:"together",baseUrl:"https://api.together.xyz/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"black-forest-labs/FLUX.1.1-pro",name:"FLUX 1.1 Pro"},{id:"black-forest-labs/FLUX.1-schnell-Free",name:"FLUX 1 Schnell (Free)"},{id:"stabilityai/stable-diffusion-xl-base-1.0",name:"SDXL Base 1.0"}],supportedSizes:["1024x1024","512x512"]},fireworks:{id:"fireworks",baseUrl:"https://api.fireworks.ai/inference/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"accounts/fireworks/models/flux-1-dev-fp8",name:"FLUX 1 Dev FP8"},{id:"accounts/fireworks/models/stable-diffusion-xl-1024-v1-0",name:"SDXL 1024 v1.0"}],supportedSizes:["1024x1024","512x512"]},antigravity:{id:"antigravity",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"oauth",authHeader:"bearer",format:"gemini-image",models:[{id:"gemini-2.5-flash-preview-image-generation",name:"Nano Banana"}],supportedSizes:["1024x1024"]},nebius:{id:"nebius",baseUrl:"https://api.tokenfactory.nebius.com/v1/images/generations",fallbackUrl:"https://api.studio.nebius.com/v1/images/generations",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"black-forest-labs/flux-schnell",name:"FLUX.1 Schnell"},{id:"black-forest-labs/flux-dev",name:"FLUX.1 Dev"}],supportedSizes:["1024x1024","512x512"]},hyperbolic:{id:"hyperbolic",baseUrl:"https://api.hyperbolic.xyz/v1/image/generation",authType:"apikey",authHeader:"bearer",format:"hyperbolic",models:[{id:"SDXL1.0-base",name:"SDXL 1.0 Base"},{id:"SD2",name:"Stable Diffusion 2"},{id:"FLUX.1-dev",name:"FLUX.1 Dev"}],supportedSizes:["1024x1024","512x512"]},nanobanana:{id:"nanobanana",baseUrl:"https://api.nanobananaapi.ai/api/v1/nanobanana/generate",proUrl:"https://api.nanobananaapi.ai/api/v1/nanobanana/generate-pro",authType:"apikey",authHeader:"bearer",format:"nanobanana",models:[{id:"nanobanana-flash",name:"NanoBanana Flash (Gemini 2.5 Flash)"},{id:"nanobanana-pro",name:"NanoBanana Pro (Gemini 3 Pro)"}],supportedSizes:["1024x1024"]},sdwebui:{id:"sdwebui",baseUrl:"http://localhost:7860/sdapi/v1/txt2img",authType:"none",authHeader:"none",format:"sdwebui",models:[{id:"stable-diffusion-v1-5",name:"Stable Diffusion v1.5"},{id:"sdxl-base-1.0",name:"SDXL Base 1.0"}],supportedSizes:["512x512","768x768","1024x1024"]},comfyui:{id:"comfyui",baseUrl:"http://localhost:8188",authType:"none",authHeader:"none",format:"comfyui",models:[{id:"flux-dev",name:"FLUX Dev"},{id:"sdxl",name:"SDXL"}],supportedSizes:["512x512","768x768","1024x1024"]}};function e(a){return d[a]||null}function f(a){if(!a)return{provider:null,model:null};for(let[b,c]of Object.entries(d))if(a.startsWith(b+"/"))return{provider:b,model:a.slice(b.length+1)};for(let[b,c]of Object.entries(d))if(c.models.some(b=>b.id===a))return{provider:b,model:a};return{provider:null,model:a}}function g(){let a=[];for(let[b,c]of Object.entries(d))for(let d of c.models)a.push({id:`${b}/${d.id}`,name:d.name,provider:b,supportedSizes:c.supportedSizes});return a}},39548:(a,b,c)=>{c.d(b,{k:()=>g});var d=c(15102),e=c(19704),f=c(92310);async function g({body:a,credentials:b,log:c,resolvedProvider:e=null}){let f,g;if(e){f=e;let b=a.model||"";g=b.startsWith(f+"/")?b.slice(f.length+1):b}else{let b=(0,d.Uk)(a.model);f=b.provider,g=b.model}if(!f)return{success:!1,status:400,error:`Invalid image model: ${a.model}. Use format: provider/model`};let j=(0,d.bV)(f);if(!j){if(!e)return{success:!1,status:400,error:`Unknown image provider: ${f}`};c&&c.info("IMAGE",`Custom model ${f}/${g} — using OpenAI-compatible handler`);let d={id:f,baseUrl:b?.baseUrl||"https://generativelanguage.googleapis.com/v1beta/openai/images/generations",authType:"apikey",authHeader:"bearer",format:"openai"};return i({model:g,provider:f,providerConfig:d,body:a,credentials:b,log:c})}return"gemini-image"===j.format?h({model:g,providerConfig:j,body:a,credentials:b,log:c}):"hyperbolic"===j.format?k({model:g,provider:f,providerConfig:j,body:a,credentials:b,log:c}):"nanobanana"===j.format?l({model:g,provider:f,providerConfig:j,body:a,credentials:b,log:c}):"sdwebui"===j.format?m({model:g,provider:f,providerConfig:j,body:a,log:c}):"comfyui"===j.format?n({model:g,provider:f,providerConfig:j,body:a,log:c}):i({model:g,provider:f,providerConfig:j,body:a,credentials:b,log:c})}async function h({model:a,providerConfig:b,body:c,credentials:d,log:f}){let g=Date.now(),h=`${b.baseUrl}/${a}:generateContent`,i="antigravity",j={model:c.model,prompt:"string"==typeof c.prompt?c.prompt.slice(0,200):String(c.prompt??"").slice(0,200),size:c.size||"default",n:c.n||1},k={contents:[{parts:[{text:c.prompt}]}],generationConfig:{responseModalities:["TEXT","IMAGE"]}},l=d.accessToken||d.apiKey,m={"Content-Type":"application/json",Authorization:`Bearer ${l}`};if(f){let b="string"==typeof c.prompt?c.prompt.slice(0,60):String(c.prompt??"").slice(0,60);f.info("IMAGE",`antigravity/${a} (gemini) | prompt: "${b}..." | format: gemini-image`)}try{let b=await fetch(h,{method:"POST",headers:m,body:JSON.stringify(k)});if(!b.ok){let c=await b.text();return f&&f.error("IMAGE",`antigravity error ${b.status}: ${c.slice(0,200)}`),(0,e.gK)({method:"POST",path:"/v1/images/generations",status:b.status,model:`antigravity/${a}`,provider:i,duration:Date.now()-g,error:c.slice(0,500),requestBody:j}).catch(()=>{}),{success:!1,status:b.status,error:c}}let d=await b.json(),l=[];for(let a of d.candidates||[]){let b=a.content?.parts||[];for(let a of b)a.inlineData&&l.push({b64_json:a.inlineData.data,revised_prompt:b.find(a=>a.text)?.text||c.prompt})}return(0,e.gK)({method:"POST",path:"/v1/images/generations",status:200,model:`antigravity/${a}`,provider:i,duration:Date.now()-g,tokens:{prompt_tokens:0,completion_tokens:0},requestBody:j,responseBody:{images_count:l.length}}).catch(()=>{}),{success:!0,data:{created:Math.floor(Date.now()/1e3),data:l}}}catch(b){return f&&f.error("IMAGE",`antigravity fetch error: ${b.message}`),(0,e.gK)({method:"POST",path:"/v1/images/generations",status:502,model:`antigravity/${a}`,provider:i,duration:Date.now()-g,error:b.message,requestBody:j}).catch(()=>{}),{success:!1,status:502,error:`Image provider error: ${b.message}`}}}async function i({model:a,provider:b,providerConfig:c,body:d,credentials:f,log:g}){let h=Date.now(),i={model:d.model,prompt:"string"==typeof d.prompt?d.prompt.slice(0,200):String(d.prompt??"").slice(0,200),size:d.size||"default",n:d.n||1,quality:d.quality||void 0},k={model:a,prompt:d.prompt};void 0!==d.n&&(k.n=d.n),void 0!==d.size&&(k.size=d.size),void 0!==d.quality&&(k.quality=d.quality),void 0!==d.response_format&&(k.response_format=d.response_format),void 0!==d.style&&(k.style=d.style);let l={"Content-Type":"application/json"},m=f.apiKey||f.accessToken;if("bearer"===c.authHeader?l.Authorization=`Bearer ${m}`:"x-api-key"===c.authHeader&&(l["x-api-key"]=m),g){let c="string"==typeof d.prompt?d.prompt.slice(0,60):String(d.prompt??"").slice(0,60);g.info("IMAGE",`${b}/${a} | prompt: "${c}..." | size: ${d.size||"default"}`)}let n=JSON.stringify(k),o=await j(c.baseUrl,l,n,b,g);return!o.success&&c.fallbackUrl&&[404,410,502,503].includes(o.status)&&(g&&g.info("IMAGE",`${b}: primary URL failed (${o.status}), trying fallback...`),o=await j(c.fallbackUrl,l,n,b,g)),(0,e.gK)({method:"POST",path:"/v1/images/generations",status:o.status||(o.success?200:502),model:`${b}/${a}`,provider:b,duration:Date.now()-h,tokens:{prompt_tokens:0,completion_tokens:0},error:o.success?null:"string"==typeof o.error?o.error.slice(0,500):null,requestBody:i,responseBody:o.success?{images_count:o.data?.data?.length||0}:null}).catch(()=>{}),o}async function j(a,b,c,d,e){try{let f=await fetch(a,{method:"POST",headers:b,body:c});if(!f.ok){let a=await f.text();return e&&e.error("IMAGE",`${d} error ${f.status}: ${a.slice(0,200)}`),{success:!1,status:f.status,error:a}}let g=await f.json();return{success:!0,data:{created:g.created||Math.floor(Date.now()/1e3),data:g.data||[]}}}catch(a){return e&&e.error("IMAGE",`${d} fetch error: ${a.message}`),{success:!1,status:502,error:`Image provider error: ${a.message}`}}}async function k({model:a,provider:b,providerConfig:c,body:d,credentials:f,log:g}){let h=Date.now(),i=f.apiKey||f.accessToken,[j,k]=(d.size||"1024x1024").split("x").map(Number),l={model_name:a,prompt:d.prompt,height:k||1024,width:j||1024,backend:"auto"};if(g){let c=String(d.prompt??"").slice(0,60);g.info("IMAGE",`${b}/${a} (hyperbolic) | prompt: "${c}..."`)}try{let f=await fetch(c.baseUrl,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify(l)});if(!f.ok){let c=await f.text();return g&&g.error("IMAGE",`${b} error ${f.status}: ${c.slice(0,200)}`),(0,e.gK)({method:"POST",path:"/v1/images/generations",status:f.status,model:`${b}/${a}`,provider:b,duration:Date.now()-h,error:c.slice(0,500)}).catch(()=>{}),{success:!1,status:f.status,error:c}}let j=((await f.json()).images||[]).map(a=>({b64_json:a.image,revised_prompt:d.prompt}));return(0,e.gK)({method:"POST",path:"/v1/images/generations",status:200,model:`${b}/${a}`,provider:b,duration:Date.now()-h,responseBody:{images_count:j.length}}).catch(()=>{}),{success:!0,data:{created:Math.floor(Date.now()/1e3),data:j}}}catch(c){return g&&g.error("IMAGE",`${b} fetch error: ${c.message}`),(0,e.gK)({method:"POST",path:"/v1/images/generations",status:502,model:`${b}/${a}`,provider:b,duration:Date.now()-h,error:c.message}).catch(()=>{}),{success:!1,status:502,error:`Image provider error: ${c.message}`}}}async function l({model:a,provider:b,providerConfig:c,body:d,credentials:f,log:g}){let h=Date.now(),i=f.apiKey||f.accessToken,j="nanobanana-pro"===a,k=j&&c.proUrl?c.proUrl:c.baseUrl,l={prompt:d.prompt};if(g){let c=String(d.prompt??"").slice(0,60);g.info("IMAGE",`${b}/${a} (nanobanana ${j?"pro":"flash"}) | prompt: "${c}..."`)}try{let c=await fetch(k,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify(l)});if(!c.ok){let d=await c.text();return g&&g.error("IMAGE",`${b} error ${c.status}: ${d.slice(0,200)}`),(0,e.gK)({method:"POST",path:"/v1/images/generations",status:c.status,model:`${b}/${a}`,provider:b,duration:Date.now()-h,error:d.slice(0,500)}).catch(()=>{}),{success:!1,status:c.status,error:d}}let f=await c.json(),j=[];if(f.image)j.push({b64_json:f.image,revised_prompt:d.prompt});else if(f.images)for(let a of f.images)j.push({b64_json:"string"==typeof a?a:a.image||a.data,revised_prompt:d.prompt});else if(f.data)return{success:!0,data:f};return(0,e.gK)({method:"POST",path:"/v1/images/generations",status:200,model:`${b}/${a}`,provider:b,duration:Date.now()-h,responseBody:{images_count:j.length}}).catch(()=>{}),{success:!0,data:{created:Math.floor(Date.now()/1e3),data:j}}}catch(c){return g&&g.error("IMAGE",`${b} fetch error: ${c.message}`),(0,e.gK)({method:"POST",path:"/v1/images/generations",status:502,model:`${b}/${a}`,provider:b,duration:Date.now()-h,error:c.message}).catch(()=>{}),{success:!1,status:502,error:`Image provider error: ${c.message}`}}}async function m({model:a,provider:b,providerConfig:c,body:d,log:f}){let g=Date.now(),[h,i]=(d.size||"512x512").split("x").map(Number),j={prompt:d.prompt,negative_prompt:d.negative_prompt||"",width:h||512,height:i||512,steps:d.steps||20,cfg_scale:d.cfg_scale||7,sampler_name:d.sampler||"Euler a",batch_size:d.n||1,override_settings:{sd_model_checkpoint:a}};if(f){let c=String(d.prompt??"").slice(0,60);f.info("IMAGE",`${b}/${a} (sdwebui) | prompt: "${c}..."`)}try{let h=await fetch(c.baseUrl,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j)});if(!h.ok){let c=await h.text();return f&&f.error("IMAGE",`${b} error ${h.status}: ${c.slice(0,200)}`),(0,e.gK)({method:"POST",path:"/v1/images/generations",status:h.status,model:`${b}/${a}`,provider:b,duration:Date.now()-g,error:c.slice(0,500)}).catch(()=>{}),{success:!1,status:h.status,error:c}}let i=((await h.json()).images||[]).map(a=>({b64_json:a,revised_prompt:d.prompt}));return(0,e.gK)({method:"POST",path:"/v1/images/generations",status:200,model:`${b}/${a}`,provider:b,duration:Date.now()-g,responseBody:{images_count:i.length}}).catch(()=>{}),{success:!0,data:{created:Math.floor(Date.now()/1e3),data:i}}}catch(c){return f&&f.error("IMAGE",`${b} sdwebui error: ${c.message}`),(0,e.gK)({method:"POST",path:"/v1/images/generations",status:502,model:`${b}/${a}`,provider:b,duration:Date.now()-g,error:c.message}).catch(()=>{}),{success:!1,status:502,error:`Image provider error: ${c.message}`}}}async function n({model:a,provider:b,providerConfig:c,body:d,log:g}){let h=Date.now(),[i,j]=(d.size||"1024x1024").split("x").map(Number),k={3:{class_type:"KSampler",inputs:{seed:Math.floor(0x100000000*Math.random()),steps:d.steps||20,cfg:d.cfg_scale||7,sampler_name:"euler",scheduler:"normal",denoise:1,model:["4",0],positive:["6",0],negative:["7",0],latent_image:["5",0]}},4:{class_type:"CheckpointLoaderSimple",inputs:{ckpt_name:a}},5:{class_type:"EmptyLatentImage",inputs:{width:i||1024,height:j||1024,batch_size:d.n||1}},6:{class_type:"CLIPTextEncode",inputs:{text:d.prompt,clip:["4",1]}},7:{class_type:"CLIPTextEncode",inputs:{text:d.negative_prompt||"",clip:["4",1]}},8:{class_type:"VAEDecode",inputs:{samples:["3",0],vae:["4",2]}},9:{class_type:"SaveImage",inputs:{filename_prefix:"omniroute",images:["8",0]}}};if(g){let c=String(d.prompt??"").slice(0,60);g.info("IMAGE",`${b}/${a} (comfyui) | prompt: "${c}..."`)}try{let g=await (0,f.ep)(c.baseUrl,k),i=await (0,f.VA)(c.baseUrl,g),j=(0,f.AC)(i),l=[];for(let a of j){let b=await (0,f.Uh)(c.baseUrl,a.filename,a.subfolder,a.type),e=Buffer.from(b).toString("base64");l.push({b64_json:e,revised_prompt:d.prompt})}return(0,e.gK)({method:"POST",path:"/v1/images/generations",status:200,model:`${b}/${a}`,provider:b,duration:Date.now()-h,responseBody:{images_count:l.length}}).catch(()=>{}),{success:!0,data:{created:Math.floor(Date.now()/1e3),data:l}}}catch(c){return g&&g.error("IMAGE",`${b} comfyui error: ${c.message}`),(0,e.gK)({method:"POST",path:"/v1/images/generations",status:502,model:`${b}/${a}`,provider:b,duration:Date.now()-h,error:c.message}).catch(()=>{}),{success:!1,status:502,error:`Image provider error: ${c.message}`}}}}};
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST=function(e,s,t,a,i,o,r,n){return{__rewrites:{afterFiles:[{has:t,source:"/chat/completions",destination:"/api/v1/chat/completions"},{has:t,source:"/responses",destination:i},{has:t,source:"/models",destination:"/api/v1/models"},{has:t,source:"/v1/v1/:path*",destination:o},{has:t,source:"/v1/v1",destination:r},{has:t,source:"/codex/:path*",destination:i},{has:t,source:"/v1/:path*",destination:o},{has:t,source:"/v1",destination:r}],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:169,errorRate:1e-4,numBits:3240,numHashes:14,bitArray:[1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,1,0,1,1,0,1,1,1,0,1,0,0,0,0,1,0,1,1,1,0,1,0,1,0,1,0,1,0,0,1,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,0,1,1,1,0,0,0,1,1,1,0,0,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,0,0,0,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,0,1,1,0,1,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,1,0,1,1,1,1,0,1,1,0,0,1,0,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,0,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,1,1,0,0,0,0,1,0,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,1,0,1,1,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,0,1,0,1,1,0,0,1,1,1,0,0,0,1,0,1,1,1,0,0,1,0,0,1,1,1,1,1,0,1,1,0,1,1,1,1,0,1,0,0,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,0,1,1,1,0,1,0,0,0,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0,0,1,0,1,0,1,1,1,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,1,0,0,1,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,1,0,0,1,0,0,1,1,0,0,1,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,1,0,1,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,0,1,1,0,1,0,1,0,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,1,1,0,0,1,1,0,0,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0,1,1,0,0,0,0,1,1,1,1,0,1,1,0,1,1,1,1,1,1,0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,0,1,0,1,1,0,0,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,1,1,1,1,0,0,1,1,1,0,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1,0,0,1,1,1,1,0,1,1,0,1,0,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,0,1,1,0,0,1,0,1,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,0,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,0,0,1,0,1,1,1,1,1,1,0,0,1,1,0,1,0,1,0,1,0,1,1,1,0,0,1,1,0,1,1,0,1,0,1,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,1,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,1,0,0,0,1,0,0,0,1,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,0,0,1,0,0,1,0,1,0,1,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,1,0,1,0,1,1,1,0,1,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,0,1,0,0,1,1,0,1,1,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,0,0,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,0,1,0,1,1,0,1,0,0,1,1,1,1,0,1,1,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,1,0,1,1,0,0,1,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,0,1,1,1,0,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0,1,1,1,0,1,1,0,1,0,1,0,1,1,0,0,0,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1,0,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,0,1,1,1,1,0,1,1,0,1,1,1,0,1,1,0,1,0,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,0,1,1,0,0,1,0,0,1,1,1,0,1,1,0,1,1,0,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,1,0,0,1,1,0,0,0,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,0,1,1,1,0,1,0,1,1,0,0,0,0,0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,1,1,1,1,0,1,1,0,1,1,1,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,1,1,0,0,1,1,1,1,0,1,0,0,1,1,1,0,1,0,0,0,1,0,1,0,1,1,1,0,0,1,1,1,0,1,0,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,1,0,1,0,1,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,1,0,0,0,0,1,1,0,0,1,1,0,0,1,0,0,0,1,1,1,1,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0,1,0,1,0,1,0,1,1,1,0,0,0,1,1,1,1,0,0,1,0,1,0,0,0,0,1,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,0,0,1,0,1,1,1,0,0,1,0,1,1,1,0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,1,0,1,1,0,1,0,0,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,0,0,1,1,1,0,0,1,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0,1,0,0,1,1,0,1,1,0,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,1,0,1,1,1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,1,0,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,1,1,1,0,1,0,1,0,1,0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,0,0,1,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,1,0,1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,0,1,1,1,0,1,1,1,1,0,0,1,0,1,1,0,0,0,0,0,1,0,1,1,1,1,0,1,1,1,0,0,0,1,0,1,0,1,1,1,1,0,1,1,1,1,0,1,1,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,0,1,1,0,0,1,0,0,1,1,1,0,1,0,0,0,1,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,1,1,0,1,1,1,0,1,1,1,1,0,0,1,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,1,0,0,0,0,0,0,1,0,0,1,1,1,0,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,1,1,0,0,0,1,0,0,1,1,1,0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,0,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,1,1,0,1,0,1,1,1,1,0,1,1,0,0,0,1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,1,1,0,1,0,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,1,0,1,1,0,1,1,0,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,1,1,1,0,1,0,1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,1,1,0,1,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,1,1,0,1,0,0,0,0,1,1,0,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,1,1,0,0,1,0,0,0,1,0,0,0,1,1,1,1,0,1,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,1,1,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,1,1,0,1,1,1,1,1,0,1,0,1,1,0,0,1,1,1,1,0,1,1,0,1,1,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,1,0,1,0,1,0,0,1,0,1,1,0,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,1,0,0,1,1,1,0,0,1,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,1,0,1,1,0,0,0,0,0,1,1,1,0,1,0,1,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,1,1,0,0,1,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,0,1,1,0,0,1,0,0,0,0,1,1]},__routerFilterDynamic:{numItems:14,errorRate:1e-4,numBits:269,numHashes:14,bitArray:[1,0,0,0,0,1,0,1,1,0,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,0,0,1,0,1,1,0,1,0,1,0,1,1,0,0,0,0,0,0,1,1,0,1,0,1,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,1,0,1,0,1,0,1,0,0,1,1,0,0,1,0,1,0,1,0,1,0,1,1,1,0,0,0,0,0,1,1,1,1,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1,0,0,1,1,1,0,1,0,0,0,1,0,0,0,0,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,1,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,1,0,0,0,0,0,1,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,1,1,0,1,1,0,0,1,0,1,1,0,1,0,1,0,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,1,1,1,0,0,1,1,1,1,0,1,0,1]},sortedPages:["/_app"]}}(0,0,void 0,0,"/api/v1/responses","/api/v1/:path*","/api/v1",0),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[208],{12787:(a,e,l)=>{Promise.resolve().then(l.bind(l,14816))},40993:(a,e,l)=>{"use strict";l.d(e,{Ex:()=>n.default,$n:()=>u.default,Zp:()=>f.default,Qv:()=>v.CardSkeleton,G9:()=>N.default,bQ:()=>w.default,pp:()=>C.default,Qn:()=>Q.default,pd:()=>d.default,Mh:()=>E.default,uR:()=>h.default,aF:()=>r.default,rq:()=>_.default,LF:()=>p.default,KN:()=>c.default,Lo:()=>o.default,y7:()=>b.default,Iz:()=>i.default,l6:()=>t.default,lM:()=>s.default,cn:()=>k.default});var u=l(35806),d=l(34422),t=l(42994),f=l(81060),r=l(71361),v=l(92542);l(17705);var n=l(80927),s=l(19790);l(6261),l(55846),l(34243),l(89938),l(99023);var p=l(80178),_=l(85444),h=l(91961);l(25112);var k=l(45624),b=l(37415),c=l(48643),o=l(8287);l(1652);var E=l(92701);l(18150);var N=l(71689),i=l(33709);l(76332);var C=l(66200);l(61580);var Q=l(51503);l(54128);var w=l(44638);l(21720),l(97050)}},a=>{a.O(0,[8500,3418,9751,8055,1149,5846,647,4816,8441,3794,7358],()=>a(a.s=12787)),_N_E=a.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[597],{4053:(e,s,a)=>{"use strict";a.r(s),a.d(s,{default:()=>i});var r=a(95155),n=a(92542);function i(){return(0,r.jsxs)("div",{className:"space-y-6 p-6",role:"status","aria-live":"polite","aria-busy":"true",children:[(0,r.jsx)(n.Skeleton,{className:"h-8 w-40"}),(0,r.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:[0,1,2,3].map(e=>(0,r.jsx)(n.Skeleton,{className:"h-24 rounded-lg"},e))}),(0,r.jsx)(n.Skeleton,{className:"h-64 rounded-lg"})]})}},12910:(e,s,a)=>{Promise.resolve().then(a.bind(a,4053))},67040:(e,s,a)=>{"use strict";function r(...e){return e.filter(Boolean).join(" ").replace(/\s+/g," ").trim()}a.d(s,{cn:()=>r})},92542:(e,s,a)=>{"use strict";a.d(s,{CardSkeleton:()=>d,PageLoading:()=>t,Skeleton:()=>c,Spinner:()=>l,default:()=>o});var r=a(95155),n=a(67040);let i={sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"};function l({size:e="md",className:s,label:a="Loading"}){return(0,r.jsxs)("span",{role:"status","aria-live":"polite","aria-label":a,className:(0,n.cn)("inline-flex",s),children:[(0,r.jsx)("span",{className:"sr-only",children:a}),(0,r.jsx)("span",{"aria-hidden":"true",className:(0,n.cn)("material-symbols-outlined text-primary animate-spin motion-reduce:animate-none",i[e]),children:"progress_activity"})]})}function t({message:e="Loading...",className:s}){return(0,r.jsxs)("div",{className:(0,n.cn)("fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg px-6",s),role:"status","aria-live":"polite","aria-busy":"true",children:[(0,r.jsx)(l,{size:"xl"}),(0,r.jsx)("p",{className:"mt-4 text-text-muted text-center",children:e})]})}function c({className:e,...s}){return(0,r.jsx)("div",{"aria-hidden":"true",className:(0,n.cn)("animate-pulse motion-reduce:animate-none rounded-lg bg-border",e),...s})}function d(){return(0,r.jsxs)("div",{className:"p-6 rounded-xl border border-border bg-surface","aria-hidden":"true",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between mb-4 gap-4",children:[(0,r.jsx)(c,{className:"h-4 w-24"}),(0,r.jsx)(c,{className:"size-10 rounded-lg"})]}),(0,r.jsx)(c,{className:"h-8 w-16 mb-2"}),(0,r.jsx)(c,{className:"h-3 w-20"})]})}function o({type:e="spinner",className:s,message:a,size:n,label:i,...o}){switch(e){case"page":return(0,r.jsx)(t,{message:a,className:s});case"skeleton":return(0,r.jsx)(c,{className:s,...o});case"card":return(0,r.jsx)(d,{});default:return(0,r.jsx)(l,{size:n,className:s,label:i})}}}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=12910)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2888],{15534:(e,t,s)=>{Promise.resolve().then(s.bind(s,42712))},40993:(e,t,s)=>{"use strict";s.d(t,{Ex:()=>c.default,$n:()=>l.default,Zp:()=>i.default,Qv:()=>d.CardSkeleton,G9:()=>j.default,bQ:()=>k.default,pp:()=>N.default,Qn:()=>v.default,pd:()=>a.default,Mh:()=>g.default,uR:()=>p.default,aF:()=>n.default,rq:()=>m.default,LF:()=>x.default,KN:()=>f.default,Lo:()=>b.default,y7:()=>u.default,Iz:()=>y.default,l6:()=>r.default,lM:()=>o.default,cn:()=>h.default});var l=s(35806),a=s(34422),r=s(42994),i=s(81060),n=s(71361),d=s(92542);s(17705);var c=s(80927),o=s(19790);s(6261),s(55846),s(34243),s(89938),s(99023);var x=s(80178),m=s(85444),p=s(91961);s(25112);var h=s(45624),u=s(37415),f=s(48643),b=s(8287);s(1652);var g=s(92701);s(18150);var j=s(71689),y=s(33709);s(76332);var N=s(66200);s(61580);var v=s(51503);s(54128);var k=s(44638);s(21720),s(97050)},42712:(e,t,s)=>{"use strict";s.d(t,{default:()=>d});var l=s(95155),a=s(12115),r=s(40993),i=s(30949),n=s(50910);function d(){let e=(0,n.c)("apiManager"),t=(0,n.c)("common"),[s,d]=(0,a.useState)([]),[o,x]=(0,a.useState)([]),[m,p]=(0,a.useState)(!0),[h,u]=(0,a.useState)(!1),[f,b]=(0,a.useState)(""),[g,j]=(0,a.useState)(null),[y,N]=(0,a.useState)(null),[v,k]=(0,a.useState)(!1),[w,C]=(0,a.useState)(""),[S,_]=(0,a.useState)(null),[M,$]=(0,a.useState)(!1),[K,A]=(0,a.useState)({}),{copied:D,copy:E}=(0,i.C)();(0,a.useEffect)(()=>{R(),P()},[]);let P=async()=>{try{let e=await fetch("/v1/models");if(e.ok){let t=await e.json();x(t.data||[])}}catch(e){console.log("Error fetching models:",e)}},R=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();d(t.keys||[]),L(t.keys||[])}}catch(e){console.log("Error fetching keys:",e)}finally{p(!1)}},L=async e=>{if(0!==e.length)try{let t=await fetch("/api/usage/call-logs?limit=1000");if(!t.ok)return;let s=await t.json(),l={};for(let t of e){let e=(s||[]).filter(e=>e.apiKeyId===t.id||e.apiKeyName===t.name);l[t.id]={totalRequests:e.length,lastUsed:e.length>0?e.sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())[0]?.timestamp:null}}A(l)}catch(e){console.log("Error fetching usage stats:",e)}},O=(0,a.useCallback)(()=>_(null),[]),T=async()=>{let t=f.replace(/[<>]/g,"").replace(/"/g,"").replace(/'/g,"").trim().slice(0,100),s=t&&t.trim()?t.length>100?{valid:!1,error:e("keyNameTooLong",{max:100})}:/^[a-zA-Z0-9_\-\s]+$/.test(t)?{valid:!0}:{valid:!1,error:e("keyNameInvalid")}:{valid:!1,error:e("keyNameRequired")};if(!s.valid)return void _(s.error||e("invalidKeyName"));$(!0),O();try{let s=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),l=await s.json();s.ok?(j(l.key),await R(),b(""),u(!1)):_(l.error||e("failedCreateKey"))}catch(t){console.error("Error creating key:",t),_(e("failedCreateKeyRetry"))}finally{$(!1)}},Z=async t=>{if(!t||"string"!=typeof t||!/^[a-zA-Z0-9_-]+$/.test(t))return void _(e("invalidKeyId"));if(confirm(e("deleteConfirm"))){$(!0),O();try{let s=await fetch(`/api/keys/${encodeURIComponent(t)}`,{method:"DELETE"});if(s.ok)d(e=>e.filter(e=>e.id!==t));else{let t=await s.json();_(t.error||e("failedDeleteKey"))}}catch(t){console.error("Error deleting key:",t),_(e("failedDeleteKeyRetry"))}finally{$(!1)}}},z=e=>{e&&e.id&&(N(e),k(!0))},F=async(t,s)=>{if(!y||!y.id)return;if(!Array.isArray(t))return void _(e("invalidModelsSelection"));if(t.length>500)return void _(e("cannotSelectMoreThanModels",{max:500}));let l=t.filter(e=>"string"==typeof e&&e.length>0&&e.length<200);$(!0),O();try{let t=await fetch(`/api/keys/${encodeURIComponent(y.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({allowedModels:l,noLog:s})});if(t.ok)await R(),k(!1),N(null);else{let s=await t.json();_(s.error||e("failedUpdatePermissions"))}}catch(t){console.error("Error updating permissions:",t),_(e("failedUpdatePermissionsRetry"))}finally{$(!1)}},U=function(e,t){let[s,l]=(0,a.useState)(e);return(0,a.useEffect)(()=>{let t=setTimeout(()=>l(e),150);return()=>clearTimeout(t)},[e,150]),s}(w,0),q=(0,a.useMemo)(()=>{let t={};for(let s of o){let l=s.owned_by||e("unknownProvider");t[l]||(t[l]=[]),t[l].push(s)}return Object.entries(t).sort((e,t)=>e[0].localeCompare(t[0]))},[o]),I=(0,a.useMemo)(()=>{if(!U.trim())return q;let e=U.toLowerCase();return q.map(([t,s])=>[t,s.filter(s=>s.id.toLowerCase().includes(e)||t.toLowerCase().includes(e))]).filter(([,e])=>e.length>0)},[q,U]);return m?(0,l.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,l.jsx)(r.Qv,{}),(0,l.jsx)(r.Qv,{})]}):(0,l.jsxs)("div",{className:"flex flex-col gap-8",children:[S&&(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-red-500/10 border border-red-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-red-500",children:"error"}),(0,l.jsx)("p",{className:"text-sm text-red-700 dark:text-red-300 flex-1",children:S}),(0,l.jsx)("button",{onClick:O,className:"text-red-500 hover:text-red-700 transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined",children:"close"})})]}),s.length>0&&(0,l.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-primary/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-lg",children:"vpn_key"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:s.length}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:e("totalKeys")})]})]})}),(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-amber-500/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-amber-500 text-lg",children:"lock"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:s.filter(e=>Array.isArray(e.allowedModels)&&e.allowedModels.length>0).length}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:e("restricted")})]})]})}),(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-blue-500/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-blue-500 text-lg",children:"bar_chart"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:Object.values(K).reduce((e,t)=>e+t.totalRequests,0)}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:e("totalRequests")})]})]})}),(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-emerald-500/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-emerald-500 text-lg",children:"model_training"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:o.length}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:e("modelsAvailable")})]})]})})]}),(0,l.jsx)(r.Zp,{children:(0,l.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-lg font-semibold",children:e("keyManagement")}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:e("keyManagementDesc")})]}),(0,l.jsx)(r.$n,{icon:"add",onClick:()=>u(!0),children:e("createKey")})]})}),(0,l.jsxs)(r.Zp,{children:[(0,l.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-10 rounded-lg bg-amber-500/10 shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-xl text-amber-500",children:"vpn_key"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("h3",{className:"font-semibold",children:e("registeredKeys")}),(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[s.length," ",1===s.length?e("keyRegistered",{count:s.length}):e("keysRegistered",{count:s.length})]})]})]})}),(0,l.jsx)("p",{className:"text-sm text-text-muted mb-4",children:e("keysSecurityNote")}),0===s.length?(0,l.jsxs)("div",{className:"text-center py-12 border border-dashed border-border rounded-lg",children:[(0,l.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,l.jsx)("p",{className:"text-text-main font-medium mb-2",children:e("noKeys")}),(0,l.jsx)("p",{className:"text-sm text-text-muted mb-4",children:e("noKeysDesc")}),(0,l.jsx)(r.$n,{icon:"add",onClick:()=>u(!0),children:e("createFirstKey")})]}):(0,l.jsxs)("div",{className:"flex flex-col border border-border rounded-lg overflow-hidden",children:[(0,l.jsxs)("div",{className:"grid grid-cols-12 gap-4 px-4 py-3 bg-surface/50 border-b border-border text-xs font-semibold text-text-muted uppercase tracking-wider",children:[(0,l.jsx)("div",{className:"col-span-2",children:e("name")}),(0,l.jsx)("div",{className:"col-span-3",children:e("key")}),(0,l.jsx)("div",{className:"col-span-2",children:e("permissions")}),(0,l.jsx)("div",{className:"col-span-2",children:e("usage")}),(0,l.jsx)("div",{className:"col-span-1",children:e("created")}),(0,l.jsx)("div",{className:"col-span-2 text-right",children:e("actions")})]}),s.map(t=>{let s=K[t.id],a=Array.isArray(t.allowedModels)&&t.allowedModels.length>0,r=!0===t.noLog;return(0,l.jsxs)("div",{className:"grid grid-cols-12 gap-4 px-4 py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 hover:bg-surface/30 transition-colors group",children:[(0,l.jsxs)("div",{className:"col-span-2 flex items-center gap-2",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-sm ${a?"text-amber-500":"text-emerald-500"}`,children:a?"lock":"lock_open"}),(0,l.jsx)("span",{className:"text-sm font-medium truncate",title:t.name,children:t.name})]}),(0,l.jsxs)("div",{className:"col-span-3 flex items-center gap-1.5",children:[(0,l.jsx)("code",{className:"text-sm text-text-muted font-mono truncate",children:t.key}),(0,l.jsx)("button",{onClick:()=>E(t.key,t.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all shrink-0",title:e("copyMaskedKey"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:D===t.id?"check":"content_copy"})})]}),(0,l.jsx)("div",{className:"col-span-2 flex items-center",children:(0,l.jsxs)("div",{className:"flex flex-col items-start gap-1",children:[a?(0,l.jsxs)("button",{onClick:()=>z(t),className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-amber-500/10 text-amber-600 dark:text-amber-400 text-xs font-medium hover:bg-amber-500/20 transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"lock"}),e("modelsCount",{count:t.allowedModels.length})]}):(0,l.jsxs)("button",{onClick:()=>z(t),className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-green-500/10 text-green-600 dark:text-green-400 text-xs font-medium hover:bg-green-500/20 transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"lock_open"}),e("allModels")]}),r&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-violet-500/10 text-violet-600 dark:text-violet-400 text-[11px] font-medium",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"visibility_off"}),"No-Log"]})]})}),(0,l.jsxs)("div",{className:"col-span-2 flex flex-col justify-center",children:[(0,l.jsxs)("span",{className:"text-sm font-medium tabular-nums",children:[s?.totalRequests??0," ",(0,l.jsx)("span",{className:"text-text-muted font-normal text-xs",children:e("reqs")})]}),s?.lastUsed?(0,l.jsx)("span",{className:"text-[10px] text-text-muted",children:e("lastUsedOn",{date:new Date(s.lastUsed).toLocaleDateString()})}):(0,l.jsx)("span",{className:"text-[10px] text-text-muted italic",children:e("neverUsed")})]}),(0,l.jsx)("div",{className:"col-span-1 flex items-center text-sm text-text-muted",children:new Date(t.createdAt).toLocaleDateString()}),(0,l.jsxs)("div",{className:"col-span-2 flex items-center justify-end gap-1",children:[(0,l.jsx)("button",{onClick:()=>z(t),className:"p-2 hover:bg-primary/10 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all",title:e("editPermissions"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tune"})}),(0,l.jsx)("button",{onClick:()=>Z(t.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-0 group-hover:opacity-100 transition-all",title:e("deleteKey"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},t.id)})]})]}),(0,l.jsx)(r.Zp,{children:(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-10 rounded-lg bg-blue-500/10 shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-xl text-blue-500",children:"lightbulb"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("h3",{className:"font-semibold mb-2",children:e("usageTips")}),(0,l.jsxs)("ul",{className:"text-sm text-text-muted space-y-1.5",children:[(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:e("tipAuth")})]}),(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:e("tipSecure")})]}),(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:e("tipSeparate")})]}),(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:e("tipRestrict")})]})]})]})]})}),(0,l.jsx)(r.aF,{isOpen:h,title:e("createKey"),onClose:()=>{u(!1),b("")},children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-sm font-medium text-text-main mb-1.5 block",children:e("keyName")}),(0,l.jsx)(r.pd,{value:f,onChange:e=>b(e.target.value),placeholder:e("keyNamePlaceholder"),autoFocus:!0}),(0,l.jsx)("p",{className:"text-xs text-text-muted mt-1.5",children:e("keyNameDesc")})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(r.$n,{onClick:()=>{u(!1),b("")},variant:"ghost",fullWidth:!0,children:t("cancel")}),(0,l.jsx)(r.$n,{onClick:T,fullWidth:!0,disabled:!f.trim(),children:e("createKey")})]})]})}),(0,l.jsx)(r.aF,{isOpen:!!g,title:e("keyCreated"),onClose:()=>j(null),children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 border border-green-200 dark:border-green-800 rounded-lg p-4",children:(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200 font-medium mb-1",children:e("keyCreatedSuccess")}),(0,l.jsx)("p",{className:"text-sm text-green-700 dark:text-green-300",children:e("keyCreatedNote")})]})]})}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(r.pd,{value:g||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,l.jsx)(r.$n,{variant:"secondary",icon:"created_key"===D?"check":"content_copy",onClick:()=>E(g,"created_key"),children:t("created_key"===D?"copied":"copy")})]}),(0,l.jsx)(r.$n,{onClick:()=>j(null),fullWidth:!0,children:e("done")})]})}),y&&(0,l.jsx)(c,{isOpen:v,onClose:()=>{k(!1),N(null)},apiKey:y,modelsByProvider:I,allModels:o,searchModel:w,onSearchChange:C,onSave:F},y.id)]})}let c=(0,a.memo)(function({isOpen:e,onClose:t,apiKey:s,modelsByProvider:i,allModels:d,searchModel:c,onSearchChange:o,onSave:x}){let m=(0,n.c)("apiManager"),p=(0,n.c)("common"),h=Array.isArray(s?.allowedModels)?s.allowedModels:[],[u,f]=(0,a.useState)(h),[b,g]=(0,a.useState)(0===h.length),[j,y]=(0,a.useState)(s?.noLog===!0),[N,v]=(0,a.useState)(()=>h.length>0?new Set(i.map(([e])=>e)):new Set),k=(0,a.useCallback)(e=>{b||f(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[b]),w=(0,a.useCallback)((e,t)=>{if(b)return;let s=t.map(e=>e.id);f(e=>s.every(t=>e.includes(t))?e.filter(e=>!s.includes(e)):[...new Set([...e,...s])])},[b]),C=(0,a.useCallback)(()=>{g(!0),f([])},[]),S=(0,a.useCallback)(()=>{g(!1),v(new Set(i.map(([e])=>e)))},[i]),_=(0,a.useCallback)(e=>{v(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),M=(0,a.useCallback)(()=>{f(d.map(e=>e.id))},[d]),$=(0,a.useCallback)(()=>{f([])},[]),K=(0,a.useCallback)(()=>{x(b?[]:u,j)},[x,b,u,j]),A=u.length,D=d.length;return(0,l.jsx)(r.aF,{isOpen:!!t&&e,title:m("permissionsTitle",{name:s?.name||""}),onClose:t,children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex gap-2 p-1 bg-surface rounded-lg",children:[(0,l.jsxs)("button",{onClick:C,className:`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-all ${b?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"lock_open"}),m("allowAll")]}),(0,l.jsxs)("button",{onClick:S,className:`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-all ${!b?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"lock"}),m("restrict")]})]}),(0,l.jsxs)("div",{className:`flex items-start gap-2 p-3 rounded-lg ${b?"bg-green-500/10 border border-green-500/30":"bg-amber-500/10 border border-amber-500/30"}`,children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-[18px] ${b?"text-green-500":"text-amber-500"}`,children:b?"info":"warning"}),(0,l.jsx)("p",{className:`text-xs ${b?"text-green-700 dark:text-green-300":"text-amber-700 dark:text-amber-300"}`,children:b?m("allowAllDesc"):m("restrictDesc",{selectedCount:A,totalModels:D})})]}),(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 p-3 rounded-lg border border-border bg-surface/40",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("p",{className:"text-sm font-medium text-text-main",children:"No-Log Payload Privacy"}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Disable request/response payload persistence for this API key."})]}),(0,l.jsxs)("button",{type:"button",role:"switch","aria-checked":j,onClick:()=>y(e=>!e),className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-semibold transition-colors ${j?"bg-violet-500/15 text-violet-700 dark:text-violet-300 border border-violet-500/30":"bg-black/5 dark:bg-white/5 text-text-muted border border-border"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:j?"visibility_off":"visibility"}),p(j?"enabled":"disabled")]})]}),!b&&A>0&&(0,l.jsxs)("div",{className:"flex flex-col gap-1.5 p-2 bg-primary/5 rounded-lg border border-primary/20",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("span",{className:"text-xs font-medium text-primary",children:m("selectedCount",{count:A})}),(0,l.jsxs)("div",{className:"flex gap-1",children:[(0,l.jsx)("button",{onClick:M,className:"text-[10px] text-primary hover:bg-primary/10 px-1.5 py-0.5 rounded transition-colors",children:p("all")}),(0,l.jsx)("button",{onClick:$,className:"text-[10px] text-red-500 hover:bg-red-500/10 px-1.5 py-0.5 rounded transition-colors",children:m("clear")})]})]}),(0,l.jsx)("div",{className:"flex flex-wrap gap-1 max-h-16 overflow-y-auto content-start",children:u.map(e=>(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 px-1.5 py-0.5 bg-white dark:bg-surface text-text-main text-[10px] rounded border border-border",children:[(0,l.jsx)("span",{className:"font-mono truncate max-w-[120px]",title:e,children:e}),(0,l.jsx)("button",{onClick:()=>k(e),className:"text-text-muted hover:text-red-500 transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},e))})]}),!b&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsx)(r.pd,{value:c,onChange:e=>o(e.target.value),placeholder:m("searchModels"),icon:"search"}),c&&(0,l.jsx)("button",{onClick:()=>o(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-main",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,l.jsx)("div",{className:"max-h-[280px] overflow-y-auto border border-border rounded-lg divide-y divide-border",children:0===i.length?(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center py-6 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-2xl mb-1",children:"search_off"}),(0,l.jsx)("p",{className:"text-xs",children:m("noModelsFound")})]}):i.map(([e,t])=>{let s=u.filter(e=>t.some(t=>t.id===e)).length,a=t.every(e=>u.includes(e.id)),r=s>0&&!a;return(0,l.jsxs)("div",{className:"group",children:[(0,l.jsxs)("button",{onClick:()=>_(e),className:"w-full flex items-center gap-2 px-3 py-2 hover:bg-surface/50 transition-colors text-left",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-base transition-transform duration-200 ${N.has(e)?"rotate-90":""}`,children:"chevron_right"}),(0,l.jsxs)("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[(0,l.jsx)("div",{className:"relative flex items-center cursor-pointer shrink-0",onClick:s=>{s.stopPropagation(),w(e,t)},children:(0,l.jsxs)("div",{className:`w-4 h-4 rounded border-2 transition-colors flex items-center justify-center ${a?"bg-primary border-primary":r?"bg-primary/20 border-primary":"border-border hover:border-primary/50"}`,children:[a&&(0,l.jsx)("span",{className:"material-symbols-outlined text-white text-[12px]",children:"check"}),r&&!a&&(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-[12px]",children:"remove"})]})}),(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main truncate",children:e}),(0,l.jsx)("span",{className:"text-[10px] text-text-muted bg-surface px-1 py-0.5 rounded shrink-0",children:t.length})]}),s>0&&(0,l.jsx)("span",{className:"text-[10px] font-medium text-primary bg-primary/10 px-1.5 py-0.5 rounded-full shrink-0",children:s})]}),N.has(e)&&(0,l.jsx)("div",{className:"px-3 pb-2 pl-9",children:(0,l.jsx)("div",{className:"flex flex-wrap gap-1",children:t.map(e=>{let t=u.includes(e.id);return(0,l.jsx)("button",{onClick:()=>k(e.id),className:`inline-flex items-center gap-1 px-2 py-1 rounded-full text-[10px] font-mono transition-all ${t?"bg-primary text-white":"bg-surface border border-border text-text-muted hover:border-primary/50 hover:text-text-main"}`,title:e.id,children:e.id},e.id)})})})]},e)})})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(r.$n,{onClick:K,fullWidth:!0,children:m("savePermissions")}),(0,l.jsx)(r.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:p("cancel")})]})]})})})}},e=>{e.O(0,[8500,3418,9751,8055,1149,5846,647,8441,3794,7358],()=>e(e.s=15534)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6782],{19213:(e,t,r)=>{Promise.resolve().then(r.bind(r,29698))},29698:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var o=r(95155),a=r(12115),l=r(50910);function s(){let e=(0,l.c)("auditLog"),t=(0,l.c)("common"),[r,s]=(0,a.useState)([]),[c,d]=(0,a.useState)(!0),[n,i]=(0,a.useState)(null),[x,u]=(0,a.useState)(""),[m,b]=(0,a.useState)(""),[p,h]=(0,a.useState)(0),[v,f]=(0,a.useState)(!1),g=(0,a.useCallback)(async()=>{d(!0),i(null);try{let e=new URLSearchParams;x&&e.set("action",x),m&&e.set("actor",m),e.set("limit",String(26)),e.set("offset",String(p));let t=await fetch(`/api/compliance/audit-log?${e.toString()}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let r=await t.json();f(r.length>25),s(r.slice(0,25))}catch(t){i(t.message||e("failedFetchAuditLog"))}finally{d(!1)}},[x,m,p,e]);(0,a.useEffect)(()=>{g()},[g]);let y=()=>{h(0),g()};return(0,o.jsxs)("div",{className:"max-w-6xl mx-auto p-6 space-y-6",children:[(0,o.jsxs)("div",{className:"flex items-center justify-between",children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("h1",{className:"text-2xl font-bold text-[var(--color-text-main)]",children:e("title")}),(0,o.jsx)("p",{className:"text-sm text-[var(--color-text-muted)] mt-1",children:e("description")})]}),(0,o.jsx)("button",{onClick:g,disabled:c,"aria-label":e("refreshAuditLogAria"),className:"px-4 py-2 rounded-lg text-sm font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] transition-colors disabled:opacity-50",children:t(c?"loading":"refresh")})]}),(0,o.jsxs)("div",{className:"flex flex-wrap gap-3 p-4 rounded-xl bg-[var(--color-surface)] border border-[var(--color-border)]",role:"search","aria-label":e("filterEntriesAria"),children:[(0,o.jsx)("input",{type:"text",placeholder:e("filterByAction"),value:x,onChange:e=>u(e.target.value),onKeyDown:e=>"Enter"===e.key&&y(),"aria-label":e("filterByActionTypeAria"),className:"flex-1 min-w-[180px] px-3 py-2 rounded-lg text-sm bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] placeholder:text-[var(--color-text-muted)] focus:outline-2 focus:outline-[var(--color-accent)]"}),(0,o.jsx)("input",{type:"text",placeholder:e("filterByActor"),value:m,onChange:e=>b(e.target.value),onKeyDown:e=>"Enter"===e.key&&y(),"aria-label":e("filterByActorAria"),className:"flex-1 min-w-[180px] px-3 py-2 rounded-lg text-sm bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] placeholder:text-[var(--color-text-muted)] focus:outline-2 focus:outline-[var(--color-accent)]"}),(0,o.jsx)("button",{onClick:y,className:"px-4 py-2 rounded-lg text-sm font-medium bg-[var(--color-accent)] text-white hover:bg-[var(--color-accent-hover)] transition-colors focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]",children:t("search")})]}),n&&(0,o.jsx)("div",{className:"p-4 rounded-lg bg-red-500/10 border border-red-500/30 text-red-400 text-sm",role:"alert",children:n}),(0,o.jsx)("div",{className:"overflow-x-auto rounded-xl border border-[var(--color-border)]",children:(0,o.jsxs)("table",{className:"w-full text-sm",role:"table","aria-label":e("tableAria"),children:[(0,o.jsx)("thead",{children:(0,o.jsxs)("tr",{className:"bg-[var(--color-bg-alt)] border-b border-[var(--color-border)]",children:[(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:e("timestamp")}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:e("action")}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:e("actor")}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:e("target")}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:t("details")}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:e("ipAddress")})]})}),(0,o.jsx)("tbody",{children:0!==r.length||c?r.map(t=>{var r;return(0,o.jsxs)("tr",{className:"border-b border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] transition-colors",children:[(0,o.jsx)("td",{className:"px-4 py-3 whitespace-nowrap text-[var(--color-text-muted)] font-mono text-xs",children:(e=>{try{return new Date(e).toLocaleString()}catch{return e}})(t.timestamp)}),(0,o.jsx)("td",{className:"px-4 py-3",children:(0,o.jsx)("span",{className:`inline-block px-2 py-0.5 rounded-md text-xs font-medium border ${(r=t.action).includes("delete")||r.includes("remove")?"bg-red-500/15 text-red-400 border-red-500/20":r.includes("create")||r.includes("add")?"bg-green-500/15 text-green-400 border-green-500/20":r.includes("update")||r.includes("change")?"bg-blue-500/15 text-blue-400 border-blue-500/20":r.includes("login")||r.includes("auth")?"bg-purple-500/15 text-purple-400 border-purple-500/20":"bg-gray-500/15 text-gray-400 border-gray-500/20"}`,children:t.action})}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-main)]",children:t.actor}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] max-w-[200px] truncate",children:t.target||e("notAvailable")}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] max-w-[300px] truncate font-mono text-xs",children:t.details?JSON.stringify(t.details):e("notAvailable")}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] font-mono text-xs whitespace-nowrap",children:t.ip_address||e("notAvailable")})]},t.id)}):(0,o.jsx)("tr",{children:(0,o.jsx)("td",{colSpan:6,className:"px-4 py-8 text-center text-[var(--color-text-muted)]",children:e("noEntries")})})})]})}),(0,o.jsxs)("div",{className:"flex items-center justify-between",children:[(0,o.jsx)("p",{className:"text-xs text-[var(--color-text-muted)]",children:e("showing",{count:r.length,offset:p})}),(0,o.jsxs)("div",{className:"flex gap-2",children:[(0,o.jsxs)("button",{onClick:()=>h(Math.max(0,p-25)),disabled:0===p,className:"px-3 py-1.5 rounded-lg text-xs font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] disabled:opacity-30 transition-colors",children:["← ",e("previous")]}),(0,o.jsxs)("button",{onClick:()=>h(p+25),disabled:!v,className:"px-3 py-1.5 rounded-lg text-xs font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] disabled:opacity-30 transition-colors",children:[t("next")," →"]})]})]})]})}},50910:(e,t,r)=>{"use strict";r.d(t,{c:()=>l});var o=r(33418);function a(e,t){return(...e)=>{try{return t(...e)}catch{throw Error(void 0)}}}let l=a(0,o.c3);a(0,o.kc)}},e=>{e.O(0,[3418,8441,3794,7358],()=>e(e.s=19213)),_N_E=e.O()}]);