omniroute 2.5.2 → 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 +55 -55
  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 +55 -55
  556. package/app/.next/server/chunks/242.js +1 -1
  557. package/app/.next/server/chunks/2910.js +3 -2
  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 +3 -2
  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 +4 -3
  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-5e09930da5f637df.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-c311c2074730a9d4.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/{3s5SDPHTqXdRuXH0NTawz → qGXBolOylWgE1zjkbpj9E}/_buildManifest.js +0 -0
  670. /package/app/.next/static/{3s5SDPHTqXdRuXH0NTawz → qGXBolOylWgE1zjkbpj9E}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[208],{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)},77103:(a,e,l)=>{Promise.resolve().then(l.bind(l,14816))}},a=>{a.O(0,[8500,3418,9751,8055,1149,5846,647,4816,8441,3794,7358],()=>a(a.s=77103)),_N_E=a.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6560],{14701:(e,t,a)=>{Promise.resolve().then(a.bind(a,38932))},38932:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});var s=a(95155),l=a(12115),r=a(40993),n=a(50910),d=a(52529);function i(){let[e,t]=(0,l.useState)([]),[a,i]=(0,l.useState)(null),[c,o]=(0,l.useState)(!0),[m,x]=(0,l.useState)(!1),[p,u]=(0,l.useState)(!1),[h,b]=(0,l.useState)(!1),[g,f]=(0,l.useState)({}),[j,v]=(0,l.useState)(!1),[y,N]=(0,l.useState)(!1),[k,w]=(0,l.useState)({name:"",binary:"",versionCommand:"",spawnArgs:""}),C=(0,n.c)("agents"),O=(0,n.c)("settings"),S=(0,l.useCallback)(async()=>{try{let e=await fetch("/api/acp/agents"),a=await e.json();t(a.agents||[]),i(a.summary||null)}catch(e){console.error("Failed to fetch agents:",e)}finally{o(!1)}},[]);(0,l.useEffect)(()=>{S(),fetch("/api/settings").then(e=>e.json()).then(e=>f(e)).catch(()=>{})},[S]);let _=async(e,t)=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({[e]:t})})).ok&&f(a=>({...a,[e]:t}))}catch(e){console.error("Failed to update setting:",e)}},F=async()=>{x(!0);try{let e=await fetch("/api/acp/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"refresh"})}),a=await e.json();t(a.agents||[]),await S()}catch(e){console.error("Failed to refresh:",e)}finally{x(!1)}},A=async e=>{e.preventDefault(),b(!0);try{let e=k.name.toLowerCase().replace(/[^a-z0-9]/g,"-");(await fetch("/api/acp/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,name:k.name,binary:k.binary,versionCommand:k.versionCommand||`${k.binary} --version`,spawnArgs:k.spawnArgs?k.spawnArgs.split(",").map(e=>e.trim()):[],protocol:"stdio"})})).ok&&(w({name:"",binary:"",versionCommand:"",spawnArgs:""}),u(!1),await S())}catch(e){console.error("Failed to add agent:",e)}finally{b(!1)}},E=async e=>{try{(await fetch(`/api/acp/agents?id=${e}`,{method:"DELETE"})).ok&&await S()}catch(e){console.error("Failed to remove agent:",e)}};return c?(0,s.jsx)("div",{className:"flex items-center justify-center min-h-[400px]",children:(0,s.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-primary border-t-transparent"})}):(0,s.jsxs)("div",{className:"flex flex-col gap-6 p-6 max-w-5xl mx-auto",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-2xl font-bold",children:C("title")}),(0,s.jsx)("p",{className:"text-text-muted mt-1",children:C("description")})]}),(0,s.jsxs)(r.$n,{variant:"secondary",onClick:F,loading:m,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1",children:"refresh"}),C("refresh")]})]}),a&&(0,s.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[(0,s.jsxs)("div",{className:"rounded-xl border border-border/50 bg-card p-4 text-center",children:[(0,s.jsx)("div",{className:"text-2xl font-bold text-primary",children:a.installed}),(0,s.jsx)("div",{className:"text-xs text-text-muted mt-1",children:C("installed")})]}),(0,s.jsxs)("div",{className:"rounded-xl border border-border/50 bg-card p-4 text-center",children:[(0,s.jsx)("div",{className:"text-2xl font-bold text-text-muted",children:a.notFound}),(0,s.jsx)("div",{className:"text-xs text-text-muted mt-1",children:C("notFound")})]}),(0,s.jsxs)("div",{className:"rounded-xl border border-border/50 bg-card p-4 text-center",children:[(0,s.jsx)("div",{className:"text-2xl font-bold",children:a.builtIn}),(0,s.jsx)("div",{className:"text-xs text-text-muted mt-1",children:C("builtIn")})]}),(0,s.jsxs)("div",{className:"rounded-xl border border-border/50 bg-card p-4 text-center",children:[(0,s.jsx)("div",{className:"text-2xl font-bold text-amber-500",children:a.custom}),(0,s.jsx)("div",{className:"text-xs text-text-muted mt-1",children:C("custom")})]})]}),(0,s.jsxs)(r.Zp,{children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,s.jsx)("div",{className:"p-2 rounded-lg bg-emerald-500/10 text-emerald-600 dark:text-emerald-400",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:"fingerprint"})}),(0,s.jsx)("h3",{className:"text-lg font-semibold",children:O("cliFingerprint")})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)("p",{className:"text-sm text-text-muted",children:O("cliFingerprintDesc")}),(0,s.jsx)("div",{className:"flex flex-wrap gap-2",children:["codex","claude","github","antigravity","kiro","cursor","kimi-coding","kilocode","cline","qwen"].map(e=>{let t=Object.values(d.Q2).find(t=>t.id===e),a=(g.cliCompatProviders||[]).includes(e),l=t?.name||e,r=t?.icon||"terminal",n=t?.color||"#888";return(0,s.jsxs)("button",{onClick:()=>{let t=g.cliCompatProviders||[];_("cliCompatProviders",t.includes(e)?t.filter(t=>t!==e):[...t,e])},className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg text-xs font-medium transition-all border ${a?"bg-emerald-500/10 border-emerald-500/30 text-emerald-600 dark:text-emerald-400":"bg-black/[0.02] dark:bg-white/[0.02] border-transparent text-text-muted hover:bg-black/[0.05] dark:hover:bg-white/[0.05]"}`,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",style:{color:a?void 0:n},children:a?"fingerprint":r}),l,a&&(0,s.jsx)("span",{className:"material-symbols-outlined text-[12px] text-emerald-500",children:"check"})]},e)})}),(g.cliCompatProviders||[]).length>0&&(0,s.jsxs)("p",{className:"text-xs text-emerald-600 dark:text-emerald-400 mt-1 flex items-center gap-1",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"verified"}),O("cliFingerprintEnabled",{count:(g.cliCompatProviders||[]).length})]})]})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:e.map(e=>(0,s.jsxs)(r.Zp,{children:[(0,s.jsxs)("div",{className:"flex items-start justify-between",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:`p-2 rounded-lg ${e.installed?"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400":"bg-zinc-500/10 text-zinc-400"}`,children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:e.installed?"smart_toy":"block"})}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"font-semibold text-sm flex items-center gap-1.5",children:[e.name,e.isCustom&&(0,s.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-amber-500/10 text-amber-600 dark:text-amber-400 font-medium",children:C("custom")})]}),(0,s.jsx)("code",{className:"text-xs text-text-muted",children:e.binary})]})]}),(0,s.jsx)("div",{className:"flex items-center gap-1",children:e.installed?(0,s.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 font-medium",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"check_circle"}),e.version||C("installed")]}):(0,s.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-full bg-zinc-500/10 text-zinc-500 font-medium",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"cancel"}),C("notFound")]})})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between mt-3 pt-3 border-t border-border/30",children:[(0,s.jsx)("span",{className:"inline-flex items-center gap-1 text-[10px] px-2 py-0.5 rounded-full bg-blue-500/10 text-blue-500 font-mono",children:e.protocol}),e.isCustom&&(0,s.jsxs)("button",{onClick:()=>E(e.id),className:"text-xs text-red-500 hover:text-red-400 transition-colors flex items-center gap-0.5",title:C("remove"),children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"delete"}),C("remove")]})]})]},e.id))}),e.find(e=>"opencode"===e.id&&e.installed)&&(0,s.jsx)(r.Zp,{children:(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)("div",{className:"p-2 rounded-lg bg-violet-500/10 text-violet-500 shrink-0",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"code_blocks"})}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,s.jsx)("h3",{className:"text-base font-semibold",children:"OpenCode Integration"}),(0,s.jsxs)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 font-medium",children:["opencode ",e.find(e=>"opencode"===e.id)?.version," detected"]})]}),(0,s.jsxs)("p",{className:"text-sm text-text-muted mb-3",children:["Generate a ready-to-use"," ",(0,s.jsx)("code",{className:"text-xs bg-black/[0.06] dark:bg-white/[0.08] px-1 py-0.5 rounded",children:"opencode.json"})," ","with your OmniRoute base URL and all available models — drop it in your project root and run"," ",(0,s.jsx)("code",{className:"text-xs bg-black/[0.06] dark:bg-white/[0.08] px-1 py-0.5 rounded",children:"opencode"}),"."]}),(0,s.jsxs)(r.$n,{variant:"secondary",loading:j,onClick:async()=>{v(!0),N(!1);try{let e=await fetch("/v1/models"),t=e.ok?await e.json():{data:[]},a={};for(let e of t.data||[])a[e.id]={name:e.id};let s=window.location.origin+"/v1",l={$schema:"https://opencode.ai/config.json",provider:{omniroute:{npm:"@ai-sdk/openai-compatible",name:"OmniRoute",options:{baseURL:s,apiKey:"YOUR_OMNIROUTE_API_KEY"},models:Object.keys(a).length>0?a:{"gpt-4o":{name:"gpt-4o"}}}}},r=new Blob([JSON.stringify(l,null,2)],{type:"application/json"}),n=URL.createObjectURL(r),d=document.createElement("a");d.href=n,d.download="opencode.json",d.click(),URL.revokeObjectURL(n),N(!0),setTimeout(()=>N(!1),3e3)}catch(e){console.error("Failed to generate opencode.json:",e)}finally{v(!1)}},children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1",children:y?"check":"download"}),y?"Downloaded!":"Download opencode.json"]})]})]})}),(0,s.jsxs)(r.Zp,{children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:"p-2 rounded-lg bg-amber-500/10 text-amber-600 dark:text-amber-400",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"add_circle"})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h3",{className:"text-lg font-semibold",children:C("addCustomAgent")}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:C("addCustomAgentDesc")})]})]}),(0,s.jsx)(r.$n,{variant:"secondary",onClick:()=>u(!p),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:p?"expand_less":"expand_more"})})]}),p&&(0,s.jsxs)("form",{onSubmit:A,className:"flex flex-col gap-4 pt-4 border-t border-border/50",children:[(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,s.jsx)(r.pd,{label:C("agentName"),placeholder:"e.g. My Custom CLI",value:k.name,onChange:e=>w({...k,name:e.target.value}),required:!0}),(0,s.jsx)(r.pd,{label:C("binaryName"),placeholder:"e.g. mycli",value:k.binary,onChange:e=>w({...k,binary:e.target.value}),required:!0})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,s.jsx)(r.pd,{label:C("versionCommand"),placeholder:"e.g. mycli --version",value:k.versionCommand,onChange:e=>w({...k,versionCommand:e.target.value})}),(0,s.jsx)(r.pd,{label:C("spawnArgs"),placeholder:"e.g. --quiet, --json",value:k.spawnArgs,onChange:e=>w({...k,spawnArgs:e.target.value})})]}),(0,s.jsx)("div",{className:"flex justify-end",children:(0,s.jsxs)(r.$n,{type:"submit",variant:"primary",loading:h,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1",children:"add"}),C("addAgent")]})})]})]})]})}},40993:(e,t,a)=>{"use strict";a.d(t,{Ex:()=>c.default,$n:()=>s.default,Zp:()=>n.default,Qv:()=>i.CardSkeleton,G9:()=>j.default,bQ:()=>k.default,pp:()=>y.default,Qn:()=>N.default,pd:()=>l.default,Mh:()=>f.default,uR:()=>p.default,aF:()=>d.default,rq:()=>x.default,LF:()=>m.default,KN:()=>b.default,Lo:()=>g.default,y7:()=>h.default,Iz:()=>v.default,l6:()=>r.default,lM:()=>o.default,cn:()=>u.default});var s=a(35806),l=a(34422),r=a(42994),n=a(81060),d=a(71361),i=a(92542);a(17705);var c=a(80927),o=a(19790);a(6261),a(55846),a(34243),a(89938),a(99023);var m=a(80178),x=a(85444),p=a(91961);a(25112);var u=a(45624),h=a(37415),b=a(48643),g=a(8287);a(1652);var f=a(92701);a(18150);var j=a(71689),v=a(33709);a(76332);var y=a(66200);a(61580);var N=a(51503);a(54128);var k=a(44638);a(21720),a(97050)}},e=>{e.O(0,[8500,3418,9751,8055,1149,5846,647,8441,3794,7358],()=>e(e.s=14701)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6560],{37617:(e,t,a)=>{Promise.resolve().then(a.bind(a,38932))},38932:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>i});var s=a(95155),l=a(12115),r=a(40993),n=a(50910),d=a(52529);function i(){let[e,t]=(0,l.useState)([]),[a,i]=(0,l.useState)(null),[c,o]=(0,l.useState)(!0),[m,x]=(0,l.useState)(!1),[p,u]=(0,l.useState)(!1),[h,b]=(0,l.useState)(!1),[g,f]=(0,l.useState)({}),[j,v]=(0,l.useState)(!1),[y,N]=(0,l.useState)(!1),[k,w]=(0,l.useState)({name:"",binary:"",versionCommand:"",spawnArgs:""}),C=(0,n.c)("agents"),O=(0,n.c)("settings"),S=(0,l.useCallback)(async()=>{try{let e=await fetch("/api/acp/agents"),a=await e.json();t(a.agents||[]),i(a.summary||null)}catch(e){console.error("Failed to fetch agents:",e)}finally{o(!1)}},[]);(0,l.useEffect)(()=>{S(),fetch("/api/settings").then(e=>e.json()).then(e=>f(e)).catch(()=>{})},[S]);let _=async(e,t)=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({[e]:t})})).ok&&f(a=>({...a,[e]:t}))}catch(e){console.error("Failed to update setting:",e)}},F=async()=>{x(!0);try{let e=await fetch("/api/acp/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"refresh"})}),a=await e.json();t(a.agents||[]),await S()}catch(e){console.error("Failed to refresh:",e)}finally{x(!1)}},A=async e=>{e.preventDefault(),b(!0);try{let e=k.name.toLowerCase().replace(/[^a-z0-9]/g,"-");(await fetch("/api/acp/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,name:k.name,binary:k.binary,versionCommand:k.versionCommand||`${k.binary} --version`,spawnArgs:k.spawnArgs?k.spawnArgs.split(",").map(e=>e.trim()):[],protocol:"stdio"})})).ok&&(w({name:"",binary:"",versionCommand:"",spawnArgs:""}),u(!1),await S())}catch(e){console.error("Failed to add agent:",e)}finally{b(!1)}},E=async e=>{try{(await fetch(`/api/acp/agents?id=${e}`,{method:"DELETE"})).ok&&await S()}catch(e){console.error("Failed to remove agent:",e)}};return c?(0,s.jsx)("div",{className:"flex items-center justify-center min-h-[400px]",children:(0,s.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-primary border-t-transparent"})}):(0,s.jsxs)("div",{className:"flex flex-col gap-6 p-6 max-w-5xl mx-auto",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-2xl font-bold",children:C("title")}),(0,s.jsx)("p",{className:"text-text-muted mt-1",children:C("description")})]}),(0,s.jsxs)(r.$n,{variant:"secondary",onClick:F,loading:m,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1",children:"refresh"}),C("refresh")]})]}),a&&(0,s.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[(0,s.jsxs)("div",{className:"rounded-xl border border-border/50 bg-card p-4 text-center",children:[(0,s.jsx)("div",{className:"text-2xl font-bold text-primary",children:a.installed}),(0,s.jsx)("div",{className:"text-xs text-text-muted mt-1",children:C("installed")})]}),(0,s.jsxs)("div",{className:"rounded-xl border border-border/50 bg-card p-4 text-center",children:[(0,s.jsx)("div",{className:"text-2xl font-bold text-text-muted",children:a.notFound}),(0,s.jsx)("div",{className:"text-xs text-text-muted mt-1",children:C("notFound")})]}),(0,s.jsxs)("div",{className:"rounded-xl border border-border/50 bg-card p-4 text-center",children:[(0,s.jsx)("div",{className:"text-2xl font-bold",children:a.builtIn}),(0,s.jsx)("div",{className:"text-xs text-text-muted mt-1",children:C("builtIn")})]}),(0,s.jsxs)("div",{className:"rounded-xl border border-border/50 bg-card p-4 text-center",children:[(0,s.jsx)("div",{className:"text-2xl font-bold text-amber-500",children:a.custom}),(0,s.jsx)("div",{className:"text-xs text-text-muted mt-1",children:C("custom")})]})]}),(0,s.jsxs)(r.Zp,{children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,s.jsx)("div",{className:"p-2 rounded-lg bg-emerald-500/10 text-emerald-600 dark:text-emerald-400",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:"fingerprint"})}),(0,s.jsx)("h3",{className:"text-lg font-semibold",children:O("cliFingerprint")})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)("p",{className:"text-sm text-text-muted",children:O("cliFingerprintDesc")}),(0,s.jsx)("div",{className:"flex flex-wrap gap-2",children:["codex","claude","github","antigravity","kiro","cursor","kimi-coding","kilocode","cline","qwen"].map(e=>{let t=Object.values(d.Q2).find(t=>t.id===e),a=(g.cliCompatProviders||[]).includes(e),l=t?.name||e,r=t?.icon||"terminal",n=t?.color||"#888";return(0,s.jsxs)("button",{onClick:()=>{let t=g.cliCompatProviders||[];_("cliCompatProviders",t.includes(e)?t.filter(t=>t!==e):[...t,e])},className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg text-xs font-medium transition-all border ${a?"bg-emerald-500/10 border-emerald-500/30 text-emerald-600 dark:text-emerald-400":"bg-black/[0.02] dark:bg-white/[0.02] border-transparent text-text-muted hover:bg-black/[0.05] dark:hover:bg-white/[0.05]"}`,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",style:{color:a?void 0:n},children:a?"fingerprint":r}),l,a&&(0,s.jsx)("span",{className:"material-symbols-outlined text-[12px] text-emerald-500",children:"check"})]},e)})}),(g.cliCompatProviders||[]).length>0&&(0,s.jsxs)("p",{className:"text-xs text-emerald-600 dark:text-emerald-400 mt-1 flex items-center gap-1",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"verified"}),O("cliFingerprintEnabled",{count:(g.cliCompatProviders||[]).length})]})]})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:e.map(e=>(0,s.jsxs)(r.Zp,{children:[(0,s.jsxs)("div",{className:"flex items-start justify-between",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:`p-2 rounded-lg ${e.installed?"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400":"bg-zinc-500/10 text-zinc-400"}`,children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:e.installed?"smart_toy":"block"})}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"font-semibold text-sm flex items-center gap-1.5",children:[e.name,e.isCustom&&(0,s.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-amber-500/10 text-amber-600 dark:text-amber-400 font-medium",children:C("custom")})]}),(0,s.jsx)("code",{className:"text-xs text-text-muted",children:e.binary})]})]}),(0,s.jsx)("div",{className:"flex items-center gap-1",children:e.installed?(0,s.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 font-medium",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"check_circle"}),e.version||C("installed")]}):(0,s.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-full bg-zinc-500/10 text-zinc-500 font-medium",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"cancel"}),C("notFound")]})})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between mt-3 pt-3 border-t border-border/30",children:[(0,s.jsx)("span",{className:"inline-flex items-center gap-1 text-[10px] px-2 py-0.5 rounded-full bg-blue-500/10 text-blue-500 font-mono",children:e.protocol}),e.isCustom&&(0,s.jsxs)("button",{onClick:()=>E(e.id),className:"text-xs text-red-500 hover:text-red-400 transition-colors flex items-center gap-0.5",title:C("remove"),children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"delete"}),C("remove")]})]})]},e.id))}),e.find(e=>"opencode"===e.id&&e.installed)&&(0,s.jsx)(r.Zp,{children:(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)("div",{className:"p-2 rounded-lg bg-violet-500/10 text-violet-500 shrink-0",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"code_blocks"})}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,s.jsx)("h3",{className:"text-base font-semibold",children:"OpenCode Integration"}),(0,s.jsxs)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 font-medium",children:["opencode ",e.find(e=>"opencode"===e.id)?.version," detected"]})]}),(0,s.jsxs)("p",{className:"text-sm text-text-muted mb-3",children:["Generate a ready-to-use"," ",(0,s.jsx)("code",{className:"text-xs bg-black/[0.06] dark:bg-white/[0.08] px-1 py-0.5 rounded",children:"opencode.json"})," ","with your OmniRoute base URL and all available models — drop it in your project root and run"," ",(0,s.jsx)("code",{className:"text-xs bg-black/[0.06] dark:bg-white/[0.08] px-1 py-0.5 rounded",children:"opencode"}),"."]}),(0,s.jsxs)(r.$n,{variant:"secondary",loading:j,onClick:async()=>{v(!0),N(!1);try{let e=await fetch("/v1/models"),t=e.ok?await e.json():{data:[]},a={};for(let e of t.data||[])a[e.id]={name:e.id};let s=window.location.origin+"/v1",l={$schema:"https://opencode.ai/config.json",provider:{omniroute:{npm:"@ai-sdk/openai-compatible",name:"OmniRoute",options:{baseURL:s,apiKey:"YOUR_OMNIROUTE_API_KEY"},models:Object.keys(a).length>0?a:{"gpt-4o":{name:"gpt-4o"}}}}},r=new Blob([JSON.stringify(l,null,2)],{type:"application/json"}),n=URL.createObjectURL(r),d=document.createElement("a");d.href=n,d.download="opencode.json",d.click(),URL.revokeObjectURL(n),N(!0),setTimeout(()=>N(!1),3e3)}catch(e){console.error("Failed to generate opencode.json:",e)}finally{v(!1)}},children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1",children:y?"check":"download"}),y?"Downloaded!":"Download opencode.json"]})]})]})}),(0,s.jsxs)(r.Zp,{children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:"p-2 rounded-lg bg-amber-500/10 text-amber-600 dark:text-amber-400",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"add_circle"})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h3",{className:"text-lg font-semibold",children:C("addCustomAgent")}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:C("addCustomAgentDesc")})]})]}),(0,s.jsx)(r.$n,{variant:"secondary",onClick:()=>u(!p),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:p?"expand_less":"expand_more"})})]}),p&&(0,s.jsxs)("form",{onSubmit:A,className:"flex flex-col gap-4 pt-4 border-t border-border/50",children:[(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,s.jsx)(r.pd,{label:C("agentName"),placeholder:"e.g. My Custom CLI",value:k.name,onChange:e=>w({...k,name:e.target.value}),required:!0}),(0,s.jsx)(r.pd,{label:C("binaryName"),placeholder:"e.g. mycli",value:k.binary,onChange:e=>w({...k,binary:e.target.value}),required:!0})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,s.jsx)(r.pd,{label:C("versionCommand"),placeholder:"e.g. mycli --version",value:k.versionCommand,onChange:e=>w({...k,versionCommand:e.target.value})}),(0,s.jsx)(r.pd,{label:C("spawnArgs"),placeholder:"e.g. --quiet, --json",value:k.spawnArgs,onChange:e=>w({...k,spawnArgs:e.target.value})})]}),(0,s.jsx)("div",{className:"flex justify-end",children:(0,s.jsxs)(r.$n,{type:"submit",variant:"primary",loading:h,children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1",children:"add"}),C("addAgent")]})})]})]})]})}},40993:(e,t,a)=>{"use strict";a.d(t,{Ex:()=>c.default,$n:()=>s.default,Zp:()=>n.default,Qv:()=>i.CardSkeleton,G9:()=>j.default,bQ:()=>k.default,pp:()=>y.default,Qn:()=>N.default,pd:()=>l.default,Mh:()=>f.default,uR:()=>p.default,aF:()=>d.default,rq:()=>x.default,LF:()=>m.default,KN:()=>b.default,Lo:()=>g.default,y7:()=>h.default,Iz:()=>v.default,l6:()=>r.default,lM:()=>o.default,cn:()=>u.default});var s=a(35806),l=a(34422),r=a(42994),n=a(81060),d=a(71361),i=a(92542);a(17705);var c=a(80927),o=a(19790);a(6261),a(55846),a(34243),a(89938),a(99023);var m=a(80178),x=a(85444),p=a(91961);a(25112);var u=a(45624),h=a(37415),b=a(48643),g=a(8287);a(1652);var f=a(92701);a(18150);var j=a(71689),v=a(33709);a(76332);var y=a(66200);a(61580);var N=a(51503);a(54128);var k=a(44638);a(21720),a(97050)}},e=>{e.O(0,[8500,3418,9751,8055,1149,5846,647,8441,3794,7358],()=>e(e.s=37617)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[597],{1138:(e,s,a)=>{Promise.resolve().then(a.bind(a,4053))},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"})]})}},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=1138)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8978],{40993:(e,t,s)=>{"use strict";s.d(t,{Ex:()=>c.default,$n:()=>a.default,Zp:()=>n.default,Qv:()=>d.CardSkeleton,G9:()=>j.default,bQ:()=>k.default,pp:()=>y.default,Qn:()=>N.default,pd:()=>l.default,Mh:()=>b.default,uR:()=>u.default,aF:()=>i.default,rq:()=>o.default,LF:()=>m.default,KN:()=>f.default,Lo:()=>g.default,y7:()=>h.default,Iz:()=>v.default,l6:()=>r.default,lM:()=>x.default,cn:()=>p.default});var a=s(35806),l=s(34422),r=s(42994),n=s(81060),i=s(71361),d=s(92542);s(17705);var c=s(80927),x=s(19790);s(6261),s(55846),s(34243),s(89938),s(99023);var m=s(80178),o=s(85444),u=s(91961);s(25112);var p=s(45624),h=s(37415),f=s(48643),g=s(8287);s(1652);var b=s(92701);s(18150);var j=s(71689),v=s(33709);s(76332);var y=s(66200);s(61580);var N=s(51503);s(54128);var k=s(44638);s(21720),s(97050)},53701:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>m});var a=s(95155),l=s(12115),r=s(40993),n=s(50910),i=s(67671);let d=[{name:"contains",labelKey:"evalsStrategyContainsLabel",icon:"search",color:"text-sky-400",bg:"bg-sky-500/10",descriptionKey:"evalsStrategyContainsDescription"},{name:"exact",labelKey:"evalsStrategyExactLabel",icon:"check_circle",color:"text-emerald-400",bg:"bg-emerald-500/10",descriptionKey:"evalsStrategyExactDescription"},{name:"regex",labelKey:"evalsStrategyRegexLabel",icon:"code",color:"text-amber-400",bg:"bg-amber-500/10",descriptionKey:"evalsStrategyRegexDescription"},{name:"custom",labelKey:"evalsStrategyCustomLabel",icon:"tune",color:"text-violet-400",bg:"bg-violet-500/10",descriptionKey:"evalsStrategyCustomDescription"}];function c(){let e=(0,n.c)("usage"),[t,s]=(0,l.useState)([]),[c,m]=(0,l.useState)(null),[o,u]=(0,l.useState)(!0),[p,h]=(0,l.useState)(null),[f,g]=(0,l.useState)({current:0,total:0}),[b,j]=(0,l.useState)({}),[v,y]=(0,l.useState)(""),[N,k]=(0,l.useState)(null),[w,S]=(0,l.useState)(!1),C=(0,i.i)(),R=(0,l.useCallback)(async()=>{try{let e=await fetch("/api/evals");if(e.ok){let t=await e.json();s(Array.isArray(t)?t:t.suites||[])}}catch{}finally{u(!1)}},[]),E=(0,l.useCallback)(async()=>{try{let e=await fetch("/api/keys");if(!e.ok)return;let t=await e.json(),s=t?.keys?.[0]?.key||null;m(s)}catch{}},[]);(0,l.useEffect)(()=>{R(),E()},[R,E]);let $=async e=>{try{let t={"Content-Type":"application/json"};c&&(t.Authorization=`Bearer ${c}`);let s=await fetch("/v1/chat/completions",{method:"POST",headers:t,body:JSON.stringify({model:e.model||"gpt-4o",messages:e.input?.messages||[],max_tokens:512,stream:!1})});if(!s.ok)return`[ERROR: HTTP ${s.status}]`;let a=await s.json();return a.choices?.[0]?.message?.content||"[No content returned]"}catch(e){return`[ERROR: ${e.message}]`}},D=async t=>{let s=t.cases||[];if(0===s.length)return void C.warning(e("notifyNoTestCases"));h(t.id),g({current:0,total:s.length});try{let a={};for(let e=0;e<s.length;e++){g({current:e+1,total:s.length});let t=await $(s[e]);a[s[e].id]=t}let l=await fetch("/api/evals",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({suiteId:t.id,outputs:a})}),r=await l.json();if(j(e=>({...e,[t.id]:r})),r.summary){let{passed:s,failed:a,total:l}=r.summary;0===a?C.success(e("notifyAllCasesPassed",{total:l}),e("notifyEvalTitle",{name:t.name||t.id})):C.warning(e("notifySomeCasesFailed",{passed:s,total:l,failed:a}),e("notifyEvalTitle",{name:t.name||t.id}))}k(t.id)}catch{C.error(e("notifyEvalRunFailed"))}finally{h(null),g({current:0,total:0})}},L=t.filter(e=>!v||e.name?.toLowerCase().includes(v.toLowerCase())||e.id?.toLowerCase().includes(v.toLowerCase())),T=t.reduce((e,t)=>e+(t.cases?.length||t.caseCount||0),0),_=[...new Set(t.flatMap(e=>(e.cases||[]).map(e=>e.model)).filter(Boolean))];if(o)return(0,a.jsxs)("div",{className:"flex items-center gap-2 text-text-muted p-8 animate-pulse",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"science"}),e("evalsLoading")]});if(0===t.length)return(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsx)(x,{t:e}),(0,a.jsx)(r.pp,{icon:"science",title:e("noEvalSuitesFound"),description:e("noEvalSuitesDescription")})]});let K=[{key:"caseName",label:e("columnCase")},{key:"status",label:e("columnStatus")},{key:"durationMs",label:e("columnLatency")},{key:"details",label:e("columnDetails")}];return(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsx)(x,{t:e}),(0,a.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[(0,a.jsxs)(r.Zp,{className:"px-4 py-3 text-center",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsSuites")}),(0,a.jsx)("div",{className:"text-2xl font-bold mt-1 text-violet-400",children:t.length})]}),(0,a.jsxs)(r.Zp,{className:"px-4 py-3 text-center",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsTestCases")}),(0,a.jsx)("div",{className:"text-2xl font-bold mt-1 text-sky-400",children:T})]}),(0,a.jsxs)(r.Zp,{className:"px-4 py-3 text-center",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsModels")}),(0,a.jsx)("div",{className:"text-2xl font-bold mt-1 text-emerald-400",children:_.length})]}),(0,a.jsxs)(r.Zp,{className:"px-4 py-3 text-center",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsCoverage")}),(0,a.jsx)("div",{className:"text-2xl font-bold mt-1 text-amber-400",children:e("statsStrategiesCount",{count:d.length})})]})]}),(0,a.jsxs)(r.Zp,{className:"p-0 overflow-hidden",children:[(0,a.jsxs)("button",{onClick:()=>S(!w),className:"w-full flex items-center justify-between px-6 py-4 hover:bg-surface/30 transition-colors text-left",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-primary/10 text-primary",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"help"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:e("howItWorks")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("howItWorksSubtitle")})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted transition-transform duration-200 ${w?"rotate-180":""}`,children:"expand_more"})]}),w&&(0,a.jsxs)("div",{className:"px-6 pb-6 border-t border-border/10",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[(0,a.jsxs)("div",{className:"flex flex-col items-center text-center p-4 rounded-lg bg-violet-500/5 border border-violet-500/10",children:[(0,a.jsx)("div",{className:"w-10 h-10 rounded-full bg-violet-500/20 flex items-center justify-center mb-3",children:(0,a.jsx)("span",{className:"text-lg font-bold text-violet-400",children:"1"})}),(0,a.jsx)("h4",{className:"text-sm font-semibold text-text-main mb-1",children:e("define")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("defineStepDescription")})]}),(0,a.jsxs)("div",{className:"flex flex-col items-center text-center p-4 rounded-lg bg-sky-500/5 border border-sky-500/10",children:[(0,a.jsx)("div",{className:"w-10 h-10 rounded-full bg-sky-500/20 flex items-center justify-center mb-3",children:(0,a.jsx)("span",{className:"text-lg font-bold text-sky-400",children:"2"})}),(0,a.jsx)("h4",{className:"text-sm font-semibold text-text-main mb-1",children:e("run")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("runStepDescription")})]}),(0,a.jsxs)("div",{className:"flex flex-col items-center text-center p-4 rounded-lg bg-emerald-500/5 border border-emerald-500/10",children:[(0,a.jsx)("div",{className:"w-10 h-10 rounded-full bg-emerald-500/20 flex items-center justify-center mb-3",children:(0,a.jsx)("span",{className:"text-lg font-bold text-emerald-400",children:"3"})}),(0,a.jsx)("h4",{className:"text-sm font-semibold text-text-main mb-1",children:e("evaluate")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("evaluateStepDescription")})]})]}),(0,a.jsxs)("div",{className:"mt-6",children:[(0,a.jsx)("h4",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide mb-3",children:e("evaluationStrategies")}),(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2",children:d.map(t=>(0,a.jsxs)("div",{className:`flex items-center gap-3 p-3 rounded-lg ${t.bg} border border-transparent`,children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] ${t.color}`,children:t.icon}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:`text-xs font-mono font-semibold ${t.color}`,children:e(t.labelKey)}),(0,a.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:e(t.descriptionKey)})]})]},t.name))})]}),_.length>0&&(0,a.jsxs)("div",{className:"mt-6",children:[(0,a.jsx)("h4",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide mb-3",children:e("modelsUnderTest")}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:_.map(e=>(0,a.jsx)("span",{className:"px-3 py-1.5 rounded-full text-xs font-mono font-medium bg-primary/10 text-primary border border-primary/20",children:e},e))})]})]})]}),(0,a.jsxs)(r.Zp,{className:"p-6",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-violet-500/10 text-violet-500",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"science"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-lg font-semibold",children:e("evalSuites")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("evalSuitesHint")})]})]}),(0,a.jsx)(r.Qn,{searchValue:v,onSearchChange:y,placeholder:e("searchSuitesPlaceholder"),filters:[],activeFilters:{},onFilterChange:()=>{},children:null}),(0,a.jsx)("div",{className:"flex flex-col gap-3 mt-4",children:L.map(t=>{let s=b[t.id],l=p===t.id,n=N===t.id,i=t.cases?.length||t.caseCount||0,c=[...new Set((t.cases||[]).map(e=>e.model).filter(Boolean))];return(0,a.jsxs)("div",{className:"border border-border/30 rounded-lg overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 cursor-pointer hover:bg-surface/30 transition-colors",onClick:()=>k(n?null:t.id),children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:n?"expand_more":"chevron_right"}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-text-main",children:t.name||t.id}),s?.summary&&(0,a.jsxs)("span",{className:`px-2 py-0.5 rounded-full text-xs font-semibold ${100===s.summary.passRate?"bg-emerald-500/10 text-emerald-400":s.summary.passRate>=80?"bg-amber-500/10 text-amber-400":"bg-red-500/10 text-red-400"}`,children:[s.summary.passRate,"% ",e("passSuffix")]})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:[e("casesCount",{count:i}),t.description&&(0,a.jsxs)("span",{className:"ml-1",children:["— ",t.description]})]}),c.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap gap-1 mt-1",children:c.map(e=>(0,a.jsx)("span",{className:"px-1.5 py-0.5 rounded text-[10px] font-mono text-text-muted bg-black/5 dark:bg-white/5",children:e},e))})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[l&&f.total>0&&(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("div",{className:"w-24 h-1.5 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden",children:(0,a.jsx)("div",{className:"h-full bg-violet-500 rounded-full transition-all duration-300",style:{width:`${f.current/f.total*100}%`}})}),(0,a.jsxs)("span",{className:"text-xs text-text-muted font-mono tabular-nums",children:[f.current,"/",f.total]})]}),(0,a.jsx)(r.$n,{size:"sm",variant:"primary",onClick:e=>{e.stopPropagation(),D(t)},loading:l,disabled:l,children:l?e("runningProgress",{current:f.current,total:f.total}):e("runEval")})]})]}),n&&(0,a.jsx)("div",{className:"border-t border-border/20 p-4",children:s?.results?(0,a.jsxs)(a.Fragment,{children:[s.summary&&(0,a.jsxs)("div",{className:"flex items-center gap-4 mb-4 p-3 rounded-lg bg-surface/30 border border-border/20",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("span",{className:`text-lg font-bold ${100===s.summary.passRate?"text-emerald-400":s.summary.passRate>=80?"text-amber-400":"text-red-400"}`,children:[s.summary.passRate,"%"]}),(0,a.jsx)("span",{className:"text-xs text-text-muted",children:e("passRate")})]}),(0,a.jsx)("div",{className:"text-xs text-text-muted",children:e("summaryBreakdown",{passed:s.summary.passed,failed:s.summary.failed,total:s.summary.total})}),(0,a.jsx)("div",{className:"flex-1 h-2 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden",children:(0,a.jsx)("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${s.summary.passRate}%`,background:100===s.summary.passRate?"linear-gradient(90deg, #22c55e, #16a34a)":s.summary.passRate>=80?"linear-gradient(90deg, #f59e0b, #d97706)":"linear-gradient(90deg, #ef4444, #dc2626)"}})})]}),(0,a.jsx)(r.bQ,{columns:K,data:s.results.map((e,t)=>({...e,id:e.caseId||t})),renderCell:(t,s)=>{if("status"===s.key)return t.passed?(0,a.jsx)("span",{className:"text-emerald-400",children:e("passedIconLabel")}):(0,a.jsx)("span",{className:"text-red-400",children:e("failedIconLabel")});if("durationMs"===s.key)return(0,a.jsx)("span",{className:"text-text-muted text-xs font-mono",children:null!=t.durationMs?`${t.durationMs}ms`:"—"});if("details"===s.key){let s=t.details||{};return(0,a.jsx)("span",{className:"text-text-muted text-xs truncate max-w-[300px] block",children:String(s.searchTerm?e("detailsContains",{term:s.searchTerm}):s.pattern?e("detailsRegex",{pattern:s.pattern}):s.expected?e("detailsExpected",{expected:String(s.expected).slice(0,50)}):t.error||"—")})}return(0,a.jsx)("span",{className:"text-sm text-text-main",children:t[s.key]||"—"})},maxHeight:"400px",emptyMessage:e("noResultsYet")})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:"checklist"}),(0,a.jsx)("span",{className:"text-xs text-text-muted font-medium",children:e("testCasesCount",{count:(t.cases||[]).length})})]}),(0,a.jsx)(r.bQ,{columns:[{key:"name",label:e("columnCase")},{key:"model",label:e("columnModel")},{key:"strategy",label:e("columnStrategy")},{key:"expected",label:e("columnExpected")}],data:(t.cases||[]).map((e,t)=>({id:e.id||t,name:e.name,model:e.model||"—",strategy:e.expected?.strategy||"—",expected:e.expected?.value?String(e.expected.value).slice(0,80):"—"})),renderCell:(e,t)=>{if("strategy"===t.key){let t=d.find(t=>t.name===e.strategy);return(0,a.jsx)("span",{className:`text-xs font-mono font-semibold ${t?.color||"text-text-muted"}`,children:e.strategy})}return"model"===t.key?(0,a.jsx)("span",{className:"text-xs font-mono text-primary/80",children:e.model}):"expected"===t.key?(0,a.jsx)("span",{className:"text-text-muted text-xs font-mono truncate max-w-[300px] block",children:e.expected}):(0,a.jsx)("span",{className:"text-sm text-text-main",children:e[t.key]||"—"})},maxHeight:"400px",emptyMessage:e("noTestCasesDefined")}),(0,a.jsxs)("p",{className:"text-xs text-text-muted mt-3 flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"info"}),e("runEvalHint")]})]})})]},t.id)})})]})]})}function x({t:e}){return(0,a.jsx)(r.Zp,{className:"p-0 overflow-hidden",children:(0,a.jsx)("div",{className:"p-6",style:{background:"linear-gradient(135deg, rgba(139, 92, 246, 0.05) 0%, rgba(59, 130, 246, 0.05) 50%, rgba(16, 185, 129, 0.05) 100%)"},children:(0,a.jsxs)("div",{className:"flex items-start gap-4",children:[(0,a.jsx)("div",{className:"p-3 rounded-xl bg-violet-500/10 text-violet-500",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[28px]",children:"science"})}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h2",{className:"text-xl font-bold text-text-main mb-1",children:e("modelEvals")}),(0,a.jsx)("p",{className:"text-sm text-text-muted leading-relaxed max-w-2xl",children:e("evalsHeroDescription")}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-4 mt-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-emerald-400",children:"verified"}),e("qualityValidation")]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-sky-400",children:"compare"}),e("modelComparison")]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-amber-400",children:"bug_report"}),e("regressionDetection")]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-violet-400",children:"speed"}),e("latencyBenchmarks")]})]})]})]})})})}function m(){let[e,t]=(0,l.useState)("overview"),s=(0,n.c)("analytics"),i={overview:s("overviewDescription"),evals:s("evalsDescription")};return(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary text-[28px]",children:"analytics"}),s("title")]}),(0,a.jsx)("p",{className:"text-sm text-text-muted mt-1",children:i[e]})]}),(0,a.jsx)(r.Iz,{options:[{value:"overview",label:s("overview")},{value:"evals",label:s("evals")}],value:e,onChange:t}),"overview"===e&&(0,a.jsx)(l.Suspense,{fallback:(0,a.jsx)(r.Qv,{}),children:(0,a.jsx)(r.cn,{})}),"evals"===e&&(0,a.jsx)(c,{})]})}},94369:(e,t,s)=>{Promise.resolve().then(s.bind(s,53701))}},e=>{e.O(0,[8500,3418,9751,8055,1149,5846,647,8441,3794,7358],()=>e(e.s=94369)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8978],{40993:(e,t,s)=>{"use strict";s.d(t,{Ex:()=>c.default,$n:()=>a.default,Zp:()=>n.default,Qv:()=>d.CardSkeleton,G9:()=>j.default,bQ:()=>k.default,pp:()=>y.default,Qn:()=>N.default,pd:()=>l.default,Mh:()=>b.default,uR:()=>u.default,aF:()=>i.default,rq:()=>o.default,LF:()=>m.default,KN:()=>f.default,Lo:()=>g.default,y7:()=>h.default,Iz:()=>v.default,l6:()=>r.default,lM:()=>x.default,cn:()=>p.default});var a=s(35806),l=s(34422),r=s(42994),n=s(81060),i=s(71361),d=s(92542);s(17705);var c=s(80927),x=s(19790);s(6261),s(55846),s(34243),s(89938),s(99023);var m=s(80178),o=s(85444),u=s(91961);s(25112);var p=s(45624),h=s(37415),f=s(48643),g=s(8287);s(1652);var b=s(92701);s(18150);var j=s(71689),v=s(33709);s(76332);var y=s(66200);s(61580);var N=s(51503);s(54128);var k=s(44638);s(21720),s(97050)},53701:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>m});var a=s(95155),l=s(12115),r=s(40993),n=s(50910),i=s(67671);let d=[{name:"contains",labelKey:"evalsStrategyContainsLabel",icon:"search",color:"text-sky-400",bg:"bg-sky-500/10",descriptionKey:"evalsStrategyContainsDescription"},{name:"exact",labelKey:"evalsStrategyExactLabel",icon:"check_circle",color:"text-emerald-400",bg:"bg-emerald-500/10",descriptionKey:"evalsStrategyExactDescription"},{name:"regex",labelKey:"evalsStrategyRegexLabel",icon:"code",color:"text-amber-400",bg:"bg-amber-500/10",descriptionKey:"evalsStrategyRegexDescription"},{name:"custom",labelKey:"evalsStrategyCustomLabel",icon:"tune",color:"text-violet-400",bg:"bg-violet-500/10",descriptionKey:"evalsStrategyCustomDescription"}];function c(){let e=(0,n.c)("usage"),[t,s]=(0,l.useState)([]),[c,m]=(0,l.useState)(null),[o,u]=(0,l.useState)(!0),[p,h]=(0,l.useState)(null),[f,g]=(0,l.useState)({current:0,total:0}),[b,j]=(0,l.useState)({}),[v,y]=(0,l.useState)(""),[N,k]=(0,l.useState)(null),[w,S]=(0,l.useState)(!1),C=(0,i.i)(),R=(0,l.useCallback)(async()=>{try{let e=await fetch("/api/evals");if(e.ok){let t=await e.json();s(Array.isArray(t)?t:t.suites||[])}}catch{}finally{u(!1)}},[]),E=(0,l.useCallback)(async()=>{try{let e=await fetch("/api/keys");if(!e.ok)return;let t=await e.json(),s=t?.keys?.[0]?.key||null;m(s)}catch{}},[]);(0,l.useEffect)(()=>{R(),E()},[R,E]);let $=async e=>{try{let t={"Content-Type":"application/json"};c&&(t.Authorization=`Bearer ${c}`);let s=await fetch("/v1/chat/completions",{method:"POST",headers:t,body:JSON.stringify({model:e.model||"gpt-4o",messages:e.input?.messages||[],max_tokens:512,stream:!1})});if(!s.ok)return`[ERROR: HTTP ${s.status}]`;let a=await s.json();return a.choices?.[0]?.message?.content||"[No content returned]"}catch(e){return`[ERROR: ${e.message}]`}},D=async t=>{let s=t.cases||[];if(0===s.length)return void C.warning(e("notifyNoTestCases"));h(t.id),g({current:0,total:s.length});try{let a={};for(let e=0;e<s.length;e++){g({current:e+1,total:s.length});let t=await $(s[e]);a[s[e].id]=t}let l=await fetch("/api/evals",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({suiteId:t.id,outputs:a})}),r=await l.json();if(j(e=>({...e,[t.id]:r})),r.summary){let{passed:s,failed:a,total:l}=r.summary;0===a?C.success(e("notifyAllCasesPassed",{total:l}),e("notifyEvalTitle",{name:t.name||t.id})):C.warning(e("notifySomeCasesFailed",{passed:s,total:l,failed:a}),e("notifyEvalTitle",{name:t.name||t.id}))}k(t.id)}catch{C.error(e("notifyEvalRunFailed"))}finally{h(null),g({current:0,total:0})}},L=t.filter(e=>!v||e.name?.toLowerCase().includes(v.toLowerCase())||e.id?.toLowerCase().includes(v.toLowerCase())),T=t.reduce((e,t)=>e+(t.cases?.length||t.caseCount||0),0),_=[...new Set(t.flatMap(e=>(e.cases||[]).map(e=>e.model)).filter(Boolean))];if(o)return(0,a.jsxs)("div",{className:"flex items-center gap-2 text-text-muted p-8 animate-pulse",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"science"}),e("evalsLoading")]});if(0===t.length)return(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsx)(x,{t:e}),(0,a.jsx)(r.pp,{icon:"science",title:e("noEvalSuitesFound"),description:e("noEvalSuitesDescription")})]});let K=[{key:"caseName",label:e("columnCase")},{key:"status",label:e("columnStatus")},{key:"durationMs",label:e("columnLatency")},{key:"details",label:e("columnDetails")}];return(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsx)(x,{t:e}),(0,a.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[(0,a.jsxs)(r.Zp,{className:"px-4 py-3 text-center",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsSuites")}),(0,a.jsx)("div",{className:"text-2xl font-bold mt-1 text-violet-400",children:t.length})]}),(0,a.jsxs)(r.Zp,{className:"px-4 py-3 text-center",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsTestCases")}),(0,a.jsx)("div",{className:"text-2xl font-bold mt-1 text-sky-400",children:T})]}),(0,a.jsxs)(r.Zp,{className:"px-4 py-3 text-center",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsModels")}),(0,a.jsx)("div",{className:"text-2xl font-bold mt-1 text-emerald-400",children:_.length})]}),(0,a.jsxs)(r.Zp,{className:"px-4 py-3 text-center",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase font-semibold tracking-wide",children:e("statsCoverage")}),(0,a.jsx)("div",{className:"text-2xl font-bold mt-1 text-amber-400",children:e("statsStrategiesCount",{count:d.length})})]})]}),(0,a.jsxs)(r.Zp,{className:"p-0 overflow-hidden",children:[(0,a.jsxs)("button",{onClick:()=>S(!w),className:"w-full flex items-center justify-between px-6 py-4 hover:bg-surface/30 transition-colors text-left",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-primary/10 text-primary",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"help"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:e("howItWorks")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("howItWorksSubtitle")})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted transition-transform duration-200 ${w?"rotate-180":""}`,children:"expand_more"})]}),w&&(0,a.jsxs)("div",{className:"px-6 pb-6 border-t border-border/10",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[(0,a.jsxs)("div",{className:"flex flex-col items-center text-center p-4 rounded-lg bg-violet-500/5 border border-violet-500/10",children:[(0,a.jsx)("div",{className:"w-10 h-10 rounded-full bg-violet-500/20 flex items-center justify-center mb-3",children:(0,a.jsx)("span",{className:"text-lg font-bold text-violet-400",children:"1"})}),(0,a.jsx)("h4",{className:"text-sm font-semibold text-text-main mb-1",children:e("define")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("defineStepDescription")})]}),(0,a.jsxs)("div",{className:"flex flex-col items-center text-center p-4 rounded-lg bg-sky-500/5 border border-sky-500/10",children:[(0,a.jsx)("div",{className:"w-10 h-10 rounded-full bg-sky-500/20 flex items-center justify-center mb-3",children:(0,a.jsx)("span",{className:"text-lg font-bold text-sky-400",children:"2"})}),(0,a.jsx)("h4",{className:"text-sm font-semibold text-text-main mb-1",children:e("run")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("runStepDescription")})]}),(0,a.jsxs)("div",{className:"flex flex-col items-center text-center p-4 rounded-lg bg-emerald-500/5 border border-emerald-500/10",children:[(0,a.jsx)("div",{className:"w-10 h-10 rounded-full bg-emerald-500/20 flex items-center justify-center mb-3",children:(0,a.jsx)("span",{className:"text-lg font-bold text-emerald-400",children:"3"})}),(0,a.jsx)("h4",{className:"text-sm font-semibold text-text-main mb-1",children:e("evaluate")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("evaluateStepDescription")})]})]}),(0,a.jsxs)("div",{className:"mt-6",children:[(0,a.jsx)("h4",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide mb-3",children:e("evaluationStrategies")}),(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2",children:d.map(t=>(0,a.jsxs)("div",{className:`flex items-center gap-3 p-3 rounded-lg ${t.bg} border border-transparent`,children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] ${t.color}`,children:t.icon}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:`text-xs font-mono font-semibold ${t.color}`,children:e(t.labelKey)}),(0,a.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:e(t.descriptionKey)})]})]},t.name))})]}),_.length>0&&(0,a.jsxs)("div",{className:"mt-6",children:[(0,a.jsx)("h4",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide mb-3",children:e("modelsUnderTest")}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:_.map(e=>(0,a.jsx)("span",{className:"px-3 py-1.5 rounded-full text-xs font-mono font-medium bg-primary/10 text-primary border border-primary/20",children:e},e))})]})]})]}),(0,a.jsxs)(r.Zp,{className:"p-6",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-violet-500/10 text-violet-500",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"science"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-lg font-semibold",children:e("evalSuites")}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e("evalSuitesHint")})]})]}),(0,a.jsx)(r.Qn,{searchValue:v,onSearchChange:y,placeholder:e("searchSuitesPlaceholder"),filters:[],activeFilters:{},onFilterChange:()=>{},children:null}),(0,a.jsx)("div",{className:"flex flex-col gap-3 mt-4",children:L.map(t=>{let s=b[t.id],l=p===t.id,n=N===t.id,i=t.cases?.length||t.caseCount||0,c=[...new Set((t.cases||[]).map(e=>e.model).filter(Boolean))];return(0,a.jsxs)("div",{className:"border border-border/30 rounded-lg overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 cursor-pointer hover:bg-surface/30 transition-colors",onClick:()=>k(n?null:t.id),children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:n?"expand_more":"chevron_right"}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-text-main",children:t.name||t.id}),s?.summary&&(0,a.jsxs)("span",{className:`px-2 py-0.5 rounded-full text-xs font-semibold ${100===s.summary.passRate?"bg-emerald-500/10 text-emerald-400":s.summary.passRate>=80?"bg-amber-500/10 text-amber-400":"bg-red-500/10 text-red-400"}`,children:[s.summary.passRate,"% ",e("passSuffix")]})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:[e("casesCount",{count:i}),t.description&&(0,a.jsxs)("span",{className:"ml-1",children:["— ",t.description]})]}),c.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap gap-1 mt-1",children:c.map(e=>(0,a.jsx)("span",{className:"px-1.5 py-0.5 rounded text-[10px] font-mono text-text-muted bg-black/5 dark:bg-white/5",children:e},e))})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[l&&f.total>0&&(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("div",{className:"w-24 h-1.5 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden",children:(0,a.jsx)("div",{className:"h-full bg-violet-500 rounded-full transition-all duration-300",style:{width:`${f.current/f.total*100}%`}})}),(0,a.jsxs)("span",{className:"text-xs text-text-muted font-mono tabular-nums",children:[f.current,"/",f.total]})]}),(0,a.jsx)(r.$n,{size:"sm",variant:"primary",onClick:e=>{e.stopPropagation(),D(t)},loading:l,disabled:l,children:l?e("runningProgress",{current:f.current,total:f.total}):e("runEval")})]})]}),n&&(0,a.jsx)("div",{className:"border-t border-border/20 p-4",children:s?.results?(0,a.jsxs)(a.Fragment,{children:[s.summary&&(0,a.jsxs)("div",{className:"flex items-center gap-4 mb-4 p-3 rounded-lg bg-surface/30 border border-border/20",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("span",{className:`text-lg font-bold ${100===s.summary.passRate?"text-emerald-400":s.summary.passRate>=80?"text-amber-400":"text-red-400"}`,children:[s.summary.passRate,"%"]}),(0,a.jsx)("span",{className:"text-xs text-text-muted",children:e("passRate")})]}),(0,a.jsx)("div",{className:"text-xs text-text-muted",children:e("summaryBreakdown",{passed:s.summary.passed,failed:s.summary.failed,total:s.summary.total})}),(0,a.jsx)("div",{className:"flex-1 h-2 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden",children:(0,a.jsx)("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${s.summary.passRate}%`,background:100===s.summary.passRate?"linear-gradient(90deg, #22c55e, #16a34a)":s.summary.passRate>=80?"linear-gradient(90deg, #f59e0b, #d97706)":"linear-gradient(90deg, #ef4444, #dc2626)"}})})]}),(0,a.jsx)(r.bQ,{columns:K,data:s.results.map((e,t)=>({...e,id:e.caseId||t})),renderCell:(t,s)=>{if("status"===s.key)return t.passed?(0,a.jsx)("span",{className:"text-emerald-400",children:e("passedIconLabel")}):(0,a.jsx)("span",{className:"text-red-400",children:e("failedIconLabel")});if("durationMs"===s.key)return(0,a.jsx)("span",{className:"text-text-muted text-xs font-mono",children:null!=t.durationMs?`${t.durationMs}ms`:"—"});if("details"===s.key){let s=t.details||{};return(0,a.jsx)("span",{className:"text-text-muted text-xs truncate max-w-[300px] block",children:String(s.searchTerm?e("detailsContains",{term:s.searchTerm}):s.pattern?e("detailsRegex",{pattern:s.pattern}):s.expected?e("detailsExpected",{expected:String(s.expected).slice(0,50)}):t.error||"—")})}return(0,a.jsx)("span",{className:"text-sm text-text-main",children:t[s.key]||"—"})},maxHeight:"400px",emptyMessage:e("noResultsYet")})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:"checklist"}),(0,a.jsx)("span",{className:"text-xs text-text-muted font-medium",children:e("testCasesCount",{count:(t.cases||[]).length})})]}),(0,a.jsx)(r.bQ,{columns:[{key:"name",label:e("columnCase")},{key:"model",label:e("columnModel")},{key:"strategy",label:e("columnStrategy")},{key:"expected",label:e("columnExpected")}],data:(t.cases||[]).map((e,t)=>({id:e.id||t,name:e.name,model:e.model||"—",strategy:e.expected?.strategy||"—",expected:e.expected?.value?String(e.expected.value).slice(0,80):"—"})),renderCell:(e,t)=>{if("strategy"===t.key){let t=d.find(t=>t.name===e.strategy);return(0,a.jsx)("span",{className:`text-xs font-mono font-semibold ${t?.color||"text-text-muted"}`,children:e.strategy})}return"model"===t.key?(0,a.jsx)("span",{className:"text-xs font-mono text-primary/80",children:e.model}):"expected"===t.key?(0,a.jsx)("span",{className:"text-text-muted text-xs font-mono truncate max-w-[300px] block",children:e.expected}):(0,a.jsx)("span",{className:"text-sm text-text-main",children:e[t.key]||"—"})},maxHeight:"400px",emptyMessage:e("noTestCasesDefined")}),(0,a.jsxs)("p",{className:"text-xs text-text-muted mt-3 flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"info"}),e("runEvalHint")]})]})})]},t.id)})})]})]})}function x({t:e}){return(0,a.jsx)(r.Zp,{className:"p-0 overflow-hidden",children:(0,a.jsx)("div",{className:"p-6",style:{background:"linear-gradient(135deg, rgba(139, 92, 246, 0.05) 0%, rgba(59, 130, 246, 0.05) 50%, rgba(16, 185, 129, 0.05) 100%)"},children:(0,a.jsxs)("div",{className:"flex items-start gap-4",children:[(0,a.jsx)("div",{className:"p-3 rounded-xl bg-violet-500/10 text-violet-500",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[28px]",children:"science"})}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h2",{className:"text-xl font-bold text-text-main mb-1",children:e("modelEvals")}),(0,a.jsx)("p",{className:"text-sm text-text-muted leading-relaxed max-w-2xl",children:e("evalsHeroDescription")}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-4 mt-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-emerald-400",children:"verified"}),e("qualityValidation")]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-sky-400",children:"compare"}),e("modelComparison")]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-amber-400",children:"bug_report"}),e("regressionDetection")]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-violet-400",children:"speed"}),e("latencyBenchmarks")]})]})]})]})})})}function m(){let[e,t]=(0,l.useState)("overview"),s=(0,n.c)("analytics"),i={overview:s("overviewDescription"),evals:s("evalsDescription")};return(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary text-[28px]",children:"analytics"}),s("title")]}),(0,a.jsx)("p",{className:"text-sm text-text-muted mt-1",children:i[e]})]}),(0,a.jsx)(r.Iz,{options:[{value:"overview",label:s("overview")},{value:"evals",label:s("evals")}],value:e,onChange:t}),"overview"===e&&(0,a.jsx)(l.Suspense,{fallback:(0,a.jsx)(r.Qv,{}),children:(0,a.jsx)(r.cn,{})}),"evals"===e&&(0,a.jsx)(c,{})]})}},69589:(e,t,s)=>{Promise.resolve().then(s.bind(s,53701))}},e=>{e.O(0,[8500,3418,9751,8055,1149,5846,647,8441,3794,7358],()=>e(e.s=69589)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2888],{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")})]})]})})})},57018:(e,t,s)=>{Promise.resolve().then(s.bind(s,42712))}},e=>{e.O(0,[8500,3418,9751,8055,1149,5846,647,8441,3794,7358],()=>e(e.s=57018)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6782],{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)},61265:(e,t,r)=>{Promise.resolve().then(r.bind(r,29698))}},e=>{e.O(0,[3418,8441,3794,7358],()=>e(e.s=61265)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7234],{21262:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>l});var a=t(95155),r=t(12115);function l(){let[e,s]=(0,r.useState)([]),[t,l]=(0,r.useState)([]),[i,d]=(0,r.useState)(!1),[o,n]=(0,r.useState)("ship-fast"),c=(0,r.useCallback)(async()=>{try{let[e,t]=await Promise.allSettled([fetch("/api/combos/auto"),fetch("/api/monitoring/health")]);if("fulfilled"===e.status){let t=await e.value.json(),a=(Array.isArray(t?.combos)?t.combos:[])[0]||null,r=Array.isArray(a?.candidatePool)?a.candidatePool.filter(e=>"string"==typeof e):[],l=a?.weights&&"object"==typeof a.weights&&!Array.isArray(a.weights)?a.weights:{},i=Object.fromEntries(Object.entries(l).map(([e,s])=>[e,"number"==typeof s?s:0])),d=r.length>0?1/r.length:0;s(r.map(e=>({provider:e,model:"auto",score:d,factors:i})))}else s([]);if("fulfilled"===t.status){let e=await t.value.json(),s=e?.providerHealth&&"object"==typeof e.providerHealth?e.providerHealth:{},a=Object.entries(s).map(([e,s])=>({provider:e,state:s?.state||"CLOSED",lastFailure:s?.lastFailure||null})),r=Array.isArray(e?.circuitBreakers)?e.circuitBreakers:[],i=r.length>0?r.map(e=>({provider:e.provider||e.name||"unknown",state:e.state||"CLOSED",lastFailure:e.lastFailure||null})):a,o=i.filter(e=>"OPEN"===e.state);d(o.length/Math.max(i.length,1)>.5),l(o.map(e=>({provider:e.provider,excludedAt:e.lastFailure||new Date().toISOString(),cooldownMs:3e5,reason:"Circuit breaker OPEN"})))}else d(!1),l([])}catch{}},[]);(0,r.useEffect)(()=>{let e=setTimeout(c,0),s=setInterval(c,3e4);return()=>{clearTimeout(e),clearInterval(s)}},[c]);let m={quota:"\uD83D\uDCCA Quota",health:"\uD83D\uDC9A Health",costInv:"\uD83D\uDCB0 Cost",latencyInv:"⚡ Latency",taskFit:"\uD83C\uDFAF Task Fit",stability:"\uD83D\uDCC8 Stability",tierPriority:"\uD83C\uDFF7️ Tier"},x=[{id:"ship-fast",label:"\uD83D\uDE80 Ship Fast"},{id:"cost-saver",label:"\uD83D\uDCB0 Cost Saver"},{id:"quality-first",label:"\uD83C\uDFAF Quality First"},{id:"offline-friendly",label:"\uD83D\uDCE1 Offline Friendly"}];return(0,a.jsxs)("div",{className:"p-6 max-w-7xl mx-auto",children:[(0,a.jsx)("h1",{className:"text-2xl font-bold mb-6",children:"⚡ Auto-Combo Engine"}),(0,a.jsxs)("div",{className:"flex gap-4 mb-6",children:[(0,a.jsx)("div",{className:`px-3 py-2 rounded-lg text-sm font-medium ${i?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300":"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300"}`,children:i?"\uD83D\uDEA8 INCIDENT MODE":"✅ Normal"}),(0,a.jsxs)("div",{className:"px-3 py-2 bg-blue-100 dark:bg-blue-900/30 rounded-lg text-sm",children:["Mode: ",(0,a.jsx)("strong",{children:x.find(e=>e.id===o)?.label||o})]})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-3",children:"\uD83C\uDF9B️ Mode Pack"}),(0,a.jsx)("div",{className:"flex gap-2",children:x.map(e=>(0,a.jsx)("button",{onClick:()=>n(e.id),className:`px-4 py-2 rounded-lg text-sm transition-colors ${o===e.id?"bg-blue-600 text-white":"bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700"}`,children:e.label},e.id))})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-3",children:"\uD83D\uDCCA Provider Scores"}),0===e.length?(0,a.jsxs)("p",{className:"text-gray-500",children:["No auto-combo configured. Create one via ",(0,a.jsx)("code",{children:"POST /api/combos/auto"}),"."]}):(0,a.jsx)("div",{className:"space-y-3",children:e.map(e=>(0,a.jsxs)("div",{className:"p-3 bg-white dark:bg-gray-800 rounded-lg border",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,a.jsxs)("span",{className:"font-medium",children:[e.provider," / ",e.model]}),(0,a.jsxs)("span",{className:"font-bold text-lg",children:[(100*e.score).toFixed(0),"%"]})]}),(0,a.jsx)("div",{className:"h-2 bg-gray-200 dark:bg-gray-700 rounded overflow-hidden mb-2",children:(0,a.jsx)("div",{className:"h-full bg-blue-500 rounded",style:{width:`${100*e.score}%`}})}),(0,a.jsx)("div",{className:"grid grid-cols-3 gap-1 text-xs text-gray-500",children:Object.entries(e.factors||{}).map(([e,s])=>(0,a.jsxs)("span",{children:[m[e]||e,": ",(100*s).toFixed(0),"%"]},e))})]},e.provider))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-3",children:"\uD83D\uDEAB Excluded Providers"}),0===t.length?(0,a.jsx)("p",{className:"text-gray-500",children:"No providers currently excluded."}):(0,a.jsx)("div",{className:"space-y-2",children:t.map(e=>(0,a.jsxs)("div",{className:"p-3 bg-red-50 dark:bg-red-900/10 rounded border border-red-200 dark:border-red-800",children:[(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{className:"font-medium text-red-700 dark:text-red-400",children:e.provider}),(0,a.jsxs)("span",{className:"text-xs text-gray-500",children:["Cooldown: ",Math.round(e.cooldownMs/6e4),"min"]})]}),(0,a.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:e.reason})]},e.provider))})]})]})}},66135:(e,s,t)=>{Promise.resolve().then(t.bind(t,21262))}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=66135)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7234],{21262:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>l});var a=t(95155),r=t(12115);function l(){let[e,s]=(0,r.useState)([]),[t,l]=(0,r.useState)([]),[i,d]=(0,r.useState)(!1),[o,n]=(0,r.useState)("ship-fast"),c=(0,r.useCallback)(async()=>{try{let[e,t]=await Promise.allSettled([fetch("/api/combos/auto"),fetch("/api/monitoring/health")]);if("fulfilled"===e.status){let t=await e.value.json(),a=(Array.isArray(t?.combos)?t.combos:[])[0]||null,r=Array.isArray(a?.candidatePool)?a.candidatePool.filter(e=>"string"==typeof e):[],l=a?.weights&&"object"==typeof a.weights&&!Array.isArray(a.weights)?a.weights:{},i=Object.fromEntries(Object.entries(l).map(([e,s])=>[e,"number"==typeof s?s:0])),d=r.length>0?1/r.length:0;s(r.map(e=>({provider:e,model:"auto",score:d,factors:i})))}else s([]);if("fulfilled"===t.status){let e=await t.value.json(),s=e?.providerHealth&&"object"==typeof e.providerHealth?e.providerHealth:{},a=Object.entries(s).map(([e,s])=>({provider:e,state:s?.state||"CLOSED",lastFailure:s?.lastFailure||null})),r=Array.isArray(e?.circuitBreakers)?e.circuitBreakers:[],i=r.length>0?r.map(e=>({provider:e.provider||e.name||"unknown",state:e.state||"CLOSED",lastFailure:e.lastFailure||null})):a,o=i.filter(e=>"OPEN"===e.state);d(o.length/Math.max(i.length,1)>.5),l(o.map(e=>({provider:e.provider,excludedAt:e.lastFailure||new Date().toISOString(),cooldownMs:3e5,reason:"Circuit breaker OPEN"})))}else d(!1),l([])}catch{}},[]);(0,r.useEffect)(()=>{let e=setTimeout(c,0),s=setInterval(c,3e4);return()=>{clearTimeout(e),clearInterval(s)}},[c]);let m={quota:"\uD83D\uDCCA Quota",health:"\uD83D\uDC9A Health",costInv:"\uD83D\uDCB0 Cost",latencyInv:"⚡ Latency",taskFit:"\uD83C\uDFAF Task Fit",stability:"\uD83D\uDCC8 Stability",tierPriority:"\uD83C\uDFF7️ Tier"},x=[{id:"ship-fast",label:"\uD83D\uDE80 Ship Fast"},{id:"cost-saver",label:"\uD83D\uDCB0 Cost Saver"},{id:"quality-first",label:"\uD83C\uDFAF Quality First"},{id:"offline-friendly",label:"\uD83D\uDCE1 Offline Friendly"}];return(0,a.jsxs)("div",{className:"p-6 max-w-7xl mx-auto",children:[(0,a.jsx)("h1",{className:"text-2xl font-bold mb-6",children:"⚡ Auto-Combo Engine"}),(0,a.jsxs)("div",{className:"flex gap-4 mb-6",children:[(0,a.jsx)("div",{className:`px-3 py-2 rounded-lg text-sm font-medium ${i?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300":"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300"}`,children:i?"\uD83D\uDEA8 INCIDENT MODE":"✅ Normal"}),(0,a.jsxs)("div",{className:"px-3 py-2 bg-blue-100 dark:bg-blue-900/30 rounded-lg text-sm",children:["Mode: ",(0,a.jsx)("strong",{children:x.find(e=>e.id===o)?.label||o})]})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-3",children:"\uD83C\uDF9B️ Mode Pack"}),(0,a.jsx)("div",{className:"flex gap-2",children:x.map(e=>(0,a.jsx)("button",{onClick:()=>n(e.id),className:`px-4 py-2 rounded-lg text-sm transition-colors ${o===e.id?"bg-blue-600 text-white":"bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700"}`,children:e.label},e.id))})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-3",children:"\uD83D\uDCCA Provider Scores"}),0===e.length?(0,a.jsxs)("p",{className:"text-gray-500",children:["No auto-combo configured. Create one via ",(0,a.jsx)("code",{children:"POST /api/combos/auto"}),"."]}):(0,a.jsx)("div",{className:"space-y-3",children:e.map(e=>(0,a.jsxs)("div",{className:"p-3 bg-white dark:bg-gray-800 rounded-lg border",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,a.jsxs)("span",{className:"font-medium",children:[e.provider," / ",e.model]}),(0,a.jsxs)("span",{className:"font-bold text-lg",children:[(100*e.score).toFixed(0),"%"]})]}),(0,a.jsx)("div",{className:"h-2 bg-gray-200 dark:bg-gray-700 rounded overflow-hidden mb-2",children:(0,a.jsx)("div",{className:"h-full bg-blue-500 rounded",style:{width:`${100*e.score}%`}})}),(0,a.jsx)("div",{className:"grid grid-cols-3 gap-1 text-xs text-gray-500",children:Object.entries(e.factors||{}).map(([e,s])=>(0,a.jsxs)("span",{children:[m[e]||e,": ",(100*s).toFixed(0),"%"]},e))})]},e.provider))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-3",children:"\uD83D\uDEAB Excluded Providers"}),0===t.length?(0,a.jsx)("p",{className:"text-gray-500",children:"No providers currently excluded."}):(0,a.jsx)("div",{className:"space-y-2",children:t.map(e=>(0,a.jsxs)("div",{className:"p-3 bg-red-50 dark:bg-red-900/10 rounded border border-red-200 dark:border-red-800",children:[(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{className:"font-medium text-red-700 dark:text-red-400",children:e.provider}),(0,a.jsxs)("span",{className:"text-xs text-gray-500",children:["Cooldown: ",Math.round(e.cooldownMs/6e4),"min"]})]}),(0,a.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:e.reason})]},e.provider))})]})]})}},61571:(e,s,t)=>{Promise.resolve().then(t.bind(t,21262))}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=61571)),_N_E=e.O()}]);