zevairouter 1.0.121 → 1.0.123

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 (1635) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  3. package/cli/app/.next-cli-build/app-path-routes-manifest.json +16 -16
  4. package/cli/app/.next-cli-build/build-manifest.json +6 -6
  5. package/cli/app/.next-cli-build/prerender-manifest.json +3 -3
  6. package/cli/app/.next-cli-build/react-loadable-manifest.json +2 -2
  7. package/cli/app/.next-cli-build/required-server-files.json +4 -4
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +2 -2
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +2 -2
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +3 -3
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +2 -2
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  59. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  60. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  61. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  63. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  64. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  66. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  67. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  68. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  69. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  70. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  72. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  73. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  74. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +4 -4
  75. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  76. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  77. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  78. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  79. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  80. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  81. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  82. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  83. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  84. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  85. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  86. package/cli/app/.next-cli-build/server/app/_global-error/page.js +3 -3
  87. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  88. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  89. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  90. package/cli/app/.next-cli-build/server/app/_global-error.rsc +7 -7
  91. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +7 -7
  92. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  93. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +3 -3
  94. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +3 -3
  95. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +3 -3
  96. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  98. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  99. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  100. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  101. package/cli/app/.next-cli-build/server/app/_not-found.rsc +11 -11
  102. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +11 -11
  103. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +4 -4
  104. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +6 -6
  105. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  106. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  107. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  108. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  109. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  110. package/cli/app/.next-cli-build/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/changelog/route_client-reference-manifest.js +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  133. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  136. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  142. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  145. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route_client-reference-manifest.js +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  154. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  157. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  160. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  163. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  166. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  169. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  172. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  175. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  178. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  181. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  184. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/combos/route_client-reference-manifest.js +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/context/[id]/route_client-reference-manifest.js +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/context/bulk/route_client-reference-manifest.js +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/context/route_client-reference-manifest.js +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route_client-reference-manifest.js +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route_client-reference-manifest.js +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/headroom/start/route_client-reference-manifest.js +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/headroom/status/route_client-reference-manifest.js +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/health/ready/route_client-reference-manifest.js +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/health/route_client-reference-manifest.js +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/init/route_client-reference-manifest.js +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route_client-reference-manifest.js +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/keys/route_client-reference-manifest.js +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/locale/route_client-reference-manifest.js +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +2 -2
  244. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  247. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/metrics/route.js +2 -2
  265. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/metrics/route_client-reference-manifest.js +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/models/custom/route_client-reference-manifest.js +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/models/disabled/route_client-reference-manifest.js +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/models/route_client-reference-manifest.js +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route_client-reference-manifest.js +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route_client-reference-manifest.js +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js.nft.json +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js.nft.json +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route_client-reference-manifest.js +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route.js +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route.js.nft.json +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route_client-reference-manifest.js +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route_client-reference-manifest.js +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route_client-reference-manifest.js +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route_client-reference-manifest.js +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route_client-reference-manifest.js +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route_client-reference-manifest.js +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  352. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route_client-reference-manifest.js +1 -1
  354. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  358. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  359. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  360. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  361. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  362. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  363. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  364. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  365. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route_client-reference-manifest.js +1 -1
  366. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  367. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  368. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route_client-reference-manifest.js +1 -1
  369. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  370. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  371. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route_client-reference-manifest.js +1 -1
  372. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
  373. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  374. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route_client-reference-manifest.js +1 -1
  375. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  376. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  377. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +1 -1
  378. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  379. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  380. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  381. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  382. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  383. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  384. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  385. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  386. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +1 -1
  387. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js +1 -1
  388. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  389. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  390. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  391. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  392. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  393. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js +1 -1
  394. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
  395. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  396. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js +1 -1
  397. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
  398. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route_client-reference-manifest.js +1 -1
  399. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
  400. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  401. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route_client-reference-manifest.js +1 -1
  402. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  403. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  404. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  405. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  406. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  407. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  408. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  409. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  410. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  411. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  412. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  413. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  414. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  415. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  416. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  417. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  418. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  419. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route_client-reference-manifest.js +1 -1
  420. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  421. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  422. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route_client-reference-manifest.js +1 -1
  423. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  424. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  425. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  426. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  427. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  428. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  429. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  430. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  431. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  432. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  433. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  434. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  435. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  436. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  437. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  438. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  439. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  440. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  441. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  442. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  443. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route_client-reference-manifest.js +1 -1
  444. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  445. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  446. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route_client-reference-manifest.js +1 -1
  447. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  448. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  449. package/cli/app/.next-cli-build/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  450. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  451. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  452. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  453. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  454. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  455. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  456. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  457. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  458. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  459. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  460. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  461. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  462. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  463. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  464. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  465. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  466. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  467. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  468. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  469. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  470. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  471. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  472. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  473. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route_client-reference-manifest.js +1 -1
  474. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  475. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  476. package/cli/app/.next-cli-build/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  477. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  478. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  479. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +1 -1
  480. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  481. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  482. package/cli/app/.next-cli-build/server/app/api/providers/route_client-reference-manifest.js +1 -1
  483. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  484. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  485. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route_client-reference-manifest.js +1 -1
  486. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  487. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  488. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  489. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +2 -2
  490. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  491. package/cli/app/.next-cli-build/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  492. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  493. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  494. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  495. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  496. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  497. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  498. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  499. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  500. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +1 -1
  501. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  502. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  503. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +1 -1
  504. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  505. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  506. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  507. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  508. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  509. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -1
  510. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  511. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  512. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -1
  513. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  514. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  515. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -1
  516. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  517. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  518. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -1
  519. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  520. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  521. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -1
  522. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  523. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  524. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -1
  525. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  526. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  527. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -1
  528. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  529. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  530. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -1
  531. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  532. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  533. package/cli/app/.next-cli-build/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  534. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  535. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  536. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  537. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  538. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  539. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  540. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  541. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  542. package/cli/app/.next-cli-build/server/app/api/settings/route_client-reference-manifest.js +1 -1
  543. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  544. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  545. package/cli/app/.next-cli-build/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  546. package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  547. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  548. package/cli/app/.next-cli-build/server/app/api/tags/route_client-reference-manifest.js +1 -1
  549. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  550. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  551. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route_client-reference-manifest.js +1 -1
  552. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  553. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  554. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route_client-reference-manifest.js +1 -1
  555. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  556. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  557. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route_client-reference-manifest.js +1 -1
  558. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
  559. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  560. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route_client-reference-manifest.js +1 -1
  561. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
  562. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  563. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route_client-reference-manifest.js +1 -1
  564. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
  565. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  566. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route_client-reference-manifest.js +1 -1
  567. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +2 -2
  568. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  569. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route_client-reference-manifest.js +1 -1
  570. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
  571. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  572. package/cli/app/.next-cli-build/server/app/api/terminal/session/route_client-reference-manifest.js +1 -1
  573. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  574. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  575. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  576. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  577. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  578. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  579. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  580. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  581. package/cli/app/.next-cli-build/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  582. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  583. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  584. package/cli/app/.next-cli-build/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  585. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  586. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  587. package/cli/app/.next-cli-build/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  588. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  589. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  590. package/cli/app/.next-cli-build/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  591. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  592. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  593. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  594. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  595. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  596. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  597. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  598. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  599. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  600. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  601. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  602. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -1
  603. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  604. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  605. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -1
  606. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  607. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  608. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -1
  609. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +3 -3
  610. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  611. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -1
  612. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  613. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  614. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  615. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  616. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  617. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route_client-reference-manifest.js +1 -1
  618. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  619. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  620. package/cli/app/.next-cli-build/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  621. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  622. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  623. package/cli/app/.next-cli-build/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  624. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  625. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  626. package/cli/app/.next-cli-build/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  627. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  628. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  629. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  630. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  631. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  632. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  633. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  634. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  635. package/cli/app/.next-cli-build/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  636. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  637. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  638. package/cli/app/.next-cli-build/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  639. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  640. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  641. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  642. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  643. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  644. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  645. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  646. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  647. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  648. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  649. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  650. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -1
  651. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  652. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  653. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  654. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  655. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  656. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  657. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  658. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  659. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  660. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  661. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  662. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  663. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  664. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  665. package/cli/app/.next-cli-build/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  666. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  667. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  668. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route_client-reference-manifest.js +1 -1
  669. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  670. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  671. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -1
  672. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  673. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  674. package/cli/app/.next-cli-build/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  675. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  676. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  677. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -1
  678. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  679. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  680. package/cli/app/.next-cli-build/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  681. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  682. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  683. package/cli/app/.next-cli-build/server/app/api/v1/route_client-reference-manifest.js +1 -1
  684. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  685. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  686. package/cli/app/.next-cli-build/server/app/api/v1/search/route_client-reference-manifest.js +1 -1
  687. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  688. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  689. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route_client-reference-manifest.js +1 -1
  690. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  691. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  692. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  693. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  694. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  695. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  696. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  697. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  698. package/cli/app/.next-cli-build/server/app/api/version/route_client-reference-manifest.js +1 -1
  699. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  700. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  701. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -1
  702. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  703. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  704. package/cli/app/.next-cli-build/server/app/api/version/update/route_client-reference-manifest.js +1 -1
  705. package/cli/app/.next-cli-build/server/app/callback/page.js +2 -2
  706. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  707. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  708. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  709. package/cli/app/.next-cli-build/server/app/callback.rsc +13 -13
  710. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +13 -13
  711. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +4 -4
  712. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +6 -6
  713. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  714. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
  715. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +3 -3
  716. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  717. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +14 -14
  718. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +4 -4
  719. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +3 -3
  720. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  721. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  722. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +14 -14
  723. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +4 -4
  724. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +6 -6
  725. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +2 -2
  726. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  727. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +13 -13
  728. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +3 -3
  729. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +3 -3
  730. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  731. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  732. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +13 -13
  733. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +4 -4
  734. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +6 -6
  735. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  736. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  737. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +13 -13
  738. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +3 -3
  739. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +3 -3
  740. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  741. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  742. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +13 -13
  743. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +4 -4
  744. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +6 -6
  745. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  746. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  747. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +14 -14
  748. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +4 -4
  749. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +3 -3
  750. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  751. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  752. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +14 -14
  753. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +4 -4
  754. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +6 -6
  755. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  756. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  757. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +14 -14
  758. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +4 -4
  759. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +3 -3
  760. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  761. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  762. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +14 -14
  763. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +4 -4
  764. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +6 -6
  765. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +2 -2
  766. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  767. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +13 -13
  768. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +3 -3
  769. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +3 -3
  770. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  771. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  772. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +13 -13
  773. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +4 -4
  774. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +6 -6
  775. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  776. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  777. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +14 -14
  778. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +4 -4
  779. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +3 -3
  780. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +3 -3
  781. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  782. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  783. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +14 -14
  784. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +4 -4
  785. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +6 -6
  786. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  787. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  788. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +13 -13
  789. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +3 -3
  790. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +3 -3
  791. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  792. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  793. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +13 -13
  794. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +4 -4
  795. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +6 -6
  796. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  797. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  798. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +13 -13
  799. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +3 -3
  800. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +3 -3
  801. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  802. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  803. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +13 -13
  804. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +4 -4
  805. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +6 -6
  806. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +2 -2
  807. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  808. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +14 -14
  809. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +4 -4
  810. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +3 -3
  811. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  812. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  813. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +14 -14
  814. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +4 -4
  815. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +6 -6
  816. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  817. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  818. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +14 -14
  819. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +4 -4
  820. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +3 -3
  821. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +3 -3
  822. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  823. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  824. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +14 -14
  825. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +4 -4
  826. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +6 -6
  827. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  828. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  829. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +14 -14
  830. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +4 -4
  831. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +3 -3
  832. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  833. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  834. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +14 -14
  835. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +4 -4
  836. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +6 -6
  837. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  838. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  839. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +14 -14
  840. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +4 -4
  841. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +3 -3
  842. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  843. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  844. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +14 -14
  845. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +4 -4
  846. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +6 -6
  847. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  848. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  849. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +13 -13
  850. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +3 -3
  851. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +3 -3
  852. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  853. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  854. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +13 -13
  855. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +4 -4
  856. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +6 -6
  857. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  858. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  859. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +14 -14
  860. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +4 -4
  861. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +3 -3
  862. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  863. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  864. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +14 -14
  865. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +4 -4
  866. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +6 -6
  867. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  868. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  869. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  870. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  871. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  872. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +13 -13
  873. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +13 -13
  874. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +4 -4
  875. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +6 -6
  876. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  877. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
  878. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +3 -3
  879. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +3 -3
  880. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +3 -3
  881. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  882. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +13 -13
  883. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +3 -3
  884. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +3 -3
  885. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  886. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  887. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +13 -13
  888. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +4 -4
  889. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +6 -6
  890. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  891. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  892. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +14 -14
  893. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +4 -4
  894. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +3 -3
  895. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  896. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  897. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +14 -14
  898. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +4 -4
  899. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +6 -6
  900. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  901. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  902. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +14 -14
  903. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +4 -4
  904. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +3 -3
  905. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  906. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  907. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +14 -14
  908. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +4 -4
  909. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +6 -6
  910. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  911. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  912. package/cli/app/.next-cli-build/server/app/dashboard.rsc +13 -13
  913. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +3 -3
  914. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  915. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  916. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +13 -13
  917. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +4 -4
  918. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +6 -6
  919. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  920. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  921. package/cli/app/.next-cli-build/server/app/index.rsc +11 -11
  922. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  923. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +11 -11
  924. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +4 -4
  925. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +6 -6
  926. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  927. package/cli/app/.next-cli-build/server/app/landing/page.js +2 -2
  928. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  929. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  930. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  931. package/cli/app/.next-cli-build/server/app/landing.rsc +13 -13
  932. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +13 -13
  933. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +4 -4
  934. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +6 -6
  935. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  936. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
  937. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +3 -3
  938. package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
  939. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  940. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  941. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  942. package/cli/app/.next-cli-build/server/app/login.rsc +13 -13
  943. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +13 -13
  944. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +4 -4
  945. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +6 -6
  946. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  947. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  948. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +3 -3
  949. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  950. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  951. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  952. package/cli/app/.next-cli-build/server/app/page.js +2 -2
  953. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  954. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  955. package/cli/app/.next-cli-build/server/app-paths-manifest.json +16 -16
  956. package/cli/app/.next-cli-build/server/chunks/{3159.js → 1023.js} +1 -1
  957. package/cli/app/.next-cli-build/server/chunks/1046.js +1 -0
  958. package/cli/app/.next-cli-build/server/chunks/{4055.js → 1167.js} +1 -1
  959. package/cli/app/.next-cli-build/server/chunks/1237.js +71 -0
  960. package/cli/app/.next-cli-build/server/chunks/{6844.js → 1469.js} +1 -1
  961. package/cli/app/.next-cli-build/server/chunks/{1188.js → 1500.js} +1 -1
  962. package/cli/app/.next-cli-build/server/chunks/1536.js +1 -0
  963. package/cli/app/.next-cli-build/server/chunks/1586.js +7 -0
  964. package/cli/app/.next-cli-build/server/chunks/1637.js +3 -0
  965. package/cli/app/.next-cli-build/server/chunks/{4229.js → 1776.js} +1 -1
  966. package/cli/app/.next-cli-build/server/chunks/{1019.js → 1779.js} +1 -1
  967. package/cli/app/.next-cli-build/server/chunks/2027.js +1 -0
  968. package/cli/app/.next-cli-build/server/chunks/2282.js +1 -0
  969. package/cli/app/.next-cli-build/server/chunks/23.js +63 -0
  970. package/cli/app/.next-cli-build/server/chunks/{3593.js → 2417.js} +1 -1
  971. package/cli/app/.next-cli-build/server/chunks/2423.js +1 -0
  972. package/cli/app/.next-cli-build/server/chunks/2674.js +121 -0
  973. package/cli/app/.next-cli-build/server/chunks/{6036.js → 2909.js} +1 -1
  974. package/cli/app/.next-cli-build/server/chunks/3174.js +19 -0
  975. package/cli/app/.next-cli-build/server/chunks/3538.js +1 -0
  976. package/cli/app/.next-cli-build/server/chunks/{4136.js → 3552.js} +1 -1
  977. package/cli/app/.next-cli-build/server/chunks/3560.js +7 -0
  978. package/cli/app/.next-cli-build/server/chunks/{5236.js → 3580.js} +1 -1
  979. package/cli/app/.next-cli-build/server/chunks/3833.js +1 -0
  980. package/cli/app/.next-cli-build/server/chunks/3871.js +60 -0
  981. package/cli/app/.next-cli-build/server/chunks/{5681.js → 3881.js} +1 -1
  982. package/cli/app/.next-cli-build/server/chunks/3972.js +1 -0
  983. package/cli/app/.next-cli-build/server/chunks/4014.js +1 -0
  984. package/cli/app/.next-cli-build/server/chunks/4088.js +1 -0
  985. package/cli/app/.next-cli-build/server/chunks/4293.js +1 -0
  986. package/cli/app/.next-cli-build/server/chunks/{7341.js → 4341.js} +1 -1
  987. package/cli/app/.next-cli-build/server/chunks/4350.js +1 -0
  988. package/cli/app/.next-cli-build/server/chunks/{4739.js → 4395.js} +1 -1
  989. package/cli/app/.next-cli-build/server/chunks/4441.js +24 -0
  990. package/cli/app/.next-cli-build/server/chunks/{2693.js → 4493.js} +1 -1
  991. package/cli/app/.next-cli-build/server/chunks/{5000.js → 4499.js} +2 -2
  992. package/cli/app/.next-cli-build/server/chunks/4539.js +1 -0
  993. package/cli/app/.next-cli-build/server/chunks/46.js +17 -0
  994. package/cli/app/.next-cli-build/server/chunks/4607.js +18 -0
  995. package/cli/app/.next-cli-build/server/chunks/{3331.js → 4619.js} +1 -1
  996. package/cli/app/.next-cli-build/server/chunks/4693.js +1 -0
  997. package/cli/app/.next-cli-build/server/chunks/{7965.js → 4880.js} +1 -1
  998. package/cli/app/.next-cli-build/server/chunks/{1998.js → 4934.js} +1 -1
  999. package/cli/app/.next-cli-build/server/chunks/4959.js +1 -0
  1000. package/cli/app/.next-cli-build/server/chunks/497.js +1 -0
  1001. package/cli/app/.next-cli-build/server/chunks/5015.js +67 -0
  1002. package/cli/app/.next-cli-build/server/chunks/5337.js +1 -0
  1003. package/cli/app/.next-cli-build/server/chunks/{6802.js → 5370.js} +1 -1
  1004. package/cli/app/.next-cli-build/server/chunks/{2030.js → 5614.js} +5 -5
  1005. package/cli/app/.next-cli-build/server/chunks/5747.js +1 -0
  1006. package/cli/app/.next-cli-build/server/chunks/5956.js +1 -0
  1007. package/cli/app/.next-cli-build/server/chunks/6041.js +1 -0
  1008. package/cli/app/.next-cli-build/server/chunks/6170.js +3 -0
  1009. package/cli/app/.next-cli-build/server/chunks/6220.js +1 -0
  1010. package/cli/app/.next-cli-build/server/chunks/6372.js +1 -0
  1011. package/cli/app/.next-cli-build/server/chunks/6408.js +43 -0
  1012. package/cli/app/.next-cli-build/server/chunks/6673.js +1 -0
  1013. package/cli/app/.next-cli-build/server/chunks/6714.js +1 -0
  1014. package/cli/app/.next-cli-build/server/chunks/{6108.js → 6744.js} +1 -1
  1015. package/cli/app/.next-cli-build/server/chunks/733.js +1 -0
  1016. package/cli/app/.next-cli-build/server/chunks/{1531.js → 7667.js} +1 -1
  1017. package/cli/app/.next-cli-build/server/chunks/7716.js +1 -0
  1018. package/cli/app/.next-cli-build/server/chunks/7729.js +1 -0
  1019. package/cli/app/.next-cli-build/server/chunks/{9528.js → 7741.js} +3 -3
  1020. package/cli/app/.next-cli-build/server/chunks/7806.js +1 -0
  1021. package/cli/app/.next-cli-build/server/chunks/7870.js +1 -0
  1022. package/cli/app/.next-cli-build/server/chunks/{2007.js → 8031.js} +1 -1
  1023. package/cli/app/.next-cli-build/server/chunks/8180.js +1 -0
  1024. package/cli/app/.next-cli-build/server/chunks/8182.js +1 -0
  1025. package/cli/app/.next-cli-build/server/chunks/8183.js +1 -0
  1026. package/cli/app/.next-cli-build/server/chunks/8227.js +1 -0
  1027. package/cli/app/.next-cli-build/server/chunks/83.js +45 -0
  1028. package/cli/app/.next-cli-build/server/chunks/8341.js +1 -0
  1029. package/cli/app/.next-cli-build/server/chunks/857.js +1 -0
  1030. package/cli/app/.next-cli-build/server/chunks/{6457.js → 8578.js} +2 -2
  1031. package/cli/app/.next-cli-build/server/chunks/8669.js +1 -0
  1032. package/cli/app/.next-cli-build/server/chunks/8779.js +1 -0
  1033. package/cli/app/.next-cli-build/server/chunks/{4013.js → 8953.js} +1 -1
  1034. package/cli/app/.next-cli-build/server/chunks/9001.js +1 -0
  1035. package/cli/app/.next-cli-build/server/chunks/906.js +183 -0
  1036. package/cli/app/.next-cli-build/server/chunks/{2722.js → 9293.js} +25 -25
  1037. package/cli/app/.next-cli-build/server/chunks/9345.js +1 -0
  1038. package/cli/app/.next-cli-build/server/chunks/{5258.js → 9570.js} +1 -1
  1039. package/cli/app/.next-cli-build/server/chunks/9901.js +1 -0
  1040. package/cli/app/.next-cli-build/server/chunks/9992.js +66 -0
  1041. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  1042. package/cli/app/.next-cli-build/server/middleware-react-loadable-manifest.js +1 -1
  1043. package/cli/app/.next-cli-build/server/middleware.js +22 -22
  1044. package/cli/app/.next-cli-build/server/next-font-manifest.js +1 -1
  1045. package/cli/app/.next-cli-build/server/next-font-manifest.json +1 -1
  1046. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  1047. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  1048. package/cli/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  1049. package/cli/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  1050. package/cli/app/.next-cli-build/static/chunks/{4bd1b696-e356ca5ba0218e27.js → 0937d497-33e2049988b7c22e.js} +1 -1
  1051. package/cli/app/.next-cli-build/static/chunks/1096-6d775ecc28cf6340.js +1 -0
  1052. package/cli/app/.next-cli-build/static/chunks/1554-f9422191725f4f61.js +1 -0
  1053. package/cli/app/.next-cli-build/static/chunks/{8202.1ffc6ce531e066ce.js → 1768.ad4675e8c839dd60.js} +1 -1
  1054. package/cli/app/.next-cli-build/static/chunks/1858-5de22f4a0f7873ea.js +32 -0
  1055. package/cli/app/.next-cli-build/static/chunks/2b9ff8ee-8330dc76023de107.js +1 -0
  1056. package/cli/app/.next-cli-build/static/chunks/{6069-6bce779705f69e62.js → 3539-25f16e696f32ccdf.js} +5 -5
  1057. package/cli/app/.next-cli-build/static/chunks/4391-0e471d2e761014ea.js +3 -0
  1058. package/cli/app/.next-cli-build/static/chunks/6656-0ca5257ec474f863.js +66 -0
  1059. package/cli/app/.next-cli-build/static/chunks/7783-7a4ed0063ec0fecc.js +7 -0
  1060. package/cli/app/.next-cli-build/static/chunks/7813-f79ef67923829c3a.js +1 -0
  1061. package/cli/app/.next-cli-build/static/chunks/{1992-b492aa3235a8c259.js → 8434-db0f0049d0262e2e.js} +1 -1
  1062. package/cli/app/.next-cli-build/static/chunks/8689-ee86215b9a3eb108.js +1 -0
  1063. package/cli/app/.next-cli-build/static/chunks/888-1894db92ff847dbb.js +1 -0
  1064. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/automation/page-2ee85b86d7597651.js +1 -0
  1065. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-bad8ff5503e4f0b7.js +1 -0
  1066. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-3fb4f7227c4ab57f.js +1 -0
  1067. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-9459e82acdd078ac.js +1 -0
  1068. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-f411959991f96990.js +1 -0
  1069. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-1a77fd86f2a4922a.js +1 -0
  1070. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/context/page-63e5ceb81d87c300.js +1 -0
  1071. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-1a097de73412d440.js +1 -0
  1072. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-0fafff8a72986a98.js → page-2365f7b85dd8967d.js} +2 -2
  1073. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-7427ee87015d1113.js +1 -0
  1074. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-85e7b6f5b4af1dd4.js → page-939421769eec6d3b.js} +2 -2
  1075. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-ca761e638d38dae4.js +1 -0
  1076. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-eeb71d37d39b3586.js +1 -0
  1077. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-1c1a986664906bea.js +1 -0
  1078. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-284542c819665387.js +1 -0
  1079. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-30229a682f3cb8df.js +1 -0
  1080. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-6deaa1a0e3ad0eb6.js → page-4bfe29eb86322368.js} +2 -2
  1081. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-71ca5c61fe011c5b.js +1 -0
  1082. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/{page-5ab697596491a658.js → page-fa8e4cba2691a844.js} +1 -1
  1083. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-eb11e852f7a314c9.js → page-69eefaf477523b7d.js} +2 -2
  1084. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/pxpipe/{page-f1c47c7778f23895.js → page-930e38c563b5c8a1.js} +1 -1
  1085. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-fb96c1c4474868b3.js +1 -0
  1086. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/terminal/{page-a3689f5a124bc27a.js → page-8da3399a4ed0af0d.js} +2 -2
  1087. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-ef6d294917d01201.js +1 -0
  1088. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-86b61948afed34e8.js +1 -0
  1089. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-b4939c80e73c7dfd.js +1 -0
  1090. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-2e14da9e57c3e171.js +1 -0
  1091. package/cli/app/.next-cli-build/static/chunks/app/_global-error/{page-0958b3b629c68bd2.js → page-63a0542d75a38025.js} +1 -1
  1092. package/cli/app/.next-cli-build/static/chunks/app/_not-found/page-85ef61223793be87.js +1 -0
  1093. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/{route-0958b3b629c68bd2.js → route-63a0542d75a38025.js} +1 -1
  1094. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/{route-0958b3b629c68bd2.js → route-63a0542d75a38025.js} +1 -1
  1095. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/{route-0958b3b629c68bd2.js → route-63a0542d75a38025.js} +1 -1
  1096. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-63a0542d75a38025.js +1 -0
  1097. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-63a0542d75a38025.js +1 -0
  1098. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-63a0542d75a38025.js +1 -0
  1099. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-63a0542d75a38025.js +1 -0
  1100. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-63a0542d75a38025.js +1 -0
  1101. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-63a0542d75a38025.js +1 -0
  1102. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-63a0542d75a38025.js +1 -0
  1103. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-63a0542d75a38025.js +1 -0
  1104. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-63a0542d75a38025.js +1 -0
  1105. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-63a0542d75a38025.js +1 -0
  1106. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-63a0542d75a38025.js +1 -0
  1107. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-63a0542d75a38025.js +1 -0
  1108. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-63a0542d75a38025.js +1 -0
  1109. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-63a0542d75a38025.js +1 -0
  1110. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-63a0542d75a38025.js +1 -0
  1111. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-63a0542d75a38025.js +1 -0
  1112. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-63a0542d75a38025.js +1 -0
  1113. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-63a0542d75a38025.js +1 -0
  1114. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-63a0542d75a38025.js +1 -0
  1115. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-63a0542d75a38025.js +1 -0
  1116. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-63a0542d75a38025.js +1 -0
  1117. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-63a0542d75a38025.js +1 -0
  1118. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-63a0542d75a38025.js +1 -0
  1119. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-63a0542d75a38025.js +1 -0
  1120. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-63a0542d75a38025.js +1 -0
  1121. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-63a0542d75a38025.js +1 -0
  1122. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-63a0542d75a38025.js +1 -0
  1123. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-63a0542d75a38025.js +1 -0
  1124. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-63a0542d75a38025.js +1 -0
  1125. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-63a0542d75a38025.js +1 -0
  1126. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-63a0542d75a38025.js +1 -0
  1127. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-63a0542d75a38025.js +1 -0
  1128. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-63a0542d75a38025.js +1 -0
  1129. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-63a0542d75a38025.js +1 -0
  1130. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-63a0542d75a38025.js +1 -0
  1131. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-63a0542d75a38025.js +1 -0
  1132. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-63a0542d75a38025.js +1 -0
  1133. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-63a0542d75a38025.js +1 -0
  1134. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-63a0542d75a38025.js +1 -0
  1135. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-63a0542d75a38025.js +1 -0
  1136. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-63a0542d75a38025.js +1 -0
  1137. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-63a0542d75a38025.js +1 -0
  1138. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-63a0542d75a38025.js +1 -0
  1139. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-63a0542d75a38025.js +1 -0
  1140. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-63a0542d75a38025.js +1 -0
  1141. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-63a0542d75a38025.js +1 -0
  1142. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-63a0542d75a38025.js +1 -0
  1143. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-63a0542d75a38025.js +1 -0
  1144. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-63a0542d75a38025.js +1 -0
  1145. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-63a0542d75a38025.js +1 -0
  1146. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-63a0542d75a38025.js +1 -0
  1147. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-63a0542d75a38025.js +1 -0
  1148. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-63a0542d75a38025.js +1 -0
  1149. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-63a0542d75a38025.js +1 -0
  1150. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-63a0542d75a38025.js +1 -0
  1151. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-63a0542d75a38025.js +1 -0
  1152. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-63a0542d75a38025.js +1 -0
  1153. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +1 -0
  1154. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +1 -0
  1155. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-63a0542d75a38025.js +1 -0
  1156. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-63a0542d75a38025.js +1 -0
  1157. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-63a0542d75a38025.js +1 -0
  1158. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +1 -0
  1159. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +1 -0
  1160. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/route-63a0542d75a38025.js +1 -0
  1161. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/latest/route-63a0542d75a38025.js +1 -0
  1162. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/route-63a0542d75a38025.js +1 -0
  1163. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +1 -0
  1164. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +1 -0
  1165. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-63a0542d75a38025.js +1 -0
  1166. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-63a0542d75a38025.js +1 -0
  1167. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-63a0542d75a38025.js +1 -0
  1168. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +1 -0
  1169. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +1 -0
  1170. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-63a0542d75a38025.js +1 -0
  1171. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-63a0542d75a38025.js +1 -0
  1172. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-63a0542d75a38025.js +1 -0
  1173. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-63a0542d75a38025.js +1 -0
  1174. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-63a0542d75a38025.js +1 -0
  1175. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +1 -0
  1176. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +1 -0
  1177. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-63a0542d75a38025.js +1 -0
  1178. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-63a0542d75a38025.js +1 -0
  1179. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-63a0542d75a38025.js +1 -0
  1180. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-63a0542d75a38025.js +1 -0
  1181. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-63a0542d75a38025.js +1 -0
  1182. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-63a0542d75a38025.js +1 -0
  1183. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-63a0542d75a38025.js +1 -0
  1184. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-63a0542d75a38025.js +1 -0
  1185. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-63a0542d75a38025.js +1 -0
  1186. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +1 -0
  1187. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +1 -0
  1188. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-63a0542d75a38025.js +1 -0
  1189. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-63a0542d75a38025.js +1 -0
  1190. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-63a0542d75a38025.js +1 -0
  1191. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-63a0542d75a38025.js +1 -0
  1192. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-63a0542d75a38025.js +1 -0
  1193. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +1 -0
  1194. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +1 -0
  1195. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-63a0542d75a38025.js +1 -0
  1196. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-63a0542d75a38025.js +1 -0
  1197. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-63a0542d75a38025.js +1 -0
  1198. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-63a0542d75a38025.js +1 -0
  1199. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-63a0542d75a38025.js +1 -0
  1200. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-63a0542d75a38025.js +1 -0
  1201. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +1 -0
  1202. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +1 -0
  1203. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-63a0542d75a38025.js +1 -0
  1204. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-63a0542d75a38025.js +1 -0
  1205. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-63a0542d75a38025.js +1 -0
  1206. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-63a0542d75a38025.js +1 -0
  1207. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-63a0542d75a38025.js +1 -0
  1208. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-63a0542d75a38025.js +1 -0
  1209. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-63a0542d75a38025.js +1 -0
  1210. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-63a0542d75a38025.js +1 -0
  1211. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-63a0542d75a38025.js +1 -0
  1212. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-63a0542d75a38025.js +1 -0
  1213. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-63a0542d75a38025.js +1 -0
  1214. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-63a0542d75a38025.js +1 -0
  1215. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-63a0542d75a38025.js +1 -0
  1216. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-63a0542d75a38025.js +1 -0
  1217. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-63a0542d75a38025.js +1 -0
  1218. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-63a0542d75a38025.js +1 -0
  1219. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-63a0542d75a38025.js +1 -0
  1220. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-63a0542d75a38025.js +1 -0
  1221. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-63a0542d75a38025.js +1 -0
  1222. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-63a0542d75a38025.js +1 -0
  1223. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-63a0542d75a38025.js +1 -0
  1224. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-63a0542d75a38025.js +1 -0
  1225. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-63a0542d75a38025.js +1 -0
  1226. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-63a0542d75a38025.js +1 -0
  1227. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-63a0542d75a38025.js +1 -0
  1228. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-63a0542d75a38025.js +1 -0
  1229. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-63a0542d75a38025.js +1 -0
  1230. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-63a0542d75a38025.js +1 -0
  1231. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-63a0542d75a38025.js +1 -0
  1232. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-63a0542d75a38025.js +1 -0
  1233. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-63a0542d75a38025.js +1 -0
  1234. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-63a0542d75a38025.js +1 -0
  1235. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-63a0542d75a38025.js +1 -0
  1236. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-63a0542d75a38025.js +1 -0
  1237. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-63a0542d75a38025.js +1 -0
  1238. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-63a0542d75a38025.js +1 -0
  1239. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-63a0542d75a38025.js +1 -0
  1240. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-63a0542d75a38025.js +1 -0
  1241. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-63a0542d75a38025.js +1 -0
  1242. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-63a0542d75a38025.js +1 -0
  1243. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-63a0542d75a38025.js +1 -0
  1244. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-63a0542d75a38025.js +1 -0
  1245. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-63a0542d75a38025.js +1 -0
  1246. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-63a0542d75a38025.js +1 -0
  1247. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-63a0542d75a38025.js +1 -0
  1248. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-63a0542d75a38025.js +1 -0
  1249. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-63a0542d75a38025.js +1 -0
  1250. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-63a0542d75a38025.js +1 -0
  1251. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-63a0542d75a38025.js +1 -0
  1252. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-63a0542d75a38025.js +1 -0
  1253. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-63a0542d75a38025.js +1 -0
  1254. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-63a0542d75a38025.js +1 -0
  1255. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-63a0542d75a38025.js +1 -0
  1256. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-63a0542d75a38025.js +1 -0
  1257. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-63a0542d75a38025.js +1 -0
  1258. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-63a0542d75a38025.js +1 -0
  1259. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-63a0542d75a38025.js +1 -0
  1260. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-63a0542d75a38025.js +1 -0
  1261. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-63a0542d75a38025.js +1 -0
  1262. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-63a0542d75a38025.js +1 -0
  1263. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-63a0542d75a38025.js +1 -0
  1264. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-63a0542d75a38025.js +1 -0
  1265. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-63a0542d75a38025.js +1 -0
  1266. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-63a0542d75a38025.js +1 -0
  1267. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-63a0542d75a38025.js +1 -0
  1268. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-63a0542d75a38025.js +1 -0
  1269. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-63a0542d75a38025.js +1 -0
  1270. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-63a0542d75a38025.js +1 -0
  1271. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-63a0542d75a38025.js +1 -0
  1272. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-63a0542d75a38025.js +1 -0
  1273. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-63a0542d75a38025.js +1 -0
  1274. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-63a0542d75a38025.js +1 -0
  1275. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-63a0542d75a38025.js +1 -0
  1276. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-63a0542d75a38025.js +1 -0
  1277. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-63a0542d75a38025.js +1 -0
  1278. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-63a0542d75a38025.js +1 -0
  1279. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-63a0542d75a38025.js +1 -0
  1280. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-63a0542d75a38025.js +1 -0
  1281. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-63a0542d75a38025.js +1 -0
  1282. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-63a0542d75a38025.js +1 -0
  1283. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-63a0542d75a38025.js +1 -0
  1284. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-63a0542d75a38025.js +1 -0
  1285. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-63a0542d75a38025.js +1 -0
  1286. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-63a0542d75a38025.js +1 -0
  1287. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-63a0542d75a38025.js +1 -0
  1288. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-63a0542d75a38025.js +1 -0
  1289. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-63a0542d75a38025.js +1 -0
  1290. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-63a0542d75a38025.js +1 -0
  1291. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-63a0542d75a38025.js +1 -0
  1292. package/cli/app/.next-cli-build/static/chunks/app/callback/page-747616215eaffcc5.js +1 -0
  1293. package/cli/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-fc0526db0d6faea4.js +1 -0
  1294. package/cli/app/.next-cli-build/static/chunks/app/landing/page-a972ff4fc204488f.js +1 -0
  1295. package/cli/app/.next-cli-build/static/chunks/app/layout-195d8bc39318cb3f.js +1 -0
  1296. package/cli/app/.next-cli-build/static/chunks/app/login/page-ec9730458515625e.js +1 -0
  1297. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-63a0542d75a38025.js +1 -0
  1298. package/cli/app/.next-cli-build/static/chunks/app/page-63a0542d75a38025.js +1 -0
  1299. package/cli/app/.next-cli-build/static/chunks/{e868780c-9fd397bedad188d4.js → fcafe1ac-fb00beefde649e9f.js} +1 -1
  1300. package/cli/app/.next-cli-build/static/chunks/framework-6b10028fc45b4fba.js +1 -0
  1301. package/cli/app/.next-cli-build/static/chunks/main-af2e4cf487829313.js +5 -0
  1302. package/cli/app/.next-cli-build/static/chunks/main-app-5349704f9863330d.js +1 -0
  1303. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-63a0542d75a38025.js +1 -0
  1304. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-63a0542d75a38025.js +1 -0
  1305. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/global-error-79da82ac351d0af0.js +1 -0
  1306. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-63a0542d75a38025.js +1 -0
  1307. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-63a0542d75a38025.js +1 -0
  1308. package/cli/app/.next-cli-build/static/chunks/{webpack-948b910ed7afd0b8.js → webpack-9c203f4468cc2f7c.js} +1 -1
  1309. package/cli/app/.next-cli-build/static/css/e42a53c7486ca4f0.css +1 -0
  1310. package/cli/app/CHANGELOG.md +9 -0
  1311. package/cli/app/package.json +2 -1
  1312. package/cli/app/server.js +1 -1
  1313. package/cli/app/src/lib/oauth/services/socksHttpBridge.js +15 -7
  1314. package/cli/package.json +1 -1
  1315. package/open-sse/config/providerModels.js +1 -0
  1316. package/package.json +2 -1
  1317. package/src/app/(dashboard)/dashboard/automation/page.js +3 -3
  1318. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +10 -10
  1319. package/src/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
  1320. package/src/lib/oauth/services/bulkImportBrowserEngine.js +30 -20
  1321. package/src/lib/oauth/services/grokCliBulkImportManager.js +13 -14
  1322. package/src/lib/oauth/services/kiroBulkImportManager.js +30 -19
  1323. package/src/lib/oauth/services/socksHttpBridge.js +15 -7
  1324. package/src/shared/components/BulkAccountAutomationModal.js +2 -24
  1325. package/src/shared/components/Header.js +7 -7
  1326. package/src/shared/components/Sidebar.js +1 -1
  1327. package/src/shared/components/layouts/DashboardLayout.js +4 -4
  1328. package/cli/app/.next-cli-build/server/chunks/1396.js +0 -1
  1329. package/cli/app/.next-cli-build/server/chunks/1656.js +0 -1
  1330. package/cli/app/.next-cli-build/server/chunks/1813.js +0 -1
  1331. package/cli/app/.next-cli-build/server/chunks/1818.js +0 -1
  1332. package/cli/app/.next-cli-build/server/chunks/2130.js +0 -1
  1333. package/cli/app/.next-cli-build/server/chunks/2409.js +0 -1
  1334. package/cli/app/.next-cli-build/server/chunks/241.js +0 -1
  1335. package/cli/app/.next-cli-build/server/chunks/2478.js +0 -1
  1336. package/cli/app/.next-cli-build/server/chunks/2540.js +0 -1
  1337. package/cli/app/.next-cli-build/server/chunks/3104.js +0 -43
  1338. package/cli/app/.next-cli-build/server/chunks/3110.js +0 -19
  1339. package/cli/app/.next-cli-build/server/chunks/3155.js +0 -60
  1340. package/cli/app/.next-cli-build/server/chunks/318.js +0 -183
  1341. package/cli/app/.next-cli-build/server/chunks/319.js +0 -45
  1342. package/cli/app/.next-cli-build/server/chunks/3407.js +0 -1
  1343. package/cli/app/.next-cli-build/server/chunks/3487.js +0 -1
  1344. package/cli/app/.next-cli-build/server/chunks/412.js +0 -7
  1345. package/cli/app/.next-cli-build/server/chunks/415.js +0 -1
  1346. package/cli/app/.next-cli-build/server/chunks/4177.js +0 -1
  1347. package/cli/app/.next-cli-build/server/chunks/4253.js +0 -3
  1348. package/cli/app/.next-cli-build/server/chunks/4404.js +0 -1
  1349. package/cli/app/.next-cli-build/server/chunks/4491.js +0 -1
  1350. package/cli/app/.next-cli-build/server/chunks/4632.js +0 -1
  1351. package/cli/app/.next-cli-build/server/chunks/4650.js +0 -17
  1352. package/cli/app/.next-cli-build/server/chunks/4741.js +0 -18
  1353. package/cli/app/.next-cli-build/server/chunks/4746.js +0 -7
  1354. package/cli/app/.next-cli-build/server/chunks/4765.js +0 -24
  1355. package/cli/app/.next-cli-build/server/chunks/4780.js +0 -1
  1356. package/cli/app/.next-cli-build/server/chunks/5024.js +0 -1
  1357. package/cli/app/.next-cli-build/server/chunks/507.js +0 -1
  1358. package/cli/app/.next-cli-build/server/chunks/5217.js +0 -1
  1359. package/cli/app/.next-cli-build/server/chunks/5433.js +0 -1
  1360. package/cli/app/.next-cli-build/server/chunks/5469.js +0 -1
  1361. package/cli/app/.next-cli-build/server/chunks/5573.js +0 -1
  1362. package/cli/app/.next-cli-build/server/chunks/5949.js +0 -81
  1363. package/cli/app/.next-cli-build/server/chunks/6269.js +0 -1
  1364. package/cli/app/.next-cli-build/server/chunks/6652.js +0 -1
  1365. package/cli/app/.next-cli-build/server/chunks/6935.js +0 -1
  1366. package/cli/app/.next-cli-build/server/chunks/698.js +0 -1
  1367. package/cli/app/.next-cli-build/server/chunks/7774.js +0 -121
  1368. package/cli/app/.next-cli-build/server/chunks/7828.js +0 -1
  1369. package/cli/app/.next-cli-build/server/chunks/8157.js +0 -1
  1370. package/cli/app/.next-cli-build/server/chunks/8242.js +0 -3
  1371. package/cli/app/.next-cli-build/server/chunks/8255.js +0 -1
  1372. package/cli/app/.next-cli-build/server/chunks/8371.js +0 -1
  1373. package/cli/app/.next-cli-build/server/chunks/8450.js +0 -1
  1374. package/cli/app/.next-cli-build/server/chunks/8520.js +0 -1
  1375. package/cli/app/.next-cli-build/server/chunks/8590.js +0 -1
  1376. package/cli/app/.next-cli-build/server/chunks/8895.js +0 -67
  1377. package/cli/app/.next-cli-build/server/chunks/891.js +0 -1
  1378. package/cli/app/.next-cli-build/server/chunks/8971.js +0 -1
  1379. package/cli/app/.next-cli-build/server/chunks/915.js +0 -63
  1380. package/cli/app/.next-cli-build/server/chunks/9372.js +0 -1
  1381. package/cli/app/.next-cli-build/server/chunks/9476.js +0 -66
  1382. package/cli/app/.next-cli-build/server/chunks/9489.js +0 -1
  1383. package/cli/app/.next-cli-build/server/chunks/9609.js +0 -1
  1384. package/cli/app/.next-cli-build/server/chunks/9613.js +0 -1
  1385. package/cli/app/.next-cli-build/static/chunks/1a258343-bc0b514c079d8898.js +0 -1
  1386. package/cli/app/.next-cli-build/static/chunks/3794-c66b3d8325973459.js +0 -32
  1387. package/cli/app/.next-cli-build/static/chunks/4343-ccad00872974a61b.js +0 -66
  1388. package/cli/app/.next-cli-build/static/chunks/523-81108e84df92e883.js +0 -3
  1389. package/cli/app/.next-cli-build/static/chunks/5242-bb1a1a7ec3bfb62f.js +0 -1
  1390. package/cli/app/.next-cli-build/static/chunks/5472-544ea4e7aa338d84.js +0 -1
  1391. package/cli/app/.next-cli-build/static/chunks/5497-b25ed8039d5058b3.js +0 -7
  1392. package/cli/app/.next-cli-build/static/chunks/7055-e60e20f43bfbe5f8.js +0 -1
  1393. package/cli/app/.next-cli-build/static/chunks/85-db69928a84a17025.js +0 -1
  1394. package/cli/app/.next-cli-build/static/chunks/9126-3c87cb0aee89bca5.js +0 -1
  1395. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/automation/page-a3939b72418749b7.js +0 -1
  1396. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-fa9d3452d69f2fc7.js +0 -1
  1397. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-2361fd82cdac58f9.js +0 -1
  1398. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-0186f028c4f68aa9.js +0 -1
  1399. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-81c25ef219dfc38b.js +0 -1
  1400. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-b055dfe6fb0c0172.js +0 -1
  1401. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/context/page-fb93d56bfaccdc19.js +0 -1
  1402. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-09e6213a0742752b.js +0 -1
  1403. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-7b6e1ef525e44bd1.js +0 -1
  1404. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-29893b095259085d.js +0 -1
  1405. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-c03ae64868d6bc4d.js +0 -1
  1406. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-fd2453044462eb4f.js +0 -1
  1407. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-13833a8f417b8d7e.js +0 -1
  1408. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-e95034d5b34bc360.js +0 -1
  1409. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-c38381db33d5aafc.js +0 -1
  1410. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-ac445dab96ac6223.js +0 -1
  1411. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-26d372726ae6df38.js +0 -1
  1412. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-a408f0954e4812ab.js +0 -1
  1413. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-2de7b12af94b8721.js +0 -1
  1414. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-2ae824d2d09c81ea.js +0 -1
  1415. package/cli/app/.next-cli-build/static/chunks/app/_not-found/page-499de2bdd91e139f.js +0 -1
  1416. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-0958b3b629c68bd2.js +0 -1
  1417. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-0958b3b629c68bd2.js +0 -1
  1418. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-0958b3b629c68bd2.js +0 -1
  1419. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-0958b3b629c68bd2.js +0 -1
  1420. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-0958b3b629c68bd2.js +0 -1
  1421. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-0958b3b629c68bd2.js +0 -1
  1422. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-0958b3b629c68bd2.js +0 -1
  1423. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-0958b3b629c68bd2.js +0 -1
  1424. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-0958b3b629c68bd2.js +0 -1
  1425. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-0958b3b629c68bd2.js +0 -1
  1426. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-0958b3b629c68bd2.js +0 -1
  1427. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-0958b3b629c68bd2.js +0 -1
  1428. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-0958b3b629c68bd2.js +0 -1
  1429. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-0958b3b629c68bd2.js +0 -1
  1430. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-0958b3b629c68bd2.js +0 -1
  1431. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-0958b3b629c68bd2.js +0 -1
  1432. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-0958b3b629c68bd2.js +0 -1
  1433. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-0958b3b629c68bd2.js +0 -1
  1434. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-0958b3b629c68bd2.js +0 -1
  1435. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-0958b3b629c68bd2.js +0 -1
  1436. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-0958b3b629c68bd2.js +0 -1
  1437. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-0958b3b629c68bd2.js +0 -1
  1438. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-0958b3b629c68bd2.js +0 -1
  1439. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-0958b3b629c68bd2.js +0 -1
  1440. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-0958b3b629c68bd2.js +0 -1
  1441. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-0958b3b629c68bd2.js +0 -1
  1442. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-0958b3b629c68bd2.js +0 -1
  1443. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-0958b3b629c68bd2.js +0 -1
  1444. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-0958b3b629c68bd2.js +0 -1
  1445. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-0958b3b629c68bd2.js +0 -1
  1446. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-0958b3b629c68bd2.js +0 -1
  1447. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-0958b3b629c68bd2.js +0 -1
  1448. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-0958b3b629c68bd2.js +0 -1
  1449. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-0958b3b629c68bd2.js +0 -1
  1450. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-0958b3b629c68bd2.js +0 -1
  1451. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-0958b3b629c68bd2.js +0 -1
  1452. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-0958b3b629c68bd2.js +0 -1
  1453. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-0958b3b629c68bd2.js +0 -1
  1454. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-0958b3b629c68bd2.js +0 -1
  1455. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-0958b3b629c68bd2.js +0 -1
  1456. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-0958b3b629c68bd2.js +0 -1
  1457. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-0958b3b629c68bd2.js +0 -1
  1458. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-0958b3b629c68bd2.js +0 -1
  1459. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-0958b3b629c68bd2.js +0 -1
  1460. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-0958b3b629c68bd2.js +0 -1
  1461. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-0958b3b629c68bd2.js +0 -1
  1462. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-0958b3b629c68bd2.js +0 -1
  1463. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-0958b3b629c68bd2.js +0 -1
  1464. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-0958b3b629c68bd2.js +0 -1
  1465. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-0958b3b629c68bd2.js +0 -1
  1466. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-0958b3b629c68bd2.js +0 -1
  1467. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-0958b3b629c68bd2.js +0 -1
  1468. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-0958b3b629c68bd2.js +0 -1
  1469. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-0958b3b629c68bd2.js +0 -1
  1470. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-0958b3b629c68bd2.js +0 -1
  1471. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-0958b3b629c68bd2.js +0 -1
  1472. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-0958b3b629c68bd2.js +0 -1
  1473. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +0 -1
  1474. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +0 -1
  1475. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-0958b3b629c68bd2.js +0 -1
  1476. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-0958b3b629c68bd2.js +0 -1
  1477. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-0958b3b629c68bd2.js +0 -1
  1478. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +0 -1
  1479. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +0 -1
  1480. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/route-0958b3b629c68bd2.js +0 -1
  1481. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/latest/route-0958b3b629c68bd2.js +0 -1
  1482. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/route-0958b3b629c68bd2.js +0 -1
  1483. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +0 -1
  1484. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +0 -1
  1485. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-0958b3b629c68bd2.js +0 -1
  1486. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-0958b3b629c68bd2.js +0 -1
  1487. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-0958b3b629c68bd2.js +0 -1
  1488. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +0 -1
  1489. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +0 -1
  1490. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-0958b3b629c68bd2.js +0 -1
  1491. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-0958b3b629c68bd2.js +0 -1
  1492. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-0958b3b629c68bd2.js +0 -1
  1493. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-0958b3b629c68bd2.js +0 -1
  1494. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-0958b3b629c68bd2.js +0 -1
  1495. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +0 -1
  1496. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +0 -1
  1497. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-0958b3b629c68bd2.js +0 -1
  1498. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-0958b3b629c68bd2.js +0 -1
  1499. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-0958b3b629c68bd2.js +0 -1
  1500. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-0958b3b629c68bd2.js +0 -1
  1501. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-0958b3b629c68bd2.js +0 -1
  1502. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-0958b3b629c68bd2.js +0 -1
  1503. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-0958b3b629c68bd2.js +0 -1
  1504. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-0958b3b629c68bd2.js +0 -1
  1505. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-0958b3b629c68bd2.js +0 -1
  1506. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +0 -1
  1507. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +0 -1
  1508. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-0958b3b629c68bd2.js +0 -1
  1509. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-0958b3b629c68bd2.js +0 -1
  1510. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-0958b3b629c68bd2.js +0 -1
  1511. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-0958b3b629c68bd2.js +0 -1
  1512. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-0958b3b629c68bd2.js +0 -1
  1513. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +0 -1
  1514. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +0 -1
  1515. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-0958b3b629c68bd2.js +0 -1
  1516. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-0958b3b629c68bd2.js +0 -1
  1517. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-0958b3b629c68bd2.js +0 -1
  1518. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-0958b3b629c68bd2.js +0 -1
  1519. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-0958b3b629c68bd2.js +0 -1
  1520. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-0958b3b629c68bd2.js +0 -1
  1521. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +0 -1
  1522. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +0 -1
  1523. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-0958b3b629c68bd2.js +0 -1
  1524. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-0958b3b629c68bd2.js +0 -1
  1525. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-0958b3b629c68bd2.js +0 -1
  1526. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-0958b3b629c68bd2.js +0 -1
  1527. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-0958b3b629c68bd2.js +0 -1
  1528. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-0958b3b629c68bd2.js +0 -1
  1529. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-0958b3b629c68bd2.js +0 -1
  1530. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-0958b3b629c68bd2.js +0 -1
  1531. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-0958b3b629c68bd2.js +0 -1
  1532. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-0958b3b629c68bd2.js +0 -1
  1533. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-0958b3b629c68bd2.js +0 -1
  1534. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-0958b3b629c68bd2.js +0 -1
  1535. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-0958b3b629c68bd2.js +0 -1
  1536. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-0958b3b629c68bd2.js +0 -1
  1537. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-0958b3b629c68bd2.js +0 -1
  1538. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-0958b3b629c68bd2.js +0 -1
  1539. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-0958b3b629c68bd2.js +0 -1
  1540. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-0958b3b629c68bd2.js +0 -1
  1541. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-0958b3b629c68bd2.js +0 -1
  1542. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-0958b3b629c68bd2.js +0 -1
  1543. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-0958b3b629c68bd2.js +0 -1
  1544. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-0958b3b629c68bd2.js +0 -1
  1545. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-0958b3b629c68bd2.js +0 -1
  1546. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-0958b3b629c68bd2.js +0 -1
  1547. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-0958b3b629c68bd2.js +0 -1
  1548. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-0958b3b629c68bd2.js +0 -1
  1549. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-0958b3b629c68bd2.js +0 -1
  1550. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-0958b3b629c68bd2.js +0 -1
  1551. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-0958b3b629c68bd2.js +0 -1
  1552. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-0958b3b629c68bd2.js +0 -1
  1553. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-0958b3b629c68bd2.js +0 -1
  1554. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-0958b3b629c68bd2.js +0 -1
  1555. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-0958b3b629c68bd2.js +0 -1
  1556. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-0958b3b629c68bd2.js +0 -1
  1557. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-0958b3b629c68bd2.js +0 -1
  1558. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-0958b3b629c68bd2.js +0 -1
  1559. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-0958b3b629c68bd2.js +0 -1
  1560. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-0958b3b629c68bd2.js +0 -1
  1561. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-0958b3b629c68bd2.js +0 -1
  1562. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-0958b3b629c68bd2.js +0 -1
  1563. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-0958b3b629c68bd2.js +0 -1
  1564. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-0958b3b629c68bd2.js +0 -1
  1565. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-0958b3b629c68bd2.js +0 -1
  1566. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-0958b3b629c68bd2.js +0 -1
  1567. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-0958b3b629c68bd2.js +0 -1
  1568. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-0958b3b629c68bd2.js +0 -1
  1569. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-0958b3b629c68bd2.js +0 -1
  1570. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-0958b3b629c68bd2.js +0 -1
  1571. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-0958b3b629c68bd2.js +0 -1
  1572. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-0958b3b629c68bd2.js +0 -1
  1573. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-0958b3b629c68bd2.js +0 -1
  1574. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-0958b3b629c68bd2.js +0 -1
  1575. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-0958b3b629c68bd2.js +0 -1
  1576. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-0958b3b629c68bd2.js +0 -1
  1577. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-0958b3b629c68bd2.js +0 -1
  1578. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-0958b3b629c68bd2.js +0 -1
  1579. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-0958b3b629c68bd2.js +0 -1
  1580. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-0958b3b629c68bd2.js +0 -1
  1581. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-0958b3b629c68bd2.js +0 -1
  1582. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-0958b3b629c68bd2.js +0 -1
  1583. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-0958b3b629c68bd2.js +0 -1
  1584. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-0958b3b629c68bd2.js +0 -1
  1585. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-0958b3b629c68bd2.js +0 -1
  1586. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-0958b3b629c68bd2.js +0 -1
  1587. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-0958b3b629c68bd2.js +0 -1
  1588. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-0958b3b629c68bd2.js +0 -1
  1589. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-0958b3b629c68bd2.js +0 -1
  1590. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-0958b3b629c68bd2.js +0 -1
  1591. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-0958b3b629c68bd2.js +0 -1
  1592. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-0958b3b629c68bd2.js +0 -1
  1593. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-0958b3b629c68bd2.js +0 -1
  1594. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-0958b3b629c68bd2.js +0 -1
  1595. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-0958b3b629c68bd2.js +0 -1
  1596. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-0958b3b629c68bd2.js +0 -1
  1597. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-0958b3b629c68bd2.js +0 -1
  1598. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-0958b3b629c68bd2.js +0 -1
  1599. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-0958b3b629c68bd2.js +0 -1
  1600. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-0958b3b629c68bd2.js +0 -1
  1601. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-0958b3b629c68bd2.js +0 -1
  1602. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-0958b3b629c68bd2.js +0 -1
  1603. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-0958b3b629c68bd2.js +0 -1
  1604. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-0958b3b629c68bd2.js +0 -1
  1605. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-0958b3b629c68bd2.js +0 -1
  1606. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-0958b3b629c68bd2.js +0 -1
  1607. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-0958b3b629c68bd2.js +0 -1
  1608. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-0958b3b629c68bd2.js +0 -1
  1609. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-0958b3b629c68bd2.js +0 -1
  1610. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-0958b3b629c68bd2.js +0 -1
  1611. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-0958b3b629c68bd2.js +0 -1
  1612. package/cli/app/.next-cli-build/static/chunks/app/callback/page-8cb1045c2ddcdffa.js +0 -1
  1613. package/cli/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-1ea7bc18570814a7.js +0 -1
  1614. package/cli/app/.next-cli-build/static/chunks/app/landing/page-a5bcf36367dce737.js +0 -1
  1615. package/cli/app/.next-cli-build/static/chunks/app/layout-2aaca42ecdf3a056.js +0 -1
  1616. package/cli/app/.next-cli-build/static/chunks/app/login/page-b5822dd005b1f5c2.js +0 -1
  1617. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-0958b3b629c68bd2.js +0 -1
  1618. package/cli/app/.next-cli-build/static/chunks/app/page-0958b3b629c68bd2.js +0 -1
  1619. package/cli/app/.next-cli-build/static/chunks/framework-711ef29bc66f648c.js +0 -1
  1620. package/cli/app/.next-cli-build/static/chunks/main-80834ff47b003167.js +0 -5
  1621. package/cli/app/.next-cli-build/static/chunks/main-app-5a6578c0256da676.js +0 -1
  1622. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-0958b3b629c68bd2.js +0 -1
  1623. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-0958b3b629c68bd2.js +0 -1
  1624. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/global-error-06f8cd887d9b83e5.js +0 -1
  1625. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-0958b3b629c68bd2.js +0 -1
  1626. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-0958b3b629c68bd2.js +0 -1
  1627. package/cli/app/.next-cli-build/static/css/479786e77e87b74c.css +0 -1
  1628. package/cli/app/.openclaude/worktrees/agent-a54d8692/.next/standalone/src/lib/terminal/ptyBridge.py +0 -163
  1629. package/cli/app/.openclaude/worktrees/agent-a54d8692/src/lib/terminal/ptyBridge.py +0 -163
  1630. package/cli/app/.openclaude/worktrees/agent-a63139fb/src/lib/terminal/ptyBridge.py +0 -163
  1631. package/cli/app/.openclaude/worktrees/agent-a785ba58/src/lib/terminal/ptyBridge.py +0 -163
  1632. package/cli/app/.openclaude/worktrees/agent-aa0a3950/src/lib/terminal/ptyBridge.py +0 -163
  1633. package/cli/app/.openclaude/worktrees/agent-aeb70241/src/lib/terminal/ptyBridge.py +0 -163
  1634. /package/cli/app/.next-cli-build/static/{edIIBLHejtiMImOMvHpmV → lvz2g9hCk2S7IZ5nJaFRw}/_buildManifest.js +0 -0
  1635. /package/cli/app/.next-cli-build/static/{edIIBLHejtiMImOMvHpmV → lvz2g9hCk2S7IZ5nJaFRw}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8460],{31703:(e,t,s)=>{Promise.resolve().then(s.bind(s,52154))},52154:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>v});var a=s(95155),r=s(12115),l=s(14051),i=s.n(l),n=s(35497),o=s(57250),d=s(90620),c=s(52679),p=s(98500),m=s.n(p),x=s(65921),u=s(38003);let h={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 f(){let[e,t]=(0,r.useState)(null),[s,l]=(0,r.useState)(!0),[i,o]=(0,r.useState)(!1),[d,c]=(0,r.useState)(null),p=(0,r.useRef)(null),m=(0,x.i)(),u=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/models/availability");if(e.ok){let s=await e.json();t(s)}}catch{}finally{l(!1)}},[]);(0,r.useEffect)(()=>{u();let e=setInterval(u,3e4);return()=>clearInterval(e)},[u]),(0,r.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 f=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 u()):m.error("Failed to clear cooldown")}catch{m.error("Failed to clear cooldown")}finally{c(null)}};if(s)return null;let g=e?.models||[],b=0===(e?.unavailableCount||g.filter(e=>"available"!==e.status).length),v={};return g.forEach(e=>{if("available"===e.status)return;let t=e.provider||"unknown";v[t]||(v[t]=[]),v[t].push(e)}),(0,a.jsx)("div",{className:"relative",ref:p,children:i&&(0,a.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,a.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border bg-bg",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",style:{color:b?"#22c55e":"#f59e0b"},children:b?"verified":"warning"}),(0,a.jsx)("span",{className:"text-sm font-semibold text-text-main",children:"Model Status"})]}),(0,a.jsx)("button",{onClick:u,className:"p-1 rounded-lg hover:bg-surface text-text-muted hover:text-text-main transition-colors",title:"Refresh",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"refresh"})})]}),(0,a.jsx)("div",{className:"px-4 py-3 max-h-60 overflow-y-auto",children:b?(0,a.jsx)("p",{className:"text-sm text-text-muted text-center py-2",children:"All models are responding normally."}):(0,a.jsx)("div",{className:"flex flex-col gap-2.5",children:Object.entries(v).map(([e,t])=>(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs font-semibold text-text-main mb-1.5 capitalize",children:e}),(0,a.jsx)("div",{className:"flex flex-col gap-1",children:t.map(e=>{let t=h[e.status]||h.unknown,s=d===`${e.provider}:${e.model}`;return(0,a.jsxs)("div",{className:"flex items-center justify-between px-2.5 py-1.5 rounded-lg bg-surface/30",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] shrink-0",style:{color:t.color},children:t.icon}),(0,a.jsx)("span",{className:"font-mono text-xs text-text-main truncate",children:e.model})]}),"cooldown"===e.status&&(0,a.jsx)(n.$n,{size:"sm",variant:"ghost",onClick:()=>f(e.provider,e.model),disabled:s,className:"text-[10px] px-1.5! py-0.5! ml-2",children:s?"...":"Clear"})]},`${e.provider}-${e.model}`)})})]},e))})})]})})}function g(e,t,s){let r=[];if(e>0&&r.push((0,a.jsxs)(n.Ex,{variant:"success",size:"sm",dot:!0,children:[e," Connected"]},"connected")),t>0){let e=s?`${t} Error (${s})`:`${t} Error`;r.push((0,a.jsx)(n.Ex,{variant:"error",size:"sm",dot:!0,children:e},"error"))}return 0===r.length?(0,a.jsx)("span",{className:"text-text-muted",children:"No connections"}):r}async function b(e){let t=new AbortController,s=window.setTimeout(()=>t.abort(),8e3);try{let s=await fetch(e,{cache:"no-store",signal:t.signal}),a=null;try{a=await s.json()}catch{a=null}return{response:s,data:a}}finally{window.clearTimeout(s)}}function v(){let e,t,[s,l]=(0,r.useState)([]),[i,o]=(0,r.useState)([]),[p,m]=(0,r.useState)(!0),[h,g]=(0,r.useState)(""),[v,k]=(0,r.useState)(1),[T,A]=(0,r.useState)(20),[I,S]=(0,r.useState)(!1),[E,U]=(0,r.useState)(!1),[$,O]=(0,r.useState)(null),[R,P]=(0,r.useState)(null),_=(0,x.i)(),z=(0,u.C)(e=>e.query),q=(0,u.C)(e=>e.register),M=(0,u.C)(e=>e.unregister);(0,r.useEffect)(()=>(q("Search providers..."),()=>M()),[q,M]),(0,r.useEffect)(()=>{k(1)},[z,T]);let D=e=>!z.trim()||e.toLowerCase().includes(z.trim().toLowerCase());(0,r.useEffect)(()=>{(async()=>{try{g("");let[e,t]=await Promise.allSettled([b("/api/providers"),b("/api/provider-nodes")]);"fulfilled"===e.status&&e.value.response.ok?l(e.value.data?.connections||[]):(l([]),g("Provider connection stats could not be loaded. The provider catalog is still available.")),"fulfilled"===t.status&&t.value.response.ok?o(t.value.data?.nodes||[]):(o([]),g(e=>e||"Custom provider data could not be loaded. The provider catalog is still available."))}catch(e){console.log("Error fetching data:",e),g("Provider data could not be loaded. The provider catalog is still available.")}finally{m(!1)}})()},[]);let F=(0,r.useMemo)(()=>{let e=new Map;for(let t of s){let s=t.provider||t.id;e.has(s)||e.set(s,[]),e.get(s).push(t)}return e},[s]),K=s.length,L=(0,r.useMemo)(()=>s.filter(e=>!1!==e.isActive).length,[s]),J=(e,t)=>{let s=Array.isArray(t)?t:[t],a=(F.get(e)||[]).filter(e=>s.includes(e.authType)),r=a.filter(e=>{let t,s=(t=Object.entries(e).some(([e,t])=>e.startsWith("modelLock_")&&t&&new Date(t).getTime()>Date.now()),"unavailable"!==e.testStatus||t?e.testStatus:"active");return"error"===s||"expired"===s||"unavailable"===s}),l=a.length>0?a.length:0,i=a.length>0?0:r.length,n=a.length,o=n>0&&a.every(e=>!1===e.isActive),d=r.sort((e,t)=>new Date(t.lastErrorAt||0)-new Date(e.lastErrorAt||0))[0];return{connected:l,error:i,total:n,errorCode:d?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 s=Number(e.errorCode);if(Number.isFinite(s)&&s>=400)return String(s);let a=function(e){if(!e)return null;let t=e.match(/\b([45]\d{2})\b/);return t?t[1]:"ERR"}(e.lastError);if("401"===a||"403"===a)return"AUTH";if(a&&"ERR"!==a)return a;let r=(e.lastError||"").toLowerCase();return r.includes("runtime")||r.includes("not runnable")||r.includes("not installed")?"RUNTIME":r.includes("invalid api key")||r.includes("token invalid")||r.includes("revoked")||r.includes("unauthorized")?"AUTH":"ERR"}(d):null,errorTime:d?.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 s=Math.floor(t/60);if(s<24)return`${s}h ago`;let a=Math.floor(s/24);return`${a}d ago`}(d.lastErrorAt):null,allDisabled:o}},W=async(e,t,a)=>{let r=s.filter(s=>s.provider===e&&s.authType===t);l(s=>s.map(s=>s.provider===e&&s.authType===t?{...s,isActive:a}:s)),await Promise.allSettled(r.map(e=>fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:a})})))},H=async(e,t=null)=>{if(!$){O("provider"===e?t:e),P(null);try{let s=await fetch("/api/providers/test-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:e,providerId:t})}),a=await s.json();if(P(a),a.summary){let{passed:e,failed:t,total:s}=a.summary;0===t?_.success(`All ${s} tests passed`):_.warning(`${e}/${s} passed, ${t} failed`)}}catch(e){P({error:"Test request failed"}),_.error("Provider test failed")}finally{O(null)}}},B=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=>D(e.name)),Q=i.filter(e=>"anthropic-compatible"===e.type).map(e=>({id:e.id,name:e.name||"Anthropic Compatible",color:"#D97757",textIcon:"AC"})).filter(e=>D(e.name)),V=Object.entries(d.zN).filter(([,e])=>!e.hidden&&D(e.name)),X=Object.entries(c.IS).filter(([,e])=>!e.hidden&&D(e.name)),Z=Object.entries(c.nJ).filter(([,e])=>!e.hidden&&D(e.name)),G=(e=Object.entries(d.fg).filter(([,e])=>!e.hidden&&(e.serviceKinds??["llm"]).includes("llm")&&D(e.name)),t="apikey",[...e].sort(([e,s],[a,r])=>{let l=J(e,t),i=J(a,t),n=+(l.connected>0),o=+(i.connected>0);return n!==o?o-n:(s.name||"").localeCompare(r.name||"")})),Y=Math.min(v,Math.max(1,Math.ceil(G.length/T))),ee=G.slice((Y-1)*T,Y*T);if(p)return(0,a.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,a.jsx)(n.Qv,{}),(0,a.jsx)(n.Qv,{})]});let et=V.length>0||X.length>0||Z.length>0||G.length>0||B.length>0||Q.length>0;return(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[K>0&&(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-xl border border-border-subtle bg-surface/60 px-4 py-2.5 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary",children:"dns"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{className:"text-text-main",children:K})," connections loaded"," \xb7 ",(0,a.jsx)("strong",{className:"text-text-main",children:L})," active"]}),K>=100&&(0,a.jsx)("span",{className:"text-text-subtle",children:"Tip: open a provider → search/filter connections (paginated)"})]}),h&&(0,a.jsx)("div",{className:"rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-700 dark:border-amber-800 dark:bg-amber-900/20 dark:text-amber-300",children:h}),!et&&(0,a.jsxs)("div",{className:"text-center py-8 border border-dashed border-border rounded-xl",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[32px] text-text-muted mb-2",children:"search_off"}),(0,a.jsx)("p",{className:"text-text-muted text-sm",children:"No providers match your search"})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:["Custom Providers (OpenAI/Anthropic Compatible)"," "]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:w-auto",children:[(0,a.jsx)(n.$n,{size:"sm",icon:"add",onClick:()=>U(!0),className:"w-full sm:w-auto",children:"Add Anthropic Compatible"}),(0,a.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"add",onClick:()=>S(!0),className:"w-full !bg-white !text-black hover:!bg-gray-100 sm:w-auto",children:"Add OpenAI Compatible"})]})]}),0===B.length&&0===Q.length?(0,a.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,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"extension"}),(0,a.jsx)("span",{children:"No custom providers — use buttons above to add OpenAI/Anthropic compatible endpoints"})]}):(0,a.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:[...B,...Q].map(e=>(0,a.jsx)(j,{providerId:e.id,provider:e,stats:J(e.id,"apikey"),authType:"compatible",onToggle:t=>W(e.id,"apikey",t)},e.id))})]}),V.length>0&&(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsx)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:"OAuth Providers"}),(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsx)(f,{}),(0,a.jsxs)("button",{onClick:()=>H("oauth"),disabled:!!$,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"===$?"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:"Test all OAuth connections","aria-label":"Test all OAuth connections",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px]${"oauth"===$?" animate-spin":""}`,children:"play_arrow"}),"oauth"===$?"Testing...":"Test All"]})]})]}),(0,a.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:V.map(([e,t])=>(0,a.jsx)(y,{providerId:e,provider:t,stats:J(e,"oauth"),authType:"oauth",onToggle:t=>W(e,"oauth",t)},e))})]}),(X.length>0||Z.length>0)&&(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsx)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:"Free Tier Providers"}),(0,a.jsxs)("button",{onClick:()=>H("free"),disabled:!!$,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"===$?"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:"Test all Free connections","aria-label":"Test all Free provider connections",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px]${"free"===$?" animate-spin":""}`,children:"play_arrow"}),"free"===$?"Testing...":"Test All"]})]}),(0,a.jsxs)("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 s=Array.isArray(t?.authModes)&&t.authModes.includes("apikey");return(0,a.jsx)(y,{providerId:e,provider:t,stats:J(e,s?["oauth","apikey"]:"oauth"),authType:"free",onToggle:t=>W(e,s?"apikey":"oauth",t)},e)}),Z.map(([e,t])=>(0,a.jsx)(j,{providerId:e,provider:t,stats:J(e,"apikey"),authType:"apikey",onToggle:t=>W(e,"apikey",t)},e))]})]}),G.length>0&&(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:["API Key Providers"," "]}),(0,a.jsxs)("button",{onClick:()=>H("apikey"),disabled:!!$,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"===$?"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:"Test all API Key connections","aria-label":"Test all API Key connections",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px]${"apikey"===$?" animate-spin":""}`,children:"play_arrow"}),"apikey"===$?"Testing...":"Test All"]})]}),(0,a.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,a.jsx)(j,{providerId:e,provider:t,stats:J(e,"apikey"),authType:"apikey",onToggle:t=>W(e,"apikey",t)},e))}),G.length>0&&(0,a.jsx)(n.dK,{currentPage:Y,pageSize:T,totalItems:G.length,onPageChange:k,onPageSizeChange:e=>{A(e),k(1)}})]}),(0,a.jsx)(N,{isOpen:I,onClose:()=>S(!1),onCreated:e=>{o(t=>[...t,e]),S(!1)}}),(0,a.jsx)(w,{isOpen:E,onClose:()=>U(!1),onCreated:e=>{o(t=>[...t,e]),U(!1)}}),R&&(0,a.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,a.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm"}),(0,a.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,a.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,a.jsx)("h3",{className:"font-semibold",children:"Test Results"}),(0,a.jsx)("button",{onClick:()=>P(null),className:"p-1 rounded-lg hover:bg-bg text-text-muted hover:text-text-main transition-colors","aria-label":"Close test results",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-lg",children:"close"})})]}),(0,a.jsx)("div",{className:"p-5",children:(0,a.jsx)(C,{results:R})})]})]})]})}function y({providerId:e,provider:t,stats:s,authType:r,onToggle:l}){let{connected:i,error:d,errorCode:c,errorTime:p,allDisabled:x}=s,u=!!t.noAuth;return(0,a.jsx)(m(),{href:`/dashboard/providers/${e}`,className:"group min-w-0",children:(0,a.jsx)(n.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${x?"opacity-50":""}`,children:(0,a.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,a.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,a.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,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h3",{className:"truncate font-semibold",children:t.name}),(0,a.jsx)("div",{className:"flex min-w-0 items-center gap-1.5 text-xs flex-wrap",children:x?(0,a.jsx)(n.Ex,{variant:"default",size:"sm",children:(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"pause_circle"}),"Disabled"]})}):u?(0,a.jsx)(n.Ex,{variant:"success",size:"sm",dot:!0,children:"Ready"}):(0,a.jsxs)(a.Fragment,{children:[g(i,d,c),p&&(0,a.jsx)("span",{className:"text-text-muted",children:p})]})})]})]}),(0,a.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:s.total>0&&(0,a.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),l(!!x)},children:(0,a.jsx)(n.lM,{size:"sm",checked:!x,onChange:()=>{},title:x?"Enable provider":"Disable provider"})})})]})})})}function j({providerId:e,provider:t,stats:s,authType:r,onToggle:l}){let{connected:i,error:d,errorCode:p,errorTime:x,allDisabled:u}=s,h=e.startsWith(c.JH),f=e.startsWith(c.DI);return(0,a.jsx)(m(),{href:`/dashboard/providers/${e}`,className:"group min-w-0",children:(0,a.jsx)(n.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${u?"opacity-50":""}`,children:(0,a.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,a.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,a.jsx)(o.A,{src:h?"responses"===t.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":f?"/providers/anthropic-m.png":`/providers/${t.id}.png`,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,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h3",{className:"truncate font-semibold",children:t.name}),(0,a.jsx)("div",{className:"flex min-w-0 items-center gap-1.5 text-xs flex-wrap",children:u?(0,a.jsx)(n.Ex,{variant:"default",size:"sm",children:(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"pause_circle"}),"Disabled"]})}):(0,a.jsxs)(a.Fragment,{children:[g(i,d,p),h&&(0,a.jsx)(n.Ex,{variant:"default",size:"sm",children:"responses"===t.apiType?"Responses":"Chat"}),f&&(0,a.jsx)(n.Ex,{variant:"default",size:"sm",children:"Messages"}),x&&(0,a.jsx)("span",{className:"text-text-muted",children:x})]})})]})]}),(0,a.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:s.total>0&&(0,a.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),l(!!u)},children:(0,a.jsx)(n.lM,{size:"sm",checked:!u,onChange:()=>{},title:u?"Enable provider":"Disable provider"})})})]})})})}function N({isOpen:e,onClose:t,onCreated:s}){let[l,i]=(0,r.useState)({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),[o,d]=(0,r.useState)(!1),[c,p]=(0,r.useState)(""),[m,x]=(0,r.useState)(""),[u,h]=(0,r.useState)(!1),[f,g]=(0,r.useState)(null);(0,r.useEffect)(()=>{let e="https://api.openai.com/v1";i(t=>t.baseUrl&&t.baseUrl!==e?t:{...t,baseUrl:e})},[l.apiType]);let b=async()=>{if(l.name.trim()&&l.prefix.trim()&&l.baseUrl.trim()){d(!0);try{let e=await fetch("/api/provider-nodes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:l.name,prefix:l.prefix,apiType:l.apiType,baseUrl:l.baseUrl,type:"openai-compatible"})}),t=await e.json();e.ok&&(s(t.node),i({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),p(""),g(null))}catch(e){console.log("Error creating OpenAI Compatible node:",e)}finally{d(!1)}}},v=async()=>{h(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:l.baseUrl,apiKey:c,type:"openai-compatible",modelId:m.trim()||void 0})}),t=await e.json();g(t)}catch{g({valid:!1,error:"Network error"})}finally{h(!1)}};return(0,a.jsx)(n.aF,{isOpen:e,title:"Add OpenAI Compatible",onClose:t,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)(n.pd,{label:"Name",value:l.name,onChange:e=>i({...l,name:e.target.value}),placeholder:"OpenAI Compatible (Prod)",hint:"Required. A friendly label for this node."}),(0,a.jsx)(n.pd,{label:"Prefix",value:l.prefix,onChange:e=>i({...l,prefix:e.target.value}),placeholder:"oc-prod",hint:"Required. Used as the provider prefix for model IDs."}),(0,a.jsx)(n.l6,{label:"API Type",options:[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses API"}],value:l.apiType,onChange:e=>i({...l,apiType:e.target.value})}),(0,a.jsx)(n.pd,{label:"Base URL",value:l.baseUrl,onChange:e=>i({...l,baseUrl:e.target.value}),placeholder:"https://api.openai.com/v1",hint:"Use the base URL (ending in /v1) for your OpenAI-compatible API."}),(0,a.jsx)(n.pd,{label:"API Key (for Check)",type:"password",value:c,onChange:e=>p(e.target.value)}),(0,a.jsx)(n.pd,{label:"Model ID (optional)",value:m,onChange:e=>x(e.target.value),placeholder:"e.g. gpt-4, claude-3-opus",hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[(0,a.jsx)(n.$n,{onClick:v,disabled:!c||u||!l.baseUrl.trim(),variant:"secondary",className:"w-full sm:w-auto",children:u?"Checking...":"Check"}),(()=>{if(!f)return null;let{valid:e,error:t,method:s}=f;return e?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.Ex,{variant:"success",children:"Valid"}),"chat"===s&&(0,a.jsx)("span",{className:"text-sm text-text-muted",children:"(via inference test)"})]}):(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)(n.Ex,{variant:"error",children:"Invalid"}),t&&(0,a.jsx)("span",{className:"text-sm text-red-500",children:t})]})})()]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,a.jsx)(n.$n,{onClick:b,fullWidth:!0,disabled:!l.name.trim()||!l.prefix.trim()||!l.baseUrl.trim()||o,children:o?"Creating...":"Create"}),(0,a.jsx)(n.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function w({isOpen:e,onClose:t,onCreated:s}){let[l,i]=(0,r.useState)({name:"",prefix:"",baseUrl:"https://api.anthropic.com/v1"}),[o,d]=(0,r.useState)(!1),[c,p]=(0,r.useState)(""),[m,x]=(0,r.useState)(""),[u,h]=(0,r.useState)(!1),[f,g]=(0,r.useState)(null);(0,r.useEffect)(()=>{e&&(g(null),p(""),x(""))},[e]);let b=async()=>{if(l.name.trim()&&l.prefix.trim()&&l.baseUrl.trim()){d(!0);try{let e=await fetch("/api/provider-nodes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:l.name,prefix:l.prefix,baseUrl:l.baseUrl,type:"anthropic-compatible"})}),t=await e.json();e.ok&&(s(t.node),i({name:"",prefix:"",baseUrl:"https://api.anthropic.com/v1"}),p(""),g(null))}catch(e){console.log("Error creating Anthropic Compatible node:",e)}finally{d(!1)}}},v=async()=>{h(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:l.baseUrl,apiKey:c,type:"anthropic-compatible",modelId:m.trim()||void 0})}),t=await e.json();g(t)}catch{g({valid:!1,error:"Network error"})}finally{h(!1)}};return(0,a.jsx)(n.aF,{isOpen:e,title:"Add Anthropic Compatible",onClose:t,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)(n.pd,{label:"Name",value:l.name,onChange:e=>i({...l,name:e.target.value}),placeholder:"Anthropic Compatible (Prod)",hint:"Required. A friendly label for this node."}),(0,a.jsx)(n.pd,{label:"Prefix",value:l.prefix,onChange:e=>i({...l,prefix:e.target.value}),placeholder:"ac-prod",hint:"Required. Used as the provider prefix for model IDs."}),(0,a.jsx)(n.pd,{label:"Base URL",value:l.baseUrl,onChange:e=>i({...l,baseUrl:e.target.value}),placeholder:"https://api.anthropic.com/v1",hint:"Use the base URL (ending in /v1) for your Anthropic-compatible API. The system will append /messages."}),(0,a.jsx)(n.pd,{label:"API Key (for Check)",type:"password",value:c,onChange:e=>p(e.target.value)}),(0,a.jsx)(n.pd,{label:"Model ID (optional)",value:m,onChange:e=>x(e.target.value),placeholder:"e.g. claude-3-opus",hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[(0,a.jsx)(n.$n,{onClick:v,disabled:!c||u||!l.baseUrl.trim(),variant:"secondary",className:"w-full sm:w-auto",children:u?"Checking...":"Check"}),(()=>{if(!f)return null;let{valid:e,error:t,method:s}=f;return e?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.Ex,{variant:"success",children:"Valid"}),"chat"===s&&(0,a.jsx)("span",{className:"text-sm text-text-muted",children:"(via inference test)"})]}):(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)(n.Ex,{variant:"error",children:"Invalid"}),t&&(0,a.jsx)("span",{className:"text-sm text-red-500",children:t})]})})()]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,a.jsx)(n.$n,{onClick:b,fullWidth:!0,disabled:!l.name.trim()||!l.prefix.trim()||!l.baseUrl.trim()||o,children:o?"Creating...":"Create"}),(0,a.jsx)(n.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function C({results:e}){if(e.error&&!e.results)return(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-red-500 text-[32px] mb-2 block",children:"error"}),(0,a.jsx)("p",{className:"text-sm text-red-400",children:e.error})]});let{summary:t,mode:s}=e,r=e.results||[];return(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-3",children:[t&&(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs mb-1 sm:gap-3",children:[(0,a.jsxs)("span",{className:"text-text-muted",children:[{oauth:"OAuth",free:"Free",apikey:"API Key",provider:"Provider",all:"All"}[s]||s," Test"]}),(0,a.jsxs)("span",{className:"px-2 py-0.5 rounded bg-emerald-500/15 text-emerald-400 font-medium",children:[t.passed," passed"]}),t.failed>0&&(0,a.jsxs)("span",{className:"px-2 py-0.5 rounded bg-red-500/15 text-red-400 font-medium",children:[t.failed," failed"]}),(0,a.jsxs)("span",{className:"text-text-muted sm:ml-auto",children:[t.total," tested"]})]}),r.map((e,t)=>(0,a.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,a.jsx)("span",{className:`material-symbols-outlined text-[16px] ${e.valid?"text-emerald-500":"text-red-500"}`,children:e.valid?"check_circle":"error"}),(0,a.jsxs)("div",{className:"min-w-0 flex-[1_1_160px]",children:[(0,a.jsx)("span",{className:"block truncate font-medium sm:inline",children:e.connectionName}),(0,a.jsxs)("span",{className:"block truncate text-text-muted sm:ml-1.5 sm:inline",children:["(",e.provider,")"]})]}),void 0!==e.latencyMs&&(0,a.jsxs)("span",{className:"shrink-0 text-text-muted font-mono tabular-nums",children:[e.latencyMs,"ms"]}),(0,a.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?"OK":e.diagnosis?.type||"ERROR"})]},e.connectionId||t)),0===r.length&&(0,a.jsx)("div",{className:"text-center py-4 text-text-muted text-sm",children:"No active connections found for this group."})]})}y.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},j.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},N.propTypes={isOpen:i().bool.isRequired,onClose:i().func.isRequired,onCreated:i().func.isRequired},w.propTypes={isOpen:i().bool.isRequired,onClose:i().func.isRequired,onCreated:i().func.isRequired},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,[2574,3862,4343,85,5497,8441,3794,7358],()=>e(e.s=31703)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8460],{42579:(e,t,s)=>{Promise.resolve().then(s.bind(s,73849))},73849:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>v});var a=s(94799),r=s(34023),l=s(78525),i=s.n(l),n=s(77783),o=s(94994),d=s(65418),c=s(45303),p=s(68202),m=s.n(p),x=s(68305),u=s(96579);let h={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 f(){let[e,t]=(0,r.useState)(null),[s,l]=(0,r.useState)(!0),[i,o]=(0,r.useState)(!1),[d,c]=(0,r.useState)(null),p=(0,r.useRef)(null),m=(0,x.i)(),u=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/models/availability");if(e.ok){let s=await e.json();t(s)}}catch{}finally{l(!1)}},[]);(0,r.useEffect)(()=>{u();let e=setInterval(u,3e4);return()=>clearInterval(e)},[u]),(0,r.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 f=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 u()):m.error("Failed to clear cooldown")}catch{m.error("Failed to clear cooldown")}finally{c(null)}};if(s)return null;let g=e?.models||[],b=0===(e?.unavailableCount||g.filter(e=>"available"!==e.status).length),v={};return g.forEach(e=>{if("available"===e.status)return;let t=e.provider||"unknown";v[t]||(v[t]=[]),v[t].push(e)}),(0,a.jsx)("div",{className:"relative",ref:p,children:i&&(0,a.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,a.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border bg-bg",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",style:{color:b?"#22c55e":"#f59e0b"},children:b?"verified":"warning"}),(0,a.jsx)("span",{className:"text-sm font-semibold text-text-main",children:"Model Status"})]}),(0,a.jsx)("button",{onClick:u,className:"p-1 rounded-lg hover:bg-surface text-text-muted hover:text-text-main transition-colors",title:"Refresh",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"refresh"})})]}),(0,a.jsx)("div",{className:"px-4 py-3 max-h-60 overflow-y-auto",children:b?(0,a.jsx)("p",{className:"text-sm text-text-muted text-center py-2",children:"All models are responding normally."}):(0,a.jsx)("div",{className:"flex flex-col gap-2.5",children:Object.entries(v).map(([e,t])=>(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs font-semibold text-text-main mb-1.5 capitalize",children:e}),(0,a.jsx)("div",{className:"flex flex-col gap-1",children:t.map(e=>{let t=h[e.status]||h.unknown,s=d===`${e.provider}:${e.model}`;return(0,a.jsxs)("div",{className:"flex items-center justify-between px-2.5 py-1.5 rounded-lg bg-surface/30",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] shrink-0",style:{color:t.color},children:t.icon}),(0,a.jsx)("span",{className:"font-mono text-xs text-text-main truncate",children:e.model})]}),"cooldown"===e.status&&(0,a.jsx)(n.$n,{size:"sm",variant:"ghost",onClick:()=>f(e.provider,e.model),disabled:s,className:"text-[10px] px-1.5! py-0.5! ml-2",children:s?"...":"Clear"})]},`${e.provider}-${e.model}`)})})]},e))})})]})})}function g(e,t,s){let r=[];if(e>0&&r.push((0,a.jsxs)(n.Ex,{variant:"success",size:"sm",dot:!0,children:[e," Connected"]},"connected")),t>0){let e=s?`${t} Error (${s})`:`${t} Error`;r.push((0,a.jsx)(n.Ex,{variant:"error",size:"sm",dot:!0,children:e},"error"))}return 0===r.length?(0,a.jsx)("span",{className:"text-text-muted",children:"No connections"}):r}async function b(e){let t=new AbortController,s=window.setTimeout(()=>t.abort(),8e3);try{let s=await fetch(e,{cache:"no-store",signal:t.signal}),a=null;try{a=await s.json()}catch{a=null}return{response:s,data:a}}finally{window.clearTimeout(s)}}function v(){let e,t,[s,l]=(0,r.useState)([]),[i,o]=(0,r.useState)([]),[p,m]=(0,r.useState)(!0),[h,g]=(0,r.useState)(""),[v,k]=(0,r.useState)(1),[T,A]=(0,r.useState)(20),[I,S]=(0,r.useState)(!1),[E,U]=(0,r.useState)(!1),[$,O]=(0,r.useState)(null),[R,P]=(0,r.useState)(null),_=(0,x.i)(),z=(0,u.C)(e=>e.query),q=(0,u.C)(e=>e.register),M=(0,u.C)(e=>e.unregister);(0,r.useEffect)(()=>(q("Search providers..."),()=>M()),[q,M]),(0,r.useEffect)(()=>{k(1)},[z,T]);let D=e=>!z.trim()||e.toLowerCase().includes(z.trim().toLowerCase());(0,r.useEffect)(()=>{(async()=>{try{g("");let[e,t]=await Promise.allSettled([b("/api/providers"),b("/api/provider-nodes")]);"fulfilled"===e.status&&e.value.response.ok?l(e.value.data?.connections||[]):(l([]),g("Provider connection stats could not be loaded. The provider catalog is still available.")),"fulfilled"===t.status&&t.value.response.ok?o(t.value.data?.nodes||[]):(o([]),g(e=>e||"Custom provider data could not be loaded. The provider catalog is still available."))}catch(e){console.log("Error fetching data:",e),g("Provider data could not be loaded. The provider catalog is still available.")}finally{m(!1)}})()},[]);let F=(0,r.useMemo)(()=>{let e=new Map;for(let t of s){let s=t.provider||t.id;e.has(s)||e.set(s,[]),e.get(s).push(t)}return e},[s]),K=s.length,L=(0,r.useMemo)(()=>s.filter(e=>!1!==e.isActive).length,[s]),J=(e,t)=>{let s=Array.isArray(t)?t:[t],a=(F.get(e)||[]).filter(e=>s.includes(e.authType)),r=a.filter(e=>{let t,s=(t=Object.entries(e).some(([e,t])=>e.startsWith("modelLock_")&&t&&new Date(t).getTime()>Date.now()),"unavailable"!==e.testStatus||t?e.testStatus:"active");return"error"===s||"expired"===s||"unavailable"===s}),l=a.length>0?a.length:0,i=a.length>0?0:r.length,n=a.length,o=n>0&&a.every(e=>!1===e.isActive),d=r.sort((e,t)=>new Date(t.lastErrorAt||0)-new Date(e.lastErrorAt||0))[0];return{connected:l,error:i,total:n,errorCode:d?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 s=Number(e.errorCode);if(Number.isFinite(s)&&s>=400)return String(s);let a=function(e){if(!e)return null;let t=e.match(/\b([45]\d{2})\b/);return t?t[1]:"ERR"}(e.lastError);if("401"===a||"403"===a)return"AUTH";if(a&&"ERR"!==a)return a;let r=(e.lastError||"").toLowerCase();return r.includes("runtime")||r.includes("not runnable")||r.includes("not installed")?"RUNTIME":r.includes("invalid api key")||r.includes("token invalid")||r.includes("revoked")||r.includes("unauthorized")?"AUTH":"ERR"}(d):null,errorTime:d?.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 s=Math.floor(t/60);if(s<24)return`${s}h ago`;let a=Math.floor(s/24);return`${a}d ago`}(d.lastErrorAt):null,allDisabled:o}},W=async(e,t,a)=>{let r=s.filter(s=>s.provider===e&&s.authType===t);l(s=>s.map(s=>s.provider===e&&s.authType===t?{...s,isActive:a}:s)),await Promise.allSettled(r.map(e=>fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:a})})))},H=async(e,t=null)=>{if(!$){O("provider"===e?t:e),P(null);try{let s=await fetch("/api/providers/test-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:e,providerId:t})}),a=await s.json();if(P(a),a.summary){let{passed:e,failed:t,total:s}=a.summary;0===t?_.success(`All ${s} tests passed`):_.warning(`${e}/${s} passed, ${t} failed`)}}catch(e){P({error:"Test request failed"}),_.error("Provider test failed")}finally{O(null)}}},B=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=>D(e.name)),Q=i.filter(e=>"anthropic-compatible"===e.type).map(e=>({id:e.id,name:e.name||"Anthropic Compatible",color:"#D97757",textIcon:"AC"})).filter(e=>D(e.name)),V=Object.entries(d.zN).filter(([,e])=>!e.hidden&&D(e.name)),X=Object.entries(c.IS).filter(([,e])=>!e.hidden&&D(e.name)),Z=Object.entries(c.nJ).filter(([,e])=>!e.hidden&&D(e.name)),G=(e=Object.entries(d.fg).filter(([,e])=>!e.hidden&&(e.serviceKinds??["llm"]).includes("llm")&&D(e.name)),t="apikey",[...e].sort(([e,s],[a,r])=>{let l=J(e,t),i=J(a,t),n=+(l.connected>0),o=+(i.connected>0);return n!==o?o-n:(s.name||"").localeCompare(r.name||"")})),Y=Math.min(v,Math.max(1,Math.ceil(G.length/T))),ee=G.slice((Y-1)*T,Y*T);if(p)return(0,a.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,a.jsx)(n.Qv,{}),(0,a.jsx)(n.Qv,{})]});let et=V.length>0||X.length>0||Z.length>0||G.length>0||B.length>0||Q.length>0;return(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[K>0&&(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-xl border border-border-subtle bg-surface/60 px-4 py-2.5 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary",children:"dns"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{className:"text-text-main",children:K})," connections loaded"," \xb7 ",(0,a.jsx)("strong",{className:"text-text-main",children:L})," active"]}),K>=100&&(0,a.jsx)("span",{className:"text-text-subtle",children:"Tip: open a provider → search/filter connections (paginated)"})]}),h&&(0,a.jsx)("div",{className:"rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-700 dark:border-amber-800 dark:bg-amber-900/20 dark:text-amber-300",children:h}),!et&&(0,a.jsxs)("div",{className:"text-center py-8 border border-dashed border-border rounded-xl",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[32px] text-text-muted mb-2",children:"search_off"}),(0,a.jsx)("p",{className:"text-text-muted text-sm",children:"No providers match your search"})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:["Custom Providers (OpenAI/Anthropic Compatible)"," "]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:w-auto",children:[(0,a.jsx)(n.$n,{size:"sm",icon:"add",onClick:()=>U(!0),className:"w-full sm:w-auto",children:"Add Anthropic Compatible"}),(0,a.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"add",onClick:()=>S(!0),className:"w-full !bg-white !text-black hover:!bg-gray-100 sm:w-auto",children:"Add OpenAI Compatible"})]})]}),0===B.length&&0===Q.length?(0,a.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,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"extension"}),(0,a.jsx)("span",{children:"No custom providers — use buttons above to add OpenAI/Anthropic compatible endpoints"})]}):(0,a.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:[...B,...Q].map(e=>(0,a.jsx)(j,{providerId:e.id,provider:e,stats:J(e.id,"apikey"),authType:"compatible",onToggle:t=>W(e.id,"apikey",t)},e.id))})]}),V.length>0&&(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsx)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:"OAuth Providers"}),(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,a.jsx)(f,{}),(0,a.jsxs)("button",{onClick:()=>H("oauth"),disabled:!!$,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"===$?"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:"Test all OAuth connections","aria-label":"Test all OAuth connections",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px]${"oauth"===$?" animate-spin":""}`,children:"play_arrow"}),"oauth"===$?"Testing...":"Test All"]})]})]}),(0,a.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:V.map(([e,t])=>(0,a.jsx)(y,{providerId:e,provider:t,stats:J(e,"oauth"),authType:"oauth",onToggle:t=>W(e,"oauth",t)},e))})]}),(X.length>0||Z.length>0)&&(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsx)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:"Free Tier Providers"}),(0,a.jsxs)("button",{onClick:()=>H("free"),disabled:!!$,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"===$?"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:"Test all Free connections","aria-label":"Test all Free provider connections",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px]${"free"===$?" animate-spin":""}`,children:"play_arrow"}),"free"===$?"Testing...":"Test All"]})]}),(0,a.jsxs)("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 s=Array.isArray(t?.authModes)&&t.authModes.includes("apikey");return(0,a.jsx)(y,{providerId:e,provider:t,stats:J(e,s?["oauth","apikey"]:"oauth"),authType:"free",onToggle:t=>W(e,s?"apikey":"oauth",t)},e)}),Z.map(([e,t])=>(0,a.jsx)(j,{providerId:e,provider:t,stats:J(e,"apikey"),authType:"apikey",onToggle:t=>W(e,"apikey",t)},e))]})]}),G.length>0&&(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("h2",{className:"text-lg sm:text-xl font-semibold flex items-center gap-2 leading-tight",children:["API Key Providers"," "]}),(0,a.jsxs)("button",{onClick:()=>H("apikey"),disabled:!!$,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"===$?"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:"Test all API Key connections","aria-label":"Test all API Key connections",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px]${"apikey"===$?" animate-spin":""}`,children:"play_arrow"}),"apikey"===$?"Testing...":"Test All"]})]}),(0,a.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,a.jsx)(j,{providerId:e,provider:t,stats:J(e,"apikey"),authType:"apikey",onToggle:t=>W(e,"apikey",t)},e))}),G.length>0&&(0,a.jsx)(n.dK,{currentPage:Y,pageSize:T,totalItems:G.length,onPageChange:k,onPageSizeChange:e=>{A(e),k(1)}})]}),(0,a.jsx)(N,{isOpen:I,onClose:()=>S(!1),onCreated:e=>{o(t=>[...t,e]),S(!1)}}),(0,a.jsx)(w,{isOpen:E,onClose:()=>U(!1),onCreated:e=>{o(t=>[...t,e]),U(!1)}}),R&&(0,a.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,a.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm"}),(0,a.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,a.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,a.jsx)("h3",{className:"font-semibold",children:"Test Results"}),(0,a.jsx)("button",{onClick:()=>P(null),className:"p-1 rounded-lg hover:bg-bg text-text-muted hover:text-text-main transition-colors","aria-label":"Close test results",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-lg",children:"close"})})]}),(0,a.jsx)("div",{className:"p-5",children:(0,a.jsx)(C,{results:R})})]})]})]})}function y({providerId:e,provider:t,stats:s,authType:r,onToggle:l}){let{connected:i,error:d,errorCode:c,errorTime:p,allDisabled:x}=s,u=!!t.noAuth;return(0,a.jsx)(m(),{href:`/dashboard/providers/${e}`,className:"group min-w-0",children:(0,a.jsx)(n.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${x?"opacity-50":""}`,children:(0,a.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,a.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,a.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,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h3",{className:"truncate font-semibold",children:t.name}),(0,a.jsx)("div",{className:"flex min-w-0 items-center gap-1.5 text-xs flex-wrap",children:x?(0,a.jsx)(n.Ex,{variant:"default",size:"sm",children:(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"pause_circle"}),"Disabled"]})}):u?(0,a.jsx)(n.Ex,{variant:"success",size:"sm",dot:!0,children:"Ready"}):(0,a.jsxs)(a.Fragment,{children:[g(i,d,c),p&&(0,a.jsx)("span",{className:"text-text-muted",children:p})]})})]})]}),(0,a.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:s.total>0&&(0,a.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),l(!!x)},children:(0,a.jsx)(n.lM,{size:"sm",checked:!x,onChange:()=>{},title:x?"Enable provider":"Disable provider"})})})]})})})}function j({providerId:e,provider:t,stats:s,authType:r,onToggle:l}){let{connected:i,error:d,errorCode:p,errorTime:x,allDisabled:u}=s,h=e.startsWith(c.JH),f=e.startsWith(c.DI);return(0,a.jsx)(m(),{href:`/dashboard/providers/${e}`,className:"group min-w-0",children:(0,a.jsx)(n.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${u?"opacity-50":""}`,children:(0,a.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,a.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,a.jsx)(o.A,{src:h?"responses"===t.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":f?"/providers/anthropic-m.png":`/providers/${t.id}.png`,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,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h3",{className:"truncate font-semibold",children:t.name}),(0,a.jsx)("div",{className:"flex min-w-0 items-center gap-1.5 text-xs flex-wrap",children:u?(0,a.jsx)(n.Ex,{variant:"default",size:"sm",children:(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"pause_circle"}),"Disabled"]})}):(0,a.jsxs)(a.Fragment,{children:[g(i,d,p),h&&(0,a.jsx)(n.Ex,{variant:"default",size:"sm",children:"responses"===t.apiType?"Responses":"Chat"}),f&&(0,a.jsx)(n.Ex,{variant:"default",size:"sm",children:"Messages"}),x&&(0,a.jsx)("span",{className:"text-text-muted",children:x})]})})]})]}),(0,a.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:s.total>0&&(0,a.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),l(!!u)},children:(0,a.jsx)(n.lM,{size:"sm",checked:!u,onChange:()=>{},title:u?"Enable provider":"Disable provider"})})})]})})})}function N({isOpen:e,onClose:t,onCreated:s}){let[l,i]=(0,r.useState)({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),[o,d]=(0,r.useState)(!1),[c,p]=(0,r.useState)(""),[m,x]=(0,r.useState)(""),[u,h]=(0,r.useState)(!1),[f,g]=(0,r.useState)(null);(0,r.useEffect)(()=>{let e="https://api.openai.com/v1";i(t=>t.baseUrl&&t.baseUrl!==e?t:{...t,baseUrl:e})},[l.apiType]);let b=async()=>{if(l.name.trim()&&l.prefix.trim()&&l.baseUrl.trim()){d(!0);try{let e=await fetch("/api/provider-nodes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:l.name,prefix:l.prefix,apiType:l.apiType,baseUrl:l.baseUrl,type:"openai-compatible"})}),t=await e.json();e.ok&&(s(t.node),i({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),p(""),g(null))}catch(e){console.log("Error creating OpenAI Compatible node:",e)}finally{d(!1)}}},v=async()=>{h(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:l.baseUrl,apiKey:c,type:"openai-compatible",modelId:m.trim()||void 0})}),t=await e.json();g(t)}catch{g({valid:!1,error:"Network error"})}finally{h(!1)}};return(0,a.jsx)(n.aF,{isOpen:e,title:"Add OpenAI Compatible",onClose:t,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)(n.pd,{label:"Name",value:l.name,onChange:e=>i({...l,name:e.target.value}),placeholder:"OpenAI Compatible (Prod)",hint:"Required. A friendly label for this node."}),(0,a.jsx)(n.pd,{label:"Prefix",value:l.prefix,onChange:e=>i({...l,prefix:e.target.value}),placeholder:"oc-prod",hint:"Required. Used as the provider prefix for model IDs."}),(0,a.jsx)(n.l6,{label:"API Type",options:[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses API"}],value:l.apiType,onChange:e=>i({...l,apiType:e.target.value})}),(0,a.jsx)(n.pd,{label:"Base URL",value:l.baseUrl,onChange:e=>i({...l,baseUrl:e.target.value}),placeholder:"https://api.openai.com/v1",hint:"Use the base URL (ending in /v1) for your OpenAI-compatible API."}),(0,a.jsx)(n.pd,{label:"API Key (for Check)",type:"password",value:c,onChange:e=>p(e.target.value)}),(0,a.jsx)(n.pd,{label:"Model ID (optional)",value:m,onChange:e=>x(e.target.value),placeholder:"e.g. gpt-4, claude-3-opus",hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[(0,a.jsx)(n.$n,{onClick:v,disabled:!c||u||!l.baseUrl.trim(),variant:"secondary",className:"w-full sm:w-auto",children:u?"Checking...":"Check"}),(()=>{if(!f)return null;let{valid:e,error:t,method:s}=f;return e?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.Ex,{variant:"success",children:"Valid"}),"chat"===s&&(0,a.jsx)("span",{className:"text-sm text-text-muted",children:"(via inference test)"})]}):(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)(n.Ex,{variant:"error",children:"Invalid"}),t&&(0,a.jsx)("span",{className:"text-sm text-red-500",children:t})]})})()]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,a.jsx)(n.$n,{onClick:b,fullWidth:!0,disabled:!l.name.trim()||!l.prefix.trim()||!l.baseUrl.trim()||o,children:o?"Creating...":"Create"}),(0,a.jsx)(n.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function w({isOpen:e,onClose:t,onCreated:s}){let[l,i]=(0,r.useState)({name:"",prefix:"",baseUrl:"https://api.anthropic.com/v1"}),[o,d]=(0,r.useState)(!1),[c,p]=(0,r.useState)(""),[m,x]=(0,r.useState)(""),[u,h]=(0,r.useState)(!1),[f,g]=(0,r.useState)(null);(0,r.useEffect)(()=>{e&&(g(null),p(""),x(""))},[e]);let b=async()=>{if(l.name.trim()&&l.prefix.trim()&&l.baseUrl.trim()){d(!0);try{let e=await fetch("/api/provider-nodes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:l.name,prefix:l.prefix,baseUrl:l.baseUrl,type:"anthropic-compatible"})}),t=await e.json();e.ok&&(s(t.node),i({name:"",prefix:"",baseUrl:"https://api.anthropic.com/v1"}),p(""),g(null))}catch(e){console.log("Error creating Anthropic Compatible node:",e)}finally{d(!1)}}},v=async()=>{h(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:l.baseUrl,apiKey:c,type:"anthropic-compatible",modelId:m.trim()||void 0})}),t=await e.json();g(t)}catch{g({valid:!1,error:"Network error"})}finally{h(!1)}};return(0,a.jsx)(n.aF,{isOpen:e,title:"Add Anthropic Compatible",onClose:t,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)(n.pd,{label:"Name",value:l.name,onChange:e=>i({...l,name:e.target.value}),placeholder:"Anthropic Compatible (Prod)",hint:"Required. A friendly label for this node."}),(0,a.jsx)(n.pd,{label:"Prefix",value:l.prefix,onChange:e=>i({...l,prefix:e.target.value}),placeholder:"ac-prod",hint:"Required. Used as the provider prefix for model IDs."}),(0,a.jsx)(n.pd,{label:"Base URL",value:l.baseUrl,onChange:e=>i({...l,baseUrl:e.target.value}),placeholder:"https://api.anthropic.com/v1",hint:"Use the base URL (ending in /v1) for your Anthropic-compatible API. The system will append /messages."}),(0,a.jsx)(n.pd,{label:"API Key (for Check)",type:"password",value:c,onChange:e=>p(e.target.value)}),(0,a.jsx)(n.pd,{label:"Model ID (optional)",value:m,onChange:e=>x(e.target.value),placeholder:"e.g. claude-3-opus",hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[(0,a.jsx)(n.$n,{onClick:v,disabled:!c||u||!l.baseUrl.trim(),variant:"secondary",className:"w-full sm:w-auto",children:u?"Checking...":"Check"}),(()=>{if(!f)return null;let{valid:e,error:t,method:s}=f;return e?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.Ex,{variant:"success",children:"Valid"}),"chat"===s&&(0,a.jsx)("span",{className:"text-sm text-text-muted",children:"(via inference test)"})]}):(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)(n.Ex,{variant:"error",children:"Invalid"}),t&&(0,a.jsx)("span",{className:"text-sm text-red-500",children:t})]})})()]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,a.jsx)(n.$n,{onClick:b,fullWidth:!0,disabled:!l.name.trim()||!l.prefix.trim()||!l.baseUrl.trim()||o,children:o?"Creating...":"Create"}),(0,a.jsx)(n.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function C({results:e}){if(e.error&&!e.results)return(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-red-500 text-[32px] mb-2 block",children:"error"}),(0,a.jsx)("p",{className:"text-sm text-red-400",children:e.error})]});let{summary:t,mode:s}=e,r=e.results||[];return(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-3",children:[t&&(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs mb-1 sm:gap-3",children:[(0,a.jsxs)("span",{className:"text-text-muted",children:[{oauth:"OAuth",free:"Free",apikey:"API Key",provider:"Provider",all:"All"}[s]||s," Test"]}),(0,a.jsxs)("span",{className:"px-2 py-0.5 rounded bg-emerald-500/15 text-emerald-400 font-medium",children:[t.passed," passed"]}),t.failed>0&&(0,a.jsxs)("span",{className:"px-2 py-0.5 rounded bg-red-500/15 text-red-400 font-medium",children:[t.failed," failed"]}),(0,a.jsxs)("span",{className:"text-text-muted sm:ml-auto",children:[t.total," tested"]})]}),r.map((e,t)=>(0,a.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,a.jsx)("span",{className:`material-symbols-outlined text-[16px] ${e.valid?"text-emerald-500":"text-red-500"}`,children:e.valid?"check_circle":"error"}),(0,a.jsxs)("div",{className:"min-w-0 flex-[1_1_160px]",children:[(0,a.jsx)("span",{className:"block truncate font-medium sm:inline",children:e.connectionName}),(0,a.jsxs)("span",{className:"block truncate text-text-muted sm:ml-1.5 sm:inline",children:["(",e.provider,")"]})]}),void 0!==e.latencyMs&&(0,a.jsxs)("span",{className:"shrink-0 text-text-muted font-mono tabular-nums",children:[e.latencyMs,"ms"]}),(0,a.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?"OK":e.diagnosis?.type||"ERROR"})]},e.connectionId||t)),0===r.length&&(0,a.jsx)("div",{className:"text-center py-4 text-text-muted text-sm",children:"No active connections found for this group."})]})}y.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},j.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},N.propTypes={isOpen:i().bool.isRequired,onClose:i().func.isRequired,onCreated:i().func.isRequired},w.propTypes={isOpen:i().bool.isRequired,onClose:i().func.isRequired,onCreated:i().func.isRequired},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,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=42579)),_N_E=e.O()}]);
@@ -1,4 +1,4 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6812],{30275:(e,t,l)=>{Promise.resolve().then(l.bind(l,57076))},57076:(e,t,l)=>{"use strict";l.r(t),l.d(t,{default:()=>n});var r=l(95155),s=l(12115),a=l(35497),o=l(65921);function i(e={}){return{name:e.name||"",proxyUrl:e.proxyUrl||"",noProxy:e.noProxy||"",isActive:!1!==e.isActive,strictProxy:!0===e.strictProxy}}function n(){let[e,t]=(0,s.useState)([]),[l,n]=(0,s.useState)(!0),[d,c]=(0,s.useState)(!1),[x,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(!1),[u,y]=(0,s.useState)(!1),[g,f]=(0,s.useState)(!1),[j,b]=(0,s.useState)(!1),[v,k]=(0,s.useState)(null),[N,w]=(0,s.useState)(i()),[C,P]=(0,s.useState)(""),[$,D]=(0,s.useState)({vercelToken:"",projectName:"vercel-relay"}),[S,T]=(0,s.useState)({accountId:"",apiToken:"",projectName:"cloudflare-relay"}),[A,E]=(0,s.useState)({denoToken:"",orgDomain:"",projectName:""}),[I,U]=(0,s.useState)(!1),[O,z]=(0,s.useState)(!1),[F,W]=(0,s.useState)(!1),[R,_]=(0,s.useState)(null),[L,M]=(0,s.useState)([]),[q,V]=(0,s.useState)(!1),[J,B]=(0,s.useState)({current:0,total:0}),[G,H]=(0,s.useState)(!1),[Y,K]=(0,s.useState)(null),[Q,Z]=(0,s.useState)(1),[X,ee]=(0,s.useState)(20),et=(0,s.useRef)(null),el=(0,o.i)();(0,s.useEffect)(()=>{let e=e=>{et.current&&!et.current.contains(e.target)&&b(!1)};return j&&document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[j]);let er=(0,s.useCallback)(async()=>{try{let e=await fetch("/api/proxy-pools?includeUsage=true",{cache:"no-store"}),l=await e.json();e.ok&&t(l.proxyPools||[])}catch(e){console.log("Error fetching proxy pools:",e)}finally{n(!1)}},[]);(0,s.useEffect)(()=>{er()},[er]);let es=()=>{k(null),w(i())},ea=()=>{es(),c(!0)},eo=()=>{c(!1),es()},ei=async()=>{let e={name:N.name.trim(),proxyUrl:N.proxyUrl.trim(),noProxy:N.noProxy.trim(),isActive:!0===N.isActive,strictProxy:!0===N.strictProxy};if(e.name&&e.proxyUrl){U(!0);try{let t=!!v,l=await fetch(t?`/api/proxy-pools/${v.id}`:"/api/proxy-pools",{method:t?"PUT":"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(l.ok)await er(),eo(),el.success(v?"Proxy pool updated":"Proxy pool created");else{let e=await l.json();el.error(e.error||"Failed to save proxy pool")}}catch(e){console.log("Error saving proxy pool:",e)}finally{U(!1)}}},en=async e=>{K({title:"Delete Proxy Pool",message:`Delete proxy pool "${e.name}"?`,onConfirm:async()=>{K(null);try{let l=await fetch(`/api/proxy-pools/${e.id}`,{method:"DELETE"});if(l.ok){t(t=>t.filter(t=>t.id!==e.id)),el.success("Proxy pool deleted");return}let r=await l.json();409===l.status?el.warning(`Cannot delete: ${r.boundConnectionCount||0} connection(s) are still using this pool.`):el.error(r.error||"Failed to delete proxy pool")}catch(e){console.log("Error deleting proxy pool:",e),el.error("Failed to delete proxy pool")}}})},ed=async e=>{_(e);try{let t=await fetch(`/api/proxy-pools/${e}/test`,{method:"POST"}),l=await t.json();if(!t.ok)return void el.error(l.error||"Failed to test proxy");await er(),el.success(l.ok?"Proxy test passed":"Proxy test failed")}catch(e){console.log("Error testing proxy pool:",e),el.error("Failed to test proxy")}finally{_(null)}},ec=async e=>{let l=!e.isActive;t(t=>t.map(t=>t.id===e.id?{...t,isActive:l}:t));try{(await fetch(`/api/proxy-pools/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:l})})).ok||(t(t=>t.map(t=>t.id===e.id?{...t,isActive:e.isActive}:t)),el.error("Failed to update active state"))}catch(l){console.log("Error toggling active:",l),t(t=>t.map(t=>t.id===e.id?{...t,isActive:e.isActive}:t))}},ex=Math.min(Q,Math.max(1,Math.ceil(e.length/X))),ep=e.slice((ex-1)*X,ex*X),em=ep.length>0&&ep.every(e=>L.includes(e.id)),eh=()=>M([]),eu=async t=>{let l=L.length>0?L:e.map(e=>e.id);if(0!==l.length){H(!0);try{let e=0,r=0;for(let s of l)try{(await fetch(`/api/proxy-pools/${s}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok?e+=1:r+=1}catch{r+=1}await er(),el.success(`${t?"Activated":"Deactivated"} ${e}${r?`, failed ${r}`:""}`)}finally{H(!1)}}},ey=async()=>{0!==L.length&&K({title:"Delete Proxy Pools",message:`Delete ${L.length} proxy pool(s)?`,onConfirm:async()=>{K(null),H(!0);try{let e=0,t=0,l=0;for(let r of L)try{let s=await fetch(`/api/proxy-pools/${r}`,{method:"DELETE"});s.ok?e+=1:409===s.status?t+=1:l+=1}catch{l+=1}await er(),eh(),el.success(`Deleted ${e}${t?`, ${t} bound`:""}${l?`, ${l} failed`:""}`)}finally{H(!1)}}})},eg=async()=>{let t=L.length>0?e.filter(e=>L.includes(e.id)):e;if(0===t.length)return;V(!0),B({current:0,total:t.length});let l=0,r=[],s=0,a=[...t],o=async()=>{for(;a.length>0;){let e=a.shift();if(!e)break;try{let t=await fetch(`/api/proxy-pools/${e.id}/test`,{method:"POST"}),s=await t.json();t.ok&&s.ok?l+=1:r.push(e.id)}catch{r.push(e.id)}finally{B({current:s+=1,total:t.length})}}};await Promise.all(Array.from({length:Math.min(10,t.length)},o)),await er(),V(!1),B({current:0,total:0}),r.length>0?K({title:"Disable Dead Proxies",message:`Alive: ${l}, Dead: ${r.length}.
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6812],{54372:(e,t,l)=>{"use strict";l.r(t),l.d(t,{default:()=>n});var r=l(94799),s=l(34023),a=l(77783),o=l(68305);function i(e={}){return{name:e.name||"",proxyUrl:e.proxyUrl||"",noProxy:e.noProxy||"",isActive:!1!==e.isActive,strictProxy:!0===e.strictProxy}}function n(){let[e,t]=(0,s.useState)([]),[l,n]=(0,s.useState)(!0),[d,c]=(0,s.useState)(!1),[x,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(!1),[u,y]=(0,s.useState)(!1),[g,f]=(0,s.useState)(!1),[j,b]=(0,s.useState)(!1),[v,k]=(0,s.useState)(null),[N,w]=(0,s.useState)(i()),[C,P]=(0,s.useState)(""),[$,D]=(0,s.useState)({vercelToken:"",projectName:"vercel-relay"}),[S,T]=(0,s.useState)({accountId:"",apiToken:"",projectName:"cloudflare-relay"}),[A,E]=(0,s.useState)({denoToken:"",orgDomain:"",projectName:""}),[I,U]=(0,s.useState)(!1),[O,z]=(0,s.useState)(!1),[F,W]=(0,s.useState)(!1),[R,_]=(0,s.useState)(null),[L,M]=(0,s.useState)([]),[q,V]=(0,s.useState)(!1),[J,B]=(0,s.useState)({current:0,total:0}),[G,H]=(0,s.useState)(!1),[Y,K]=(0,s.useState)(null),[Q,Z]=(0,s.useState)(1),[X,ee]=(0,s.useState)(20),et=(0,s.useRef)(null),el=(0,o.i)();(0,s.useEffect)(()=>{let e=e=>{et.current&&!et.current.contains(e.target)&&b(!1)};return j&&document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[j]);let er=(0,s.useCallback)(async()=>{try{let e=await fetch("/api/proxy-pools?includeUsage=true",{cache:"no-store"}),l=await e.json();e.ok&&t(l.proxyPools||[])}catch(e){console.log("Error fetching proxy pools:",e)}finally{n(!1)}},[]);(0,s.useEffect)(()=>{er()},[er]);let es=()=>{k(null),w(i())},ea=()=>{es(),c(!0)},eo=()=>{c(!1),es()},ei=async()=>{let e={name:N.name.trim(),proxyUrl:N.proxyUrl.trim(),noProxy:N.noProxy.trim(),isActive:!0===N.isActive,strictProxy:!0===N.strictProxy};if(e.name&&e.proxyUrl){U(!0);try{let t=!!v,l=await fetch(t?`/api/proxy-pools/${v.id}`:"/api/proxy-pools",{method:t?"PUT":"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(l.ok)await er(),eo(),el.success(v?"Proxy pool updated":"Proxy pool created");else{let e=await l.json();el.error(e.error||"Failed to save proxy pool")}}catch(e){console.log("Error saving proxy pool:",e)}finally{U(!1)}}},en=async e=>{K({title:"Delete Proxy Pool",message:`Delete proxy pool "${e.name}"?`,onConfirm:async()=>{K(null);try{let l=await fetch(`/api/proxy-pools/${e.id}`,{method:"DELETE"});if(l.ok){t(t=>t.filter(t=>t.id!==e.id)),el.success("Proxy pool deleted");return}let r=await l.json();409===l.status?el.warning(`Cannot delete: ${r.boundConnectionCount||0} connection(s) are still using this pool.`):el.error(r.error||"Failed to delete proxy pool")}catch(e){console.log("Error deleting proxy pool:",e),el.error("Failed to delete proxy pool")}}})},ed=async e=>{_(e);try{let t=await fetch(`/api/proxy-pools/${e}/test`,{method:"POST"}),l=await t.json();if(!t.ok)return void el.error(l.error||"Failed to test proxy");await er(),el.success(l.ok?"Proxy test passed":"Proxy test failed")}catch(e){console.log("Error testing proxy pool:",e),el.error("Failed to test proxy")}finally{_(null)}},ec=async e=>{let l=!e.isActive;t(t=>t.map(t=>t.id===e.id?{...t,isActive:l}:t));try{(await fetch(`/api/proxy-pools/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:l})})).ok||(t(t=>t.map(t=>t.id===e.id?{...t,isActive:e.isActive}:t)),el.error("Failed to update active state"))}catch(l){console.log("Error toggling active:",l),t(t=>t.map(t=>t.id===e.id?{...t,isActive:e.isActive}:t))}},ex=Math.min(Q,Math.max(1,Math.ceil(e.length/X))),ep=e.slice((ex-1)*X,ex*X),em=ep.length>0&&ep.every(e=>L.includes(e.id)),eh=()=>M([]),eu=async t=>{let l=L.length>0?L:e.map(e=>e.id);if(0!==l.length){H(!0);try{let e=0,r=0;for(let s of l)try{(await fetch(`/api/proxy-pools/${s}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok?e+=1:r+=1}catch{r+=1}await er(),el.success(`${t?"Activated":"Deactivated"} ${e}${r?`, failed ${r}`:""}`)}finally{H(!1)}}},ey=async()=>{0!==L.length&&K({title:"Delete Proxy Pools",message:`Delete ${L.length} proxy pool(s)?`,onConfirm:async()=>{K(null),H(!0);try{let e=0,t=0,l=0;for(let r of L)try{let s=await fetch(`/api/proxy-pools/${r}`,{method:"DELETE"});s.ok?e+=1:409===s.status?t+=1:l+=1}catch{l+=1}await er(),eh(),el.success(`Deleted ${e}${t?`, ${t} bound`:""}${l?`, ${l} failed`:""}`)}finally{H(!1)}}})},eg=async()=>{let t=L.length>0?e.filter(e=>L.includes(e.id)):e;if(0===t.length)return;V(!0),B({current:0,total:t.length});let l=0,r=[],s=0,a=[...t],o=async()=>{for(;a.length>0;){let e=a.shift();if(!e)break;try{let t=await fetch(`/api/proxy-pools/${e.id}/test`,{method:"POST"}),s=await t.json();t.ok&&s.ok?l+=1:r.push(e.id)}catch{r.push(e.id)}finally{B({current:s+=1,total:t.length})}}};await Promise.all(Array.from({length:Math.min(10,t.length)},o)),await er(),V(!1),B({current:0,total:0}),r.length>0?K({title:"Disable Dead Proxies",message:`Alive: ${l}, Dead: ${r.length}.
2
2
 
3
3
  Disable ${r.length} dead proxies?`,onConfirm:async()=>{K(null),H(!0);try{for(let e of r)try{await fetch(`/api/proxy-pools/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:!1})})}catch{}await er(),el.success(`Disabled ${r.length} dead proxies`)}finally{H(!1)}}}):el.success(`Health check done. Alive: ${l}, Dead: ${r.length}`)};(0,s.useEffect)(()=>{M(t=>t.filter(t=>e.some(e=>e.id===t)))},[e]),(0,s.useEffect)(()=>{Z(t=>Math.min(t,Math.max(1,Math.ceil(e.length/X))))},[e.length,X]);let ef=()=>{O||p(!1)},ej=()=>{F||h(!1)},eb=()=>{F||y(!1)},ev=()=>{F||f(!1)},ek=async()=>{if($.vercelToken.trim()){W(!0);try{let e=await fetch("/api/proxy-pools/vercel-deploy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($)}),t=await e.json();e.ok?(await er(),ej(),el.success(`Deployed: ${t.deployUrl}`)):el.error(t.error||"Deploy failed")}catch(e){console.log("Error deploying Vercel relay:",e),el.error("Deploy failed")}finally{W(!1)}}},eN=async()=>{if(S.accountId.trim()&&S.apiToken.trim()){W(!0);try{let e=await fetch("/api/proxy-pools/cloudflare-deploy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(S)}),t=await e.json();e.ok?(await er(),eb(),el.success(`Deployed: ${t.deployUrl}`)):el.error(t.error||"Deploy failed")}catch(e){console.log("Error deploying Cloudflare relay:",e),el.error("Deploy failed")}finally{W(!1)}}},ew=async()=>{if(A.denoToken.trim()){W(!0);try{let e=await fetch("/api/proxy-pools/deno-deploy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)}),t=await e.json();e.ok?(await er(),ev(),el.success(`Deployed: ${t.deployUrl}`)):el.error(t.error||"Deploy failed")}catch(e){console.log("Error deploying Deno relay:",e),el.error("Deploy failed")}finally{W(!1)}}},eC=async()=>{let t=C.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);if(0===t.length)return void el.warning("Please paste at least one proxy line.");let l=[],r=[];if(t.forEach((e,t)=>{try{let r=(e=>{let t=e.trim();if(!t)return null;if(t.includes("://")){let e=new URL(t),l=e.port?`${e.hostname}:${e.port}`:e.hostname;return{proxyUrl:e.toString(),name:`Imported ${l}`}}let l=t.split(":");if(4===l.length){let[e,t,r,s]=l;if(!e||!t||!r||!s)throw Error("Invalid host:port:user:pass format");return{proxyUrl:new URL(`http://${encodeURIComponent(r)}:${encodeURIComponent(s)}@${e}:${t}`).toString(),name:`Imported ${e}:${t}`}}throw Error("Unsupported format")})(e);r&&l.push({...r,lineNumber:t+1})}catch(e){r.push(`Line ${t+1}: ${e.message}`)}}),r.length>0)return void el.error(`Invalid proxy format:
4
- ${r.join("\n")}`);z(!0);try{let t=new Set(e.map(e=>`${(e.proxyUrl||"").trim()}|||${(e.noProxy||"").trim()}`)),r=0,s=0,a=0;for(let e of l){let l=`${e.proxyUrl}|||`;if(t.has(l)){s+=1;continue}(await fetch("/api/proxy-pools",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e.name,proxyUrl:e.proxyUrl,noProxy:"",isActive:!0})})).ok?(r+=1,t.add(l)):a+=1}await er(),p(!1),el.success(`Batch import completed: Created ${r}, Skipped ${s}, Failed ${a}`)}catch(e){console.log("Error batch importing proxies:",e),el.error("Batch import failed")}finally{z(!1)}},eP=(0,s.useMemo)(()=>e.filter(e=>!0===e.isActive).length,[e]);return l?(0,r.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-4 px-1 sm:gap-6 sm:px-0",children:[(0,r.jsx)(a.Qv,{}),(0,r.jsx)(a.Qv,{})]}):(0,r.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-4 px-1 sm:gap-6 sm:px-0",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,r.jsx)("div",{className:"min-w-0",children:(0,r.jsx)("h1",{className:"text-xl font-semibold sm:text-2xl",children:"Proxy Pools"})}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,r.jsxs)("div",{className:"relative",ref:et,children:[(0,r.jsxs)(a.$n,{size:"sm",variant:"secondary",icon:"rocket_launch",onClick:()=>b(!j),children:["Deploy Relay",(0,r.jsx)("span",{className:"material-symbols-outlined ml-1 text-[18px]",children:j?"expand_less":"expand_more"})]}),j&&(0,r.jsxs)("div",{className:"absolute left-0 top-full z-50 mt-1 w-48 rounded-xl border border-black/10 bg-white p-1 shadow-xl dark:border-white/10 dark:bg-zinc-900 sm:left-auto sm:right-0",children:[(0,r.jsxs)("button",{onClick:()=>{T({accountId:"",apiToken:"",projectName:"cloudflare-relay"}),y(!0),b(!1)},className:"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm text-text-main transition-colors hover:bg-black/5 dark:hover:bg-white/5",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px] text-orange-500",children:"cloud"}),"Cloudflare Relay"]}),(0,r.jsxs)("button",{onClick:()=>{D({vercelToken:"",projectName:"vercel-relay"}),h(!0),b(!1)},className:"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm text-text-main transition-colors hover:bg-black/5 dark:hover:bg-white/5",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px] text-blue-500",children:"cloud_upload"}),"Vercel Relay"]}),(0,r.jsxs)("button",{onClick:()=>{E({denoToken:"",orgDomain:"",projectName:""}),f(!0),b(!1)},className:"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm text-text-main transition-colors hover:bg-black/5 dark:hover:bg-white/5",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px] text-green-500",children:"terminal"}),"Deno Relay"]})]})]}),(0,r.jsx)(a.$n,{size:"sm",variant:"secondary",icon:"upload",onClick:()=>{P(""),p(!0)},children:"Batch Import"}),(0,r.jsx)(a.$n,{size:"sm",icon:"add",onClick:ea,children:"Add Proxy Pool"})]})]}),(0,r.jsxs)(a.Zp,{children:[(0,r.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[e.length>0&&(0,r.jsxs)("label",{className:"flex items-center gap-1.5 text-xs text-text-muted cursor-pointer",children:[(0,r.jsx)("input",{type:"checkbox",checked:em,onChange:()=>M(e=>em?e.filter(e=>!ep.some(t=>t.id===e)):Array.from(new Set([...e,...ep.map(e=>e.id)]))),className:"size-4 rounded border-black/20 dark:border-white/20"}),em?"Unselect visible":"Select visible"]}),(0,r.jsxs)(a.Ex,{variant:"default",children:["Total: ",e.length]}),(0,r.jsxs)(a.Ex,{variant:"success",children:["Active: ",eP]})]}),(L.length>0||q)&&(0,r.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2 rounded-lg border border-primary/30 bg-primary/5 px-3 py-2",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary",children:"checklist"}),(0,r.jsx)("span",{className:"text-xs font-medium text-primary",children:L.length>0?`${L.length} selected`:"All pools"}),(0,r.jsxs)("div",{className:"ml-auto flex flex-wrap items-center gap-2",children:[(0,r.jsx)(a.$n,{size:"sm",icon:q?"progress_activity":"health_and_safety",onClick:eg,disabled:q||G||0===e.length,children:q?`Checking ${J.current}/${J.total}`:"Health Check"}),L.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.$n,{size:"sm",variant:"secondary",icon:"toggle_on",onClick:()=>eu(!0),disabled:G||q,children:"Activate"}),(0,r.jsx)(a.$n,{size:"sm",variant:"secondary",icon:"toggle_off",onClick:()=>eu(!1),disabled:G||q,children:"Deactivate"}),(0,r.jsx)(a.$n,{size:"sm",variant:"secondary",icon:"delete",onClick:ey,disabled:G||q,children:"Delete"}),(0,r.jsx)(a.$n,{size:"sm",variant:"ghost",onClick:eh,disabled:G||q,children:"Clear"})]})]})]}),0===e.length?(0,r.jsxs)("div",{className:"text-center py-10",children:[(0,r.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No proxy pool entries yet"}),(0,r.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create a proxy pool entry, then assign it to connections."}),(0,r.jsx)(a.$n,{icon:"add",onClick:ea,children:"Add Proxy Pool"})]}):(0,r.jsxs)("div",{className:"flex flex-col divide-y divide-black/[0.04] dark:divide-white/[0.05]",children:[ep.map(e=>{var t;return(0,r.jsxs)("div",{className:"flex flex-col gap-3 py-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsxs)("div",{className:"flex items-start gap-3 min-w-0 flex-1",children:[(0,r.jsx)("input",{type:"checkbox",checked:L.includes(e.id),onChange:()=>{let t;return t=e.id,M(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])},className:"mt-1 size-4 shrink-0 rounded border-black/20 dark:border-white/20"}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,r.jsx)("p",{className:"min-w-0 max-w-full truncate text-sm font-medium sm:max-w-[18rem]",children:e.name}),(0,r.jsx)(a.Ex,{variant:"active"===(t=e.testStatus)?"success":"error"===t?"error":"default",size:"sm",dot:!0,children:e.testStatus||"unknown"}),(0,r.jsx)(a.Ex,{variant:e.isActive?"success":"default",size:"sm",children:e.isActive?"active":"inactive"}),"vercel"===e.type&&(0,r.jsx)(a.Ex,{variant:"default",size:"sm",children:"vercel relay"}),"cloudflare"===e.type&&(0,r.jsx)(a.Ex,{variant:"default",size:"sm",children:"cloudflare relay"}),(0,r.jsxs)(a.Ex,{variant:"default",size:"sm",children:[e.boundConnectionCount||0," bound"]})]}),(0,r.jsx)("p",{className:"text-xs text-text-muted truncate mt-1",children:e.proxyUrl}),e.noProxy?(0,r.jsxs)("p",{className:"text-xs text-text-muted truncate",children:["No proxy: ",e.noProxy]}):null,(0,r.jsxs)("p",{className:"text-[11px] text-text-muted mt-1",children:["Last tested: ",function(e){if(!e)return"Never";let t=new Date(e);return Number.isNaN(t.getTime())?"Never":t.toLocaleString()}(e.lastTestedAt),e.lastError?` \xb7 ${e.lastError}`:""]})]})]}),(0,r.jsxs)("div",{className:"flex items-center justify-end gap-1",children:[(0,r.jsx)(a.lM,{size:"sm",checked:!0===e.isActive,onChange:()=>ec(e),title:e.isActive?"Disable":"Enable"}),(0,r.jsx)("button",{onClick:()=>ed(e.id),className:"p-2 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary",title:"Test proxy",disabled:R===e.id,children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:R===e.id?{animation:"spin 1s linear infinite"}:void 0,children:R===e.id?"progress_activity":"science"})}),(0,r.jsx)("button",{onClick:()=>{k(e),w(i(e)),c(!0)},className:"p-2 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary",title:"Edit",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,r.jsx)("button",{onClick:()=>en(e),className:"p-2 rounded hover:bg-red-500/10 text-red-500",title:"Delete",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},e.id)}),e.length>0&&(0,r.jsx)(a.dK,{currentPage:ex,pageSize:X,totalItems:e.length,onPageChange:Z,onPageSizeChange:e=>{ee(e),Z(1)}})]})]}),(0,r.jsx)(a.aF,{isOpen:x,title:"Batch Import Proxies",onClose:ef,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-sm font-medium text-text-main mb-1 block",children:"Paste Proxy List (One per line)"}),(0,r.jsx)("textarea",{value:C,onChange:e=>P(e.target.value),placeholder:"http://user:pass@127.0.0.1:7897\n127.0.0.1:7897:user:pass",className:"w-full min-h-[180px] py-2 px-3 text-sm text-text-main bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none transition-all"}),(0,r.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"Supported formats: protocol://user:pass@host:port, host:port:user:pass"})]}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,r.jsx)(a.$n,{fullWidth:!0,onClick:eC,disabled:!C.trim()||O,children:O?"Importing...":"Import"}),(0,r.jsx)(a.$n,{fullWidth:!0,variant:"ghost",onClick:ef,disabled:O,children:"Cancel"})]})]})}),(0,r.jsx)(a.aF,{isOpen:m,title:"Deploy Vercel Relay",onClose:ej,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{className:"rounded-lg bg-blue-500/5 border border-blue-500/10 p-3 flex flex-col gap-1.5",children:[(0,r.jsx)("p",{className:"text-sm text-text-main font-medium",children:"What is Vercel Relay?"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Deploys an edge relay function to Vercel. All AI provider requests will be forwarded through Vercel's edge network, masking your real IP from providers."}),(0,r.jsxs)("ul",{className:"text-xs text-text-muted list-disc pl-4 space-y-0.5",children:[(0,r.jsx)("li",{children:"Your IP is replaced by Vercel's dynamic edge IPs (hundreds of IPs across 20+ global regions)"}),(0,r.jsx)("li",{children:"Vercel serves millions of apps — providers can't block Vercel IPs without affecting legitimate traffic"}),(0,r.jsx)("li",{children:"Free tier: 100GB bandwidth/month, 500K edge invocations"}),(0,r.jsx)("li",{children:"Deploy multiple relays on different accounts for more IP diversity"})]})]}),(0,r.jsx)(a.pd,{label:"Vercel API Token",value:$.vercelToken,onChange:e=>D(t=>({...t,vercelToken:e.target.value})),placeholder:"your-vercel-api-token",hint:(0,r.jsxs)(r.Fragment,{children:["Token is used once for deployment and not stored. ",(0,r.jsx)("a",{href:"https://vercel.com/account/tokens",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"Get token →"})]}),type:"password"}),(0,r.jsx)(a.pd,{label:"Project Name",value:$.projectName,onChange:e=>D(t=>({...t,projectName:e.target.value})),placeholder:"my-relay",hint:"Unique name for your Vercel project. Leave empty for auto-generated name."}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,r.jsx)(a.$n,{fullWidth:!0,onClick:ek,disabled:!$.vercelToken.trim()||F,children:F?"Deploying... (may take ~1 min)":"Deploy"}),(0,r.jsx)(a.$n,{fullWidth:!0,variant:"ghost",onClick:ej,disabled:F,children:"Cancel"})]})]})}),(0,r.jsx)(a.aF,{isOpen:u,title:"Deploy Cloudflare Relay",onClose:eb,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{className:"rounded-lg bg-orange-500/5 border border-orange-500/10 p-3 flex flex-col gap-1.5",children:[(0,r.jsx)("p",{className:"text-sm text-text-main font-medium",children:"What is Cloudflare Relay?"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Deploys a Cloudflare Worker as a proxy relay. All AI provider requests will be forwarded through Cloudflare's global edge network."}),(0,r.jsxs)("ul",{className:"text-xs text-text-muted list-disc pl-4 space-y-0.5",children:[(0,r.jsx)("li",{children:"High performance global routing and IP masking via Cloudflare Workers"}),(0,r.jsx)("li",{children:"Free tier: 100,000 requests per day"}),(0,r.jsx)("li",{children:"Requires Cloudflare Account ID and a Workers API Token (Edit Workers permission)"})]}),(0,r.jsxs)("div",{className:"mt-2 pt-2 border-t border-orange-500/10 text-xs text-text-muted",children:[(0,r.jsx)("p",{className:"font-medium text-text-main mb-1",children:"How to generate your API Token:"}),(0,r.jsxs)("ol",{className:"list-decimal pl-4 space-y-0.5",children:[(0,r.jsxs)("li",{children:["Go to ",(0,r.jsx)("b",{children:"My Profile"})," → ",(0,r.jsx)("b",{children:"API Tokens"})," → ",(0,r.jsx)("b",{children:"Create Token"})]}),(0,r.jsxs)("li",{children:["Scroll down to ",(0,r.jsx)("b",{children:"Custom Token"})," and click ",(0,r.jsx)("b",{children:"Get started"})]}),(0,r.jsxs)("li",{children:["Under ",(0,r.jsx)("b",{children:"Permissions"}),": Account | Workers Scripts | Edit"]}),(0,r.jsxs)("li",{children:["Under ",(0,r.jsx)("b",{children:"Account Resources"}),": Include | Account | ",(0,r.jsx)("i",{children:"Your Account Name"})]}),(0,r.jsxs)("li",{children:["Click ",(0,r.jsx)("b",{children:"Continue to summary"})," → ",(0,r.jsx)("b",{children:"Create Token"})]})]})]})]}),(0,r.jsx)(a.pd,{label:"Account ID",value:S.accountId,onChange:e=>T(t=>({...t,accountId:e.target.value})),placeholder:"your-cloudflare-account-id",hint:(0,r.jsx)(r.Fragment,{children:"Found on the right side of the Cloudflare dashboard overview page."})}),(0,r.jsx)(a.pd,{label:"API Token",value:S.apiToken,onChange:e=>T(t=>({...t,apiToken:e.target.value})),placeholder:"your-cloudflare-api-token",hint:(0,r.jsxs)(r.Fragment,{children:['Requires "Workers Scripts: Edit" permission. ',(0,r.jsx)("a",{href:"https://dash.cloudflare.com/profile/api-tokens",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"Get token →"})]}),type:"password"}),(0,r.jsx)(a.pd,{label:"Worker Name",value:S.projectName,onChange:e=>T(t=>({...t,projectName:e.target.value})),placeholder:"my-relay",hint:"Unique name for your Cloudflare Worker. Leave empty for auto-generated name."}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,r.jsx)(a.$n,{fullWidth:!0,onClick:eN,disabled:!S.accountId.trim()||!S.apiToken.trim()||F,children:F?"Deploying...":"Deploy Worker"}),(0,r.jsx)(a.$n,{fullWidth:!0,variant:"ghost",onClick:eb,disabled:F,children:"Cancel"})]})]})}),(0,r.jsx)(a.aF,{isOpen:g,title:"Deploy Deno Relay",onClose:ev,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{className:"rounded-lg bg-black/5 dark:bg-white/5 border border-black/10 dark:border-white/10 p-3 flex flex-col gap-1.5",children:[(0,r.jsx)("p",{className:"text-sm text-text-main font-medium",children:"What is Deno Relay?"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Deploys a relay worker to Deno Deploy's global edge network. All AI provider requests are forwarded through Deno's edge, masking your real IP."}),(0,r.jsxs)("ul",{className:"text-xs text-text-muted list-disc pl-4 space-y-0.5",children:[(0,r.jsx)("li",{children:"Deno Deploy v2 runs on a high-performance global edge network"}),(0,r.jsx)("li",{children:"Free tier: 1M requests & 100GiB outbound traffic per month"}),(0,r.jsx)("li",{children:"No per-request CPU time limits (unlike Vercel/Cloudflare)"}),(0,r.jsx)("li",{children:"Support up to 20 active apps & 50 custom domains"}),(0,r.jsx)("li",{children:"Deploy multiple relays for maximum IP diversity"})]}),(0,r.jsxs)("div",{className:"mt-2 pt-2 border-t border-black/10 dark:border-white/10 text-xs text-text-muted",children:[(0,r.jsx)("p",{className:"font-medium text-text-main mb-1",children:"How to generate API token:"}),(0,r.jsxs)("ol",{className:"list-decimal pl-4 space-y-0.5",children:[(0,r.jsxs)("li",{children:["Go to ",(0,r.jsx)("b",{children:"console.deno.com"})]}),(0,r.jsxs)("li",{children:["Select your ",(0,r.jsx)("b",{children:"Organization"})," → ",(0,r.jsx)("b",{children:"Settings"})," → ",(0,r.jsx)("b",{children:"Organization Tokens"})]}),(0,r.jsxs)("li",{children:["Create a ",(0,r.jsx)("b",{children:"Organization Token"})," (prefix ",(0,r.jsx)("b",{children:"ddo_"}),")"]})]})]})]}),(0,r.jsx)(a.pd,{label:"Deno Deploy API Token",value:A.denoToken,onChange:e=>E(t=>({...t,denoToken:e.target.value})),placeholder:"ddo_xxxxxxxxxxxxxxxx",hint:(0,r.jsx)(r.Fragment,{children:"Token is used once for deployment, not stored. Found in Organization Settings."}),type:"password"}),(0,r.jsx)(a.pd,{label:"Organization Domain",value:A.orgDomain,onChange:e=>E(t=>({...t,orgDomain:e.target.value})),placeholder:"your-org.deno.net",hint:"Organization's default domain. Your relay URL will be in the format: https://my-relay.your-org.deno.net"}),(0,r.jsx)(a.pd,{label:"App Name",value:A.projectName,onChange:e=>E(t=>({...t,projectName:e.target.value})),placeholder:"deno-relay",hint:"Unique app name. Leave empty for auto-generated name."}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,r.jsx)(a.$n,{fullWidth:!0,onClick:ew,disabled:!A.denoToken.trim()||!A.orgDomain.trim()||F,children:F?"Deploying...":"Deploy Relay"}),(0,r.jsx)(a.$n,{fullWidth:!0,variant:"ghost",onClick:ev,disabled:F,children:"Cancel"})]})]})}),(0,r.jsx)(a.aF,{isOpen:d,title:v?"Edit Proxy Pool":"Add Proxy Pool",onClose:eo,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsx)(a.pd,{label:"Name",value:N.name,onChange:e=>w(t=>({...t,name:e.target.value})),placeholder:"Office Proxy"}),(0,r.jsx)(a.pd,{label:"Proxy URL",value:N.proxyUrl,onChange:e=>w(t=>({...t,proxyUrl:e.target.value})),placeholder:"http://127.0.0.1:7897"}),(0,r.jsx)(a.pd,{label:"No Proxy",value:N.noProxy,onChange:e=>w(t=>({...t,noProxy:e.target.value})),placeholder:"localhost,127.0.0.1,.internal",hint:"Comma-separated hosts/domains to bypass proxy"}),(0,r.jsxs)("div",{className:"flex flex-col gap-3 rounded-lg border border-border/50 p-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"font-medium text-sm",children:"Active"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Inactive pools are ignored by runtime resolution."})]}),(0,r.jsx)(a.lM,{checked:!0===N.isActive,onChange:()=>w(e=>({...e,isActive:!e.isActive})),disabled:I})]}),(0,r.jsxs)("div",{className:"flex flex-col gap-3 rounded-lg border border-border/50 p-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"font-medium text-sm",children:"Strict Proxy"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Fail request if proxy is unreachable instead of falling back to direct."})]}),(0,r.jsx)(a.lM,{checked:!0===N.strictProxy,onChange:()=>w(e=>({...e,strictProxy:!e.strictProxy})),disabled:I})]}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,r.jsx)(a.$n,{fullWidth:!0,onClick:ei,disabled:!N.name.trim()||!N.proxyUrl.trim()||I,children:I?"Saving...":"Save"}),(0,r.jsx)(a.$n,{fullWidth:!0,variant:"ghost",onClick:eo,disabled:I,children:"Cancel"})]})]})}),(0,r.jsx)(a.uo,{isOpen:!!Y,onClose:()=>K(null),onConfirm:Y?.onConfirm,title:Y?.title||"Confirm",message:Y?.message,variant:"danger"})]})}}},e=>{e.O(0,[2574,3862,4343,85,5497,8441,3794,7358],()=>e(e.s=30275)),_N_E=e.O()}]);
4
+ ${r.join("\n")}`);z(!0);try{let t=new Set(e.map(e=>`${(e.proxyUrl||"").trim()}|||${(e.noProxy||"").trim()}`)),r=0,s=0,a=0;for(let e of l){let l=`${e.proxyUrl}|||`;if(t.has(l)){s+=1;continue}(await fetch("/api/proxy-pools",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e.name,proxyUrl:e.proxyUrl,noProxy:"",isActive:!0})})).ok?(r+=1,t.add(l)):a+=1}await er(),p(!1),el.success(`Batch import completed: Created ${r}, Skipped ${s}, Failed ${a}`)}catch(e){console.log("Error batch importing proxies:",e),el.error("Batch import failed")}finally{z(!1)}},eP=(0,s.useMemo)(()=>e.filter(e=>!0===e.isActive).length,[e]);return l?(0,r.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-4 px-1 sm:gap-6 sm:px-0",children:[(0,r.jsx)(a.Qv,{}),(0,r.jsx)(a.Qv,{})]}):(0,r.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-4 px-1 sm:gap-6 sm:px-0",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,r.jsx)("div",{className:"min-w-0",children:(0,r.jsx)("h1",{className:"text-xl font-semibold sm:text-2xl",children:"Proxy Pools"})}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,r.jsxs)("div",{className:"relative",ref:et,children:[(0,r.jsxs)(a.$n,{size:"sm",variant:"secondary",icon:"rocket_launch",onClick:()=>b(!j),children:["Deploy Relay",(0,r.jsx)("span",{className:"material-symbols-outlined ml-1 text-[18px]",children:j?"expand_less":"expand_more"})]}),j&&(0,r.jsxs)("div",{className:"absolute left-0 top-full z-50 mt-1 w-48 rounded-xl border border-black/10 bg-white p-1 shadow-xl dark:border-white/10 dark:bg-zinc-900 sm:left-auto sm:right-0",children:[(0,r.jsxs)("button",{onClick:()=>{T({accountId:"",apiToken:"",projectName:"cloudflare-relay"}),y(!0),b(!1)},className:"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm text-text-main transition-colors hover:bg-black/5 dark:hover:bg-white/5",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px] text-orange-500",children:"cloud"}),"Cloudflare Relay"]}),(0,r.jsxs)("button",{onClick:()=>{D({vercelToken:"",projectName:"vercel-relay"}),h(!0),b(!1)},className:"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm text-text-main transition-colors hover:bg-black/5 dark:hover:bg-white/5",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px] text-blue-500",children:"cloud_upload"}),"Vercel Relay"]}),(0,r.jsxs)("button",{onClick:()=>{E({denoToken:"",orgDomain:"",projectName:""}),f(!0),b(!1)},className:"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-sm text-text-main transition-colors hover:bg-black/5 dark:hover:bg-white/5",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px] text-green-500",children:"terminal"}),"Deno Relay"]})]})]}),(0,r.jsx)(a.$n,{size:"sm",variant:"secondary",icon:"upload",onClick:()=>{P(""),p(!0)},children:"Batch Import"}),(0,r.jsx)(a.$n,{size:"sm",icon:"add",onClick:ea,children:"Add Proxy Pool"})]})]}),(0,r.jsxs)(a.Zp,{children:[(0,r.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[e.length>0&&(0,r.jsxs)("label",{className:"flex items-center gap-1.5 text-xs text-text-muted cursor-pointer",children:[(0,r.jsx)("input",{type:"checkbox",checked:em,onChange:()=>M(e=>em?e.filter(e=>!ep.some(t=>t.id===e)):Array.from(new Set([...e,...ep.map(e=>e.id)]))),className:"size-4 rounded border-black/20 dark:border-white/20"}),em?"Unselect visible":"Select visible"]}),(0,r.jsxs)(a.Ex,{variant:"default",children:["Total: ",e.length]}),(0,r.jsxs)(a.Ex,{variant:"success",children:["Active: ",eP]})]}),(L.length>0||q)&&(0,r.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2 rounded-lg border border-primary/30 bg-primary/5 px-3 py-2",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary",children:"checklist"}),(0,r.jsx)("span",{className:"text-xs font-medium text-primary",children:L.length>0?`${L.length} selected`:"All pools"}),(0,r.jsxs)("div",{className:"ml-auto flex flex-wrap items-center gap-2",children:[(0,r.jsx)(a.$n,{size:"sm",icon:q?"progress_activity":"health_and_safety",onClick:eg,disabled:q||G||0===e.length,children:q?`Checking ${J.current}/${J.total}`:"Health Check"}),L.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.$n,{size:"sm",variant:"secondary",icon:"toggle_on",onClick:()=>eu(!0),disabled:G||q,children:"Activate"}),(0,r.jsx)(a.$n,{size:"sm",variant:"secondary",icon:"toggle_off",onClick:()=>eu(!1),disabled:G||q,children:"Deactivate"}),(0,r.jsx)(a.$n,{size:"sm",variant:"secondary",icon:"delete",onClick:ey,disabled:G||q,children:"Delete"}),(0,r.jsx)(a.$n,{size:"sm",variant:"ghost",onClick:eh,disabled:G||q,children:"Clear"})]})]})]}),0===e.length?(0,r.jsxs)("div",{className:"text-center py-10",children:[(0,r.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No proxy pool entries yet"}),(0,r.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create a proxy pool entry, then assign it to connections."}),(0,r.jsx)(a.$n,{icon:"add",onClick:ea,children:"Add Proxy Pool"})]}):(0,r.jsxs)("div",{className:"flex flex-col divide-y divide-black/[0.04] dark:divide-white/[0.05]",children:[ep.map(e=>{var t;return(0,r.jsxs)("div",{className:"flex flex-col gap-3 py-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsxs)("div",{className:"flex items-start gap-3 min-w-0 flex-1",children:[(0,r.jsx)("input",{type:"checkbox",checked:L.includes(e.id),onChange:()=>{let t;return t=e.id,M(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])},className:"mt-1 size-4 shrink-0 rounded border-black/20 dark:border-white/20"}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,r.jsx)("p",{className:"min-w-0 max-w-full truncate text-sm font-medium sm:max-w-[18rem]",children:e.name}),(0,r.jsx)(a.Ex,{variant:"active"===(t=e.testStatus)?"success":"error"===t?"error":"default",size:"sm",dot:!0,children:e.testStatus||"unknown"}),(0,r.jsx)(a.Ex,{variant:e.isActive?"success":"default",size:"sm",children:e.isActive?"active":"inactive"}),"vercel"===e.type&&(0,r.jsx)(a.Ex,{variant:"default",size:"sm",children:"vercel relay"}),"cloudflare"===e.type&&(0,r.jsx)(a.Ex,{variant:"default",size:"sm",children:"cloudflare relay"}),(0,r.jsxs)(a.Ex,{variant:"default",size:"sm",children:[e.boundConnectionCount||0," bound"]})]}),(0,r.jsx)("p",{className:"text-xs text-text-muted truncate mt-1",children:e.proxyUrl}),e.noProxy?(0,r.jsxs)("p",{className:"text-xs text-text-muted truncate",children:["No proxy: ",e.noProxy]}):null,(0,r.jsxs)("p",{className:"text-[11px] text-text-muted mt-1",children:["Last tested: ",function(e){if(!e)return"Never";let t=new Date(e);return Number.isNaN(t.getTime())?"Never":t.toLocaleString()}(e.lastTestedAt),e.lastError?` \xb7 ${e.lastError}`:""]})]})]}),(0,r.jsxs)("div",{className:"flex items-center justify-end gap-1",children:[(0,r.jsx)(a.lM,{size:"sm",checked:!0===e.isActive,onChange:()=>ec(e),title:e.isActive?"Disable":"Enable"}),(0,r.jsx)("button",{onClick:()=>ed(e.id),className:"p-2 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary",title:"Test proxy",disabled:R===e.id,children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:R===e.id?{animation:"spin 1s linear infinite"}:void 0,children:R===e.id?"progress_activity":"science"})}),(0,r.jsx)("button",{onClick:()=>{k(e),w(i(e)),c(!0)},className:"p-2 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary",title:"Edit",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,r.jsx)("button",{onClick:()=>en(e),className:"p-2 rounded hover:bg-red-500/10 text-red-500",title:"Delete",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},e.id)}),e.length>0&&(0,r.jsx)(a.dK,{currentPage:ex,pageSize:X,totalItems:e.length,onPageChange:Z,onPageSizeChange:e=>{ee(e),Z(1)}})]})]}),(0,r.jsx)(a.aF,{isOpen:x,title:"Batch Import Proxies",onClose:ef,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-sm font-medium text-text-main mb-1 block",children:"Paste Proxy List (One per line)"}),(0,r.jsx)("textarea",{value:C,onChange:e=>P(e.target.value),placeholder:"http://user:pass@127.0.0.1:7897\n127.0.0.1:7897:user:pass",className:"w-full min-h-[180px] py-2 px-3 text-sm text-text-main bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none transition-all"}),(0,r.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"Supported formats: protocol://user:pass@host:port, host:port:user:pass"})]}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,r.jsx)(a.$n,{fullWidth:!0,onClick:eC,disabled:!C.trim()||O,children:O?"Importing...":"Import"}),(0,r.jsx)(a.$n,{fullWidth:!0,variant:"ghost",onClick:ef,disabled:O,children:"Cancel"})]})]})}),(0,r.jsx)(a.aF,{isOpen:m,title:"Deploy Vercel Relay",onClose:ej,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{className:"rounded-lg bg-blue-500/5 border border-blue-500/10 p-3 flex flex-col gap-1.5",children:[(0,r.jsx)("p",{className:"text-sm text-text-main font-medium",children:"What is Vercel Relay?"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Deploys an edge relay function to Vercel. All AI provider requests will be forwarded through Vercel's edge network, masking your real IP from providers."}),(0,r.jsxs)("ul",{className:"text-xs text-text-muted list-disc pl-4 space-y-0.5",children:[(0,r.jsx)("li",{children:"Your IP is replaced by Vercel's dynamic edge IPs (hundreds of IPs across 20+ global regions)"}),(0,r.jsx)("li",{children:"Vercel serves millions of apps — providers can't block Vercel IPs without affecting legitimate traffic"}),(0,r.jsx)("li",{children:"Free tier: 100GB bandwidth/month, 500K edge invocations"}),(0,r.jsx)("li",{children:"Deploy multiple relays on different accounts for more IP diversity"})]})]}),(0,r.jsx)(a.pd,{label:"Vercel API Token",value:$.vercelToken,onChange:e=>D(t=>({...t,vercelToken:e.target.value})),placeholder:"your-vercel-api-token",hint:(0,r.jsxs)(r.Fragment,{children:["Token is used once for deployment and not stored. ",(0,r.jsx)("a",{href:"https://vercel.com/account/tokens",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"Get token →"})]}),type:"password"}),(0,r.jsx)(a.pd,{label:"Project Name",value:$.projectName,onChange:e=>D(t=>({...t,projectName:e.target.value})),placeholder:"my-relay",hint:"Unique name for your Vercel project. Leave empty for auto-generated name."}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,r.jsx)(a.$n,{fullWidth:!0,onClick:ek,disabled:!$.vercelToken.trim()||F,children:F?"Deploying... (may take ~1 min)":"Deploy"}),(0,r.jsx)(a.$n,{fullWidth:!0,variant:"ghost",onClick:ej,disabled:F,children:"Cancel"})]})]})}),(0,r.jsx)(a.aF,{isOpen:u,title:"Deploy Cloudflare Relay",onClose:eb,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{className:"rounded-lg bg-orange-500/5 border border-orange-500/10 p-3 flex flex-col gap-1.5",children:[(0,r.jsx)("p",{className:"text-sm text-text-main font-medium",children:"What is Cloudflare Relay?"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Deploys a Cloudflare Worker as a proxy relay. All AI provider requests will be forwarded through Cloudflare's global edge network."}),(0,r.jsxs)("ul",{className:"text-xs text-text-muted list-disc pl-4 space-y-0.5",children:[(0,r.jsx)("li",{children:"High performance global routing and IP masking via Cloudflare Workers"}),(0,r.jsx)("li",{children:"Free tier: 100,000 requests per day"}),(0,r.jsx)("li",{children:"Requires Cloudflare Account ID and a Workers API Token (Edit Workers permission)"})]}),(0,r.jsxs)("div",{className:"mt-2 pt-2 border-t border-orange-500/10 text-xs text-text-muted",children:[(0,r.jsx)("p",{className:"font-medium text-text-main mb-1",children:"How to generate your API Token:"}),(0,r.jsxs)("ol",{className:"list-decimal pl-4 space-y-0.5",children:[(0,r.jsxs)("li",{children:["Go to ",(0,r.jsx)("b",{children:"My Profile"})," → ",(0,r.jsx)("b",{children:"API Tokens"})," → ",(0,r.jsx)("b",{children:"Create Token"})]}),(0,r.jsxs)("li",{children:["Scroll down to ",(0,r.jsx)("b",{children:"Custom Token"})," and click ",(0,r.jsx)("b",{children:"Get started"})]}),(0,r.jsxs)("li",{children:["Under ",(0,r.jsx)("b",{children:"Permissions"}),": Account | Workers Scripts | Edit"]}),(0,r.jsxs)("li",{children:["Under ",(0,r.jsx)("b",{children:"Account Resources"}),": Include | Account | ",(0,r.jsx)("i",{children:"Your Account Name"})]}),(0,r.jsxs)("li",{children:["Click ",(0,r.jsx)("b",{children:"Continue to summary"})," → ",(0,r.jsx)("b",{children:"Create Token"})]})]})]})]}),(0,r.jsx)(a.pd,{label:"Account ID",value:S.accountId,onChange:e=>T(t=>({...t,accountId:e.target.value})),placeholder:"your-cloudflare-account-id",hint:(0,r.jsx)(r.Fragment,{children:"Found on the right side of the Cloudflare dashboard overview page."})}),(0,r.jsx)(a.pd,{label:"API Token",value:S.apiToken,onChange:e=>T(t=>({...t,apiToken:e.target.value})),placeholder:"your-cloudflare-api-token",hint:(0,r.jsxs)(r.Fragment,{children:['Requires "Workers Scripts: Edit" permission. ',(0,r.jsx)("a",{href:"https://dash.cloudflare.com/profile/api-tokens",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"Get token →"})]}),type:"password"}),(0,r.jsx)(a.pd,{label:"Worker Name",value:S.projectName,onChange:e=>T(t=>({...t,projectName:e.target.value})),placeholder:"my-relay",hint:"Unique name for your Cloudflare Worker. Leave empty for auto-generated name."}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,r.jsx)(a.$n,{fullWidth:!0,onClick:eN,disabled:!S.accountId.trim()||!S.apiToken.trim()||F,children:F?"Deploying...":"Deploy Worker"}),(0,r.jsx)(a.$n,{fullWidth:!0,variant:"ghost",onClick:eb,disabled:F,children:"Cancel"})]})]})}),(0,r.jsx)(a.aF,{isOpen:g,title:"Deploy Deno Relay",onClose:ev,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{className:"rounded-lg bg-black/5 dark:bg-white/5 border border-black/10 dark:border-white/10 p-3 flex flex-col gap-1.5",children:[(0,r.jsx)("p",{className:"text-sm text-text-main font-medium",children:"What is Deno Relay?"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Deploys a relay worker to Deno Deploy's global edge network. All AI provider requests are forwarded through Deno's edge, masking your real IP."}),(0,r.jsxs)("ul",{className:"text-xs text-text-muted list-disc pl-4 space-y-0.5",children:[(0,r.jsx)("li",{children:"Deno Deploy v2 runs on a high-performance global edge network"}),(0,r.jsx)("li",{children:"Free tier: 1M requests & 100GiB outbound traffic per month"}),(0,r.jsx)("li",{children:"No per-request CPU time limits (unlike Vercel/Cloudflare)"}),(0,r.jsx)("li",{children:"Support up to 20 active apps & 50 custom domains"}),(0,r.jsx)("li",{children:"Deploy multiple relays for maximum IP diversity"})]}),(0,r.jsxs)("div",{className:"mt-2 pt-2 border-t border-black/10 dark:border-white/10 text-xs text-text-muted",children:[(0,r.jsx)("p",{className:"font-medium text-text-main mb-1",children:"How to generate API token:"}),(0,r.jsxs)("ol",{className:"list-decimal pl-4 space-y-0.5",children:[(0,r.jsxs)("li",{children:["Go to ",(0,r.jsx)("b",{children:"console.deno.com"})]}),(0,r.jsxs)("li",{children:["Select your ",(0,r.jsx)("b",{children:"Organization"})," → ",(0,r.jsx)("b",{children:"Settings"})," → ",(0,r.jsx)("b",{children:"Organization Tokens"})]}),(0,r.jsxs)("li",{children:["Create a ",(0,r.jsx)("b",{children:"Organization Token"})," (prefix ",(0,r.jsx)("b",{children:"ddo_"}),")"]})]})]})]}),(0,r.jsx)(a.pd,{label:"Deno Deploy API Token",value:A.denoToken,onChange:e=>E(t=>({...t,denoToken:e.target.value})),placeholder:"ddo_xxxxxxxxxxxxxxxx",hint:(0,r.jsx)(r.Fragment,{children:"Token is used once for deployment, not stored. Found in Organization Settings."}),type:"password"}),(0,r.jsx)(a.pd,{label:"Organization Domain",value:A.orgDomain,onChange:e=>E(t=>({...t,orgDomain:e.target.value})),placeholder:"your-org.deno.net",hint:"Organization's default domain. Your relay URL will be in the format: https://my-relay.your-org.deno.net"}),(0,r.jsx)(a.pd,{label:"App Name",value:A.projectName,onChange:e=>E(t=>({...t,projectName:e.target.value})),placeholder:"deno-relay",hint:"Unique app name. Leave empty for auto-generated name."}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,r.jsx)(a.$n,{fullWidth:!0,onClick:ew,disabled:!A.denoToken.trim()||!A.orgDomain.trim()||F,children:F?"Deploying...":"Deploy Relay"}),(0,r.jsx)(a.$n,{fullWidth:!0,variant:"ghost",onClick:ev,disabled:F,children:"Cancel"})]})]})}),(0,r.jsx)(a.aF,{isOpen:d,title:v?"Edit Proxy Pool":"Add Proxy Pool",onClose:eo,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsx)(a.pd,{label:"Name",value:N.name,onChange:e=>w(t=>({...t,name:e.target.value})),placeholder:"Office Proxy"}),(0,r.jsx)(a.pd,{label:"Proxy URL",value:N.proxyUrl,onChange:e=>w(t=>({...t,proxyUrl:e.target.value})),placeholder:"http://127.0.0.1:7897"}),(0,r.jsx)(a.pd,{label:"No Proxy",value:N.noProxy,onChange:e=>w(t=>({...t,noProxy:e.target.value})),placeholder:"localhost,127.0.0.1,.internal",hint:"Comma-separated hosts/domains to bypass proxy"}),(0,r.jsxs)("div",{className:"flex flex-col gap-3 rounded-lg border border-border/50 p-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"font-medium text-sm",children:"Active"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Inactive pools are ignored by runtime resolution."})]}),(0,r.jsx)(a.lM,{checked:!0===N.isActive,onChange:()=>w(e=>({...e,isActive:!e.isActive})),disabled:I})]}),(0,r.jsxs)("div",{className:"flex flex-col gap-3 rounded-lg border border-border/50 p-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"font-medium text-sm",children:"Strict Proxy"}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:"Fail request if proxy is unreachable instead of falling back to direct."})]}),(0,r.jsx)(a.lM,{checked:!0===N.strictProxy,onChange:()=>w(e=>({...e,strictProxy:!e.strictProxy})),disabled:I})]}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,r.jsx)(a.$n,{fullWidth:!0,onClick:ei,disabled:!N.name.trim()||!N.proxyUrl.trim()||I,children:I?"Saving...":"Save"}),(0,r.jsx)(a.$n,{fullWidth:!0,variant:"ghost",onClick:eo,disabled:I,children:"Cancel"})]})]})}),(0,r.jsx)(a.uo,{isOpen:!!Y,onClose:()=>K(null),onConfirm:Y?.onConfirm,title:Y?.title||"Confirm",message:Y?.message,variant:"danger"})]})}},62567:(e,t,l)=>{Promise.resolve().then(l.bind(l,54372))}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=62567)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7414],{54742:(e,t,s)=>{Promise.resolve().then(s.bind(s,71470))},71470:(e,t,s)=>{"use strict";s.d(t,{default:()=>j});var a=s(95155),l=s(12115),r=s(21742),i=s(63346),d=s(28408),n=s(32539),o=s(59656),x=s(55433),c=s(40968),m=s(35497);let p=e=>e>=1e6?`${(e/1e6).toFixed(2)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e||0),h=[{id:"today",label:"Today"},{id:"yesterday",label:"Yesterday"},{id:"last7d",label:"7 days"},{id:"last30d",label:"30 days"},{id:"all",label:"All time"}],u={applied:"Prompt exceeded threshold",below_threshold:"Below size threshold",not_profitable:"Compression not profitable",below_min_chars:"Below minimum chars",below_min_tokens:"Below minimum tokens",unsupported_model:"Model not in allowlist",unsupported_format:"Non-Claude request format",timeout:"Compression timed out",transform_error:"Transform error",passthrough:"Passthrough",disabled:"Disabled",not_installed:"Not installed"};function g({label:e,value:t,sub:s,tone:l}){return(0,a.jsxs)(m.Zp,{className:"p-4",children:[(0,a.jsx)("p",{className:"text-xs text-text-muted uppercase tracking-wide",children:e}),(0,a.jsx)("p",{className:`text-xl font-semibold mt-1 ${l||""}`,children:t}),s&&(0,a.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:s})]})}function j(){let[e,t]=(0,l.useState)(null),[s,j]=(0,l.useState)(null),[b,f]=(0,l.useState)(null),[N,y]=(0,l.useState)(null),[v,w]=(0,l.useState)("last7d"),[k,S]=(0,l.useState)(!0),P=(0,l.useCallback)(async()=>{S(!0);try{let[e,s,a]=await Promise.all([fetch("/api/pxpipe/status",{headers:{"Cache-Control":"no-store"}}),fetch("/api/pxpipe/stats"),fetch("/api/pxpipe/logs?limit=50")]);t(await e.json()),f(await s.json()),y(await a.json());let l=await fetch("/api/pxpipe/health",{method:"POST"});j(await l.json())}catch{}finally{S(!1)}},[]);(0,l.useEffect)(()=>{P()},[P]);let E=b?.windows?.[v],$=e?e.installed?s?.healthy?"Healthy":e.running?"Running":"Stopped":"Not installed":"—";return(0,a.jsxs)("div",{className:"space-y-6 p-6",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-3",children:[(0,a.jsxs)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary",children:"image"}),"PXPIPE Dashboard"]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("a",{href:"/dashboard/token-saver",className:"text-xs text-primary underline hover:opacity-80",children:"Token Saver settings"}),(0,a.jsx)(m.$n,{size:"sm",variant:"ghost",onClick:P,disabled:k,children:k?"Refreshing…":"Refresh"})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3",children:[(0,a.jsx)(g,{label:"Status",value:$,tone:s?.healthy?"text-success":e?.installed?"text-warning":"text-text-muted",sub:e?.enabled?"Enabled in pipeline":"Disabled in pipeline"}),(0,a.jsx)(g,{label:"Version",value:e?.version?`v${e.version}`:"—",sub:"pxpipe-proxy"}),(0,a.jsx)(g,{label:"Uptime",value:(e=>{if(!e||e<=0)return"—";let t=Math.floor(e/6e4),s=Math.floor(t/60);return s>0?`${s}h${String(t%60).padStart(2,"0")}m`:`${t}m`})(e?.uptimeMs),sub:"module loaded"}),(0,a.jsx)(g,{label:"Requests",value:E?E.requests.toLocaleString():"—"}),(0,a.jsx)(g,{label:"Compressed",value:E?E.compressed.toLocaleString():"—",tone:"text-success"}),(0,a.jsx)(g,{label:"Bypassed",value:E?E.bypassed.toLocaleString():"—"})]}),(0,a.jsxs)(m.Zp,{className:"p-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-3 mb-4",children:[(0,a.jsx)("h3",{className:"font-medium",children:"Token savings (estimated)"}),(0,a.jsx)("div",{className:"flex items-center gap-1 rounded-lg border border-border bg-bg-subtle p-1",children:h.map(e=>(0,a.jsx)("button",{onClick:()=>w(e.id),className:`px-3 py-1 rounded-md text-xs font-medium transition-colors ${v===e.id?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:e.label},e.id))})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-center",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Original tokens"}),(0,a.jsx)("p",{className:"text-lg font-semibold",children:E?p(E.tokensBeforeEst):"—"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"After PXPIPE"}),(0,a.jsx)("p",{className:"text-lg font-semibold",children:E?p(E.tokensAfterEst):"—"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Saved"}),(0,a.jsx)("p",{className:"text-lg font-semibold text-success",children:E?p(E.tokensSavedEst):"—"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Reduction"}),(0,a.jsx)("p",{className:"text-lg font-semibold text-success",children:E?`${E.savedPct}%`:"—"})]})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted mt-3",children:["Estimates from body size before/after imaging; billed usage per request (recorded on the Usage page) remains the ground truth. Images generated:"," ",E?E.imagesGenerated.toLocaleString():"—"," \xb7 avg compression time:"," ",E?`${E.avgCompressionMs}ms`:"—"," \xb7 errors: ",E?E.errors:"—"]})]}),(0,a.jsxs)(m.Zp,{className:"p-4",children:[(0,a.jsx)("h3",{className:"font-medium mb-3",children:"Tokens saved — last 30 days"}),b?.timeline?.some(e=>e.tokensSavedEst>0)?(0,a.jsx)(r.u,{width:"100%",height:220,children:(0,a.jsxs)(i.Q,{data:b.timeline,margin:{top:4,right:8,left:0,bottom:0},children:[(0,a.jsx)("defs",{children:(0,a.jsxs)("linearGradient",{id:"gradPxpipe",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"5%",stopColor:"#10b981",stopOpacity:.25}),(0,a.jsx)("stop",{offset:"95%",stopColor:"#10b981",stopOpacity:0})]})}),(0,a.jsx)(d.d,{strokeDasharray:"3 3",strokeOpacity:.2}),(0,a.jsx)(n.W,{dataKey:"date",tick:{fontSize:11},tickFormatter:e=>e.slice(5)}),(0,a.jsx)(o.h,{tick:{fontSize:11},tickFormatter:p,width:48}),(0,a.jsx)(x.m,{formatter:e=>[p(e),"Tokens saved"],labelFormatter:e=>e}),(0,a.jsx)(c.Gk,{type:"monotone",dataKey:"tokensSavedEst",stroke:"#10b981",fill:"url(#gradPxpipe)",strokeWidth:2})]})}):(0,a.jsx)("div",{className:"h-32 flex items-center justify-center text-text-muted text-sm",children:"No savings recorded yet — enable PXPIPE in the Token Saver and route a large Claude-format request."})]}),(0,a.jsxs)(m.Zp,{className:"p-4",children:[(0,a.jsx)("h3",{className:"font-medium mb-3",children:"History"}),(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full text-sm",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:"text-left text-xs text-text-muted border-b border-border",children:[(0,a.jsx)("th",{className:"py-2 pr-3",children:"Time"}),(0,a.jsx)("th",{className:"py-2 pr-3",children:"Model"}),(0,a.jsx)("th",{className:"py-2 pr-3 text-right",children:"Original"}),(0,a.jsx)("th",{className:"py-2 pr-3 text-right",children:"Compressed"}),(0,a.jsx)("th",{className:"py-2 pr-3 text-right",children:"Saved"}),(0,a.jsx)("th",{className:"py-2 pr-3 text-right",children:"%"}),(0,a.jsx)("th",{className:"py-2 pr-3 text-right",children:"Duration"}),(0,a.jsx)("th",{className:"py-2",children:"Status"})]})}),(0,a.jsxs)("tbody",{children:[(b?.recent||[]).slice(0,50).map((e,t)=>(0,a.jsxs)("tr",{className:"border-b border-border/50",children:[(0,a.jsx)("td",{className:"py-1.5 pr-3 whitespace-nowrap text-text-muted",children:new Date(e.ts).toLocaleString()}),(0,a.jsx)("td",{className:"py-1.5 pr-3 font-mono text-xs",children:e.provider?`${e.provider}/${e.model}`:e.model||"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3 text-right font-mono text-xs",children:e.applied?p(e.tokensBeforeEst):"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3 text-right font-mono text-xs",children:e.applied?p(e.tokensAfterEst):"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3 text-right font-mono text-xs text-success",children:e.applied?p(e.tokensSavedEst):"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3 text-right font-mono text-xs",children:e.applied?`${e.savedPct}%`:"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3 text-right font-mono text-xs",children:null!=e.durationMs?`${e.durationMs}ms`:"—"}),(0,a.jsx)("td",{className:"py-1.5",children:(0,a.jsx)("span",{className:`text-xs px-2 py-0.5 rounded ${e.applied?"bg-success/15 text-success":"transform_error"===e.reason||"timeout"===e.reason?"bg-danger/15 text-danger":"bg-warning/15 text-warning"}`,title:e.detail||"",children:e.applied?"Compressed":u[e.reason]||e.reason})})]},`${e.ts}-${t}`)),(!b?.recent||0===b.recent.length)&&(0,a.jsx)("tr",{children:(0,a.jsx)("td",{colSpan:8,className:"py-6 text-center text-text-muted text-sm",children:"No PXPIPE activity yet"})})]})]})})]}),(0,a.jsxs)(m.Zp,{className:"p-4",id:"logs",children:[(0,a.jsx)("h3",{className:"font-medium mb-3",children:"PXPIPE Logs"}),N?.installLog?(0,a.jsx)("pre",{className:"rounded bg-black/5 dark:bg-white/5 p-3 text-xs font-mono overflow-x-auto max-h-64 overflow-y-auto whitespace-pre-wrap",children:N.installLog}):(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"No install log yet."})]})]})}}},e=>{e.O(0,[2574,3862,4343,85,5497,8441,3794,7358],()=>e(e.s=54742)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7414],{24946:(e,t,s)=>{Promise.resolve().then(s.bind(s,47902))},47902:(e,t,s)=>{"use strict";s.d(t,{default:()=>j});var a=s(94799),l=s(34023),r=s(37888),i=s(76020),d=s(29746),n=s(47497),o=s(29406),x=s(52939),c=s(67370),m=s(77783);let p=e=>e>=1e6?`${(e/1e6).toFixed(2)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e||0),h=[{id:"today",label:"Today"},{id:"yesterday",label:"Yesterday"},{id:"last7d",label:"7 days"},{id:"last30d",label:"30 days"},{id:"all",label:"All time"}],u={applied:"Prompt exceeded threshold",below_threshold:"Below size threshold",not_profitable:"Compression not profitable",below_min_chars:"Below minimum chars",below_min_tokens:"Below minimum tokens",unsupported_model:"Model not in allowlist",unsupported_format:"Non-Claude request format",timeout:"Compression timed out",transform_error:"Transform error",passthrough:"Passthrough",disabled:"Disabled",not_installed:"Not installed"};function g({label:e,value:t,sub:s,tone:l}){return(0,a.jsxs)(m.Zp,{className:"p-4",children:[(0,a.jsx)("p",{className:"text-xs text-text-muted uppercase tracking-wide",children:e}),(0,a.jsx)("p",{className:`text-xl font-semibold mt-1 ${l||""}`,children:t}),s&&(0,a.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:s})]})}function j(){let[e,t]=(0,l.useState)(null),[s,j]=(0,l.useState)(null),[b,f]=(0,l.useState)(null),[N,y]=(0,l.useState)(null),[v,w]=(0,l.useState)("last7d"),[k,S]=(0,l.useState)(!0),P=(0,l.useCallback)(async()=>{S(!0);try{let[e,s,a]=await Promise.all([fetch("/api/pxpipe/status",{headers:{"Cache-Control":"no-store"}}),fetch("/api/pxpipe/stats"),fetch("/api/pxpipe/logs?limit=50")]);t(await e.json()),f(await s.json()),y(await a.json());let l=await fetch("/api/pxpipe/health",{method:"POST"});j(await l.json())}catch{}finally{S(!1)}},[]);(0,l.useEffect)(()=>{P()},[P]);let E=b?.windows?.[v],$=e?e.installed?s?.healthy?"Healthy":e.running?"Running":"Stopped":"Not installed":"—";return(0,a.jsxs)("div",{className:"space-y-6 p-6",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-3",children:[(0,a.jsxs)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary",children:"image"}),"PXPIPE Dashboard"]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("a",{href:"/dashboard/token-saver",className:"text-xs text-primary underline hover:opacity-80",children:"Token Saver settings"}),(0,a.jsx)(m.$n,{size:"sm",variant:"ghost",onClick:P,disabled:k,children:k?"Refreshing…":"Refresh"})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3",children:[(0,a.jsx)(g,{label:"Status",value:$,tone:s?.healthy?"text-success":e?.installed?"text-warning":"text-text-muted",sub:e?.enabled?"Enabled in pipeline":"Disabled in pipeline"}),(0,a.jsx)(g,{label:"Version",value:e?.version?`v${e.version}`:"—",sub:"pxpipe-proxy"}),(0,a.jsx)(g,{label:"Uptime",value:(e=>{if(!e||e<=0)return"—";let t=Math.floor(e/6e4),s=Math.floor(t/60);return s>0?`${s}h${String(t%60).padStart(2,"0")}m`:`${t}m`})(e?.uptimeMs),sub:"module loaded"}),(0,a.jsx)(g,{label:"Requests",value:E?E.requests.toLocaleString():"—"}),(0,a.jsx)(g,{label:"Compressed",value:E?E.compressed.toLocaleString():"—",tone:"text-success"}),(0,a.jsx)(g,{label:"Bypassed",value:E?E.bypassed.toLocaleString():"—"})]}),(0,a.jsxs)(m.Zp,{className:"p-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-3 mb-4",children:[(0,a.jsx)("h3",{className:"font-medium",children:"Token savings (estimated)"}),(0,a.jsx)("div",{className:"flex items-center gap-1 rounded-lg border border-border bg-bg-subtle p-1",children:h.map(e=>(0,a.jsx)("button",{onClick:()=>w(e.id),className:`px-3 py-1 rounded-md text-xs font-medium transition-colors ${v===e.id?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:e.label},e.id))})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-center",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Original tokens"}),(0,a.jsx)("p",{className:"text-lg font-semibold",children:E?p(E.tokensBeforeEst):"—"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"After PXPIPE"}),(0,a.jsx)("p",{className:"text-lg font-semibold",children:E?p(E.tokensAfterEst):"—"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Saved"}),(0,a.jsx)("p",{className:"text-lg font-semibold text-success",children:E?p(E.tokensSavedEst):"—"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Reduction"}),(0,a.jsx)("p",{className:"text-lg font-semibold text-success",children:E?`${E.savedPct}%`:"—"})]})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted mt-3",children:["Estimates from body size before/after imaging; billed usage per request (recorded on the Usage page) remains the ground truth. Images generated:"," ",E?E.imagesGenerated.toLocaleString():"—"," \xb7 avg compression time:"," ",E?`${E.avgCompressionMs}ms`:"—"," \xb7 errors: ",E?E.errors:"—"]})]}),(0,a.jsxs)(m.Zp,{className:"p-4",children:[(0,a.jsx)("h3",{className:"font-medium mb-3",children:"Tokens saved — last 30 days"}),b?.timeline?.some(e=>e.tokensSavedEst>0)?(0,a.jsx)(r.u,{width:"100%",height:220,children:(0,a.jsxs)(i.Q,{data:b.timeline,margin:{top:4,right:8,left:0,bottom:0},children:[(0,a.jsx)("defs",{children:(0,a.jsxs)("linearGradient",{id:"gradPxpipe",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"5%",stopColor:"#10b981",stopOpacity:.25}),(0,a.jsx)("stop",{offset:"95%",stopColor:"#10b981",stopOpacity:0})]})}),(0,a.jsx)(d.d,{strokeDasharray:"3 3",strokeOpacity:.2}),(0,a.jsx)(n.W,{dataKey:"date",tick:{fontSize:11},tickFormatter:e=>e.slice(5)}),(0,a.jsx)(o.h,{tick:{fontSize:11},tickFormatter:p,width:48}),(0,a.jsx)(x.m,{formatter:e=>[p(e),"Tokens saved"],labelFormatter:e=>e}),(0,a.jsx)(c.Gk,{type:"monotone",dataKey:"tokensSavedEst",stroke:"#10b981",fill:"url(#gradPxpipe)",strokeWidth:2})]})}):(0,a.jsx)("div",{className:"h-32 flex items-center justify-center text-text-muted text-sm",children:"No savings recorded yet — enable PXPIPE in the Token Saver and route a large Claude-format request."})]}),(0,a.jsxs)(m.Zp,{className:"p-4",children:[(0,a.jsx)("h3",{className:"font-medium mb-3",children:"History"}),(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full text-sm",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:"text-left text-xs text-text-muted border-b border-border",children:[(0,a.jsx)("th",{className:"py-2 pr-3",children:"Time"}),(0,a.jsx)("th",{className:"py-2 pr-3",children:"Model"}),(0,a.jsx)("th",{className:"py-2 pr-3 text-right",children:"Original"}),(0,a.jsx)("th",{className:"py-2 pr-3 text-right",children:"Compressed"}),(0,a.jsx)("th",{className:"py-2 pr-3 text-right",children:"Saved"}),(0,a.jsx)("th",{className:"py-2 pr-3 text-right",children:"%"}),(0,a.jsx)("th",{className:"py-2 pr-3 text-right",children:"Duration"}),(0,a.jsx)("th",{className:"py-2",children:"Status"})]})}),(0,a.jsxs)("tbody",{children:[(b?.recent||[]).slice(0,50).map((e,t)=>(0,a.jsxs)("tr",{className:"border-b border-border/50",children:[(0,a.jsx)("td",{className:"py-1.5 pr-3 whitespace-nowrap text-text-muted",children:new Date(e.ts).toLocaleString()}),(0,a.jsx)("td",{className:"py-1.5 pr-3 font-mono text-xs",children:e.provider?`${e.provider}/${e.model}`:e.model||"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3 text-right font-mono text-xs",children:e.applied?p(e.tokensBeforeEst):"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3 text-right font-mono text-xs",children:e.applied?p(e.tokensAfterEst):"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3 text-right font-mono text-xs text-success",children:e.applied?p(e.tokensSavedEst):"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3 text-right font-mono text-xs",children:e.applied?`${e.savedPct}%`:"—"}),(0,a.jsx)("td",{className:"py-1.5 pr-3 text-right font-mono text-xs",children:null!=e.durationMs?`${e.durationMs}ms`:"—"}),(0,a.jsx)("td",{className:"py-1.5",children:(0,a.jsx)("span",{className:`text-xs px-2 py-0.5 rounded ${e.applied?"bg-success/15 text-success":"transform_error"===e.reason||"timeout"===e.reason?"bg-danger/15 text-danger":"bg-warning/15 text-warning"}`,title:e.detail||"",children:e.applied?"Compressed":u[e.reason]||e.reason})})]},`${e.ts}-${t}`)),(!b?.recent||0===b.recent.length)&&(0,a.jsx)("tr",{children:(0,a.jsx)("td",{colSpan:8,className:"py-6 text-center text-text-muted text-sm",children:"No PXPIPE activity yet"})})]})]})})]}),(0,a.jsxs)(m.Zp,{className:"p-4",id:"logs",children:[(0,a.jsx)("h3",{className:"font-medium mb-3",children:"PXPIPE Logs"}),N?.installLog?(0,a.jsx)("pre",{className:"rounded bg-black/5 dark:bg-white/5 p-3 text-xs font-mono overflow-x-auto max-h-64 overflow-y-auto whitespace-pre-wrap",children:N.installLog}):(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"No install log yet."})]})]})}}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=24946)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3826],{7162:(e,t,a)=>{"use strict";a.d(t,{default:()=>P});var r=a(94799),n=a(34023),s=a(94994),i=a(29326);function l(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0}function o(e,t){if(!t||"object"!=typeof t)return[];let a=[];try{switch(e.toLowerCase()){case"github":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{a.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])=>{a.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])=>{a.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])=>{a.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"qoder":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{("organization"!==e||t&&0!==(Number(t.total)||0))&&a.push({name:"user"===e?"Personal":"organization"===e?"Organization":e,used:t.used||0,total:t.total||0,unit:t.unit,resetAt:t.resetAt||null})});break;case"autoclaw":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{a.push({name:"points"===e?"Points":e,used:t.used||0,total:t.total||0,unit:t.unit,resetAt:t.resetAt||null})});break;case"claude":t.message?a.push({name:"error",used:0,total:0,resetAt:null,message:t.message}):t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{a.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"grok-cli":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{let r=!0===t.unlimited||!(t.total>0)&&t.remainingPercentage>0;a.push({name:e,used:t.used||0,total:r?0:t.total||0,resetAt:t.resetAt||null,remainingPercentage:null!=t.remainingPercentage?t.remainingPercentage:r?100:void 0,unlimited:r})});break;case"cloudflare-ai":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{let r=!0===t.unlimited||!(t.total>0);a.push({name:e,used:t.used||0,total:r?0:t.total||0,resetAt:t.resetAt||null,remainingPercentage:null!=t.remainingPercentage?t.remainingPercentage:100*!!r,unlimited:r})});break;default:t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{a.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,...null!=t.remainingPercentage?{remainingPercentage:t.remainingPercentage}:{},...!0===t.unlimited?{unlimited:!0}:{}})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let r=(0,i.KC)(e);if(r.length>0){let e=new Map(r.map((e,t)=>[e.id,t]));a.sort((t,a)=>{let r=t.modelKey||t.name,n=a.modelKey||a.name;return(e.get(r)??999)-(e.get(n)??999)})}return a}function c({quotas:e=[],compact:t=!1,sortMode:a="default",showSortLabel:s=!1}){let[i,o]=(0,n.useState)(1),d=(0,n.useMemo)(()=>e.map((e,t)=>({...e,index:t,remaining:function(e){if(e?.unlimited===!0)return e?.remainingPercentage!==void 0&&Number.isFinite(Number(e.remainingPercentage))?Math.max(0,Math.min(100,Math.round(Number(e.remainingPercentage)))):100;if(e?.remainingPercentage!==void 0&&Number.isFinite(Number(e.remainingPercentage)))return Math.max(0,Math.min(100,Math.round(Number(e.remainingPercentage))));if(e?.remaining!==void 0&&Number.isFinite(Number(e.remaining))){let t=Number(e.remaining);if(t>=0&&t<=100&&!(e.total>100&&t<=100&&null!=e.used))return e.total>0?l(e.used,e.total):Math.round(t)}return l(e?.used,e?.total)}(e)})),[e]),u=(0,n.useMemo)(()=>"remaining-asc"===a?[...d].sort((e,t)=>e.remaining-t.remaining||e.name.localeCompare(t.name)):"remaining-desc"===a?[...d].sort((e,t)=>t.remaining-e.remaining||e.name.localeCompare(t.name)):d,[d,a]),m=Math.max(1,Math.ceil(u.length/10));if((0,n.useEffect)(()=>{o(1)},[a,e]),(0,n.useEffect)(()=>{o(e=>Math.min(e,m))},[m]),!e||0===e.length)return null;let x=u.slice((i-1)*10,10*i),h=0===u.length?0:(i-1)*10+1,b=Math.min(10*i,u.length),p=t?"py-1 px-1.5":"py-2 px-3",g=t?"text-[11px]":"text-sm",f=t?"text-[11px]":"text-sm",v=t?"text-[10px] leading-tight":"text-xs";return(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,r.jsxs)("div",{className:"text-[10px] text-text-muted",children:[u.length," quota",u.length>1?"s":""]}),s&&(0,r.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,r.jsx)("div",{className:"overflow-x-auto",children:(0,r.jsx)("table",{className:"w-full table-fixed text-left",children:(0,r.jsx)("tbody",{children:x.map(e=>{var a;let n=(a=e.remaining)>70?{text:"text-green-600 dark:text-green-400",bg:"bg-green-500",bgLight:"bg-green-500/10",emoji:"\uD83D\uDFE2"}:a>=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,a=new Date,r=t-a;if(r<=0)return"-";let n=Math.ceil(r/6e4);if(n<60)return`${n}m`;let s=Math.floor(n/60),i=n%60;if(s<24)return`${s}h ${i}m`;let l=Math.floor(s/24);return`${l}d ${s%24}h ${i}m`}catch(e){return"-"}}(e.resetAt),i=function(e){if(!e)return null;try{let t=new Date(e),a=new Date,r=new Date(a.getFullYear(),a.getMonth(),a.getDate()),n=new Date(r);n.setDate(n.getDate()+1);let s="";s=t>=r&&t<n?"Today":t>=n&&t<new Date(n.getTime()+864e5)?"Tomorrow":t.toLocaleDateString("en-US",{month:"short",day:"numeric"});let i=t.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return`${s}, ${i}`}catch{return null}}(e.resetAt);return(0,r.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,r.jsx)("td",{className:`${p} w-[30%]`,children:(0,r.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,r.jsx)("span",{className:"text-[10px] shrink-0",children:n.emoji}),(0,r.jsx)("span",{className:`${g} font-medium text-text-primary truncate`,children:e.name})]})}),(0,r.jsx)("td",{className:`${p} w-[45%]`,children:(0,r.jsxs)("div",{className:t?"space-y-1":"space-y-1.5",children:[(0,r.jsx)("div",{className:`${t?"h-1":"h-1.5"} rounded-full overflow-hidden border ${n.bgLight} ${0===e.remaining?"border-black/10 dark:border-white/10":"border-transparent"}`,children:(0,r.jsx)("div",{className:`h-full transition-all duration-300 ${n.bg}`,style:{width:`${Math.min(e.remaining,100)}%`}})}),(0,r.jsxs)("div",{className:`flex items-center justify-between ${t?"text-[10px]":"text-xs"}`,children:[(0,r.jsx)("span",{className:"text-text-muted",children:!0!==e.unlimited&&e.total>0?`${e.used.toLocaleString()} / ${e.total.toLocaleString()}`:!0===e.unlimited?"Included / ∞":`${e.used.toLocaleString()} / ∞`}),(0,r.jsx)("span",{className:`font-medium ${n.text}`,children:Number.isFinite(e.remaining)?`${e.remaining}%`:"—"})]})]})}),(0,r.jsx)("td",{className:`${p} w-[25%]`,children:"-"!==s||i?t?(0,r.jsx)("div",{className:`${f} text-text-primary font-medium truncate`,title:i||"",children:"-"!==s?`in ${s}`:i}):(0,r.jsxs)("div",{className:"space-y-0.5",children:["-"!==s&&(0,r.jsxs)("div",{className:`${f} text-text-primary font-medium`,children:["in ",s]}),i&&(0,r.jsx)("div",{className:`${v} text-text-muted`,children:i})]}):(0,r.jsx)("div",{className:`${f} text-text-muted italic`,children:"N/A"})})]},`${e.name}-${e.index}`)})})})}),m>1&&(0,r.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,r.jsxs)("div",{className:"flex items-center justify-between gap-2 text-[10px] text-text-muted",children:[(0,r.jsxs)("span",{children:["Showing ",h,"-",b," of ",u.length]}),(0,r.jsxs)("span",{children:["Page ",i," / ",m]})]}),(0,r.jsxs)("div",{className:"mt-1.5 flex items-center justify-end gap-1",children:[(0,r.jsx)("button",{type:"button",onClick:()=>o(e=>Math.max(1,e-1)),disabled:1===i,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,r.jsx)("button",{type:"button",onClick:()=>o(e=>Math.min(m,e+1)),disabled:i===m,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 d=a(39774),u=a(47420),m=a(77783),x=a(45303);function h(e){let t=e=>"string"==typeof e&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e);return t(e.email)?e.email:(t(e.name),e.name)}function b(e,t){let a=t[e.id]?.quotas?.[0];return a&&"number"==typeof a.remaining?a.remaining:1/0}function p(e){return x.Q2[e]?.name||e}function g(e){let t={};return e.forEach(e=>{t[e.id]=!0}),t}function f(e,t){let a=new Set(t.map(e=>e.id));return Object.fromEntries(Object.entries(e).filter(([e])=>a.has(e)))}async function v(e,t){return await e(t)}let y="quotaCacheData";function k(){try{let e=window.localStorage.getItem(y);return e?JSON.parse(e):{}}catch(e){return console.error("Error reading quota cache:",e),{}}}function w(e,t){try{let a=k();a[e]={...t,cachedAt:new Date().toISOString()},window.localStorage.setItem(y,JSON.stringify(a))}catch(e){console.error("Error writing quota cache:",e)}}let j="quotaAutoRefresh",N=[{value:"all",label:"All accounts"},{value:"active",label:"Active"},{value:"inactive",label:"Turned off"}],S=[{value:"single",label:"Satuan",icon:"account_circle"},{value:"bulk",label:"Bulk",icon:"stacks"}],C=[{value:"default",label:"Default quota order"},{value:"remaining-asc",label:"% quota: low to high"},{value:"remaining-desc",label:"% quota: high to low"}],$=[10,20,50,100];function P(){let[e,t]=(0,n.useState)([]),[a,i]=(0,n.useState)({}),[P,A]=(0,n.useState)({}),[q,E]=(0,n.useState)({}),[M,D]=(0,n.useState)(!0),[O,I]=(0,n.useState)(null),[T,_]=(0,n.useState)(!1),[F,L]=(0,n.useState)(!1),[z,U]=(0,n.useState)(60),[R,J]=(0,n.useState)(!0),[K,B]=(0,n.useState)(null),[Q,W]=(0,n.useState)(null),[G,H]=(0,n.useState)(!1),[Y,V]=(0,n.useState)(null),[X,Z]=(0,n.useState)([]),[ee,et]=(0,n.useState)("all"),[ea,er]=(0,n.useState)([]),[en,es]=(0,n.useState)("single"),[ei,el]=(0,n.useState)("all"),[eo,ec]=(0,n.useState)("default"),[ed,eu]=(0,n.useState)(!1),[em,ex]=(0,n.useState)(!1),[eh,eb]=(0,n.useState)(!1),[ep,eg]=(0,n.useState)({}),[ef,ev]=(0,n.useState)({}),[ey,ek]=(0,n.useState)(1),[ew,ej]=(0,n.useState)(20),[eN,eS]=(0,n.useState)(String(20)),[eC,e$]=(0,n.useState)({page:1,pageSize:20,total:0,totalPages:1}),[eP,eA]=(0,n.useState)({eligibleConnections:0,providerFilteredConnections:0}),eq=(0,n.useRef)(null),eE=(0,n.useRef)(null),eM=(0,n.useCallback)(async(e=ey)=>{try{var a,r;let n=new URLSearchParams({page:String(e),pageSize:String(ew),accountStatus:ei,sort:"priority"});"all"!==ee&&n.set("provider",ee);let s=await fetch(`/api/providers/client?${n.toString()}`);if(!s.ok)throw Error("Failed to fetch connections");let i=await s.json(),l=i.connections||[],o=(a=i.pagination,a||{page:1,pageSize:ew,total:0,totalPages:1}),c=function(e,t=0){return e||{eligibleConnections:t,providerFilteredConnections:t}}(i.totals,l.length);return t(l),er(i.providerOptions||[]),e$(o),eA(c),ek((r=i.pagination,r?.page||e)),l}catch(e){return console.error("Error fetching connections:",e),t([]),er([]),e$({page:1,pageSize:ew,total:0,totalPages:1}),eA({eligibleConnections:0,providerFilteredConnections:0}),[]}},[ei,ey,ew,ee]),eD=(0,n.useCallback)(async(e,t,a=!1)=>{A(t=>({...t,[e]:!0})),E(t=>({...t,[e]:null}));try{console.log(`[ProviderLimits] Fetching quota for ${t} (${e})`);let r=await fetch(`/api/usage/${e}${a?"?refresh=1":""}`);if(!r.ok){let a=(await r.json().catch(()=>({}))).error||r.statusText;if(404===r.status)return void console.warn(`[ProviderLimits] Connection not found for ${t}, skipping`);if(401===r.status){console.warn(`[ProviderLimits] Auth error for ${t}:`,a);let r={quotas:[],message:a};i(t=>({...t,[e]:r})),w(e,r);return}throw Error(`HTTP ${r.status}: ${a}`)}let n=await r.json();console.log(`[ProviderLimits] Got quota for ${t}:`,n);let s={quotas:o(t,n),plan:n.plan||null,message:n.message||null,raw:n};i(t=>({...t,[e]:s})),w(e,s)}catch(a){console.error(`[ProviderLimits] Error fetching quota for ${t} (${e}):`,a),E(t=>({...t,[e]:a.message||"Failed to fetch quota"}))}finally{A(t=>({...t,[e]:!1}))}},[]),eO=(0,n.useCallback)(async(e,t)=>{await eD(e,t),I(new Date)},[eD]),eI=(0,n.useCallback)(async(e,t=!1)=>{if(e&&"all"!==e){ev(t=>({...t,[e]:!0}));try{let a=`/api/usage/aggregate?provider=${encodeURIComponent(e)}${t?"&refresh=1":""}`,r=await fetch(a);if(!r.ok)throw Error("Failed to fetch aggregate");let n=await r.json(),s=o(e,n);eg(t=>({...t,[e]:{quotas:s,plan:n.plan||null,accountCount:n.accountCount||0,accountsWithQuota:n.accountsWithQuota||0,deadCount:n.deadCount||0}}))}catch(t){console.error(`[ProviderLimits] Aggregate fetch error for ${e}:`,t)}finally{ev(t=>({...t,[e]:!1}))}}},[]),eT=(0,n.useCallback)(async(e,t)=>{if("bulk"===en&&t){await eI(t,!0),I(new Date);return}e?.length&&(A(t=>({...t,...Object.fromEntries(e.map(e=>[e,!0]))})),await Promise.all(e.map(e=>eD(e,t))),I(new Date))},[eD,en,eI]),e_=(0,n.useCallback)(async e=>{if(confirm("Delete this connection?")){B(e);try{if((await fetch(`/api/providers/${e}`,{method:"DELETE"})).ok){i(t=>{let a={...t};return delete a[e],a}),A(t=>{let a={...t};return delete a[e],a}),E(t=>{let a={...t};return delete a[e],a});try{let t=k();t[e]&&(delete t[e],window.localStorage.setItem(y,JSON.stringify(t)))}catch(e){console.error("Error deleting cache entry:",e)}await v(eM,ey)}}catch(e){console.error("Error deleting connection:",e)}finally{B(null)}}},[eM,ey]),eF=(0,n.useCallback)(async(e,t)=>{W(e);try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&(i(e=>({...e})),await v(eM,ey))}catch(e){console.error("Error updating connection status:",e)}finally{W(null)}},[eM,ey]),eL=(0,n.useCallback)(async e=>{if(!Y?.id)return;let t=Y.id,a=Y.provider;try{(await fetch(`/api/providers/${t}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(await eM(),H(!1),V(null),x.wb.includes(a)&&await eD(t,a))}catch(e){console.error("Error saving connection:",e)}},[Y,eM,eD]);(0,n.useEffect)(()=>{let e=!1;return fetch("/api/proxy-pools?isActive=true",{cache:"no-store"}).then(e=>e.json()).then(t=>{!e&&t?.proxyPools&&Z(t.proxyPools)}).catch(()=>{}),()=>{e=!0}},[]);let ez=(0,n.useCallback)(async()=>{if(!F){L(!0),U(60);try{let e=await eM(ey);A(g(e)),E(t=>f(t,e)),i(t=>f(t,e)),await Promise.all(e.map(e=>eD(e.id,e.provider,!0))),"bulk"===en&&("all"!==ee?[ee]:ea.map(e=>e.value||e).filter(e=>"all"!==e)).forEach(e=>eI(e,!0)),I(new Date)}catch(e){console.error("Error refreshing all providers:",e)}finally{L(!1)}}},[F,eM,eD,ey,en,ee,ea,eI]);(0,n.useEffect)(()=>{(async()=>{J(!0);let e=await eM(ey);J(!1),A(g(e)),E(t=>f(t,e)),i(t=>f(t,e)),await Promise.all(e.map(e=>eD(e.id,e.provider))),I(new Date)})()},[eM,eD,ey]),(0,n.useEffect)(()=>{"bulk"!==en||("all"!==ee?[ee]:ea.map(e=>e.value||e).filter(e=>"all"!==e)).forEach(e=>eI(e))},[en,ee,ea,eI]),(0,n.useEffect)(()=>{let e=window.localStorage.getItem(j);D(null===e||"true"===e),_(!0)},[]),(0,n.useEffect)(()=>{T&&window.localStorage.setItem(j,String(M))},[M,T]),(0,n.useEffect)(()=>{if(!T||!M){eq.current&&(clearInterval(eq.current),eq.current=null),eE.current&&(clearInterval(eE.current),eE.current=null);return}return eq.current=setInterval(()=>{ez()},6e4),eE.current=setInterval(()=>{U(e=>e<=1?60:e-1)},1e3),()=>{eq.current&&clearInterval(eq.current),eE.current&&clearInterval(eE.current)}},[M,ez,T]),(0,n.useEffect)(()=>{let e=()=>{document.hidden?(eq.current&&(clearInterval(eq.current),eq.current=null),eE.current&&(clearInterval(eE.current),eE.current=null)):M&&T&&(eq.current=setInterval(ez,6e4),eE.current=setInterval(()=>{U(e=>e<=1?60:e-1)},1e3))};return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[M,ez,T]);let eU=(0,n.useMemo)(()=>(function(e,t,a,r,n){if("codex"===r&&"default"!==n)return[...e].sort((e,a)=>{let r=b(e,t),s=b(a,t),i="remaining-asc"===n?r-s:s-r;return 0!==i?i:(h(e)||"").localeCompare(h(a)||"")});if(!a)return e;let s=e=>{let a=(t[e.id]?.quotas||[]).map(e=>e.resetAt?new Date(e.resetAt).getTime():1/0).filter(e=>Number.isFinite(e));return a.length>0?Math.min(...a):1/0};return[...e].sort((e,t)=>{let a=s(e)-s(t);return 0!==a?a:(e.provider||"").localeCompare(t.provider||"")||(h(e)||"").localeCompare(h(t)||"")})})(e,a,ed,ee,eo),[e,a,ed,ee,eo]),eR=(0,n.useMemo)(()=>{let e;return e=new Map,eU.forEach(t=>{t.provider&&(e.has(t.provider)||e.set(t.provider,[]),e.get(t.provider).push(t))}),[...e.entries()].map(([e,t])=>(function(e,t,a,r,n){if(!t.length)return null;let s=[],i=[],l=null,o=!1;return t.forEach(e=>{let t=a[e.id];Array.isArray(t?.quotas)&&s.push(...t.quotas),t?.message&&!l&&(l=t.message),n[e.id]&&i.push(n[e.id]),r[e.id]&&(o=!0)}),{id:`${e}-aggregate`,provider:e,name:p(e),email:`${t.length} accounts`,isActive:t.some(e=>e.isActive??!0),isAggregate:!0,quota:{quotas:function(e=[]){let t=new Map;return e.forEach(e=>{if(!e?.name)return;let a=t.get(e.name)||{name:e.name,used:0,total:0,resetAt:e.resetAt||null,remainingPercentage:null,unlimited:!1,_pctSum:0,_pctCount:0};a.used+=Number(e.used)||0,a.total+=Number(e.total)||0,!0===e.unlimited&&(a.unlimited=!0),null!=e.remainingPercentage&&Number.isFinite(Number(e.remainingPercentage))&&(a._pctSum+=Number(e.remainingPercentage),a._pctCount+=1),e.resetAt&&(!a.resetAt||new Date(e.resetAt).getTime()<new Date(a.resetAt).getTime())&&(a.resetAt=e.resetAt),t.set(e.name,a)}),[...t.values()].map(e=>{let{_pctSum:t,_pctCount:a,...r}=e;return r.unlimited?(r.remainingPercentage=100,r.total=0):r.total>0?r.remainingPercentage=(r.total-r.used)/r.total*100:a>0?r.remainingPercentage=t/a:r.remainingPercentage=0,r})}(s),message:0===s.length&&l||null},isLoading:o,error:!s.length&&i.length>0?i[0]:null,connectionIds:t.map(e=>e.id)}})(e,t,a,P,q)).filter(Boolean)},[eU,a,P,q]),eJ=(0,n.useMemo)(()=>Object.keys(ep).length?eR.map(e=>{let t=ep[e.provider];return t&&t.quotas?.length?{...e,email:`${t.accountCount||e.connectionIds?.length||0} accounts`,quota:{...e.quota,quotas:t.quotas,message:null},isLoading:ef[e.provider]||!1}:e}):eR,[eR,ep,ef]),eK=(0,n.useMemo)(()=>"bulk"===en?eJ:eU,[en,eJ,eU]),eB=e=>{let t=a[e.id]?.quotas;return!!t?.length&&t.some(e=>!!e.total&&!(e.total<=0)&&5>=l(e.used,e.total))},eQ=(0,n.useCallback)(async(e,t)=>{if(e.length&&!eh){eb(!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 v(eM,ey)}catch(e){console.error("Error bulk toggling connections:",e)}finally{eb(!1)}}},[eh,eM,ey]),eW="all"===ee?"All providers":ee,eG=eP.eligibleConnections>0,eH=eK.length>0,eY=eP.eligibleConnections?eP.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"===ee?"Try changing the account status filter to see more quota trackers.":`No ${"inactive"===ei?"turned off":"active"===ei?"active":"matching"} accounts found for ${ee}.`}:{icon:"cloud_off",title:"No Providers Connected",description:"Connect to providers with OAuth to track your API quota limits and usage."},eV=function(e){var t;let{start:a,end:r}=(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 ${a}-${r} of ${e.total}`}(eC),eX=!$.includes(ew);return R||eG?R||eH?(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-end",children:(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>ex(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":em,title:"Filter quota providers",children:[(0,r.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:["all"===ee?(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"apps"}):(0,r.jsx)(s.A,{src:`/providers/${ee}.png`,alt:ee,size:18,className:"size-[18px] rounded object-contain",fallbackText:ee.slice(0,2).toUpperCase()}),(0,r.jsx)("span",{className:"truncate capitalize hidden lg:inline",children:eW})]}),(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"expand_more"})]}),em&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",className:"fixed inset-0 z-30 bg-transparent","aria-label":"Close provider filter",onClick:()=>ex(!1)}),(0,r.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,r.jsxs)("button",{type:"button",onClick:()=>{"all"!==ee&&ek(1),et("all"),ex(!1)},className:`flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left text-sm transition-colors ${"all"===ee?"bg-primary/10 text-primary":"text-text-primary hover:bg-black/5 dark:hover:bg-white/10"}`,children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[22px]",children:"apps"}),(0,r.jsx)("span",{className:"font-medium",children:"All providers"}),"all"===ee&&(0,r.jsx)("span",{className:"material-symbols-outlined ml-auto text-[20px]",children:"check"})]}),(0,r.jsx)("div",{className:"my-1 h-px bg-black/10 dark:bg-white/10"}),(0,r.jsx)("div",{className:"max-h-72 overflow-y-auto pr-1",children:ea.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>{ee!==e&&ek(1),et(e),ex(!1)},className:`flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left text-sm transition-colors ${ee===e?"bg-primary/10 text-primary":"text-text-primary hover:bg-black/5 dark:hover:bg-white/10"}`,children:[(0,r.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,r.jsx)("span",{className:"font-medium capitalize",children:e}),ee===e&&(0,r.jsx)("span",{className:"material-symbols-outlined ml-auto text-[20px]",children:"check"})]},e))})]})]})]}),(0,r.jsx)("div",{className:"inline-flex h-8 overflow-hidden rounded-lg border border-black/10 bg-black/[0.02] dark:border-white/10 dark:bg-white/[0.03]",children:S.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>es(e.value),"aria-pressed":en===e.value,className:`flex h-full items-center gap-1.5 px-2 text-xs transition-colors ${en===e.value?"bg-primary text-white":"text-text-primary hover:bg-black/5 dark:hover:bg-white/10"}`,title:`Show quota in ${e.label} mode`,children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:e.icon}),(0,r.jsx)("span",{className:"hidden sm:inline",children:e.label})]},e.value))}),(0,r.jsx)("select",{value:ei,onChange:e=>{let t=e.target.value;ei!==t&&ek(1),el(t)},className:"h-8 rounded-lg border border-black/10 bg-black/[0.02] px-2 text-xs text-text-primary outline-none transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10","aria-label":"Filter accounts by status",children:N.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))}),"codex"===ee&&(0,r.jsx)("select",{value:eo,onChange:e=>ec(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:C.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))}),(0,r.jsxs)("button",{type:"button",onClick:()=>eu(e=>!e),"aria-pressed":ed,className:`flex h-8 shrink-0 items-center gap-1 rounded-lg border px-2 text-xs transition-colors ${ed?"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,r.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"hourglass_top"}),(0,r.jsx)("span",{className:"hidden sm:inline",children:"Expiring first"})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>{eQ(eU.filter(e=>(e.isActive??!0)&&eB(e)).map(e=>e.id),!1)},disabled:eh,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,r.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"block"}),(0,r.jsx)("span",{className:"hidden sm:inline",children:"Turn off Empty"})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>{eQ(eU.filter(e=>!(e.isActive??!0)&&!eB(e)).map(e=>e.id),!0)},disabled:eh,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,r.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"check_circle"}),(0,r.jsx)("span",{className:"hidden sm:inline",children:"Turn on Available"})]}),(0,r.jsxs)("button",{onClick:()=>D(e=>!e),className:"flex h-8 shrink-0 items-center gap-1 rounded-lg border border-black/10 px-2 text-xs transition-colors hover:bg-black/5 dark:border-white/10 dark:hover:bg-white/5",title:M?"Disable auto-refresh":"Enable auto-refresh",children:[(0,r.jsx)("span",{className:`material-symbols-outlined text-[14px] ${M?"text-primary":"text-text-muted"}`,children:M?"toggle_on":"toggle_off"}),(0,r.jsx)("span",{className:"hidden text-text-primary sm:inline",children:"Auto-refresh"}),M&&(0,r.jsxs)("span",{className:"text-[10px] text-text-muted tabular-nums",children:["(",z,"s)"]})]}),(0,r.jsx)("button",{type:"button",onClick:ez,disabled:F,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,r.jsx)("span",{className:`material-symbols-outlined text-[14px] ${F?"animate-spin":""}`,children:"refresh"})})]})}),ed&&(0,r.jsx)("div",{className:"rounded-xl border border-amber-500/20 bg-amber-500/10 px-3 py-2 text-xs text-amber-700 dark:text-amber-300",children:"Expiring-first currently reorders accounts inside the current page. Cross-page ordering still follows backend pagination."}),(0,r.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:eK.map(e=>{let t=!0===e.isAggregate,n=t?e.quota:a[e.id],i=t?e.isLoading:P[e.id],l=t?e.error:q[e.id],o=!1===e.isActive,m=!t&&(K===e.id||Q===e.id);return(0,r.jsxs)(u.default,{padding:"none",className:`min-w-0 ${o?"opacity-60":""}`,children:[(0,r.jsx)("div",{className:"px-3 py-2 border-b border-black/10 dark:border-white/10",children:(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,r.jsx)("div",{className:"w-8 h-8 shrink-0 rounded-md flex items-center justify-center overflow-hidden",children:(0,r.jsx)(s.A,{src:`/providers/${e.provider}.png`,alt:e.provider,size:32,className:"object-contain",fallbackText:e.provider?.slice(0,2).toUpperCase()||"PR"})}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-text-primary capitalize truncate",children:e.name||p(e.provider)}),h(e)?(0,r.jsx)("p",{className:"text-xs text-text-muted truncate",children:h(e)}):null]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,r.jsx)("button",{type:"button",onClick:()=>t?eT(e.connectionIds,e.provider):eO(e.id,e.provider),disabled:i||m,"aria-label":"Refresh quota",className:"p-1.5 rounded-lg hover:bg-black/5 dark:hover:bg-white/5 transition-colors disabled:opacity-50",title:"Refresh quota",children:(0,r.jsx)("span",{className:`material-symbols-outlined text-[18px] text-text-muted ${i?"animate-spin":""}`,children:"refresh"})}),!t&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:()=>{V(e),H(!0)},disabled:m,"aria-label":"Edit connection",className:"p-1.5 rounded-lg hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary transition-colors disabled:opacity-50",title:"Edit connection",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,r.jsx)("button",{type:"button",onClick:()=>e_(e.id),disabled:m,"aria-label":"Delete connection",className:"p-1.5 rounded-lg hover:bg-red-500/10 text-red-500 transition-colors disabled:opacity-50",title:"Delete connection",children:(0,r.jsx)("span",{className:`material-symbols-outlined text-[18px] ${K===e.id?"animate-pulse":""}`,children:"delete"})}),(0,r.jsx)("div",{className:"inline-flex items-center pl-0.5",title:e.isActive??!0?"Disable connection":"Enable connection",children:(0,r.jsx)(d.default,{size:"sm",checked:e.isActive??!0,disabled:m,onChange:t=>eF(e.id,t)})})]})]})]})}),(0,r.jsx)("div",{className:"px-2 py-1.5",children:i?(0,r.jsx)("div",{className:"text-center py-5 text-text-muted",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[28px] animate-spin",children:"progress_activity"})}):l?(0,r.jsxs)("div",{className:"text-center py-5",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[28px] text-red-500",children:"error"}),(0,r.jsx)("p",{className:"mt-1.5 text-xs text-text-muted",children:l})]}):n?.quotas?.length>0?(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(c,{quotas:n.quotas,compact:!0,sortMode:"default",showSortLabel:"codex"===e.provider&&"default"!==eo}),n?.message?(0,r.jsx)("p",{className:"px-1 text-[10px] text-text-muted",children:n.message}):null]}):n?.message?(0,r.jsx)("div",{className:"text-center py-5",children:(0,r.jsx)("p",{className:"text-xs text-text-muted",children:n.message})}):(0,r.jsx)("div",{className:"text-center py-5 text-text-muted",children:(0,r.jsx)("p",{className:"text-xs",children:"No quota data available"})})})]},e.id)})}),(0,r.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,r.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,r.jsx)("span",{className:"text-xs text-text-muted",children:eV}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsxs)("select",{value:eX?"custom":String(ew),onChange:e=>{let t=e.target.value;if("custom"===t)return;let a=Number.parseInt(t,10);Number.isFinite(a)&&(ek(1),ej(a),eS(String(a)))},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:[$.map(e=>(0,r.jsxs)("option",{value:String(e),children:[e," / page"]},e)),(0,r.jsx)("option",{value:"custom",children:"Custom"})]}),(0,r.jsx)("input",{type:"number",min:"1",max:String(500),inputMode:"numeric",value:eN,onChange:e=>eS(e.target.value),onBlur:()=>{let e=Number.parseInt(eN,10);if(!Number.isFinite(e))return void eS(String(ew));let t=Math.min(500,Math.max(1,e));ek(1),ej(t),eS(String(t))},onKeyDown:e=>{if("Enter"!==e.key)return;let t=Number.parseInt(eN,10);if(!Number.isFinite(t))return void eS(String(ew));let a=Math.min(500,Math.max(1,t));ek(1),ej(a),eS(String(a))},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,r.jsxs)("span",{className:"text-xs text-text-muted",children:["Page ",eC.page," / ",eC.totalPages]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("button",{type:"button",onClick:()=>ek(1),disabled:eC.page<=1||R||F,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,r.jsx)("button",{type:"button",onClick:()=>ek(e=>Math.max(1,e-1)),disabled:eC.page<=1||R||F,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,r.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"chevron_left"})}),(0,r.jsx)("button",{type:"button",onClick:()=>ek(e=>Math.min(eC.totalPages,e+1)),disabled:eC.page>=eC.totalPages||R||F,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,r.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"chevron_right"})}),(0,r.jsx)("button",{type:"button",onClick:()=>ek(eC.totalPages),disabled:eC.page>=eC.totalPages||R||F,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,r.jsx)(m.wI,{isOpen:G,connection:Y,proxyPools:X,onSave:eL,onClose:()=>{H(!1),V(null)}})]}):(0,r.jsx)(u.default,{padding:"lg",children:(0,r.jsxs)("div",{className:"text-center py-12",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[64px] text-text-muted opacity-20",children:eY.icon}),(0,r.jsx)("h3",{className:"mt-4 text-lg font-semibold text-text-primary",children:eY.title}),(0,r.jsx)("p",{className:"mt-2 text-sm text-text-muted max-w-md mx-auto",children:eY.description})]})}):(0,r.jsx)(u.default,{padding:"lg",children:(0,r.jsxs)("div",{className:"text-center py-12",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[64px] text-text-muted opacity-20",children:"cloud_off"}),(0,r.jsx)("h3",{className:"mt-4 text-lg font-semibold text-text-primary",children:"No Providers Connected"}),(0,r.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."})]})})}},76922:(e,t,a)=>{Promise.resolve().then(a.bind(a,7162)),Promise.resolve().then(a.bind(a,18126))}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=76922)),_N_E=e.O()}]);
@@ -1,4 +1,4 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3570],{1620:(e,t,r)=>{"use strict";r.d(t,{D:()=>c});var n=r(12115),a=r(90085);function s(e){let t=window.matchMedia("(prefers-color-scheme: dark)");return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function l(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function i(){return!1}function c(){let{theme:e,setTheme:t,toggleTheme:r,initTheme:c}=(0,a.A)(),o=(0,n.useSyncExternalStore)(s,l,i);(0,n.useEffect)(()=>{c()},[c]),(0,n.useEffect)(()=>{if("system"!==e)return;let t=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>c();return t.addEventListener("change",r),()=>t.removeEventListener("change",r)},[e,c]);let d="dark"===e||"system"===e&&o;return{theme:e,setTheme:t,toggleTheme:r,isDark:d}}},35765:(e,t,r)=>{"use strict";r.d(t,{default:()=>u});var n=r(95155),a=r(12115),s=r(8422),l=r(63606),i=r(52414),c=r(1620);r(82407);let o="#E56A4A",d={light:{background:"#f7f7f6",foreground:"#262626",cursor:o,cursorAccent:"#f7f7f6",selectionBackground:"rgba(229, 106, 74, 0.25)",black:"#262626",red:"#b91c1c",green:"#15803d",yellow:"#a16207",blue:"#1d4ed8",magenta:"#7e22ce",cyan:"#0e7490",white:"#e5e5e5",brightBlack:"#737373",brightRed:"#dc2626",brightGreen:"#16a34a",brightYellow:"#ca8a04",brightBlue:"#2563eb",brightMagenta:"#9333ea",brightCyan:"#0891b2",brightWhite:"#fafafa"},dark:{background:"#0d0d0d",foreground:"#e8e8e8",cursor:o,cursorAccent:"#0d0d0d",selectionBackground:"rgba(229, 106, 74, 0.35)",black:"#1a1a1a",red:"#f87171",green:"#4ade80",yellow:"#fbbf24",blue:"#60a5fa",magenta:"#c084fc",cyan:"#22d3ee",white:"#e5e5e5",brightBlack:"#737373",brightRed:"#fca5a5",brightGreen:"#86efac",brightYellow:"#fde68a",brightBlue:"#93c5fd",brightMagenta:"#d8b4fe",brightCyan:"#67e8f9",brightWhite:"#fafafa"}};function u(){let{isDark:e}=(0,c.D)(),t=(0,a.useRef)(e),r=(0,a.useRef)(null),o=(0,a.useRef)(null),u=(0,a.useRef)(null),m=(0,a.useRef)(""),h=(0,a.useRef)(""),b=(0,a.useRef)(null),f=(0,a.useRef)([]),x=(0,a.useRef)(null),p=(0,a.useRef)(!1),g=(0,a.useRef)(""),[w,y]=(0,a.useState)("checking"),[k,v]=(0,a.useState)(""),[j,N]=(0,a.useState)(!1),[E,C]=(0,a.useState)(""),[S,A]=(0,a.useState)(""),[L,T]=(0,a.useState)("connecting"),[R,O]=(0,a.useState)("Starting shell…"),[F,$]=(0,a.useState)({shell:"",mode:""}),D=(0,a.useCallback)(async()=>{v("");try{let e=await fetch("/api/terminal/auth/status",{cache:"no-store",credentials:"same-origin"}),t=await e.json().catch(()=>({}));if(403===e.status){v(t?.error||"Access forbidden."),y("unlock");return}if(401===e.status){v("Log in to the dashboard first."),y("unlock");return}if(!t.configured)return void y("setup");if(t.unlocked)return void y("open");y("unlock")}catch(e){v(e?.message||"Failed to check terminal lock"),y("unlock")}},[]);(0,a.useEffect)(()=>{D()},[D]);let M=async e=>{e.preventDefault(),N(!0),v("");try{let e=await fetch("/api/terminal/auth/setup",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({password:E,confirm:S})}),t=await e.json().catch(()=>({}));if(!e.ok)return void v(t.error||"Setup failed");C(""),A(""),y("open")}catch(e){v(e?.message||"Setup failed")}finally{N(!1)}},z=async e=>{e.preventDefault(),N(!0),v("");try{let e=await fetch("/api/terminal/auth/unlock",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({password:E})}),t=await e.json().catch(()=>({}));if(!e.ok)return void v(t.error||"Unlock failed");C(""),y("open")}catch(e){v(e?.message||"Unlock failed")}finally{N(!1)}},P=async()=>{try{await fetch("/api/terminal/auth/unlock",{method:"DELETE",credentials:"same-origin"})}catch{}let e=m.current;if(m.current="",e&&fetch(`/api/terminal/session/${e}`,{method:"DELETE",credentials:"same-origin",keepalive:!0}).catch(()=>{}),b.current){try{b.current.close()}catch{}b.current=null}C(""),y("unlock")},B=(0,a.useCallback)(async()=>{let e=m.current;if(!e||0===f.current.length)return;let t=f.current.join("");f.current=[];try{let r=await fetch(`/api/terminal/session/${e}/input`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:t}),cache:"no-store",credentials:"same-origin"});!r.ok&&o.current&&(423===r.status?(o.current.write("\r\n\x1b[31m[terminal locked]\x1b[0m\r\n"),y("unlock")):(403===r.status||401===r.status)&&o.current.write(`\r
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3570],{7364:(e,t,r)=>{"use strict";r.d(t,{D:()=>c});var n=r(34023),a=r(77813);function s(e){let t=window.matchMedia("(prefers-color-scheme: dark)");return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function l(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function i(){return!1}function c(){let{theme:e,setTheme:t,toggleTheme:r,initTheme:c}=(0,a.A)(),o=(0,n.useSyncExternalStore)(s,l,i);(0,n.useEffect)(()=>{c()},[c]),(0,n.useEffect)(()=>{if("system"!==e)return;let t=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>c();return t.addEventListener("change",r),()=>t.removeEventListener("change",r)},[e,c]);let d="dark"===e||"system"===e&&o;return{theme:e,setTheme:t,toggleTheme:r,isDark:d}}},46085:(e,t,r)=>{"use strict";r.d(t,{default:()=>u});var n=r(94799),a=r(34023),s=r(53060),l=r(81716),i=r(28292),c=r(7364);r(69311);let o="#E56A4A",d={light:{background:"#f7f7f6",foreground:"#262626",cursor:o,cursorAccent:"#f7f7f6",selectionBackground:"rgba(229, 106, 74, 0.25)",black:"#262626",red:"#b91c1c",green:"#15803d",yellow:"#a16207",blue:"#1d4ed8",magenta:"#7e22ce",cyan:"#0e7490",white:"#e5e5e5",brightBlack:"#737373",brightRed:"#dc2626",brightGreen:"#16a34a",brightYellow:"#ca8a04",brightBlue:"#2563eb",brightMagenta:"#9333ea",brightCyan:"#0891b2",brightWhite:"#fafafa"},dark:{background:"#0d0d0d",foreground:"#e8e8e8",cursor:o,cursorAccent:"#0d0d0d",selectionBackground:"rgba(229, 106, 74, 0.35)",black:"#1a1a1a",red:"#f87171",green:"#4ade80",yellow:"#fbbf24",blue:"#60a5fa",magenta:"#c084fc",cyan:"#22d3ee",white:"#e5e5e5",brightBlack:"#737373",brightRed:"#fca5a5",brightGreen:"#86efac",brightYellow:"#fde68a",brightBlue:"#93c5fd",brightMagenta:"#d8b4fe",brightCyan:"#67e8f9",brightWhite:"#fafafa"}};function u(){let{isDark:e}=(0,c.D)(),t=(0,a.useRef)(e),r=(0,a.useRef)(null),o=(0,a.useRef)(null),u=(0,a.useRef)(null),m=(0,a.useRef)(""),h=(0,a.useRef)(""),b=(0,a.useRef)(null),f=(0,a.useRef)([]),x=(0,a.useRef)(null),p=(0,a.useRef)(!1),g=(0,a.useRef)(""),[w,y]=(0,a.useState)("checking"),[k,v]=(0,a.useState)(""),[j,N]=(0,a.useState)(!1),[E,C]=(0,a.useState)(""),[S,A]=(0,a.useState)(""),[L,T]=(0,a.useState)("connecting"),[R,O]=(0,a.useState)("Starting shell…"),[F,$]=(0,a.useState)({shell:"",mode:""}),D=(0,a.useCallback)(async()=>{v("");try{let e=await fetch("/api/terminal/auth/status",{cache:"no-store",credentials:"same-origin"}),t=await e.json().catch(()=>({}));if(403===e.status){v(t?.error||"Access forbidden."),y("unlock");return}if(401===e.status){v("Log in to the dashboard first."),y("unlock");return}if(!t.configured)return void y("setup");if(t.unlocked)return void y("open");y("unlock")}catch(e){v(e?.message||"Failed to check terminal lock"),y("unlock")}},[]);(0,a.useEffect)(()=>{D()},[D]);let M=async e=>{e.preventDefault(),N(!0),v("");try{let e=await fetch("/api/terminal/auth/setup",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({password:E,confirm:S})}),t=await e.json().catch(()=>({}));if(!e.ok)return void v(t.error||"Setup failed");C(""),A(""),y("open")}catch(e){v(e?.message||"Setup failed")}finally{N(!1)}},z=async e=>{e.preventDefault(),N(!0),v("");try{let e=await fetch("/api/terminal/auth/unlock",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({password:E})}),t=await e.json().catch(()=>({}));if(!e.ok)return void v(t.error||"Unlock failed");C(""),y("open")}catch(e){v(e?.message||"Unlock failed")}finally{N(!1)}},P=async()=>{try{await fetch("/api/terminal/auth/unlock",{method:"DELETE",credentials:"same-origin"})}catch{}let e=m.current;if(m.current="",e&&fetch(`/api/terminal/session/${e}`,{method:"DELETE",credentials:"same-origin",keepalive:!0}).catch(()=>{}),b.current){try{b.current.close()}catch{}b.current=null}C(""),y("unlock")},B=(0,a.useCallback)(async()=>{let e=m.current;if(!e||0===f.current.length)return;let t=f.current.join("");f.current=[];try{let r=await fetch(`/api/terminal/session/${e}/input`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:t}),cache:"no-store",credentials:"same-origin"});!r.ok&&o.current&&(423===r.status?(o.current.write("\r\n\x1b[31m[terminal locked]\x1b[0m\r\n"),y("unlock")):(403===r.status||401===r.status)&&o.current.write(`\r
2
2
  \x1b[31m[input blocked: ${r.status}]\x1b[0m\r
3
3
  `))}catch{}},[]),U=(0,a.useCallback)(e=>{e&&m.current&&(f.current.push(e),x.current||(x.current=setTimeout(()=>{x.current=null,B()},8)))},[B]),q=(0,a.useCallback)(e=>{let t=o.current;if(!t)return;let r=h.current;if(!("pipe"===r||!r))return void U(e);if("\x03"===e){g.current="",t.write("^C\r\n"),U("\x03\n");return}if("\r"===e||"\n"===e||"\r\n"===e){let e=g.current;g.current="",t.write("\r\n"),U(`${e}
4
- `);return}if(""===e||"\b"===e){g.current.length>0&&(g.current=g.current.slice(0,-1),t.write("\b \b"));return}32>e.charCodeAt(0)||e.startsWith("\x1b")||(g.current+=e,t.write(e))},[U]),J=(0,a.useCallback)(async()=>{let e=m.current,t=o.current;if(e&&t)try{await fetch(`/api/terminal/session/${e}/resize`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cols:t.cols,rows:t.rows}),cache:"no-store",credentials:"same-origin"})}catch{}},[]),_=(0,a.useCallback)(()=>{try{o.current?.focus()}catch{}},[]),I=(0,a.useCallback)((e,t)=>{if(b.current)try{b.current.close()}catch{}let r=new EventSource(`/api/terminal/session/${e}/stream`,{withCredentials:!0});b.current=r,r.onopen=()=>{p.current||(T("ready"),O("Connected — click terminal & type"),_())},r.onmessage=e=>{let r;if(!p.current){try{r=JSON.parse(e.data)}catch{return}"data"===r.type&&"string"==typeof r.data?t.write(r.data):"ready"===r.type?(h.current=r.mode||h.current,$({shell:r.shell||"",mode:r.mode||""}),T(!1===r.alive?"closed":"ready"),O(!1===r.alive?"Shell exited":"Connected — click terminal & type"),_()):"exit"===r.type&&(T("closed"),O("Shell exited"),t.write("\r\n\x1b[90m[session ended]\x1b[0m\r\n"))}},r.onerror=()=>{p.current||(T(e=>"ready"===e?"connecting":e),O("Reconnecting…"))}},[_]),W=(0,a.useCallback)(async(e,t)=>{let r;T("connecting"),O("Starting shell…"),g.current="";try{t.fit()}catch{}let n=e.cols||120,a=e.rows||40;try{r=await fetch("/api/terminal/session",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cols:n,rows:a}),cache:"no-store",credentials:"same-origin"})}catch(t){T("error"),O(t?.message||"Failed to reach server"),e.writeln(`\x1b[31mFailed to create session: ${t?.message||"network error"}\x1b[0m`);return}if(403===r.status){T("forbidden"),O("Forbidden"),e.writeln("\x1b[33mTerminal access forbidden.\x1b[0m");return}if(401===r.status){T("error"),O("Unauthorized"),e.writeln("\x1b[31mUnauthorized — log in to the dashboard first.\x1b[0m");return}if(423===r.status){T("error"),O("Locked"),y("unlock");return}let s=await r.json().catch(()=>({}));if(!r.ok||!s?.session?.id){T("error"),O(s?.error||"Create failed"),e.writeln(`\x1b[31m${s?.error||"Failed to create terminal session"}\x1b[0m`);return}m.current=s.session.id,h.current=s.session.mode||"pipe",$({shell:s.session.shell||"",mode:s.session.mode||""}),I(s.session.id,e),_()},[I,_]),Y=(0,a.useCallback)(async()=>{let e=m.current;if(m.current="",h.current="",g.current="",f.current=[],b.current){try{b.current.close()}catch{}b.current=null}e&&fetch(`/api/terminal/session/${e}`,{method:"DELETE",credentials:"same-origin"}).catch(()=>{});let t=o.current,r=u.current;t&&r&&(t.reset(),t.clear(),await W(t,r))},[W]);if((0,a.useEffect)(()=>{if("open"!==w)return;p.current=!1;let e=r.current;if(!e)return;let n=new s.B({cursorBlink:!0,cursorStyle:"bar",fontSize:13,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',lineHeight:1.25,scrollback:5e3,allowProposedApi:!0,disableStdin:!1,theme:d[t.current?"dark":"light"]}),a=new l.Y,c=new i.c;n.loadAddon(a),n.loadAddon(c),n.open(e);try{e.tabIndex=0;let t=e.querySelector("textarea");t&&(t.tabIndex=0,t.setAttribute("autocomplete","off"),t.setAttribute("spellcheck","false"))}catch{}o.current=n,u.current=a;try{a.fit()}catch{}let h=n.onData(e=>q(e)),f=()=>{try{a.fit(),J()}catch{}},g=()=>_();e.addEventListener("mousedown",g),e.addEventListener("click",g),e.addEventListener("focus",_);let y="u">typeof ResizeObserver?new ResizeObserver(f):null;return y?.observe(e),window.addEventListener("resize",f),requestAnimationFrame(()=>{try{a.fit()}catch{}_()}),W(n,a),()=>{p.current=!0,y?.disconnect(),window.removeEventListener("resize",f),e.removeEventListener("mousedown",g),e.removeEventListener("click",g),e.removeEventListener("focus",_);try{h.dispose()}catch{}if(x.current&&(clearTimeout(x.current),x.current=null),b.current){try{b.current.close()}catch{}b.current=null}let t=m.current;m.current="",t&&fetch(`/api/terminal/session/${t}`,{method:"DELETE",keepalive:!0,credentials:"same-origin"}).catch(()=>{});try{n.dispose()}catch{}o.current=null,u.current=null}},[w,q,J,W,_]),(0,a.useEffect)(()=>{t.current=e,o.current&&(o.current.options.theme=d[e?"dark":"light"])},[e]),"checking"===w)return(0,n.jsx)("div",{className:"flex h-full min-h-0 w-full items-center justify-center bg-bg text-sm text-text-muted",children:"Checking terminal lock…"});if("setup"===w||"unlock"===w){let e="setup"===w;return(0,n.jsx)("div",{className:"flex h-full min-h-0 w-full flex-col items-center justify-center bg-bg px-4",children:(0,n.jsxs)("div",{className:"w-full max-w-md rounded-2xl border border-border-subtle bg-surface p-6 shadow-xl",children:[(0,n.jsxs)("div",{className:"mb-4 flex items-center gap-3",children:[(0,n.jsx)("div",{className:"flex size-10 items-center justify-center rounded-xl bg-[color:var(--brand,#E56A4A)]/15 text-[color:var(--brand,#E56A4A)]",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[22px]",children:e?"key":"lock"})}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-base font-semibold text-text-main",children:e?"Set terminal password":"Unlock terminal"}),(0,n.jsx)("p",{className:"text-xs text-text-muted",children:e?"First time — pick a password different from dashboard login.":"Dashboard login is not enough. Enter your terminal password."})]})]}),(0,n.jsxs)("form",{onSubmit:e?M:z,className:"space-y-3",children:[e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"block space-y-1",children:[(0,n.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wide text-text-muted",children:"New terminal password"}),(0,n.jsx)("input",{type:"password",autoFocus:!0,autoComplete:"new-password",value:E,onChange:e=>C(e.target.value),className:"w-full rounded-lg border border-border-subtle bg-bg-alt px-3 py-2.5 text-sm text-text-main outline-none focus:border-[color:var(--brand,#E56A4A)]/60",placeholder:"Min 6 characters",required:!0,minLength:6})]}),(0,n.jsxs)("label",{className:"block space-y-1",children:[(0,n.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wide text-text-muted",children:"Confirm"}),(0,n.jsx)("input",{type:"password",autoComplete:"new-password",value:S,onChange:e=>A(e.target.value),className:"w-full rounded-lg border border-border-subtle bg-bg-alt px-3 py-2.5 text-sm text-text-main outline-none focus:border-[color:var(--brand,#E56A4A)]/60",placeholder:"Repeat password",required:!0,minLength:6})]}),(0,n.jsxs)("p",{className:"text-[11px] leading-relaxed text-text-muted",children:["Must ",(0,n.jsx)("strong",{className:"text-text-main",children:"not"})," match the dashboard password. Unlock lasts ~4 hours on this browser."]})]}):(0,n.jsxs)("label",{className:"block space-y-1",children:[(0,n.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wide text-text-muted",children:"Terminal password"}),(0,n.jsx)("input",{type:"password",autoFocus:!0,autoComplete:"current-password",value:E,onChange:e=>C(e.target.value),className:"w-full rounded-lg border border-border-subtle bg-bg-alt px-3 py-2.5 text-sm text-text-main outline-none focus:border-[color:var(--brand,#E56A4A)]/60",placeholder:"••••••••",required:!0})]}),k?(0,n.jsx)("p",{role:"alert",className:"rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-xs text-red-700 dark:text-red-300",children:k}):null,(0,n.jsx)("button",{type:"submit",disabled:j,className:"w-full rounded-lg bg-[color:var(--brand,#E56A4A)] px-3 py-2.5 text-sm font-semibold text-white transition hover:brightness-110 disabled:opacity-50",children:j?"Please wait…":e?"Save & open terminal":"Unlock"})]}),"unlock"===w?(0,n.jsxs)("p",{className:"mt-3 text-center text-[11px] leading-relaxed text-text-muted",children:["Forgot terminal password? On the host run CLI →"," ",(0,n.jsx)("code",{className:"text-text-main",children:"Settings → Clear Terminal Password"})," ","then set a new one here. Reset is not available in the browser."]}):null,(0,n.jsx)("p",{className:"mt-4 text-center text-[11px] text-text-muted",children:"Protected by dashboard login + terminal password"})]})})}return(0,n.jsxs)("div",{className:"flex h-full min-h-0 w-full flex-col bg-bg",children:[(0,n.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-3 border-b border-border-subtle px-4 py-2.5",children:[(0,n.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{className:`inline-block size-2 rounded-full ${"ready"===L?"bg-emerald-500":"connecting"===L?"bg-amber-400 animate-pulse":"forbidden"===L?"bg-amber-500":"bg-red-500"}`}),(0,n.jsx)("span",{className:"text-sm font-semibold text-text-main",children:"Terminal"})]}),(0,n.jsxs)("span",{role:"status","aria-live":"polite",className:"truncate text-xs text-text-muted",children:[R,F.shell?` \xb7 ${F.shell}`:"",F.mode?` \xb7 ${F.mode}`:""]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("button",{type:"button",onClick:P,className:"rounded-lg border border-border-subtle bg-surface px-3 py-1.5 text-xs font-medium text-text-muted transition hover:border-border hover:text-text-main",title:"Lock terminal (require password again)",children:"Lock"}),(0,n.jsx)("button",{type:"button",onClick:Y,className:"rounded-lg border border-border-subtle bg-surface px-3 py-1.5 text-xs font-medium text-text-main transition hover:border-[color:var(--brand,#E56A4A)]/50 hover:bg-bg-alt",children:"New session"})]})]}),(0,n.jsx)("div",{className:"relative min-h-0 flex-1",onMouseDown:_,children:(0,n.jsx)("div",{ref:r,className:"absolute inset-0 px-2 py-2 outline-none"})}),(0,n.jsx)("div",{className:"shrink-0 border-t border-border-subtle px-4 py-1.5 text-[11px] text-text-muted",children:"Dashboard login + terminal password \xb7 click the black area then type \xb7 idle sessions close after 30m"})]})}},63133:(e,t,r)=>{Promise.resolve().then(r.bind(r,35765))}},e=>{e.O(0,[1838,1507,5472,85,8441,3794,7358],()=>e(e.s=63133)),_N_E=e.O()}]);
4
+ `);return}if(""===e||"\b"===e){g.current.length>0&&(g.current=g.current.slice(0,-1),t.write("\b \b"));return}32>e.charCodeAt(0)||e.startsWith("\x1b")||(g.current+=e,t.write(e))},[U]),J=(0,a.useCallback)(async()=>{let e=m.current,t=o.current;if(e&&t)try{await fetch(`/api/terminal/session/${e}/resize`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cols:t.cols,rows:t.rows}),cache:"no-store",credentials:"same-origin"})}catch{}},[]),_=(0,a.useCallback)(()=>{try{o.current?.focus()}catch{}},[]),I=(0,a.useCallback)((e,t)=>{if(b.current)try{b.current.close()}catch{}let r=new EventSource(`/api/terminal/session/${e}/stream`,{withCredentials:!0});b.current=r,r.onopen=()=>{p.current||(T("ready"),O("Connected — click terminal & type"),_())},r.onmessage=e=>{let r;if(!p.current){try{r=JSON.parse(e.data)}catch{return}"data"===r.type&&"string"==typeof r.data?t.write(r.data):"ready"===r.type?(h.current=r.mode||h.current,$({shell:r.shell||"",mode:r.mode||""}),T(!1===r.alive?"closed":"ready"),O(!1===r.alive?"Shell exited":"Connected — click terminal & type"),_()):"exit"===r.type&&(T("closed"),O("Shell exited"),t.write("\r\n\x1b[90m[session ended]\x1b[0m\r\n"))}},r.onerror=()=>{p.current||(T(e=>"ready"===e?"connecting":e),O("Reconnecting…"))}},[_]),W=(0,a.useCallback)(async(e,t)=>{let r;T("connecting"),O("Starting shell…"),g.current="";try{t.fit()}catch{}let n=e.cols||120,a=e.rows||40;try{r=await fetch("/api/terminal/session",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cols:n,rows:a}),cache:"no-store",credentials:"same-origin"})}catch(t){T("error"),O(t?.message||"Failed to reach server"),e.writeln(`\x1b[31mFailed to create session: ${t?.message||"network error"}\x1b[0m`);return}if(403===r.status){T("forbidden"),O("Forbidden"),e.writeln("\x1b[33mTerminal access forbidden.\x1b[0m");return}if(401===r.status){T("error"),O("Unauthorized"),e.writeln("\x1b[31mUnauthorized — log in to the dashboard first.\x1b[0m");return}if(423===r.status){T("error"),O("Locked"),y("unlock");return}let s=await r.json().catch(()=>({}));if(!r.ok||!s?.session?.id){T("error"),O(s?.error||"Create failed"),e.writeln(`\x1b[31m${s?.error||"Failed to create terminal session"}\x1b[0m`);return}m.current=s.session.id,h.current=s.session.mode||"pipe",$({shell:s.session.shell||"",mode:s.session.mode||""}),I(s.session.id,e),_()},[I,_]),Y=(0,a.useCallback)(async()=>{let e=m.current;if(m.current="",h.current="",g.current="",f.current=[],b.current){try{b.current.close()}catch{}b.current=null}e&&fetch(`/api/terminal/session/${e}`,{method:"DELETE",credentials:"same-origin"}).catch(()=>{});let t=o.current,r=u.current;t&&r&&(t.reset(),t.clear(),await W(t,r))},[W]);if((0,a.useEffect)(()=>{if("open"!==w)return;p.current=!1;let e=r.current;if(!e)return;let n=new s.B({cursorBlink:!0,cursorStyle:"bar",fontSize:13,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',lineHeight:1.25,scrollback:5e3,allowProposedApi:!0,disableStdin:!1,theme:d[t.current?"dark":"light"]}),a=new l.Y,c=new i.c;n.loadAddon(a),n.loadAddon(c),n.open(e);try{e.tabIndex=0;let t=e.querySelector("textarea");t&&(t.tabIndex=0,t.setAttribute("autocomplete","off"),t.setAttribute("spellcheck","false"))}catch{}o.current=n,u.current=a;try{a.fit()}catch{}let h=n.onData(e=>q(e)),f=()=>{try{a.fit(),J()}catch{}},g=()=>_();e.addEventListener("mousedown",g),e.addEventListener("click",g),e.addEventListener("focus",_);let y="u">typeof ResizeObserver?new ResizeObserver(f):null;return y?.observe(e),window.addEventListener("resize",f),requestAnimationFrame(()=>{try{a.fit()}catch{}_()}),W(n,a),()=>{p.current=!0,y?.disconnect(),window.removeEventListener("resize",f),e.removeEventListener("mousedown",g),e.removeEventListener("click",g),e.removeEventListener("focus",_);try{h.dispose()}catch{}if(x.current&&(clearTimeout(x.current),x.current=null),b.current){try{b.current.close()}catch{}b.current=null}let t=m.current;m.current="",t&&fetch(`/api/terminal/session/${t}`,{method:"DELETE",keepalive:!0,credentials:"same-origin"}).catch(()=>{});try{n.dispose()}catch{}o.current=null,u.current=null}},[w,q,J,W,_]),(0,a.useEffect)(()=>{t.current=e,o.current&&(o.current.options.theme=d[e?"dark":"light"])},[e]),"checking"===w)return(0,n.jsx)("div",{className:"flex h-full min-h-0 w-full items-center justify-center bg-bg text-sm text-text-muted",children:"Checking terminal lock…"});if("setup"===w||"unlock"===w){let e="setup"===w;return(0,n.jsx)("div",{className:"flex h-full min-h-0 w-full flex-col items-center justify-center bg-bg px-4",children:(0,n.jsxs)("div",{className:"w-full max-w-md rounded-2xl border border-border-subtle bg-surface p-6 shadow-xl",children:[(0,n.jsxs)("div",{className:"mb-4 flex items-center gap-3",children:[(0,n.jsx)("div",{className:"flex size-10 items-center justify-center rounded-xl bg-[color:var(--brand,#E56A4A)]/15 text-[color:var(--brand,#E56A4A)]",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[22px]",children:e?"key":"lock"})}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-base font-semibold text-text-main",children:e?"Set terminal password":"Unlock terminal"}),(0,n.jsx)("p",{className:"text-xs text-text-muted",children:e?"First time — pick a password different from dashboard login.":"Dashboard login is not enough. Enter your terminal password."})]})]}),(0,n.jsxs)("form",{onSubmit:e?M:z,className:"space-y-3",children:[e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"block space-y-1",children:[(0,n.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wide text-text-muted",children:"New terminal password"}),(0,n.jsx)("input",{type:"password",autoFocus:!0,autoComplete:"new-password",value:E,onChange:e=>C(e.target.value),className:"w-full rounded-lg border border-border-subtle bg-bg-alt px-3 py-2.5 text-sm text-text-main outline-none focus:border-[color:var(--brand,#E56A4A)]/60",placeholder:"Min 6 characters",required:!0,minLength:6})]}),(0,n.jsxs)("label",{className:"block space-y-1",children:[(0,n.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wide text-text-muted",children:"Confirm"}),(0,n.jsx)("input",{type:"password",autoComplete:"new-password",value:S,onChange:e=>A(e.target.value),className:"w-full rounded-lg border border-border-subtle bg-bg-alt px-3 py-2.5 text-sm text-text-main outline-none focus:border-[color:var(--brand,#E56A4A)]/60",placeholder:"Repeat password",required:!0,minLength:6})]}),(0,n.jsxs)("p",{className:"text-[11px] leading-relaxed text-text-muted",children:["Must ",(0,n.jsx)("strong",{className:"text-text-main",children:"not"})," match the dashboard password. Unlock lasts ~4 hours on this browser."]})]}):(0,n.jsxs)("label",{className:"block space-y-1",children:[(0,n.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wide text-text-muted",children:"Terminal password"}),(0,n.jsx)("input",{type:"password",autoFocus:!0,autoComplete:"current-password",value:E,onChange:e=>C(e.target.value),className:"w-full rounded-lg border border-border-subtle bg-bg-alt px-3 py-2.5 text-sm text-text-main outline-none focus:border-[color:var(--brand,#E56A4A)]/60",placeholder:"••••••••",required:!0})]}),k?(0,n.jsx)("p",{role:"alert",className:"rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-xs text-red-700 dark:text-red-300",children:k}):null,(0,n.jsx)("button",{type:"submit",disabled:j,className:"w-full rounded-lg bg-[color:var(--brand,#E56A4A)] px-3 py-2.5 text-sm font-semibold text-white transition hover:brightness-110 disabled:opacity-50",children:j?"Please wait…":e?"Save & open terminal":"Unlock"})]}),"unlock"===w?(0,n.jsxs)("p",{className:"mt-3 text-center text-[11px] leading-relaxed text-text-muted",children:["Forgot terminal password? On the host run CLI →"," ",(0,n.jsx)("code",{className:"text-text-main",children:"Settings → Clear Terminal Password"})," ","then set a new one here. Reset is not available in the browser."]}):null,(0,n.jsx)("p",{className:"mt-4 text-center text-[11px] text-text-muted",children:"Protected by dashboard login + terminal password"})]})})}return(0,n.jsxs)("div",{className:"flex h-full min-h-0 w-full flex-col bg-bg",children:[(0,n.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-3 border-b border-border-subtle px-4 py-2.5",children:[(0,n.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{className:`inline-block size-2 rounded-full ${"ready"===L?"bg-emerald-500":"connecting"===L?"bg-amber-400 animate-pulse":"forbidden"===L?"bg-amber-500":"bg-red-500"}`}),(0,n.jsx)("span",{className:"text-sm font-semibold text-text-main",children:"Terminal"})]}),(0,n.jsxs)("span",{role:"status","aria-live":"polite",className:"truncate text-xs text-text-muted",children:[R,F.shell?` \xb7 ${F.shell}`:"",F.mode?` \xb7 ${F.mode}`:""]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("button",{type:"button",onClick:P,className:"rounded-lg border border-border-subtle bg-surface px-3 py-1.5 text-xs font-medium text-text-muted transition hover:border-border hover:text-text-main",title:"Lock terminal (require password again)",children:"Lock"}),(0,n.jsx)("button",{type:"button",onClick:Y,className:"rounded-lg border border-border-subtle bg-surface px-3 py-1.5 text-xs font-medium text-text-main transition hover:border-[color:var(--brand,#E56A4A)]/50 hover:bg-bg-alt",children:"New session"})]})]}),(0,n.jsx)("div",{className:"relative min-h-0 flex-1",onMouseDown:_,children:(0,n.jsx)("div",{ref:r,className:"absolute inset-0 px-2 py-2 outline-none"})}),(0,n.jsx)("div",{className:"shrink-0 border-t border-border-subtle px-4 py-1.5 text-[11px] text-text-muted",children:"Dashboard login + terminal password \xb7 click the black area then type \xb7 idle sessions close after 30m"})]})}},98137:(e,t,r)=>{Promise.resolve().then(r.bind(r,46085))}},e=>{e.O(0,[7262,7209,1096,7813,7408,1858,7358],()=>e(e.s=98137)),_N_E=e.O()}]);