n9router 0.4.34 → 0.4.35

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 (293) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +12 -12
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  17. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/_global-error.html +1 -1
  32. package/app/.next/server/app/_global-error.rsc +1 -1
  33. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  34. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  35. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  36. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  37. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  38. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  39. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/_not-found.html +1 -1
  41. package/app/.next/server/app/_not-found.rsc +4 -4
  42. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  43. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  44. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  45. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  46. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  47. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  48. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  49. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  50. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  51. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  52. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  53. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  54. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  55. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  56. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  57. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  58. package/app/.next/server/app/api/models/route.js +1 -1
  59. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  60. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  61. package/app/.next/server/app/api/providers/route.js +1 -1
  62. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  63. package/app/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
  64. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  65. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
  66. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  67. package/app/.next/server/app/api/version/route.js +1 -1
  68. package/app/.next/server/app/api/version/update/route.js +1 -1
  69. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/callback.html +1 -1
  71. package/app/.next/server/app/callback.rsc +4 -4
  72. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  73. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  74. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  75. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  76. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  77. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  78. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  79. package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
  80. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  81. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  82. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  83. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  84. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  85. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  86. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  87. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  88. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  89. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  90. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  91. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  92. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  93. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  94. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  95. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  96. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  97. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  98. package/app/.next/server/app/dashboard/combos.html +1 -1
  99. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  100. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  101. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  102. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  103. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  104. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  105. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  106. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  107. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  108. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  109. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  110. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  111. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  112. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  113. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  114. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  115. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  116. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  117. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  118. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  119. package/app/.next/server/app/dashboard/media-providers/web.rsc +6 -6
  120. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  121. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  122. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  123. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  124. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  125. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  126. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  127. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  128. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  129. package/app/.next/server/app/dashboard/mitm.html +1 -1
  130. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  131. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  132. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  133. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  134. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  135. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  136. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  137. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  138. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  139. package/app/.next/server/app/dashboard/profile.html +1 -1
  140. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  141. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  142. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  143. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  144. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  145. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  146. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  147. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  148. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  149. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  150. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  151. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  152. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  153. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  154. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  155. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  156. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  157. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  158. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  159. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  160. package/app/.next/server/app/dashboard/providers.html +1 -1
  161. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  162. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  163. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  164. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  165. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  166. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  167. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  168. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  169. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  170. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  171. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  172. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  173. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  174. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  175. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  176. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  177. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  178. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  179. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  180. package/app/.next/server/app/dashboard/quota.html +2 -2
  181. package/app/.next/server/app/dashboard/quota.rsc +7 -7
  182. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  183. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  184. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  185. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  186. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  187. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  188. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  189. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  190. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  192. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  193. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  194. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  195. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  196. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  197. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  198. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  199. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  200. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  201. package/app/.next/server/app/dashboard/skills.html +1 -1
  202. package/app/.next/server/app/dashboard/skills.rsc +6 -6
  203. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  204. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  205. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  206. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  207. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  208. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  209. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  210. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  211. package/app/.next/server/app/dashboard/translator.html +1 -1
  212. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  213. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  214. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  215. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  216. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  217. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  218. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  219. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  220. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  221. package/app/.next/server/app/dashboard/usage.html +1 -1
  222. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  223. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  224. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  225. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  226. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  227. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  228. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  229. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  230. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  231. package/app/.next/server/app/dashboard.html +1 -1
  232. package/app/.next/server/app/dashboard.rsc +6 -6
  233. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  234. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  235. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  236. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  237. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  238. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  239. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  240. package/app/.next/server/app/index.html +1 -1
  241. package/app/.next/server/app/index.rsc +4 -4
  242. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  243. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  244. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  245. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  246. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  247. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  248. package/app/.next/server/app/landing.html +1 -1
  249. package/app/.next/server/app/landing.rsc +4 -4
  250. package/app/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  251. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  252. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  253. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  254. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  255. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  256. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  257. package/app/.next/server/app/login.html +1 -1
  258. package/app/.next/server/app/login.rsc +5 -5
  259. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  260. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  261. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  262. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  263. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  264. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  265. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  266. package/app/.next/server/app-paths-manifest.json +12 -12
  267. package/app/.next/server/chunks/{2406.js → 1985.js} +2 -2
  268. package/app/.next/server/chunks/3110.js +1 -1
  269. package/app/.next/server/chunks/3646.js +1 -1
  270. package/app/.next/server/chunks/412.js +1 -1
  271. package/app/.next/server/chunks/7595.js +1 -1
  272. package/app/.next/server/chunks/9718.js +1 -1
  273. package/app/.next/server/middleware-build-manifest.js +1 -1
  274. package/app/.next/server/pages/404.html +1 -1
  275. package/app/.next/server/pages/500.html +1 -1
  276. package/app/.next/server/server-reference-manifest.js +1 -1
  277. package/app/.next/server/server-reference-manifest.json +1 -1
  278. package/app/.next/static/chunks/{1321-f018eeb978c98075.js → 1321-bd1e73c270cd20da.js} +1 -1
  279. package/app/.next/static/chunks/5497-c5298509cc559792.js +7 -0
  280. package/app/.next/static/chunks/{9803-860e2a1e4e3ef09f.js → 7844-acf8217cdcb39d9a.js} +5 -5
  281. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-40604134b500e7ee.js +1 -0
  282. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-08e3714a029236f2.js +1 -0
  283. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-6420e67a5bd79512.js +1 -0
  284. package/app/.next/static/css/{e0054c8830b88cae.css → 5903295427476216.css} +1 -1
  285. package/app/open-sse/services/usage.js +182 -84
  286. package/app/package.json +1 -1
  287. package/package.json +1 -1
  288. package/app/.next/static/chunks/5497-829884464a5b2ac5.js +0 -7
  289. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-2997d55628e09b76.js +0 -1
  290. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-7c6dd9e7e1c4bb8a.js +0 -1
  291. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-c6cab27ae3842aeb.js +0 -1
  292. /package/app/.next/static/{nKBxD9e1uLpS2wHVBNCBM → DMu6oAfCAJu7LOUJpB89l}/_buildManifest.js +0 -0
  293. /package/app/.next/static/{nKBxD9e1uLpS2wHVBNCBM → DMu6oAfCAJu7LOUJpB89l}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2326],{70044:(e,t,s)=>{Promise.resolve().then(s.bind(s,75228))},75228:(e,t,s)=>{"use strict";s.d(t,{default:()=>u});var a=s(95155),l=s(12115),i=s(35497),o=s(3534),r=s(28777),n=s(74399);let c="https://9router.com",d={claude:"/api/cli-tools/claude-settings",codex:"/api/cli-tools/codex-settings",opencode:"/api/cli-tools/opencode-settings",droid:"/api/cli-tools/droid-settings",openclaw:"/api/cli-tools/openclaw-settings",hermes:"/api/cli-tools/hermes-settings",cowork:"/api/cli-tools/cowork-settings"};function u({machineId:e}){let t,s,p,[x,h]=(0,l.useState)([]),[v,m]=(0,l.useState)(!0),[g,f]=(0,l.useState)(null),[b,j]=(0,l.useState)({}),[w,E]=(0,l.useState)(!1),[y,S]=(0,l.useState)(!1),[P,k]=(0,l.useState)(""),[N,A]=(0,l.useState)(!1),[C,M]=(0,l.useState)(""),[O,U]=(0,l.useState)([]),[_,I]=(0,l.useState)({});(0,l.useEffect)(()=>{R(),Q(),$(),T()},[]);let T=async()=>{try{let e=await Promise.all(Object.entries(d).map(async([e,t])=>{try{let s=await fetch(t),a=await s.json();return[e,a]}catch{return[e,null]}}));I(Object.fromEntries(e))}catch(e){console.log("Error fetching tool statuses:",e)}},Q=async()=>{try{let[e,t]=await Promise.all([fetch("/api/settings"),fetch("/api/tunnel/status")]);if(e.ok){let t=await e.json();E(t.cloudEnabled||!1)}if(t.ok){let e=await t.json();S(!!(e.tunnel?.enabled||e.tunnel?.settingsEnabled)),k(e.tunnel?.publicUrl||""),A(!!(e.tailscale?.enabled||e.tailscale?.settingsEnabled)),M(e.tailscale?.tunnelUrl||"")}}catch(e){console.log("Error loading settings:",e)}},$=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();U(t.keys||[])}}catch(e){console.log("Error fetching API keys:",e)}},R=async()=>{try{let e=await fetch("/api/providers"),t=await e.json();e.ok&&h(t.connections||[])}catch(e){console.log("Error fetching connections:",e)}finally{m(!1)}},Z=()=>x.filter(e=>!1!==e.isActive),q=(0,l.useCallback)((e,t,s)=>{j(a=>a[e]?.[t]===s?a:{...a,[e]:{...a[e],[t]:s}})},[]);if(v)return(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)(i.Qv,{}),(0,a.jsx)(i.Qv,{}),(0,a.jsx)(i.Qv,{})]});let F=(t=Z(),s=[],p=new Set,t.forEach(e=>{let t=r.Xg[e.provider]||e.provider;(0,r.KC)(e.provider).forEach(a=>{let l=`${t}/${a.id}`;p.has(l)||(p.add(l),s.push({value:l,label:`${t}/${a.id}`,provider:e.provider,alias:t,connectionName:e.name,modelId:a.id}))})}),s).length>0,K=Object.entries(o.dM),L=Object.entries(o.wn);return(0,a.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-6 px-1 sm:px-0",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)("h1",{className:"text-xl font-semibold text-text-main sm:text-2xl",children:"CLI Tools"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Configure local coding tools to use your 9Router providers."})]}),(0,a.jsx)("div",{className:"grid gap-3 sm:gap-4",children:K.map(([e,t])=>((e,t)=>{let s={tool:t,isExpanded:g===e,onToggle:()=>f(g===e?null:e),baseUrl:y&&P?P:w&&c?c:window.location.origin,apiKeys:O,tunnelEnabled:y,tunnelPublicUrl:P,tailscaleEnabled:N,tailscaleUrl:C};switch(e){case"claude":return(0,a.jsx)(n.Tk,{...s,activeProviders:Z(),modelMappings:b[e]||{},onModelMappingChange:(t,s)=>q(e,t,s),hasActiveProviders:F,cloudEnabled:w,initialStatus:_.claude},e);case"codex":return(0,a.jsx)(n.Ah,{...s,activeProviders:Z(),cloudEnabled:w,initialStatus:_.codex},e);case"opencode":return(0,a.jsx)(n.qO,{...s,activeProviders:Z(),cloudEnabled:w,initialStatus:_.opencode},e);case"cowork":return(0,a.jsx)(n.Q6,{...s,activeProviders:Z(),hasActiveProviders:F,cloudEnabled:w,cloudUrl:c,tunnelEnabled:y,tunnelPublicUrl:P,tailscaleEnabled:N,tailscaleUrl:C,initialStatus:_.cowork},e);case"droid":return(0,a.jsx)(n.ZM,{...s,activeProviders:Z(),hasActiveProviders:F,cloudEnabled:w,initialStatus:_.droid},e);case"openclaw":return(0,a.jsx)(n.yZ,{...s,activeProviders:Z(),hasActiveProviders:F,cloudEnabled:w,initialStatus:_.openclaw},e);case"hermes":return(0,a.jsx)(n.RF,{...s,activeProviders:Z(),hasActiveProviders:F,cloudEnabled:w,initialStatus:_.hermes},e);default:return(0,a.jsx)(n.a7,{toolId:e,...s,activeProviders:Z(),cloudEnabled:w,tunnelEnabled:y},e)}})(e,t))}),(0,a.jsxs)("div",{className:"grid gap-3 sm:gap-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary",children:"security"}),(0,a.jsx)("h2",{className:"text-sm font-semibold text-text-main",children:"MITM Tools"})]}),L.map(([e,t])=>(0,a.jsx)(n.gY,{tool:t},e))]})]})}}},e=>{e.O(0,[2574,3862,128,5772,1321,5497,7844,8441,3794,7358],()=>e(e.s=70044)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6607],{23879:(e,t,s)=>{"use strict";s.d(t,{default:()=>r});var a=s(95155),n=s(12115),i=s(3534),l=s(28777),o=s(52679),c=s(74399);function r(){let[e,t]=(0,n.useState)([]),[s,r]=(0,n.useState)([]),[d,u]=(0,n.useState)({}),[h,p]=(0,n.useState)(!1),[x,f]=(0,n.useState)(null),[m,w]=(0,n.useState)({running:!1,certExists:!1,dnsStatus:{},hasCachedPassword:!1}),[g,v]=(0,n.useState)(!1),S=async()=>{try{let e=await fetch("/api/providers");if(e.ok){let s=await e.json();t(s.connections||[])}}catch{}},k=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();r(t.keys||[])}}catch{}},j=async()=>{try{let e=await fetch("/api/models/alias");if(e.ok){let t=await e.json();u(t.aliases||{})}}catch{}},y=async()=>{try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();p(t.cloudEnabled||!1),v(!!t.tokenSwapEnabled)}}catch{}};(0,n.useEffect)(()=>{(async()=>{await Promise.all([S(),k(),j(),y()])})()},[]);let E=()=>e.filter(e=>!1!==e.isActive),b=Object.entries(i.wn);return(0,a.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-6 px-1 sm:px-0",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)("h1",{className:"text-xl font-semibold text-text-main sm:text-2xl",children:"MITM"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Route supported IDE traffic through 9Router with local DNS interception."})]}),(0,a.jsx)(c.tA,{apiKeys:s,cloudEnabled:h,onStatusChange:w}),(0,a.jsx)("div",{className:"grid gap-3 sm:gap-4",children:b.map(([t,i])=>(0,a.jsxs)(n.Fragment,{children:[(0,a.jsx)(c.kn,{tool:i,isExpanded:x===t,onToggle:()=>f(x===t?null:t),serverRunning:m.running,dnsActive:m.dnsStatus?.[t]||!1,hasCachedPassword:m.hasCachedPassword||!1,apiKeys:s,activeProviders:E(),hasActiveProviders:E().some(e=>(0,l.KC)(e.provider).length>0||(0,o.mq)(e.provider)||(0,o.gb)(e.provider)),modelAliases:d,cloudEnabled:h,tokenSwapActive:i.supportsTokenSwap&&g,onDnsChange:e=>w(t=>({...t,dnsStatus:e.dnsStatus??t.dnsStatus}))}),i.supportsTokenSwap&&(0,a.jsx)(c.xm,{tool:i,connections:e,serverRunning:m.running,dnsActive:m.dnsStatus?.[t]||!1,onToggle:e=>v(e),onRefreshConnections:S})]},t))})]})}},60817:(e,t,s)=>{Promise.resolve().then(s.bind(s,23879))}},e=>{e.O(0,[2574,3862,128,5772,1321,5497,7844,8441,3794,7358],()=>e(e.s=60817)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3826],{40869:(e,t,r)=>{"use strict";r.d(t,{default:()=>p});var a=r(95155),s=r(12115),l=r(57250),i=r(57294);function n({quotas:e=[],compact:t=!1}){if(!e||0===e.length)return null;let r=t?"py-1 px-1.5":"py-2 px-3",s=t?"text-[11px]":"text-sm",l=t?"text-[11px]":"text-sm",o=t?"text-[10px] leading-tight":"text-xs";return(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsx)("table",{className:"w-full table-fixed text-left",children:(0,a.jsx)("tbody",{children:e.map((e,n)=>{let c=void 0!==e.remainingPercentage?Math.round(e.remainingPercentage):(0,i.$4)(e.used,e.total),d=c>70?{text:"text-green-600 dark:text-green-400",bg:"bg-green-500",bgLight:"bg-green-500/10",emoji:"\uD83D\uDFE2"}:c>=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"},u=(0,i.mO)(e.resetAt),m=(0,i.sQ)(e.resetAt);return(0,a.jsxs)("tr",{className:"border-b border-black/5 dark:border-white/5 hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors",children:[(0,a.jsx)("td",{className:`${r} w-[30%]`,children:(0,a.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,a.jsx)("span",{className:"text-[10px] shrink-0",children:d.emoji}),(0,a.jsx)("span",{className:`${s} font-medium text-text-primary truncate`,children:e.name})]})}),(0,a.jsx)("td",{className:`${r} w-[45%]`,children:(0,a.jsxs)("div",{className:t?"space-y-1":"space-y-1.5",children:[(0,a.jsx)("div",{className:`${t?"h-1":"h-1.5"} rounded-full overflow-hidden border ${d.bgLight} ${0===c?"border-black/10 dark:border-white/10":"border-transparent"}`,children:(0,a.jsx)("div",{className:`h-full transition-all duration-300 ${d.bg}`,style:{width:`${Math.min(c,100)}%`}})}),(0,a.jsxs)("div",{className:`flex items-center justify-between ${t?"text-[10px]":"text-xs"}`,children:[(0,a.jsxs)("span",{className:"text-text-muted",children:[e.used.toLocaleString()," / ",e.total>0?e.total.toLocaleString():"∞"]}),(0,a.jsxs)("span",{className:`font-medium ${d.text}`,children:[c,"%"]})]})]})}),(0,a.jsx)("td",{className:`${r} w-[25%]`,children:"-"!==u||m?t?(0,a.jsx)("div",{className:`${l} text-text-primary font-medium truncate`,title:m||"",children:"-"!==u?`in ${u}`:m}):(0,a.jsxs)("div",{className:"space-y-0.5",children:["-"!==u&&(0,a.jsxs)("div",{className:`${l} text-text-primary font-medium`,children:["in ",u]}),m&&(0,a.jsx)("div",{className:`${o} text-text-muted`,children:m})]}):(0,a.jsx)("div",{className:`${l} text-text-muted italic`,children:"N/A"})})]},n)})})})})}var o=r(98542),c=r(84588),d=r(92542),u=r(35497),m=r(52679),x=r(11017);function p(){let[e,t]=(0,s.useState)([]),[r,p]=(0,s.useState)({}),[h,b]=(0,s.useState)({}),[f,g]=(0,s.useState)({}),[v,y]=(0,s.useState)(!0),[j,w]=(0,s.useState)(null),[N,k]=(0,s.useState)(!1),[$,C]=(0,s.useState)(60),[E,A]=(0,s.useState)(!0),[S,q]=(0,s.useState)(null),[P,D]=(0,s.useState)(null),[L,T]=(0,s.useState)(!1),[O,_]=(0,s.useState)(null),[z,I]=(0,s.useState)([]),[M,F]=(0,s.useState)("all"),[U,R]=(0,s.useState)(!1),[K,J]=(0,s.useState)(!1),Q=(0,s.useRef)(null),W=(0,s.useRef)(null),G=(0,s.useCallback)(async()=>{try{let e=await fetch("/api/providers/client");if(!e.ok)throw Error("Failed to fetch connections");let r=(await e.json()).connections||[];return t(r),r}catch(e){return console.error("Error fetching connections:",e),t([]),[]}},[]),H=(0,s.useCallback)(async(e,t)=>{b(t=>({...t,[e]:!0})),g(t=>({...t,[e]:null}));try{console.log(`[ProviderLimits] Fetching quota for ${t} (${e})`);let r=await fetch(`/api/usage/${e}`);if(!r.ok){let a=(await r.json().catch(()=>({}))).error||r.statusText;if(404===r.status)return void console.warn(`[ProviderLimits] Connection not found for ${t}, skipping`);if(401===r.status){console.warn(`[ProviderLimits] Auth error for ${t}:`,a),p(t=>({...t,[e]:{quotas:[],message:a}}));return}throw Error(`HTTP ${r.status}: ${a}`)}let a=await r.json();console.log(`[ProviderLimits] Got quota for ${t}:`,a);let s=(0,i.W_)(t,a);p(t=>({...t,[e]:{quotas:s,plan:a.plan||null,message:a.message||null,raw:a}}))}catch(r){console.error(`[ProviderLimits] Error fetching quota for ${t} (${e}):`,r),g(t=>({...t,[e]:r.message||"Failed to fetch quota"}))}finally{b(t=>({...t,[e]:!1}))}},[]),Y=(0,s.useCallback)(async(e,t)=>{await H(e,t),w(new Date)},[H]),B=(0,s.useCallback)(async e=>{if(confirm("Delete this connection?")){q(e);try{(await fetch(`/api/providers/${e}`,{method:"DELETE"})).ok&&(t(t=>t.filter(t=>t.id!==e)),p(t=>{let r={...t};return delete r[e],r}),b(t=>{let r={...t};return delete r[e],r}),g(t=>{let r={...t};return delete r[e],r}))}catch(e){console.error("Error deleting connection:",e)}finally{q(null)}}},[]),V=(0,s.useCallback)(async(e,r)=>{D(e);try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:r})})).ok&&t(t=>t.map(t=>t.id===e?{...t,isActive:r}:t))}catch(e){console.error("Error updating connection status:",e)}finally{D(null)}},[]),X=(0,s.useCallback)(async e=>{if(!O?.id)return;let t=O.id,r=O.provider;try{(await fetch(`/api/providers/${t}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(await G(),T(!1),_(null),m.wb.includes(r)&&await H(t,r))}catch(e){console.error("Error saving connection:",e)}},[O,G,H]);(0,s.useEffect)(()=>{let e=!1;return fetch("/api/proxy-pools?isActive=true",{cache:"no-store"}).then(e=>e.json()).then(t=>{!e&&t?.proxyPools&&I(t.proxyPools)}).catch(()=>{}),()=>{e=!0}},[]);let Z=(0,s.useCallback)(async()=>{if(!N){k(!0),C(60);try{let e=(await G()).filter(e=>m.wb.includes(e.provider)&&"oauth"===e.authType);await Promise.all(e.map(e=>H(e.id,e.provider))),w(new Date)}catch(e){console.error("Error refreshing all providers:",e)}finally{k(!1)}}},[N,G,H]);(0,s.useEffect)(()=>{(async()=>{A(!0);let e=await G();A(!1);let t=e.filter(e=>m.wb.includes(e.provider)&&"oauth"===e.authType),r={};t.forEach(e=>{r[e.id]=!0}),b(r),await Promise.all(t.map(e=>H(e.id,e.provider))),w(new Date)})()},[]),(0,s.useEffect)(()=>{if(!v){Q.current&&(clearInterval(Q.current),Q.current=null),W.current&&(clearInterval(W.current),W.current=null);return}return Q.current=setInterval(()=>{Z()},6e4),W.current=setInterval(()=>{C(e=>e<=1?60:e-1)},1e3),()=>{Q.current&&clearInterval(Q.current),W.current&&clearInterval(W.current)}},[v,Z]),(0,s.useEffect)(()=>{let e=()=>{document.hidden?(Q.current&&(clearInterval(Q.current),Q.current=null),W.current&&(clearInterval(W.current),W.current=null)):v&&(Q.current=setInterval(Z,6e4),W.current=setInterval(()=>{C(e=>e<=1?60:e-1)},1e3))};return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[v,Z]);let ee=(0,s.useCallback)(()=>{if(!j)return"Never";let e=Math.floor((new Date-j)/6e4),t=Math.floor(e/60),r=Math.floor(t/24);return r>0?`${r}d ago`:t>0?`${t}h ago`:e>0?`${e}m ago`:"Just now"},[j]),et=e.filter(e=>m.wb.includes(e.provider)&&"oauth"===e.authType),er=et.filter(e=>"all"===M||e.provider===M),ea=e=>{let t=(r[e.id]?.quotas||[]).map(e=>e.resetAt?new Date(e.resetAt).getTime():1/0).filter(e=>Number.isFinite(e));return t.length>0?Math.min(...t):1/0},es=[...er].sort((e,t)=>{if(U){let r=ea(e)-ea(t);if(0!==r)return r}let r=m.wb.indexOf(e.provider),a=m.wb.indexOf(t.provider);return r!==a?r-a:e.provider.localeCompare(t.provider)}),el=Array.from(new Set(et.map(e=>e.provider))).sort(),ei="all"===M?"All providers":M;return(es.length,Object.values(r).filter(e=>e?.quotas?.length>0).length,Object.values(r).reduce((e,t)=>t?.quotas?e+ +!!t.quotas.some(e=>30>(0,i.$4)(e.used,e.total)&&e.total>0):e,0),E||0!==es.length)?(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-1 sm:flex-row sm:items-center sm:gap-3",children:[(0,a.jsx)("h2",{className:"text-xl font-semibold text-text-primary",children:"Provider Limits"}),(0,a.jsxs)("span",{className:"text-sm text-text-muted",children:["Last updated: ",ee()]})]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>J(e=>!e),className:"flex h-10 min-w-[116px] items-center justify-between gap-2 rounded-xl border border-black/10 bg-black/[0.02] px-3 text-sm text-text-primary transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10 sm:min-w-[180px]","aria-haspopup":"menu","aria-expanded":K,title:"Filter quota providers",children:[(0,a.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:["all"===M?(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px] text-text-muted",children:"apps"}):(0,a.jsx)(l.A,{src:`/providers/${M}.png`,alt:M,size:22,className:"size-[22px] rounded-md object-contain",fallbackText:M.slice(0,2).toUpperCase()}),(0,a.jsx)("span",{className:"truncate capitalize hidden sm:inline",children:ei})]}),(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] text-text-muted",children:"expand_more"})]}),K&&(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:()=>J(!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:()=>{F("all"),J(!1)},className:`flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left text-sm transition-colors ${"all"===M?"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"===M&&(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:el.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>{F(e),J(!1)},className:`flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left text-sm transition-colors ${M===e?"bg-primary/10 text-primary":"text-text-primary hover:bg-black/5 dark:hover:bg-white/10"}`,children:[(0,a.jsx)(l.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}),M===e&&(0,a.jsx)("span",{className:"material-symbols-outlined ml-auto text-[20px]",children:"check"})]},e))})]})]})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>R(e=>!e),className:`flex shrink-0 items-center gap-1.5 rounded-lg border px-3 py-2 text-sm transition-colors ${U?"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-[18px]",children:"hourglass_top"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:"Expiring first"})]}),(0,a.jsxs)("button",{onClick:()=>y(e=>!e),className:"flex shrink-0 items-center gap-2 rounded-lg border border-black/10 px-3 py-2 transition-colors hover:bg-black/5 dark:border-white/10 dark:hover:bg-white/5",title:v?"Disable auto-refresh":"Enable auto-refresh",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] ${v?"text-primary":"text-text-muted"}`,children:v?"toggle_on":"toggle_off"}),(0,a.jsx)("span",{className:"hidden text-sm text-text-primary sm:inline",children:"Auto-refresh"}),v&&(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:["(",$,"s)"]})]}),(0,a.jsx)(d.default,{variant:"secondary",size:"md",icon:"refresh",onClick:Z,disabled:N,loading:N,children:"Refresh All"})]})]}),(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:es.map(e=>{let t,s,i=r[e.id],d=h[e.id],m=f[e.id],p=!1===e.isActive,b=S===e.id||P===e.id,g="antigravity"===e.provider?(0,x._P)(i?.raw)||(0,x.fd)(e.accountType):null;return(0,a.jsxs)(c.default,{padding:"none",className:`min-w-0 ${p?"opacity-60":""}`,children:[(0,a.jsx)("div",{className:"px-4 py-3 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)(l.A,{src:`/providers/${e.provider}.png`,alt:e.provider,size:32,className:"object-contain",fallbackText:e.provider?.slice(0,2).toUpperCase()||"PR"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-text-primary capitalize truncate",children:e.provider}),"antigravity"===e.provider&&g&&(0,a.jsx)(u.Ex,{variant:"Ultra"===g?"warning":"Pro"===g?"primary":"Plus"===g?"success":"Free"===g?"info":"default",size:"sm",className:"text-[9px] px-1.5 py-0.5 shrink-0 font-bold uppercase",children:g})]}),(s="string"==typeof(t=e.email)&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)?e.email:e.name)?(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:s}):null,"kiro"===e.provider&&e.id&&(0,a.jsx)("p",{className:"text-[10px] text-text-muted/70 font-mono truncate",title:`Connection ID: ${e.id}`,children:e.id})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,a.jsx)("button",{type:"button",onClick:()=>Y(e.id,e.provider),disabled:d||b,className:"p-1.5 rounded-lg hover:bg-black/5 dark:hover:bg-white/5 transition-colors disabled:opacity-50",title:"Refresh quota",children:(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] text-text-muted ${d?"animate-spin":""}`,children:"refresh"})}),(0,a.jsx)("button",{type:"button",onClick:()=>{_(e),T(!0)},disabled:b,className:"p-1.5 rounded-lg hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary transition-colors disabled:opacity-50",title:"Edit connection",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,a.jsx)("button",{type:"button",onClick:()=>B(e.id),disabled:b,className:"p-1.5 rounded-lg hover:bg-red-500/10 text-red-500 transition-colors disabled:opacity-50",title:"Delete connection",children:(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] ${S===e.id?"animate-pulse":""}`,children:"delete"})}),(0,a.jsx)("div",{className:"inline-flex items-center pl-0.5",title:e.isActive??!0?"Disable connection":"Enable connection",children:(0,a.jsx)(o.default,{size:"sm",checked:e.isActive??!0,disabled:b,onChange:t=>V(e.id,t)})})]})]})}),(0,a.jsx)("div",{className:"px-3 py-3",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"})}):m?(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:m})]}):i?.message?(0,a.jsx)("div",{className:"text-center py-5",children:(0,a.jsx)("p",{className:"text-xs text-text-muted",children:i.message})}):(0,a.jsx)(n,{quotas:i?.quotas,compact:!0})})]},e.id)})}),(0,a.jsx)(u.wI,{isOpen:L,connection:O,proxyPools:z,onSave:X,onClose:()=>{T(!1),_(null)}})]}):(0,a.jsx)(c.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."})]})})}},57294:(e,t,r)=>{"use strict";r.d(t,{$4:()=>i,W_:()=>n,mO:()=>s,sQ:()=>l});var a=r(45564);function s(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,r=new Date,a=t-r;if(a<=0)return"-";let s=Math.ceil(a/6e4);if(s<60)return`${s}m`;let l=Math.floor(s/60),i=s%60;if(l<24)return`${l}h ${i}m`;let n=Math.floor(l/24);return`${n}d ${l%24}h ${i}m`}catch(e){return"-"}}function l(e){if(!e)return null;try{let t="string"==typeof e?new Date(e):e,r=new Date,a=new Date(r.getFullYear(),r.getMonth(),r.getDate()),s=new Date(a);s.setDate(s.getDate()+1);let l=new Date(s);l.setDate(l.getDate()+1);let i="";i=t>=a&&t<s?"Today":t>=s&&t<l?"Tomorrow":t.toLocaleDateString("en-US",{month:"short",day:"numeric"});let n=t.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return`${i}, ${n}`}catch{return null}}function i(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0}function n(e,t){if(!t||"object"!=typeof t)return[];let r=[];try{switch(e.toLowerCase()){case"github":default:t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"antigravity":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:t.displayName||e,modelKey:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codex":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,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"claude":t.message?r.push({name:"error",used:0,total:0,resetAt:null,message:t.message}):t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let s=(0,a.KC)(e);if(s.length>0){let e=new Map(s.map((e,t)=>[e.id,t]));r.sort((t,r)=>{let a=t.modelKey||t.name,s=r.modelKey||r.name;return(e.get(a)??999)-(e.get(s)??999)})}return r}},68818:(e,t,r)=>{Promise.resolve().then(r.bind(r,40869)),Promise.resolve().then(r.bind(r,25086))}},e=>{e.O(0,[2574,3862,128,1321,5497,8441,3794,7358],()=>e(e.s=68818)),_N_E=e.O()}]);