@techysy/10router 1.1.1 → 1.1.2

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 (993) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +7 -5
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +2 -2
  5. package/app/.next-cli-build/routes-manifest.json +12 -0
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +3 -3
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +4 -4
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  75. package/app/.next-cli-build/server/app/_global-error/page.js +2 -2
  76. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  78. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  79. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  80. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  81. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  82. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  83. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  84. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  86. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  87. package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
  88. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
  89. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
  90. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  91. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  92. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  94. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  96. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  98. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  100. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js +2 -2
  108. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/auth/verify-password/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/auth/verify-password/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +2 -2
  116. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  124. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  132. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  136. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js +2 -2
  138. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  148. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  150. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  152. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  154. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  156. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  158. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  160. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  162. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  164. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  166. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  168. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  170. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/init/route.js +1 -1
  172. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  174. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/keys/rotate/route.js +1 -1
  176. package/app/.next-cli-build/server/app/api/keys/rotate/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  178. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  184. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  192. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  194. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  196. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  198. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/models/custom/bulk/route.js +1 -1
  200. package/app/.next-cli-build/server/app/api/models/custom/bulk/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  202. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  204. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  206. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/network/egress-region/route.js +1 -0
  210. package/app/.next-cli-build/server/app/api/network/egress-region/route.js.nft.json +1 -0
  211. package/app/.next-cli-build/server/app/api/network/egress-region/route_client-reference-manifest.js +1 -0
  212. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  235. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  241. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  243. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js +1 -1
  245. package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js +1 -1
  247. package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -1
  249. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +2 -2
  251. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  253. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  255. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  257. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  261. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  263. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  267. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  271. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  273. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  285. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  287. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  291. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  293. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  295. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
  297. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  299. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  301. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  303. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  305. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  307. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  311. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  313. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  314. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  315. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  316. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  317. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  318. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  319. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  320. package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  321. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  323. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  325. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  326. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  327. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  329. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  331. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  333. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  335. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  337. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  341. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  342. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  343. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  345. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  346. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  347. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  349. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  351. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  353. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  354. package/app/.next-cli-build/server/app/api/usage/dashboard/route.js +1 -0
  355. package/app/.next-cli-build/server/app/api/usage/dashboard/route.js.nft.json +1 -0
  356. package/app/.next-cli-build/server/app/api/usage/dashboard/route_client-reference-manifest.js +1 -0
  357. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  358. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  359. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  360. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  361. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  362. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  363. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  364. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  365. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  366. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  367. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  368. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  369. package/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  370. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  371. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  372. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  373. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  374. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  375. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  376. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  377. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  378. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  379. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  380. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  381. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  382. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  383. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  384. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  385. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  386. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  387. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  388. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  389. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  390. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  391. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  392. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  393. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  394. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  395. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  396. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  397. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  398. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  399. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  400. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  401. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  402. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  403. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  404. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  405. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  406. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  407. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  408. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  409. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  410. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  411. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  412. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  413. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  414. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  415. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  416. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  417. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  418. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  419. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  420. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  421. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  422. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  423. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  424. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  425. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  426. package/app/.next-cli-build/server/app/callback.html +1 -1
  427. package/app/.next-cli-build/server/app/callback.rsc +5 -5
  428. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
  429. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  430. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +5 -5
  431. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  432. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
  433. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +7 -7
  434. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
  435. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  436. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  437. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  438. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +7 -7
  439. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  440. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  441. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  442. package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
  443. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +7 -7
  444. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  445. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  446. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  447. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  448. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +7 -7
  449. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  450. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  451. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  452. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
  453. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +7 -7
  454. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
  455. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  456. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  457. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
  458. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +7 -7
  459. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
  460. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  461. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  462. package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
  463. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +7 -7
  464. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
  465. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  466. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  467. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
  468. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +7 -7
  469. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
  470. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  471. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  472. package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
  473. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +7 -7
  474. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
  475. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  476. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  477. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
  478. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +7 -7
  479. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
  480. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  481. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  482. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +7 -7
  483. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +7 -7
  484. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +7 -7
  485. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  486. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  487. package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
  488. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +8 -8
  489. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
  490. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  491. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  492. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  493. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  494. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  495. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
  496. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
  497. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  498. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +5 -5
  499. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  500. package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
  501. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
  502. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
  503. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  504. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  505. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
  506. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +7 -7
  507. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
  508. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  509. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  510. package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
  511. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +7 -7
  512. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  513. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  514. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  515. package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
  516. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +7 -7
  517. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  518. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  519. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  520. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  521. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +7 -7
  522. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  523. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  524. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
  525. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  526. package/app/.next-cli-build/server/app/index.html +1 -1
  527. package/app/.next-cli-build/server/app/index.rsc +5 -5
  528. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
  529. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
  530. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  531. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  532. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  533. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  534. package/app/.next-cli-build/server/app/landing.html +1 -1
  535. package/app/.next-cli-build/server/app/landing.rsc +6 -6
  536. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
  537. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  538. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +6 -6
  539. package/app/.next-cli-build/server/app/login/page.js +1 -1
  540. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  541. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  542. package/app/.next-cli-build/server/app/login.html +1 -1
  543. package/app/.next-cli-build/server/app/login.rsc +6 -6
  544. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
  545. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  546. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
  547. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  548. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  549. package/app/.next-cli-build/server/app/page.js +1 -1
  550. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  551. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  552. package/app/.next-cli-build/server/app-paths-manifest.json +7 -5
  553. package/app/.next-cli-build/server/chunks/1159.js +5 -1
  554. package/app/.next-cli-build/server/chunks/1281.js +1 -0
  555. package/app/.next-cli-build/server/chunks/1377.js +1 -1
  556. package/app/.next-cli-build/server/chunks/1937.js +1 -1
  557. package/app/.next-cli-build/server/chunks/1968.js +1 -0
  558. package/app/.next-cli-build/server/chunks/2112.js +1 -1
  559. package/app/.next-cli-build/server/chunks/2120.js +1 -1
  560. package/app/.next-cli-build/server/chunks/2132.js +1 -1
  561. package/app/.next-cli-build/server/chunks/2179.js +1 -1
  562. package/app/.next-cli-build/server/chunks/2268.js +1 -0
  563. package/app/.next-cli-build/server/chunks/3395.js +1 -0
  564. package/app/.next-cli-build/server/chunks/3651.js +9 -9
  565. package/app/.next-cli-build/server/chunks/3662.js +1 -1
  566. package/app/.next-cli-build/server/chunks/3943.js +1 -1
  567. package/app/.next-cli-build/server/chunks/3962.js +1 -1
  568. package/app/.next-cli-build/server/chunks/4037.js +1 -1
  569. package/app/.next-cli-build/server/chunks/4055.js +1 -1
  570. package/app/.next-cli-build/server/chunks/4123.js +1 -1
  571. package/app/.next-cli-build/server/chunks/4531.js +1 -0
  572. package/app/.next-cli-build/server/chunks/4848.js +1 -0
  573. package/app/.next-cli-build/server/chunks/4862.js +1 -1
  574. package/app/.next-cli-build/server/chunks/4985.js +1 -1
  575. package/app/.next-cli-build/server/chunks/5330.js +9 -3
  576. package/app/.next-cli-build/server/chunks/5615.js +1 -1
  577. package/app/.next-cli-build/server/chunks/5781.js +1 -1
  578. package/app/.next-cli-build/server/chunks/6070.js +1 -1
  579. package/app/.next-cli-build/server/chunks/615.js +1 -1
  580. package/app/.next-cli-build/server/chunks/6212.js +1 -1
  581. package/app/.next-cli-build/server/chunks/6306.js +1 -1
  582. package/app/.next-cli-build/server/chunks/6326.js +1 -1
  583. package/app/.next-cli-build/server/chunks/6520.js +1 -0
  584. package/app/.next-cli-build/server/chunks/653.js +1 -1
  585. package/app/.next-cli-build/server/chunks/6763.js +1 -1
  586. package/app/.next-cli-build/server/chunks/6871.js +1 -1
  587. package/app/.next-cli-build/server/chunks/6960.js +1 -1
  588. package/app/.next-cli-build/server/chunks/7239.js +1 -1
  589. package/app/.next-cli-build/server/chunks/7247.js +1 -1
  590. package/app/.next-cli-build/server/chunks/7805.js +12 -3
  591. package/app/.next-cli-build/server/chunks/7843.js +1 -1
  592. package/app/.next-cli-build/server/chunks/808.js +1 -0
  593. package/app/.next-cli-build/server/chunks/8145.js +1 -1
  594. package/app/.next-cli-build/server/chunks/8410.js +1 -1
  595. package/app/.next-cli-build/server/chunks/8546.js +1 -1
  596. package/app/.next-cli-build/server/chunks/8635.js +1 -1
  597. package/app/.next-cli-build/server/chunks/869.js +1 -1
  598. package/app/.next-cli-build/server/chunks/877.js +1 -1
  599. package/app/.next-cli-build/server/chunks/8838.js +1 -1
  600. package/app/.next-cli-build/server/chunks/8895.js +5 -5
  601. package/app/.next-cli-build/server/chunks/8910.js +1 -1
  602. package/app/.next-cli-build/server/chunks/8920.js +1 -1
  603. package/app/.next-cli-build/server/chunks/8988.js +1 -0
  604. package/app/.next-cli-build/server/chunks/9609.js +1 -1
  605. package/app/.next-cli-build/server/chunks/9927.js +1 -0
  606. package/app/.next-cli-build/server/instrumentation.js +1 -1
  607. package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
  608. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  609. package/app/.next-cli-build/server/middleware.js +5 -5
  610. package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
  611. package/app/.next-cli-build/server/pages/404.html +1 -1
  612. package/app/.next-cli-build/server/pages/500.html +1 -1
  613. package/app/.next-cli-build/static/0UB55QZoHsERFCcuezqF6/_buildManifest.js +1 -0
  614. package/app/.next-cli-build/static/chunks/1321-c260dcc02a05636e.js +1 -0
  615. package/app/.next-cli-build/static/chunks/5497-5558a45da400f48e.js +7 -0
  616. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-df8dac9c150f9f1e.js → page-b0d4fedb7b84fe8a.js} +8 -8
  617. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-df0197fa38b2dd6d.js +1 -0
  618. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-6fa55fa547594c8c.js +14 -0
  619. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/{page-e5e78bb5f4aa4063.js → page-c44ffd57ebec461e.js} +1 -1
  620. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-c640efd5ea8efb38.js +1 -0
  621. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-bf55da31ba675aa9.js +1 -0
  622. package/app/.next-cli-build/static/chunks/app/_global-error/page-f2f9b74f8844db3a.js +1 -0
  623. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-f2f9b74f8844db3a.js +1 -0
  624. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-f2f9b74f8844db3a.js +1 -0
  625. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-f2f9b74f8844db3a.js +1 -0
  626. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-f2f9b74f8844db3a.js +1 -0
  627. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-f2f9b74f8844db3a.js +1 -0
  628. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-f2f9b74f8844db3a.js +1 -0
  629. package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-f2f9b74f8844db3a.js +1 -0
  630. package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-f2f9b74f8844db3a.js +1 -0
  631. package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-f2f9b74f8844db3a.js +1 -0
  632. package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-f2f9b74f8844db3a.js +1 -0
  633. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-f2f9b74f8844db3a.js +1 -0
  634. package/app/.next-cli-build/static/chunks/app/api/auth/verify-password/route-f2f9b74f8844db3a.js +1 -0
  635. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-f2f9b74f8844db3a.js +1 -0
  636. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f2f9b74f8844db3a.js +1 -0
  637. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-f2f9b74f8844db3a.js +1 -0
  638. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-f2f9b74f8844db3a.js +1 -0
  639. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-f2f9b74f8844db3a.js +1 -0
  640. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-f2f9b74f8844db3a.js +1 -0
  641. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-f2f9b74f8844db3a.js +1 -0
  642. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-f2f9b74f8844db3a.js +1 -0
  643. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-f2f9b74f8844db3a.js +1 -0
  644. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-f2f9b74f8844db3a.js +1 -0
  645. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-f2f9b74f8844db3a.js +1 -0
  646. package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-f2f9b74f8844db3a.js +1 -0
  647. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-f2f9b74f8844db3a.js +1 -0
  648. package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-f2f9b74f8844db3a.js +1 -0
  649. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-f2f9b74f8844db3a.js +1 -0
  650. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-f2f9b74f8844db3a.js +1 -0
  651. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-f2f9b74f8844db3a.js +1 -0
  652. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-f2f9b74f8844db3a.js +1 -0
  653. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-f2f9b74f8844db3a.js +1 -0
  654. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-f2f9b74f8844db3a.js +1 -0
  655. package/app/.next-cli-build/static/chunks/app/api/combos/route-f2f9b74f8844db3a.js +1 -0
  656. package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-f2f9b74f8844db3a.js +1 -0
  657. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-f2f9b74f8844db3a.js +1 -0
  658. package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-f2f9b74f8844db3a.js +1 -0
  659. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-f2f9b74f8844db3a.js +1 -0
  660. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-f2f9b74f8844db3a.js +1 -0
  661. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-f2f9b74f8844db3a.js +1 -0
  662. package/app/.next-cli-build/static/chunks/app/api/health/route-f2f9b74f8844db3a.js +1 -0
  663. package/app/.next-cli-build/static/chunks/app/api/init/route-f2f9b74f8844db3a.js +1 -0
  664. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-f2f9b74f8844db3a.js +1 -0
  665. package/app/.next-cli-build/static/chunks/app/api/keys/rotate/route-f2f9b74f8844db3a.js +1 -0
  666. package/app/.next-cli-build/static/chunks/app/api/keys/route-f2f9b74f8844db3a.js +1 -0
  667. package/app/.next-cli-build/static/chunks/app/api/locale/route-f2f9b74f8844db3a.js +1 -0
  668. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-f2f9b74f8844db3a.js +1 -0
  669. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-f2f9b74f8844db3a.js +1 -0
  670. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-f2f9b74f8844db3a.js +1 -0
  671. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f2f9b74f8844db3a.js +1 -0
  672. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-f2f9b74f8844db3a.js +1 -0
  673. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-f2f9b74f8844db3a.js +1 -0
  674. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-f2f9b74f8844db3a.js +1 -0
  675. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-f2f9b74f8844db3a.js +1 -0
  676. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-f2f9b74f8844db3a.js +1 -0
  677. package/app/.next-cli-build/static/chunks/app/api/models/custom/bulk/route-f2f9b74f8844db3a.js +1 -0
  678. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-f2f9b74f8844db3a.js +1 -0
  679. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-f2f9b74f8844db3a.js +1 -0
  680. package/app/.next-cli-build/static/chunks/app/api/models/route-f2f9b74f8844db3a.js +1 -0
  681. package/app/.next-cli-build/static/chunks/app/api/models/test/route-f2f9b74f8844db3a.js +1 -0
  682. package/app/.next-cli-build/static/chunks/app/api/network/egress-region/route-f2f9b74f8844db3a.js +1 -0
  683. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-f2f9b74f8844db3a.js +1 -0
  684. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-f2f9b74f8844db3a.js +1 -0
  685. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/checkin/route-f2f9b74f8844db3a.js +1 -0
  686. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/export/route-f2f9b74f8844db3a.js +1 -0
  687. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-f2f9b74f8844db3a.js +1 -0
  688. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-f2f9b74f8844db3a.js +1 -0
  689. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-f2f9b74f8844db3a.js +1 -0
  690. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-f2f9b74f8844db3a.js +1 -0
  691. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-f2f9b74f8844db3a.js +1 -0
  692. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-f2f9b74f8844db3a.js +1 -0
  693. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-f2f9b74f8844db3a.js +1 -0
  694. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-f2f9b74f8844db3a.js +1 -0
  695. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-f2f9b74f8844db3a.js +1 -0
  696. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-f2f9b74f8844db3a.js +1 -0
  697. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-f2f9b74f8844db3a.js +1 -0
  698. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-f2f9b74f8844db3a.js +1 -0
  699. package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/export/route-f2f9b74f8844db3a.js +1 -0
  700. package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/import/route-f2f9b74f8844db3a.js +1 -0
  701. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-f2f9b74f8844db3a.js +1 -0
  702. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-f2f9b74f8844db3a.js +1 -0
  703. package/app/.next-cli-build/static/chunks/app/api/pricing/route-f2f9b74f8844db3a.js +1 -0
  704. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-f2f9b74f8844db3a.js +1 -0
  705. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-f2f9b74f8844db3a.js +1 -0
  706. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-f2f9b74f8844db3a.js +1 -0
  707. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-f2f9b74f8844db3a.js +1 -0
  708. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-f2f9b74f8844db3a.js +1 -0
  709. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-f2f9b74f8844db3a.js +1 -0
  710. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-f2f9b74f8844db3a.js +1 -0
  711. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-f2f9b74f8844db3a.js +1 -0
  712. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-f2f9b74f8844db3a.js +1 -0
  713. package/app/.next-cli-build/static/chunks/app/api/providers/route-f2f9b74f8844db3a.js +1 -0
  714. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-f2f9b74f8844db3a.js +1 -0
  715. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-f2f9b74f8844db3a.js +1 -0
  716. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-f2f9b74f8844db3a.js +1 -0
  717. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-f2f9b74f8844db3a.js +1 -0
  718. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-f2f9b74f8844db3a.js +1 -0
  719. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-f2f9b74f8844db3a.js +1 -0
  720. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-f2f9b74f8844db3a.js +1 -0
  721. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-f2f9b74f8844db3a.js +1 -0
  722. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-f2f9b74f8844db3a.js +1 -0
  723. package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-f2f9b74f8844db3a.js +1 -0
  724. package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-f2f9b74f8844db3a.js +1 -0
  725. package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-f2f9b74f8844db3a.js +1 -0
  726. package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-f2f9b74f8844db3a.js +1 -0
  727. package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-f2f9b74f8844db3a.js +1 -0
  728. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-f2f9b74f8844db3a.js +1 -0
  729. package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-f2f9b74f8844db3a.js +1 -0
  730. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-f2f9b74f8844db3a.js +1 -0
  731. package/app/.next-cli-build/static/chunks/app/api/settings/database/import-usage/route-f2f9b74f8844db3a.js +1 -0
  732. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-f2f9b74f8844db3a.js +1 -0
  733. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-f2f9b74f8844db3a.js +1 -0
  734. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-f2f9b74f8844db3a.js +1 -0
  735. package/app/.next-cli-build/static/chunks/app/api/settings/route-f2f9b74f8844db3a.js +1 -0
  736. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-f2f9b74f8844db3a.js +1 -0
  737. package/app/.next-cli-build/static/chunks/app/api/tags/route-f2f9b74f8844db3a.js +1 -0
  738. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-f2f9b74f8844db3a.js +1 -0
  739. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-f2f9b74f8844db3a.js +1 -0
  740. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-f2f9b74f8844db3a.js +1 -0
  741. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-f2f9b74f8844db3a.js +1 -0
  742. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-f2f9b74f8844db3a.js +1 -0
  743. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-f2f9b74f8844db3a.js +1 -0
  744. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-f2f9b74f8844db3a.js +1 -0
  745. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-f2f9b74f8844db3a.js +1 -0
  746. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-f2f9b74f8844db3a.js +1 -0
  747. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-f2f9b74f8844db3a.js +1 -0
  748. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-f2f9b74f8844db3a.js +1 -0
  749. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-f2f9b74f8844db3a.js +1 -0
  750. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-f2f9b74f8844db3a.js +1 -0
  751. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-f2f9b74f8844db3a.js +1 -0
  752. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-f2f9b74f8844db3a.js +1 -0
  753. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-f2f9b74f8844db3a.js +1 -0
  754. package/app/.next-cli-build/static/chunks/app/api/usage/dashboard/route-f2f9b74f8844db3a.js +1 -0
  755. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-f2f9b74f8844db3a.js +1 -0
  756. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-f2f9b74f8844db3a.js +1 -0
  757. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-f2f9b74f8844db3a.js +1 -0
  758. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-f2f9b74f8844db3a.js +1 -0
  759. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-f2f9b74f8844db3a.js +1 -0
  760. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-f2f9b74f8844db3a.js +1 -0
  761. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-f2f9b74f8844db3a.js +1 -0
  762. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-f2f9b74f8844db3a.js +1 -0
  763. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-f2f9b74f8844db3a.js +1 -0
  764. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-f2f9b74f8844db3a.js +1 -0
  765. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-f2f9b74f8844db3a.js +1 -0
  766. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-f2f9b74f8844db3a.js +1 -0
  767. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-f2f9b74f8844db3a.js +1 -0
  768. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-f2f9b74f8844db3a.js +1 -0
  769. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-f2f9b74f8844db3a.js +1 -0
  770. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-f2f9b74f8844db3a.js +1 -0
  771. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-f2f9b74f8844db3a.js +1 -0
  772. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-f2f9b74f8844db3a.js +1 -0
  773. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-f2f9b74f8844db3a.js +1 -0
  774. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-f2f9b74f8844db3a.js +1 -0
  775. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-f2f9b74f8844db3a.js +1 -0
  776. package/app/.next-cli-build/static/chunks/app/api/v1/route-f2f9b74f8844db3a.js +1 -0
  777. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-f2f9b74f8844db3a.js +1 -0
  778. package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-f2f9b74f8844db3a.js +1 -0
  779. package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-f2f9b74f8844db3a.js +1 -0
  780. package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-f2f9b74f8844db3a.js +1 -0
  781. package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-f2f9b74f8844db3a.js +1 -0
  782. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-f2f9b74f8844db3a.js +1 -0
  783. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-f2f9b74f8844db3a.js +1 -0
  784. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-f2f9b74f8844db3a.js +1 -0
  785. package/app/.next-cli-build/static/chunks/app/api/version/route-f2f9b74f8844db3a.js +1 -0
  786. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-f2f9b74f8844db3a.js +1 -0
  787. package/app/.next-cli-build/static/chunks/app/api/version/update/route-f2f9b74f8844db3a.js +1 -0
  788. package/app/.next-cli-build/static/chunks/app/landing/page-3c92a951f3cc5eee.js +1 -0
  789. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-f2f9b74f8844db3a.js +1 -0
  790. package/app/.next-cli-build/static/chunks/app/page-f2f9b74f8844db3a.js +1 -0
  791. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-f2f9b74f8844db3a.js +1 -0
  792. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-f2f9b74f8844db3a.js +1 -0
  793. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-f2f9b74f8844db3a.js +1 -0
  794. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-f2f9b74f8844db3a.js +1 -0
  795. package/app/.next-cli-build/static/css/246bebea1dda73a2.css +1 -0
  796. package/app/package.json +1 -1
  797. package/app/public/i18n/changelog/en.md +15 -0
  798. package/app/public/i18n/changelog/zh-CN.md +15 -0
  799. package/app/public/i18n/changelog/zh-TW.md +15 -0
  800. package/app/public/i18n/literals/zh-CN.json +1755 -1699
  801. package/app/public/i18n/literals/zh-TW.json +578 -537
  802. package/app/public/providers/siliconflow-cn.png +0 -0
  803. package/app/src/lib/oauth/xiaomiIdentity.js +41 -0
  804. package/package.json +1 -1
  805. package/app/.next-cli-build/server/chunks/3879.js +0 -1
  806. package/app/.next-cli-build/server/chunks/3901.js +0 -1
  807. package/app/.next-cli-build/server/chunks/4049.js +0 -1
  808. package/app/.next-cli-build/server/chunks/4840.js +0 -1
  809. package/app/.next-cli-build/server/chunks/5612.js +0 -1
  810. package/app/.next-cli-build/server/chunks/937.js +0 -1
  811. package/app/.next-cli-build/server/chunks/9679.js +0 -1
  812. package/app/.next-cli-build/static/ZVF_AsRusUqo_O-OyJWPo/_buildManifest.js +0 -1
  813. package/app/.next-cli-build/static/chunks/1321-ad1ba3dfb4f417dd.js +0 -1
  814. package/app/.next-cli-build/static/chunks/5497-8b67dd598415a05b.js +0 -7
  815. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-d8fb1a26657cc67f.js +0 -1
  816. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-f9d2dd98fde8ba67.js +0 -14
  817. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-1ce31613b04ec926.js +0 -1
  818. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-a442053054654766.js +0 -1
  819. package/app/.next-cli-build/static/chunks/app/_global-error/page-73a852c9be713797.js +0 -1
  820. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-73a852c9be713797.js +0 -1
  821. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-73a852c9be713797.js +0 -1
  822. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-73a852c9be713797.js +0 -1
  823. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-73a852c9be713797.js +0 -1
  824. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-73a852c9be713797.js +0 -1
  825. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-73a852c9be713797.js +0 -1
  826. package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-73a852c9be713797.js +0 -1
  827. package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-73a852c9be713797.js +0 -1
  828. package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-73a852c9be713797.js +0 -1
  829. package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-73a852c9be713797.js +0 -1
  830. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-73a852c9be713797.js +0 -1
  831. package/app/.next-cli-build/static/chunks/app/api/auth/verify-password/route-73a852c9be713797.js +0 -1
  832. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-73a852c9be713797.js +0 -1
  833. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-73a852c9be713797.js +0 -1
  834. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-73a852c9be713797.js +0 -1
  835. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-73a852c9be713797.js +0 -1
  836. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-73a852c9be713797.js +0 -1
  837. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-73a852c9be713797.js +0 -1
  838. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-73a852c9be713797.js +0 -1
  839. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-73a852c9be713797.js +0 -1
  840. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-73a852c9be713797.js +0 -1
  841. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-73a852c9be713797.js +0 -1
  842. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-73a852c9be713797.js +0 -1
  843. package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-73a852c9be713797.js +0 -1
  844. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-73a852c9be713797.js +0 -1
  845. package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-73a852c9be713797.js +0 -1
  846. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-73a852c9be713797.js +0 -1
  847. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-73a852c9be713797.js +0 -1
  848. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-73a852c9be713797.js +0 -1
  849. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-73a852c9be713797.js +0 -1
  850. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-73a852c9be713797.js +0 -1
  851. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-73a852c9be713797.js +0 -1
  852. package/app/.next-cli-build/static/chunks/app/api/combos/route-73a852c9be713797.js +0 -1
  853. package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-73a852c9be713797.js +0 -1
  854. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-73a852c9be713797.js +0 -1
  855. package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-73a852c9be713797.js +0 -1
  856. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-73a852c9be713797.js +0 -1
  857. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-73a852c9be713797.js +0 -1
  858. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-73a852c9be713797.js +0 -1
  859. package/app/.next-cli-build/static/chunks/app/api/health/route-73a852c9be713797.js +0 -1
  860. package/app/.next-cli-build/static/chunks/app/api/init/route-73a852c9be713797.js +0 -1
  861. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-73a852c9be713797.js +0 -1
  862. package/app/.next-cli-build/static/chunks/app/api/keys/rotate/route-73a852c9be713797.js +0 -1
  863. package/app/.next-cli-build/static/chunks/app/api/keys/route-73a852c9be713797.js +0 -1
  864. package/app/.next-cli-build/static/chunks/app/api/locale/route-73a852c9be713797.js +0 -1
  865. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-73a852c9be713797.js +0 -1
  866. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-73a852c9be713797.js +0 -1
  867. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-73a852c9be713797.js +0 -1
  868. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-73a852c9be713797.js +0 -1
  869. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-73a852c9be713797.js +0 -1
  870. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-73a852c9be713797.js +0 -1
  871. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-73a852c9be713797.js +0 -1
  872. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-73a852c9be713797.js +0 -1
  873. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-73a852c9be713797.js +0 -1
  874. package/app/.next-cli-build/static/chunks/app/api/models/custom/bulk/route-73a852c9be713797.js +0 -1
  875. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-73a852c9be713797.js +0 -1
  876. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-73a852c9be713797.js +0 -1
  877. package/app/.next-cli-build/static/chunks/app/api/models/route-73a852c9be713797.js +0 -1
  878. package/app/.next-cli-build/static/chunks/app/api/models/test/route-73a852c9be713797.js +0 -1
  879. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-73a852c9be713797.js +0 -1
  880. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-73a852c9be713797.js +0 -1
  881. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/checkin/route-73a852c9be713797.js +0 -1
  882. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/export/route-73a852c9be713797.js +0 -1
  883. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-73a852c9be713797.js +0 -1
  884. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-73a852c9be713797.js +0 -1
  885. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-73a852c9be713797.js +0 -1
  886. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-73a852c9be713797.js +0 -1
  887. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-73a852c9be713797.js +0 -1
  888. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-73a852c9be713797.js +0 -1
  889. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-73a852c9be713797.js +0 -1
  890. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-73a852c9be713797.js +0 -1
  891. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-73a852c9be713797.js +0 -1
  892. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-73a852c9be713797.js +0 -1
  893. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-73a852c9be713797.js +0 -1
  894. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-73a852c9be713797.js +0 -1
  895. package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/export/route-73a852c9be713797.js +0 -1
  896. package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/import/route-73a852c9be713797.js +0 -1
  897. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-73a852c9be713797.js +0 -1
  898. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-73a852c9be713797.js +0 -1
  899. package/app/.next-cli-build/static/chunks/app/api/pricing/route-73a852c9be713797.js +0 -1
  900. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-73a852c9be713797.js +0 -1
  901. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-73a852c9be713797.js +0 -1
  902. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-73a852c9be713797.js +0 -1
  903. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-73a852c9be713797.js +0 -1
  904. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-73a852c9be713797.js +0 -1
  905. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-73a852c9be713797.js +0 -1
  906. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-73a852c9be713797.js +0 -1
  907. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-73a852c9be713797.js +0 -1
  908. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-73a852c9be713797.js +0 -1
  909. package/app/.next-cli-build/static/chunks/app/api/providers/route-73a852c9be713797.js +0 -1
  910. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-73a852c9be713797.js +0 -1
  911. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-73a852c9be713797.js +0 -1
  912. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-73a852c9be713797.js +0 -1
  913. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-73a852c9be713797.js +0 -1
  914. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-73a852c9be713797.js +0 -1
  915. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-73a852c9be713797.js +0 -1
  916. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-73a852c9be713797.js +0 -1
  917. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-73a852c9be713797.js +0 -1
  918. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-73a852c9be713797.js +0 -1
  919. package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-73a852c9be713797.js +0 -1
  920. package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-73a852c9be713797.js +0 -1
  921. package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-73a852c9be713797.js +0 -1
  922. package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-73a852c9be713797.js +0 -1
  923. package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-73a852c9be713797.js +0 -1
  924. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-73a852c9be713797.js +0 -1
  925. package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-73a852c9be713797.js +0 -1
  926. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-73a852c9be713797.js +0 -1
  927. package/app/.next-cli-build/static/chunks/app/api/settings/database/import-usage/route-73a852c9be713797.js +0 -1
  928. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-73a852c9be713797.js +0 -1
  929. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-73a852c9be713797.js +0 -1
  930. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-73a852c9be713797.js +0 -1
  931. package/app/.next-cli-build/static/chunks/app/api/settings/route-73a852c9be713797.js +0 -1
  932. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-73a852c9be713797.js +0 -1
  933. package/app/.next-cli-build/static/chunks/app/api/tags/route-73a852c9be713797.js +0 -1
  934. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-73a852c9be713797.js +0 -1
  935. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-73a852c9be713797.js +0 -1
  936. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-73a852c9be713797.js +0 -1
  937. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-73a852c9be713797.js +0 -1
  938. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-73a852c9be713797.js +0 -1
  939. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-73a852c9be713797.js +0 -1
  940. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-73a852c9be713797.js +0 -1
  941. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-73a852c9be713797.js +0 -1
  942. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-73a852c9be713797.js +0 -1
  943. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-73a852c9be713797.js +0 -1
  944. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-73a852c9be713797.js +0 -1
  945. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-73a852c9be713797.js +0 -1
  946. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-73a852c9be713797.js +0 -1
  947. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-73a852c9be713797.js +0 -1
  948. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-73a852c9be713797.js +0 -1
  949. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-73a852c9be713797.js +0 -1
  950. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-73a852c9be713797.js +0 -1
  951. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-73a852c9be713797.js +0 -1
  952. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-73a852c9be713797.js +0 -1
  953. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-73a852c9be713797.js +0 -1
  954. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-73a852c9be713797.js +0 -1
  955. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-73a852c9be713797.js +0 -1
  956. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-73a852c9be713797.js +0 -1
  957. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-73a852c9be713797.js +0 -1
  958. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-73a852c9be713797.js +0 -1
  959. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-73a852c9be713797.js +0 -1
  960. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-73a852c9be713797.js +0 -1
  961. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-73a852c9be713797.js +0 -1
  962. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-73a852c9be713797.js +0 -1
  963. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-73a852c9be713797.js +0 -1
  964. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-73a852c9be713797.js +0 -1
  965. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-73a852c9be713797.js +0 -1
  966. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-73a852c9be713797.js +0 -1
  967. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-73a852c9be713797.js +0 -1
  968. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-73a852c9be713797.js +0 -1
  969. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-73a852c9be713797.js +0 -1
  970. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-73a852c9be713797.js +0 -1
  971. package/app/.next-cli-build/static/chunks/app/api/v1/route-73a852c9be713797.js +0 -1
  972. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-73a852c9be713797.js +0 -1
  973. package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-73a852c9be713797.js +0 -1
  974. package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-73a852c9be713797.js +0 -1
  975. package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-73a852c9be713797.js +0 -1
  976. package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-73a852c9be713797.js +0 -1
  977. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-73a852c9be713797.js +0 -1
  978. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-73a852c9be713797.js +0 -1
  979. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-73a852c9be713797.js +0 -1
  980. package/app/.next-cli-build/static/chunks/app/api/version/route-73a852c9be713797.js +0 -1
  981. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-73a852c9be713797.js +0 -1
  982. package/app/.next-cli-build/static/chunks/app/api/version/update/route-73a852c9be713797.js +0 -1
  983. package/app/.next-cli-build/static/chunks/app/landing/page-da7215e0796dbf9b.js +0 -1
  984. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-73a852c9be713797.js +0 -1
  985. package/app/.next-cli-build/static/chunks/app/page-73a852c9be713797.js +0 -1
  986. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-73a852c9be713797.js +0 -1
  987. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-73a852c9be713797.js +0 -1
  988. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-73a852c9be713797.js +0 -1
  989. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-73a852c9be713797.js +0 -1
  990. package/app/.next-cli-build/static/css/adecbbef384db8e1.css +0 -1
  991. package/app/public/providers/gorouter.svg +0 -1
  992. package/app/public/providers/tabiauto.svg +0 -1
  993. /package/app/.next-cli-build/static/{ZVF_AsRusUqo_O-OyJWPo → 0UB55QZoHsERFCcuezqF6}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8460],{67455:(e,t,r)=>{Promise.resolve().then(r.bind(r,97678))},97678:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>T});var s=r(95155),a=r(12115),l=r(14051),i=r.n(l),n=r(35497),o=r(67852),d=r(8247),c=r(90620),p=r(88105),m=r(98500),x=r.n(m),u=r(65921),h=r(38003),f=r(73006);let g={available:{icon:"check_circle",color:"#22c55e",label:"Available"},cooldown:{icon:"schedule",color:"#f59e0b",label:"Cooldown"},unavailable:{icon:"error",color:"#ef4444",label:"Unavailable"},unknown:{icon:"help",color:"#6b7280",label:"Unknown"}};function y(){let[e,t]=(0,a.useState)(null),[r,l]=(0,a.useState)(!0),[i,o]=(0,a.useState)(!1),[d,c]=(0,a.useState)(null),p=(0,a.useRef)(null),m=(0,u.i)(),x=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/models/availability");if(e.ok){let r=await e.json();t(r)}}catch{}finally{l(!1)}},[]);(0,a.useEffect)(()=>{x();let e=setInterval(x,3e4);return()=>clearInterval(e)},[x]),(0,a.useEffect)(()=>{let e=e=>{p.current&&!p.current.contains(e.target)&&o(!1)};return i&&document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[i]);let h=async(e,t)=>{c(`${e}:${t}`);try{(await fetch("/api/models/availability",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clearCooldown",provider:e,model:t})})).ok?(m.success(`Cooldown cleared for ${t}`),await x()):m.error("Failed to clear cooldown")}catch{m.error("Failed to clear cooldown")}finally{c(null)}};if(r)return null;let f=e?.models||[],y=0===(e?.unavailableCount||f.filter(e=>"available"!==e.status).length),b={};return f.forEach(e=>{if("available"===e.status)return;let t=e.provider||"unknown";b[t]||(b[t]=[]),b[t].push(e)}),(0,s.jsx)("div",{className:"relative",ref:p,children:i&&(0,s.jsxs)("div",{className:"absolute top-full right-0 mt-2 w-80 bg-surface border border-border rounded-xl shadow-2xl z-50 overflow-hidden",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border bg-bg",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",style:{color:y?"#22c55e":"#f59e0b"},children:y?"verified":"warning"}),(0,s.jsx)("span",{className:"text-sm font-semibold text-text-main",children:"Model Status"})]}),(0,s.jsx)("button",{onClick:x,className:"p-1 rounded-lg hover:bg-surface text-text-muted hover:text-text-main transition-colors",title:"Refresh",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"refresh"})})]}),(0,s.jsx)("div",{className:"px-4 py-3 max-h-60 overflow-y-auto",children:y?(0,s.jsx)("p",{className:"text-sm text-text-muted text-center py-2",children:"All models are responding normally."}):(0,s.jsx)("div",{className:"flex flex-col gap-2.5",children:Object.entries(b).map(([e,t])=>(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-xs font-semibold text-text-main mb-1.5 capitalize",children:e}),(0,s.jsx)("div",{className:"flex flex-col gap-1",children:t.map(e=>{let t=g[e.status]||g.unknown,r=d===`${e.provider}:${e.model}`;return(0,s.jsxs)("div",{className:"flex items-center justify-between px-2.5 py-1.5 rounded-lg bg-surface/30",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] shrink-0",style:{color:t.color},children:t.icon}),(0,s.jsx)("span",{className:"font-mono text-xs text-text-main truncate",children:e.model})]}),"cooldown"===e.status&&(0,s.jsx)(n.$n,{size:"sm",variant:"ghost",onClick:()=>h(e.provider,e.model),disabled:r,className:"text-[10px] px-1.5! py-0.5! ml-2",children:r?"...":"Clear"})]},`${e.provider}-${e.model}`)})})]},e))})})]})})}let b={openai:{title:"Add OpenAI Compatible",type:"openai-compatible",defaultBaseUrl:"https://api.openai.com/v1",namePlaceholder:"OpenAI Compatible (Prod)",prefixPlaceholder:"oc-prod",baseUrlHint:"Use the base URL (ending in /v1) for your OpenAI-compatible API.",modelIdPlaceholder:"e.g. gpt-4, claude-3-opus",errorLabel:"OpenAI Compatible",hasApiType:!0},anthropic:{title:"Add Anthropic Compatible",type:"anthropic-compatible",defaultBaseUrl:"https://api.anthropic.com/v1",namePlaceholder:"Anthropic Compatible (Prod)",prefixPlaceholder:"ac-prod",baseUrlHint:"Use the base URL (ending in /v1) for your Anthropic-compatible API. The system will append /messages.",modelIdPlaceholder:"e.g. claude-3-opus",errorLabel:"Anthropic Compatible",hasApiType:!1}},v=[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses API"}];function j({variant:e,isOpen:t,onClose:r,onCreated:l}){let i=b[e],o=()=>({name:"",prefix:"",...i.hasApiType?{apiType:"chat"}:{},baseUrl:i.defaultBaseUrl}),[d,c]=(0,a.useState)(o),[p,m]=(0,a.useState)(!1),[x,u]=(0,a.useState)(""),[h,f]=(0,a.useState)(""),[g,y]=(0,a.useState)(""),[N,T]=(0,a.useState)(!1),[w,k]=(0,a.useState)(null);(0,a.useEffect)(()=>{i.hasApiType?c(e=>({...e,baseUrl:i.defaultBaseUrl})):t&&(k(null),f(""),y(""),u(""))},[i.hasApiType?d.apiType:t]);let C=async()=>{if(d.name.trim()&&d.prefix.trim()&&d.baseUrl.trim()){m(!0),u("");try{let e=await fetch("/api/provider-nodes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:d.name,prefix:d.prefix,...i.hasApiType?{apiType:d.apiType}:{},baseUrl:d.baseUrl,type:i.type})}),t=await e.json();e.ok?(l(t.node),c(o()),f(""),k(null),u("")):u(t?.error||"Failed to create provider")}catch(e){console.log(`Error creating ${i.errorLabel} node:`,e),u("Network error creating provider")}finally{m(!1)}}},A=async()=>{T(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:d.baseUrl,apiKey:h,type:i.type,modelId:g.trim()||void 0})}),t=await e.json();k(t)}catch{k({valid:!1,error:"Network error"})}finally{T(!1)}};return(0,s.jsx)(n.aF,{isOpen:t,title:i.title,onClose:r,children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(n.pd,{label:"Name",value:d.name,onChange:e=>c({...d,name:e.target.value}),placeholder:i.namePlaceholder,hint:"Required. A friendly label for this node."}),(0,s.jsx)(n.pd,{label:"Prefix",value:d.prefix,onChange:e=>c({...d,prefix:e.target.value}),placeholder:i.prefixPlaceholder,hint:"Required. Used as the provider prefix for model IDs."}),i.hasApiType&&(0,s.jsx)(n.l6,{label:"API Type",options:v,value:d.apiType,onChange:e=>c({...d,apiType:e.target.value})}),(0,s.jsx)(n.pd,{label:"Base URL",value:d.baseUrl,onChange:e=>c({...d,baseUrl:e.target.value}),placeholder:i.defaultBaseUrl,hint:i.baseUrlHint}),(0,s.jsx)(n.pd,{label:"API Key (for Check)",type:"password",value:h,onChange:e=>f(e.target.value)}),(0,s.jsx)(n.pd,{label:"Model ID (optional)",value:g,onChange:e=>y(e.target.value),placeholder:i.modelIdPlaceholder,hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[(0,s.jsx)(n.$n,{onClick:A,disabled:!h||N||!d.baseUrl.trim(),variant:"secondary",className:"w-full sm:w-auto",children:N?"Checking...":"Check"}),(()=>{if(!w)return null;let{valid:e,error:t,method:r}=w;return e?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.Ex,{variant:"success",children:"Valid"}),"chat"===r&&(0,s.jsx)("span",{className:"text-sm text-text-muted",children:"(via inference test)"})]}):(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)(n.Ex,{variant:"error",children:"Invalid"}),t&&(0,s.jsx)("span",{className:"text-sm text-red-500",children:t})]})})()]}),x&&(0,s.jsx)("div",{className:"rounded border border-red-500/40 bg-red-500/10 px-3 py-2 text-sm text-red-500",children:x}),(0,s.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,s.jsx)(n.$n,{onClick:C,fullWidth:!0,disabled:!d.name.trim()||!d.prefix.trim()||!d.baseUrl.trim()||p,children:p?"Creating...":"Create"}),(0,s.jsx)(n.$n,{onClick:r,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function N(e,t,r){let a=[];if(e>0&&a.push((0,s.jsxs)(n.Ex,{variant:"success",size:"sm",dot:!0,children:[e," Connected"]},"connected")),t>0){let e=r?`${t} Error (${r})`:`${t} Error`;a.push((0,s.jsx)(n.Ex,{variant:"error",size:"sm",dot:!0,children:e},"error"))}return 0===a.length?(0,s.jsx)("span",{className:"text-text-muted",children:"No connections"}):a}function T(){let e,t,[r,l]=(0,a.useState)([]),[i,o]=(0,a.useState)([]),[d,m]=(0,a.useState)(!0),[x,g]=(0,a.useState)(!1),[b,v]=(0,a.useState)(!0),[N,T]=(0,a.useState)(!1),[A,I]=(0,a.useState)(!1),[E,$]=(0,a.useState)(null),[S,P]=(0,a.useState)(null),[O,R]=(0,a.useState)({}),[U,_]=(0,a.useState)(!1),z=(0,u.i)(),D=(0,h.C)(e=>e.query),q=(0,h.C)(e=>e.register),F=(0,h.C)(e=>e.unregister);(0,a.useEffect)(()=>(q("Search providers..."),()=>F()),[q,F]);let M=e=>!D.trim()||!!e&&e.toLowerCase().includes(D.trim().toLowerCase()),L=(e,t,r)=>{if(e.connected>0)return 0;if(t?.noAuth){let e;return+(!1===(e=O?.[r])||!0!==e&&!!t.topologyHiddenByDefault)}return U?0===e.total?3:2:1};(0,a.useEffect)(()=>{(async()=>{try{let[e,t,r]=await Promise.all([fetch("/api/providers"),fetch("/api/provider-nodes"),fetch("/api/settings",{cache:"no-store"})]),s=await e.json(),a=await t.json();if(e.ok&&l(s.connections||[]),t.ok&&o(a.nodes||[]),r.ok){let e=await r.json();R(e.topologyVisibility||{}),_(!0===e.providerDisabledLastSort),v(!1!==e.showCommunityProviders)}}catch(e){console.log("Error fetching data:",e)}finally{m(!1)}})()},[]);let H=(0,a.useCallback)(async(e,t)=>{let r={...O,[e]:t};R(r);try{if(!(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({topologyVisibility:r})})).ok)throw Error("Failed to update topology visibility")}catch(e){console.error("Error updating topology visibility:",e),R(O)}},[O]),J=(e,t)=>{let s=Array.isArray(t)?t:[t],a=r.filter(t=>t.provider===e&&s.includes(t.authType)),l=e=>{let t=Object.entries(e).some(([e,t])=>e.startsWith("modelLock_")&&t&&new Date(t).getTime()>Date.now());return"unavailable"!==e.testStatus||t?e.testStatus:"active"},i=a.filter(e=>{if(!1===e.isActive)return!1;let t=l(e);return"active"===t||"success"===t}).length,n=a.filter(e=>{let t=l(e);return"error"===t||"expired"===t||"unavailable"===t}),o=n.length,d=a.length,c=d>0&&a.every(e=>!1===e.isActive),p=n.sort((e,t)=>new Date(t.lastErrorAt||0)-new Date(e.lastErrorAt||0))[0];return{connected:i,error:o,total:d,errorCode:p?function(e){if(!e)return null;let t=e.lastErrorType;if("runtime_error"===t)return"RUNTIME";if("upstream_auth_error"===t||"auth_missing"===t||"token_refresh_failed"===t||"token_expired"===t)return"AUTH";if("upstream_rate_limited"===t)return"429";if("upstream_unavailable"===t)return"5XX";if("network_error"===t)return"NET";let r=Number(e.errorCode);if(Number.isFinite(r)&&r>=400)return String(r);let s=function(e){if(!e)return null;let t=e.match(/\b([45]\d{2})\b/);return t?t[1]:"ERR"}(e.lastError);if("401"===s||"403"===s)return"AUTH";if(s&&"ERR"!==s)return s;let a=(e.lastError||"").toLowerCase();return a.includes("runtime")||a.includes("not runnable")||a.includes("not installed")?"RUNTIME":a.includes("invalid api key")||a.includes("token invalid")||a.includes("revoked")||a.includes("unauthorized")?"AUTH":"ERR"}(p):null,errorTime:p?.lastErrorAt?function(e){if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let r=Math.floor(t/60);if(r<24)return`${r}h ago`;let s=Math.floor(r/24);return`${s}d ago`}(p.lastErrorAt):null,allDisabled:c}},K=async(e,t,s)=>{let a=Array.isArray(t)?t:[t],i=t=>t.provider===e&&a.includes(t.authType),n=r.filter(i);l(e=>e.map(e=>i(e)?{...e,isActive:s}:e)),await Promise.allSettled(n.map(e=>fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:s})})))},B=async(e,t=null)=>{if(!E){$("provider"===e?t:e),P(null);try{let r=await fetch("/api/providers/test-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:e,providerId:t})}),s=await r.json();if(P(s),s.summary){let{passed:e,failed:t,total:r}=s.summary;0===t?z.success(`${(0,f.Tl)("All")} ${r} ${(0,f.Tl)("tests passed")}`):z.warning(`${e}/${r} ${(0,f.Tl)("passed")}, ${t} ${(0,f.Tl)("failed")}`)}}catch(e){P({error:(0,f.Tl)("Test request failed")}),z.error((0,f.Tl)("Provider test failed"))}finally{$(null)}}},W=i.filter(e=>"openai-compatible"===e.type).map(e=>({id:e.id,name:e.name||"OpenAI Compatible",color:"#10A37F",textIcon:"OC",apiType:e.apiType})).filter(e=>M(e.name)),V=i.filter(e=>"anthropic-compatible"===e.type).map(e=>({id:e.id,name:e.name||"Anthropic Compatible",color:"#D97757",textIcon:"AC"})).filter(e=>M(e.name)),Q=(e,t)=>{if("kiro"===t)return["oauth","apikey","api_key"];let r=e?.authModes;return Array.isArray(r)?r.includes("apikey")?["oauth","apikey","api_key"]:"oauth":t in p.nJ||t in c.fg?["oauth","apikey","api_key"]:"oauth"},X=(e=Object.entries(c.zN).filter(([,e])=>!e.hidden&&M(e.name)),t="oauth",[...e].sort(([e,r],[s,a])=>{let l=J(e,t),i=J(s,t),n=L(l,r,e),o=L(i,a,s);if(n!==o)return n-o;let d=r.priority??999,c=a.priority??999;return d!==c?d-c:(r.name||"").localeCompare(a.name||"")})),Z=[...Object.entries(p.IS).filter(([,e])=>!e.hidden&&!(e.community&&!b)&&M(e.name)).map(([e,t])=>({key:e,info:t,stats:J(e,Q(t,e)),isFreeTier:!1})),...Object.entries(p.nJ).filter(([,e])=>!e.hidden&&!(e.community&&!b)&&M(e.name)&&(e.serviceKinds??["llm"]).includes("llm")).map(([e,t])=>({key:e,info:t,stats:J(e,Q(t,e)),isFreeTier:!0}))].sort((e,t)=>{let r=L(e.stats,e.info,e.key),s=L(t.stats,t.info,t.key);if(r!==s)return r-s;let a=!!t.info.noAuth-!!e.info.noAuth;if(0!==a)return a;let l=+!!e.info.community,i=+!!t.info.community;if(l!==i)return l-i;let n=e.info.priority??999,o=t.info.priority??999;return n!==o?n-o:(e.info.name||"").localeCompare(t.info.name||"")}),Y=Object.entries(c.fg).filter(([,e])=>!e.hidden&&(e.serviceKinds??["llm"]).includes("llm")&&M(e.name)).sort(([e,t],[r,s])=>{let a=J(e,"apikey"),l=J(r,"apikey"),i=L(a,t,e),n=L(l,s,r);if(i!==n)return i-n;let o=t.priority??999,d=s.priority??999;return o!==d?o-d:(t.name||"").localeCompare(s.name||"")}),G=!!D.trim(),ee=G||x?Y:Y.slice(0,20),et=Y.length-20;if(d)return(0,s.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,s.jsx)(n.Qv,{}),(0,s.jsx)(n.Qv,{})]});let er=X.length>0||Z.length>0||Y.length>0||W.length>0||V.length>0;return(0,s.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[!er&&(0,s.jsxs)("div",{className:"text-center py-8 border border-dashed border-border rounded-xl",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[32px] text-text-muted mb-2",children:"search_off"}),(0,s.jsx)("p",{className:"text-text-muted text-sm",children:"No providers match your search"})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,s.jsxs)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:["Custom Providers (OpenAI/Anthropic Compatible)"," "]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:w-auto",children:[(0,s.jsx)(n.$n,{size:"sm",icon:"add",onClick:()=>I(!0),className:"w-full sm:w-auto",children:"Add Anthropic Compatible"}),(0,s.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"add",onClick:()=>T(!0),className:"w-full !bg-white !text-black hover:!bg-gray-100 sm:w-auto",children:"Add OpenAI Compatible"})]})]}),0===W.length&&0===V.length?(0,s.jsxs)("div",{className:"flex items-center justify-center gap-2 py-2 border border-dashed border-border rounded-xl text-text-muted text-sm",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"extension"}),(0,s.jsx)("span",{children:"No custom providers — use buttons above to add OpenAI/Anthropic compatible endpoints"})]}):(0,s.jsx)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4 lg:grid-cols-3 xl:grid-cols-4",children:[...W,...V].map(e=>(0,s.jsx)(k,{providerId:e.id,provider:e,stats:J(e.id,"apikey"),authType:"compatible",onToggle:t=>K(e.id,"apikey",t)},e.id))})]}),X.length>0&&(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,s.jsx)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:"OAuth Providers"}),(0,s.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,s.jsx)(y,{}),(0,s.jsxs)("button",{onClick:()=>B("oauth"),disabled:!!E,className:`flex w-full items-center justify-center gap-1.5 rounded-lg border px-3 py-2 text-xs font-medium transition-colors sm:w-auto sm:py-1.5 ${"oauth"===E?"bg-primary/20 border-primary/40 text-primary animate-pulse":"bg-bg border-border text-text-muted hover:text-text-main hover:border-primary/40"}`,title:(0,f.Tl)("Test all OAuth connections"),"aria-label":(0,f.Tl)("Test all OAuth connections"),children:[(0,s.jsx)("span",{className:`material-symbols-outlined text-[14px]${"oauth"===E?" animate-spin":""}`,children:"play_arrow"}),"oauth"===E?(0,f.Tl)("Testing..."):(0,f.Tl)("Test All")]})]})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4 lg:grid-cols-3 xl:grid-cols-4",children:X.map(([e,t])=>{let r=Q(t,e);return(0,s.jsx)(w,{providerId:e,provider:t,stats:J(e,r),authType:"oauth",onToggle:t=>K(e,r,t)},e)})})]}),Z.length>0&&(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,s.jsx)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:"Free Tier Providers"}),(0,s.jsxs)("button",{onClick:()=>B("free"),disabled:!!E,className:`flex w-full items-center justify-center gap-1.5 rounded-lg border px-3 py-2 text-xs font-medium transition-colors sm:w-auto sm:py-1.5 ${"free"===E?"bg-primary/20 border-primary/40 text-primary animate-pulse":"bg-bg border-border text-text-muted hover:text-text-main hover:border-primary/40"}`,title:(0,f.Tl)("Test all Free connections"),"aria-label":(0,f.Tl)("Test all Free provider connections"),children:[(0,s.jsx)("span",{className:`material-symbols-outlined text-[14px]${"free"===E?" animate-spin":""}`,children:"play_arrow"}),"free"===E?(0,f.Tl)("Testing..."):(0,f.Tl)("Test All")]})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4 lg:grid-cols-3 xl:grid-cols-4",children:Z.map(({key:e,info:t,isFreeTier:r})=>{let a=Q(t,e);if(!r){let r=O?.[e],l=!1!==r&&(!0===r||!t.topologyHiddenByDefault);return(0,s.jsx)(w,{providerId:e,provider:t,stats:J(e,a),authType:"free",onToggle:t=>K(e,a,t),topologyVisible:l,onToggleTopology:t.noAuth?t=>H(e,t):void 0},e)}return(0,s.jsx)(k,{providerId:e,provider:t,stats:J(e,a),authType:Array.isArray(a)?a[0]??"apikey":a,onToggle:t=>K(e,a,t)},e)})})]}),Y.length>0&&(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,s.jsxs)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:["API Key Providers"," "]}),(0,s.jsxs)("button",{onClick:()=>B("apikey"),disabled:!!E,className:`flex w-full items-center justify-center gap-1.5 rounded-lg border px-3 py-2 text-xs font-medium transition-colors sm:w-auto sm:py-1.5 ${"apikey"===E?"bg-primary/20 border-primary/40 text-primary animate-pulse":"bg-bg border-border text-text-muted hover:text-text-main hover:border-primary/40"}`,title:(0,f.Tl)("Test all API Key connections"),"aria-label":(0,f.Tl)("Test all API Key connections"),children:[(0,s.jsx)("span",{className:`material-symbols-outlined text-[14px]${"apikey"===E?" animate-spin":""}`,children:"play_arrow"}),"apikey"===E?(0,f.Tl)("Testing..."):(0,f.Tl)("Test All")]})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4 lg:grid-cols-3 xl:grid-cols-4",children:ee.map(([e,t])=>(0,s.jsx)(k,{providerId:e,provider:t,stats:J(e,"apikey"),authType:"apikey",onToggle:t=>K(e,"apikey",t)},e))}),!G&&!x&&et>0&&(0,s.jsxs)("button",{onClick:()=>g(!0),className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-primary/40 px-3 py-2.5 text-sm font-medium text-primary transition-colors hover:border-primary hover:bg-primary/5",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"expand_more"}),"Show all ",Y.length," providers"]})]}),(0,s.jsx)(j,{variant:"openai",isOpen:N,onClose:()=>T(!1),onCreated:e=>{o(t=>[...t,e]),T(!1)}}),(0,s.jsx)(j,{variant:"anthropic",isOpen:A,onClose:()=>I(!1),onCreated:e=>{o(t=>[...t,e]),I(!1)}}),S&&(0,s.jsxs)("div",{className:"fixed inset-0 z-50 flex items-start justify-center px-3 pt-[6vh] sm:pt-[10vh]",onClick:()=>P(null),children:[(0,s.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm"}),(0,s.jsxs)("div",{className:"relative bg-surface border border-border rounded-xl w-full max-w-[600px] max-h-[86vh] sm:max-h-[80vh] overflow-y-auto shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,s.jsxs)("div",{className:"sticky top-0 z-10 flex items-center justify-between px-5 py-3 border-b border-border bg-surface/95 backdrop-blur-sm rounded-t-xl",children:[(0,s.jsx)("h3",{className:"font-semibold",children:(0,f.Tl)("Test Results")}),(0,s.jsx)("button",{onClick:()=>P(null),className:"p-1 rounded-lg hover:bg-bg text-text-muted hover:text-text-main transition-colors","aria-label":(0,f.Tl)("Close"),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-lg",children:"close"})})]}),(0,s.jsx)("div",{className:"p-5",children:(0,s.jsx)(C,{results:S})})]})]})]})}function w({providerId:e,provider:t,stats:r,authType:a,onToggle:l,topologyVisible:i,onToggleTopology:d}){let{connected:c,error:p,errorCode:m,errorTime:u,allDisabled:h}=r,g=!!t.noAuth,y=r.total>0,b=g&&"function"==typeof d,v=!1!==i;return(0,s.jsx)(x(),{href:`/dashboard/providers/${e}`,className:"group min-w-0",children:(0,s.jsx)(n.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${h||b&&!v?"opacity-50":""}`,children:(0,s.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,s.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,s.jsx)("div",{className:"size-8 shrink-0 rounded-lg flex items-center justify-center",style:{backgroundColor:`${t.color?.length>7?t.color:t.color+"15"}`},children:(0,s.jsx)(o.A,{src:`/providers/${t.id}.png`,alt:t.name,size:30,className:"object-contain rounded-lg max-w-[32px] max-h-[32px]",fallbackText:t.textIcon||t.id.slice(0,2).toUpperCase(),fallbackColor:t.color})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("h3",{className:"truncate font-semibold flex items-center gap-1.5",children:[t.name,t.community&&(0,s.jsx)(n.Ex,{variant:"warning",size:"sm",className:"shrink-0",children:(0,f.Tl)("Community")})]}),(0,s.jsx)("div",{className:"flex min-w-0 items-center gap-1.5 text-xs flex-wrap",children:h?(0,s.jsx)(n.Ex,{variant:"default",size:"sm",children:(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"pause_circle"}),(0,f.Tl)("Disabled")]})}):g?v?(0,s.jsx)(n.Ex,{variant:"success",size:"sm",dot:!0,children:(0,f.Tl)("Ready")}):(0,s.jsx)(n.Ex,{variant:"default",size:"sm",children:(0,f.Tl)("Topology off")}):(0,s.jsxs)(s.Fragment,{children:[N(c,p,m),u&&(0,s.jsx)("span",{className:"text-text-muted",children:u})]})})]})]}),(0,s.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[y&&(0,s.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),l(!!h)},children:(0,s.jsx)(n.lM,{size:"sm",checked:!h,onChange:()=>{},title:h?(0,f.Tl)("Enable provider"):(0,f.Tl)("Disable provider")})}),b&&(0,s.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),d(!v)},children:(0,s.jsx)(n.lM,{size:"sm",checked:v,onChange:()=>{},title:v?"Hide from usage topology":"Show on usage topology"})})]})]})})})}function k({providerId:e,provider:t,stats:r,authType:a,onToggle:l}){let{connected:i,error:c,errorCode:m,errorTime:u,allDisabled:h}=r,g=e.startsWith(p.JH),y=e.startsWith(p.DI);return(0,s.jsx)(x(),{href:`/dashboard/providers/${e}`,className:"group min-w-0",children:(0,s.jsx)(n.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${h?"opacity-50":""}`,children:(0,s.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,s.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,s.jsx)("div",{className:"size-8 shrink-0 rounded-lg flex items-center justify-center",style:{backgroundColor:`${t.color?.length>7?t.color:t.color+"15"}`},children:(0,s.jsx)(o.A,{src:g&&t.apiType?"responses"===t.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":y?"/providers/anthropic-m.png":(0,d.HY)(t.id),alt:t.name,size:30,className:"object-contain rounded-lg max-w-[30px] max-h-[30px]",fallbackText:t.textIcon||t.id.slice(0,2).toUpperCase(),fallbackColor:t.color})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("h3",{className:"truncate font-semibold flex items-center gap-1.5",children:[t.name,t.community&&(0,s.jsx)(n.Ex,{variant:"warning",size:"sm",className:"shrink-0",children:(0,f.Tl)("Community")})]}),(0,s.jsx)("div",{className:"flex min-w-0 items-center gap-1.5 text-xs flex-wrap",children:h?(0,s.jsx)(n.Ex,{variant:"default",size:"sm",children:(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"pause_circle"}),(0,f.Tl)("Disabled")]})}):(0,s.jsxs)(s.Fragment,{children:[N(i,c,m),g&&(0,s.jsx)(n.Ex,{variant:"default",size:"sm",children:"responses"===t.apiType?"Responses":"Chat"}),y&&(0,s.jsx)(n.Ex,{variant:"default",size:"sm",children:"Messages"}),u&&(0,s.jsx)("span",{className:"text-text-muted",children:u})]})})]})]}),(0,s.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:r.total>0&&(0,s.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),l(!!h)},children:(0,s.jsx)(n.lM,{size:"sm",checked:!h,onChange:()=>{},title:h?(0,f.Tl)("Enable provider"):(0,f.Tl)("Disable provider")})})})]})})})}function C({results:e}){if(e.error&&!e.results)return(0,s.jsxs)("div",{className:"text-center py-6",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-red-500 text-[32px] mb-2 block",children:"error"}),(0,s.jsx)("p",{className:"text-sm text-red-400",children:e.error})]});let{summary:t,mode:r}=e,a=e.results||[],l={oauth:"OAuth",free:(0,f.Tl)("Free"),apikey:(0,f.Tl)("API Key"),provider:(0,f.Tl)("Provider"),all:(0,f.Tl)("All")}[r]||r;return(0,s.jsxs)("div",{className:"flex min-w-0 flex-col gap-3",children:[t&&(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs mb-1 sm:gap-3",children:[(0,s.jsxs)("span",{className:"text-text-muted",children:[l," ",(0,f.Tl)("Test")]}),(0,s.jsxs)("span",{className:"px-2 py-0.5 rounded bg-emerald-500/15 text-emerald-400 font-medium",children:[t.passed," ",(0,f.Tl)("passed")]}),t.failed>0&&(0,s.jsxs)("span",{className:"px-2 py-0.5 rounded bg-red-500/15 text-red-400 font-medium",children:[t.failed," ",(0,f.Tl)("failed")]}),(0,s.jsxs)("span",{className:"text-text-muted sm:ml-auto",children:[t.total," ",(0,f.Tl)("tested")]})]}),a.map((e,t)=>(0,s.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2 rounded-lg bg-black/[0.03] px-3 py-2 text-xs dark:bg-white/[0.03] sm:flex-nowrap",children:[(0,s.jsx)("span",{className:`material-symbols-outlined text-[16px] ${e.valid?"text-emerald-500":"text-red-500"}`,children:e.valid?"check_circle":"error"}),(0,s.jsxs)("div",{className:"min-w-0 flex-[1_1_160px]",children:[(0,s.jsx)("span",{className:"block truncate font-medium sm:inline",children:e.connectionName}),(0,s.jsxs)("span",{className:"block truncate text-text-muted sm:ml-1.5 sm:inline",children:["(",e.provider,")"]})]}),void 0!==e.latencyMs&&(0,s.jsxs)("span",{className:"shrink-0 text-text-muted font-mono tabular-nums",children:[e.latencyMs,"ms"]}),(0,s.jsx)("span",{className:`shrink-0 text-[10px] uppercase font-bold px-1.5 py-0.5 rounded ${e.valid?"bg-emerald-500/15 text-emerald-400":"bg-red-500/15 text-red-400"}`,children:e.valid?(0,f.Tl)("OK"):e.diagnosis?.type||(0,f.Tl)("ERROR")})]},e.connectionId||t)),0===a.length&&(0,s.jsx)("div",{className:"text-center py-4 text-text-muted text-sm",children:(0,f.Tl)("No active connections found for this group.")})]})}j.propTypes={variant:i().oneOf(["openai","anthropic"]).isRequired,isOpen:i().bool.isRequired,onClose:i().func.isRequired,onCreated:i().func.isRequired},w.propTypes={providerId:i().string.isRequired,provider:i().shape({id:i().string.isRequired,name:i().string.isRequired,color:i().string,textIcon:i().string}).isRequired,stats:i().shape({connected:i().number,error:i().number,errorCode:i().string,errorTime:i().string}).isRequired,authType:i().string,onToggle:i().func},k.propTypes={providerId:i().string.isRequired,provider:i().shape({id:i().string.isRequired,name:i().string.isRequired,color:i().string,textIcon:i().string,apiType:i().string}).isRequired,stats:i().shape({connected:i().number,error:i().number,errorCode:i().string,errorTime:i().string}).isRequired,authType:i().string,onToggle:i().func},C.propTypes={results:i().shape({mode:i().string,results:i().array,summary:i().shape({total:i().number,passed:i().number,failed:i().number}),error:i().string}).isRequired}}},e=>{e.O(0,[3170,1728,1321,5497,8441,3794,7358],()=>e(e.s=67455)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8460],{67455:(e,t,r)=>{Promise.resolve().then(r.bind(r,97678))},97678:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>T});var s=r(95155),a=r(12115),l=r(14051),i=r.n(l),n=r(35497),o=r(67852),d=r(8247),c=r(90620),p=r(88105),m=r(98500),x=r.n(m),u=r(65921),h=r(38003),f=r(73006);let g={available:{icon:"check_circle",color:"#22c55e",label:"Available"},cooldown:{icon:"schedule",color:"#f59e0b",label:"Cooldown"},unavailable:{icon:"error",color:"#ef4444",label:"Unavailable"},unknown:{icon:"help",color:"#6b7280",label:"Unknown"}};function y(){let[e,t]=(0,a.useState)(null),[r,l]=(0,a.useState)(!0),[i,o]=(0,a.useState)(!1),[d,c]=(0,a.useState)(null),p=(0,a.useRef)(null),m=(0,u.i)(),x=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/models/availability");if(e.ok){let r=await e.json();t(r)}}catch{}finally{l(!1)}},[]);(0,a.useEffect)(()=>{x();let e=setInterval(x,3e4);return()=>clearInterval(e)},[x]),(0,a.useEffect)(()=>{let e=e=>{p.current&&!p.current.contains(e.target)&&o(!1)};return i&&document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[i]);let h=async(e,t)=>{c(`${e}:${t}`);try{(await fetch("/api/models/availability",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clearCooldown",provider:e,model:t})})).ok?(m.success(`Cooldown cleared for ${t}`),await x()):m.error("Failed to clear cooldown")}catch{m.error("Failed to clear cooldown")}finally{c(null)}};if(r)return null;let f=e?.models||[],y=0===(e?.unavailableCount||f.filter(e=>"available"!==e.status).length),b={};return f.forEach(e=>{if("available"===e.status)return;let t=e.provider||"unknown";b[t]||(b[t]=[]),b[t].push(e)}),(0,s.jsx)("div",{className:"relative",ref:p,children:i&&(0,s.jsxs)("div",{className:"absolute top-full right-0 mt-2 w-80 bg-surface border border-border rounded-xl shadow-2xl z-50 overflow-hidden",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border bg-bg",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",style:{color:y?"#22c55e":"#f59e0b"},children:y?"verified":"warning"}),(0,s.jsx)("span",{className:"text-sm font-semibold text-text-main",children:"Model Status"})]}),(0,s.jsx)("button",{onClick:x,className:"p-1 rounded-lg hover:bg-surface text-text-muted hover:text-text-main transition-colors",title:"Refresh",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"refresh"})})]}),(0,s.jsx)("div",{className:"px-4 py-3 max-h-60 overflow-y-auto",children:y?(0,s.jsx)("p",{className:"text-sm text-text-muted text-center py-2",children:"All models are responding normally."}):(0,s.jsx)("div",{className:"flex flex-col gap-2.5",children:Object.entries(b).map(([e,t])=>(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-xs font-semibold text-text-main mb-1.5 capitalize",children:e}),(0,s.jsx)("div",{className:"flex flex-col gap-1",children:t.map(e=>{let t=g[e.status]||g.unknown,r=d===`${e.provider}:${e.model}`;return(0,s.jsxs)("div",{className:"flex items-center justify-between px-2.5 py-1.5 rounded-lg bg-surface/30",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px] shrink-0",style:{color:t.color},children:t.icon}),(0,s.jsx)("span",{className:"font-mono text-xs text-text-main truncate",children:e.model})]}),"cooldown"===e.status&&(0,s.jsx)(n.$n,{size:"sm",variant:"ghost",onClick:()=>h(e.provider,e.model),disabled:r,className:"text-[10px] px-1.5! py-0.5! ml-2",children:r?"...":"Clear"})]},`${e.provider}-${e.model}`)})})]},e))})})]})})}let b={openai:{title:"Add OpenAI Compatible",type:"openai-compatible",defaultBaseUrl:"https://api.openai.com/v1",namePlaceholder:"OpenAI Compatible (Prod)",prefixPlaceholder:"oc-prod",baseUrlHint:"Use the base URL (ending in /v1) for your OpenAI-compatible API.",modelIdPlaceholder:"e.g. gpt-4, claude-3-opus",errorLabel:"OpenAI Compatible",hasApiType:!0},anthropic:{title:"Add Anthropic Compatible",type:"anthropic-compatible",defaultBaseUrl:"https://api.anthropic.com/v1",namePlaceholder:"Anthropic Compatible (Prod)",prefixPlaceholder:"ac-prod",baseUrlHint:"Use the base URL (ending in /v1) for your Anthropic-compatible API. The system will append /messages.",modelIdPlaceholder:"e.g. claude-3-opus",errorLabel:"Anthropic Compatible",hasApiType:!1}},v=[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses API"}];function j({variant:e,isOpen:t,onClose:r,onCreated:l}){let i=b[e],o=()=>({name:"",prefix:"",...i.hasApiType?{apiType:"chat"}:{},baseUrl:i.defaultBaseUrl}),[d,c]=(0,a.useState)(o),[p,m]=(0,a.useState)(!1),[x,u]=(0,a.useState)(""),[h,f]=(0,a.useState)(""),[g,y]=(0,a.useState)(""),[N,T]=(0,a.useState)(!1),[w,k]=(0,a.useState)(null);(0,a.useEffect)(()=>{i.hasApiType?c(e=>({...e,baseUrl:i.defaultBaseUrl})):t&&(k(null),f(""),y(""),u(""))},[i.hasApiType?d.apiType:t]);let C=async()=>{if(d.name.trim()&&d.prefix.trim()&&d.baseUrl.trim()){m(!0),u("");try{let e=await fetch("/api/provider-nodes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:d.name,prefix:d.prefix,...i.hasApiType?{apiType:d.apiType}:{},baseUrl:d.baseUrl,type:i.type})}),t=await e.json();e.ok?(l(t.node),c(o()),f(""),k(null),u("")):u(t?.error||"Failed to create provider")}catch(e){console.log(`Error creating ${i.errorLabel} node:`,e),u("Network error creating provider")}finally{m(!1)}}},A=async()=>{T(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:d.baseUrl,apiKey:h,type:i.type,modelId:g.trim()||void 0})}),t=await e.json();k(t)}catch{k({valid:!1,error:"Network error"})}finally{T(!1)}};return(0,s.jsx)(n.aF,{isOpen:t,title:i.title,onClose:r,children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(n.pd,{label:"Name",value:d.name,onChange:e=>c({...d,name:e.target.value}),placeholder:i.namePlaceholder,hint:"Required. A friendly label for this node."}),(0,s.jsx)(n.pd,{label:"Prefix",value:d.prefix,onChange:e=>c({...d,prefix:e.target.value}),placeholder:i.prefixPlaceholder,hint:"Required. Used as the provider prefix for model IDs."}),i.hasApiType&&(0,s.jsx)(n.l6,{label:"API Type",options:v,value:d.apiType,onChange:e=>c({...d,apiType:e.target.value})}),(0,s.jsx)(n.pd,{label:"Base URL",value:d.baseUrl,onChange:e=>c({...d,baseUrl:e.target.value}),placeholder:i.defaultBaseUrl,hint:i.baseUrlHint}),(0,s.jsx)(n.pd,{label:"API Key (for Check)",type:"password",value:h,onChange:e=>f(e.target.value)}),(0,s.jsx)(n.pd,{label:"Model ID (optional)",value:g,onChange:e=>y(e.target.value),placeholder:i.modelIdPlaceholder,hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[(0,s.jsx)(n.$n,{onClick:A,disabled:!h||N||!d.baseUrl.trim(),variant:"secondary",className:"w-full sm:w-auto",children:N?"Checking...":"Check"}),(()=>{if(!w)return null;let{valid:e,error:t,method:r}=w;return e?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.Ex,{variant:"success",children:"Valid"}),"chat"===r&&(0,s.jsx)("span",{className:"text-sm text-text-muted",children:"(via inference test)"})]}):(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)(n.Ex,{variant:"error",children:"Invalid"}),t&&(0,s.jsx)("span",{className:"text-sm text-red-500",children:t})]})})()]}),x&&(0,s.jsx)("div",{className:"rounded border border-red-500/40 bg-red-500/10 px-3 py-2 text-sm text-red-500",children:x}),(0,s.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,s.jsx)(n.$n,{onClick:C,fullWidth:!0,disabled:!d.name.trim()||!d.prefix.trim()||!d.baseUrl.trim()||p,children:p?"Creating...":"Create"}),(0,s.jsx)(n.$n,{onClick:r,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function N(e,t,r){let a=[];if(e>0&&a.push((0,s.jsxs)(n.Ex,{variant:"success",size:"sm",dot:!0,children:[e," Connected"]},"connected")),t>0){let e=r?`${t} Error (${r})`:`${t} Error`;a.push((0,s.jsx)(n.Ex,{variant:"error",size:"sm",dot:!0,children:e},"error"))}return 0===a.length?(0,s.jsx)("span",{className:"text-text-muted",children:"No connections"}):a}function T(){let e,t,[r,l]=(0,a.useState)([]),[i,o]=(0,a.useState)([]),[d,m]=(0,a.useState)(!0),[x,g]=(0,a.useState)(!1),[b,v]=(0,a.useState)(!0),[N,T]=(0,a.useState)(!1),[A,I]=(0,a.useState)(!1),[E,$]=(0,a.useState)(null),[S,P]=(0,a.useState)(null),[O,R]=(0,a.useState)({}),[U,_]=(0,a.useState)(!1),z=(0,u.i)(),D=(0,h.C)(e=>e.query),q=(0,h.C)(e=>e.register),F=(0,h.C)(e=>e.unregister);(0,a.useEffect)(()=>(q("Search providers..."),()=>F()),[q,F]);let M=e=>!D.trim()||!!e&&e.toLowerCase().includes(D.trim().toLowerCase()),L=(e,t,r)=>{if(e.connected>0)return 0;if(t?.noAuth){let e;return+(!1===(e=O?.[r])||!0!==e&&!!t.topologyHiddenByDefault)}return U?0===e.total?3:2:1};(0,a.useEffect)(()=>{(async()=>{try{let[e,t,r]=await Promise.all([fetch("/api/providers"),fetch("/api/provider-nodes"),fetch("/api/settings",{cache:"no-store"})]),s=await e.json(),a=await t.json();if(e.ok&&l(s.connections||[]),t.ok&&o(a.nodes||[]),r.ok){let e=await r.json();R(e.topologyVisibility||{}),_(!0===e.providerDisabledLastSort),v(!1!==e.showCommunityProviders)}}catch(e){console.log("Error fetching data:",e)}finally{m(!1)}})()},[]);let H=(0,a.useCallback)(async(e,t)=>{let r={...O,[e]:t};R(r);try{if(!(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({topologyVisibility:r})})).ok)throw Error("Failed to update topology visibility")}catch(e){console.error("Error updating topology visibility:",e),R(O)}},[O]),J=(e,t)=>{let s=Array.isArray(t)?t:[t],a=r.filter(t=>t.provider===e&&s.includes(t.authType)),l=e=>{let t=Object.entries(e).some(([e,t])=>e.startsWith("modelLock_")&&t&&new Date(t).getTime()>Date.now());return"unavailable"!==e.testStatus||t?e.testStatus:"active"},i=a.filter(e=>{if(!1===e.isActive)return!1;let t=l(e);return"active"===t||"success"===t}).length,n=a.filter(e=>{let t=l(e);return"error"===t||"expired"===t||"unavailable"===t}),o=n.length,d=a.length,c=d>0&&a.every(e=>!1===e.isActive),p=n.sort((e,t)=>new Date(t.lastErrorAt||0)-new Date(e.lastErrorAt||0))[0];return{connected:i,error:o,total:d,errorCode:p?function(e){if(!e)return null;let t=e.lastErrorType;if("runtime_error"===t)return"RUNTIME";if("upstream_auth_error"===t||"auth_missing"===t||"token_refresh_failed"===t||"token_expired"===t)return"AUTH";if("upstream_rate_limited"===t)return"429";if("upstream_unavailable"===t)return"5XX";if("network_error"===t)return"NET";let r=Number(e.errorCode);if(Number.isFinite(r)&&r>=400)return String(r);let s=function(e){if(!e)return null;let t=e.match(/\b([45]\d{2})\b/);return t?t[1]:"ERR"}(e.lastError);if("401"===s||"403"===s)return"AUTH";if(s&&"ERR"!==s)return s;let a=(e.lastError||"").toLowerCase();return a.includes("runtime")||a.includes("not runnable")||a.includes("not installed")?"RUNTIME":a.includes("invalid api key")||a.includes("token invalid")||a.includes("revoked")||a.includes("unauthorized")?"AUTH":"ERR"}(p):null,errorTime:p?.lastErrorAt?function(e){if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let r=Math.floor(t/60);if(r<24)return`${r}h ago`;let s=Math.floor(r/24);return`${s}d ago`}(p.lastErrorAt):null,allDisabled:c}},K=async(e,t,s)=>{let a=Array.isArray(t)?t:[t],i=t=>t.provider===e&&a.includes(t.authType),n=r.filter(i);l(e=>e.map(e=>i(e)?{...e,isActive:s}:e)),await Promise.allSettled(n.map(e=>fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:s})})))},B=async(e,t=null)=>{if(!E){$("provider"===e?t:e),P(null);try{let r=await fetch("/api/providers/test-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:e,providerId:t})}),s=await r.json();if(P(s),s.summary){let{passed:e,failed:t,total:r}=s.summary;0===t?z.success(`${(0,f.Tl)("All")} ${r} ${(0,f.Tl)("tests passed")}`):z.warning(`${e}/${r} ${(0,f.Tl)("passed")}, ${t} ${(0,f.Tl)("failed")}`)}}catch(e){P({error:(0,f.Tl)("Test request failed")}),z.error((0,f.Tl)("Provider test failed"))}finally{$(null)}}},W=i.filter(e=>"openai-compatible"===e.type).map(e=>({id:e.id,name:e.name||"OpenAI Compatible",color:"#10A37F",textIcon:"OC",apiType:e.apiType})).filter(e=>M(e.name)),V=i.filter(e=>"anthropic-compatible"===e.type).map(e=>({id:e.id,name:e.name||"Anthropic Compatible",color:"#D97757",textIcon:"AC"})).filter(e=>M(e.name)),Q=(e,t)=>{if("kiro"===t)return["oauth","apikey","api_key"];let r=e?.authModes;return Array.isArray(r)?r.includes("apikey")?["oauth","apikey","api_key"]:"oauth":t in p.nJ||t in c.fg?["oauth","apikey","api_key"]:"oauth"},X=(e=Object.entries(c.zN).filter(([,e])=>!e.hidden&&M(e.name)),t="oauth",[...e].sort(([e,r],[s,a])=>{let l=J(e,t),i=J(s,t),n=L(l,r,e),o=L(i,a,s);if(n!==o)return n-o;let d=r.priority??999,c=a.priority??999;return d!==c?d-c:(r.name||"").localeCompare(a.name||"")})),Z=[...Object.entries(p.IS).filter(([,e])=>!e.hidden&&!(e.community&&!b)&&M(e.name)).map(([e,t])=>({key:e,info:t,stats:J(e,Q(t,e)),isFreeTier:!1})),...Object.entries(p.nJ).filter(([,e])=>!e.hidden&&!(e.community&&!b)&&M(e.name)&&(e.serviceKinds??["llm"]).includes("llm")).map(([e,t])=>({key:e,info:t,stats:J(e,Q(t,e)),isFreeTier:!0}))].sort((e,t)=>{let r=L(e.stats,e.info,e.key),s=L(t.stats,t.info,t.key);if(r!==s)return r-s;let a=!!t.info.noAuth-!!e.info.noAuth;if(0!==a)return a;let l=+!!e.info.community,i=+!!t.info.community;if(l!==i)return l-i;let n=e.info.priority??999,o=t.info.priority??999;return n!==o?n-o:(e.info.name||"").localeCompare(t.info.name||"")}),Y=Object.entries(c.fg).filter(([,e])=>!e.hidden&&(e.serviceKinds??["llm"]).includes("llm")&&M(e.name)).sort(([e,t],[r,s])=>{let a=J(e,"apikey"),l=J(r,"apikey"),i=L(a,t,e),n=L(l,s,r);if(i!==n)return i-n;let o=t.priority??999,d=s.priority??999;return o!==d?o-d:(t.name||"").localeCompare(s.name||"")}),G=!!D.trim(),ee=G||x?Y:Y.slice(0,20),et=Y.length-20;if(d)return(0,s.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,s.jsx)(n.Qv,{}),(0,s.jsx)(n.Qv,{})]});let er=X.length>0||Z.length>0||Y.length>0||W.length>0||V.length>0;return(0,s.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[!er&&(0,s.jsxs)("div",{className:"text-center py-8 border border-dashed border-border rounded-xl",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[32px] text-text-muted mb-2",children:"search_off"}),(0,s.jsx)("p",{className:"text-text-muted text-sm",children:"No providers match your search"})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,s.jsxs)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:["Custom Providers (OpenAI/Anthropic Compatible)"," "]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:w-auto",children:[(0,s.jsx)(n.$n,{size:"sm",icon:"add",onClick:()=>I(!0),className:"w-full sm:w-auto",children:"Add Anthropic Compatible"}),(0,s.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"add",onClick:()=>T(!0),className:"w-full !bg-white !text-black hover:!bg-gray-100 sm:w-auto",children:"Add OpenAI Compatible"})]})]}),0===W.length&&0===V.length?(0,s.jsxs)("div",{className:"flex items-center justify-center gap-2 py-2 border border-dashed border-border rounded-xl text-text-muted text-sm",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"extension"}),(0,s.jsx)("span",{children:"No custom providers — use buttons above to add OpenAI/Anthropic compatible endpoints"})]}):(0,s.jsx)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4 lg:grid-cols-3 xl:grid-cols-4",children:[...W,...V].map(e=>(0,s.jsx)(k,{providerId:e.id,provider:e,stats:J(e.id,"apikey"),authType:"compatible",onToggle:t=>K(e.id,"apikey",t)},e.id))})]}),X.length>0&&(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,s.jsx)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:"OAuth Providers"}),(0,s.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,s.jsx)(y,{}),(0,s.jsxs)("button",{onClick:()=>B("oauth"),disabled:!!E,className:`flex w-full items-center justify-center gap-1.5 rounded-lg border px-3 py-2 text-xs font-medium transition-colors sm:w-auto sm:py-1.5 ${"oauth"===E?"bg-primary/20 border-primary/40 text-primary animate-pulse":"bg-bg border-border text-text-muted hover:text-text-main hover:border-primary/40"}`,title:(0,f.Tl)("Test all OAuth connections"),"aria-label":(0,f.Tl)("Test all OAuth connections"),children:[(0,s.jsx)("span",{className:`material-symbols-outlined text-[14px]${"oauth"===E?" animate-spin":""}`,children:"play_arrow"}),"oauth"===E?(0,f.Tl)("Testing..."):(0,f.Tl)("Test All")]})]})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4 lg:grid-cols-3 xl:grid-cols-4",children:X.map(([e,t])=>{let r=Q(t,e);return(0,s.jsx)(w,{providerId:e,provider:t,stats:J(e,r),authType:"oauth",onToggle:t=>K(e,r,t)},e)})})]}),Z.length>0&&(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,s.jsx)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:"Free Tier Providers"}),(0,s.jsxs)("button",{onClick:()=>B("free"),disabled:!!E,className:`flex w-full items-center justify-center gap-1.5 rounded-lg border px-3 py-2 text-xs font-medium transition-colors sm:w-auto sm:py-1.5 ${"free"===E?"bg-primary/20 border-primary/40 text-primary animate-pulse":"bg-bg border-border text-text-muted hover:text-text-main hover:border-primary/40"}`,title:(0,f.Tl)("Test all Free connections"),"aria-label":(0,f.Tl)("Test all Free provider connections"),children:[(0,s.jsx)("span",{className:`material-symbols-outlined text-[14px]${"free"===E?" animate-spin":""}`,children:"play_arrow"}),"free"===E?(0,f.Tl)("Testing..."):(0,f.Tl)("Test All")]})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4 lg:grid-cols-3 xl:grid-cols-4",children:Z.map(({key:e,info:t,isFreeTier:r})=>{let a=Q(t,e);if(!r){let r=O?.[e],l=!1!==r&&(!0===r||!t.topologyHiddenByDefault);return(0,s.jsx)(w,{providerId:e,provider:t,stats:J(e,a),authType:"free",onToggle:t=>K(e,a,t),topologyVisible:l,onToggleTopology:t.noAuth?t=>H(e,t):void 0},e)}return(0,s.jsx)(k,{providerId:e,provider:t,stats:J(e,a),authType:Array.isArray(a)?a[0]??"apikey":a,onToggle:t=>K(e,a,t)},e)})})]}),Y.length>0&&(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,s.jsxs)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:["API Key Providers"," "]}),(0,s.jsxs)("button",{onClick:()=>B("apikey"),disabled:!!E,className:`flex w-full items-center justify-center gap-1.5 rounded-lg border px-3 py-2 text-xs font-medium transition-colors sm:w-auto sm:py-1.5 ${"apikey"===E?"bg-primary/20 border-primary/40 text-primary animate-pulse":"bg-bg border-border text-text-muted hover:text-text-main hover:border-primary/40"}`,title:(0,f.Tl)("Test all API Key connections"),"aria-label":(0,f.Tl)("Test all API Key connections"),children:[(0,s.jsx)("span",{className:`material-symbols-outlined text-[14px]${"apikey"===E?" animate-spin":""}`,children:"play_arrow"}),"apikey"===E?(0,f.Tl)("Testing..."):(0,f.Tl)("Test All")]})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4 lg:grid-cols-3 xl:grid-cols-4",children:ee.map(([e,t])=>(0,s.jsx)(k,{providerId:e,provider:t,stats:J(e,"apikey"),authType:"apikey",onToggle:t=>K(e,"apikey",t)},e))}),!G&&!x&&et>0&&(0,s.jsxs)("button",{onClick:()=>g(!0),className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-primary/40 px-3 py-2.5 text-sm font-medium text-primary transition-colors hover:border-primary hover:bg-primary/5",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"expand_more"}),"Show all ",Y.length," providers"]})]}),(0,s.jsx)(j,{variant:"openai",isOpen:N,onClose:()=>T(!1),onCreated:e=>{o(t=>[...t,e]),T(!1)}}),(0,s.jsx)(j,{variant:"anthropic",isOpen:A,onClose:()=>I(!1),onCreated:e=>{o(t=>[...t,e]),I(!1)}}),S&&(0,s.jsxs)("div",{className:"fixed inset-0 z-50 flex items-start justify-center px-3 pt-[6vh] sm:pt-[10vh]",onClick:()=>P(null),children:[(0,s.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm"}),(0,s.jsxs)("div",{className:"relative bg-surface border border-border rounded-xl w-full max-w-[600px] max-h-[86vh] sm:max-h-[80vh] overflow-y-auto shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,s.jsxs)("div",{className:"sticky top-0 z-10 flex items-center justify-between px-5 py-3 border-b border-border bg-surface/95 backdrop-blur-sm rounded-t-xl",children:[(0,s.jsx)("h3",{className:"font-semibold",children:(0,f.Tl)("Test Results")}),(0,s.jsx)("button",{onClick:()=>P(null),className:"p-1 rounded-lg hover:bg-bg text-text-muted hover:text-text-main transition-colors","aria-label":(0,f.Tl)("Close"),children:(0,s.jsx)("span",{className:"material-symbols-outlined text-lg",children:"close"})})]}),(0,s.jsx)("div",{className:"p-5",children:(0,s.jsx)(C,{results:S})})]})]})]})}function w({providerId:e,provider:t,stats:r,authType:a,onToggle:l,topologyVisible:i,onToggleTopology:d}){let{connected:c,error:p,errorCode:m,errorTime:u,allDisabled:h}=r,g=!!t.noAuth,y=r.total>0,b=g&&"function"==typeof d,v=!1!==i;return(0,s.jsx)(x(),{href:`/dashboard/providers/${e}`,className:"group min-w-0",children:(0,s.jsx)(n.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${h||b&&!v?"opacity-50":""}`,children:(0,s.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,s.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,s.jsx)("div",{className:"size-8 shrink-0 rounded-lg flex items-center justify-center",style:{backgroundColor:`${t.color?.length>7?t.color:t.color+"15"}`},children:(0,s.jsx)(o.A,{src:`/providers/${t.id}.png`,alt:t.name,size:30,className:"object-contain rounded-lg max-w-[32px] max-h-[32px]",fallbackText:t.textIcon||t.id.slice(0,2).toUpperCase(),fallbackColor:t.color})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("h3",{className:"truncate font-semibold flex items-center gap-1.5",children:[t.name,t.community&&(0,s.jsx)(n.Ex,{variant:"warning",size:"sm",className:"shrink-0",children:(0,f.Tl)("Trial")})]}),(0,s.jsx)("div",{className:"flex min-w-0 items-center gap-1.5 text-xs flex-wrap",children:h?(0,s.jsx)(n.Ex,{variant:"default",size:"sm",children:(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"pause_circle"}),(0,f.Tl)("Disabled")]})}):g?v?(0,s.jsx)(n.Ex,{variant:"success",size:"sm",dot:!0,children:(0,f.Tl)("Ready")}):(0,s.jsx)(n.Ex,{variant:"default",size:"sm",children:(0,f.Tl)("Topology off")}):(0,s.jsxs)(s.Fragment,{children:[N(c,p,m),u&&(0,s.jsx)("span",{className:"text-text-muted",children:u})]})})]})]}),(0,s.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[y&&(0,s.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),l(!!h)},children:(0,s.jsx)(n.lM,{size:"sm",checked:!h,onChange:()=>{},title:h?(0,f.Tl)("Enable provider"):(0,f.Tl)("Disable provider")})}),b&&(0,s.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),d(!v)},children:(0,s.jsx)(n.lM,{size:"sm",checked:v,onChange:()=>{},title:v?"Hide from usage topology":"Show on usage topology"})})]})]})})})}function k({providerId:e,provider:t,stats:r,authType:a,onToggle:l}){let{connected:i,error:c,errorCode:m,errorTime:u,allDisabled:h}=r,g=e.startsWith(p.JH),y=e.startsWith(p.DI);return(0,s.jsx)(x(),{href:`/dashboard/providers/${e}`,className:"group min-w-0",children:(0,s.jsx)(n.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${h?"opacity-50":""}`,children:(0,s.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,s.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,s.jsx)("div",{className:"size-8 shrink-0 rounded-lg flex items-center justify-center",style:{backgroundColor:`${t.color?.length>7?t.color:t.color+"15"}`},children:(0,s.jsx)(o.A,{src:g&&t.apiType?"responses"===t.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":y?"/providers/anthropic-m.png":(0,d.HY)(t.id),alt:t.name,size:30,className:"object-contain rounded-lg max-w-[30px] max-h-[30px]",fallbackText:t.textIcon||t.id.slice(0,2).toUpperCase(),fallbackColor:t.color})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("h3",{className:"truncate font-semibold flex items-center gap-1.5",children:[t.name,t.community&&(0,s.jsx)(n.Ex,{variant:"warning",size:"sm",className:"shrink-0",children:(0,f.Tl)("Trial")})]}),(0,s.jsx)("div",{className:"flex min-w-0 items-center gap-1.5 text-xs flex-wrap",children:h?(0,s.jsx)(n.Ex,{variant:"default",size:"sm",children:(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"pause_circle"}),(0,f.Tl)("Disabled")]})}):(0,s.jsxs)(s.Fragment,{children:[N(i,c,m),g&&(0,s.jsx)(n.Ex,{variant:"default",size:"sm",children:"responses"===t.apiType?"Responses":"Chat"}),y&&(0,s.jsx)(n.Ex,{variant:"default",size:"sm",children:"Messages"}),u&&(0,s.jsx)("span",{className:"text-text-muted",children:u})]})})]})]}),(0,s.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:r.total>0&&(0,s.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),l(!!h)},children:(0,s.jsx)(n.lM,{size:"sm",checked:!h,onChange:()=>{},title:h?(0,f.Tl)("Enable provider"):(0,f.Tl)("Disable provider")})})})]})})})}function C({results:e}){if(e.error&&!e.results)return(0,s.jsxs)("div",{className:"text-center py-6",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-red-500 text-[32px] mb-2 block",children:"error"}),(0,s.jsx)("p",{className:"text-sm text-red-400",children:e.error})]});let{summary:t,mode:r}=e,a=e.results||[],l={oauth:"OAuth",free:(0,f.Tl)("Free"),apikey:(0,f.Tl)("API Key"),provider:(0,f.Tl)("Provider"),all:(0,f.Tl)("All")}[r]||r;return(0,s.jsxs)("div",{className:"flex min-w-0 flex-col gap-3",children:[t&&(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs mb-1 sm:gap-3",children:[(0,s.jsxs)("span",{className:"text-text-muted",children:[l," ",(0,f.Tl)("Test")]}),(0,s.jsxs)("span",{className:"px-2 py-0.5 rounded bg-emerald-500/15 text-emerald-400 font-medium",children:[t.passed," ",(0,f.Tl)("passed")]}),t.failed>0&&(0,s.jsxs)("span",{className:"px-2 py-0.5 rounded bg-red-500/15 text-red-400 font-medium",children:[t.failed," ",(0,f.Tl)("failed")]}),(0,s.jsxs)("span",{className:"text-text-muted sm:ml-auto",children:[t.total," ",(0,f.Tl)("tested")]})]}),a.map((e,t)=>(0,s.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2 rounded-lg bg-black/[0.03] px-3 py-2 text-xs dark:bg-white/[0.03] sm:flex-nowrap",children:[(0,s.jsx)("span",{className:`material-symbols-outlined text-[16px] ${e.valid?"text-emerald-500":"text-red-500"}`,children:e.valid?"check_circle":"error"}),(0,s.jsxs)("div",{className:"min-w-0 flex-[1_1_160px]",children:[(0,s.jsx)("span",{className:"block truncate font-medium sm:inline",children:e.connectionName}),(0,s.jsxs)("span",{className:"block truncate text-text-muted sm:ml-1.5 sm:inline",children:["(",e.provider,")"]})]}),void 0!==e.latencyMs&&(0,s.jsxs)("span",{className:"shrink-0 text-text-muted font-mono tabular-nums",children:[e.latencyMs,"ms"]}),(0,s.jsx)("span",{className:`shrink-0 text-[10px] uppercase font-bold px-1.5 py-0.5 rounded ${e.valid?"bg-emerald-500/15 text-emerald-400":"bg-red-500/15 text-red-400"}`,children:e.valid?(0,f.Tl)("OK"):e.diagnosis?.type||(0,f.Tl)("ERROR")})]},e.connectionId||t)),0===a.length&&(0,s.jsx)("div",{className:"text-center py-4 text-text-muted text-sm",children:(0,f.Tl)("No active connections found for this group.")})]})}j.propTypes={variant:i().oneOf(["openai","anthropic"]).isRequired,isOpen:i().bool.isRequired,onClose:i().func.isRequired,onCreated:i().func.isRequired},w.propTypes={providerId:i().string.isRequired,provider:i().shape({id:i().string.isRequired,name:i().string.isRequired,color:i().string,textIcon:i().string}).isRequired,stats:i().shape({connected:i().number,error:i().number,errorCode:i().string,errorTime:i().string}).isRequired,authType:i().string,onToggle:i().func},k.propTypes={providerId:i().string.isRequired,provider:i().shape({id:i().string.isRequired,name:i().string.isRequired,color:i().string,textIcon:i().string,apiType:i().string}).isRequired,stats:i().shape({connected:i().number,error:i().number,errorCode:i().string,errorTime:i().string}).isRequired,authType:i().string,onToggle:i().func},C.propTypes={results:i().shape({mode:i().string,results:i().array,summary:i().shape({total:i().number,passed:i().number,failed:i().number}),error:i().string}).isRequired}}},e=>{e.O(0,[3170,1728,1321,5497,8441,3794,7358],()=>e(e.s=67455)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3826],{26048:(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:()=>I});var a=r(95155),i=r(12115),s=r(67852),n=r(45564);let l="quotaCacheData",o="quotaAutoRefresh",d=[10,20,50,100],c=[{value:"all",label:"All accounts"},{value:"active",label:"Active"},{value:"inactive",label:"Turned off"}],u=[{value:"default",label:"Default quota order"},{value:"remaining-asc",label:"% quota: low to high"},{value:"remaining-desc",label:"% quota: high to low"}];function m(e){return e.name?.trim()||e.email?.trim()||e.displayName?.trim()||null}function x(e,t){let r=t[e.id]?.quotas?.[0];return r&&"number"==typeof r.remaining?r.remaining:1/0}function h(e){let t={};return e.forEach(e=>{t[e.id]=!0}),t}function p(e,t){let r=new Set(t.map(e=>e.id));return Object.fromEntries(Object.entries(e).filter(([e])=>r.has(e)))}async function b(e,t){return await e(t)}function g(){try{let e=window.localStorage.getItem(l);return e?JSON.parse(e):{}}catch(e){return console.error("Error reading quota cache:",e),{}}}function f(e,t){try{let r=g();r[e]={...t,cachedAt:new Date().toISOString()},window.localStorage.setItem(l,JSON.stringify(r))}catch(e){console.error("Error writing quota cache:",e)}}function y(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0}function v(e){return e&&"object"==typeof e?String(e.modelKey||e.name||"").trim():""}function k(e,t,r,a=[]){let i=null,s=t?.[e]?.hidden;if(Array.isArray(s))i=s.map(String);else if(r&&r!==e){let e=t?.[r]?.hidden;Array.isArray(e)&&(i=e.map(String))}return i?new Set(Array.isArray(a)&&a.length>0?function(e=[],t=[]){if(!Array.isArray(e)||0===e.length)return[];let r=new Set(t.map(v).filter(Boolean));return[...new Set(e.map(e=>String(e).trim()).filter(e=>r.has(e)))]}(i,a):i):new Set}var w=r(73006);function j(e){let t=String(e||"").trim();if(!t)return"";let r=(0,w.Tl)(t);if(r!==t)return r;let a=/^Bonus Pack (\d+)$/.exec(t);if(a)return`${(0,w.Tl)("Bonus Pack")} ${a[1]}`;let i=/^weekly\s+(.+)\s+\(7d\)$/i.exec(t);if(i)return`${(0,w.Tl)("Weekly")} ${i[1]} (7d)`;let s=/^Balance(?:\s*\((.+)\))?$/i.exec(t);return s?s[1]?`${(0,w.Tl)("Balance")} (${s[1]})`:(0,w.Tl)("Balance"):t}function N({quotas:e=[],compact:t=!1,sortMode:r="default",showSortLabel:s=!1,onHideQuota:n=null}){let[l,o]=(0,i.useState)(1),d=(0,i.useMemo)(()=>e.map((e,t)=>({...e,index:t,remaining:e?.remainingPercentage!==void 0?Math.round(e.remainingPercentage):e?.remaining!==void 0&&(e?.total===100||e?.total===void 0)?Math.max(0,Math.round(e.remaining)):y(e?.used,e?.total)})),[e]),c=(0,i.useMemo)(()=>"remaining-asc"===r?[...d].sort((e,t)=>e.remaining-t.remaining||e.name.localeCompare(t.name)):"remaining-desc"===r?[...d].sort((e,t)=>t.remaining-e.remaining||e.name.localeCompare(t.name)):d,[d,r]),u=Math.max(1,Math.ceil(c.length/10));if((0,i.useEffect)(()=>{o(1)},[r,e]),(0,i.useEffect)(()=>{o(e=>Math.min(e,u))},[u]),!e||0===e.length)return null;let m=c.slice((l-1)*10,10*l),x=0===c.length?0:(l-1)*10+1,h=Math.min(10*l,c.length),p=t?"py-1 px-1.5":"py-2 px-3",b=t?"text-[11px]":"text-sm",g=t?"text-[11px]":"text-sm",f=t?"text-[10px] leading-tight":"text-xs",v="function"==typeof n;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:[c.length," quota",c.length>1?"s":""]}),s&&(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:"space-y-px",children:m.map(e=>{var r;let i=(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"},s=function(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,r=new Date,a=t-r;if(a<=0||t.getFullYear()>2099)return"-";let i=Math.ceil(a/6e4);if(i<60)return`${i}m`;let s=Math.floor(i/60),n=i%60;if(s<24)return`${s}h ${n}m`;let l=Math.floor(s/24);return`${l}d ${s%24}h ${n}m`}catch(e){return"-"}}(e.resetAt),l=function(e){if(!e)return null;try{let t=new Date(e);if(t.getFullYear()>2099)return null;let r=new Date,a=new Date(r.getFullYear(),r.getMonth(),r.getDate()),i=new Date(a);i.setDate(i.getDate()+1);let s="";s=t>=a&&t<i?"Today":t>=i&&t<new Date(i.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`${s}, ${n}`}catch{return null}}(e.resetAt),o=!1!==e.recurring?`in ${s}`:`expires in ${s}`;return(0,a.jsxs)("div",{className:`flex items-center gap-2 border-b border-black/5 dark:border-white/5 hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors ${p}`,children:[(0,a.jsxs)("div",{className:"flex w-36 min-w-0 items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-[10px] shrink-0",children:i.emoji}),(0,a.jsx)("span",{className:`${b} font-medium text-text-primary truncate`,children:j(e.name)})]}),(0,a.jsxs)("div",{className:`min-w-0 flex-1 ${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 ${i.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 ${i.bg}`,style:{width:`${Math.min(e.remaining,100)}%`}})}),(0,a.jsxs)("div",{className:`flex items-center justify-between gap-1 min-w-0 ${t?"text-[10px]":"text-xs"}`,children:[(0,a.jsx)("span",{className:"text-text-muted truncate",title:e.percentScale||!0===e.displayRemaining?void 0:`${e.used.toLocaleString()} / ${e.unlimited?"∞":e.total.toLocaleString()}`,children:e.percentScale?"":!0===e.displayRemaining&&e.total>0?`${Number((e.total-e.used).toFixed(2)).toLocaleString()} / ${Number(e.total.toFixed(2)).toLocaleString()}`:`${e.used.toLocaleString()} / ${e.unlimited?"∞":e.total.toLocaleString()}`}),(0,a.jsxs)("span",{className:`font-medium ${i.text} shrink-0`,children:[e.remaining,"%"]})]})]}),(0,a.jsx)("div",{className:"min-w-0 shrink",children:"-"!==s||l?t?(0,a.jsx)("div",{className:`${g} text-text-primary font-medium truncate`,title:l||"",children:"-"!==s?o:l}):(0,a.jsxs)("div",{className:"min-w-0 space-y-0.5",children:["-"!==s&&(0,a.jsx)("div",{className:`${g} text-text-primary font-medium truncate`,children:o}),l&&(0,a.jsx)("div",{className:`${f} text-text-muted truncate`,children:l})]}):(0,a.jsx)("div",{className:`${g} text-text-muted italic`,children:"N/A"})}),v&&(0,a.jsx)("button",{type:"button",onClick:()=>n(e),className:"inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md text-text-muted transition-colors hover:bg-black/5 hover:text-text-primary dark:hover:bg-white/5",title:"Hide this quota row","aria-label":`Hide quota ${e.name}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[15px]",children:"visibility_off"})})]},`${e.name}-${e.index}`)})}),u>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 ",x,"-",h," of ",c.length]}),(0,a.jsxs)("span",{children:["Page ",l," / ",u]})]}),(0,a.jsxs)("div",{className:"mt-1.5 flex items-center justify-end gap-1",children:[(0,a.jsx)("button",{type:"button",onClick:()=>o(e=>Math.max(1,e-1)),disabled:1===l,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:()=>o(e=>Math.min(u,e+1)),disabled:l===u,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 S=r(98542),C=r(97677),A=r(84588),$=r(35497),P=r(88105),q=r(11059);let E={"builder-id":"AWS Builder ID",idc:"IAM Identity Center",google:"Google",github:"GitHub",imported:"Imported Token",api_key:"API Key"},T={claude:"claudeAutoPing",codex:"codexAutoPing"},D={claude:"When your 5h quota runs out, auto-sends a request the moment it resets so a new window starts right away.",codex:"Auto-starts the next 5h Codex window after reset by sending a tiny gpt-5.5 request. Consumes a small amount of quota."};function M(e){return e.name?.trim()&&e.email?.trim()&&e.name.trim()!==e.email.trim()?e.email.trim():e.name?.trim()&&e.displayName?.trim()&&e.name.trim()!==e.displayName.trim()?e.displayName.trim():null}function O(e){let t=e.providerSpecificData?.region;if(t)return t;let r=e.providerSpecificData?.profileArn;return("string"==typeof r?r.split(":")[3]:"")||""}function F(e){if(!e)return"N/A";let t=new Date(e);return Number.isFinite(t.getTime())?t.toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}):"N/A"}function I(){let{copied:e,copy:t}=(0,q.C)(),[r,I]=(0,i.useState)([]),[_,L]=(0,i.useState)({}),[z,R]=(0,i.useState)({}),[W,U]=(0,i.useState)({}),[H,K]=(0,i.useState)(!0),[B,J]=(0,i.useState)({claude:{},codex:{}}),[G,V]=(0,i.useState)(null),[Y,Q]=(0,i.useState)(!1),[X,Z]=(0,i.useState)(!1),[ee,et]=(0,i.useState)(60),[er,ea]=(0,i.useState)(!0),[ei,es]=(0,i.useState)(null),[en,el]=(0,i.useState)(null),[eo,ed]=(0,i.useState)(null),[ec,eu]=(0,i.useState)(null),[em,ex]=(0,i.useState)(null),[eh,ep]=(0,i.useState)(!1),[eb,eg]=(0,i.useState)(null),[ef,ey]=(0,i.useState)([]),[ev,ek]=(0,i.useState)(()=>window.localStorage.getItem("quotaProviderFilter")||"all"),[ew,ej]=(0,i.useState)([]),[eN,eS]=(0,i.useState)(()=>window.localStorage.getItem("quotaAccountFilter")||"all");(0,i.useEffect)(()=>{window.localStorage.setItem("quotaProviderFilter",ev)},[ev]),(0,i.useEffect)(()=>{window.localStorage.setItem("quotaAccountFilter",eN)},[eN]);let[eC,eA]=(0,i.useState)("default"),[e$,eP]=(0,i.useState)({}),[eq,eE]=(0,i.useState)(!1),[eT,eD]=(0,i.useState)(!1),[eM,eO]=(0,i.useState)(!1),[eF,eI]=(0,i.useState)(1),[e_,eL]=(0,i.useState)(20),[ez,eR]=(0,i.useState)(String(20)),[eW,eU]=(0,i.useState)({page:1,pageSize:20,total:0,totalPages:1}),[eH,eK]=(0,i.useState)({eligibleConnections:0,providerFilteredConnections:0}),eB=(0,i.useRef)(null),eJ=(0,i.useRef)(null),eG=(0,i.useRef)(0),eV=(0,i.useCallback)(async(e=eF)=>{try{var t,r;let a=new URLSearchParams({page:String(e),pageSize:String(e_),accountStatus:eN,sort:"priority"});"all"!==ev&&a.set("provider",ev);let i=await fetch(`/api/providers/client?${a.toString()}`);if(!i.ok)throw Error("Failed to fetch connections");let s=await i.json(),n=s.connections||[],l=(t=s.pagination,t||{page:1,pageSize:e_,total:0,totalPages:1}),o=function(e,t=0){return e||{eligibleConnections:t,providerFilteredConnections:t}}(s.totals,n.length);return I(n),ej(s.providerOptions||[]),eU(l),eK(o),eI((r=s.pagination,r?.page||e)),n}catch(e){return console.error("Error fetching connections:",e),I([]),ej([]),eU({page:1,pageSize:e_,total:0,totalPages:1}),eK({eligibleConnections:0,providerFilteredConnections:0}),[]}},[eN,eq,eF,e_,ev]),eY=(0,i.useCallback)(async(e,t,{force:r=!1}={})=>{R(t=>({...t,[e]:!0})),U(t=>({...t,[e]:null}));try{console.log(`[ProviderLimits] Fetching quota for ${t} (${e})`);let a=`/api/usage/${e}${r?"?force=1":""}`,i=await fetch(a);if(!i.ok){let r=(await i.json().catch(()=>({}))).error||i.statusText;if(404===i.status)return void console.warn(`[ProviderLimits] Connection not found for ${t}, skipping`);if(401===i.status){console.warn(`[ProviderLimits] Auth error for ${t}:`,r);let a={quotas:[],message:r};L(t=>({...t,[e]:a})),f(e,a);return}throw Error(`HTTP ${i.status}: ${r}`)}let s=await i.json();console.log(`[ProviderLimits] Got quota for ${t}:`,s);let l={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":if(t.quotas){let e=Object.entries(t.quotas),a=e.filter(([e])=>e.startsWith("gemini-")&&!e.includes("image")),i=e.filter(([e])=>e.startsWith("claude-")||e.startsWith("gpt-")),s=e.filter(([e])=>e.includes("image")),n=e.filter(([e])=>!e.startsWith("gemini-")&&!e.startsWith("claude-")&&!e.startsWith("gpt-")&&!e.includes("image"));if(a.length>0){let e=a.reduce((e,t)=>(t[1].remainingPercentage??100)<(e[1].remainingPercentage??100)?t:e)[1];r.push({name:"Gemini (Flash / Pro)",modelKey:"gemini",used:e.used||0,total:e.total||0,resetAt:e.resetAt||null,remainingPercentage:e.remainingPercentage,percentScale:!0})}if(i.length>0){let e=i.reduce((e,t)=>(t[1].remainingPercentage??100)<(e[1].remainingPercentage??100)?t:e)[1];r.push({name:"Claude (Sonnet / Opus / GPT)",modelKey:"claude",used:e.used||0,total:e.total||0,resetAt:e.resetAt||null,remainingPercentage:e.remainingPercentage,percentScale:!0})}s.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,percentScale:!0})}),n.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,percentScale:!0})})}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])=>{if("organization"===e&&(!t||0===(Number(t.total)||0)))return;let a=t.resetAt&&2099>=new Date(t.resetAt).getFullYear()?t.resetAt:null;r.push({name:"user"===e?"Personal":"organization"===e?"Organization":e,used:t.used||0,total:t.total||0,unit:t.unit,resetAt:a,unlimited:!0===t.unlimited})});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,remaining:void 0!==t.remaining?t.remaining:Math.max(0,(t.total||100)-(t.used||0)),remainingPercentage:void 0!==t.remainingPercentage?t.remainingPercentage:y(t.used,t.total),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})});break;case"codebuddy-cn":case"codebuddy-intl":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,recurring:!1!==t.recurring,displayRemaining:!0})});break;case"grok-cli":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})});break;case"kimi":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})});break;case"deepseek":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})});break;case"ollama":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})});break;case"commandcode":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,remaining:void 0!==t.remaining?t.remaining:Math.max(0,(t.total||0)-(t.used||0)),remainingPercentage:void 0!==t.remainingPercentage?t.remainingPercentage:y(t.used,t.total),resetAt:t.resetAt||null,recurring:!0===t.recurring,displayRemaining:!0})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}if(e?.toLowerCase()==="claude"){let e={"session (5h)":0,"weekly (7d)":1,"weekly fable (7d)":2,"weekly opus (7d)":3,"weekly sonnet (7d)":4};return r.sort((t,r)=>(e[t.name]??99)-(e[r.name]??99)),r}if(e?.toLowerCase()==="commandcode"){let e={"session (5h)":0,"weekly (7d)":1,"Monthly Credits":2,"Purchased Credits":3};return r.sort((t,r)=>(e[t.name]??99)-(e[r.name]??99)),r}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,i=r.modelKey||r.name;return(e.get(a)??999)-(e.get(i)??999)})}return r}(t,s),plan:s.plan||null,message:s.message||null,raw:s};L(t=>({...t,[e]:l})),f(e,l)}catch(r){console.error(`[ProviderLimits] Error fetching quota for ${t} (${e}):`,r),U(t=>({...t,[e]:r.message||"Failed to fetch quota"}))}finally{R(t=>({...t,[e]:!1}))}},[]),eQ=(0,i.useCallback)(async(e,t)=>{await eY(e,t,{force:!0}),V(new Date)},[eY]),eX=(0,i.useCallback)(async(e,t)=>{if("codex"===t&&!eo){ed(e),U(t=>({...t,[e]:null}));try{let r=await fetch(`/api/usage/${e}/codex-reset-credits`,{method:"POST"}),a=await r.json().catch(()=>({}));if(!r.ok)throw Error(a.message||a.error||a.code||"Failed to reset Codex limit");await eY(e,t),V(new Date)}catch(t){U(r=>({...r,[e]:t.message||"Failed to reset Codex limit"}))}finally{ed(null)}}},[eY,eo]),eZ=(0,i.useCallback)(async e=>{ex({connection:e,loading:!0,error:null,data:null});try{let t=await fetch(`/api/usage/${e.id}/codex-reset-credits`,{cache:"no-store"}),r=await t.json().catch(()=>({}));if(!t.ok)throw Error(r.error||r.message||"Failed to load Codex reset credits");let a=Array.isArray(r.credits)?[...r.credits]:[];a.sort((e,t)=>{let r=e.expiresAt?new Date(e.expiresAt).getTime():1/0,a=t.expiresAt?new Date(t.expiresAt).getTime():1/0;return r-a}),ex({connection:e,loading:!1,error:null,data:{...r,credits:a}})}catch(t){ex({connection:e,loading:!1,error:t.message||"Failed to load Codex reset credits",data:null})}},[]),e0=(0,i.useCallback)(async e=>{if(confirm("Delete this connection?")){es(e);try{if((await fetch(`/api/providers/${e}`,{method:"DELETE"})).ok){L(t=>{let r={...t};return delete r[e],r}),R(t=>{let r={...t};return delete r[e],r}),U(t=>{let r={...t};return delete r[e],r});try{let t=g();t[e]&&(delete t[e],window.localStorage.setItem(l,JSON.stringify(t)))}catch(e){console.error("Error deleting cache entry:",e)}await b(eV,eF)}}catch(e){console.error("Error deleting connection:",e)}finally{es(null)}}},[eV,eF]),e1=(0,i.useCallback)(async(e,t)=>{el(e);try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&(L(e=>({...e})),await b(eV,eF))}catch(e){console.error("Error updating connection status:",e)}finally{el(null)}},[eV,eF]),e5=(0,i.useCallback)(async e=>{if(!eb?.id)return;let t=eb.id,r=eb.provider;try{(await fetch(`/api/providers/${t}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(await eV(),ep(!1),eg(null),P.wb.includes(r)&&await eY(t,r))}catch(e){console.error("Error saving connection:",e)}},[eb,eV,eY]);(0,i.useEffect)(()=>{let e=!1;return fetch("/api/proxy-pools?isActive=true",{cache:"no-store"}).then(e=>e.json()).then(t=>{!e&&t?.proxyPools&&ey(t.proxyPools)}).catch(()=>{}),()=>{e=!0}},[]);let e2=(0,i.useCallback)(async(e=!1)=>{if(X)return;Z(!0),et(60);let t=eG.current+=1,r=Math.round(10);try{let a=await eV(eF);R(h(a)),U(e=>p(e,a)),L(e=>p(e,a)),await Promise.all(a.filter(a=>e||"claude"!==a.provider||t%r==0).map(e=>eY(e.id,e.provider))),V(new Date)}catch(e){console.error("Error refreshing all providers:",e)}finally{Z(!1)}},[X,eV,eY,eF]);(0,i.useEffect)(()=>{(async()=>{ea(!0);let e=await eV(eF);ea(!1),R(h(e)),U(t=>p(t,e)),L(t=>p(t,e)),await Promise.all(e.map(e=>eY(e.id,e.provider))),V(new Date)})()},[eV,eY,eF]),(0,i.useEffect)(()=>{let e=window.localStorage.getItem(o);K(null===e||"true"===e),Q(!0)},[]),(0,i.useEffect)(()=>{Y&&window.localStorage.setItem(o,String(H))},[H,Y]),(0,i.useEffect)(()=>{fetch("/api/settings",{cache:"no-store"}).then(e=>e.ok?e.json():{}).then(e=>{J({claude:e?.claudeAutoPing?.connections||{},codex:e?.codexAutoPing?.connections||{}}),eP(e?.quotaVisibility||{})}).catch(()=>{})},[]);let e3=(0,i.useCallback)(async(e,t,r)=>{let a=T[t];if(!a)return;let i={...B[t]||{},[e]:r};J({...B,[t]:i});try{let e=await fetch("/api/settings",{cache:"no-store"}),t={...(e.ok?await e.json():{})[a]||{},connections:i};await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({[a]:t})})}catch{J(B)}},[B]),e4=(0,i.useCallback)(async(e,t)=>{eP(e);try{if(!(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({quotaVisibility:e})})).ok)throw Error("Failed to update quota visibility")}catch(e){console.error("Error updating quota visibility:",e),eP(t)}},[]),e8=(0,i.useCallback)((e,t,r)=>{let a=v(t);if(!e||!a)return;let i=e$[e]||{},s=new Set(i.hidden||[]);if(s.add(a),"antigravity"===r){if("gemini"===a)for(let e of s)e.startsWith("gemini-")&&!e.includes("image")&&s.delete(e);else if("claude"===a)for(let e of s)(e.startsWith("claude-")||e.startsWith("gpt-"))&&s.delete(e)}e4({...e$,[e]:{...i,hidden:[...s]}},e$)},[e$,e4]),e6=(0,i.useCallback)((e,t,r)=>{let a=v(t);if(!e||!a)return;let i=e$[e]||{},s=new Set(i.hidden||[]);if(s.delete(a),"antigravity"===r){if("gemini"===a)for(let e of s)e.startsWith("gemini-")&&!e.includes("image")&&s.delete(e);else if("claude"===a)for(let e of s)(e.startsWith("claude-")||e.startsWith("gpt-"))&&s.delete(e)}e4({...e$,[e]:{...i,hidden:[...s]}},e$)},[e$,e4]);(0,i.useEffect)(()=>{if(!Y||!H){eB.current&&(clearInterval(eB.current),eB.current=null),eJ.current&&(clearInterval(eJ.current),eJ.current=null);return}return eB.current=setInterval(()=>{e2()},6e4),eJ.current=setInterval(()=>{et(e=>e<=1?60:e-1)},1e3),()=>{eB.current&&clearInterval(eB.current),eJ.current&&clearInterval(eJ.current)}},[H,e2,Y]),(0,i.useEffect)(()=>{let e=()=>{document.hidden?(eB.current&&(clearInterval(eB.current),eB.current=null),eJ.current&&(clearInterval(eJ.current),eJ.current=null)):H&&Y&&(eB.current=setInterval(()=>e2(),6e4),eJ.current=setInterval(()=>{et(e=>e<=1?60:e-1)},1e3))};return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[H,e2,Y]);let e9=(0,i.useMemo)(()=>(function(e,t,r,a,i){if("codex"===a&&"default"!==i)return[...e].sort((e,r)=>{let a=x(e,t),s=x(r,t),n="remaining-asc"===i?a-s:s-a;return 0!==n?n:(m(e)||"").localeCompare(m(r)||"")});if(!r){let t=new Map;for(let r of e){let e=r.provider||"";t.has(e)||t.set(e,[]),t.get(e).push(r)}return Array.from(t.values()).flat()}let s=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=s(e)-s(t);return 0!==r?r:(e.provider||"").localeCompare(t.provider||"")||(m(e)||"").localeCompare(m(t)||"")})})(r,_,eq,ev,eC),[r,_,eq,ev,eC]),e7=(0,i.useCallback)(()=>{let e={...e$},t=!1;for(let r of e9){let a=e[r.id]||{},i=[...function(e){let t=new Set;if(!Array.isArray(e))return t;for(let r of e){let e=v(r);if(!e||!0===r.unlimited)continue;let a=r.total||0;(a<=0||(r.used||0)>=a)&&t.add(e)}return t}(_[r.id]?.quotas||[])],s=a.hidden||[];(i.length!==s.length||i.some((e,t)=>e!==s[t]))&&(e[r.id]={...a,hidden:i},t=!0)}t&&e4(e,e$)},[e$,e4,e9,_]),te=(0,i.useCallback)(()=>{let e={...e$},t=!1;for(let r of e9)e[r.id]?.hidden?.length&&(e[r.id]={...e[r.id],hidden:[]},t=!0);t&&e4(e,e$)},[e$,e4,e9]),tt=e=>{let t=_[e.id]?.quotas;if(!t?.length)return!1;let r=t.filter(e=>!0!==e.unlimited);return 0!==r.length&&r.every(e=>{let t=e.total||0;return t<=0||(e.used||0)>=t})},tr=(0,i.useCallback)(async(e,t)=>{if(e.length&&!eM){eO(!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 b(eV,eF)}catch(e){console.error("Error bulk toggling connections:",e)}finally{eO(!1)}}},[eM,eV,eF]),ta="all"===ev?"All providers":ev,ti=eH.eligibleConnections>0,ts=e9.length>0,tn=eH.eligibleConnections?eH.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"===ev?"Try changing the account status filter to see more quota trackers.":`No ${"inactive"===eN?"turned off":"active"===eN?"active":"matching"} accounts found for ${ev}.`}:{icon:"cloud_off",title:"No Providers Connected",description:"Connect to providers with OAuth to track your API quota limits and usage."},tl=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}`}(eW),to=!d.includes(e_),td=er||ti?er||ts?null:(0,a.jsx)(A.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:tn.icon}),(0,a.jsx)("h3",{className:"mt-4 text-lg font-semibold text-text-primary",children:tn.title}),(0,a.jsx)("p",{className:"mt-2 text-sm text-text-muted max-w-md mx-auto",children:tn.description})]})}):(0,a.jsx)(A.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."})]})});return(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:()=>eD(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":eT,title:"Filter quota providers",children:[(0,a.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:["all"===ev?(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"apps"}):(0,a.jsx)(s.A,{src:`/providers/${ev}.png`,alt:ev,size:18,className:"size-[18px] rounded object-contain",fallbackText:ev.slice(0,2).toUpperCase()}),(0,a.jsx)("span",{className:"truncate capitalize hidden lg:inline",children:ta})]}),(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"expand_more"})]}),eT&&(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:()=>eD(!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"!==ev&&eI(1),ek("all"),eD(!1)},className:`flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left text-sm transition-colors ${"all"===ev?"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"===ev&&(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:ew.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>{ev!==e&&eI(1),ek(e),eD(!1)},className:`flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left text-sm transition-colors ${ev===e?"bg-primary/10 text-primary":"text-text-primary hover:bg-black/5 dark:hover:bg-white/10"}`,children:[(0,a.jsx)(s.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}),ev===e&&(0,a.jsx)("span",{className:"material-symbols-outlined ml-auto text-[20px]",children:"check"})]},e))})]})]})]}),(0,a.jsx)("select",{value:eN,onChange:e=>{let t=e.target.value;eN!==t&&eI(1),eS(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:c.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))}),"codex"===ev&&(0,a.jsx)("select",{value:eC,onChange:e=>eA(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:u.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))}),(0,a.jsxs)("button",{type:"button",onClick:()=>eE(e=>!e),"aria-pressed":eq,className:`flex h-8 shrink-0 items-center gap-1 rounded-lg border px-2 text-xs transition-colors ${eq?"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:()=>{tr(e9.filter(e=>(e.isActive??!0)&&tt(e)).map(e=>e.id),!1)},disabled:eM,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:(0,w.Tl)("Turn off Empty")})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>{tr(e9.filter(e=>!(e.isActive??!0)&&!tt(e)).map(e=>e.id),!0)},disabled:eM,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:(0,w.Tl)("Turn on Available")})]}),(0,a.jsxs)("button",{type:"button",onClick:e7,className:"flex h-8 shrink-0 items-center gap-1 rounded-lg border border-blue-500/30 px-2 text-xs text-blue-500 transition-colors hover:bg-blue-500/10",title:"Hide depleted (zero-balance) quota packs across current connections",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"visibility"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:(0,w.Tl)("Only with balance")})]}),(0,a.jsxs)("button",{type:"button",onClick:te,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",title:"Show all quota packs across current connections",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"visibility_off"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:(0,w.Tl)("Show all")})]}),(0,a.jsxs)("button",{onClick:()=>K(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:H?"Disable auto-refresh":"Enable auto-refresh",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px] ${H?"text-primary":"text-text-muted"}`,children:H?"toggle_on":"toggle_off"}),(0,a.jsx)("span",{className:"hidden text-text-primary sm:inline",children:"Auto-refresh"}),H&&(0,a.jsxs)("span",{className:"text-[10px] text-text-muted tabular-nums",children:["(",ee,"s)"]})]}),(0,a.jsx)("button",{type:"button",onClick:()=>e2(!0),disabled:X,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] ${X?"animate-spin":""}`,children:"refresh"})})]})}),"all"!==eN&&(0,a.jsxs)("div",{className:"flex items-center gap-2 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:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] shrink-0",children:"filter_alt"}),(0,a.jsx)("span",{children:(0,w.Tl)("Account filter is active and persists across visits")})]}),eq&&(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."}),td&&(0,a.jsx)("div",{className:"pt-2",children:td}),!td&&(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:e9.map(r=>{let i,n,l,o=_[r.id],d=z[r.id],c=W[r.id],u=!1===r.isActive,x="codex"===r.provider,h=Number.isFinite(n="number"==typeof(i=o?.raw?.resetCredits?.availableCount)?i:Number(i))?Math.max(0,n):0,p=eo===r.id,b=ei===r.id||en===r.id||p,g=o?.quotas||[],f=function(e,t=[],r={},a){if(!Array.isArray(t)||0===t.length)return[];let i=k(e,r,a,t);return 0===i.size?t:t.filter(e=>!i.has(v(e)))}(r.id,g,e$,r.provider),y=function(e,t=[],r={},a){if(!Array.isArray(t)||0===t.length)return[];let i=k(e,r,a,t);return 0===i.size?[]:t.filter(e=>i.has(v(e)))}(r.id,g,e$,r.provider);return(0,a.jsxs)(A.default,{padding:"none",className:`min-w-0 ${u?"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)(s.A,{src:`/providers/${r.provider}.png`,alt:r.provider,size:32,className:"object-contain",fallbackText:r.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:r.provider}),m(r)?(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:m(r)}):null,M(r)?(0,a.jsx)("p",{className:"text-[11px] text-text-muted/80 truncate",children:M(r)}):null,"kiro"===r.provider&&(0,a.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-1",children:[(0,a.jsx)("span",{className:"rounded-full bg-brand-500/10 px-2 py-0.5 text-[10px] font-semibold text-brand-600 dark:text-brand-300",children:(l=r.providerSpecificData?.authMethod)&&E[l]?E[l]:"api_key"===r.authType?"API Key":"OAuth"}),O(r)&&(0,a.jsx)("span",{className:"rounded-full bg-blue-500/10 px-2 py-0.5 text-[10px] font-semibold text-blue-600 dark:text-blue-400",children:O(r)}),(0,a.jsx)("span",{className:`rounded-full px-2 py-0.5 text-[10px] font-semibold ${u?"bg-surface-2 text-text-muted":"active"===r.testStatus||"success"===r.testStatus?"bg-green-500/10 text-green-600 dark:text-green-400":"error"===r.testStatus||"expired"===r.testStatus||"unavailable"===r.testStatus?"bg-red-500/10 text-red-600 dark:text-red-400":"bg-surface-2 text-text-muted"}`,children:u?"disabled":r.testStatus||"unknown"}),r.providerSpecificData?.profileArn&&(0,a.jsxs)("button",{type:"button",onClick:()=>t(r.providerSpecificData.profileArn,r.id),title:r.providerSpecificData.profileArn,className:"inline-flex max-w-full items-center gap-1 rounded-full border border-border-subtle px-2 py-0.5 text-[10px] text-text-muted transition-colors hover:text-primary",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:e===r.id?"check":"content_copy"}),(0,a.jsx)("code",{className:"truncate font-mono",children:r.providerSpecificData.profileArn})]})]})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[x&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(C.default,{text:h>0?`Use one Codex reset credit. Available: ${h}`:"No Codex reset credits available",children:(0,a.jsxs)("button",{type:"button",onClick:()=>eu({connection:r,resetCreditCount:h}),disabled:h<=0||d||b,"aria-label":h>0?`Use one Codex reset credit. ${h} available.`:"No Codex reset credits available",className:`flex h-8 min-w-10 items-center justify-center gap-1 rounded-lg border px-2 text-[11px] font-medium tabular-nums transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary/60 disabled:cursor-not-allowed disabled:opacity-60 ${h>0?"border-primary/30 bg-primary/5 text-primary hover:bg-primary/10":"border-black/10 bg-black/[0.02] text-text-muted dark:border-white/10 dark:bg-white/[0.03]"}`,children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[15px] ${p?"animate-spin":""}`,children:p?"progress_activity":"restart_alt"}),(0,a.jsx)("span",{children:h})]})}),(0,a.jsx)(C.default,{text:"View Codex reset credit expiry",children:(0,a.jsx)("button",{type:"button",onClick:()=>eZ(r),disabled:d||b,"aria-label":"View Codex reset credit expiry",className:"flex h-8 w-8 items-center justify-center rounded-lg border border-black/10 text-text-muted transition-colors hover:bg-black/5 hover:text-primary disabled:cursor-not-allowed disabled:opacity-50 dark:border-white/10 dark:hover:bg-white/5",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[17px]",children:"schedule"})})})]}),T[r.provider]&&"oauth"===r.authType&&(0,a.jsx)(C.default,{text:D[r.provider],children:(0,a.jsx)("button",{type:"button",onClick:()=>e3(r.id,r.provider,B[r.provider]?.[r.id]!==!0),"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 ${B[r.provider]?.[r.id]===!0?"text-primary":"text-text-muted"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"bolt"})})}),(0,a.jsx)(C.default,{text:"Refresh quota",children:(0,a.jsx)("button",{type:"button",onClick:()=>eQ(r.id,r.provider),disabled:d||b,"aria-label":"Refresh quota",className:"flex h-8 w-8 items-center justify-center rounded-lg hover:bg-black/5 dark:hover:bg-white/5 transition-colors disabled:opacity-50",children:(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] text-text-muted ${d?"animate-spin":""}`,children:"refresh"})})}),(0,a.jsx)(C.default,{text:"Edit connection",children:(0,a.jsx)("button",{type:"button",onClick:()=>{eg(r),ep(!0)},disabled:b,"aria-label":"Edit connection",className:"flex h-8 w-8 items-center justify-center rounded-lg hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary transition-colors disabled:opacity-50",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})})}),(0,a.jsx)(C.default,{text:"Delete connection",children:(0,a.jsx)("button",{type:"button",onClick:()=>e0(r.id),disabled:b,"aria-label":"Delete connection",className:"flex h-8 w-8 items-center justify-center rounded-lg hover:bg-red-500/10 text-red-500 transition-colors disabled:opacity-50",children:(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] ${ei===r.id?"animate-pulse":""}`,children:"delete"})})}),(0,a.jsx)("div",{className:"inline-flex items-center pl-0.5",title:r.isActive??!0?"Disable connection":"Enable connection",children:(0,a.jsx)(S.default,{size:"sm",checked:r.isActive??!0,disabled:b,onChange:e=>e1(r.id,e)})})]})]})}),(0,a.jsxs)("div",{className:"px-2 py-1.5",children:[d?(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"})}):c?(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:c})]}):o?.message?(0,a.jsx)("div",{className:"text-center py-5",children:(0,a.jsx)("p",{className:"text-xs text-text-muted",children:o.message})}):(0,a.jsx)(N,{quotas:f,compact:!0,sortMode:"default",showSortLabel:"codex"===r.provider&&"default"!==eC,onHideQuota:e=>e8(r.id,e,r.provider)}),y.length>0&&(0,a.jsxs)("div",{className:"mt-2 flex min-w-0 items-center gap-1 border-t border-black/5 pt-2 text-[10px] text-text-muted dark:border-white/5",children:[(0,a.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[14px]",children:"visibility_off"}),(0,a.jsx)("span",{className:"shrink-0",children:"Hidden:"}),(0,a.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto whitespace-nowrap pb-2",children:y.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>e6(r.id,e,r.provider),className:"shrink-0 rounded-md border border-black/10 px-1.5 py-0.5 transition-colors hover:bg-black/5 hover:text-text-primary dark:border-white/10 dark:hover:bg-white/5",title:"Show this quota row",children:j(e.name)},v(e)))})]})]})]},r.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:tl}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("select",{value:to?"custom":String(e_),onChange:e=>{let t=e.target.value;if("custom"===t)return;let r=Number.parseInt(t,10);Number.isFinite(r)&&(eI(1),eL(r),eR(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:[d.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:ez,onChange:e=>eR(e.target.value),onBlur:()=>{let e=Number.parseInt(ez,10);if(!Number.isFinite(e))return void eR(String(e_));let t=Math.min(500,Math.max(1,e));eI(1),eL(t),eR(String(t))},onKeyDown:e=>{if("Enter"!==e.key)return;let t=Number.parseInt(ez,10);if(!Number.isFinite(t))return void eR(String(e_));let r=Math.min(500,Math.max(1,t));eI(1),eL(r),eR(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 ",eW.page," / ",eW.totalPages]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("button",{type:"button",onClick:()=>eI(1),disabled:eW.page<=1||er||X,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:()=>eI(e=>Math.max(1,e-1)),disabled:eW.page<=1||er||X,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:()=>eI(e=>Math.min(eW.totalPages,e+1)),disabled:eW.page>=eW.totalPages||er||X,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:()=>eI(eW.totalPages),disabled:eW.page>=eW.totalPages||er||X,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)($.uo,{isOpen:!!ec,onClose:()=>{eo||eu(null)},onConfirm:async()=>{let e=ec?.connection;e&&(await eX(e.id,e.provider),eu(null))},title:"Reset Codex limit?",message:`Use 1 Codex reset credit for ${m(ec?.connection||{})||"this account"}. This cannot be undone. Remaining credits: ${ec?.resetCreditCount??0}.`,confirmText:"Reset limit",cancelText:"Cancel",variant:"danger",loading:!!eo}),em&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 px-4 backdrop-blur-sm",children:(0,a.jsxs)("div",{className:"w-full max-w-2xl overflow-hidden rounded-2xl border border-black/15 bg-white shadow-2xl ring-1 ring-black/10 dark:border-white/15 dark:bg-neutral-950 dark:ring-white/10",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-3 border-b border-black/10 bg-black/[0.03] px-4 py-3 dark:border-white/10 dark:bg-white/[0.04]",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h3",{className:"text-base font-semibold text-text-primary",children:"Codex Reset Credit Expiry"}),(0,a.jsx)("p",{className:"mt-0.5 truncate text-xs text-text-muted",children:m(em.connection)||"Codex account"})]}),(0,a.jsx)("button",{type:"button",onClick:()=>ex(null),className:"flex h-8 w-8 items-center justify-center rounded-lg text-text-muted transition-colors hover:bg-black/5 hover:text-text-primary dark:hover:bg-white/5","aria-label":"Close reset credit expiry modal",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,a.jsx)("div",{className:"max-h-[70vh] overflow-auto bg-white p-4 dark:bg-neutral-950",children:em.loading?(0,a.jsxs)("div",{className:"flex items-center justify-center gap-2 py-10 text-sm text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-[20px]",children:"progress_activity"}),"Loading reset credits..."]}):em.error?(0,a.jsx)("div",{className:"rounded-xl border border-red-500/20 bg-red-500/10 px-3 py-2 text-sm text-red-600 dark:text-red-300",children:em.error}):em.data?.credits?.length?(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between rounded-xl border border-black/10 bg-black/[0.02] px-3 py-2 text-xs text-text-muted dark:border-white/10 dark:bg-white/[0.03]",children:[(0,a.jsxs)("span",{children:[em.data.credits.length," reset credit",1===em.data.credits.length?"":"s"]}),(0,a.jsxs)("span",{children:[em.data.availableCount??0," available"]})]}),(0,a.jsx)("div",{className:"overflow-x-auto rounded-xl border border-black/10 dark:border-white/10",children:(0,a.jsxs)("table",{className:"w-full min-w-[560px] text-left text-sm",children:[(0,a.jsx)("thead",{className:"bg-black/[0.03] text-xs uppercase tracking-wide text-text-muted dark:bg-white/[0.04]",children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"px-3 py-2 font-medium",children:"Status"}),(0,a.jsx)("th",{className:"px-3 py-2 font-medium",children:"Granted At"}),(0,a.jsx)("th",{className:"px-3 py-2 font-medium",children:"Expires At"}),(0,a.jsx)("th",{className:"px-3 py-2 font-medium",children:"Remaining"})]})}),(0,a.jsx)("tbody",{children:em.data.credits.map((e,t)=>(0,a.jsxs)("tr",{className:"border-t border-black/5 dark:border-white/5",children:[(0,a.jsx)("td",{className:"px-3 py-2",children:(0,a.jsx)("span",{className:"rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary",children:e.status||"unknown"})}),(0,a.jsx)("td",{className:"px-3 py-2 text-text-muted",children:F(e.grantedAt)}),(0,a.jsx)("td",{className:"px-3 py-2 text-text-primary",children:F(e.expiresAt)}),(0,a.jsx)("td",{className:"px-3 py-2 font-medium text-text-primary",children:function(e){if(!e)return"N/A";let t=new Date(e).getTime()-Date.now();if(!Number.isFinite(t))return"N/A";if(t<=0)return"Expired";let r=Math.ceil(t/36e5),a=Math.floor(r/24),i=r%24;return a>0?`${a}d ${i}h`:`${i}h`}(e.expiresAt)})]},`${e.status}-${e.expiresAt||t}`))})]})})]}):(0,a.jsx)("div",{className:"rounded-xl border border-black/10 bg-black/[0.02] px-3 py-8 text-center text-sm text-text-muted dark:border-white/10 dark:bg-white/[0.03]",children:"No reset credit details returned for this account."})})]})}),(0,a.jsx)($.wI,{isOpen:eh,connection:eb,proxyPools:ef,onSave:e5,onClose:()=>{ep(!1),eg(null)}})]})}}},e=>{e.O(0,[3170,1728,1321,5497,8441,3794,7358],()=>e(e.s=26048)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2825],{62628:(e,t,s)=>{Promise.resolve().then(s.bind(s,70592))},70592:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>J});var a=s(95155),n=s(12115),l=s(73321),r=s(35497),i=s(84588),d=s(92542),o=s(31474);function c({isOpen:e,onClose:t,title:s,children:l,width:r="md",className:i}){let d={sm:"w-[400px]",md:"w-[500px]",lg:"w-[600px]",xl:"w-[800px]",full:"w-full"};return((0,n.useEffect)(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[e]),(0,n.useEffect)(()=>{let s=s=>{"Escape"===s.key&&e&&t()};return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[e,t]),e)?(0,a.jsxs)("div",{className:"fixed inset-0 z-50",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-[2px] fade-in cursor-pointer",onClick:t,"aria-hidden":"true"}),(0,a.jsxs)("div",{className:(0,o.cn)("absolute right-0 top-0 h-full bg-surface flex flex-col","shadow-[var(--shadow-elev)]","slide-in-right","border-l border-border-subtle",d[r]||d.md,i),children:[(0,a.jsxs)("div",{className:"flex items-center justify-between p-6 border-b border-border-subtle flex-shrink-0",children:[(0,a.jsx)("div",{className:"flex items-center gap-3",children:s&&(0,a.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:s})}),(0,a.jsx)("button",{type:"button",onClick:t,className:"p-1.5 rounded-[10px] text-text-muted hover:bg-surface-2 hover:text-text-main transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto p-6 custom-scrollbar",children:l})]})]}):null}function x({currentPage:e,pageSize:t,totalItems:s,onPageChange:n,onPageSizeChange:l,className:r}){let i=Math.ceil(s/t),c=s>0?(e-1)*t+1:0,m=Math.min(e*t,s),u=(()=>{let t=[],s=Math.max(1,e-2),a=Math.min(i,s+5-1);a-s+1<5&&(s=Math.max(1,a-5+1));for(let e=s;e<=a;e++)t.push(e);return t})();return(0,a.jsxs)("div",{className:(0,o.cn)("flex flex-col sm:flex-row items-center justify-between gap-4 py-4 px-2",r),children:[s>0&&(0,a.jsxs)("div",{className:"text-sm text-text-muted",children:["Showing ",(0,a.jsx)("span",{className:"font-medium text-text-main",children:c})," to"," ",(0,a.jsx)("span",{className:"font-medium text-text-main",children:m})," of"," ",(0,a.jsx)("span",{className:"font-medium text-text-main",children:s})," results"]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center justify-center gap-2 sm:gap-4",children:[l&&(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"text-sm text-text-muted",children:"Rows:"}),(0,a.jsx)("select",{value:t,onChange:e=>l(Number(e.target.value)),className:(0,o.cn)("h-9 rounded-lg border border-black/10 dark:border-white/10 bg-surface","text-sm text-text-main focus:outline-none focus:ring-2 focus:ring-primary/20","cursor-pointer"),style:{colorScheme:"auto"},children:[10,20,50].map(e=>(0,a.jsx)("option",{value:e,children:e},e))})]}),i>1&&(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(d.default,{variant:"outline",size:"sm",onClick:()=>n(e-1),disabled:1===e,className:"w-9 px-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"chevron_left"})}),u[0]>1&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d.default,{variant:"ghost",size:"sm",onClick:()=>n(1),className:"w-9 px-0 hidden sm:inline-flex",children:"1"}),u[0]>2&&(0,a.jsx)("span",{className:"text-text-muted px-1 hidden sm:inline",children:"..."})]}),u.map(t=>(0,a.jsx)(d.default,{variant:e===t?"primary":"ghost",size:"sm",onClick:()=>n(t),className:(0,o.cn)("w-9 px-0",e===t?"inline-flex":"hidden sm:inline-flex"),children:t},t)),u[u.length-1]<i&&(0,a.jsxs)(a.Fragment,{children:[u[u.length-1]<i-1&&(0,a.jsx)("span",{className:"text-text-muted px-1 hidden sm:inline",children:"..."}),(0,a.jsx)(d.default,{variant:"ghost",size:"sm",onClick:()=>n(i),className:"w-9 px-0 hidden sm:inline-flex",children:i})]}),(0,a.jsx)(d.default,{variant:"outline",size:"sm",onClick:()=>n(e+1),disabled:e===i,className:"w-9 px-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"chevron_right"})})]})]})]})}var m=s(88105),u=s(14051),h=s.n(u),p=s(56061),g=s(45496),f=s(73006),b=s(43185),j=s(28067);let v=["bg-black/[0.07] dark:bg-white/[0.08]","bg-primary/25","bg-primary/50","bg-primary/75","bg-primary"],N=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];function k(e,t){return 0===e||0===t?0:Math.min(4,Math.ceil(e/t*4))}function y({dateLine:e,statsLine:t,style:s,className:n,onEnter:l,onLeave:r,showTip:i=!0}){return(0,a.jsxs)("div",{className:"relative inline-flex shrink-0 group/tt",style:s,onMouseEnter:l,onMouseLeave:r,children:[(0,a.jsx)("div",{className:n,style:{width:"100%",height:"100%"}}),i&&(0,a.jsxs)("div",{className:"pointer-events-none absolute bottom-full left-1/2 z-50 mb-1.5 w-max -translate-x-1/2 rounded border border-black/10 bg-white px-2 py-1 text-[11px] leading-snug text-text-main opacity-0 shadow-lg transition-opacity duration-150 group-hover/tt:opacity-100 dark:border-white/10 dark:bg-gray-700 dark:text-white",children:[(0,a.jsx)("div",{className:"font-medium",children:e}),(0,a.jsx)("div",{className:"text-text-muted dark:text-white/80",children:t})]})]})}function w(e){let t=0,s=0;for(let a of e)a.inRange&&(t+=a.requests,s+=a.tokens);return{requests:t,tokens:s}}function S({daily:e,days:t=365,currentStreak:s}){let[l,r]=(0,n.useState)("day"),[i,d]=(0,n.useState)(null),c=(0,f.kk)(),x=function(e,t){let s={},a=0;for(let t of e||[])s[t.date]=t,t.requests>a&&(a=t.requests);let n=new Date;n.setHours(0,0,0,0);let l=new Date(n);l.setDate(l.getDate()-(t-1));let r=new Date(l);r.setDate(r.getDate()-(r.getDay()+6)%7);let i=[];for(;r<=n;){let e=[];for(let t=0;t<7;t++){let t=new Date(r),i=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`,d=t>=l&&t<=n,o=s[i],c=o?.requests||0;e.push({key:i,date:new Date(t),inRange:d,requests:c,tokens:o?.tokens||0,cost:o?.cost||0,level:d?k(c,a):0}),r.setDate(r.getDate()+1)}i.push(e)}return i}(e,t),m=e=>e.toLocaleDateString(c,{year:"numeric",month:"long",day:"numeric"}),u=(0,n.useRef)(null),[h,p]=(0,n.useState)({w:0,h:0});(0,n.useEffect)(()=>{if(!u.current)return;let e=new ResizeObserver(e=>{let t=e[0].contentRect;p({w:t.width,h:t.height})});return e.observe(u.current),()=>e.disconnect()},[]);let g=h.h>0?Math.max(6,(h.h-24.8)/7):0,T=g>0?Math.min(x.length,Math.max(4,Math.floor((h.w-32-4+4)/(g+4)))):0,C=T>0?x.slice(-T):[],R=C.map(w).reduce((e,t)=>Math.max(e,t.requests/7),0),D=0,L=0,M=0;for(let e of C)for(let t of e)t.inRange&&(D+=t.requests,L+=t.tokens,t.requests>0&&(M+=1));let q=null!=s?c.startsWith("zh-tw")||"zh-HK"===c?` \xb7 連續 ${s} 天`:c.startsWith("zh")?` \xb7 连续 ${s} 天`:` \xb7 ${s}d streak`:"";return(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-text-muted",children:[(0,a.jsx)("span",{children:(0,f.Tl)("Less")}),v.map((e,t)=>(0,a.jsx)("span",{className:(0,o.cn)("w-3 h-3 shrink-0 rounded-sm",e)},t)),(0,a.jsx)("span",{children:(0,f.Tl)("More")})]}),(0,a.jsx)(j.default,{size:"sm",value:l,onChange:r,options:[{value:"day",label:(0,f.Tl)("Day")},{value:"week",label:(0,f.Tl)("Week")}]})]}),(0,a.jsxs)("div",{className:"pb-1",children:[(0,a.jsx)("div",{className:"flex",style:{gap:4,paddingLeft:36,height:12},children:C.map((e,t)=>(0,a.jsx)("div",{style:{width:g},className:"shrink-0 overflow-visible whitespace-nowrap text-[9px] leading-none text-text-muted",children:t>0&&e[6].date.getMonth()!==C[t-1][6].date.getMonth()?e[6].date.toLocaleDateString("en"===c?"en-US":c,{month:"short"}):""},t))}),(0,a.jsx)("div",{ref:u,className:"mt-1 h-[150px] sm:h-[170px]",children:g>0&&N.map((e,t)=>(0,a.jsxs)("div",{className:"flex",style:{gap:4,marginTop:0===t?0:5===t?4.8:4},children:[(0,a.jsx)("div",{style:{width:32},className:"flex shrink-0 items-center text-[9px] leading-none text-text-muted",children:t%2==0?(0,f.Tl)(e):""}),C.map((e,s)=>{let n=e[t],r="week"===l,x=r&&i===s;if(r){let l=e.filter(e=>e.inRange),r=w(e);return(0,a.jsxs)("div",{className:"relative inline-flex shrink-0",style:{width:g,height:g},onMouseEnter:()=>n.inRange&&d(s),onMouseLeave:()=>n.inRange&&d(null),children:[(0,a.jsx)("div",{style:{width:"100%",height:"100%"},className:(0,o.cn)("rounded-sm transition-transform",n.inRange?v[k(r.requests/7,R)]:"bg-transparent",x&&n.inRange&&"scale-110 ring-1 ring-text-main/50")}),0===t&&l.length>0&&(0,a.jsxs)("div",{className:(0,o.cn)("pointer-events-none absolute bottom-full left-1/2 z-50 mb-1.5 w-max -translate-x-1/2 rounded border border-black/10 bg-white px-2 py-1 text-[11px] leading-snug text-text-main shadow-lg transition-opacity duration-150 dark:border-white/10 dark:bg-gray-700 dark:text-white",x?"opacity-100":"opacity-0"),children:[(0,a.jsx)("div",{className:"font-medium",children:`${m(l[l.length-1].date)} ${(0,f.Tl)("This Week")}`}),(0,a.jsx)("div",{className:"text-text-muted dark:text-white/80",children:`${(0,b.y)(r.tokens,c,!0)} tokens \xb7 ${r.requests} ${(0,f.Tl)("requests")}`})]})]},n.key)}return n.inRange?(0,a.jsx)(y,{style:{width:g,height:g},dateLine:m(n.date),statsLine:`${(0,b.y)(n.tokens,c,!0)} tokens \xb7 ${n.requests} ${(0,f.Tl)("requests")}`,className:(0,o.cn)("rounded-sm transition-transform hover:scale-110 hover:ring-1 hover:ring-text-main/40",v[n.level])},n.key):(0,a.jsx)("div",{style:{width:g,height:g},className:"shrink-0 bg-transparent"},n.key)})]},e))})]}),(0,a.jsx)("div",{className:"text-[10px] text-text-muted",children:`${D.toLocaleString()} ${(0,f.Tl)("requests")} \xb7 ${(0,b.y)(L,c,!0)} ${(0,f.Tl)("tokens")} \xb7 ${M} ${(0,f.Tl)("active days")}${q}`})]})}y.propTypes={dateLine:h().string.isRequired,statsLine:h().string.isRequired,style:h().object,className:h().string,onEnter:h().func,onLeave:h().func,showTip:h().bool},S.propTypes={daily:h().arrayOf(h().shape({date:h().string.isRequired,requests:h().number,tokens:h().number,cost:h().number})),days:h().number,currentStreak:h().number};let T=[{key:"name",label:"Name",align:"left",kind:"name"},{key:"score",label:"Health",align:"center",kind:"badge"},{key:"successRate",label:"Success",align:"right",kind:"rate"},{key:"avgTtftMs",label:"Avg TTFT",align:"right",kind:"latency"},{key:"avgLatencyMs",label:"Avg Latency",align:"right",kind:"latency"},{key:"avgSpeed",label:"Avg Speed",align:"right",kind:"speed"},{key:"requests",label:"Requests",align:"right",kind:"int"},{key:"lastUsed",label:"Last Used",align:"right",kind:"date"}],C=[{key:"model",label:"Model",align:"left",kind:"name"},...T.slice(1)],R={left:"text-left",center:"text-center",right:"text-right"};function D(e){return String(e??"").trim().replace(/\s+/g," ")}function L({col:e,row:t,nameKey:s,subKey:n,expandable:l,isOpen:r}){var i,d,c;switch(e.kind){case"name":return(0,a.jsxs)("div",{className:"flex min-w-0 items-start gap-1",children:[l&&(0,a.jsx)("span",{className:"material-symbols-outlined mt-0.5 shrink-0 text-base leading-5 text-text-muted",children:r?"expand_more":"chevron_right"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("div",{className:"truncate text-sm font-medium text-text-main",children:D(t[s])}),n&&t[n]&&(0,a.jsx)("div",{className:"truncate text-xs text-text-muted",children:D(t[n])})]})]});case"badge":if(null==t.score)return(0,a.jsx)("span",{className:"text-text-muted",children:"—"});return(0,a.jsx)(p.default,{variant:(i=t.score)>=90?"success":i>=70?"warning":"error",size:"sm",children:t.score});case"rate":return(0,a.jsxs)("span",{className:(0,o.cn)("font-mono",t.successRate>=90?"text-success":t.successRate>=70?"text-warning":"text-red-500"),children:[t.successRate,"%"]});case"latency":return(0,a.jsx)("span",{className:"font-mono",children:null==(d=t[e.key])?"—":d<1e3?`${d}ms`:`${(d/1e3).toFixed(1)}s`});case"speed":return(0,a.jsx)("span",{className:"font-mono",children:null==(c=t.avgSpeed)||Number.isNaN(c)?"—":`${c.toLocaleString()} tok/s`});case"int":return(0,a.jsx)("span",{className:"font-mono",children:(t[e.key]||0).toLocaleString()});case"cost":return(0,a.jsx)("span",{className:"font-mono",children:(0,g.F)(t.cost)});case"date":return(0,a.jsx)("span",{className:"text-text-muted",children:function(e){if(!e)return"—";let t=new Date(e);return Number.isNaN(t.getTime())?"—":t.toLocaleString((0,f.kk)(),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}(t.lastUsed)});default:return String(t[e.key]??"—")}}L.propTypes={col:h().object.isRequired,row:h().object.isRequired,nameKey:h().string.isRequired,subKey:h().string,expandable:h().bool,isOpen:h().bool};let M=new Set(["avgTtftMs","avgLatencyMs","avgSpeed"]);function q({rows:e,emptyText:t,parentNode:s}){if(0===e.length)return(0,a.jsx)("p",{className:"px-8 py-3 text-xs text-text-muted",children:t});let n={avgTtftMs:!!s?.hasTtft||e.some(e=>e.hasTtft),avgLatencyMs:!!s?.hasPerfData||e.some(e=>e.hasPerfData),avgSpeed:!!s?.hasSpeed||e.some(e=>e.hasSpeed)},l=C.filter(e=>M.has(e.key)?n[e.key]:"score"!==e.key||n.avgLatencyMs);return(0,a.jsx)("table",{className:"w-full",children:(0,a.jsx)("tbody",{children:e.map(e=>(0,a.jsx)("tr",{className:"border-b border-black/5 dark:border-white/5 last:border-b-0",children:l.map(t=>(0,a.jsx)("td",{className:(0,o.cn)("p-2 pl-8 text-sm text-text-main",R[t.align],"name"===t.kind&&"max-w-[240px]"),children:(0,a.jsx)(L,{col:t,row:e,nameKey:"model"})},t.key))},e.model))})})}function $(e,t,s,a){let n=e=>{if("name"===t)return D(e[a]||"");let n=e[t];return"string"==typeof n?n:null==n?"desc"===s?-1/0:1/0:n};return[...e].sort((e,t)=>{let a=n(e),l=n(t),r="string"==typeof a&&"string"==typeof l?a.localeCompare(l):a-l;return"desc"===s?-r:r})}function z({rows:e,columns:t,nameKey:s,subKey:l,emptyText:r,renderExpanded:i,expandedEmptyText:d,expandedNameKey:c="model"}){let[m,u]=(0,n.useState)("score"),[h,p]=(0,n.useState)("desc"),[g,b]=(0,n.useState)(1),[j,v]=(0,n.useState)(10),[N,k]=(0,n.useState)(()=>new Set),y=(0,n.useMemo)(()=>$(e,m,h,s),[e,m,h,s]);if(0===e.length)return(0,a.jsx)("p",{className:"py-6 text-center text-sm text-text-muted",children:r});let w=Math.min(g,Math.max(1,Math.ceil(e.length/j))),S=y.slice((w-1)*j,w*j);return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full min-w-[640px]",children:[(0,a.jsx)("thead",{children:(0,a.jsx)("tr",{className:"border-b border-black/5 dark:border-white/5",children:t.map(e=>(0,a.jsx)("th",{className:(0,o.cn)("p-2 text-xs font-semibold text-text-muted",R[e.align]),children:(0,a.jsxs)("button",{onClick:()=>{var t;return t=e.key,void(b(1),m===t?p(e=>"desc"===e?"asc":"desc"):(u(t),p("name"===t?"asc":"desc")))},className:(0,o.cn)("inline-flex items-center gap-0.5 hover:text-text-main transition-colors",m===e.key&&"text-text-main"),children:[(0,f.Tl)(e.label),(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:m===e.key?"desc"===h?"arrow_downward":"arrow_upward":"unfold_more"})]})},e.key))})}),(0,a.jsx)("tbody",{children:S.map((e,x)=>{let u=`${e[s]}-${x}`,p=!!i&&N.has(u),g=p?$(i(e),m,h,c):null;return(0,a.jsxs)(n.Fragment,{children:[(0,a.jsx)("tr",{onClick:i?()=>{k(e=>{let t=new Set(e);return t.has(u)?t.delete(u):t.add(u),t})}:void 0,className:(0,o.cn)("border-b border-black/5 dark:border-white/5 last:border-b-0 hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors",i&&"cursor-pointer select-none"),children:t.map(t=>(0,a.jsx)("td",{className:(0,o.cn)("p-2 text-sm text-text-main",R[t.align],"name"===t.kind&&"max-w-[240px]"),children:(0,a.jsx)(L,{col:t,row:e,nameKey:s,subKey:l,expandable:!!i,isOpen:p})},t.key))}),p&&(0,a.jsx)("tr",{className:"border-b border-black/5 dark:border-white/5 last:border-b-0",children:(0,a.jsx)("td",{colSpan:t.length,className:"p-0 bg-black/[0.02] dark:bg-white/[0.02]",children:(0,a.jsx)(q,{rows:g,emptyText:d||r,parentNode:e})})})]},u)})})]})}),(0,a.jsx)("div",{className:"border-t border-black/5 dark:border-white/5",children:(0,a.jsx)(x,{currentPage:w,pageSize:j,totalItems:e.length,onPageChange:b,onPageSizeChange:e=>{v(e),b(1)}})})]})}function _({lifetime:e}){let t=(0,f.kk)();if(!e)return null;let s=[{label:"Total Requests",value:(e.totalRequests||0).toLocaleString()},{label:"Lifetime Tokens",value:(0,b.y)(e.totalTokens,t),valueClass:"text-primary"},{label:"Peak Day Tokens",value:(0,b.y)(e.peakTokens,t),sub:e.peakDate||"",valueClass:"text-info"},{label:"Cache Hit Rate",value:null!=e.cacheHitRate?`${e.cacheHitRate}%`:"—",sub:(0,f.Tl)("Only real valid data is counted"),valueClass:"text-success"},{label:"Most Used Model",value:e.topModel?.model||"—",sub:e.topModel?`${(0,f.Tl)("Last 7 days")} ${(0,b.y)(e.topModel.tokens,t,!0)}${e.topModel.provider?` \xb7 ${e.topModel.provider}`:""}`:"",valueClass:"text-warning",shrink:!0}];return(0,a.jsx)("div",{className:"grid min-w-0 grid-cols-1 gap-3 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5 sm:gap-4",children:s.map(e=>(0,a.jsxs)(i.default,{className:"flex min-w-0 flex-col gap-1 px-4 py-3",style:{containerType:"inline-size"},children:[(0,a.jsx)("span",{className:"truncate text-text-muted text-sm uppercase font-semibold",children:(0,f.Tl)(e.label)}),(0,a.jsx)("div",{className:"flex h-8 items-center min-w-0",children:(0,a.jsx)("span",{className:(0,o.cn)("whitespace-nowrap font-bold",e.shrink?"text-[clamp(0.875rem,4.5cqw,1.5rem)] leading-none truncate":"truncate text-2xl leading-none",e.valueClass),children:e.value})}),e.sub?(0,a.jsx)("span",{className:"truncate text-[10px] text-text-muted",children:e.sub}):(0,a.jsx)("span",{className:"text-[10px] invisible select-none leading-normal",children:"\xa0"})]},e.label))})}function P(){let[e,t]=(0,n.useState)(null),[s,l]=(0,n.useState)(!0),[r,d]=(0,n.useState)(!1);if((0,n.useEffect)(()=>{let e=!1;return(async()=>{try{let s=await fetch("/api/usage/dashboard");if(!s.ok)throw Error(`HTTP ${s.status}`);let a=await s.json();e||(t(a),d(!1))}catch(t){console.error("Failed to fetch usage dashboard:",t),e||d(!0)}finally{e||l(!1)}})(),()=>{e=!0}},[]),s)return(0,a.jsx)(i.default,{padding:"md",children:(0,a.jsxs)("div",{className:"flex items-center justify-center gap-2 py-8 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-[20px]",children:"progress_activity"}),(0,f.Tl)("Loading dashboard...")]})});if(r||!e)return(0,a.jsx)(i.default,{padding:"md",children:(0,a.jsx)("p",{className:"py-6 text-center text-sm text-text-muted",children:(0,f.Tl)("Failed to load usage dashboard")})});let o=(e.nodes||[]).filter(e=>null!=e.score),c=e.daily||[];return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(_,{lifetime:e.lifetime}),(0,a.jsx)(i.default,{title:(0,f.Tl)("Activity Heatmap"),icon:"calendar_month",padding:"md",children:0===c.length?(0,a.jsx)("p",{className:"py-6 text-center text-sm text-text-muted",children:(0,f.Tl)("No activity in the selected period")}):(0,a.jsx)(S,{daily:c,days:365,currentStreak:e.lifetime?.currentStreak})}),(0,a.jsxs)(i.default,{title:(0,f.Tl)("Node Health"),icon:"dns",padding:"md",children:[(0,a.jsx)("p",{className:"mb-2 text-xs text-text-muted",children:(0,f.Tl)("Last 7 days (≥50 real requests)")}),(0,a.jsx)(z,{rows:o,columns:T,nameKey:"name",emptyText:(0,f.Tl)("No nodes with 50+ requests in this period"),renderExpanded:t=>(e.models||[]).filter(e=>e.provider===t.provider),expandedEmptyText:(0,f.Tl)("No models with 10+ requests under this node")})]})]})}q.propTypes={rows:h().arrayOf(h().object).isRequired,emptyText:h().string.isRequired,parentNode:h().object},z.propTypes={rows:h().arrayOf(h().object).isRequired,columns:h().arrayOf(h().object).isRequired,nameKey:h().string.isRequired,subKey:h().string,emptyText:h().string.isRequired,renderExpanded:h().func,expandedEmptyText:h().string,expandedNameKey:h().string},_.propTypes={lifetime:h().object};let E=null,F=null;async function O(){if(E&&F)return{providerNameCache:E,providerNodesCache:F};let e=await fetch("/api/provider-nodes"),t=(await e.json()).nodes||[];for(let e of(F={},t))F[e.id]=e.name;return{providerNameCache:E={...m.Q2,...F},providerNodesCache:F}}function I(e,t){if(!e||!t)return e;let s=t[e];if("string"==typeof s)return s;if(s?.name)return s.name;let a=(0,m.zt)(e)||m.Q2[e];return a?.name||e}function K({title:e,children:t,defaultOpen:s=!1,icon:l=null}){let[r,i]=(0,n.useState)(s);return(0,a.jsxs)("div",{className:"border border-black/5 dark:border-white/5 rounded-lg overflow-hidden",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>i(!r),className:"w-full flex items-center justify-between p-3 bg-black/[0.02] dark:bg-white/[0.02] hover:bg-black/[0.04] dark:hover:bg-white/[0.04] transition-colors",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[l&&(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:l}),(0,a.jsx)("span",{className:"font-semibold text-sm text-text-main",children:e})]}),(0,a.jsx)("span",{className:(0,o.cn)("material-symbols-outlined text-[20px] text-text-muted transition-transform duration-200",r?"rotate-90":""),children:"chevron_right"})]}),r&&(0,a.jsx)("div",{className:"p-4 border-t border-black/5 dark:border-white/5",children:t})]})}function H(e){return e?.cached_tokens||e?.cache_read_input_tokens||0}function A(e){return e?.cache_creation_input_tokens||0}function U(e){let t=e?.prompt_tokens||e?.input_tokens||0,s=H(e);return t<s?s:t}function W(){let[e,t]=(0,n.useState)([]),[s,l]=(0,n.useState)({page:1,pageSize:20,totalItems:0,totalPages:0}),[r,m]=(0,n.useState)(!1),[u,h]=(0,n.useState)(null),[p,g]=(0,n.useState)(!1),[f,b]=(0,n.useState)([]),[j,v]=(0,n.useState)(null),[N,k]=(0,n.useState)({provider:"",startDate:"",endDate:""}),y=(0,n.useCallback)(async()=>{try{let e=await fetch("/api/usage/providers"),t=await e.json();b(t.providers||[]);let s=await O();v(s.providerNameCache)}catch(e){console.error("Failed to fetch providers:",e)}},[]),w=(0,n.useCallback)(async()=>{m(!0);try{let e=new URLSearchParams({page:s.page.toString(),pageSize:s.pageSize.toString()});N.provider&&e.append("provider",N.provider),N.startDate&&e.append("startDate",N.startDate),N.endDate&&e.append("endDate",N.endDate);let a=await fetch(`/api/usage/request-details?${e}`),n=await a.json();t(n.details||[]),l(e=>({...e,...n.pagination}))}catch(e){console.error("Failed to fetch request details:",e)}finally{m(!1)}},[s.page,s.pageSize,N]);return(0,n.useEffect)(()=>{y()},[y]),(0,n.useEffect)(()=>{w()},[w]),(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-6",children:[(0,a.jsx)(P,{}),(0,a.jsx)(i.default,{padding:"md",children:(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-2",children:[(0,a.jsx)("label",{htmlFor:"provider-filter",className:"text-sm font-medium text-text-main",children:"Provider"}),(0,a.jsxs)("select",{id:"provider-filter",value:N.provider,onChange:e=>k({...N,provider:e.target.value}),className:(0,o.cn)("h-9 px-3 rounded-lg border border-black/10 dark:border-white/10 bg-surface","text-sm text-text-main focus:outline-none focus:ring-2 focus:ring-primary/20","w-full min-w-0 cursor-pointer"),style:{colorScheme:"auto"},children:[(0,a.jsx)("option",{value:"",children:"All Providers"}),f.map(e=>(0,a.jsx)("option",{value:e.id,children:e.name},e.id))]})]}),(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-2",children:[(0,a.jsx)("label",{htmlFor:"start-date-filter",className:"text-sm font-medium text-text-main",children:"Start Date"}),(0,a.jsx)("input",{id:"start-date-filter",type:"datetime-local",value:N.startDate,onChange:e=>k({...N,startDate:e.target.value}),className:(0,o.cn)("h-9 px-3 rounded-lg border border-black/10 dark:border-white/10 bg-surface","w-full min-w-0 text-sm text-text-main focus:outline-none focus:ring-2 focus:ring-primary/20")})]}),(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-2",children:[(0,a.jsx)("label",{htmlFor:"end-date-filter",className:"text-sm font-medium text-text-main",children:"End Date"}),(0,a.jsx)("input",{id:"end-date-filter",type:"datetime-local",value:N.endDate,onChange:e=>k({...N,endDate:e.target.value}),className:(0,o.cn)("h-9 px-3 rounded-lg border border-black/10 dark:border-white/10 bg-surface","w-full min-w-0 text-sm text-text-main focus:outline-none focus:ring-2 focus:ring-primary/20")})]}),(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-2 sm:col-span-2 lg:col-span-1",children:[(0,a.jsx)("span",{className:"hidden text-sm font-medium text-text-main opacity-0 lg:block","aria-hidden":"true",children:"Clear"}),(0,a.jsx)(d.default,{variant:"ghost",onClick:()=>{k({provider:"",startDate:"",endDate:""})},disabled:!N.provider&&!N.startDate&&!N.endDate,className:"w-full",children:"Clear Filters"})]})]})}),(0,a.jsxs)(i.default,{padding:"none",children:[(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full min-w-[880px]",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:"border-b border-black/5 dark:border-white/5",children:[(0,a.jsx)("th",{className:"text-left p-4 text-sm font-semibold text-text-main",children:"Timestamp"}),(0,a.jsx)("th",{className:"text-left p-4 text-sm font-semibold text-text-main",children:"Model"}),(0,a.jsx)("th",{className:"text-left p-4 text-sm font-semibold text-text-main",children:"Provider"}),(0,a.jsx)("th",{className:"text-right p-4 text-sm font-semibold text-text-main",children:"Input Tokens"}),(0,a.jsx)("th",{className:"text-right p-4 text-sm font-semibold text-text-main",children:"Cached"}),(0,a.jsx)("th",{className:"text-right p-4 text-sm font-semibold text-text-main",children:"Cache Creation"}),(0,a.jsx)("th",{className:"text-right p-4 text-sm font-semibold text-text-main",children:"Output Tokens"}),(0,a.jsx)("th",{className:"text-left p-4 text-sm font-semibold text-text-main",children:"Latency"}),(0,a.jsx)("th",{className:"text-center p-4 text-sm font-semibold text-text-main",children:"Action"})]})}),(0,a.jsx)("tbody",{children:r?(0,a.jsx)("tr",{children:(0,a.jsx)("td",{colSpan:"7",className:"p-8 text-center text-text-muted",children:(0,a.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-[20px]",children:"progress_activity"}),"Loading..."]})})}):0===e.length?(0,a.jsx)("tr",{children:(0,a.jsx)("td",{colSpan:"7",className:"p-8 text-center text-text-muted",children:"No request details found"})}):e.map((e,t)=>(0,a.jsxs)("tr",{className:"border-b border-black/5 dark:border-white/5 last:border-b-0 hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors",children:[(0,a.jsx)("td",{className:"whitespace-nowrap p-4 text-sm text-text-main",children:new Date(e.timestamp).toLocaleString()}),(0,a.jsx)("td",{className:"max-w-[260px] truncate p-4 font-mono text-sm text-text-main",children:e.model}),(0,a.jsx)("td",{className:"max-w-[180px] truncate p-4 text-sm text-text-main",children:(0,a.jsx)("span",{className:"font-medium",children:I(e.provider,j)})}),(0,a.jsx)("td",{className:"p-4 text-sm text-text-main text-right font-mono",children:U(e.tokens).toLocaleString()}),(0,a.jsx)("td",{className:"p-4 text-sm text-text-main text-right font-mono",children:H(e.tokens)>0?H(e.tokens).toLocaleString():"—"}),(0,a.jsx)("td",{className:"p-4 text-sm text-text-main text-right font-mono",children:A(e.tokens)>0?A(e.tokens).toLocaleString():"—"}),(0,a.jsx)("td",{className:"p-4 text-sm text-text-main text-right font-mono",children:e.tokens?.completion_tokens?.toLocaleString()||0}),(0,a.jsx)("td",{className:"p-4 text-sm text-text-muted",children:(0,a.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,a.jsxs)("div",{children:["TTFT: ",(0,a.jsxs)("span",{className:"font-mono",children:[e.latency?.ttft||0,"ms"]})]}),(0,a.jsxs)("div",{children:["Total: ",(0,a.jsxs)("span",{className:"font-mono",children:[e.latency?.total||0,"ms"]})]})]})}),(0,a.jsx)("td",{className:"p-4 text-center",children:(0,a.jsx)(d.default,{variant:"outline",size:"sm",onClick:()=>{h(e),g(!0)},children:"Detail"})})]},`${e.id}-${t}`))})]})}),!r&&e.length>0&&(0,a.jsx)("div",{className:"border-t border-black/5 dark:border-white/5",children:(0,a.jsx)(x,{currentPage:s.page,pageSize:s.pageSize,totalItems:s.totalItems,onPageChange:e=>{l(t=>({...t,page:e}))},onPageSizeChange:e=>{l(t=>({...t,pageSize:e,page:1}))}})})]}),(0,a.jsx)(c,{isOpen:p,onClose:()=>g(!1),title:"Request Details",width:"lg",children:u&&(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"grid min-w-0 grid-cols-1 gap-4 text-sm sm:grid-cols-2",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted",children:"ID:"})," ",(0,a.jsx)("span",{className:"break-all font-mono text-text-main",children:u.id})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted",children:"Timestamp:"})," ",(0,a.jsx)("span",{className:"text-text-main",children:new Date(u.timestamp).toLocaleString()})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted",children:"Provider:"})," ",(0,a.jsx)("span",{className:"text-text-main font-medium",children:I(u.provider,j)})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted",children:"Model:"})," ",(0,a.jsx)("span",{className:"text-text-main font-mono",children:u.model})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted",children:"Status:"})," ",(0,a.jsx)("span",{className:(0,o.cn)("font-medium","success"===u.status?"text-green-600":"text-red-600"),children:u.status})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted",children:"Latency:"})," ",(0,a.jsxs)("span",{className:"text-text-main font-mono",children:["TTFT ",u.latency?.ttft||0,"ms / Total ",u.latency?.total||0,"ms"]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted",children:"Input Tokens:"})," ",(0,a.jsx)("span",{className:"text-text-main font-mono",children:U(u.tokens).toLocaleString()})]}),H(u.tokens)>0&&(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted",children:"Cached Tokens:"})," ",(0,a.jsx)("span",{className:"text-text-main font-mono",children:H(u.tokens).toLocaleString()})]}),A(u.tokens)>0&&(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted",children:"Cache Creation:"})," ",(0,a.jsx)("span",{className:"text-text-main font-mono",children:A(u.tokens).toLocaleString()})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted",children:"Output Tokens:"})," ",(0,a.jsx)("span",{className:"text-text-main font-mono",children:u.tokens?.completion_tokens?.toLocaleString()||0})]})]}),u.pxpipe&&(0,a.jsxs)("div",{className:"rounded-lg border border-black/5 dark:border-white/5 p-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:"image"}),(0,a.jsx)("span",{className:"font-semibold text-sm text-text-main",children:"PXPIPE"}),(0,a.jsx)("span",{className:(0,o.cn)("text-xs px-2 py-0.5 rounded",u.pxpipe.applied?"bg-green-500/15 text-green-600":"bg-amber-500/15 text-amber-600"),children:u.pxpipe.applied?"Activated":"Skipped"})]}),u.pxpipe.applied?(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-2 text-sm sm:grid-cols-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted block text-xs",children:"Original (est.)"}),(0,a.jsxs)("span",{className:"font-mono",children:[(u.pxpipe.tokensBeforeEst||0).toLocaleString()," tokens"]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted block text-xs",children:"Compressed (est.)"}),(0,a.jsxs)("span",{className:"font-mono",children:[(u.pxpipe.tokensAfterEst||0).toLocaleString()," tokens"]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted block text-xs",children:"Saved"}),(0,a.jsxs)("span",{className:"font-mono text-green-600",children:[u.pxpipe.savedPct||0,"%"]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-muted block text-xs",children:"Images"}),(0,a.jsxs)("span",{className:"font-mono",children:[u.pxpipe.imageCount||0," (",u.pxpipe.durationMs||0,"ms)"]})]})]}):(0,a.jsxs)("p",{className:"text-sm text-text-muted",children:["Reason: ",(0,a.jsx)("span",{className:"font-mono",children:u.pxpipe.reason}),u.pxpipe.detail?` — ${u.pxpipe.detail}`:""]})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(K,{title:"1. Client Request (Input)",defaultOpen:!0,icon:"input",children:(0,a.jsx)("pre",{className:"max-h-[300px] max-w-full overflow-auto rounded-lg border border-black/5 bg-black/5 p-3 font-mono text-xs text-text-main dark:border-white/5 dark:bg-white/5 sm:p-4",children:JSON.stringify(u.request,null,2)})}),u.providerRequest&&(0,a.jsx)(K,{title:"2. Provider Request (Translated)",icon:"translate",children:(0,a.jsx)("pre",{className:"max-h-[300px] max-w-full overflow-auto rounded-lg border border-black/5 bg-black/5 p-3 font-mono text-xs text-text-main dark:border-white/5 dark:bg-white/5 sm:p-4",children:JSON.stringify(u.providerRequest,null,2)})}),u.providerResponse&&(0,a.jsx)(K,{title:"3. Provider Response (Raw)",icon:"data_object",children:(0,a.jsx)("pre",{className:"max-h-[300px] max-w-full overflow-auto rounded-lg border border-black/5 bg-black/5 p-3 font-mono text-xs text-text-main dark:border-white/5 dark:bg-white/5 sm:p-4",children:"object"==typeof u.providerResponse?JSON.stringify(u.providerResponse,null,2):u.providerResponse})}),(0,a.jsxs)(K,{title:"4. Client Response (Final)",defaultOpen:!0,icon:"output",children:[u.response?.thinking&&(0,a.jsxs)("div",{className:"mb-4",children:[(0,a.jsxs)("h4",{className:"font-semibold text-text-main mb-2 flex items-center gap-2 text-xs uppercase tracking-wide opacity-70",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"psychology"}),"Thinking Process"]}),(0,a.jsx)("pre",{className:"max-h-[200px] max-w-full overflow-auto rounded-lg border border-amber-200 bg-amber-50 p-3 font-mono text-xs text-amber-900 dark:border-amber-800 dark:bg-amber-950/30 dark:text-amber-100 sm:p-4",children:u.response.thinking})]}),(0,a.jsx)("h4",{className:"font-semibold text-text-main mb-2 text-xs uppercase tracking-wide opacity-70",children:"Content"}),(0,a.jsx)("pre",{className:"max-h-[300px] max-w-full overflow-auto rounded-lg border border-black/5 bg-black/5 p-3 font-mono text-xs text-text-main dark:border-white/5 dark:bg-white/5 sm:p-4",children:u.response?.content||"[No content]"})]})]})]})})]})}let Q=[{value:"today",label:"Today"},{value:"24h",label:"24h"},{value:"7d",label:"7D"},{value:"30d",label:"30D"},{value:"60d",label:"60D"}];function J(){return(0,a.jsx)(n.Suspense,{fallback:(0,a.jsx)(r.Qv,{}),children:(0,a.jsx)(B,{})})}function B(){let e=(0,l.useSearchParams)(),t=(0,l.useRouter)(),[s,i]=(0,n.useState)("today"),d=e.get("tab"),o=d&&["overview","logs","details"].includes(d)?d:"overview";return(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsx)(r.Iz,{options:[{value:"overview",label:"Overview"},{value:"details",label:"Details"}],value:o,onChange:s=>{if(s===o)return;let a=new URLSearchParams(e);a.set("tab",s),t.push(`/dashboard/usage?${a.toString()}`,{scroll:!1})},className:"w-full sm:w-auto"}),"overview"===o&&(0,a.jsx)(r.Iz,{options:Q,value:s,onChange:i,size:"sm",className:"w-full sm:w-auto"})]}),"overview"===o&&(0,a.jsx)(n.Suspense,{fallback:(0,a.jsx)(r.Qv,{}),children:(0,a.jsx)(r.jK,{period:s,setPeriod:i,hidePeriodSelector:!0})}),"logs"===o&&(0,a.jsx)(r.gM,{}),"details"===o&&(0,a.jsx)(W,{})]})}}},e=>{e.O(0,[3170,1728,1321,5497,8441,3794,7358],()=>e(e.s=62628)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[39,174,204,335,342,371,383,387,501,516,543,552,591,639,649,675,747,748,907,931,948,992,997,999,1020,1077,1088,1091,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1672,1674,1697,1704,1860,1898,1907,1910,1946,1949,2121,2185,2198,2284,2296,2366,2536,2772,2785,2797,2802,2845,2919,2922,3025,3038,3079,3397,3472,3486,3549,3562,3568,3648,3739,3883,3888,3997,4010,4061,4093,4245,4286,4310,4422,4444,4527,4612,4648,4656,4664,4666,4674,4761,4765,4896,4993,5018,5107,5156,5177,5211,5226,5466,5637,5685,5745,5826,5922,6091,6102,6107,6121,6268,6319,6463,6478,6479,6529,6580,6594,6740,6743,6819,6919,6988,6996,7131,7158,7241,7311,7329,7429,7445,7473,7508,7520,7758,7824,7851,8026,8141,8167,8207,8246,8264,8453,8489,8573,8648,8736,8791,8814,8832,8835,8870,8879,8948,8974,8975,9027,9036,9056,9069,9088,9120,9141,9199,9321,9427,9461,9606,9678,9709],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);