omniroute 2.5.3 → 2.5.4

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 (670) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +42 -42
  3. package/app/.next/build-manifest.json +3 -3
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/required-server-files.json +3 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js +2 -2
  7. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js +2 -2
  10. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  13. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +2 -2
  16. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
  19. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js +2 -2
  22. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js.nft.json +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +4 -4
  25. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  28. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  31. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  34. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  37. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  40. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +2 -2
  43. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js +2 -2
  46. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/media/page.js +2 -2
  49. package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  52. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  55. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js +3 -3
  58. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  61. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  64. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  67. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  70. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  71. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  73. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  74. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  76. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  77. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
  79. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  80. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  82. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  83. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/.well-known/agent.json/route.js +1 -1
  85. package/app/.next/server/app/.well-known/agent.json/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/400/page.js +2 -2
  87. package/app/.next/server/app/400/page.js.nft.json +1 -1
  88. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/401/page.js +2 -2
  90. package/app/.next/server/app/401/page.js.nft.json +1 -1
  91. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/403/page.js +2 -2
  93. package/app/.next/server/app/403/page.js.nft.json +1 -1
  94. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/408/page.js +2 -2
  96. package/app/.next/server/app/408/page.js.nft.json +1 -1
  97. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/429/page.js +2 -2
  99. package/app/.next/server/app/429/page.js.nft.json +1 -1
  100. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/500/page.js +2 -2
  102. package/app/.next/server/app/500/page.js.nft.json +1 -1
  103. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/502/page.js +2 -2
  105. package/app/.next/server/app/502/page.js.nft.json +1 -1
  106. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/503/page.js +2 -2
  108. package/app/.next/server/app/503/page.js.nft.json +1 -1
  109. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/_global-error/page.js +3 -3
  111. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/_global-error.html +2 -2
  113. package/app/.next/server/app/_global-error.rsc +5 -5
  114. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +5 -5
  115. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  116. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  117. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  118. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +4 -4
  119. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  120. package/app/.next/server/app/_not-found/page.js +2 -2
  121. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  122. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/a2a/route.js +2 -2
  124. package/app/.next/server/app/a2a/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/a2a/status/route.js +1 -1
  126. package/app/.next/server/app/api/a2a/status/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route.js +1 -1
  128. package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/a2a/tasks/[id]/route.js +1 -1
  130. package/app/.next/server/app/api/a2a/tasks/[id]/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/a2a/tasks/route.js +1 -1
  132. package/app/.next/server/app/api/a2a/tasks/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/acp/agents/route.js +1 -1
  134. package/app/.next/server/app/api/acp/agents/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/acp/agents/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/auth/login/route.js +1 -1
  137. package/app/.next/server/app/api/auth/login/route.js.nft.json +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.js.nft.json +1 -1
  145. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/cache/stats/route.js +1 -1
  147. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  149. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  150. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  152. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  154. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  156. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  159. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  160. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  162. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  164. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  165. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  167. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js +1 -1
  170. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  172. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  173. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route.js +1 -1
  175. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  177. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  180. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
  182. package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
  183. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  185. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  186. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  188. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  191. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  192. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  194. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  197. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  198. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/api/combos/auto/route.js +1 -1
  200. package/app/.next/server/app/api/combos/auto/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/combos/metrics/route.js +1 -1
  202. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  203. package/app/.next/server/app/api/combos/route.js +1 -1
  204. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  205. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/api/combos/test/route.js +1 -1
  207. package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
  208. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  209. package/app/.next/server/app/api/compliance/audit-log/route.js +1 -1
  210. package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  212. package/app/.next/server/app/api/db-backups/export/route.js +1 -1
  213. package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  215. package/app/.next/server/app/api/db-backups/exportAll/route.js +1 -1
  216. package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
  217. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  218. package/app/.next/server/app/api/db-backups/import/route.js +1 -1
  219. package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
  220. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  221. package/app/.next/server/app/api/db-backups/route.js +1 -1
  222. package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
  223. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  224. package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -1
  225. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  226. package/app/.next/server/app/api/evals/route.js +1 -1
  227. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  228. package/app/.next/server/app/api/fallback/chains/route.js +2 -2
  229. package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
  230. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  231. package/app/.next/server/app/api/init/route.js +1 -1
  232. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  233. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  234. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  235. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  236. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  237. package/app/.next/server/app/api/keys/route.js +1 -1
  238. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  239. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  240. package/app/.next/server/app/api/logs/console/route.js +1 -1
  241. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  242. package/app/.next/server/app/api/mcp/audit/route.js +2 -2
  243. package/app/.next/server/app/api/mcp/audit/route.js.nft.json +1 -1
  244. package/app/.next/server/app/api/mcp/audit/route_client-reference-manifest.js +1 -1
  245. package/app/.next/server/app/api/mcp/audit/stats/route.js +2 -2
  246. package/app/.next/server/app/api/mcp/audit/stats/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/mcp/audit/stats/route_client-reference-manifest.js +1 -1
  248. package/app/.next/server/app/api/mcp/sse/route.js +1 -1
  249. package/app/.next/server/app/api/mcp/sse/route.js.nft.json +1 -1
  250. package/app/.next/server/app/api/mcp/sse/route_client-reference-manifest.js +1 -1
  251. package/app/.next/server/app/api/mcp/status/route.js +1 -1
  252. package/app/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  254. package/app/.next/server/app/api/mcp/stream/route.js +1 -1
  255. package/app/.next/server/app/api/mcp/stream/route.js.nft.json +1 -1
  256. package/app/.next/server/app/api/mcp/stream/route_client-reference-manifest.js +1 -1
  257. package/app/.next/server/app/api/mcp/tools/route.js +1 -1
  258. package/app/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  259. package/app/.next/server/app/api/models/alias/route.js +1 -1
  260. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  261. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  262. package/app/.next/server/app/api/models/availability/route.js +1 -1
  263. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  264. package/app/.next/server/app/api/models/catalog/route.js +1 -1
  265. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  266. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  267. package/app/.next/server/app/api/models/openrouter-catalog/route.js +1 -1
  268. package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -1
  269. package/app/.next/server/app/api/models/openrouter-catalog/route_client-reference-manifest.js +1 -1
  270. package/app/.next/server/app/api/models/route.js +1 -1
  271. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  272. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  273. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  274. package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
  275. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  276. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  277. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  278. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  279. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  280. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  281. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  282. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  283. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  284. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  285. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  286. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  287. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  288. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  289. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  290. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  291. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  292. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  293. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  294. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  295. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  296. package/app/.next/server/app/api/policies/route.js +2 -2
  297. package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
  298. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  299. package/app/.next/server/app/api/pricing/defaults/route.js +1 -1
  300. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  301. package/app/.next/server/app/api/pricing/models/route.js +1 -1
  302. package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
  303. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  304. package/app/.next/server/app/api/pricing/route.js +1 -1
  305. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  307. package/app/.next/server/app/api/pricing/sync/route.js +1 -1
  308. package/app/.next/server/app/api/pricing/sync/route.js.nft.json +1 -1
  309. package/app/.next/server/app/api/pricing/sync/route_client-reference-manifest.js +1 -1
  310. package/app/.next/server/app/api/provider-metrics/route.js +2 -2
  311. package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
  312. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  313. package/app/.next/server/app/api/provider-models/route.js +1 -1
  314. package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
  315. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  316. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  317. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  318. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  319. package/app/.next/server/app/api/provider-nodes/route.js +2 -2
  320. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  321. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  322. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  323. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  324. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  325. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  326. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  327. package/app/.next/server/app/api/providers/[id]/refresh/route.js +1 -1
  328. package/app/.next/server/app/api/providers/[id]/refresh/route.js.nft.json +1 -1
  329. package/app/.next/server/app/api/providers/[id]/refresh/route_client-reference-manifest.js +1 -1
  330. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  331. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  332. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  333. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  334. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  335. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  336. package/app/.next/server/app/api/providers/client/route.js +1 -1
  337. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  338. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  339. package/app/.next/server/app/api/providers/route.js +1 -1
  340. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  341. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  342. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  343. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  344. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  345. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  346. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  347. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  348. package/app/.next/server/app/api/rate-limit/route.js +1 -1
  349. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  350. package/app/.next/server/app/api/rate-limits/route.js +1 -1
  351. package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
  352. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  353. package/app/.next/server/app/api/resilience/reset/route.js +1 -1
  354. package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
  355. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  356. package/app/.next/server/app/api/resilience/route.js +1 -1
  357. package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
  358. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  359. package/app/.next/server/app/api/restart/route.js +1 -1
  360. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  361. package/app/.next/server/app/api/sessions/route.js +1 -1
  362. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  363. package/app/.next/server/app/api/settings/background-degradation/route.js +1 -1
  364. package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -1
  365. package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -1
  366. package/app/.next/server/app/api/settings/codex-service-tier/route.js +1 -1
  367. package/app/.next/server/app/api/settings/codex-service-tier/route.js.nft.json +1 -1
  368. package/app/.next/server/app/api/settings/codex-service-tier/route_client-reference-manifest.js +1 -1
  369. package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -1
  370. package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
  371. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  372. package/app/.next/server/app/api/settings/ip-filter/route.js +1 -1
  373. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  374. package/app/.next/server/app/api/settings/model-aliases/route.js +1 -1
  375. package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -1
  376. package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -1
  377. package/app/.next/server/app/api/settings/proxy/route.js +1 -1
  378. package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
  379. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  380. package/app/.next/server/app/api/settings/proxy/test/route.js +1 -1
  381. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  382. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  383. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  384. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  385. package/app/.next/server/app/api/settings/route.js +1 -1
  386. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  387. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  388. package/app/.next/server/app/api/settings/system-prompt/route.js +1 -1
  389. package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
  390. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  391. package/app/.next/server/app/api/settings/task-routing/route.js +1 -1
  392. package/app/.next/server/app/api/settings/task-routing/route.js.nft.json +1 -1
  393. package/app/.next/server/app/api/settings/task-routing/route_client-reference-manifest.js +1 -1
  394. package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -1
  395. package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
  396. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  397. package/app/.next/server/app/api/shutdown/route.js +1 -1
  398. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  399. package/app/.next/server/app/api/storage/health/route.js +1 -1
  400. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  401. package/app/.next/server/app/api/sync/cloud/route.js +1 -1
  402. package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
  403. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  404. package/app/.next/server/app/api/sync/initialize/route.js +1 -1
  405. package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
  406. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  407. package/app/.next/server/app/api/tags/route.js +1 -1
  408. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  409. package/app/.next/server/app/api/telemetry/summary/route.js +1 -1
  410. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  411. package/app/.next/server/app/api/token-health/route.js +1 -1
  412. package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
  413. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  414. package/app/.next/server/app/api/translator/detect/route.js +1 -1
  415. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  416. package/app/.next/server/app/api/translator/history/route.js +1 -1
  417. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  418. package/app/.next/server/app/api/translator/load/route.js +1 -1
  419. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  420. package/app/.next/server/app/api/translator/save/route.js +1 -1
  421. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  422. package/app/.next/server/app/api/translator/send/route.js +1 -1
  423. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  424. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  425. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  426. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  427. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  428. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  429. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  430. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  431. package/app/.next/server/app/api/usage/analytics/route.js +1 -1
  432. package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
  433. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  434. package/app/.next/server/app/api/usage/budget/route.js +2 -2
  435. package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
  436. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  437. package/app/.next/server/app/api/usage/call-logs/[id]/route.js +1 -1
  438. package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
  439. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  440. package/app/.next/server/app/api/usage/call-logs/route.js +1 -1
  441. package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
  442. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  443. package/app/.next/server/app/api/usage/history/route.js +1 -1
  444. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  445. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  446. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  447. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  448. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  449. package/app/.next/server/app/api/usage/proxy-logs/route.js +1 -1
  450. package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +1 -1
  451. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  452. package/app/.next/server/app/api/usage/quota/route.js +1 -1
  453. package/app/.next/server/app/api/usage/quota/route.js.nft.json +1 -1
  454. package/app/.next/server/app/api/usage/quota/route_client-reference-manifest.js +1 -1
  455. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  456. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  457. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  458. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  459. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  460. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  461. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  462. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  463. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  464. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  465. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  466. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  467. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  468. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  469. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  470. package/app/.next/server/app/api/v1/completions/route.js +1 -1
  471. package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
  472. package/app/.next/server/app/api/v1/completions/route_client-reference-manifest.js +1 -1
  473. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  474. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  475. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  476. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  477. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  478. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  479. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  480. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  481. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  482. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  483. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  484. package/app/.next/server/app/api/v1/models/route.js +1 -1
  485. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  486. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  487. package/app/.next/server/app/api/v1/moderations/route.js +1 -1
  488. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  489. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  490. package/app/.next/server/app/api/v1/music/generations/route.js +1 -1
  491. package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
  492. package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
  493. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -1
  494. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  495. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  496. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
  497. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  498. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  499. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
  500. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  501. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  502. package/app/.next/server/app/api/v1/rerank/route.js +1 -1
  503. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  504. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  505. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  506. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  507. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  508. package/app/.next/server/app/api/v1/route.js +1 -1
  509. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  510. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  511. package/app/.next/server/app/api/v1/videos/generations/route.js +1 -1
  512. package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  513. package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
  514. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  515. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  516. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  517. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  518. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  519. package/app/.next/server/app/callback/page.js +2 -2
  520. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  521. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  522. package/app/.next/server/app/docs/page.js +3 -3
  523. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  524. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  525. package/app/.next/server/app/forbidden/page.js +2 -2
  526. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  527. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  528. package/app/.next/server/app/forgot-password/page.js +2 -2
  529. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  530. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  531. package/app/.next/server/app/landing/page.js +2 -2
  532. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  533. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  534. package/app/.next/server/app/login/page.js +2 -2
  535. package/app/.next/server/app/login/page.js.nft.json +1 -1
  536. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  537. package/app/.next/server/app/maintenance/page.js +2 -2
  538. package/app/.next/server/app/maintenance/page.js.nft.json +1 -1
  539. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  540. package/app/.next/server/app/offline/page.js +2 -2
  541. package/app/.next/server/app/offline/page.js.nft.json +1 -1
  542. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  543. package/app/.next/server/app/page.js +2 -2
  544. package/app/.next/server/app/page.js.nft.json +1 -1
  545. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  546. package/app/.next/server/app/privacy/page.js +2 -2
  547. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  548. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  549. package/app/.next/server/app/status/page.js +2 -2
  550. package/app/.next/server/app/status/page.js.nft.json +1 -1
  551. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  552. package/app/.next/server/app/terms/page.js +2 -2
  553. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  554. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  555. package/app/.next/server/app-paths-manifest.json +42 -42
  556. package/app/.next/server/chunks/242.js +1 -1
  557. package/app/.next/server/chunks/2910.js +1 -1
  558. package/app/.next/server/chunks/3648.js +2 -2
  559. package/app/.next/server/chunks/438.js +1 -1
  560. package/app/.next/server/chunks/4488.js +1 -1
  561. package/app/.next/server/chunks/5248.js +1 -0
  562. package/app/.next/server/chunks/5979.js +1 -1
  563. package/app/.next/server/chunks/6743.js +1 -1
  564. package/app/.next/server/chunks/7109.js +1 -1
  565. package/app/.next/server/chunks/7327.js +1 -1
  566. package/app/.next/server/chunks/7889.js +2 -0
  567. package/app/.next/server/chunks/8020.js +3 -3
  568. package/app/.next/server/chunks/9548.js +1 -1
  569. package/app/.next/server/middleware-build-manifest.js +1 -1
  570. package/app/.next/server/middleware.js +2 -2
  571. package/app/.next/server/next-font-manifest.js +1 -1
  572. package/app/.next/server/next-font-manifest.json +1 -1
  573. package/app/.next/server/pages/500.html +2 -2
  574. package/app/.next/server/server-reference-manifest.js +1 -1
  575. package/app/.next/server/server-reference-manifest.json +1 -1
  576. package/app/.next/static/chunks/{5846-63e1f1f0bd63a6ad.js → 5846-df4fe851d063cfee.js} +1 -1
  577. package/app/.next/static/chunks/{647-bf8bc535ac3648d0.js → 647-62acab8e8736396d.js} +2 -2
  578. package/app/.next/static/chunks/app/(dashboard)/dashboard/a2a/page-43d6fa6b75cca497.js +1 -0
  579. package/app/.next/static/chunks/app/(dashboard)/dashboard/agents/{page-576b27a05c09fba5.js → page-94aa33336637e74c.js} +1 -1
  580. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-49ae846d72948391.js +1 -0
  581. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/{page-6ab7701da3357bb9.js → page-bef5c045e7eae657.js} +1 -1
  582. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-71f65a8c11e24ee8.js +1 -0
  583. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-e5bf8955e7b9a4f5.js +1 -0
  584. package/app/.next/static/chunks/app/(dashboard)/dashboard/auto-combo/{page-799e2f96e9af3fd9.js → page-fbf2315ef6ecc87a.js} +1 -1
  585. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-1d9c62ff735ac65a.js +15 -0
  586. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-4e4d823fdc8705f5.js +1 -0
  587. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-8f6233f59f5277e9.js → page-7a233357dfbd2e05.js} +1 -1
  588. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-81a6632af8c82919.js +1 -0
  589. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/{page-1e1eb2f79d606ab2.js → page-66ee4e631429e0d8.js} +1 -1
  590. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-5ace323bdf990976.js +1 -0
  591. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/{page-2d456b7ddbf3d41e.js → page-f08daa44ccbeb258.js} +1 -1
  592. package/app/.next/static/chunks/app/(dashboard)/dashboard/mcp/page-8e35334b9f393139.js +1 -0
  593. package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-4e1629fc8404b3b9.js +1 -0
  594. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/{page-5378e9473a20cd6a.js → page-d424641c7e428be9.js} +1 -1
  595. package/app/.next/static/chunks/app/(dashboard)/dashboard/{page-799001b6cea7d5bc.js → page-fc5b6d46662747df.js} +1 -1
  596. package/app/.next/static/chunks/app/(dashboard)/dashboard/playground/{page-0fff47edc56250ea.js → page-6d988d37ce3b0e60.js} +1 -1
  597. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-f248c93328119230.js +1 -0
  598. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{error-a5ae03ba05400b04.js → error-0400f175dd1372fa.js} +1 -1
  599. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/loading-9552383fd2e11282.js +1 -0
  600. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-d57908b59d4b482c.js +1 -0
  601. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-fbf74ae2f3206efe.js → page-adbd858f2a6cd352.js} +1 -1
  602. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{error-ec9643134a96bbcd.js → error-c39d18f10fb7d3f6.js} +1 -1
  603. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{loading-3519a633b514f31a.js → loading-b5faf05c78a2cc54.js} +1 -1
  604. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-28ee6d0fc27b6ffe.js +1 -0
  605. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/{page-aab023f14c6ff966.js → page-0325206d05e6f375.js} +1 -1
  606. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-8d6f629e0e29e796.js → page-f761c3ff75d56636.js} +2 -2
  607. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-9e20463252daf023.js +1 -0
  608. package/app/.next/static/chunks/app/(dashboard)/{layout-7ae0c66c22bee8a1.js → layout-6d0afc53f5f2a538.js} +1 -1
  609. package/app/.next/static/chunks/app/400/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  610. package/app/.next/static/chunks/app/401/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  611. package/app/.next/static/chunks/app/403/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  612. package/app/.next/static/chunks/app/408/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  613. package/app/.next/static/chunks/app/429/page-3b77bf358909019a.js +1 -0
  614. package/app/.next/static/chunks/app/500/page-3b77bf358909019a.js +1 -0
  615. package/app/.next/static/chunks/app/502/page-3b77bf358909019a.js +1 -0
  616. package/app/.next/static/chunks/app/503/page-3b77bf358909019a.js +1 -0
  617. package/app/.next/static/chunks/app/callback/{page-0f0ebc0820dd18a5.js → page-585a53f7dc6a30f1.js} +1 -1
  618. package/app/.next/static/chunks/app/docs/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
  619. package/app/.next/static/chunks/app/{error-32c03f14529d3920.js → error-f7f595c541537e63.js} +1 -1
  620. package/app/.next/static/chunks/app/forbidden/page-b33079c1573b0bfa.js +1 -0
  621. package/app/.next/static/chunks/app/forgot-password/page-90cd6259c75badfc.js +1 -0
  622. package/app/.next/static/chunks/app/global-error-1dfd1c91ad5199fe.js +1 -0
  623. package/app/.next/static/chunks/app/landing/page-90df98c27fe0b5d9.js +1 -0
  624. package/app/.next/static/chunks/app/{layout-070972eb026af319.js → layout-108592eafb959363.js} +1 -1
  625. package/app/.next/static/chunks/app/{loading-da2f6e1471afc070.js → loading-e063375d5b12a2f7.js} +1 -1
  626. package/app/.next/static/chunks/app/login/page-c5dc0a31f8dc566f.js +1 -0
  627. package/app/.next/static/chunks/app/maintenance/page-3b77bf358909019a.js +1 -0
  628. package/app/.next/static/chunks/app/not-found-511518956bcae7bc.js +1 -0
  629. package/app/.next/static/chunks/app/offline/page-9d6ea493783a0219.js +1 -0
  630. package/app/.next/static/chunks/app/privacy/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
  631. package/app/.next/static/chunks/app/status/page-4e5e9b5a513aa474.js +1 -0
  632. package/app/.next/static/chunks/app/terms/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
  633. package/app/.next/static/chunks/{main-app-ae230f6bf51a5edb.js → main-app-c9da11a8061df107.js} +1 -1
  634. package/app/package.json +1 -1
  635. package/app/server.js +1 -1
  636. package/package.json +1 -1
  637. package/app/.env +0 -122
  638. package/app/.next/server/chunks/1909.js +0 -2
  639. package/app/.next/server/chunks/7167.js +0 -1
  640. package/app/.next/static/chunks/app/(dashboard)/dashboard/a2a/page-ed1f5b1ae0e01c02.js +0 -1
  641. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-6a2bb3ad980b05b9.js +0 -1
  642. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-8ee341b662a845dc.js +0 -1
  643. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c9b98846b8479f3f.js +0 -1
  644. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-3c3f3b0b558e9302.js +0 -15
  645. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-3ed193e882fc0438.js +0 -1
  646. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-8b96e2f6d76d6f2d.js +0 -1
  647. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-ddce876357cb3ada.js +0 -1
  648. package/app/.next/static/chunks/app/(dashboard)/dashboard/mcp/page-d9b5c3282ec5d809.js +0 -1
  649. package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-5ed5bdc9e926936c.js +0 -1
  650. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-389538ee27f0e405.js +0 -1
  651. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/loading-7deaa9f550841465.js +0 -1
  652. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-3ef302da4b756e50.js +0 -1
  653. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-df62bcc49944269c.js +0 -1
  654. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-8c8f2d59d0cbb516.js +0 -1
  655. package/app/.next/static/chunks/app/429/page-3b9079ea400ca287.js +0 -1
  656. package/app/.next/static/chunks/app/500/page-3b9079ea400ca287.js +0 -1
  657. package/app/.next/static/chunks/app/502/page-3b9079ea400ca287.js +0 -1
  658. package/app/.next/static/chunks/app/503/page-3b9079ea400ca287.js +0 -1
  659. package/app/.next/static/chunks/app/forbidden/page-8d8e1709a1e32585.js +0 -1
  660. package/app/.next/static/chunks/app/forgot-password/page-d5c9b77748aa9deb.js +0 -1
  661. package/app/.next/static/chunks/app/global-error-5840b1caa830f2ec.js +0 -1
  662. package/app/.next/static/chunks/app/landing/page-8f652c1fbc33efd2.js +0 -1
  663. package/app/.next/static/chunks/app/login/page-26d717c652d56032.js +0 -1
  664. package/app/.next/static/chunks/app/maintenance/page-3b9079ea400ca287.js +0 -1
  665. package/app/.next/static/chunks/app/not-found-faf36d2a9a452506.js +0 -1
  666. package/app/.next/static/chunks/app/offline/page-bf68bf461af876a3.js +0 -1
  667. package/app/.next/static/chunks/app/status/page-29a433b40631ce12.js +0 -1
  668. package/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  669. /package/app/.next/static/{O9lSHUzWYvY1bYZSFuKAJ → qGXBolOylWgE1zjkbpj9E}/_buildManifest.js +0 -0
  670. /package/app/.next/static/{O9lSHUzWYvY1bYZSFuKAJ → qGXBolOylWgE1zjkbpj9E}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7066,9040,9877],{33192:(e,r,s)=>{Promise.resolve().then(s.bind(s,91930)),Promise.resolve().then(s.t.bind(s,98500,23))},91930:(e,r,s)=>{"use strict";s.d(r,{default:()=>n});var o=s(33418),l=s(95155);function n({locale:e,...r}){if(!e)throw Error(void 0);return(0,l.jsx)(o.Dk,{locale:e,...r})}}},e=>{e.O(0,[8500,3418,8441,3794,7358],()=>e(e.s=33192)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7066,9040,9877],{16680:(e,r,s)=>{Promise.resolve().then(s.bind(s,91930)),Promise.resolve().then(s.t.bind(s,98500,23))},91930:(e,r,s)=>{"use strict";s.d(r,{default:()=>n});var o=s(33418),l=s(95155);function n({locale:e,...r}){if(!e)throw Error(void 0);return(0,l.jsx)(o.Dk,{locale:e,...r})}}},e=>{e.O(0,[8500,3418,8441,3794,7358],()=>e(e.s=16680)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7358],{19393:()=>{},95399:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,61304,23)),Promise.resolve().then(n.t.bind(n,78616,23)),Promise.resolve().then(n.t.bind(n,64777,23)),Promise.resolve().then(n.t.bind(n,57121,23)),Promise.resolve().then(n.t.bind(n,74581,23)),Promise.resolve().then(n.t.bind(n,90484,23)),Promise.resolve().then(n.bind(n,86869))}},e=>{var s=s=>e(e.s=s);e.O(0,[8441,3794],()=>(s(83861),s(95399))),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7358],{19393:()=>{},42903:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,61304,23)),Promise.resolve().then(n.t.bind(n,78616,23)),Promise.resolve().then(n.t.bind(n,64777,23)),Promise.resolve().then(n.t.bind(n,57121,23)),Promise.resolve().then(n.t.bind(n,74581,23)),Promise.resolve().then(n.t.bind(n,90484,23)),Promise.resolve().then(n.bind(n,86869))}},e=>{var s=s=>e(e.s=s);e.O(0,[8441,3794],()=>(s(83861),s(42903))),_N_E=e.O()}]);
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omniroute",
3
- "version": "2.5.3",
3
+ "version": "2.5.4",
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":["localhost","127.0.0.1","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.5.3",
3
+ "version": "2.5.4",
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(75585),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.5.3"}},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(75585);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",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},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://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},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://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"}},n="openai-compatible-",o="anthropic-compatible-";function g(a){return"string"==typeof a&&a.startsWith(n)}function h(a){return"string"==typeof a&&a.startsWith(o)}let p={...k,...l,...m},q={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function i(a){for(let b of Object.values(p))if(b.alias===a||b.id===a)return b;return null}function j(a){let b=p[a];return b?.alias||a}Object.values(p).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(p).reduce((a,b)=>(a[b.id]=b.alias,a),{});let r=["antigravity","kiro","github","codex","claude","kimi-coding"];(0,e.LA)(k,"FREE_PROVIDERS"),(0,e.LA)(l,"OAUTH_PROVIDERS"),(0,e.LA)(m,"APIKEY_PROVIDERS"),d()}catch(a){d(a)}})},73857:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(48249),e=c(2116),f=c.n(e);function g(){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-bg text-text-main text-center",role:"main","aria-labelledby":"not-found-title",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-primary to-primary-hover bg-clip-text text-transparent","aria-hidden":"true",children:"404"}),(0,d.jsx)("h1",{id:"not-found-title",className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-text-muted max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row items-center gap-3",children:[(0,d.jsx)(f(),{href:"/dashboard",className:"px-8 py-3 rounded-xl text-white text-sm font-medium no-underline transition-all duration-200 motion-reduce:transition-none shadow-warm hover:-translate-y-0.5 bg-gradient-to-br from-primary to-primary-hover hover:shadow-elevated focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Return to dashboard",children:"Go to Dashboard"}),(0,d.jsx)(f(),{href:"/status",className:"px-8 py-3 rounded-xl text-sm font-medium no-underline border border-border hover:bg-bg-alt transition-colors duration-200 motion-reduce:transition-none focus:outline-2 focus:outline-offset-2 focus:outline-primary","aria-label":"Open system status page",children:"System Status"})]})]})}},75146:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{ThemeProvider:()=>h});var e=c(48249);c(67484);var f=c(47695),g=a([f]);function h({children:a}){let{initTheme:b}=(0,f.A)();return(0,e.jsx)(e.Fragment,{children:a})}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},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.4",name:"GPT 5.4"},{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":"QwenCode/0.12.3 (linux; x64)","X-Dashscope-AuthType":"qwen-oauth","X-Dashscope-CacheControl":"enable","X-Dashscope-UserAgent":"QwenCode/0.12.3 (linux; x64)","X-Stainless-Arch":"x64","X-Stainless-Lang":"js","X-Stainless-Os":"Linux","X-Stainless-Package-Version":"5.11.0","X-Stainless-Retry-Count":"1","X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":"v18.19.1",Connection:"keep-alive","Accept-Language":"*","Sec-Fetch-Mode":"cors"},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"},{id:"coder-model",name:"Qwen3.5 (Coder 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:"iflow-rome-30ba3b",name:"iFlow ROME"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 Vision Plus"},{id:"kimi-k2-0905",name:"Kimi K2 0905"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek-V3.2-Exp"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3",name:"DeepSeek V3"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b",name:"Qwen3 235B"}]},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"},{id:"kimi-for-coding",name:"Kimi For Coding"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",modelsUrl:"https://api.kilo.ai/api/openrouter/models",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"openrouter/free",name:"Free Models Router"},{id:"qwen/qwen3-vl-235b-a22b-thinking",name:"Qwen3 VL 235B A22B Thinking"},{id:"qwen/qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen/qwen3-vl-30b-a3b-thinking",name:"Qwen3 VL 30B A3B Thinking"},{id:"stepfun/step-3.5-flash:free",name:"StepFun Step 3.5 Flash"},{id:"arcee-ai/trinity-large-preview:free",name:"Arcee AI Trinity Large Preview"},{id:"openai/gpt-4o-mini",name:"GPT-4o Mini"},{id:"openai/gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"openai/gpt-5-nano",name:"GPT-5 Nano"},{id:"openai/gpt-5-mini",name:"GPT-5 Mini"},{id:"anthropic/claude-3-haiku",name:"Claude 3 Haiku"},{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"google/gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"deepseek/deepseek-chat-v3.1",name:"DeepSeek V3.1"},{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-scout",name:"Llama 4 Scout"},{id:"meta-llama/llama-4-maverick",name:"Llama 4 Maverick"},{id:"qwen/qwen3-8b",name:"Qwen3 8B"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"qwen/qwen3-coder",name:"Qwen3 Coder 480B"},{id:"qwen/qwq-32b",name:"QwQ 32B"},{id:"mistralai/mistral-small-24b-instruct-2501",name:"Mistral Small 3"},{id:"mistralai/mistral-7b-instruct",name:"Mistral 7B"},{id:"x-ai/grok-code-fast-1",name:"Grok Code Fast 1"},{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},blackbox:{id:"blackbox",alias:"bb",format:"openai",executor:"default",baseUrl:"https://api.blackbox.ai/v1/chat/completions",modelsUrl:"https://api.blackbox.ai/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"deepseek-v3",name:"DeepSeek V3"},{id:"blackboxai",name:"Blackbox AI"},{id:"blackboxai-pro",name:"Blackbox AI Pro"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",format:"openai",executor:"default",baseUrl:"https://api.ollama.com/v1/chat/completions",modelsUrl:"https://api.ollama.com/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gemma3:27b",name:"Gemma 3 27B"},{id:"llama3.3:70b",name:"Llama 3.3 70B"},{id:"qwen3:72b",name:"Qwen3 72B"},{id:"devstral:24b",name:"Devstral 24B"},{id:"deepseek-r2:671b",name:"DeepSeek R2 671B"},{id:"phi4:14b",name:"Phi 4 14B"},{id:"mistral-small3.2:24b",name:"Mistral Small 3.2 24B"}],passthroughModels:!0},cohere:{id:"cohere",alias:"cohere",format:"openai",executor:"default",baseUrl:"https://api.cohere.com/v2/chat",authType:"apikey",authHeader:"bearer",models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},nvidia:{id:"nvidia",alias:"nvidia",format:"openai",executor:"default",baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}]},nebius:{id:"nebius",alias:"nebius",format:"openai",executor:"default",baseUrl:"https://api.tokenfactory.nebius.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}]},siliconflow:{id:"siliconflow",alias:"siliconflow",format:"openai",executor:"default",baseUrl:"https://api.siliconflow.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}]},hyperbolic:{id:"hyperbolic",alias:"hyp",format:"openai",executor:"default",baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]},huggingface:{id:"huggingface",alias:"hf",format:"openai",executor:"default",baseUrl:"https://router.huggingface.co/hf-inference/models/meta-llama/Meta-Llama-3.1-70B-Instruct/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Meta-Llama-3.1-70B-Instruct",name:"Llama 3.1 70B Instruct"},{id:"meta-llama/Meta-Llama-3.1-8B-Instruct",name:"Llama 3.1 8B Instruct"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"mistralai/Mistral-7B-Instruct-v0.3",name:"Mistral 7B v0.3"},{id:"microsoft/Phi-3.5-mini-instruct",name:"Phi-3.5 Mini"}]},vertex:{id:"vertex",alias:"vertex",format:"gemini",executor:"default",baseUrl:"https://us-central1-aiplatform.googleapis.com/v1/projects",urlBuilder:(a,b,c)=>`https://generativelanguage.googleapis.com/v1beta/models/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"bearer",models:[{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Vertex)"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash (Vertex)"},{id:"gemini-2.0-flash-thinking-exp",name:"Gemini 2.0 Flash Thinking Exp (Vertex)"},{id:"gemma-2-27b-it",name:"Gemma 2 27B (Vertex)"},{id:"claude-opus-4-5@20251101",name:"Claude Opus 4.5 (Vertex)"},{id:"claude-sonnet-4-5@20251101",name:"Claude Sonnet 4.5 (Vertex)"}]}},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:"Gemini 2.5 Flash Image"},{id:"gemini-3.1-flash-image-preview",name:"Gemini 3.1 Flash Image Preview"}],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",statusUrl:"https://api.nanobananaapi.ai/api/v1/nanobanana/record-info",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","1024x1280","1024x1536","1536x1024","1280x1024"]},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?o({model:g,provider:f,providerConfig:j,body:a,log:c}):"comfyui"===j.format?p({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=c.statusUrl,o="string"==typeof d.aspectRatio?d.aspectRatio:"string"==typeof d.aspect_ratio?d.aspect_ratio:function(a){if("string"!=typeof a)return null;let[b,c]=a.split("x"),d=Number(b),e=Number(c);if(!Number.isFinite(d)||!Number.isFinite(e)||d<=0||e<=0)return null;let f=(a,b)=>0===b?a:f(b,a%b),g=f(Math.round(d),Math.round(e));return`${Math.round(d/g)}:${Math.round(e/g)}`}(d.size)||"1:1",p="string"==typeof d.resolution?d.resolution:function(a){if("string"!=typeof a)return null;let[b,c]=a.split("x"),d=Number(b),e=Number(c);if(!Number.isFinite(d)||!Number.isFinite(e)||d<=0||e<=0)return null;let f=Math.max(d,e);return f<=1024?"1K":f<=2048?"2K":"4K"}(d.size)||"1K";"hd"===d.quality&&"1K"===p&&(p="2K");let q=j?{prompt:d.prompt,resolution:p,aspectRatio:o,...Array.isArray(d.imageUrls)?{imageUrls:d.imageUrls}:{}}:{prompt:d.prompt,type:Array.isArray(d.imageUrls)&&d.imageUrls.length>0?"IMAGETOIAMGE":"TEXTTOIAMGE",numImages:Number.isFinite(d.n)?Math.max(1,Number(d.n)):1,image_size:o,...Array.isArray(d.imageUrls)?{imageUrls:d.imageUrls}:{}};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(q)});if(!c.ok){let d=await c.text();return g&&g.error("IMAGE",`${b} submit 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();if(f?.image||Array.isArray(f?.images)||Array.isArray(f?.data)||f?.data?.[0]?.url||f?.data?.[0]?.b64_json){let c=function(a,b){let c=[];if(a.image)c.push({b64_json:a.image,revised_prompt:b});else if(Array.isArray(a.images))for(let d of a.images)c.push({b64_json:"string"==typeof d?d:d?.image||d?.data,revised_prompt:b});else if(Array.isArray(a.data))for(let b of a.data)b&&c.push(b);return{data:c.filter(Boolean)}}(f,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:c.data?.length||0,mode:"sync"}}).catch(()=>{}),{success:!0,data:{created:Math.floor(Date.now()/1e3),data:c.data}}}let j=f?.data?.taskId||f?.taskId;if(!j){let c=`NanoBanana submit did not return taskId: ${JSON.stringify(f).slice(0,400)}`;return(0,e.gK)({method:"POST",path:"/v1/images/generations",status:502,model:`${b}/${a}`,provider:b,duration:Date.now()-h,error:c}).catch(()=>{}),{success:!1,status:502,error:c}}if(!l){let c="NanoBanana statusUrl is not configured";return(0,e.gK)({method:"POST",path:"/v1/images/generations",status:500,model:`${b}/${a}`,provider:b,duration:Date.now()-h,error:c}).catch(()=>{}),{success:!1,status:500,error:c}}let o=n(d.timeout_ms,n(process.env.NANOBANANA_POLL_TIMEOUT_MS,12e4)),p=n(d.poll_interval_ms,n(process.env.NANOBANANA_POLL_INTERVAL_MS,2500)),r=null,s=Date.now()+o;for(;Date.now()<s;){let c=await fetch(`${l}?taskId=${encodeURIComponent(j)}`,{method:"GET",headers:{Authorization:`Bearer ${i}`}});if(!c.ok){let a=await c.text();return g&&g.error("IMAGE",`${b} poll error ${c.status}: ${a.slice(0,200)}`),{success:!1,status:c.status,error:a}}let f=await c.json(),k=f?.data||f;r=k;let n=Number(k?.successFlag);if(1===n){let c=await m(k,d,g);return(0,e.gK)({method:"POST",path:"/v1/images/generations",status:200,model:`${b}/${a}`,provider:b,duration:Date.now()-h,responseBody:{images_count:c.length,mode:"async",taskId:j}}).catch(()=>{}),{success:!0,data:{created:Math.floor(Date.now()/1e3),data:c}}}if(2===n||3===n){let c=k?.errorMessage||`NanoBanana task failed (successFlag=${String(n)})`;return(0,e.gK)({method:"POST",path:"/v1/images/generations",status:502,model:`${b}/${a}`,provider:b,duration:Date.now()-h,error:c.slice(0,500),responseBody:{taskId:j,successFlag:n,errorCode:k?.errorCode??null}}).catch(()=>{}),{success:!1,status:502,error:c}}await function(a){return new Promise(b=>setTimeout(b,a))}(p)}let t=`NanoBanana task timeout after ${o}ms (taskId=${j}, successFlag=${String(r?.successFlag??"unknown")})`;return(0,e.gK)({method:"POST",path:"/v1/images/generations",status:504,model:`${b}/${a}`,provider:b,duration:Date.now()-h,error:t,responseBody:{taskId:j,lastSuccessFlag:r?.successFlag??null}}).catch(()=>{}),{success:!1,status:504,error:t}}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(a,b,c){let d=a?.response||{},e=[d?.resultImageUrl,d?.originImageUrl,a?.resultImageUrl,a?.originImageUrl].filter(a=>"string"==typeof a&&a.length>0);if(Array.isArray(d?.resultImageUrls))for(let a of d.resultImageUrls)"string"==typeof a&&a.length>0&&e.push(a);let f=[d?.resultImageBase64,d?.resultImage,a?.resultImageBase64,a?.resultImage].filter(a=>"string"==typeof a&&a.length>0);if(Array.isArray(d?.resultImageBase64List))for(let a of d.resultImageBase64List)"string"==typeof a&&a.length>0&&f.push(a);if("b64_json"===b.response_format){if(f.length>0)return f.map(a=>({b64_json:a,revised_prompt:b.prompt}));if(e.length>0){let a=e[0],c=await fetch(a);if(!c.ok)throw Error(`Failed to fetch NanoBanana result image URL (${c.status})`);let d=await c.arrayBuffer();return[{b64_json:Buffer.from(d).toString("base64"),revised_prompt:b.prompt}]}}return e.length>0?e.map(a=>({url:a,revised_prompt:b.prompt})):f.length>0?f.map(a=>({b64_json:a,revised_prompt:b.prompt})):(c&&c.warn("IMAGE",`NanoBanana task completed without image payload: ${JSON.stringify(a).slice(0,240)}`),[])}function n(a,b){let c=Number(a);return!Number.isFinite(c)||c<=0?b:Math.floor(c)}async function o({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 p({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.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:()=>y.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:()=>b.default,Lo:()=>f.default,y7:()=>h.default,Iz:()=>j.default,l6:()=>r.default,lM:()=>o.default,cn:()=>u.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 u=s(45624),h=s(37415),b=s(48643),f=s(8287);s(1652);var g=s(92701);s(18150);var y=s(71689),j=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)([]),[u,h]=(0,a.useState)(!0),[b,f]=(0,a.useState)(!1),[g,y]=(0,a.useState)(""),[j,N]=(0,a.useState)(null),[v,k]=(0,a.useState)(null),[w,C]=(0,a.useState)(!1),[S,_]=(0,a.useState)(""),[$,A]=(0,a.useState)(null),[M,R]=(0,a.useState)(!1),[D,K]=(0,a.useState)({}),{copied:T,copy:E}=(0,i.C)();(0,a.useEffect)(()=>{z(),O(),P()},[]);let O=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)}},P=async()=>{try{let e=await fetch("/api/providers");if(e.ok){let t=await e.json();p(t.connections||[])}}catch(e){console.log("Error fetching connections:",e)}},z=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{h(!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}}K(l)}catch(e){console.log("Error fetching usage stats:",e)}},F=(0,a.useCallback)(()=>A(null),[]),Z=async()=>{let t=g.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 A(s.error||e("invalidKeyName"));R(!0),F();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?(N(l.key),await z(),y(""),f(!1)):A(l.error||e("failedCreateKey"))}catch(t){console.error("Error creating key:",t),A(e("failedCreateKeyRetry"))}finally{R(!1)}},U=async t=>{if(!t||"string"!=typeof t||!/^[a-zA-Z0-9_-]+$/.test(t))return void A(e("invalidKeyId"));if(confirm(e("deleteConfirm"))){R(!0),F();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();A(t.error||e("failedDeleteKey"))}}catch(t){console.error("Error deleting key:",t),A(e("failedDeleteKeyRetry"))}finally{R(!1)}}},q=e=>{e&&e.id&&(k(e),C(!0))},I=async(t,s,l,a,r,i)=>{if(!v||!v.id)return;if(!Array.isArray(t))return void A(e("invalidModelsSelection"));if(t.length>500)return void A(e("cannotSelectMoreThanModels",{max:500}));let n=t.filter(e=>"string"==typeof e&&e.length>0&&e.length<200),d=l.filter(e=>"string"==typeof e&&/^[0-9a-f-]{36}$/i.test(e));R(!0),F();try{let t=await fetch(`/api/keys/${encodeURIComponent(v.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({allowedModels:n,allowedConnections:d,noLog:s,autoResolve:a,isActive:r,accessSchedule:i})});if(t.ok)await z(),C(!1),k(null);else{let s=await t.json();A(s.error||e("failedUpdatePermissions"))}}catch(t){console.error("Error updating permissions:",t),A(e("failedUpdatePermissionsRetry"))}finally{R(!1)}},W=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}(S,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]),H=(0,a.useMemo)(()=>{if(!W.trim())return Q;let e=W.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,W]);return u?(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:[$&&(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:$}),(0,l.jsx)("button",{onClick:F,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(D).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:()=>f(!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:()=>f(!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=D[t.id],a=Array.isArray(t.allowedModels)&&t.allowedModels.length>0,r=Array.isArray(t.allowedConnections)&&t.allowedConnections.length>0,i=!0===t.noLog,n=!1!==t.isActive,d=t.accessSchedule?.enabled===!0;return(0,l.jsxs)("div",{className:"grid grid-cols-12 gap-4 px-4 py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 hover:bg-surface/30 transition-colors group",children:[(0,l.jsxs)("div",{className:"col-span-2 flex items-center gap-2",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-sm ${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:T===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:()=>q(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:()=>q(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)("button",{onClick:()=>q(t),className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-blue-500/10 text-blue-600 dark:text-blue-400 text-xs font-medium hover:bg-blue-500/20 transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"cable"}),t.allowedConnections.length," conn"]}),i&&(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"]}),t.autoResolve&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-cyan-500/10 text-cyan-600 dark:text-cyan-400 text-[11px] font-medium",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"auto_fix_high"}),"Auto-Resolve"]}),!n&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-red-500/10 text-red-600 dark:text-red-400 text-[11px] font-medium",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"block"}),e("disabled")]}),d&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-orange-500/10 text-orange-600 dark:text-orange-400 text-[11px] font-medium",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"schedule"}),e("scheduleActive")]})]})}),(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:()=>q(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:()=>U(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:b,title:e("createKey"),onClose:()=>{f(!1),y("")},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:g,onChange:e=>y(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:()=>{f(!1),y("")},variant:"ghost",fullWidth:!0,children:t("cancel")}),(0,l.jsx)(r.$n,{onClick:Z,fullWidth:!0,disabled:!g.trim(),children:e("createKey")})]})]})}),(0,l.jsx)(r.aF,{isOpen:!!j,title:e("keyCreated"),onClose:()=>N(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:j||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,l.jsx)(r.$n,{variant:"secondary",icon:"created_key"===T?"check":"content_copy",onClick:()=>E(j,"created_key"),children:t("created_key"===T?"copied":"copy")})]}),(0,l.jsx)(r.$n,{onClick:()=>N(null),fullWidth:!0,children:e("done")})]})}),v&&(0,l.jsx)(c,{isOpen:w,onClose:()=>{C(!1),k(null)},apiKey:v,modelsByProvider:H,allModels:o,allConnections:m,searchModel:S,onSearchChange:_,onSave:I},v.id)]})}let c=(0,a.memo)(function({isOpen:e,onClose:t,apiKey:s,modelsByProvider:i,allModels:d,allConnections:c,searchModel:o,onSearchChange:x,onSave:m}){let p=(0,n.c)("apiManager"),u=(0,n.c)("common"),h=Array.isArray(s?.allowedModels)?s.allowedModels:[],b=Array.isArray(s?.allowedConnections)?s.allowedConnections:[],[f,g]=(0,a.useState)(h),[y,j]=(0,a.useState)(0===h.length),[N,v]=(0,a.useState)(s?.noLog===!0),[k,w]=(0,a.useState)(s?.autoResolve===!0),[C,S]=(0,a.useState)(s?.isActive!==!1),[_,$]=(0,a.useState)(s?.accessSchedule?.enabled===!0),[A,M]=(0,a.useState)(s?.accessSchedule?.from??"08:00"),[R,D]=(0,a.useState)(s?.accessSchedule?.until??"18:00"),[K,T]=(0,a.useState)(s?.accessSchedule?.days??[1,2,3,4,5]),[E,O]=(0,a.useState)(s?.accessSchedule?.tz??Intl.DateTimeFormat().resolvedOptions().timeZone),[P,z]=(0,a.useState)(b),[L,F]=(0,a.useState)(0===b.length),[Z,U]=(0,a.useState)(()=>h.length>0?new Set(i.map(([e])=>e)):new Set),q=(0,a.useCallback)(e=>{y||g(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[y]),I=(0,a.useCallback)((e,t)=>{if(y)return;let s=t.map(e=>e.id);g(e=>s.every(t=>e.includes(t))?e.filter(e=>!s.includes(e)):[...new Set([...e,...s])])},[y]),W=(0,a.useCallback)(()=>{j(!0),g([])},[]),Q=(0,a.useCallback)(()=>{j(!1),U(new Set(i.map(([e])=>e)))},[i]),H=(0,a.useCallback)(e=>{U(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),J=(0,a.useCallback)(()=>{g(d.map(e=>e.id))},[d]),B=(0,a.useCallback)(()=>{g([])},[]),G=(0,a.useCallback)(e=>{L||z(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[L]),V=(0,a.useCallback)(()=>{m(y?[]:f,N,L?[]:P,k,C,_?{enabled:!0,from:A,until:R,days:K,tz:E}:null)},[m,y,f,N,L,P,k,C,_,A,R,K,E]),X=f.length,Y=d.length;return(0,l.jsx)(r.aF,{isOpen:!!t&&e,title:p("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:W,className:`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-all ${y?"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"}),p("allowAll")]}),(0,l.jsxs)("button",{onClick:Q,className:`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-all ${!y?"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"}),p("restrict")]})]}),(0,l.jsxs)("div",{className:`flex items-start gap-2 p-3 rounded-lg ${y?"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] ${y?"text-green-500":"text-amber-500"}`,children:y?"info":"warning"}),(0,l.jsx)("p",{className:`text-xs ${y?"text-green-700 dark:text-green-300":"text-amber-700 dark:text-amber-300"}`,children:y?p("allowAllDesc"):p("restrictDesc",{selectedCount:X,totalModels:Y})})]}),(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:p("keyActive")}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:p("keyActiveDesc")})]}),(0,l.jsxs)("button",{type:"button",role:"switch","aria-checked":C,onClick:()=>S(e=>!e),className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-semibold transition-colors ${C?"bg-emerald-500/15 text-emerald-700 dark:text-emerald-300 border border-emerald-500/30":"bg-red-500/15 text-red-700 dark:text-red-300 border border-red-500/30"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:C?"check_circle":"block"}),u(C?"enabled":"disabled")]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2 p-3 rounded-lg border border-border bg-surface/40",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3",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:p("accessSchedule")}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:p("accessScheduleDesc")})]}),(0,l.jsxs)("button",{type:"button",role:"switch","aria-checked":_,onClick:()=>$(e=>!e),className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-semibold transition-colors shrink-0 ${_?"bg-orange-500/15 text-orange-700 dark:text-orange-300 border border-orange-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:"schedule"}),u(_?"enabled":"disabled")]})]}),_&&(0,l.jsxs)("div",{className:"flex flex-col gap-3 pt-1",children:[(0,l.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:p("scheduleFrom")}),(0,l.jsx)("input",{type:"time",value:A,onChange:e=>M(e.target.value),className:"w-full px-2 py-1.5 text-sm border border-border rounded-md bg-background text-text-main"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:p("scheduleUntil")}),(0,l.jsx)("input",{type:"time",value:R,onChange:e=>D(e.target.value),className:"w-full px-2 py-1.5 text-sm border border-border rounded-md bg-background text-text-main"})]})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs text-text-muted mb-1.5 block",children:p("scheduleDays")}),(0,l.jsx)("div",{className:"flex gap-1 flex-wrap",children:[[0,p("daySun")],[1,p("dayMon")],[2,p("dayTue")],[3,p("dayWed")],[4,p("dayThu")],[5,p("dayFri")],[6,p("daySat")]].map(([e,t])=>{let s=K.includes(e);return(0,l.jsx)("button",{type:"button",onClick:()=>T(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e].sort((e,t)=>e-t)),className:`px-2 py-1 text-[11px] font-medium rounded transition-all ${s?"bg-primary text-white":"bg-surface border border-border text-text-muted hover:border-primary/50"}`,children:t},e)})})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:p("scheduleTimezone")}),(0,l.jsx)("input",{type:"text",value:E,onChange:e=>O(e.target.value),placeholder:"America/Sao_Paulo",className:"w-full px-2 py-1.5 text-sm border border-border rounded-md bg-background text-text-main font-mono"}),(0,l.jsx)("p",{className:"text-[10px] text-text-muted mt-1",children:p("scheduleTimezoneHint")})]})]})]}),(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":N,onClick:()=>v(e=>!e),className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-semibold transition-colors ${N?"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:N?"visibility_off":"visibility"}),u(N?"enabled":"disabled")]})]}),(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:p("autoResolve")}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:p("autoResolveDesc")})]}),(0,l.jsxs)("button",{type:"button",role:"switch","aria-checked":k,onClick:()=>w(e=>!e),className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-semibold transition-colors ${k?"bg-cyan-500/15 text-cyan-700 dark:text-cyan-300 border border-cyan-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:k?"auto_fix_high":"auto_fix_normal"}),u(k?"enabled":"disabled")]})]}),!y&&X>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:p("selectedCount",{count:X})}),(0,l.jsxs)("div",{className:"flex gap-1",children:[(0,l.jsx)("button",{onClick:J,className:"text-[10px] text-primary hover:bg-primary/10 px-1.5 py-0.5 rounded transition-colors",children:u("all")}),(0,l.jsx)("button",{onClick:B,className:"text-[10px] text-red-500 hover:bg-red-500/10 px-1.5 py-0.5 rounded transition-colors",children:p("clear")})]})]}),(0,l.jsx)("div",{className:"flex flex-wrap gap-1 max-h-16 overflow-y-auto content-start",children:f.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:()=>q(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))})]}),!y&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsx)(r.pd,{value:o,onChange:e=>x(e.target.value),placeholder:p("searchModels"),icon:"search"}),o&&(0,l.jsx)("button",{onClick:()=>x(""),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:p("noModelsFound")})]}):i.map(([e,t])=>{let s=f.filter(e=>t.some(t=>t.id===e)).length,a=t.every(e=>f.includes(e.id)),r=s>0&&!a;return(0,l.jsxs)("div",{className:"group",children:[(0,l.jsxs)("button",{onClick:()=>H(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 ${Z.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(),I(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})]}),Z.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=f.includes(e.id);return(0,l.jsx)("button",{onClick:()=>q(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)})})]}),c.length>0&&(0,l.jsxs)("div",{className:"flex flex-col gap-2 p-3 rounded-lg border border-border bg-surface/40",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("p",{className:"text-sm font-medium text-text-main",children:"Allowed Connections"}),(0,l.jsxs)("div",{className:"flex gap-1 p-0.5 bg-surface rounded-md",children:[(0,l.jsx)("button",{onClick:()=>{F(!0),z([])},className:`px-2 py-1 rounded text-xs font-medium transition-all ${L?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:"All"}),(0,l.jsx)("button",{onClick:()=>F(!1),className:`px-2 py-1 rounded text-xs font-medium transition-all ${!L?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:"Restrict"})]})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:L?"This key can use any active connection.":`Restricted to ${P.length} connection${1!==P.length?"s":""}.`}),!L&&(0,l.jsx)("div",{className:"flex flex-col gap-1 max-h-40 overflow-y-auto",children:Object.entries(c.reduce((e,t)=>{let s=t.provider||"Other";return e[s]||(e[s]=[]),e[s].push(t),e},{})).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-[10px] font-semibold text-text-muted uppercase tracking-wider px-1 py-0.5",children:e}),t.map(e=>{let t=P.includes(e.id);return(0,l.jsxs)("button",{onClick:()=>G(e.id),className:`w-full flex items-center gap-2 px-2 py-1.5 rounded text-left text-xs transition-all ${t?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"}`,children:[(0,l.jsx)("div",{className:`w-3.5 h-3.5 rounded border flex items-center justify-center shrink-0 ${t?"bg-primary border-primary":"border-border"}`,children:t&&(0,l.jsx)("span",{className:"material-symbols-outlined text-white text-[10px]",children:"check"})}),(0,l.jsx)("span",{className:"truncate flex-1",children:e.name||e.id.slice(0,8)}),!e.isActive&&(0,l.jsx)("span",{className:"text-[9px] text-red-400 shrink-0",children:"inactive"})]},e.id)})]},e))})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(r.$n,{onClick:V,fullWidth:!0,children:p("savePermissions")}),(0,l.jsx)(r.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:u("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()}]);