@sifxprime/krouter 0.5.165 → 0.5.166

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 (322) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +8 -8
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/environment/page.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/environment/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/presidio/page.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/presidio/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  57. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  58. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  59. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  60. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  61. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  62. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  64. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  65. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  66. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  67. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  68. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +7 -7
  69. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  70. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  71. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  72. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  73. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  74. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  75. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  76. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -2
  77. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +5 -5
  78. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  79. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  80. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +3 -2
  81. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  82. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  83. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  84. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +51 -1
  85. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  86. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  87. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  88. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  89. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  90. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  91. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  92. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +2 -2
  93. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  94. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  95. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  96. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  97. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  98. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  99. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -51
  100. package/app/.next-cli-build/server/app/api/settings/route.js +51 -1
  101. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  102. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  103. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  105. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  106. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +51 -1
  109. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +51 -1
  110. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  111. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  113. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
  115. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  117. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/v1/search/route.js +51 -1
  121. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  122. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  123. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  124. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  125. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +51 -1
  126. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  127. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  128. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  129. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  130. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  131. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  132. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  133. package/app/.next-cli-build/server/app/callback.html +1 -1
  134. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  135. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  136. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  137. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
  138. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  139. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  140. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +5 -5
  141. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  142. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  143. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  144. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  145. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +5 -5
  146. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  147. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  148. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  149. package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  150. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +5 -5
  151. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  152. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  153. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  154. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  155. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +5 -5
  156. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  157. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  158. package/app/.next-cli-build/server/app/dashboard/environment.html +1 -1
  159. package/app/.next-cli-build/server/app/dashboard/environment.rsc +5 -5
  160. package/app/.next-cli-build/server/app/dashboard/environment.segments/!KGRhc2hib2FyZCk/dashboard/environment/__PAGE__.segment.rsc +5 -5
  161. package/app/.next-cli-build/server/app/dashboard/environment.segments/_full.segment.rsc +5 -5
  162. package/app/.next-cli-build/server/app/dashboard/environment.segments/_tree.segment.rsc +1 -1
  163. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  164. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  165. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +5 -5
  166. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  167. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  168. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  169. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  170. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +5 -5
  171. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  172. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  173. package/app/.next-cli-build/server/app/dashboard/presidio.html +1 -1
  174. package/app/.next-cli-build/server/app/dashboard/presidio.rsc +4 -4
  175. package/app/.next-cli-build/server/app/dashboard/presidio.segments/!KGRhc2hib2FyZCk/dashboard/presidio/__PAGE__.segment.rsc +4 -4
  176. package/app/.next-cli-build/server/app/dashboard/presidio.segments/_full.segment.rsc +4 -4
  177. package/app/.next-cli-build/server/app/dashboard/presidio.segments/_tree.segment.rsc +1 -1
  178. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  179. package/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  180. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +5 -5
  181. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  182. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  183. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  184. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  185. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +5 -5
  186. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  187. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  188. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  189. package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  190. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +5 -5
  191. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  192. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  193. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  194. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  195. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +5 -5
  196. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  197. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  198. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  199. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  200. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +5 -5
  201. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  202. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  203. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  204. package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  205. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +6 -6
  206. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  207. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  208. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  209. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  210. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  212. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  213. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  214. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +3 -3
  215. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  216. package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  217. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +5 -5
  218. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  219. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  220. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  222. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +5 -5
  223. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  224. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  225. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  226. package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  227. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +5 -5
  228. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  229. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  230. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  232. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +5 -5
  233. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  234. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  235. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  236. package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  237. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +5 -5
  238. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  239. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  240. package/app/.next-cli-build/server/app/index.html +1 -1
  241. package/app/.next-cli-build/server/app/index.rsc +3 -3
  242. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  243. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  244. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  245. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  246. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  247. package/app/.next-cli-build/server/app/landing.html +1 -1
  248. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  249. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  250. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  251. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +3 -3
  252. package/app/.next-cli-build/server/app/login/page.js +1 -1
  253. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  254. package/app/.next-cli-build/server/app/login.html +1 -1
  255. package/app/.next-cli-build/server/app/login.rsc +4 -4
  256. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  257. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  258. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  259. package/app/.next-cli-build/server/app/page.js +1 -1
  260. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  261. package/app/.next-cli-build/server/app-paths-manifest.json +8 -8
  262. package/app/.next-cli-build/server/chunks/1318.js +51 -0
  263. package/app/.next-cli-build/server/chunks/1350.js +1 -0
  264. package/app/.next-cli-build/server/chunks/1450.js +1 -1
  265. package/app/.next-cli-build/server/chunks/1738.js +2 -2
  266. package/app/.next-cli-build/server/chunks/2557.js +1 -0
  267. package/app/.next-cli-build/server/chunks/2722.js +7 -7
  268. package/app/.next-cli-build/server/chunks/2750.js +2 -2
  269. package/app/.next-cli-build/server/chunks/3120.js +60 -12
  270. package/app/.next-cli-build/server/chunks/{9528.js → 369.js} +2 -3
  271. package/app/.next-cli-build/server/chunks/412.js +5 -5
  272. package/app/.next-cli-build/server/chunks/4161.js +1 -1
  273. package/app/.next-cli-build/server/chunks/4315.js +1 -1
  274. package/app/.next-cli-build/server/chunks/4404.js +1 -1
  275. package/app/.next-cli-build/server/chunks/4632.js +1 -1
  276. package/app/.next-cli-build/server/chunks/4884.js +3 -3
  277. package/app/.next-cli-build/server/chunks/5024.js +1 -1
  278. package/app/.next-cli-build/server/chunks/5330.js +28 -20
  279. package/app/.next-cli-build/server/chunks/5470.js +1 -1
  280. package/app/.next-cli-build/server/chunks/5681.js +1 -1
  281. package/app/.next-cli-build/server/chunks/5718.js +1 -1
  282. package/app/.next-cli-build/server/chunks/6108.js +1 -1
  283. package/app/.next-cli-build/server/chunks/6182.js +1 -1
  284. package/app/.next-cli-build/server/chunks/6200.js +1 -1
  285. package/app/.next-cli-build/server/chunks/6457.js +1 -1
  286. package/app/.next-cli-build/server/chunks/7153.js +1 -0
  287. package/app/.next-cli-build/server/chunks/7341.js +1 -1
  288. package/app/.next-cli-build/server/chunks/7828.js +1 -1
  289. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  290. package/app/.next-cli-build/server/chunks/8590.js +1 -1
  291. package/app/.next-cli-build/server/chunks/8895.js +6 -6
  292. package/app/.next-cli-build/server/chunks/8962.js +1 -1
  293. package/app/.next-cli-build/server/chunks/{2365.js → 9055.js} +2 -1
  294. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  295. package/app/.next-cli-build/server/middleware.js +5 -5
  296. package/app/.next-cli-build/server/pages/404.html +1 -1
  297. package/app/.next-cli-build/server/pages/500.html +1 -1
  298. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  299. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  300. package/app/.next-cli-build/static/chunks/1321-c5b3011761e0228b.js +1 -0
  301. package/app/.next-cli-build/static/chunks/5497-1af4fbf829c885c4.js +7 -0
  302. package/app/.next-cli-build/static/chunks/{6069-cd255683a4a76ed3.js → 6069-7e7f824c6e2d4291.js} +6 -6
  303. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-e7fe548bb32bb43c.js +1 -0
  304. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-4bcade1442e6c0b5.js → page-66d4b33890b140ae.js} +7 -7
  305. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-c88a929e34f9b002.js → page-2f53d5dd5b247cf1.js} +4 -4
  306. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-a6d8744e27e7dd87.js +1 -0
  307. package/app/cli/package.json +1 -1
  308. package/app/package.json +1 -1
  309. package/app/src/mitm/server.js +1 -1
  310. package/package.json +1 -1
  311. package/src/cli/menus/combos.js +11 -2
  312. package/src/cli/utils/comboModelId.js +14 -0
  313. package/app/.next-cli-build/server/chunks/4746.js +0 -51
  314. package/app/.next-cli-build/server/chunks/6306.js +0 -1
  315. package/app/.next-cli-build/server/chunks/8319.js +0 -1
  316. package/app/.next-cli-build/server/chunks/9376.js +0 -51
  317. package/app/.next-cli-build/static/chunks/1321-ff45959ff6580781.js +0 -1
  318. package/app/.next-cli-build/static/chunks/5497-71ac1eaeaacd3abb.js +0 -7
  319. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-18d8f169d8c3de33.js +0 -1
  320. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-a1e95f4a56398b5f.js +0 -1
  321. /package/app/.next-cli-build/static/{8BL7P4wrNCaFJbJqldneC → i0cMBMqFdYWpbajovDyfY}/_buildManifest.js +0 -0
  322. /package/app/.next-cli-build/static/{8BL7P4wrNCaFJbJqldneC → i0cMBMqFdYWpbajovDyfY}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3649],{20018:(e,t,s)=>{Promise.resolve().then(s.bind(s,80191))},80191:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>h});var l=s(95155),a=s(12115),i=s(44923),o=s(87256),r=s(39768),n=s(5020),d=s(35497),c=s(11059);s(52679);let m=/^[a-zA-Z0-9_.\-]+$/,x=[{key:"vision",label:"Vision",icon:"visibility",desc:"Images"},{key:"audioInput",label:"Audio",icon:"graphic_eq",desc:"Audio input"}],p={enabled:!0,roundRobin:!1,models:[]},u={vision:{...p},pdf:{...p},audioInput:{...p},videoInput:{...p}};function h(){let[e,t]=(0,a.useState)([]),[s,i]=(0,a.useState)(!0),[o,r]=(0,a.useState)(!1),[n,m]=(0,a.useState)(null),[h,b]=(0,a.useState)([]),[j,y]=(0,a.useState)({}),[N,w]=(0,a.useState)(u),[k,C]=(0,a.useState)(null),{copied:S,copy:$}=(0,c.C)();(0,a.useEffect)(()=>{M()},[]);let M=async()=>{try{let[s,l,a]=await Promise.all([fetch("/api/combos"),fetch("/api/providers"),fetch("/api/settings")]),i=await s.json(),o=await l.json(),r=a.ok?await a.json():{};s.ok&&t((i.combos||[]).filter(e=>!e.kind||"llm"===e.kind)),l.ok&&b(o.connections||[]),y(r.comboStrategies||{});let n=r.capacityAdapter||{},d={...u};for(let t of x){var e;d[t.key]=(e=n[t.key],Array.isArray(e)?{enabled:!0,roundRobin:!1,models:e.map(e=>e?.model||e).filter(Boolean)}:e&&"object"==typeof e?{enabled:!1!==e.enabled,roundRobin:!!e.roundRobin,models:Array.isArray(e.models)?e.models.filter(Boolean):[]}:{...p})}w(d)}catch(e){console.log("Error fetching data:",e)}finally{i(!1)}},A=async e=>{w(e);try{await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({capacityAdapter:e})})}catch(e){console.log("Error updating capacity adapter:",e)}},E=async e=>{try{let t=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(t.ok)await M(),r(!1);else{let e=await t.json();alert(e.error||"Failed to create combo")}}catch(e){console.log("Error creating combo:",e)}},O=async(e,t)=>{try{let s=await fetch(`/api/combos/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(s.ok)await M(),m(null);else{let e=await s.json();alert(e.error||"Failed to update combo")}}catch(e){console.log("Error updating combo:",e)}},P=async s=>{C({title:"Delete Combo",message:"Delete this combo?",onConfirm:async()=>{C(null);try{(await fetch(`/api/combos/${s}`,{method:"DELETE"})).ok&&t(e.filter(e=>e.id!==s))}catch(e){console.log("Error deleting combo:",e)}}})},_=async(e,t)=>{try{let s={...j},l={...s[e]||{},...t};l.fallbackStrategy&&"fallback"!==l.fallbackStrategy?s[e]=l:delete s[e],await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:s})}),y(s)}catch(e){console.log("Error updating combo strategy:",e)}};return s?(0,l.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,l.jsx)(d.Qv,{}),(0,l.jsx)(d.Qv,{})]}):(0,l.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("h1",{className:"text-2xl font-semibold",children:"Combos"}),(0,l.jsx)("p",{className:"text-sm text-text-muted mt-1",children:"Create model combos with fallback support"})]}),(0,l.jsx)(d.$n,{icon:"add",onClick:()=>r(!0),className:"w-full sm:w-auto",children:"Create Combo"})]}),0===e.length?(0,l.jsx)(d.Zp,{children:(0,l.jsxs)("div",{className:"text-center py-12",children:[(0,l.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"layers"})}),(0,l.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No combos yet"}),(0,l.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create model combos with fallback support"}),(0,l.jsx)(d.$n,{icon:"add",onClick:()=>r(!0),className:"w-full sm:w-auto",children:"Create Combo"})]})}):(0,l.jsx)("div",{className:"flex flex-col gap-4",children:e.map(e=>(0,l.jsx)(f,{combo:e,activeProviders:h,copied:S,onCopy:$,onEdit:()=>m(e),onDelete:()=>P(e.id),strategy:j[e.name]||{},onSetStrategy:t=>_(e.name,t)},e.id))}),(0,l.jsx)(g,{capacityAdapter:N,onChange:A,activeProviders:h}),(0,l.jsx)(v,{isOpen:o,onClose:()=>r(!1),onSave:E,activeProviders:h},"create"),(0,l.jsx)(v,{isOpen:!!n,combo:n,onClose:()=>m(null),onSave:e=>O(n.id,e),activeProviders:h},n?.id||"new"),(0,l.jsx)(d.uo,{isOpen:!!k,onClose:()=>C(null),onConfirm:k?.onConfirm,title:k?.title||"Confirm",message:k?.message,variant:"danger"})]})}let b=[{value:"fallback",label:"Fallback — try in order"},{value:"round-robin",label:"Round Robin — rotate"},{value:"fusion",label:"Fusion — panel + judge"}];function f({combo:e,activeProviders:t=[],copied:s,onCopy:i,onEdit:o,onDelete:r,strategy:n={},onSetStrategy:c}){let[m,x]=(0,a.useState)(!1),p=n.fallbackStrategy||"fallback",u=n.judgeModel||"";return(0,l.jsxs)(d.Zp,{padding:"sm",className:"group",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-3 sm:items-center",children:[(0,l.jsx)("div",{className:"size-8 rounded-lg bg-primary/10 flex items-center justify-center shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:"layers"})}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("code",{className:"block truncate font-mono text-sm font-medium",children:e.name}),(0,l.jsxs)("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1",children:[0===e.models.length?(0,l.jsx)("span",{className:"text-xs text-text-muted italic",children:"No models"}):e.models.slice(0,3).map((e,t)=>(0,l.jsx)("code",{className:"max-w-full truncate rounded bg-black/5 px-1.5 py-0.5 font-mono text-[10px] text-text-muted dark:bg-white/5 sm:max-w-[220px]",children:e},t)),e.models.length>3&&(0,l.jsxs)("span",{className:"text-[10px] text-text-muted",children:["+",e.models.length-3," more"]})]}),"fusion"===p&&(0,l.jsxs)("div",{className:"mt-2 flex min-w-0 flex-wrap items-center gap-1.5",children:[(0,l.jsx)("span",{className:"text-[11px] font-medium text-text-muted",children:"Judge"}),(0,l.jsxs)("button",{onClick:()=>x(!0),className:"inline-flex max-w-full items-center gap-1 rounded border border-dashed border-primary/40 px-1.5 py-0.5 font-mono text-[11px] text-primary hover:border-primary hover:bg-primary/5 transition-colors",title:"Pick the model that fuses panel answers",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"gavel"}),(0,l.jsx)("span",{className:"truncate",children:u||`Auto — ${e.models[0]||"first model"}`})]}),u&&(0,l.jsx)("button",{onClick:()=>c({judgeModel:""}),className:"p-0.5 rounded text-text-muted hover:text-red-500 hover:bg-red-500/10 transition-colors",title:"Reset judge to Auto",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"close"})})]})]})]}),(0,l.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center sm:gap-3 sm:shrink-0",children:[(0,l.jsx)("div",{className:"w-full sm:w-[200px]",children:(0,l.jsx)(d.l6,{options:b,value:p,onChange:e=>c({fallbackStrategy:e.target.value}),selectClassName:"py-1.5 text-xs"})}),(0,l.jsxs)("div",{className:"grid grid-cols-3 gap-1 sm:flex",children:[(0,l.jsxs)("button",{onClick:t=>{t.stopPropagation(),i(e.name,`combo-${e.id}`)},className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Copy combo name",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:s===`combo-${e.id}`?"check":"content_copy"}),(0,l.jsx)("span",{className:"text-[10px] leading-tight",children:"Copy"})]}),(0,l.jsxs)("button",{onClick:o,className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Edit",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,l.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,l.jsxs)("button",{onClick:r,className:"flex flex-col items-center rounded px-2 py-1 text-red-500 transition-colors hover:bg-red-500/10",title:"Delete",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,l.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]})]})]}),(0,l.jsx)(d.rq,{isOpen:m,onClose:()=>x(!1),onSelect:e=>{c({judgeModel:e?.value||""}),x(!1)},activeProviders:t,title:"Select Judge Model",addedModelValues:u?[u]:[],closeOnSelect:!0})]})}function g({capacityAdapter:e,onChange:t,activeProviders:s}){return(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsx)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("p",{className:"text-sm font-medium",children:"Vision Adapter"}),(0,l.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:"Your model can't read image/audio? Auto-switches to a model in the pool below."}),(0,l.jsxs)("ul",{className:"mt-1.5 text-[11px] text-text-muted flex flex-col gap-0.5",children:[(0,l.jsxs)("li",{children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:"Vision"})," — images (png, jpg, webp, …)"]}),(0,l.jsxs)("li",{children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:"Audio"})," — audio input"]})]})]})}),(0,l.jsx)("div",{className:"flex flex-col gap-4",children:x.map(a=>(0,l.jsx)(j,{cap:a,entry:e[a.key]||p,onChange:s=>t({...e,[a.key]:s}),activeProviders:s},a.key))})]})}function j({cap:e,entry:t,onChange:s,activeProviders:i}){let[o,r]=(0,a.useState)(!1),{enabled:n,roundRobin:c,models:m}=t,x=e=>s({...t,...e}),p=(e,t)=>{let s=e+t;if(s<0||s>=m.length)return;let l=[...m];[l[e],l[s]]=[l[s],l[e]],x({models:l})};return(0,l.jsxs)(d.Zp,{padding:"sm",className:`group ${!n?"opacity-50":""}`,children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-2.5 sm:items-center",children:[(0,l.jsx)(d.lM,{checked:n,onChange:e=>x({enabled:e}),"aria-label":`Enable ${e.label} adapter`}),(0,l.jsx)("div",{className:"size-8 rounded-lg bg-primary/10 flex items-center justify-center shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:e.icon})}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,l.jsx)("code",{className:"font-mono text-sm font-medium",children:e.label}),(0,l.jsxs)("span",{className:"text-[10px] text-text-muted",children:["— ",e.desc]})]}),(0,l.jsxs)("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1",children:[0===m.length?(0,l.jsx)("span",{className:"text-xs text-text-muted italic",children:"No models"}):m.slice(0,3).map((e,t)=>(0,l.jsxs)("code",{className:"group/chip inline-flex items-center gap-1 rounded bg-black/5 px-1.5 py-0.5 font-mono text-xs text-text-muted dark:bg-white/5",children:[(0,l.jsx)("span",{children:e}),(0,l.jsx)("button",{onClick:()=>p(t,-1),disabled:0===t,className:`leading-none opacity-0 group-hover/chip:opacity-100 ${0===t?"text-text-muted/20":"text-text-muted hover:text-primary"}`,children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_upward"})}),(0,l.jsx)("button",{onClick:()=>p(t,1),disabled:t===m.length-1,className:`leading-none opacity-0 group-hover/chip:opacity-100 ${t===m.length-1?"text-text-muted/20":"text-text-muted hover:text-primary"}`,children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_downward"})}),(0,l.jsx)("button",{onClick:()=>{let e;x({models:0===(e=m.filter((e,s)=>s!==t)).length?["mmf/mimo-auto"]:e})},className:"leading-none opacity-0 group-hover/chip:opacity-100 text-text-muted hover:text-red-500",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},`${e}-${t}`)),m.length>3&&(0,l.jsxs)("span",{className:"text-[10px] text-text-muted",children:["+",m.length-3," more"]})]})]})]}),(0,l.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center sm:gap-3 sm:shrink-0",children:[(0,l.jsxs)("label",{className:"flex items-center gap-1.5 text-xs text-text-muted cursor-pointer select-none",children:[(0,l.jsx)(d.lM,{checked:c,onChange:e=>x({roundRobin:e}),disabled:!n,"aria-label":`Round-robin ${e.label} adapter`}),(0,l.jsx)("span",{children:"Round"})]}),(0,l.jsx)(d.$n,{icon:"add",variant:"ghost",size:"sm",onClick:()=>r(!0),disabled:!n,title:`Add ${e.label} model`,children:"Add Model"})]})]}),o&&(0,l.jsx)(d.rq,{isOpen:o,onClose:()=>r(!1),onSelect:e=>{m.includes(e.value)||x({models:[...m,e.value]})},activeProviders:i,title:`Add ${e.label} Model`,addedModelValues:m,capFilter:e.key,closeOnSelect:!1})]})}function y({id:e,index:t,model:s,isFirst:i,isLast:n,onEdit:d,onMoveUp:c,onMoveDown:m,onRemove:x}){let{attributes:p,listeners:u,setNodeRef:h,transform:b,isDragging:f}=(0,o.gl)({id:e}),g={transform:r.Ks.Transform.toString(b),opacity:f?.4:1,zIndex:f?999:void 0},[j,v]=(0,a.useState)(!1),[N,w]=(0,a.useState)(s),k=()=>{let e=N.trim();e&&e!==s?d(e):w(s),v(!1)};return(0,l.jsxs)("div",{ref:h,style:g,className:`group flex min-w-0 items-center gap-1.5 rounded-md px-2 py-1 bg-black/[0.02] hover:bg-black/[0.04] dark:bg-white/[0.02] dark:hover:bg-white/[0.04] transition-colors ${f?"shadow-md ring-1 ring-primary/30":""}`,children:[(0,l.jsx)("button",{...p,...u,type:"button",className:"cursor-grab touch-none p-0.5 rounded text-text-muted hover:text-primary active:cursor-grabbing shrink-0",title:"Drag to reorder",children:(0,l.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:[(0,l.jsx)("circle",{cx:"9",cy:"4",r:"2"}),(0,l.jsx)("circle",{cx:"15",cy:"4",r:"2"}),(0,l.jsx)("circle",{cx:"9",cy:"12",r:"2"}),(0,l.jsx)("circle",{cx:"15",cy:"12",r:"2"}),(0,l.jsx)("circle",{cx:"9",cy:"20",r:"2"}),(0,l.jsx)("circle",{cx:"15",cy:"20",r:"2"})]})}),(0,l.jsx)("span",{className:"text-[10px] font-medium text-text-muted w-3 text-center shrink-0",children:t+1}),j?(0,l.jsx)("input",{autoFocus:!0,value:N,onChange:e=>w(e.target.value),onBlur:k,onKeyDown:e=>{"Enter"===e.key&&k(),"Escape"===e.key&&(w(s),v(!1))},className:"min-w-0 flex-1 rounded border border-primary/40 bg-white px-1.5 py-0.5 font-mono text-xs text-text-main outline-none dark:bg-black/20"}):(0,l.jsx)("div",{className:"min-w-0 flex-1 cursor-text truncate rounded px-1.5 py-0.5 font-mono text-xs text-text-main hover:bg-black/5 dark:hover:bg-white/5",onClick:()=>v(!0),title:"Click to edit",children:s}),(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5",children:[(0,l.jsx)("button",{onClick:c,disabled:i,className:`p-0.5 rounded ${i?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move up",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_upward"})}),(0,l.jsx)("button",{onClick:m,disabled:n,className:`p-0.5 rounded ${n?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move down",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_downward"})})]}),(0,l.jsx)("button",{onClick:x,className:"p-0.5 hover:bg-red-500/10 rounded text-text-muted hover:text-red-500 transition-all",title:"Remove",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]})}function v({isOpen:e,combo:t,onClose:s,onSave:r,activeProviders:c,kindFilter:x=null}){let[p,u]=(0,a.useState)(t?.name||""),[h,b]=(0,a.useState)(t?.models||[]),[f,g]=(0,a.useState)(!1),[j,N]=(0,a.useState)(!1),[w,k]=(0,a.useState)(""),[C,S]=(0,a.useState)({}),$=(0,i.FR)((0,i.MS)(i.AN,{activationConstraint:{distance:5}}),(0,i.MS)(i.uN,{coordinateGetter:o.JR})),M=h.map((e,t)=>({uid:`item-${t}`,model:e})),A=async()=>{try{let e=await fetch("/api/models/alias");if(!e.ok)return;let t=await e.json();S(t.aliases||{})}catch(e){console.error("Error fetching modal data:",e)}};(0,a.useEffect)(()=>{e&&A()},[e]);let E=e=>e.trim()?m.test(e)?(k(""),!0):(k("Only letters, numbers, -, _ and . allowed"),!1):(k("Name is required"),!1),O=async()=>{E(p)&&(N(!0),await r({name:p.trim(),models:h}),N(!1))},P=!!t;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(d.aF,{isOpen:e,onClose:s,title:P?"Edit Combo":"Create Combo",children:(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(d.pd,{label:"Combo Name",value:p,onChange:e=>{let t=e.target.value;u(t),t?E(t):k("")},placeholder:"my-combo",error:w}),(0,l.jsx)("p",{className:"text-[10px] text-text-muted mt-0.5",children:"Only letters, numbers, -, _ and . allowed"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-sm font-medium mb-1.5 block",children:"Models"}),0===h.length?(0,l.jsxs)("div",{className:"text-center py-4 border border-dashed border-black/10 dark:border-white/10 rounded-lg bg-black/[0.01] dark:bg-white/[0.01]",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-xl mb-1",children:"layers"}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"No models added yet"})]}):(0,l.jsx)(i.Mp,{sensors:$,collisionDetection:i.fp,onDragEnd:e=>{let{active:t,over:s}=e;if(s&&t.id!==s.id){let e=M.findIndex(e=>e.uid===t.id),l=M.findIndex(e=>e.uid===s.id);-1!==e&&-1!==l&&b(t=>(0,o.be)(t,e,l))}},modifiers:[n.FN,n.gj],children:(0,l.jsx)(o.gB,{items:M.map(e=>e.uid),strategy:o._G,children:(0,l.jsx)("div",{className:"flex max-h-[55vh] min-w-0 flex-col gap-1 overflow-y-auto sm:max-h-[350px]",children:M.map(({uid:e,model:t},s)=>(0,l.jsx)(y,{id:e,index:s,model:t,isFirst:0===s,isLast:s===M.length-1,onEdit:e=>{let t=[...h];t[s]=e,b(t)},onMoveUp:()=>(e=>{if(0===e)return;let t=[...h];[t[e-1],t[e]]=[t[e],t[e-1]],b(t)})(s),onMoveDown:()=>(e=>{if(e===h.length-1)return;let t=[...h];[t[e],t[e+1]]=[t[e+1],t[e]],b(t)})(s),onRemove:()=>{b(h.filter((e,t)=>t!==s))}},e))})})}),(0,l.jsxs)("button",{onClick:()=>g(!0),className:"w-full mt-2 py-2 border border-dashed border-black/10 dark:border-white/10 rounded-lg text-xs text-primary font-medium hover:text-primary hover:border-primary/50 transition-colors flex items-center justify-center gap-1",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),"Add Model"]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2 pt-1 sm:flex-row",children:[(0,l.jsx)(d.$n,{onClick:s,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,l.jsx)(d.$n,{onClick:O,fullWidth:!0,size:"sm",disabled:!p.trim()||!!w||j,children:j?"Saving...":P?"Save":"Create"})]})]})}),(0,l.jsx)(d.rq,{isOpen:f,onClose:()=>g(!1),onSelect:e=>{h.includes(e.value)||b([...h,e.value])},onDeselect:e=>{b(h.filter(t=>t!==e.value))},activeProviders:c,modelAliases:C,title:"Add Model to Combo",kindFilter:x,addedModelValues:h,closeOnSelect:!1})]})}},84680:(e,t,s)=>{"use strict";s.d(t,{PM:()=>l.PM,Sj:()=>l.Sj,Vy:()=>l.Vy,fF:()=>l.fF,sl:()=>l.sl,vL:()=>l.vL,y$:()=>l.y$,zM:()=>l.zM});var l=s(44923)}},e=>{e.O(0,[7504,5353,1321,5497,8441,3794,7358],()=>e(e.s=20018)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3826],{7450:(e,t,r)=>{Promise.resolve().then(r.bind(r,75095)),Promise.resolve().then(r.bind(r,25086))},75095:(e,t,r)=>{"use strict";r.d(t,{default:()=>$});var a=r(95155),s=r(12115),i=r(57250),n=r(72107);function l(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0}function o(e){return e&&"object"==typeof e?String(e.modelKey||e.name||"").trim():""}function c(e,t){let r=t?.[e]?.hidden;return new Set(Array.isArray(r)?r.map(String):[])}function d({quotas:e=[],compact:t=!1,sortMode:r="default",showSortLabel:i=!1,onHideQuota:n=null}){let[o,c]=(0,s.useState)(1),u=(0,s.useMemo)(()=>e.map((e,t)=>({...e,index:t,remaining:e?.remaining!==void 0?Math.max(0,Math.round(e.remaining)):e?.remainingPercentage!==void 0?Math.round(e.remainingPercentage):l(e?.used,e?.total)})),[e]),m=(0,s.useMemo)(()=>"remaining-asc"===r?[...u].sort((e,t)=>e.remaining-t.remaining||e.name.localeCompare(t.name)):"remaining-desc"===r?[...u].sort((e,t)=>t.remaining-e.remaining||e.name.localeCompare(t.name)):u,[u,r]),x=Math.max(1,Math.ceil(m.length/10));if((0,s.useEffect)(()=>{c(1)},[r,e]),(0,s.useEffect)(()=>{c(e=>Math.min(e,x))},[x]),!e||0===e.length)return null;let h=m.slice((o-1)*10,10*o),p=0===m.length?0:(o-1)*10+1,b=Math.min(10*o,m.length),g=t?"py-1 px-1.5":"py-2 px-3",f=t?"text-[11px]":"text-sm",y=t?"text-[11px]":"text-sm",v=t?"text-[10px] leading-tight":"text-xs";return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("div",{className:"text-[10px] text-text-muted",children:[m.length," quota",m.length>1?"s":""]}),i&&(0,a.jsx)("div",{className:"rounded-md border border-black/10 bg-black/[0.02] px-2 py-1 text-[10px] text-text-muted dark:border-white/10 dark:bg-white/[0.03]",children:"Sorted by account remaining"})]}),(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsx)("table",{className:"w-full table-fixed text-left",children:(0,a.jsx)("tbody",{children:h.map(e=>{var r;let s=(r=e.remaining)>70?{text:"text-green-600 dark:text-green-400",bg:"bg-green-500",bgLight:"bg-green-500/10",emoji:"\uD83D\uDFE2"}:r>=30?{text:"text-yellow-600 dark:text-yellow-400",bg:"bg-yellow-500",bgLight:"bg-yellow-500/10",emoji:"\uD83D\uDFE1"}:{text:"text-red-600 dark:text-red-400",bg:"bg-red-500",bgLight:"bg-red-500/10",emoji:"\uD83D\uDD34"},i=function(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,r=new Date,a=t-r;if(a<=0)return"-";let s=Math.ceil(a/6e4);if(s<60)return`${s}m`;let i=Math.floor(s/60),n=s%60;if(i<24)return`${i}h ${n}m`;let l=Math.floor(i/24);return`${l}d ${i%24}h ${n}m`}catch(e){return"-"}}(e.resetAt),l=function(e){if(!e)return null;try{let t=new Date(e),r=new Date,a=new Date(r.getFullYear(),r.getMonth(),r.getDate()),s=new Date(a);s.setDate(s.getDate()+1);let i="";i=t>=a&&t<s?"Today":t>=s&&t<new Date(s.getTime()+864e5)?"Tomorrow":t.toLocaleDateString("en-US",{month:"short",day:"numeric"});let n=t.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return`${i}, ${n}`}catch{return null}}(e.resetAt);return(0,a.jsxs)("tr",{className:"border-b border-black/5 dark:border-white/5 hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors",children:[(0,a.jsx)("td",{className:`${g} w-[30%]`,children:(0,a.jsxs)("div",{className:"group/qrow flex items-center gap-1.5 min-w-0",children:[(0,a.jsx)("span",{className:"text-[10px] shrink-0",children:s.emoji}),(0,a.jsx)("span",{className:`${f} font-medium text-text-primary truncate`,children:e.name}),n&&(0,a.jsx)("button",{type:"button",onClick:()=>n(e),className:"shrink-0 opacity-0 group-hover/qrow:opacity-100 text-text-muted hover:text-red-500 transition-opacity",title:`Hide "${e.name}"`,"aria-label":`Hide ${e.name}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[13px] align-middle",children:"visibility_off"})})]})}),(0,a.jsx)("td",{className:`${g} w-[45%]`,children:(0,a.jsxs)("div",{className:t?"space-y-1":"space-y-1.5",children:[(0,a.jsx)("div",{className:`${t?"h-1":"h-1.5"} rounded-full overflow-hidden border ${s.bgLight} ${0===e.remaining?"border-black/10 dark:border-white/10":"border-transparent"}`,children:(0,a.jsx)("div",{className:`h-full transition-all duration-300 ${s.bg}`,style:{width:`${Math.min(e.remaining,100)}%`}})}),(0,a.jsxs)("div",{className:`flex items-center justify-between ${t?"text-[10px]":"text-xs"}`,children:[(0,a.jsx)("span",{className:"text-text-muted",children:100===e.total?`${e.used}% used`:`${e.used.toLocaleString()} / ${e.total>0?e.total.toLocaleString():"∞"}`}),(0,a.jsxs)("span",{className:`font-medium ${s.text}`,children:[e.remaining,"%"]})]})]})}),(0,a.jsx)("td",{className:`${g} w-[25%]`,children:"-"!==i||l?t?(0,a.jsx)("div",{className:`${y} text-text-primary font-medium truncate`,title:l||"",children:"-"!==i?`in ${i}`:l}):(0,a.jsxs)("div",{className:"space-y-0.5",children:["-"!==i&&(0,a.jsxs)("div",{className:`${y} text-text-primary font-medium`,children:["in ",i]}),l&&(0,a.jsx)("div",{className:`${v} text-text-muted`,children:l})]}):(0,a.jsx)("div",{className:`${y} text-text-muted italic`,children:"N/A"})})]},`${e.name}-${e.index}`)})})})}),x>1&&(0,a.jsxs)("div",{className:"rounded-md border border-black/10 bg-black/[0.02] px-2 py-1.5 dark:border-white/10 dark:bg-white/[0.03]",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2 text-[10px] text-text-muted",children:[(0,a.jsxs)("span",{children:["Showing ",p,"-",b," of ",m.length]}),(0,a.jsxs)("span",{children:["Page ",o," / ",x]})]}),(0,a.jsxs)("div",{className:"mt-1.5 flex items-center justify-end gap-1",children:[(0,a.jsx)("button",{type:"button",onClick:()=>c(e=>Math.max(1,e-1)),disabled:1===o,className:"flex h-6 items-center rounded-md border border-black/10 px-2 text-[10px] text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5",children:"Prev"}),(0,a.jsx)("button",{type:"button",onClick:()=>c(e=>Math.min(x,e+1)),disabled:o===x,className:"flex h-6 items-center rounded-md border border-black/10 px-2 text-[10px] text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5",children:"Next"})]})]})]})}var u=r(98542),m=r(84588),x=r(35497),h=r(52679);function p(e){let t=e=>"string"==typeof e&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e);return t(e.email)?e.email:(t(e.name),e.name)}function b(e,t){let r=t[e.id]?.quotas?.[0];return r&&"number"==typeof r.remaining?r.remaining:1/0}function g(e){let t={};return e.forEach(e=>{t[e.id]=!0}),t}function f(e,t){let r=new Set(t.map(e=>e.id));return Object.fromEntries(Object.entries(e).filter(([e])=>r.has(e)))}async function y(e,t){return await e(t)}let v="quotaCacheData";function w(){try{let e=window.localStorage.getItem(v);return e?JSON.parse(e):{}}catch(e){return console.error("Error reading quota cache:",e),{}}}function j(e,t){try{let r=w();r[e]={...t,cachedAt:new Date().toISOString()},window.localStorage.setItem(v,JSON.stringify(r))}catch(e){console.error("Error writing quota cache:",e)}}let k="quotaAutoRefresh",N=[{value:"all",label:"All accounts"},{value:"active",label:"Active"},{value:"inactive",label:"Turned off"}],S=[{value:"default",label:"Default quota order"},{value:"remaining-asc",label:"% quota: low to high"},{value:"remaining-desc",label:"% quota: high to low"}],C=[10,20,50,100];function $(){let[e,t]=(0,s.useState)([]),[r,$]=(0,s.useState)({}),[A,q]=(0,s.useState)({}),[P,E]=(0,s.useState)({}),[M,T]=(0,s.useState)(!0),[D,O]=(0,s.useState)({}),[I,_]=(0,s.useState)({}),[z,L]=(0,s.useState)(null),[F,U]=(0,s.useState)(!1),[J,R]=(0,s.useState)(!1),[H,K]=(0,s.useState)(60),[V,B]=(0,s.useState)(!0),[G,Q]=(0,s.useState)(null),[W,Y]=(0,s.useState)(null),[X,Z]=(0,s.useState)(!1),[ee,et]=(0,s.useState)(null),[er,ea]=(0,s.useState)([]),[es,ei]=(0,s.useState)("all"),[en,el]=(0,s.useState)([]),[eo,ec]=(0,s.useState)("all"),[ed,eu]=(0,s.useState)("default"),[em,ex]=(0,s.useState)(!1),[eh,ep]=(0,s.useState)(!1),[eb,eg]=(0,s.useState)(!1),[ef,ey]=(0,s.useState)(1),[ev,ew]=(0,s.useState)(20),[ej,ek]=(0,s.useState)(String(20)),[eN,eS]=(0,s.useState)({page:1,pageSize:20,total:0,totalPages:1}),[eC,e$]=(0,s.useState)({eligibleConnections:0,providerFilteredConnections:0}),eA=(0,s.useRef)(null),eq=(0,s.useRef)(null),eP=(0,s.useCallback)(async(e=ef)=>{try{var r,a;let s=new URLSearchParams({page:String(e),pageSize:String(ev),accountStatus:eo,sort:"priority"});"all"!==es&&s.set("provider",es);let i=await fetch(`/api/providers/client?${s.toString()}`);if(!i.ok)throw Error("Failed to fetch connections");let n=await i.json(),l=n.connections||[],o=(r=n.pagination,r||{page:1,pageSize:ev,total:0,totalPages:1}),c=function(e,t=0){return e||{eligibleConnections:t,providerFilteredConnections:t}}(n.totals,l.length);return t(l),el(n.providerOptions||[]),eS(o),e$(c),ey((a=n.pagination,a?.page||e)),l}catch(e){return console.error("Error fetching connections:",e),t([]),el([]),eS({page:1,pageSize:ev,total:0,totalPages:1}),e$({eligibleConnections:0,providerFilteredConnections:0}),[]}},[eo,em,ef,ev,es]),eE=(0,s.useCallback)(async(e,t)=>{q(t=>({...t,[e]:!0})),E(t=>({...t,[e]:null}));try{console.log(`[ProviderLimits] Fetching quota for ${t} (${e})`);let r=await fetch(`/api/usage/${e}`);if(!r.ok){let a=(await r.json().catch(()=>({}))).error||r.statusText;if(404===r.status)return void console.warn(`[ProviderLimits] Connection not found for ${t}, skipping`);if(401===r.status){console.warn(`[ProviderLimits] Auth error for ${t}:`,a);let r={quotas:[],message:a};$(t=>({...t,[e]:r})),j(e,r);return}throw Error(`HTTP ${r.status}: ${a}`)}let a=await r.json();console.log(`[ProviderLimits] Got quota for ${t}:`,a);let s={quotas:function(e,t){if(!t||"object"!=typeof t)return[];let r=[];try{switch(e.toLowerCase()){case"github":default:t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"antigravity":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:t.displayName||e,modelKey:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codex":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,remaining:t.remaining,resetAt:t.resetAt||null})});break;case"kiro":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"qoder":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{("organization"!==e||t&&0!==(Number(t.total)||0))&&r.push({name:"user"===e?"Personal":"organization"===e?"Organization":e,used:t.used||0,total:t.total||0,unit:t.unit,resetAt:t.resetAt||null})});break;case"claude":t.message?r.push({name:"error",used:0,total:0,resetAt:null,message:t.message}):t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"vercel-ai-gateway":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let a=(0,n.KC)(e);if(a.length>0){let e=new Map(a.map((e,t)=>[e.id,t]));r.sort((t,r)=>{let a=t.modelKey||t.name,s=r.modelKey||r.name;return(e.get(a)??999)-(e.get(s)??999)})}return r}(t,a),plan:a.plan||null,message:a.message||null,raw:a};$(t=>({...t,[e]:s})),j(e,s)}catch(r){console.error(`[ProviderLimits] Error fetching quota for ${t} (${e}):`,r),E(t=>({...t,[e]:r.message||"Failed to fetch quota"}))}finally{q(t=>({...t,[e]:!1}))}},[]),eM=(0,s.useCallback)(async(e,t)=>{await eE(e,t),L(new Date)},[eE]),eT=(0,s.useCallback)(async e=>{if(confirm("Delete this connection?")){Q(e);try{if((await fetch(`/api/providers/${e}`,{method:"DELETE"})).ok){$(t=>{let r={...t};return delete r[e],r}),q(t=>{let r={...t};return delete r[e],r}),E(t=>{let r={...t};return delete r[e],r});try{let t=w();t[e]&&(delete t[e],window.localStorage.setItem(v,JSON.stringify(t)))}catch(e){console.error("Error deleting cache entry:",e)}await y(eP,ef)}}catch(e){console.error("Error deleting connection:",e)}finally{Q(null)}}},[eP,ef]),eD=(0,s.useCallback)(async(e,t)=>{Y(e);try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&($(e=>({...e})),await y(eP,ef))}catch(e){console.error("Error updating connection status:",e)}finally{Y(null)}},[eP,ef]),eO=(0,s.useCallback)(async e=>{if(!ee?.id)return;let t=ee.id,r=ee.provider;try{(await fetch(`/api/providers/${t}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(await eP(),Z(!1),et(null),h.wb.includes(r)&&await eE(t,r))}catch(e){console.error("Error saving connection:",e)}},[ee,eP,eE]);(0,s.useEffect)(()=>{let e=!1;return fetch("/api/proxy-pools?isActive=true",{cache:"no-store"}).then(e=>e.json()).then(t=>{!e&&t?.proxyPools&&ea(t.proxyPools)}).catch(()=>{}),()=>{e=!0}},[]);let eI=(0,s.useCallback)(async()=>{if(!J){R(!0),K(60);try{let e=await eP(ef);q(g(e)),E(t=>f(t,e)),$(t=>f(t,e)),await Promise.all(e.map(e=>eE(e.id,e.provider))),L(new Date)}catch(e){console.error("Error refreshing all providers:",e)}finally{R(!1)}}},[J,eP,eE,ef]);(0,s.useEffect)(()=>{(async()=>{B(!0);let e=await eP(ef);B(!1),q(g(e)),E(t=>f(t,e)),$(t=>f(t,e)),await Promise.all(e.map(e=>eE(e.id,e.provider))),L(new Date)})()},[eP,eE,ef]),(0,s.useEffect)(()=>{let e=window.localStorage.getItem(k);T(null===e||"true"===e),U(!0)},[]),(0,s.useEffect)(()=>{F&&window.localStorage.setItem(k,String(M))},[M,F]),(0,s.useEffect)(()=>{fetch("/api/settings",{cache:"no-store"}).then(e=>e.ok?e.json():{}).then(e=>{O(e?.claudeAutoPing?.connections||{}),_(e?.quotaVisibility||{})}).catch(()=>{})},[]);let e_=(0,s.useCallback)(async(e,t,r)=>{let a=new Set((I?.[e]?.hidden||[]).map(String));r?a.add(String(t)):a.delete(String(t));let s={...I,[e]:{...I?.[e]||{},hidden:[...a]}};_(s);try{let t=await fetch("/api/settings",{cache:"no-store"}),r={...(t.ok?await t.json():{}).quotaVisibility||{},[e]:s[e]};await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({quotaVisibility:r})}),_(r)}catch{_(I)}},[I]),ez=(0,s.useCallback)(async(e,t)=>{let r={...D,[e]:t};O(r);try{let e=await fetch("/api/settings",{cache:"no-store"}),t={...(e.ok?await e.json():{}).claudeAutoPing||{},connections:r};await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeAutoPing:t})})}catch{O(D)}},[D]);(0,s.useEffect)(()=>{if(!F||!M){eA.current&&(clearInterval(eA.current),eA.current=null),eq.current&&(clearInterval(eq.current),eq.current=null);return}return eA.current=setInterval(()=>{eI()},6e4),eq.current=setInterval(()=>{K(e=>e<=1?60:e-1)},1e3),()=>{eA.current&&clearInterval(eA.current),eq.current&&clearInterval(eq.current)}},[M,eI,F]),(0,s.useEffect)(()=>{let e=()=>{document.hidden?(eA.current&&(clearInterval(eA.current),eA.current=null),eq.current&&(clearInterval(eq.current),eq.current=null)):M&&F&&(eA.current=setInterval(eI,6e4),eq.current=setInterval(()=>{K(e=>e<=1?60:e-1)},1e3))};return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[M,eI,F]);let eL=(0,s.useMemo)(()=>(function(e,t,r,a,s){if("codex"===a&&"default"!==s)return[...e].sort((e,r)=>{let a=b(e,t),i=b(r,t),n="remaining-asc"===s?a-i:i-a;return 0!==n?n:(p(e)||"").localeCompare(p(r)||"")});if(!r)return e;let i=e=>{let r=(t[e.id]?.quotas||[]).map(e=>e.resetAt?new Date(e.resetAt).getTime():1/0).filter(e=>Number.isFinite(e));return r.length>0?Math.min(...r):1/0};return[...e].sort((e,t)=>{let r=i(e)-i(t);return 0!==r?r:(e.provider||"").localeCompare(t.provider||"")||(p(e)||"").localeCompare(p(t)||"")})})(e,r,em,es,ed),[e,r,em,es,ed]),eF=e=>{let t=r[e.id]?.quotas;return!!t?.length&&t.some(e=>!!e.total&&!(e.total<=0)&&5>=l(e.used,e.total))},eU=(0,s.useCallback)(async(e,t)=>{if(e.length&&!eb){eg(!0);try{await Promise.all(e.map(e=>fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})}))),await y(eP,ef)}catch(e){console.error("Error bulk toggling connections:",e)}finally{eg(!1)}}},[eb,eP,ef]),eJ="all"===es?"All providers":es,eR=eC.eligibleConnections>0,eH=eL.length>0,eK=eC.eligibleConnections?eC.providerFilteredConnections?{icon:"filter_alt_off",title:"No Accounts On This Page",description:"Try moving to another page or refreshing the current filters."}:{icon:"filter_alt_off",title:"No Accounts Match Current Filters",description:"all"===es?"Try changing the account status filter to see more quota trackers.":`No ${"inactive"===eo?"turned off":"active"===eo?"active":"matching"} accounts found for ${es}.`}:{icon:"cloud_off",title:"No Providers Connected",description:"Connect to providers with OAuth to track your API quota limits and usage."},eV=function(e){var t;let{start:r,end:a}=(t=e).total?{start:(t.page-1)*t.pageSize+1,end:Math.min(t.page*t.pageSize,t.total)}:{start:0,end:0};return`Showing ${r}-${a} of ${e.total}`}(eN),eB=!C.includes(ev);return V||eR?V||eH?(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-end",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>ep(e=>!e),className:"flex h-8 items-center justify-between gap-1 rounded-lg border border-black/10 bg-black/[0.02] px-2 text-xs text-text-primary transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10","aria-haspopup":"menu","aria-expanded":eh,title:"Filter quota providers",children:[(0,a.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:["all"===es?(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"apps"}):(0,a.jsx)(i.A,{src:`/providers/${es}.png`,alt:es,size:18,className:"size-[18px] rounded object-contain",fallbackText:es.slice(0,2).toUpperCase()}),(0,a.jsx)("span",{className:"truncate capitalize hidden lg:inline",children:eJ})]}),(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"expand_more"})]}),eh&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{type:"button",className:"fixed inset-0 z-30 bg-transparent","aria-label":"Close provider filter",onClick:()=>ep(!1)}),(0,a.jsxs)("div",{className:"absolute left-0 z-40 mt-2 w-64 overflow-hidden rounded-2xl border border-black/10 bg-surface/95 p-1.5 shadow-xl shadow-black/10 backdrop-blur dark:border-white/10 dark:bg-surface/95 sm:w-72",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>{"all"!==es&&ey(1),ei("all"),ep(!1)},className:`flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left text-sm transition-colors ${"all"===es?"bg-primary/10 text-primary":"text-text-primary hover:bg-black/5 dark:hover:bg-white/10"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[22px]",children:"apps"}),(0,a.jsx)("span",{className:"font-medium",children:"All providers"}),"all"===es&&(0,a.jsx)("span",{className:"material-symbols-outlined ml-auto text-[20px]",children:"check"})]}),(0,a.jsx)("div",{className:"my-1 h-px bg-black/10 dark:bg-white/10"}),(0,a.jsx)("div",{className:"max-h-72 overflow-y-auto pr-1",children:en.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>{es!==e&&ey(1),ei(e),ep(!1)},className:`flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left text-sm transition-colors ${es===e?"bg-primary/10 text-primary":"text-text-primary hover:bg-black/5 dark:hover:bg-white/10"}`,children:[(0,a.jsx)(i.A,{src:`/providers/${e}.png`,alt:e,size:24,className:"size-6 rounded-md object-contain",fallbackText:e.slice(0,2).toUpperCase()}),(0,a.jsx)("span",{className:"font-medium capitalize",children:e}),es===e&&(0,a.jsx)("span",{className:"material-symbols-outlined ml-auto text-[20px]",children:"check"})]},e))})]})]})]}),(0,a.jsx)("select",{value:eo,onChange:e=>{let t=e.target.value;eo!==t&&ey(1),ec(t)},className:"h-8 rounded-lg border border-black/10 bg-black/[0.02] px-2 text-xs text-text-primary outline-none transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10","aria-label":"Filter accounts by status",children:N.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))}),"codex"===es&&(0,a.jsx)("select",{value:ed,onChange:e=>eu(e.target.value),className:"h-8 rounded-lg border border-black/10 bg-black/[0.02] px-2 text-xs text-text-primary outline-none transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10","aria-label":"Sort Codex quotas by remaining",children:S.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))}),(0,a.jsxs)("button",{type:"button",onClick:()=>ex(e=>!e),"aria-pressed":em,className:`flex h-8 shrink-0 items-center gap-1 rounded-lg border px-2 text-xs transition-colors ${em?"border-amber-500/40 bg-amber-500/10 text-amber-500":"border-black/10 text-text-primary hover:bg-black/5 dark:border-white/10 dark:hover:bg-white/5"}`,title:"Sort accounts by earliest quota reset time",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"hourglass_top"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:"Expiring first"})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>{eU(eL.filter(e=>(e.isActive??!0)&&eF(e)).map(e=>e.id),!1)},disabled:eb,className:"flex h-8 shrink-0 items-center gap-1 rounded-lg border border-red-500/30 px-2 text-xs text-red-500 transition-colors hover:bg-red-500/10 disabled:opacity-50",title:"Disable connections with depleted quota on the current page",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"block"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:"Turn off Empty"})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>{eU(eL.filter(e=>!(e.isActive??!0)&&!eF(e)).map(e=>e.id),!0)},disabled:eb,className:"flex h-8 shrink-0 items-center gap-1 rounded-lg border border-emerald-500/30 px-2 text-xs text-emerald-500 transition-colors hover:bg-emerald-500/10 disabled:opacity-50",title:"Enable connections that still have quota on the current page",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"check_circle"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:"Turn on Available"})]}),(0,a.jsxs)("button",{onClick:()=>T(e=>!e),className:"flex h-8 shrink-0 items-center gap-1 rounded-lg border border-black/10 px-2 text-xs transition-colors hover:bg-black/5 dark:border-white/10 dark:hover:bg-white/5",title:M?"Disable auto-refresh":"Enable auto-refresh",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px] ${M?"text-primary":"text-text-muted"}`,children:M?"toggle_on":"toggle_off"}),(0,a.jsx)("span",{className:"hidden text-text-primary sm:inline",children:"Auto-refresh"}),M&&(0,a.jsxs)("span",{className:"text-[10px] text-text-muted tabular-nums",children:["(",H,"s)"]})]}),(0,a.jsx)("button",{type:"button",onClick:eI,disabled:J,className:"flex h-8 shrink-0 items-center gap-1 rounded-lg border border-black/10 px-2 text-xs text-text-primary transition-colors hover:bg-black/5 dark:border-white/10 dark:hover:bg-white/5 disabled:opacity-50",title:"Refresh all",children:(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px] ${J?"animate-spin":""}`,children:"refresh"})})]})}),em&&(0,a.jsx)("div",{className:"rounded-xl border border-amber-500/20 bg-amber-500/10 px-3 py-2 text-xs text-amber-700 dark:text-amber-300",children:"Expiring-first currently reorders accounts inside the current page. Cross-page ordering still follows backend pagination."}),(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:eL.map(e=>{let t,s,n,l=r[e.id],h=A[e.id],b=P[e.id],g=!1===e.isActive,f=G===e.id||W===e.id;return(0,a.jsxs)(m.default,{padding:"none",className:`min-w-0 ${g?"opacity-60":""}`,children:[(0,a.jsx)("div",{className:"px-3 py-2 border-b border-black/10 dark:border-white/10",children:(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,a.jsx)("div",{className:"w-8 h-8 shrink-0 rounded-md flex items-center justify-center overflow-hidden",children:(0,a.jsx)(i.A,{src:`/providers/${e.provider}.png`,alt:e.provider,size:32,className:"object-contain",fallbackText:e.provider?.slice(0,2).toUpperCase()||"PR"})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-text-primary capitalize truncate",children:e.provider}),p(e)?(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:p(e)}):null]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:["claude"===e.provider&&"oauth"===e.authType&&(0,a.jsx)(x.m_,{text:"When your 5h quota runs out, auto-sends a request the moment it resets so a new window starts right away.",children:(0,a.jsx)("button",{type:"button",onClick:()=>ez(e.id,!0!==D[e.id]),"aria-label":"Toggle auto-ping",className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/5 ${!0===D[e.id]?"text-primary":"text-text-muted"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"bolt"})})}),(0,a.jsx)("button",{type:"button",onClick:()=>eM(e.id,e.provider),disabled:h||f,"aria-label":"Refresh quota",className:"p-1.5 rounded-lg hover:bg-black/5 dark:hover:bg-white/5 transition-colors disabled:opacity-50",title:"Refresh quota",children:(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] text-text-muted ${h?"animate-spin":""}`,children:"refresh"})}),(0,a.jsx)("button",{type:"button",onClick:()=>{et(e),Z(!0)},disabled:f,"aria-label":"Edit connection",className:"p-1.5 rounded-lg hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary transition-colors disabled:opacity-50",title:"Edit connection",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,a.jsx)("button",{type:"button",onClick:()=>eT(e.id),disabled:f,"aria-label":"Delete connection",className:"p-1.5 rounded-lg hover:bg-red-500/10 text-red-500 transition-colors disabled:opacity-50",title:"Delete connection",children:(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] ${G===e.id?"animate-pulse":""}`,children:"delete"})}),(0,a.jsx)("div",{className:"inline-flex items-center pl-0.5",title:e.isActive??!0?"Disable connection":"Enable connection",children:(0,a.jsx)(u.default,{size:"sm",checked:e.isActive??!0,disabled:f,onChange:t=>eD(e.id,t)})})]})]})}),(0,a.jsx)("div",{className:"px-2 py-1.5",children:h?(0,a.jsx)("div",{className:"text-center py-5 text-text-muted",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[28px] animate-spin",children:"progress_activity"})}):b?(0,a.jsxs)("div",{className:"text-center py-5",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[28px] text-red-500",children:"error"}),(0,a.jsx)("p",{className:"mt-1.5 text-xs text-text-muted",children:b})]}):l?.message?(0,a.jsx)("div",{className:"text-center py-5",children:(0,a.jsx)("p",{className:"text-xs text-text-muted",children:l.message})}):(t=l?.quotas||[],s=function(e,t=[],r={}){if(!Array.isArray(t)||0===t.length)return[];let a=c(e,r);return 0===a.size?t:t.filter(e=>!a.has(o(e)))}(e.provider,t,I),n=function(e,t=[],r={}){if(!Array.isArray(t)||0===t.length)return[];let a=c(e,r);return 0===a.size?[]:t.filter(e=>a.has(o(e)))}(e.provider,t,I),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d,{quotas:s,compact:!0,sortMode:"default",showSortLabel:"codex"===e.provider&&"default"!==ed,onHideQuota:t=>e_(e.provider,o(t),!0)}),n.length>0&&(0,a.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-1.5 text-[11px] text-text-muted",children:[(0,a.jsxs)("span",{children:[n.length," hidden:"]}),n.map(t=>{let r=o(t);return(0,a.jsxs)("button",{type:"button",onClick:()=>e_(e.provider,r,!1),className:"inline-flex items-center gap-1 rounded border border-border px-1.5 py-0.5 hover:border-primary hover:text-primary transition-colors",title:`Show "${t.name}" again`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"visibility"}),t.name]},r)})]})]}))})]},e.id)})}),(0,a.jsx)("div",{className:"rounded-xl border border-black/10 bg-black/[0.02] px-3 py-2 dark:border-white/10 dark:bg-white/[0.03]",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted",children:eV}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("select",{value:eB?"custom":String(ev),onChange:e=>{let t=e.target.value;if("custom"===t)return;let r=Number.parseInt(t,10);Number.isFinite(r)&&(ey(1),ew(r),ek(String(r)))},className:"h-8 rounded-lg border border-black/10 bg-black/[0.02] px-2 text-xs text-text-primary outline-none transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10","aria-label":"Accounts per page",children:[C.map(e=>(0,a.jsxs)("option",{value:String(e),children:[e," / page"]},e)),(0,a.jsx)("option",{value:"custom",children:"Custom"})]}),(0,a.jsx)("input",{type:"number",min:"1",max:String(500),inputMode:"numeric",value:ej,onChange:e=>ek(e.target.value),onBlur:()=>{let e=Number.parseInt(ej,10);if(!Number.isFinite(e))return void ek(String(ev));let t=Math.min(500,Math.max(1,e));ey(1),ew(t),ek(String(t))},onKeyDown:e=>{if("Enter"!==e.key)return;let t=Number.parseInt(ej,10);if(!Number.isFinite(t))return void ek(String(ev));let r=Math.min(500,Math.max(1,t));ey(1),ew(r),ek(String(r))},className:"h-8 w-20 rounded-lg border border-black/10 bg-black/[0.02] px-2 text-xs text-text-primary outline-none transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10","aria-label":"Custom accounts per page",placeholder:"Custom"}),(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:["Page ",eN.page," / ",eN.totalPages]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("button",{type:"button",onClick:()=>ey(1),disabled:eN.page<=1||V||J,className:"flex h-8 items-center rounded-lg border border-black/10 px-3 text-xs text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5",children:"First Page"}),(0,a.jsx)("button",{type:"button",onClick:()=>ey(e=>Math.max(1,e-1)),disabled:eN.page<=1||V||J,className:"flex h-8 w-8 items-center justify-center rounded-lg border border-black/10 text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5","aria-label":"Previous accounts page",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"chevron_left"})}),(0,a.jsx)("button",{type:"button",onClick:()=>ey(e=>Math.min(eN.totalPages,e+1)),disabled:eN.page>=eN.totalPages||V||J,className:"flex h-8 w-8 items-center justify-center rounded-lg border border-black/10 text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5","aria-label":"Next accounts page",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"chevron_right"})}),(0,a.jsx)("button",{type:"button",onClick:()=>ey(eN.totalPages),disabled:eN.page>=eN.totalPages||V||J,className:"flex h-8 items-center rounded-lg border border-black/10 px-3 text-xs text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5",children:"Last Page"})]})]})}),(0,a.jsx)(x.wI,{isOpen:X,connection:ee,proxyPools:er,onSave:eO,onClose:()=>{Z(!1),et(null)}})]}):(0,a.jsx)(m.default,{padding:"lg",children:(0,a.jsxs)("div",{className:"text-center py-12",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[64px] text-text-muted opacity-20",children:eK.icon}),(0,a.jsx)("h3",{className:"mt-4 text-lg font-semibold text-text-primary",children:eK.title}),(0,a.jsx)("p",{className:"mt-2 text-sm text-text-muted max-w-md mx-auto",children:eK.description})]})}):(0,a.jsx)(m.default,{padding:"lg",children:(0,a.jsxs)("div",{className:"text-center py-12",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[64px] text-text-muted opacity-20",children:"cloud_off"}),(0,a.jsx)("h3",{className:"mt-4 text-lg font-semibold text-text-primary",children:"No Providers Connected"}),(0,a.jsx)("p",{className:"mt-2 text-sm text-text-muted max-w-md mx-auto",children:"Connect to providers with OAuth to track your API quota limits and usage."})]})})}}},e=>{e.O(0,[7504,1321,5497,8441,3794,7358],()=>e(e.s=7450)),_N_E=e.O()}]);