omniroute 3.0.6 → 3.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js +2 -2
  5. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js +2 -2
  8. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  11. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +2 -2
  14. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
  17. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js +2 -2
  20. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js.nft.json +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  23. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  26. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  29. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  32. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  35. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  38. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +2 -2
  41. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js +2 -2
  44. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/media/page.js +2 -2
  47. package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  50. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  53. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js +2 -2
  56. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  59. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  62. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  65. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  68. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  69. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page.js +2 -2
  71. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page.js.nft.json +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  74. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  75. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  77. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  78. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  80. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  81. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  83. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  84. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/400/page.js +2 -2
  86. package/app/.next/server/app/400/page.js.nft.json +1 -1
  87. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/401/page.js +2 -2
  89. package/app/.next/server/app/401/page.js.nft.json +1 -1
  90. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/403/page.js +2 -2
  92. package/app/.next/server/app/403/page.js.nft.json +1 -1
  93. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/408/page.js +2 -2
  95. package/app/.next/server/app/408/page.js.nft.json +1 -1
  96. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/429/page.js +2 -2
  98. package/app/.next/server/app/429/page.js.nft.json +1 -1
  99. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/500/page.js +2 -2
  101. package/app/.next/server/app/500/page.js.nft.json +1 -1
  102. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/502/page.js +2 -2
  104. package/app/.next/server/app/502/page.js.nft.json +1 -1
  105. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/503/page.js +2 -2
  107. package/app/.next/server/app/503/page.js.nft.json +1 -1
  108. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/_global-error/page.js +1 -1
  110. package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
  111. package/app/.next/server/app/_global-error.html +2 -2
  112. package/app/.next/server/app/_global-error.rsc +1 -1
  113. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  114. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  115. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  116. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  117. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  118. package/app/.next/server/app/_not-found/page.js +2 -2
  119. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  120. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/logs/console/route.js +1 -1
  122. package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -1
  123. package/app/.next/server/app/api/openapi/spec/route.js +1 -1
  124. package/app/.next/server/app/api/openapi/spec/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/settings/proxy/test/route.js +7 -2
  126. package/app/.next/server/app/api/settings/proxy/test/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/translator/load/route.js +1 -1
  128. package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
  129. package/app/.next/server/app/api/translator/save/route.js +1 -1
  130. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/usage/[connectionId]/route.js +6 -5
  132. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  133. package/app/.next/server/app/callback/page.js +2 -2
  134. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  135. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/docs/page.js +2 -2
  137. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  138. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/forbidden/page.js +2 -2
  140. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  141. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/forgot-password/page.js +2 -2
  143. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  144. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/landing/page.js +2 -2
  146. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  147. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/login/page.js +2 -2
  149. package/app/.next/server/app/login/page.js.nft.json +1 -1
  150. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/maintenance/page.js +2 -2
  152. package/app/.next/server/app/maintenance/page.js.nft.json +1 -1
  153. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/offline/page.js +2 -2
  155. package/app/.next/server/app/offline/page.js.nft.json +1 -1
  156. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/page.js +2 -2
  158. package/app/.next/server/app/page.js.nft.json +1 -1
  159. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/privacy/page.js +2 -2
  161. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  162. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/status/page.js +2 -2
  164. package/app/.next/server/app/status/page.js.nft.json +1 -1
  165. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/terms/page.js +2 -2
  167. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  168. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  169. package/app/.next/server/chunks/[root-of-the-server]__051203a6._.js +2 -2
  170. package/app/.next/server/chunks/[root-of-the-server]__0891af92._.js +1 -1
  171. package/app/.next/server/chunks/{[root-of-the-server]__fea5312b._.js → [root-of-the-server]__1a67cabb._.js} +2 -2
  172. package/app/.next/server/chunks/[root-of-the-server]__1f2b0d89._.js +1 -1
  173. package/app/.next/server/chunks/[root-of-the-server]__228deb98._.js +6 -0
  174. package/app/.next/server/chunks/[root-of-the-server]__3aa1672b._.js +3 -0
  175. package/app/.next/server/chunks/{[root-of-the-server]__9d50d114._.js → [root-of-the-server]__3e31c0c5._.js} +2 -2
  176. package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
  177. package/app/.next/server/chunks/[root-of-the-server]__4e5a04c2._.js +1 -1
  178. package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
  179. package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
  180. package/app/.next/server/chunks/[root-of-the-server]__7d0781e8._.js +6 -0
  181. package/app/.next/server/chunks/[root-of-the-server]__7fa4d14e._.js +1 -1
  182. package/app/.next/server/chunks/{[root-of-the-server]__6ff1ab32._.js → [root-of-the-server]__ab1817d2._.js} +2 -2
  183. package/app/.next/server/chunks/{[root-of-the-server]__e376e668._.js → [root-of-the-server]__b2d1faff._.js} +2 -2
  184. package/app/.next/server/chunks/{[root-of-the-server]__192ce3e4._.js → [root-of-the-server]__b974107a._.js} +2 -2
  185. package/app/.next/server/chunks/[root-of-the-server]__d49fae76._.js +3 -0
  186. package/app/.next/server/chunks/{[root-of-the-server]__1a89bfa5._.js → [root-of-the-server]__d6de923d._.js} +3 -3
  187. package/app/.next/server/chunks/_05c48915._.js +1 -1
  188. package/app/.next/server/chunks/_06515a8a._.js +1 -1
  189. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  190. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  191. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  192. package/app/.next/server/chunks/_68683848._.js +1 -1
  193. package/app/.next/server/chunks/_85c0d9b3._.js +1 -1
  194. package/app/.next/server/chunks/_d13cbb6d._.js +3 -0
  195. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  196. package/app/.next/server/chunks/open-sse_config_providerModels_ts_04541468._.js +1 -1
  197. package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_2f74ec2a._.js +1 -1
  198. package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_dec0f840._.js +1 -1
  199. package/app/.next/server/chunks/ssr/{[root-of-the-server]__d5a9e5ee._.js → [root-of-the-server]__62183d3b._.js} +2 -2
  200. package/app/.next/server/chunks/ssr/{[root-of-the-server]__e4499d60._.js → [root-of-the-server]__7a1929fd._.js} +2 -2
  201. package/app/.next/server/chunks/ssr/{[root-of-the-server]__18da985c._.js → [root-of-the-server]__9c6249ab._.js} +2 -2
  202. package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
  203. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  204. package/app/.next/server/chunks/ssr/_19b3d5b1._.js +1 -1
  205. package/app/.next/server/chunks/ssr/open-sse_config_providerModels_ts_4cac55e2._.js +1 -1
  206. package/app/.next/server/chunks/ssr/src_608e5edc._.js +1 -1
  207. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_936a9ee0._.js +1 -1
  208. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_playground_page_tsx_06c08266._.js +2 -2
  209. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_settings_9e20fb8d._.js +1 -1
  210. package/app/.next/server/middleware.js +1 -1
  211. package/app/.next/server/pages/500.html +2 -2
  212. package/app/.next/server/server-reference-manifest.js +1 -1
  213. package/app/.next/server/server-reference-manifest.json +1 -1
  214. package/app/.next/static/chunks/{c4538578367f8d6e.js → 29003ec8ef226c62.js} +2 -2
  215. package/app/.next/static/chunks/{98a065e472ead1c5.js → 58d319dd9faa8901.js} +1 -1
  216. package/app/.next/static/chunks/6350bc1d56a7114c.js +2 -0
  217. package/app/.next/static/chunks/{339b27cecfee41d1.js → 84065c05df1a3a1a.js} +1 -1
  218. package/app/.next/static/chunks/9330486b16098458.js +1 -0
  219. package/app/.next/static/chunks/a622fa7a630e2dc2.js +1 -0
  220. package/app/CHANGELOG.md +22 -0
  221. package/app/docs/openapi.yaml +1 -1
  222. package/app/open-sse/config/providerRegistry.ts +7 -1
  223. package/app/open-sse/services/signatureCache.ts +5 -0
  224. package/app/package-lock.json +2 -2
  225. package/app/package.json +1 -1
  226. package/app/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.tsx +40 -0
  227. package/app/src/app/(dashboard)/dashboard/playground/page.tsx +39 -40
  228. package/app/src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx +1 -2
  229. package/app/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx +1 -1
  230. package/app/src/app/api/settings/proxy/test/route.ts +21 -1
  231. package/app/src/app/api/usage/[connectionId]/route.ts +83 -35
  232. package/package.json +1 -1
  233. package/app/.next/server/chunks/[root-of-the-server]__5dcab57b._.js +0 -6
  234. package/app/.next/server/chunks/[root-of-the-server]__643f87ad._.js +0 -3
  235. package/app/.next/server/chunks/[root-of-the-server]__765c4417._.js +0 -3
  236. package/app/.next/server/chunks/[root-of-the-server]__7afe1e49._.js +0 -3
  237. package/app/.next/static/chunks/0e39e279bf7e4cd9.js +0 -2
  238. package/app/.next/static/chunks/3f18998354dd49b9.js +0 -1
  239. package/app/.next/static/chunks/f62c550263d8bca8.js +0 -1
  240. /package/app/.next/static/{4vzx2qUM_tiJPdpx_Hiqj → kmbT_1tKg7aSbEcFkhAUg}/_buildManifest.js +0 -0
  241. /package/app/.next/static/{4vzx2qUM_tiJPdpx_Hiqj → kmbT_1tKg7aSbEcFkhAUg}/_clientMiddlewareManifest.json +0 -0
  242. /package/app/.next/static/{4vzx2qUM_tiJPdpx_Hiqj → kmbT_1tKg7aSbEcFkhAUg}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[604593,a=>{"use strict";var b=a.i(911655),c=a.i(745718);function d(a,b){return b&&0!==b?!a||a<0?100:a>=b?0:Math.round((b-a)/b*100):0}function e(a,b={},d={}){let f=Number(b?.used||0),g=Number(b?.total||0),h=b?.resetAt||null,i=function(a){if(!a)return!1;let b="number"==typeof a?a:"string"==typeof a?Date.parse(a):NaN;return!!Number.isFinite(b)&&Date.now()>=b}(h),j=i?0:f,k=Number.isFinite(g)?g:0,l=(0,c.safePercentage)(b?.remainingPercentage),m=i&&k>0?100:void 0!==l?l:void 0;return{name:a,used:Number.isFinite(j)?j:0,total:k,resetAt:h,staleAfterReset:i,...void 0!==m?{remainingPercentage:m}:{},...d}}function f(a,c){if(!c||"object"!=typeof c)return[];let d=[];try{switch(a.toLowerCase()){case"github":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{(!b?.unlimited||b?.total&&!(b.total<=0))&&d.push(e(a,b))});break;case"antigravity":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(b.displayName||a,b,{modelKey:a}))});break;case"codex":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;case"kiro":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;case"claude":c.message?d.push({name:"error",used:0,total:0,resetAt:null,message:c.message}):c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;default:c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))})}}catch(b){return console.error(`Error parsing quota data for ${a}:`,b),[]}let f=(0,b.getModelsByProviderId)(a);if(f.length>0){let a=new Map(f.map((a,b)=>[a.id,b]));d.sort((b,c)=>{let d=b.modelKey||b.name,e=c.modelKey||c.name;return(a.get(d)??999)-(a.get(e)??999)})}return d}function g(a){let b="string"==typeof a?a.trim():"";if(!b)return{key:"unknown",label:"Unknown",variant:"default",rank:0,raw:null};let c=b.toUpperCase();return"CLAUDE CODE"===c||"KIMI CODING"===c||"KIRO"===c?{key:"unknown",label:b,variant:"default",rank:0,raw:b}:c.includes("PRO+")||c.includes("PRO PLUS")||c.includes("PROPLUS")?{key:"plus",label:"Pro+",variant:"secondary",rank:4,raw:b}:c.includes("ENTERPRISE")||c.includes("CORP")||c.includes("ORG")?{key:"enterprise",label:"Enterprise",variant:"info",rank:7,raw:b}:c.includes("TEAM")||c.includes("CHATGPTTEAM")?{key:"team",label:"Team",variant:"info",rank:6,raw:b}:c.includes("BUSINESS")||c.includes("STANDARD")||c.includes("BIZ")?{key:"business",label:"Business",variant:"warning",rank:5,raw:b}:c.includes("STUDENT")?{key:"pro",label:"Student",variant:"primary",rank:3,raw:b}:c.includes("ULTRA")?{key:"ultra",label:"Ultra",variant:"success",rank:4,raw:b}:c.includes("PRO")||c.includes("PREMIUM")?{key:"pro",label:"Pro",variant:"primary",rank:3,raw:b}:c.includes("PLUS")||c.includes("PAID")?{key:"plus",label:"Plus",variant:"secondary",rank:2,raw:b}:c.includes("FREE")||c.includes("BASIC")||c.includes("TRIAL")||c.includes("LEGACY")?{key:"free",label:"Free",variant:"default",rank:1,raw:b}:{key:"unknown",label:b.toLowerCase().split(/[\s_-]+/).map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" ")||"Unknown",variant:"default",rank:0,raw:b}}a.s(["calculatePercentage",()=>d,"normalizePlanTier",()=>g,"parseQuotaData",()=>f])},280382,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(571987),h=a.i(604593),i=a.i(436595),j=a.i(497160),k=a.i(831097),l=a.i(662073),m=b([l]);[l]=m.then?(await m)():m;let o="omniroute:limits:expandedGroups",p={antigravity:{label:"Antigravity",color:"#F59E0B"},github:{label:"GitHub Copilot",color:"#333"},kiro:{label:"Kiro AI",color:"#FF6B35"},codex:{label:"OpenAI Codex",color:"#10A37F"},claude:{label:"Claude Code",color:"#D97757"},glm:{label:"GLM (Z.AI)",color:"#4A90D9"},"kimi-coding":{label:"Kimi Coding",color:"#1E3A8A"}},q=[{key:"all",labelKey:"tierAll"},{key:"enterprise",labelKey:"tierEnterprise"},{key:"team",labelKey:"tierTeam"},{key:"business",labelKey:"tierBusiness"},{key:"ultra",labelKey:"tierUltra"},{key:"pro",labelKey:"tierPro"},{key:"plus",labelKey:"tierPlus"},{key:"free",labelKey:"tierFree"},{key:"unknown",labelKey:"tierUnknown"}];function n(){let a,b=(0,e.useTranslations)("usage"),[c,m]=(0,f.useState)([]),[n,r]=(0,f.useState)({}),[s,t]=(0,f.useState)({}),[u,v]=(0,f.useState)({}),[w,x]=(0,f.useState)(()=>!1),[y,z]=(0,f.useState)(null),[A,B]=(0,f.useState)(!1),[C,D]=(0,f.useState)(120),[E,F]=(0,f.useState)(!0),[G,H]=(0,f.useState)("all"),[I,J]=(0,f.useState)(()=>"none"),[K,L]=(0,f.useState)(()=>new Set),M=(0,f.useRef)(null),N=(0,f.useRef)(null),O=(0,f.useRef)({}),P=(0,f.useRef)({}),Q=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/providers/client");if(!a.ok)throw Error("Failed");let b=(await a.json()).connections||[];return m(b),b}catch{return m([]),[]}},[]),R=(0,f.useCallback)(async(a,b,c={})=>{let d=c?.force===!0,e=Date.now(),f=O.current[a]||0;if(d||!(e-f<3e4)){O.current[a]=e,t(b=>({...b,[a]:!0})),v(b=>({...b,[a]:null}));try{let c=await fetch(`/api/usage/${a}`);if(!c.ok){let b=(await c.json().catch(()=>({}))).error||c.statusText;if(404===c.status)return;if(401===c.status)return void r(c=>({...c,[a]:{quotas:[],message:b}}));throw Error(`HTTP ${c.status}: ${b}`)}let d=await c.json(),e=(0,h.parseQuotaData)(b,d);if(e.some(a=>a?.staleAfterReset===!0)){let c=P.current[a]||0;Date.now()-c>=3e4&&(P.current[a]=Date.now(),setTimeout(()=>{R(a,b,{force:!0}).catch(()=>{})},5e3))}r(b=>({...b,[a]:{quotas:e,plan:d.plan||null,message:d.message||null,raw:d}}))}catch(b){v(c=>({...c,[a]:b.message||"Failed to fetch quota"}))}finally{t(b=>({...b,[a]:!1}))}}},[]),S=(0,f.useCallback)(async(a,b)=>{await R(a,b),z(new Date)},[R]),T=(0,f.useCallback)(async()=>{if(!A){B(!0),D(120);try{let a=(await Q()).filter(a=>l.USAGE_SUPPORTED_PROVIDERS.includes(a.provider)&&("oauth"===a.authType||"apikey"===a.authType));await Promise.all(a.map(a=>R(a.id,a.provider))),z(new Date)}catch(a){console.error("Error refreshing all:",a)}finally{B(!1)}}},[A,Q,R]);(0,f.useEffect)(()=>{(async()=>{F(!0),await T(),F(!1)})()},[]),(0,f.useEffect)(()=>{if(!w){M.current&&clearInterval(M.current),N.current&&clearInterval(N.current);return}return M.current=setInterval(T,12e4),N.current=setInterval(()=>{D(a=>a<=1?120:a-1)},1e3),()=>{M.current&&clearInterval(M.current),N.current&&clearInterval(N.current)}},[w,T]),(0,f.useEffect)(()=>{let a=()=>{document.hidden?(M.current&&clearInterval(M.current),N.current&&clearInterval(N.current)):w&&(M.current=setInterval(T,12e4),N.current=setInterval(()=>{D(a=>a<=1?120:a-1)},1e3))};return document.addEventListener("visibilitychange",a),()=>document.removeEventListener("visibilitychange",a)},[w,T]);let U=(0,f.useMemo)(()=>c.filter(a=>l.USAGE_SUPPORTED_PROVIDERS.includes(a.provider)&&("oauth"===a.authType||"apikey"===a.authType)),[c]),V=(0,f.useMemo)(()=>{let a={antigravity:1,github:2,codex:3,claude:4,kiro:5,glm:6,"kimi-coding":7};return[...U].sort((b,c)=>(a[b.provider]||9)-(a[c.provider]||9))},[U]),W=(0,f.useMemo)(()=>{let a={};for(let b of V)a[b.id]=(0,h.normalizePlanTier)(n[b.id]?.plan);return a},[V,n]),X=(0,f.useMemo)(()=>{let a={all:V.length,enterprise:0,team:0,business:0,ultra:0,pro:0,free:0,unknown:0};for(let b of V){let c=W[b.id]?.key||"unknown";a[c]=(a[c]||0)+1}return a},[V,W]),Y=(0,f.useMemo)(()=>"all"===G?V:V.filter(a=>(W[a.id]?.key||"unknown")===G),[V,W,G]),Z=(0,f.useMemo)(()=>{if("environment"!==I)return null;let a=new Map;for(let c of Y){let d=c.providerSpecificData?.tag?.trim()||b("ungrouped");a.has(d)||a.set(d,[]),a.get(d).push(c)}return new Map([...a.entries()].sort(([a],[c])=>a===b("ungrouped")?1:c===b("ungrouped")?-1:a.localeCompare(c)))},[I,Y,b]),$=a=>{J(a),localStorage.setItem("omniroute:limits:groupBy",a)};return((0,f.useEffect)(()=>{},[c]),(0,f.useEffect)(()=>{if("environment"===I&&Z&&0===K.size){let a=new Set([...Z.keys()]);L(a),localStorage.setItem(o,JSON.stringify([...a]))}},[I,Z]),E)?(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(k.CardSkeleton,{}),(0,d.jsx)(k.CardSkeleton,{})]}):0===V.length?(0,d.jsx)(i.default,{padding:"lg",children:(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[64px] opacity-15",children:"cloud_off"}),(0,d.jsx)("h3",{className:"mt-4 text-lg font-semibold text-text-main",children:b("noProviders")}),(0,d.jsx)("p",{className:"mt-2 text-sm text-text-muted max-w-[400px] mx-auto",children:b("connectProvidersForQuota")})]})}):(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold text-text-main m-0",children:b("providerLimits")}),(0,d.jsxs)("span",{className:"text-[13px] text-text-muted",children:[b("accountsCount",{count:Y.length}),Y.length!==V.length&&` ${b("filteredFromCount",{count:V.length})}`]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("div",{className:"flex rounded-lg border border-border overflow-hidden",children:[(0,d.jsx)("button",{onClick:()=>$("none"),className:"px-2.5 py-1.5 text-[12px] font-medium cursor-pointer border-none",style:{background:"none"===I?"var(--color-bg-subtle)":"transparent",color:"none"===I?"var(--color-text-main)":"var(--color-text-muted)"},children:b("viewFlat")}),(0,d.jsx)("button",{onClick:()=>$("environment"),className:"px-2.5 py-1.5 text-[12px] font-medium cursor-pointer border-none",style:{background:"environment"===I?"var(--color-bg-subtle)":"transparent",color:"environment"===I?"var(--color-text-main)":"var(--color-text-muted)",borderLeft:"1px solid var(--color-border)"},children:b("viewByEnvironment")})]}),(0,d.jsxs)("button",{onClick:()=>{let a=!w;x(a),localStorage.setItem("omniroute:limits:autoRefresh",String(a))},className:"flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-transparent cursor-pointer text-text-main text-[13px]",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:w?"#22c55e":"var(--text-muted)"},children:w?"toggle_on":"toggle_off"}),b("autoRefresh"),w&&(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["(",C,"s)"]})]}),(0,d.jsxs)("button",{onClick:T,disabled:A,className:"flex items-center gap-1.5 px-3.5 py-1.5 rounded-lg bg-bg-subtle border border-border text-text-main text-[13px] disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer",children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-[16px] ${A?"animate-spin":""}`,children:"refresh"}),b("refreshAll")]})]})]}),(0,d.jsx)("div",{className:"flex items-center gap-2 flex-wrap",children:q.map(a=>{if("all"!==a.key&&!X[a.key])return null;let c=G===a.key;return(0,d.jsxs)("button",{onClick:()=>H(a.key),className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-semibold cursor-pointer",style:{border:c?"1px solid var(--color-primary, #E54D5E)":"1px solid var(--color-border)",background:c?"rgba(229,77,94,0.1)":"transparent",color:c?"var(--color-primary, #E54D5E)":"var(--color-text-muted)"},children:[(0,d.jsx)("span",{children:b(a.labelKey)}),(0,d.jsx)("span",{className:"opacity-85",children:X[a.key]||0})]},a.key)})}),(0,d.jsxs)("div",{className:"rounded-xl border border-border overflow-hidden bg-bg-subtle",children:[(0,d.jsxs)("div",{className:"items-center px-4 py-2.5 border-b border-border text-[11px] font-semibold uppercase tracking-wider text-text-muted",style:{display:"grid",gridTemplateColumns:"280px 1fr 100px 48px"},children:[(0,d.jsx)("div",{children:b("account")}),(0,d.jsx)("div",{children:b("modelQuotas")}),(0,d.jsx)("div",{className:"text-center",children:b("lastUsed")}),(0,d.jsx)("div",{className:"text-center",children:b("actions")})]}),(a=(a,c)=>{let e=n[a.id],f=s[a.id],i=u[a.id],k=p[a.provider]||{label:a.provider,color:"#666"},l=W[a.id]||(0,h.normalizePlanTier)(null);return(0,d.jsxs)("div",{className:"items-center px-4 py-3.5 transition-[background] duration-150 hover:bg-black/[0.03] dark:hover:bg-white/[0.02]",style:{display:"grid",gridTemplateColumns:"280px 1fr 100px 48px",borderBottom:c?"none":"1px solid var(--color-border)"},children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5 min-w-0",children:[(0,d.jsx)("div",{className:"w-8 h-8 rounded-lg flex items-center justify-center overflow-hidden shrink-0",children:(0,d.jsx)(g.default,{src:`/providers/${a.provider}.png`,alt:a.provider,width:32,height:32,className:"object-contain",sizes:"32px"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("div",{className:"text-[13px] font-semibold text-text-main truncate",children:a.name||k.label}),(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[(0,d.jsx)("span",{title:e?.plan?b("rawPlanWithValue",{plan:e.plan}):b("noPlanFromProvider"),children:(0,d.jsx)(j.default,{variant:l.variant,size:"sm",dot:!0,children:l.label})}),(0,d.jsx)("span",{className:"text-[11px] text-text-muted",children:k.label})]})]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-x-3 gap-y-1.5 pr-3",children:f?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-text-muted text-xs",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-[14px]",children:"progress_activity"}),b("loadingQuotas")]}):i?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-red-500",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,d.jsx)("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap max-w-[300px]",children:i})]}):e?.message&&(!e.quotas||0===e.quotas.length)?(0,d.jsx)("div",{className:"text-xs text-text-muted italic",children:e.message}):e?.quotas?.length>0?e.quotas.map((a,b)=>{var c;let e=void 0!==a.remainingPercentage?Math.round(a.remainingPercentage):(0,h.calculatePercentage)(a.used,a.total),f=e>70?{bar:"#22c55e",text:"#22c55e",bg:"rgba(34,197,94,0.12)"}:e>=30?{bar:"#eab308",text:"#eab308",bg:"rgba(234,179,8,0.12)"}:{bar:"#ef4444",text:"#ef4444",bg:"rgba(239,68,68,0.12)"},g=function(a){if(!a)return null;try{let b=new Date(a)-new Date;if(b<=0)return null;let c=Math.floor(b/36e5),d=Math.floor(b%36e5/6e4);if(c>=24){let a=Math.floor(c/24);return`${a}d ${c%24}h`}return`${c}h ${d}m`}catch{return null}}(a.resetAt),i={"gemini-3-pro-high":"G3 Pro","gemini-3-pro-low":"G3 Pro Low","gemini-3-flash":"G3 Flash","gemini-2.5-flash":"G2.5 Flash","claude-opus-4-6-thinking":"Opus 4.6 Tk","claude-opus-4-5-thinking":"Opus 4.5 Tk","claude-opus-4-5":"Opus 4.5","claude-sonnet-4-5-thinking":"Sonnet 4.5 Tk","claude-sonnet-4-5":"Sonnet 4.5",chat:"Chat",completions:"Completions",premium_interactions:"Premium",session:"Session",weekly:"Weekly",agentic_request:"Agentic",agentic_request_freetrial:"Agentic (Trial)"}[c=a.name]||c,j=!0===a.staleAfterReset;return(0,d.jsxs)("div",{className:"flex items-center gap-1.5 min-w-[200px] shrink-0",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold py-0.5 px-2 rounded whitespace-nowrap min-w-[60px] text-center",style:{background:f.bg,color:f.text},children:i}),j?(0,d.jsx)("span",{className:"text-[10px] text-text-muted whitespace-nowrap",children:"⟳ Refreshing..."}):g?(0,d.jsxs)("span",{className:"text-[10px] text-text-muted whitespace-nowrap",children:["⏱ ",g]}):null,(0,d.jsx)("div",{className:"flex-1 h-1.5 rounded-sm bg-black/[0.06] dark:bg-white/[0.06] min-w-[60px] overflow-hidden",children:(0,d.jsx)("div",{className:"h-full rounded-sm transition-[width] duration-300 ease-out",style:{width:`${Math.min(e,100)}%`,background:f.bar}})}),(0,d.jsxs)("span",{className:"text-[11px] font-semibold min-w-[32px] text-right",style:{color:f.text},children:[e,"%"]})]},b)}):(0,d.jsx)("div",{className:"text-xs text-text-muted italic",children:b("noQuotaData")})}),(0,d.jsx)("div",{className:"text-center text-[11px] text-text-muted",children:y?(0,d.jsx)("span",{children:y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}):"-"}),(0,d.jsx)("div",{className:"flex justify-center gap-0.5",children:(0,d.jsx)("button",{onClick:()=>S(a.id,a.provider),disabled:f,title:b("refreshQuota"),className:"p-1 rounded-md border-none bg-transparent cursor-pointer disabled:cursor-not-allowed disabled:opacity-30 opacity-60 hover:opacity-100 flex items-center justify-center transition-opacity duration-150",children:(0,d.jsx)("span",{className:`material-symbols-outlined text-[16px] text-text-muted ${f?"animate-spin":""}`,children:"refresh"})})})]},a.id)},Z?[...Z.entries()].map(([b,c])=>(0,d.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden mb-2",children:[(0,d.jsxs)("button",{onClick:()=>{L(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),localStorage.setItem(o,JSON.stringify([...c])),c})},className:"w-full flex items-center gap-2 px-4 py-2.5 bg-bg-subtle hover:bg-black/[0.04] dark:hover:bg-white/[0.05] transition-colors text-left border-none cursor-pointer",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:K.has(b)?"expand_less":"expand_more"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:"folder"}),(0,d.jsx)("span",{className:"text-[12px] font-semibold text-text-main uppercase tracking-wider flex-1",children:b}),(0,d.jsx)("span",{className:"text-[11px] text-text-muted bg-black/[0.04] dark:bg-white/[0.06] px-2 py-0.5 rounded-full",children:c.length})]}),K.has(b)&&(0,d.jsx)("div",{children:c.map((b,d)=>a(b,d===c.length-1))})]},b)):Y.map((b,c)=>a(b,c===Y.length-1))),0===Y.length&&(0,d.jsxs)("div",{className:"py-6 px-4 text-center text-text-muted text-[13px]",children:[b("noAccountsForTierFilter")," ",(0,d.jsx)("strong",{children:b(q.find(a=>a.key===G)?.labelKey||"tierUnknown")}),"."]})]})]})}a.s(["default",()=>n]),c()}catch(a){c(a)}},!1),250870,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(442308),h=a.i(292216),i=b([g]);function j(){let a=(0,e.useTranslations)("usage"),b=(0,e.useTranslations)("common"),[c,g]=(0,f.useState)({lockouts:[],cacheStats:null}),[i,j]=(0,f.useState)(!0),k=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/rate-limits");a.ok&&g(await a.json())}catch{}finally{j(!1)}},[]);return(0,f.useEffect)(()=>{k();let a=setInterval(k,1e4);return()=>clearInterval(a)},[k]),(0,d.jsx)("div",{className:"flex flex-col gap-4",children:(0,d.jsxs)(h.Card,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,d.jsx)("div",{className:"p-2 rounded-lg bg-orange-500/10 text-orange-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:"lock_clock"})}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold",children:a("modelLockouts")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:a("lockoutsAutoRefreshHint")})]}),c.lockouts.length>0&&(0,d.jsx)("span",{className:"px-2.5 py-1 rounded-full text-xs font-semibold bg-orange-500/10 text-orange-400 border border-orange-500/20",children:a("lockedCount",{count:c.lockouts.length})})]}),0===c.lockouts.length?(0,d.jsxs)("div",{className:"text-center py-6 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px] mb-2 block opacity-40","aria-hidden":"true",children:"lock_open"}),(0,d.jsx)("p",{className:"text-sm",children:a("noLockouts")})]}):(0,d.jsx)("div",{className:"flex flex-col gap-2",children:c.lockouts.map((c,e)=>{var f;return(0,d.jsxs)("div",{className:"flex items-center justify-between px-3 py-2.5 rounded-lg bg-orange-500/5 border border-orange-500/15",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-orange-400","aria-hidden":"true",children:"lock"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:c.model}),(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:[a("account"),":"," ",(0,d.jsx)("span",{className:"font-mono",children:c.accountId?.slice(0,12)||b("none")}),c.reason&&(0,d.jsxs)(d.Fragment,{children:[a("reasonSeparator"),c.reason]})]})]})]}),(0,d.jsx)("span",{className:"text-xs font-mono tabular-nums text-orange-400",children:a("timeLeft",{time:(f=c.remainingMs)<1e3?a("durationMillisecondsShort",{value:f}):f<6e4?a("durationSecondsShort",{value:Math.ceil(f/1e3)}):a("durationMinutesShort",{value:Math.ceil(f/6e4)})})})]},e)})})]})})}[g]=i.then?(await i)():i,a.s(["default",()=>j]),c()}catch(a){c(a)}},!1),265368,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(442308),h=a.i(292216),i=b([g]);function j(){let a=(0,e.useTranslations)("usage"),[b,c]=(0,f.useState)({count:0,sessions:[]}),[g,i]=(0,f.useState)(!0),j=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/sessions");a.ok&&c(await a.json())}catch{}finally{i(!1)}},[]);return(0,f.useEffect)(()=>{j();let a=setInterval(j,5e3);return()=>clearInterval(a)},[j]),(0,d.jsxs)(h.Card,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-5",children:[(0,d.jsx)("div",{className:"p-2 rounded-lg bg-cyan-500/10 text-cyan-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:"fingerprint"})}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold",children:a("activeSessions")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:a("sessionsTrackedHint")})]}),(0,d.jsx)("div",{className:"flex items-center gap-2",children:(0,d.jsxs)("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-full bg-cyan-500/10 border border-cyan-500/20",children:[(0,d.jsx)("span",{className:"w-2 h-2 rounded-full bg-cyan-500 animate-pulse"}),(0,d.jsx)("span",{className:"text-sm font-semibold tabular-nums text-cyan-400",children:b.count})]})})]}),0===b.sessions.length?(0,d.jsxs)("div",{className:"text-center py-8 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[40px] mb-2 block opacity-40","aria-hidden":"true",children:"fingerprint"}),(0,d.jsx)("p",{className:"text-sm",children:a("noSessions")}),(0,d.jsx)("p",{className:"text-xs mt-1",children:a("sessionsHint")})]}):(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"w-full text-sm",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{className:"border-b border-border/30",children:[(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("session")}),(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("age")}),(0,d.jsx)("th",{className:"text-right py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("requests")}),(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("connection")})]})}),(0,d.jsx)("tbody",{children:b.sessions.map(b=>{var c;return(0,d.jsxs)("tr",{className:"border-b border-border/10 hover:bg-surface/20 transition-colors",children:[(0,d.jsx)("td",{className:"py-2.5 px-3",children:(0,d.jsxs)("span",{className:"font-mono text-xs px-2 py-1 rounded bg-surface/40 text-text-muted",children:[b.sessionId.slice(0,12),"…"]})}),(0,d.jsx)("td",{className:"py-2.5 px-3 text-text-muted tabular-nums",children:(c=b.ageMs)<6e4?a("durationSecondsShort",{value:Math.floor(c/1e3)}):c<36e5?a("durationMinutesShort",{value:Math.floor(c/6e4)}):a("durationHoursShort",{value:Math.floor(c/36e5)})}),(0,d.jsx)("td",{className:"py-2.5 px-3 text-right",children:(0,d.jsx)("span",{className:"font-semibold tabular-nums",children:b.requestCount})}),(0,d.jsx)("td",{className:"py-2.5 px-3",children:b.connectionId?(0,d.jsx)("span",{className:"text-xs font-mono text-cyan-400",children:b.connectionId.slice(0,10)}):(0,d.jsx)("span",{className:"text-text-muted/40",children:a("notAvailableSymbol")})})]},b.sessionId)})})]})})]})}[g]=i.then?(await i)():i,a.s(["default",()=>j]),c()}catch(a){c(a)}},!1),876251,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(572131),f=a.i(442308),g=a.i(831097),h=a.i(280382),i=a.i(250870),j=a.i(265368),k=b([f,h,i,j]);function l(){return(0,d.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)(g.CardSkeleton,{}),children:(0,d.jsx)(h.default,{})}),(0,d.jsx)(j.default,{}),(0,d.jsx)(i.default,{})]})}[f,h,i,j]=k.then?(await k)():k,a.s(["default",()=>l]),c()}catch(a){c(a)}},!1)];
1
+ module.exports=[604593,a=>{"use strict";var b=a.i(911655),c=a.i(745718);function d(a,b){return b&&0!==b?!a||a<0?100:a>=b?0:Math.round((b-a)/b*100):0}function e(a,b={},d={}){let f=Number(b?.used||0),g=Number(b?.total||0),h=b?.resetAt||null,i=function(a){if(!a)return!1;let b="number"==typeof a?a:"string"==typeof a?Date.parse(a):NaN;return!!Number.isFinite(b)&&Date.now()>=b}(h),j=i?0:f,k=Number.isFinite(g)?g:0,l=(0,c.safePercentage)(b?.remainingPercentage),m=i&&k>0?100:void 0!==l?l:void 0;return{name:a,used:Number.isFinite(j)?j:0,total:k,resetAt:h,staleAfterReset:i,...void 0!==m?{remainingPercentage:m}:{},...d}}function f(a,c){if(!c||"object"!=typeof c)return[];let d=[];try{switch(a.toLowerCase()){case"github":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{(!b?.unlimited||b?.total&&!(b.total<=0))&&d.push(e(a,b))});break;case"antigravity":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(b.displayName||a,b,{modelKey:a}))});break;case"codex":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;case"kiro":c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;case"claude":c.message?d.push({name:"error",used:0,total:0,resetAt:null,message:c.message}):c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))});break;default:c.quotas&&Object.entries(c.quotas).forEach(([a,b])=>{d.push(e(a,b))})}}catch(b){return console.error(`Error parsing quota data for ${a}:`,b),[]}let f=(0,b.getModelsByProviderId)(a);if(f.length>0){let a=new Map(f.map((a,b)=>[a.id,b]));d.sort((b,c)=>{let d=b.modelKey||b.name,e=c.modelKey||c.name;return(a.get(d)??999)-(a.get(e)??999)})}return d}function g(a){let b="string"==typeof a?a.trim():"";if(!b)return{key:"unknown",label:"Unknown",variant:"default",rank:0,raw:null};let c=b.toUpperCase();return"CLAUDE CODE"===c||"KIMI CODING"===c||"KIRO"===c?{key:"unknown",label:b,variant:"default",rank:0,raw:b}:c.includes("PRO+")||c.includes("PRO PLUS")||c.includes("PROPLUS")?{key:"plus",label:"Pro+",variant:"secondary",rank:4,raw:b}:c.includes("ENTERPRISE")||c.includes("CORP")||c.includes("ORG")?{key:"enterprise",label:"Enterprise",variant:"info",rank:7,raw:b}:c.includes("TEAM")||c.includes("CHATGPTTEAM")?{key:"team",label:"Team",variant:"info",rank:6,raw:b}:c.includes("BUSINESS")||c.includes("STANDARD")||c.includes("BIZ")?{key:"business",label:"Business",variant:"warning",rank:5,raw:b}:c.includes("STUDENT")?{key:"pro",label:"Student",variant:"primary",rank:3,raw:b}:c.includes("ULTRA")?{key:"ultra",label:"Ultra",variant:"success",rank:4,raw:b}:c.includes("PRO")||c.includes("PREMIUM")?{key:"pro",label:"Pro",variant:"primary",rank:3,raw:b}:c.includes("PLUS")||c.includes("PAID")?{key:"plus",label:"Plus",variant:"secondary",rank:2,raw:b}:c.includes("FREE")||c.includes("BASIC")||c.includes("TRIAL")||c.includes("LEGACY")?{key:"free",label:"Free",variant:"default",rank:1,raw:b}:{key:"unknown",label:b.toLowerCase().split(/[\s_-]+/).map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" ")||"Unknown",variant:"default",rank:0,raw:b}}a.s(["calculatePercentage",()=>d,"normalizePlanTier",()=>g,"parseQuotaData",()=>f])},280382,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(571987),h=a.i(604593),i=a.i(436595),j=a.i(497160),k=a.i(831097),l=a.i(662073),m=b([l]);[l]=m.then?(await m)():m;let o="omniroute:limits:expandedGroups",p={antigravity:{label:"Antigravity",color:"#F59E0B"},github:{label:"GitHub Copilot",color:"#333"},kiro:{label:"Kiro AI",color:"#FF6B35"},codex:{label:"OpenAI Codex",color:"#10A37F"},claude:{label:"Claude Code",color:"#D97757"},glm:{label:"GLM (Z.AI)",color:"#4A90D9"},"kimi-coding":{label:"Kimi Coding",color:"#1E3A8A"}},q=[{key:"all",labelKey:"tierAll"},{key:"enterprise",labelKey:"tierEnterprise"},{key:"team",labelKey:"tierTeam"},{key:"business",labelKey:"tierBusiness"},{key:"ultra",labelKey:"tierUltra"},{key:"pro",labelKey:"tierPro"},{key:"plus",labelKey:"tierPlus"},{key:"free",labelKey:"tierFree"},{key:"unknown",labelKey:"tierUnknown"}];function n(){let a,b=(0,e.useTranslations)("usage"),[c,m]=(0,f.useState)([]),[n,r]=(0,f.useState)({}),[s,t]=(0,f.useState)({}),[u,v]=(0,f.useState)({}),[w,x]=(0,f.useState)(()=>!1),[y,z]=(0,f.useState)(null),[A,B]=(0,f.useState)(!1),[C,D]=(0,f.useState)(120),[E,F]=(0,f.useState)(!0),[G,H]=(0,f.useState)("all"),[I,J]=(0,f.useState)(()=>"none"),[K,L]=(0,f.useState)(()=>new Set),M=(0,f.useRef)(null),N=(0,f.useRef)(null),O=(0,f.useRef)({}),P=(0,f.useRef)({}),Q=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/providers/client");if(!a.ok)throw Error("Failed");let b=(await a.json()).connections||[];return m(b),b}catch{return m([]),[]}},[]),R=(0,f.useCallback)(async(a,b,c={})=>{let d=c?.force===!0,e=Date.now(),f=O.current[a]||0;if(d||!(e-f<3e4)){O.current[a]=e,t(b=>({...b,[a]:!0})),v(b=>({...b,[a]:null}));try{let c=await fetch(`/api/usage/${a}`);if(!c.ok){let b=(await c.json().catch(()=>({}))).error||c.statusText;if(404===c.status)return;if(401===c.status)return void r(c=>({...c,[a]:{quotas:[],message:b}}));throw Error(`HTTP ${c.status}: ${b}`)}let d=await c.json(),e=(0,h.parseQuotaData)(b,d);if(e.some(a=>a?.staleAfterReset===!0)){let c=P.current[a]||0;Date.now()-c>=3e4&&(P.current[a]=Date.now(),setTimeout(()=>{R(a,b,{force:!0}).catch(()=>{})},5e3))}r(b=>({...b,[a]:{quotas:e,plan:d.plan||null,message:d.message||null,raw:d}}))}catch(b){v(c=>({...c,[a]:b.message||"Failed to fetch quota"}))}finally{t(b=>({...b,[a]:!1}))}}},[]),S=(0,f.useCallback)(async(a,b)=>{await R(a,b),z(new Date)},[R]),T=(0,f.useCallback)(async()=>{if(!A){B(!0),D(120);try{let a=(await Q()).filter(a=>l.USAGE_SUPPORTED_PROVIDERS.includes(a.provider)&&("oauth"===a.authType||"apikey"===a.authType));await Promise.all(a.map(a=>R(a.id,a.provider))),z(new Date)}catch(a){console.error("Error refreshing all:",a)}finally{B(!1)}}},[A,Q,R]);(0,f.useEffect)(()=>{(async()=>{F(!0),await T(),F(!1)})()},[]),(0,f.useEffect)(()=>{if(!w){M.current&&clearInterval(M.current),N.current&&clearInterval(N.current);return}return M.current=setInterval(T,12e4),N.current=setInterval(()=>{D(a=>a<=1?120:a-1)},1e3),()=>{M.current&&clearInterval(M.current),N.current&&clearInterval(N.current)}},[w,T]),(0,f.useEffect)(()=>{let a=()=>{document.hidden?(M.current&&clearInterval(M.current),N.current&&clearInterval(N.current)):w&&(M.current=setInterval(T,12e4),N.current=setInterval(()=>{D(a=>a<=1?120:a-1)},1e3))};return document.addEventListener("visibilitychange",a),()=>document.removeEventListener("visibilitychange",a)},[w,T]);let U=(0,f.useMemo)(()=>c.filter(a=>l.USAGE_SUPPORTED_PROVIDERS.includes(a.provider)&&("oauth"===a.authType||"apikey"===a.authType)),[c]),V=(0,f.useMemo)(()=>{let a={antigravity:1,github:2,codex:3,claude:4,kiro:5,glm:6,"kimi-coding":7};return[...U].sort((b,c)=>(a[b.provider]||9)-(a[c.provider]||9))},[U]),W=(0,f.useMemo)(()=>{let a={};for(let b of V)a[b.id]=(0,h.normalizePlanTier)(n[b.id]?.plan);return a},[V,n]),X=(0,f.useMemo)(()=>{let a={all:V.length,enterprise:0,team:0,business:0,ultra:0,pro:0,free:0,unknown:0};for(let b of V){let c=W[b.id]?.key||"unknown";a[c]=(a[c]||0)+1}return a},[V,W]),Y=(0,f.useMemo)(()=>"all"===G?V:V.filter(a=>(W[a.id]?.key||"unknown")===G),[V,W,G]),Z=(0,f.useMemo)(()=>{if("environment"!==I)return null;let a=new Map;for(let c of Y){let d=c.providerSpecificData?.tag?.trim()||b("ungrouped");a.has(d)||a.set(d,[]),a.get(d).push(c)}return new Map([...a.entries()].sort(([a],[c])=>a===b("ungrouped")?1:c===b("ungrouped")?-1:a.localeCompare(c)))},[I,Y,b]),$=a=>{J(a),localStorage.setItem("omniroute:limits:groupBy",a)};return((0,f.useEffect)(()=>{},[c]),(0,f.useEffect)(()=>{if("environment"===I&&Z&&0===K.size){let a=new Set([...Z.keys()]);L(a),localStorage.setItem(o,JSON.stringify([...a]))}},[I,Z]),E)?(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(k.CardSkeleton,{}),(0,d.jsx)(k.CardSkeleton,{})]}):0===V.length?(0,d.jsx)(i.default,{padding:"lg",children:(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[64px] opacity-15",children:"cloud_off"}),(0,d.jsx)("h3",{className:"mt-4 text-lg font-semibold text-text-main",children:b("noProviders")}),(0,d.jsx)("p",{className:"mt-2 text-sm text-text-muted max-w-[400px] mx-auto",children:b("connectProvidersForQuota")})]})}):(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold text-text-main m-0",children:b("providerLimits")}),(0,d.jsxs)("span",{className:"text-[13px] text-text-muted",children:[b("accountsCount",{count:Y.length}),Y.length!==V.length&&` ${b("filteredFromCount",{count:V.length})}`]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("div",{className:"flex rounded-lg border border-border overflow-hidden",children:[(0,d.jsx)("button",{onClick:()=>$("none"),className:"px-2.5 py-1.5 text-[12px] font-medium cursor-pointer border-none",style:{background:"none"===I?"var(--color-bg-subtle)":"transparent",color:"none"===I?"var(--color-text-main)":"var(--color-text-muted)"},children:b("viewFlat")}),(0,d.jsx)("button",{onClick:()=>$("environment"),className:"px-2.5 py-1.5 text-[12px] font-medium cursor-pointer border-none",style:{background:"environment"===I?"var(--color-bg-subtle)":"transparent",color:"environment"===I?"var(--color-text-main)":"var(--color-text-muted)",borderLeft:"1px solid var(--color-border)"},children:b("viewByEnvironment")})]}),(0,d.jsxs)("button",{onClick:()=>{let a=!w;x(a),localStorage.setItem("omniroute:limits:autoRefresh",String(a))},className:"flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-transparent cursor-pointer text-text-main text-[13px]",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:w?"#22c55e":"var(--text-muted)"},children:w?"toggle_on":"toggle_off"}),b("autoRefresh"),w&&(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["(",C,"s)"]})]}),(0,d.jsxs)("button",{onClick:T,disabled:A,className:"flex items-center gap-1.5 px-3.5 py-1.5 rounded-lg bg-bg-subtle border border-border text-text-main text-[13px] disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer",children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-[16px] ${A?"animate-spin":""}`,children:"refresh"}),b("refreshAll")]})]})]}),(0,d.jsx)("div",{className:"flex items-center gap-2 flex-wrap",children:q.map(a=>{if("all"!==a.key&&!X[a.key])return null;let c=G===a.key;return(0,d.jsxs)("button",{onClick:()=>H(a.key),className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-semibold cursor-pointer",style:{border:c?"1px solid var(--color-primary, #E54D5E)":"1px solid var(--color-border)",background:c?"rgba(229,77,94,0.1)":"transparent",color:c?"var(--color-primary, #E54D5E)":"var(--color-text-muted)"},children:[(0,d.jsx)("span",{children:b(a.labelKey)}),(0,d.jsx)("span",{className:"opacity-85",children:X[a.key]||0})]},a.key)})}),(0,d.jsxs)("div",{className:"rounded-xl border border-border overflow-hidden bg-surface",children:[(0,d.jsxs)("div",{className:"items-center px-4 py-2.5 border-b border-border text-[11px] font-semibold uppercase tracking-wider text-text-muted",style:{display:"grid",gridTemplateColumns:"280px 1fr 100px 48px"},children:[(0,d.jsx)("div",{children:b("account")}),(0,d.jsx)("div",{children:b("modelQuotas")}),(0,d.jsx)("div",{className:"text-center",children:b("lastUsed")}),(0,d.jsx)("div",{className:"text-center",children:b("actions")})]}),(a=(a,c)=>{let e=n[a.id],f=s[a.id],i=u[a.id],k=p[a.provider]||{label:a.provider,color:"#666"},l=W[a.id]||(0,h.normalizePlanTier)(null);return(0,d.jsxs)("div",{className:"items-center px-4 py-3.5 transition-[background] duration-150 hover:bg-black/[0.03] dark:hover:bg-white/[0.02]",style:{display:"grid",gridTemplateColumns:"280px 1fr 100px 48px",borderBottom:c?"none":"1px solid var(--color-border)"},children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5 min-w-0",children:[(0,d.jsx)("div",{className:"w-8 h-8 rounded-lg flex items-center justify-center overflow-hidden shrink-0",children:(0,d.jsx)(g.default,{src:`/providers/${a.provider}.png`,alt:a.provider,width:32,height:32,className:"object-contain",sizes:"32px"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("div",{className:"text-[13px] font-semibold text-text-main truncate",children:a.name||k.label}),(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mt-0.5",children:[(0,d.jsx)("span",{title:e?.plan?b("rawPlanWithValue",{plan:e.plan}):b("noPlanFromProvider"),children:(0,d.jsx)(j.default,{variant:l.variant,size:"sm",dot:!0,children:l.label})}),(0,d.jsx)("span",{className:"text-[11px] text-text-muted",children:k.label})]})]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-x-3 gap-y-1.5 pr-3",children:f?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-text-muted text-xs",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-[14px]",children:"progress_activity"}),b("loadingQuotas")]}):i?(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-red-500",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,d.jsx)("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap max-w-[300px]",children:i})]}):e?.message&&(!e.quotas||0===e.quotas.length)?(0,d.jsx)("div",{className:"text-xs text-text-muted italic",children:e.message}):e?.quotas?.length>0?e.quotas.map((a,b)=>{var c;let e=void 0!==a.remainingPercentage?Math.round(a.remainingPercentage):(0,h.calculatePercentage)(a.used,a.total),f=e>70?{bar:"#22c55e",text:"#22c55e",bg:"rgba(34,197,94,0.12)"}:e>=30?{bar:"#eab308",text:"#eab308",bg:"rgba(234,179,8,0.12)"}:{bar:"#ef4444",text:"#ef4444",bg:"rgba(239,68,68,0.12)"},g=function(a){if(!a)return null;try{let b=new Date(a)-new Date;if(b<=0)return null;let c=Math.floor(b/36e5),d=Math.floor(b%36e5/6e4);if(c>=24){let a=Math.floor(c/24);return`${a}d ${c%24}h`}return`${c}h ${d}m`}catch{return null}}(a.resetAt),i={"gemini-3-pro-high":"G3 Pro","gemini-3-pro-low":"G3 Pro Low","gemini-3-flash":"G3 Flash","gemini-2.5-flash":"G2.5 Flash","claude-opus-4-6-thinking":"Opus 4.6 Tk","claude-opus-4-5-thinking":"Opus 4.5 Tk","claude-opus-4-5":"Opus 4.5","claude-sonnet-4-5-thinking":"Sonnet 4.5 Tk","claude-sonnet-4-5":"Sonnet 4.5",chat:"Chat",completions:"Completions",premium_interactions:"Premium",session:"Session",weekly:"Weekly",agentic_request:"Agentic",agentic_request_freetrial:"Agentic (Trial)"}[c=a.name]||c,j=!0===a.staleAfterReset;return(0,d.jsxs)("div",{className:"flex items-center gap-1.5 min-w-[200px] shrink-0",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold py-0.5 px-2 rounded whitespace-nowrap min-w-[60px] text-center",style:{background:f.bg,color:f.text},children:i}),j?(0,d.jsx)("span",{className:"text-[10px] text-text-muted whitespace-nowrap",children:"⟳ Refreshing..."}):g?(0,d.jsxs)("span",{className:"text-[10px] text-text-muted whitespace-nowrap",children:["⏱ ",g]}):null,(0,d.jsx)("div",{className:"flex-1 h-1.5 rounded-sm bg-black/[0.06] dark:bg-white/[0.06] min-w-[60px] overflow-hidden",children:(0,d.jsx)("div",{className:"h-full rounded-sm transition-[width] duration-300 ease-out",style:{width:`${Math.min(e,100)}%`,background:f.bar}})}),(0,d.jsxs)("span",{className:"text-[11px] font-semibold min-w-[32px] text-right",style:{color:f.text},children:[e,"%"]})]},b)}):(0,d.jsx)("div",{className:"text-xs text-text-muted italic",children:b("noQuotaData")})}),(0,d.jsx)("div",{className:"text-center text-[11px] text-text-muted",children:y?(0,d.jsx)("span",{children:y.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}):"-"}),(0,d.jsx)("div",{className:"flex justify-center gap-0.5",children:(0,d.jsx)("button",{onClick:()=>S(a.id,a.provider),disabled:f,title:b("refreshQuota"),className:"p-1 rounded-md border-none bg-transparent cursor-pointer disabled:cursor-not-allowed disabled:opacity-30 opacity-60 hover:opacity-100 flex items-center justify-center transition-opacity duration-150",children:(0,d.jsx)("span",{className:`material-symbols-outlined text-[16px] text-text-muted ${f?"animate-spin":""}`,children:"refresh"})})})]},a.id)},Z?[...Z.entries()].map(([b,c])=>(0,d.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden mb-2",children:[(0,d.jsxs)("button",{onClick:()=>{L(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),localStorage.setItem(o,JSON.stringify([...c])),c})},className:"w-full flex items-center gap-2 px-4 py-2.5 bg-bg-subtle hover:bg-black/[0.04] dark:hover:bg-white/[0.05] transition-colors text-left border-none cursor-pointer",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:K.has(b)?"expand_less":"expand_more"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-text-muted",children:"folder"}),(0,d.jsx)("span",{className:"text-[12px] font-semibold text-text-main uppercase tracking-wider flex-1",children:b}),(0,d.jsx)("span",{className:"text-[11px] text-text-muted bg-black/[0.04] dark:bg-white/[0.06] px-2 py-0.5 rounded-full",children:c.length})]}),K.has(b)&&(0,d.jsx)("div",{children:c.map((b,d)=>a(b,d===c.length-1))})]},b)):Y.map((b,c)=>a(b,c===Y.length-1))),0===Y.length&&(0,d.jsxs)("div",{className:"py-6 px-4 text-center text-text-muted text-[13px]",children:[b("noAccountsForTierFilter")," ",(0,d.jsx)("strong",{children:b(q.find(a=>a.key===G)?.labelKey||"tierUnknown")}),"."]})]})]})}a.s(["default",()=>n]),c()}catch(a){c(a)}},!1),250870,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(442308),h=a.i(292216),i=b([g]);function j(){let a=(0,e.useTranslations)("usage"),b=(0,e.useTranslations)("common"),[c,g]=(0,f.useState)({lockouts:[],cacheStats:null}),[i,j]=(0,f.useState)(!0),k=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/rate-limits");a.ok&&g(await a.json())}catch{}finally{j(!1)}},[]);return(0,f.useEffect)(()=>{k();let a=setInterval(k,1e4);return()=>clearInterval(a)},[k]),(0,d.jsx)("div",{className:"flex flex-col gap-4",children:(0,d.jsxs)(h.Card,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,d.jsx)("div",{className:"p-2 rounded-lg bg-orange-500/10 text-orange-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:"lock_clock"})}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold",children:a("modelLockouts")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:a("lockoutsAutoRefreshHint")})]}),c.lockouts.length>0&&(0,d.jsx)("span",{className:"px-2.5 py-1 rounded-full text-xs font-semibold bg-orange-500/10 text-orange-400 border border-orange-500/20",children:a("lockedCount",{count:c.lockouts.length})})]}),0===c.lockouts.length?(0,d.jsxs)("div",{className:"text-center py-6 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px] mb-2 block opacity-40","aria-hidden":"true",children:"lock_open"}),(0,d.jsx)("p",{className:"text-sm",children:a("noLockouts")})]}):(0,d.jsx)("div",{className:"flex flex-col gap-2",children:c.lockouts.map((c,e)=>{var f;return(0,d.jsxs)("div",{className:"flex items-center justify-between px-3 py-2.5 rounded-lg bg-orange-500/5 border border-orange-500/15",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] text-orange-400","aria-hidden":"true",children:"lock"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:c.model}),(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:[a("account"),":"," ",(0,d.jsx)("span",{className:"font-mono",children:c.accountId?.slice(0,12)||b("none")}),c.reason&&(0,d.jsxs)(d.Fragment,{children:[a("reasonSeparator"),c.reason]})]})]})]}),(0,d.jsx)("span",{className:"text-xs font-mono tabular-nums text-orange-400",children:a("timeLeft",{time:(f=c.remainingMs)<1e3?a("durationMillisecondsShort",{value:f}):f<6e4?a("durationSecondsShort",{value:Math.ceil(f/1e3)}):a("durationMinutesShort",{value:Math.ceil(f/6e4)})})})]},e)})})]})})}[g]=i.then?(await i)():i,a.s(["default",()=>j]),c()}catch(a){c(a)}},!1),265368,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(442308),h=a.i(292216),i=b([g]);function j(){let a=(0,e.useTranslations)("usage"),[b,c]=(0,f.useState)({count:0,sessions:[]}),[g,i]=(0,f.useState)(!0),j=(0,f.useCallback)(async()=>{try{let a=await fetch("/api/sessions");a.ok&&c(await a.json())}catch{}finally{i(!1)}},[]);return(0,f.useEffect)(()=>{j();let a=setInterval(j,5e3);return()=>clearInterval(a)},[j]),(0,d.jsxs)(h.Card,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-5",children:[(0,d.jsx)("div",{className:"p-2 rounded-lg bg-cyan-500/10 text-cyan-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:"fingerprint"})}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold",children:a("activeSessions")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:a("sessionsTrackedHint")})]}),(0,d.jsx)("div",{className:"flex items-center gap-2",children:(0,d.jsxs)("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-full bg-cyan-500/10 border border-cyan-500/20",children:[(0,d.jsx)("span",{className:"w-2 h-2 rounded-full bg-cyan-500 animate-pulse"}),(0,d.jsx)("span",{className:"text-sm font-semibold tabular-nums text-cyan-400",children:b.count})]})})]}),0===b.sessions.length?(0,d.jsxs)("div",{className:"text-center py-8 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[40px] mb-2 block opacity-40","aria-hidden":"true",children:"fingerprint"}),(0,d.jsx)("p",{className:"text-sm",children:a("noSessions")}),(0,d.jsx)("p",{className:"text-xs mt-1",children:a("sessionsHint")})]}):(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"w-full text-sm",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{className:"border-b border-border/30",children:[(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("session")}),(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("age")}),(0,d.jsx)("th",{className:"text-right py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("requests")}),(0,d.jsx)("th",{className:"text-left py-2 px-3 text-xs font-semibold text-text-muted uppercase tracking-wider",children:a("connection")})]})}),(0,d.jsx)("tbody",{children:b.sessions.map(b=>{var c;return(0,d.jsxs)("tr",{className:"border-b border-border/10 hover:bg-surface/20 transition-colors",children:[(0,d.jsx)("td",{className:"py-2.5 px-3",children:(0,d.jsxs)("span",{className:"font-mono text-xs px-2 py-1 rounded bg-surface/40 text-text-muted",children:[b.sessionId.slice(0,12),"…"]})}),(0,d.jsx)("td",{className:"py-2.5 px-3 text-text-muted tabular-nums",children:(c=b.ageMs)<6e4?a("durationSecondsShort",{value:Math.floor(c/1e3)}):c<36e5?a("durationMinutesShort",{value:Math.floor(c/6e4)}):a("durationHoursShort",{value:Math.floor(c/36e5)})}),(0,d.jsx)("td",{className:"py-2.5 px-3 text-right",children:(0,d.jsx)("span",{className:"font-semibold tabular-nums",children:b.requestCount})}),(0,d.jsx)("td",{className:"py-2.5 px-3",children:b.connectionId?(0,d.jsx)("span",{className:"text-xs font-mono text-cyan-400",children:b.connectionId.slice(0,10)}):(0,d.jsx)("span",{className:"text-text-muted/40",children:a("notAvailableSymbol")})})]},b.sessionId)})})]})})]})}[g]=i.then?(await i)():i,a.s(["default",()=>j]),c()}catch(a){c(a)}},!1),876251,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(572131),f=a.i(442308),g=a.i(831097),h=a.i(280382),i=a.i(250870),j=a.i(265368),k=b([f,h,i,j]);function l(){return(0,d.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)(g.CardSkeleton,{}),children:(0,d.jsx)(h.default,{})}),(0,d.jsx)(j.default,{}),(0,d.jsx)(i.default,{})]})}[f,h,i,j]=k.then?(await k)():k,a.s(["default",()=>l]),c()}catch(a){c(a)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=src_app_%28dashboard%29_dashboard_936a9ee0._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[221844,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(572131),f=a.i(442308),g=a.i(292216),h=a.i(294023),i=a.i(525290),j=a.i(818465),k=a.i(819721),l=b([f]);[f]=l.then?(await l)():l;let p=(0,k.default)(async()=>{},{loadableGenerated:{modules:[467211]},ssr:!1}),q=(0,k.default)(async()=>{},{loadableGenerated:{modules:[896009]},ssr:!1}),r=[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses"},{value:"images",label:"Image Generation"},{value:"embeddings",label:"Embeddings"},{value:"speech",label:"Text to Speech"},{value:"transcription",label:"Audio Transcription"},{value:"video",label:"Video Generation"},{value:"music",label:"Music Generation"},{value:"rerank",label:"Rerank"},{value:"search",label:"Web Search"}],s={chat:{model:"",messages:[{role:"user",content:"Hello! Say hi in one sentence."}],max_tokens:100,stream:!1},responses:{model:"",input:"Hello! Say hi in one sentence.",stream:!1},images:{model:"",prompt:"A beautiful sunset over mountains",n:1,size:"1024x1024"},embeddings:{model:"",input:"Hello world",encoding_format:"float"},speech:{model:"openai/tts-1",input:"Hello, this is a test of the text-to-speech endpoint.",voice:"alloy",response_format:"mp3"},transcription:{model:"deepgram/nova-3",language:"en"},video:{model:"comfyui/animatediff",prompt:"A timelapse of a sunset over the ocean",n:1},music:{model:"comfyui/stable-audio",prompt:"Calm ambient piano music with soft reverb",duration:10},rerank:{model:"cohere/rerank-english-v3.0",query:"What is the capital of France?",documents:["Paris is the capital of France.","London is the capital of England.","Berlin is the capital of Germany."],top_n:2},search:{query:"latest AI developments",max_results:5,search_type:"web"}},t={chat:"/v1/chat/completions",responses:"/v1/responses",images:"/v1/images/generations",embeddings:"/v1/embeddings",speech:"/v1/audio/speech",transcription:"/v1/audio/transcriptions",video:"/v1/videos/generations",music:"/v1/music/generations",rerank:"/v1/rerank",search:"/v1/search"},u=["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-4-vision","claude-3","claude-sonnet","claude-opus","claude-haiku","gemini","llava","bakllava","pixtral","qwen-vl","qvq","mistral-pixtral"];async function m(a){return new Promise((b,c)=>{let d=new FileReader;d.onload=()=>b(d.result),d.onerror=c,d.readAsDataURL(a)})}function n({data:a}){let b=a?.data||[];return 0===b.length?null:(0,d.jsxs)("div",{className:"p-4 space-y-3",children:[(0,d.jsxs)("p",{className:"text-xs text-text-muted font-medium uppercase tracking-wider",children:[b.length," image",b.length>1?"s":""," generated"]}),(0,d.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:b.map((a,b)=>{let c=a.url||(a.b64_json?`data:image/png;base64,${a.b64_json}`:null);return c?(0,d.jsxs)("div",{className:"relative group rounded-lg overflow-hidden border border-border",children:[(0,d.jsx)("img",{src:c,alt:a.revised_prompt||`Generated image ${b+1}`,className:"w-full"}),(0,d.jsxs)("a",{href:c,download:`image-${b+1}.png`,className:"absolute bottom-2 right-2 bg-black/60 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"download"}),"Save"]})]},b):null})})]})}function o(){let a,[b,c]=(0,e.useState)([]),[f,k]=(0,e.useState)([]),[l,o]=(0,e.useState)([]),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)("chat"),[D,E]=(0,e.useState)(""),[F,G]=(0,e.useState)(""),[H,I]=(0,e.useState)(null),[J,K]=(0,e.useState)(null),[L,M]=(0,e.useState)(null),[N,O]=(0,e.useState)(!1),[P,Q]=(0,e.useState)(null),[R,S]=(0,e.useState)(null),T=(0,e.useRef)(null),[U,V]=(0,e.useState)(null),[W,X]=(0,e.useState)([]),Y="search"===B,Z="transcription"===B,$="images"===B,_="chat"===B&&(a=x.toLowerCase(),u.some(b=>a.includes(b))),aa=(0,e.useCallback)(a=>{if(!a){o([]),A("");return}fetch("/api/providers/client").then(a=>a.json()).then(b=>{let c=[];for(let d of b?.providers||[])if(d.id===a)for(let a of d.connections||[])c.push({id:a.id,name:a.name||a.id,provider:d.id,authType:a.authType||"apiKey"});o(c),A("")}).catch(()=>{o([]),A("")})},[]);(0,e.useEffect)(()=>{fetch("/v1/models").then(a=>a.json()).then(a=>{let b=a?.data||[];c(b);let d=new Set;b.forEach(a=>{let b=a.id.split("/");b.length>=2&&d.add(b[0])});let e=Array.from(d).sort().map(a=>({value:a,label:a}));k(e),e.length>0&&(w(e[0].value),aa(e[0].value))}).catch(()=>{})},[aa]);let ab=b.filter(a=>!v||a.id.startsWith(v+"/")).map(a=>({value:a.id,label:a.id})),ac=(a,b)=>{let c={...s[a]};return"model"in c&&(c.model=b),JSON.stringify(c,null,2)},ad=()=>{G(""),Q(null),S(null),I(null),K(null),M(null)},ae=async a=>{let b=Array.from(a.target.files||[]),c=await Promise.all(b.map(m));X(a=>[...a,...c].slice(0,4))},af=async()=>{if(!D.trim()&&!Z)return;O(!0),ad();let a=new AbortController;T.current=a;let b=Date.now();try{let c,d=t[B];if(Z){let b=new FormData;U&&b.append("file",U);try{let a=JSON.parse(D||"{}");for(let[c,d]of Object.entries(a))"file"!==c&&b.append(c,String(d))}catch{}let e={};z&&(e["X-OmniRoute-Connection"]=z),c=await fetch(`/api${d}`,{method:"POST",headers:e,body:b,signal:a.signal})}else{let b=JSON.parse(D);_&&W.length>0&&(b=((a,b)=>{if(!b.length)return a;let c=[...a.messages||[]];if(0===c.length)return a;let d=c[c.length-1],e="string"==typeof d.content?d.content:"";return c[c.length-1]={...d,content:[{type:"text",text:e},...b.map(a=>({type:"image_url",image_url:{url:a}}))]},{...a,messages:c}})(b,W));let e={"Content-Type":"application/json"};z&&(e["X-OmniRoute-Connection"]=z),c=await fetch(`/api${d}`,{method:"POST",headers:e,body:JSON.stringify(b),signal:a.signal})}Q(c.status),S(Date.now()-b);let e=c.headers.get("content-type")||"";if(e.startsWith("audio/")){let a=await c.blob(),b=URL.createObjectURL(a);I(b),G(`// Audio response (${e})
2
- // Click play below to listen.`)}else if(e.includes("text/event-stream")){let a=c.body?.getReader(),b=new TextDecoder,d="";if(a)for(;;){let{done:c,value:e}=await a.read();if(c)break;d+=b.decode(e,{stream:!0}),G(d)}}else{let a=await c.json();G(JSON.stringify(a,null,2)),$&&a?.data&&Array.isArray(a.data)&&c.ok&&K(a),Z&&"string"==typeof a?.text&&M(a.text||"(empty result — check provider credentials)")}}catch(a){"AbortError"===a.name?G(JSON.stringify({cancelled:!0},null,2)):G(JSON.stringify({error:a.message},null,2)),S(Date.now()-b)}O(!1)},ag=async a=>{try{await navigator.clipboard.writeText(a)}catch{}};return(0,d.jsxs)("div",{className:"space-y-5",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3 px-4 py-3 rounded-lg bg-primary/5 border border-primary/10 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary text-[20px] mt-0.5 shrink-0",children:"science"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium text-text-main mb-0.5",children:"Model Playground"}),(0,d.jsx)("p",{children:"Test any model directly from the dashboard. Pick a provider, model, and endpoint type, then send a request to see the raw response."})]})]}),(0,d.jsx)(g.Card,{children:(0,d.jsxs)("div",{className:"p-4 flex flex-col sm:flex-row items-end gap-4",children:[(0,d.jsxs)("div",{className:"flex-1 w-full",children:[(0,d.jsx)("label",{className:"block text-xs font-medium text-text-muted mb-1.5 uppercase tracking-wider",children:"Endpoint"}),(0,d.jsx)(i.Select,{value:B,onChange:a=>{var b;return b=a.target.value,void(C(b),E(ac(b,x)),V(null),X([]),ad())},options:r,className:"w-full"})]}),!Y&&(0,d.jsxs)("div",{className:"flex-1 w-full",children:[(0,d.jsx)("label",{className:"block text-xs font-medium text-text-muted mb-1.5 uppercase tracking-wider",children:"Provider"}),(0,d.jsx)(i.Select,{value:v,onChange:a=>{var c;let d;return c=a.target.value,w(c),A(""),aa(c),d=b.filter(a=>!c||a.id.startsWith(c+"/")).map(a=>a.id)[0]||"",void(y(d),E(ac(B,d)),ad())},options:f,className:"w-full"})]}),!Y&&(0,d.jsxs)("div",{className:"flex-1 w-full",children:[(0,d.jsx)("label",{className:"block text-xs font-medium text-text-muted mb-1.5 uppercase tracking-wider",children:"Model"}),(0,d.jsx)(i.Select,{value:x,onChange:a=>{var b;return b=a.target.value,void(y(b),E(ac(B,b)),ad())},options:ab,className:"w-full"})]}),!Y&&l.length>1&&(0,d.jsxs)("div",{className:"flex-1 w-full",children:[(0,d.jsx)("label",{className:"block text-xs font-medium text-text-muted mb-1.5 uppercase tracking-wider",children:"Account"}),(0,d.jsx)(i.Select,{value:z,onChange:a=>A(a.target.value),options:[{value:"",label:`All (${l.length} accounts)`},...l.map(a=>({value:a.id,label:a.name}))],className:"w-full"})]}),!Y&&(0,d.jsx)("div",{className:"shrink-0",children:N?(0,d.jsx)(h.Button,{icon:"stop",variant:"secondary",onClick:()=>{T.current&&T.current.abort()},children:"Cancel"}):(0,d.jsx)(h.Button,{icon:"send",onClick:af,disabled:!D.trim()&&!Z||!x&&!Z,children:"Send"})})]})}),Y?(0,d.jsx)(q,{}):(0,d.jsxs)(d.Fragment,{children:[(Z||_)&&(0,d.jsx)(g.Card,{children:(0,d.jsxs)("div",{className:"p-4 space-y-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:"attach_file"}),(0,d.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:Z?"Audio File":"Attach Images (Vision)"}),Z&&(0,d.jsx)(j.Badge,{variant:"info",size:"sm",children:"multipart/form-data"}),_&&(0,d.jsx)(j.Badge,{variant:"info",size:"sm",children:"up to 4 images"})]}),Z&&(0,d.jsxs)("div",{children:[(0,d.jsx)("input",{type:"file",accept:"audio/*,video/*",onChange:a=>{let b=a.target.files?.[0]??null;V(b)},className:"w-full px-3 py-2 rounded-lg bg-surface border border-border text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30 file:mr-3 file:py-1 file:px-3 file:rounded file:border-0 file:bg-primary/10 file:text-primary file:text-sm"}),U&&(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px] text-green-500",children:"check_circle"}),U.name," (",(U.size/1024).toFixed(0)," KB)"]}),!U&&(0,d.jsxs)("p",{className:"text-xs text-amber-500 mt-1 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"info"}),"Select an audio file to transcribe (mp3, wav, m4a, ogg, flac…)"]})]}),_&&(0,d.jsxs)("div",{children:[(0,d.jsx)("input",{type:"file",accept:"image/*",multiple:!0,onChange:ae,className:"w-full px-3 py-2 rounded-lg bg-surface border border-border text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30 file:mr-3 file:py-1 file:px-3 file:rounded file:border-0 file:bg-primary/10 file:text-primary file:text-sm"}),W.length>0&&(0,d.jsxs)("div",{className:"flex gap-2 mt-2 flex-wrap",children:[W.map((a,b)=>(0,d.jsxs)("div",{className:"relative group size-16 rounded overflow-hidden border border-border",children:[(0,d.jsx)("img",{src:a,alt:`Attached ${b+1}`,className:"w-full h-full object-cover"}),(0,d.jsx)("button",{onClick:()=>X(a=>a.filter((a,c)=>c!==b)),className:"absolute inset-0 bg-black/50 text-white opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"close"})})]},b)),(0,d.jsx)("button",{onClick:()=>X([]),className:"text-xs text-text-muted hover:text-red-500 self-center ml-1",children:"Clear all"})]})]})]})}),(0,d.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,d.jsx)(g.Card,{children:(0,d.jsxs)("div",{className:"p-4 space-y-3",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:"upload"}),(0,d.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Request"}),(0,d.jsxs)(j.Badge,{variant:"info",size:"sm",children:["POST ",t[B]]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsx)("button",{onClick:()=>ag(D),className:"p-1.5 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-text-main transition-colors",title:"Copy",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"content_copy"})}),(0,d.jsx)("button",{onClick:()=>{let a={...s[B]};"model"in a&&(a.model=x),E(JSON.stringify(a,null,2))},className:"p-1.5 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-text-main transition-colors",title:"Reset to default",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"restart_alt"})})]})]}),Z&&(0,d.jsxs)("p",{className:"text-xs text-text-muted bg-amber-500/10 border border-amber-500/20 rounded px-2 py-1.5 flex items-start gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px] text-amber-500 mt-0.5",children:"info"}),"Transcription uses multipart/form-data. Upload the audio file above — JSON below controls extra params (model, language)."]}),(0,d.jsx)("div",{className:"border border-border rounded-lg overflow-hidden",children:(0,d.jsx)(p,{height:"400px",defaultLanguage:"json",value:D,onChange:a=>E(a||""),theme:"vs-dark",options:{minimap:{enabled:!1},fontSize:12,lineNumbers:"on",scrollBeyondLastLine:!1,wordWrap:"on",automaticLayout:!0,formatOnPaste:!0}})})]})}),(0,d.jsx)(g.Card,{children:(0,d.jsxs)("div",{className:"p-4 space-y-3",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:"download"}),(0,d.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Response"}),null!==P&&(0,d.jsx)(j.Badge,{variant:P>=200&&P<300?"success":"error",size:"sm",children:P}),null!==R&&(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:[R,"ms"]}),N&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-primary animate-spin",children:"progress_activity"})]}),(0,d.jsx)("div",{className:"flex items-center gap-1",children:(0,d.jsx)("button",{onClick:()=>ag(F),className:"p-1.5 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-text-main transition-colors",title:"Copy",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"content_copy"})})})]}),(0,d.jsx)("div",{className:"border border-border rounded-lg overflow-hidden",children:H?(0,d.jsxs)("div",{className:"p-4 space-y-3",children:[(0,d.jsx)("audio",{controls:!0,src:H,className:"w-full rounded-lg",autoPlay:!0}),(0,d.jsxs)("a",{href:H,download:"speech.mp3",className:"inline-flex items-center gap-2 text-sm text-primary hover:underline",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"download"}),"Download audio"]})]}):J?(0,d.jsx)(n,{data:J}):null!==L?(0,d.jsxs)("div",{className:"p-4 space-y-2",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted font-medium uppercase tracking-wider",children:"Transcription"}),(0,d.jsx)("div",{className:"bg-surface/50 rounded p-3 text-sm text-text-main leading-relaxed whitespace-pre-wrap",children:L}),(0,d.jsxs)("button",{onClick:()=>ag(L),className:"text-xs text-primary hover:underline flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"content_copy"}),"Copy text"]})]}):(0,d.jsx)(p,{height:"400px",defaultLanguage:"json",value:F,theme:"vs-dark",options:{minimap:{enabled:!1},fontSize:12,lineNumbers:"on",scrollBeyondLastLine:!1,wordWrap:"on",automaticLayout:!0,readOnly:!0}})})]})})]})]})]})}a.s(["default",()=>o]),c()}catch(a){c(a)}},!1)];
1
+ module.exports=[221844,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(572131),f=a.i(442308),g=a.i(292216),h=a.i(294023),i=a.i(525290),j=a.i(818465),k=a.i(662073),l=a.i(819721),m=b([f,k]);[f,k]=m.then?(await m)():m;let q=(0,l.default)(async()=>{},{loadableGenerated:{modules:[467211]},ssr:!1}),r=(0,l.default)(async()=>{},{loadableGenerated:{modules:[896009]},ssr:!1}),s=[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses"},{value:"images",label:"Image Generation"},{value:"embeddings",label:"Embeddings"},{value:"speech",label:"Text to Speech"},{value:"transcription",label:"Audio Transcription"},{value:"video",label:"Video Generation"},{value:"music",label:"Music Generation"},{value:"rerank",label:"Rerank"},{value:"search",label:"Web Search"}],t={chat:{model:"",messages:[{role:"user",content:"Hello! Say hi in one sentence."}],max_tokens:100,stream:!1},responses:{model:"",input:"Hello! Say hi in one sentence.",stream:!1},images:{model:"",prompt:"A beautiful sunset over mountains",n:1,size:"1024x1024"},embeddings:{model:"",input:"Hello world",encoding_format:"float"},speech:{model:"openai/tts-1",input:"Hello, this is a test of the text-to-speech endpoint.",voice:"alloy",response_format:"mp3"},transcription:{model:"deepgram/nova-3",language:"en"},video:{model:"comfyui/animatediff",prompt:"A timelapse of a sunset over the ocean",n:1},music:{model:"comfyui/stable-audio",prompt:"Calm ambient piano music with soft reverb",duration:10},rerank:{model:"cohere/rerank-english-v3.0",query:"What is the capital of France?",documents:["Paris is the capital of France.","London is the capital of England.","Berlin is the capital of Germany."],top_n:2},search:{query:"latest AI developments",max_results:5,search_type:"web"}},u={chat:"/v1/chat/completions",responses:"/v1/responses",images:"/v1/images/generations",embeddings:"/v1/embeddings",speech:"/v1/audio/speech",transcription:"/v1/audio/transcriptions",video:"/v1/videos/generations",music:"/v1/music/generations",rerank:"/v1/rerank",search:"/v1/search"},v=["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-4-vision","claude-3","claude-sonnet","claude-opus","claude-haiku","gemini","llava","bakllava","pixtral","qwen-vl","qvq","mistral-pixtral"];async function n(a){return new Promise((b,c)=>{let d=new FileReader;d.onload=()=>b(d.result),d.onerror=c,d.readAsDataURL(a)})}function o({data:a}){let b=a?.data||[];return 0===b.length?null:(0,d.jsxs)("div",{className:"p-4 space-y-3",children:[(0,d.jsxs)("p",{className:"text-xs text-text-muted font-medium uppercase tracking-wider",children:[b.length," image",b.length>1?"s":""," generated"]}),(0,d.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:b.map((a,b)=>{let c=a.url||(a.b64_json?`data:image/png;base64,${a.b64_json}`:null);return c?(0,d.jsxs)("div",{className:"relative group rounded-lg overflow-hidden border border-border",children:[(0,d.jsx)("img",{src:c,alt:a.revised_prompt||`Generated image ${b+1}`,className:"w-full"}),(0,d.jsxs)("a",{href:c,download:`image-${b+1}.png`,className:"absolute bottom-2 right-2 bg-black/60 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"download"}),"Save"]})]},b):null})})]})}function p(){let a,[b,c]=(0,e.useState)([]),[f,l]=(0,e.useState)([]),[m,p]=(0,e.useState)([]),[w,x]=(0,e.useState)(""),[y,z]=(0,e.useState)(""),[A,B]=(0,e.useState)(""),[C,D]=(0,e.useState)("chat"),[E,F]=(0,e.useState)(""),[G,H]=(0,e.useState)(""),[I,J]=(0,e.useState)(null),[K,L]=(0,e.useState)(null),[M,N]=(0,e.useState)(null),[O,P]=(0,e.useState)(!1),[Q,R]=(0,e.useState)(null),[S,T]=(0,e.useState)(null),U=(0,e.useRef)(null),[V,W]=(0,e.useState)(null),[X,Y]=(0,e.useState)([]),Z="search"===C,$="transcription"===C,_="images"===C,aa="chat"===C&&(a=y.toLowerCase(),v.some(b=>a.includes(b))),ab=m.filter(a=>{if(!w)return!1;let b=k.ALIAS_TO_ID[w]||w;return a.provider===b||a.provider===w});(0,e.useEffect)(()=>{fetch("/v1/models").then(a=>a.json()).then(a=>{let b=a?.data||[];c(b);let d=new Set;b.forEach(a=>{let b=a.id.split("/");b.length>=2&&d.add(b[0])});let e=Array.from(d).sort().map(a=>({value:a,label:a}));l(e),e.length>0&&x(e[0].value)}).catch(()=>{}),fetch("/api/providers/client").then(a=>a.json()).then(a=>{let b=[];for(let c of a?.connections||[])b.push({id:c.id,name:c.name||c.email||c.id,provider:c.provider,authType:c.authType||"apiKey"});p(b)}).catch(()=>{})},[]);let ac=b.filter(a=>!w||a.id.startsWith(w+"/")).map(a=>({value:a.id,label:a.id})),ad=(a,b)=>{let c={...t[a]};return"model"in c&&(c.model=b),JSON.stringify(c,null,2)},ae=()=>{H(""),R(null),T(null),J(null),L(null),N(null)},af=async a=>{let b=Array.from(a.target.files||[]),c=await Promise.all(b.map(n));Y(a=>[...a,...c].slice(0,4))},ag=async()=>{if(!E.trim()&&!$)return;P(!0),ae();let a=new AbortController;U.current=a;let b=Date.now();try{let c,d=u[C];if($){let b=new FormData;V&&b.append("file",V);try{let a=JSON.parse(E||"{}");for(let[c,d]of Object.entries(a))"file"!==c&&b.append(c,String(d))}catch{}let e={};A&&(e["X-OmniRoute-Connection"]=A),c=await fetch(`/api${d}`,{method:"POST",headers:e,body:b,signal:a.signal})}else{let b=JSON.parse(E);aa&&X.length>0&&(b=((a,b)=>{if(!b.length)return a;let c=[...a.messages||[]];if(0===c.length)return a;let d=c[c.length-1],e="string"==typeof d.content?d.content:"";return c[c.length-1]={...d,content:[{type:"text",text:e},...b.map(a=>({type:"image_url",image_url:{url:a}}))]},{...a,messages:c}})(b,X));let e={"Content-Type":"application/json"};A&&(e["X-OmniRoute-Connection"]=A),c=await fetch(`/api${d}`,{method:"POST",headers:e,body:JSON.stringify(b),signal:a.signal})}R(c.status),T(Date.now()-b);let e=c.headers.get("content-type")||"";if(e.startsWith("audio/")){let a=await c.blob(),b=URL.createObjectURL(a);J(b),H(`// Audio response (${e})
2
+ // Click play below to listen.`)}else if(e.includes("text/event-stream")){let a=c.body?.getReader(),b=new TextDecoder,d="";if(a)for(;;){let{done:c,value:e}=await a.read();if(c)break;d+=b.decode(e,{stream:!0}),H(d)}}else{let a=await c.json();H(JSON.stringify(a,null,2)),_&&a?.data&&Array.isArray(a.data)&&c.ok&&L(a),$&&"string"==typeof a?.text&&N(a.text||"(empty result — check provider credentials)")}}catch(a){"AbortError"===a.name?H(JSON.stringify({cancelled:!0},null,2)):H(JSON.stringify({error:a.message},null,2)),T(Date.now()-b)}P(!1)},ah=async a=>{try{await navigator.clipboard.writeText(a)}catch{}};return(0,d.jsxs)("div",{className:"space-y-5",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3 px-4 py-3 rounded-lg bg-primary/5 border border-primary/10 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary text-[20px] mt-0.5 shrink-0",children:"science"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium text-text-main mb-0.5",children:"Model Playground"}),(0,d.jsx)("p",{children:"Test any model directly from the dashboard. Pick a provider, model, and endpoint type, then send a request to see the raw response."})]})]}),(0,d.jsx)(g.Card,{children:(0,d.jsxs)("div",{className:"p-4 flex flex-col sm:flex-row items-end gap-4",children:[(0,d.jsxs)("div",{className:"flex-1 w-full",children:[(0,d.jsx)("label",{className:"block text-xs font-medium text-text-muted mb-1.5 uppercase tracking-wider",children:"Endpoint"}),(0,d.jsx)(i.Select,{value:C,onChange:a=>{var b;return b=a.target.value,void(D(b),F(ad(b,y)),W(null),Y([]),ae())},options:s,className:"w-full"})]}),!Z&&(0,d.jsxs)("div",{className:"flex-1 w-full",children:[(0,d.jsx)("label",{className:"block text-xs font-medium text-text-muted mb-1.5 uppercase tracking-wider",children:"Provider"}),(0,d.jsx)(i.Select,{value:w,onChange:a=>{var c;let d;return c=a.target.value,x(c),B(""),d=b.filter(a=>!c||a.id.startsWith(c+"/")).map(a=>a.id)[0]||"",void(z(d),F(ad(C,d)),ae())},options:f,className:"w-full"})]}),!Z&&(0,d.jsxs)("div",{className:"flex-1 w-full",children:[(0,d.jsx)("label",{className:"block text-xs font-medium text-text-muted mb-1.5 uppercase tracking-wider",children:"Model"}),(0,d.jsx)(i.Select,{value:y,onChange:a=>{var b;return b=a.target.value,void(z(b),F(ad(C,b)),ae())},options:ac,className:"w-full"})]}),!Z&&(0,d.jsxs)("div",{className:"flex-1 w-full",children:[(0,d.jsx)("label",{className:"block text-xs font-medium text-text-muted mb-1.5 uppercase tracking-wider",children:"Account / Key"}),(0,d.jsx)(i.Select,{value:A,onChange:a=>B(a.target.value),options:[{value:"",label:ab.length>0?`Auto (${ab.length} accounts)`:"No accounts"},...ab.map(a=>({value:a.id,label:a.name}))],className:"w-full"})]}),!Z&&(0,d.jsx)("div",{className:"shrink-0",children:O?(0,d.jsx)(h.Button,{icon:"stop",variant:"secondary",onClick:()=>{U.current&&U.current.abort()},children:"Cancel"}):(0,d.jsx)(h.Button,{icon:"send",onClick:ag,disabled:!E.trim()&&!$||!y&&!$,children:"Send"})})]})}),Z?(0,d.jsx)(r,{}):(0,d.jsxs)(d.Fragment,{children:[($||aa)&&(0,d.jsx)(g.Card,{children:(0,d.jsxs)("div",{className:"p-4 space-y-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:"attach_file"}),(0,d.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:$?"Audio File":"Attach Images (Vision)"}),$&&(0,d.jsx)(j.Badge,{variant:"info",size:"sm",children:"multipart/form-data"}),aa&&(0,d.jsx)(j.Badge,{variant:"info",size:"sm",children:"up to 4 images"})]}),$&&(0,d.jsxs)("div",{children:[(0,d.jsx)("input",{type:"file",accept:"audio/*,video/*",onChange:a=>{let b=a.target.files?.[0]??null;W(b)},className:"w-full px-3 py-2 rounded-lg bg-surface border border-border text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30 file:mr-3 file:py-1 file:px-3 file:rounded file:border-0 file:bg-primary/10 file:text-primary file:text-sm"}),V&&(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px] text-green-500",children:"check_circle"}),V.name," (",(V.size/1024).toFixed(0)," KB)"]}),!V&&(0,d.jsxs)("p",{className:"text-xs text-amber-500 mt-1 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"info"}),"Select an audio file to transcribe (mp3, wav, m4a, ogg, flac…)"]})]}),aa&&(0,d.jsxs)("div",{children:[(0,d.jsx)("input",{type:"file",accept:"image/*",multiple:!0,onChange:af,className:"w-full px-3 py-2 rounded-lg bg-surface border border-border text-text-main text-sm focus:outline-none focus:ring-2 focus:ring-primary/30 file:mr-3 file:py-1 file:px-3 file:rounded file:border-0 file:bg-primary/10 file:text-primary file:text-sm"}),X.length>0&&(0,d.jsxs)("div",{className:"flex gap-2 mt-2 flex-wrap",children:[X.map((a,b)=>(0,d.jsxs)("div",{className:"relative group size-16 rounded overflow-hidden border border-border",children:[(0,d.jsx)("img",{src:a,alt:`Attached ${b+1}`,className:"w-full h-full object-cover"}),(0,d.jsx)("button",{onClick:()=>Y(a=>a.filter((a,c)=>c!==b)),className:"absolute inset-0 bg-black/50 text-white opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"close"})})]},b)),(0,d.jsx)("button",{onClick:()=>Y([]),className:"text-xs text-text-muted hover:text-red-500 self-center ml-1",children:"Clear all"})]})]})]})}),(0,d.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,d.jsx)(g.Card,{children:(0,d.jsxs)("div",{className:"p-4 space-y-3",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:"upload"}),(0,d.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Request"}),(0,d.jsxs)(j.Badge,{variant:"info",size:"sm",children:["POST ",u[C]]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsx)("button",{onClick:()=>ah(E),className:"p-1.5 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-text-main transition-colors",title:"Copy",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"content_copy"})}),(0,d.jsx)("button",{onClick:()=>{let a={...t[C]};"model"in a&&(a.model=y),F(JSON.stringify(a,null,2))},className:"p-1.5 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-text-main transition-colors",title:"Reset to default",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"restart_alt"})})]})]}),$&&(0,d.jsxs)("p",{className:"text-xs text-text-muted bg-amber-500/10 border border-amber-500/20 rounded px-2 py-1.5 flex items-start gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px] text-amber-500 mt-0.5",children:"info"}),"Transcription uses multipart/form-data. Upload the audio file above — JSON below controls extra params (model, language)."]}),(0,d.jsx)("div",{className:"border border-border rounded-lg overflow-hidden",children:(0,d.jsx)(q,{height:"400px",defaultLanguage:"json",value:E,onChange:a=>F(a||""),theme:"vs-dark",options:{minimap:{enabled:!1},fontSize:12,lineNumbers:"on",scrollBeyondLastLine:!1,wordWrap:"on",automaticLayout:!0,formatOnPaste:!0}})})]})}),(0,d.jsx)(g.Card,{children:(0,d.jsxs)("div",{className:"p-4 space-y-3",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:"download"}),(0,d.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Response"}),null!==Q&&(0,d.jsx)(j.Badge,{variant:Q>=200&&Q<300?"success":"error",size:"sm",children:Q}),null!==S&&(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:[S,"ms"]}),O&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-primary animate-spin",children:"progress_activity"})]}),(0,d.jsx)("div",{className:"flex items-center gap-1",children:(0,d.jsx)("button",{onClick:()=>ah(G),className:"p-1.5 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-text-main transition-colors",title:"Copy",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"content_copy"})})})]}),(0,d.jsx)("div",{className:"border border-border rounded-lg overflow-hidden",children:I?(0,d.jsxs)("div",{className:"p-4 space-y-3",children:[(0,d.jsx)("audio",{controls:!0,src:I,className:"w-full rounded-lg",autoPlay:!0}),(0,d.jsxs)("a",{href:I,download:"speech.mp3",className:"inline-flex items-center gap-2 text-sm text-primary hover:underline",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"download"}),"Download audio"]})]}):K?(0,d.jsx)(o,{data:K}):null!==M?(0,d.jsxs)("div",{className:"p-4 space-y-2",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted font-medium uppercase tracking-wider",children:"Transcription"}),(0,d.jsx)("div",{className:"bg-surface/50 rounded p-3 text-sm text-text-main leading-relaxed whitespace-pre-wrap",children:M}),(0,d.jsxs)("button",{onClick:()=>ah(M),className:"text-xs text-primary hover:underline flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"content_copy"}),"Copy text"]})]}):(0,d.jsx)(q,{height:"400px",defaultLanguage:"json",value:G,theme:"vs-dark",options:{minimap:{enabled:!1},fontSize:12,lineNumbers:"on",scrollBeyondLastLine:!1,wordWrap:"on",automaticLayout:!0,readOnly:!0}})})]})})]})]})]})}a.s(["default",()=>p]),c()}catch(a){c(a)}},!1)];
3
3
 
4
4
  //# sourceMappingURL=src_app_%28dashboard%29_dashboard_playground_page_tsx_06c08266._.js.map