zevairouter 1.0.124 → 1.0.126

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 (1425) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  3. package/cli/app/.next-cli-build/app-path-routes-manifest.json +7 -7
  4. package/cli/app/.next-cli-build/build-manifest.json +6 -6
  5. package/cli/app/.next-cli-build/react-loadable-manifest.json +2 -2
  6. package/cli/app/.next-cli-build/required-server-files.json +0 -1
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +2 -2
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +2 -2
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +3 -3
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +2 -2
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  59. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  60. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  61. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  62. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  63. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  64. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  65. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  66. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  67. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  68. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  69. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  70. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  71. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  72. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  73. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +4 -4
  74. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  75. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  76. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  77. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  78. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  79. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  80. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  81. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  82. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  83. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  84. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  85. package/cli/app/.next-cli-build/server/app/_global-error/page.js +3 -3
  86. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  87. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  88. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  89. package/cli/app/.next-cli-build/server/app/_global-error.rsc +7 -7
  90. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +7 -7
  91. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  92. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +3 -3
  93. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +3 -3
  94. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +3 -3
  95. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  96. package/cli/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  97. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  98. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  99. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  100. package/cli/app/.next-cli-build/server/app/_not-found.rsc +12 -12
  101. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +12 -12
  102. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +4 -4
  103. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +7 -7
  104. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  105. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  106. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +3 -3
  107. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  108. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  109. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  110. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  124. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  126. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  130. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  132. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  138. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  140. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  142. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  144. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  146. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  148. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  150. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  152. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  154. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  156. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  158. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  169. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  175. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +2 -2
  198. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  200. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/metrics/route.js +2 -2
  212. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js.nft.json +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route.js +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route.js.nft.json +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  288. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  352. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  354. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  358. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  359. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  360. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  361. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +2 -2
  362. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  363. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  364. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  365. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  366. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  367. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  368. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  369. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  370. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  371. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  372. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  373. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  374. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  375. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  376. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  377. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  378. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  379. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  380. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  381. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  382. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  383. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  384. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  385. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  386. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  387. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  388. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  389. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  390. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  391. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  392. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  393. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  394. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  395. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  396. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  397. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  398. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  399. package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  400. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  401. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  402. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  403. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  404. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  405. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  406. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  407. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
  408. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  409. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
  410. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  411. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
  412. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  413. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +2 -2
  414. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  415. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
  416. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  417. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  418. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  419. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  420. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  421. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  422. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  423. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  424. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  425. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  426. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  427. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  428. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  429. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  430. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  431. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  432. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  433. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  434. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  435. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  436. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  437. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  438. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  439. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  440. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  441. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +3 -3
  442. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  443. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  444. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  445. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  446. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  447. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  448. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  449. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  450. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  451. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  452. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  453. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  454. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  455. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  456. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  457. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  458. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  459. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  460. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  461. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  462. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  463. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  464. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  465. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  466. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  467. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  468. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  469. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  470. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  471. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  472. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  473. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  474. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  475. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  476. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  477. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  478. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  479. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  480. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  481. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  482. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  483. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  484. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  485. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  486. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  487. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  488. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  489. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  490. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  491. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  492. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  493. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  494. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  495. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  496. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  497. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  498. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  499. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  500. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  501. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  502. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  503. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  504. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  505. package/cli/app/.next-cli-build/server/app/callback/page.js +2 -2
  506. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  507. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  508. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  509. package/cli/app/.next-cli-build/server/app/callback.rsc +14 -14
  510. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +14 -14
  511. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +4 -4
  512. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +7 -7
  513. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +3 -3
  514. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
  515. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +3 -3
  516. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  517. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +16 -16
  518. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +4 -4
  519. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +3 -3
  520. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  521. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  522. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +16 -16
  523. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +4 -4
  524. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +7 -7
  525. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +4 -4
  526. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  527. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +15 -15
  528. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +3 -3
  529. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +3 -3
  530. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  531. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  532. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +15 -15
  533. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +4 -4
  534. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +7 -7
  535. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +4 -4
  536. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  537. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +15 -15
  538. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +3 -3
  539. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +3 -3
  540. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  541. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  542. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +15 -15
  543. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +4 -4
  544. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +7 -7
  545. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +4 -4
  546. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  547. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +16 -16
  548. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +4 -4
  549. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +3 -3
  550. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  551. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  552. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +16 -16
  553. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +4 -4
  554. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +7 -7
  555. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +4 -4
  556. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  557. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +16 -16
  558. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +4 -4
  559. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +3 -3
  560. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  561. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  562. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +16 -16
  563. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +4 -4
  564. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +7 -7
  565. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +4 -4
  566. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  567. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +15 -15
  568. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +3 -3
  569. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +3 -3
  570. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  571. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  572. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +15 -15
  573. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +4 -4
  574. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +7 -7
  575. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +4 -4
  576. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  577. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +16 -16
  578. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +4 -4
  579. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +3 -3
  580. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +3 -3
  581. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  582. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  583. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +16 -16
  584. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +4 -4
  585. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +7 -7
  586. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +4 -4
  587. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  588. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +15 -15
  589. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +3 -3
  590. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +3 -3
  591. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  592. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  593. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +15 -15
  594. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +4 -4
  595. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +7 -7
  596. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +4 -4
  597. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  598. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +15 -15
  599. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +3 -3
  600. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +3 -3
  601. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  602. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  603. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +15 -15
  604. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +4 -4
  605. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +7 -7
  606. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +4 -4
  607. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  608. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +16 -16
  609. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +4 -4
  610. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +3 -3
  611. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  612. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  613. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +16 -16
  614. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +4 -4
  615. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +7 -7
  616. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +4 -4
  617. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  618. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +16 -16
  619. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +4 -4
  620. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +3 -3
  621. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +3 -3
  622. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  623. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  624. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +16 -16
  625. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +4 -4
  626. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +7 -7
  627. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +4 -4
  628. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  629. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +16 -16
  630. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +4 -4
  631. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +3 -3
  632. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  633. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  634. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +16 -16
  635. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +4 -4
  636. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +7 -7
  637. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +4 -4
  638. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  639. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +16 -16
  640. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +4 -4
  641. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +3 -3
  642. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  643. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  644. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +16 -16
  645. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +4 -4
  646. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +7 -7
  647. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +4 -4
  648. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  649. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +15 -15
  650. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +3 -3
  651. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +3 -3
  652. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  653. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  654. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +15 -15
  655. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +4 -4
  656. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +7 -7
  657. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +4 -4
  658. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  659. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +16 -16
  660. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +4 -4
  661. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +3 -3
  662. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  663. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  664. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +16 -16
  665. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +4 -4
  666. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +7 -7
  667. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +4 -4
  668. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  669. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  670. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  671. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  672. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +14 -14
  673. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +14 -14
  674. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +4 -4
  675. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +7 -7
  676. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +3 -3
  677. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
  678. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +3 -3
  679. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +3 -3
  680. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +3 -3
  681. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  682. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +15 -15
  683. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +3 -3
  684. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +3 -3
  685. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  686. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  687. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +15 -15
  688. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +4 -4
  689. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +7 -7
  690. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +4 -4
  691. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  692. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +16 -16
  693. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +4 -4
  694. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +3 -3
  695. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  696. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  697. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +16 -16
  698. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +4 -4
  699. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +7 -7
  700. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +4 -4
  701. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  702. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +16 -16
  703. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +4 -4
  704. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +3 -3
  705. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  706. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  707. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +16 -16
  708. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +4 -4
  709. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +7 -7
  710. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +4 -4
  711. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  712. package/cli/app/.next-cli-build/server/app/dashboard.rsc +15 -15
  713. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +3 -3
  714. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  715. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  716. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +15 -15
  717. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +4 -4
  718. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +7 -7
  719. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +4 -4
  720. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  721. package/cli/app/.next-cli-build/server/app/index.rsc +12 -12
  722. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  723. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +12 -12
  724. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +4 -4
  725. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +7 -7
  726. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +3 -3
  727. package/cli/app/.next-cli-build/server/app/landing/page.js +2 -2
  728. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  729. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  730. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  731. package/cli/app/.next-cli-build/server/app/landing.rsc +14 -14
  732. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +14 -14
  733. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +4 -4
  734. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +7 -7
  735. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +3 -3
  736. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
  737. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +3 -3
  738. package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
  739. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  740. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  741. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  742. package/cli/app/.next-cli-build/server/app/login.rsc +15 -15
  743. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +15 -15
  744. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +4 -4
  745. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +7 -7
  746. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +4 -4
  747. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
  748. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +3 -3
  749. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  750. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  751. package/cli/app/.next-cli-build/server/app/page.js +2 -2
  752. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  753. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  754. package/cli/app/.next-cli-build/server/app-paths-manifest.json +7 -7
  755. package/cli/app/.next-cli-build/server/chunks/{1779.js → 1019.js} +1 -1
  756. package/cli/app/.next-cli-build/server/chunks/1188.js +1 -0
  757. package/cli/app/.next-cli-build/server/chunks/1396.js +1 -0
  758. package/cli/app/.next-cli-build/server/chunks/{7667.js → 1531.js} +1 -1
  759. package/cli/app/.next-cli-build/server/chunks/1656.js +1 -0
  760. package/cli/app/.next-cli-build/server/chunks/1671.js +1 -0
  761. package/cli/app/.next-cli-build/server/chunks/1813.js +1 -0
  762. package/cli/app/.next-cli-build/server/chunks/1818.js +1 -0
  763. package/cli/app/.next-cli-build/server/chunks/{4934.js → 1998.js} +1 -1
  764. package/cli/app/.next-cli-build/server/chunks/{8031.js → 2007.js} +1 -1
  765. package/cli/app/.next-cli-build/server/chunks/2130.js +1 -0
  766. package/cli/app/.next-cli-build/server/chunks/2409.js +1 -0
  767. package/cli/app/.next-cli-build/server/chunks/241.js +1 -0
  768. package/cli/app/.next-cli-build/server/chunks/2478.js +1 -0
  769. package/cli/app/.next-cli-build/server/chunks/2540.js +1 -0
  770. package/cli/app/.next-cli-build/server/chunks/{4493.js → 2693.js} +1 -1
  771. package/cli/app/.next-cli-build/server/chunks/{9293.js → 2722.js} +25 -25
  772. package/cli/app/.next-cli-build/server/chunks/3104.js +43 -0
  773. package/cli/app/.next-cli-build/server/chunks/3110.js +19 -0
  774. package/cli/app/.next-cli-build/server/chunks/3155.js +60 -0
  775. package/cli/app/.next-cli-build/server/chunks/{1023.js → 3159.js} +1 -1
  776. package/cli/app/.next-cli-build/server/chunks/318.js +183 -0
  777. package/cli/app/.next-cli-build/server/chunks/319.js +45 -0
  778. package/cli/app/.next-cli-build/server/chunks/{4619.js → 3331.js} +1 -1
  779. package/cli/app/.next-cli-build/server/chunks/3407.js +1 -0
  780. package/cli/app/.next-cli-build/server/chunks/3487.js +1 -0
  781. package/cli/app/.next-cli-build/server/chunks/{2417.js → 3593.js} +1 -1
  782. package/cli/app/.next-cli-build/server/chunks/{8953.js → 4013.js} +1 -1
  783. package/cli/app/.next-cli-build/server/chunks/{1167.js → 4055.js} +1 -1
  784. package/cli/app/.next-cli-build/server/chunks/412.js +7 -0
  785. package/cli/app/.next-cli-build/server/chunks/{3552.js → 4136.js} +1 -1
  786. package/cli/app/.next-cli-build/server/chunks/415.js +1 -0
  787. package/cli/app/.next-cli-build/server/chunks/4177.js +1 -0
  788. package/cli/app/.next-cli-build/server/chunks/{1776.js → 4229.js} +1 -1
  789. package/cli/app/.next-cli-build/server/chunks/4253.js +3 -0
  790. package/cli/app/.next-cli-build/server/chunks/4404.js +1 -0
  791. package/cli/app/.next-cli-build/server/chunks/4491.js +1 -0
  792. package/cli/app/.next-cli-build/server/chunks/4632.js +1 -0
  793. package/cli/app/.next-cli-build/server/chunks/4650.js +17 -0
  794. package/cli/app/.next-cli-build/server/chunks/{4395.js → 4739.js} +1 -1
  795. package/cli/app/.next-cli-build/server/chunks/4741.js +20 -0
  796. package/cli/app/.next-cli-build/server/chunks/4746.js +7 -0
  797. package/cli/app/.next-cli-build/server/chunks/4765.js +24 -0
  798. package/cli/app/.next-cli-build/server/chunks/4780.js +1 -0
  799. package/cli/app/.next-cli-build/server/chunks/{4499.js → 5000.js} +2 -2
  800. package/cli/app/.next-cli-build/server/chunks/5024.js +1 -0
  801. package/cli/app/.next-cli-build/server/chunks/507.js +1 -0
  802. package/cli/app/.next-cli-build/server/chunks/5217.js +1 -0
  803. package/cli/app/.next-cli-build/server/chunks/{3580.js → 5236.js} +1 -1
  804. package/cli/app/.next-cli-build/server/chunks/{9570.js → 5258.js} +1 -1
  805. package/cli/app/.next-cli-build/server/chunks/5373.js +66 -0
  806. package/cli/app/.next-cli-build/server/chunks/5433.js +1 -0
  807. package/cli/app/.next-cli-build/server/chunks/5573.js +1 -0
  808. package/cli/app/.next-cli-build/server/chunks/{3881.js → 5681.js} +1 -1
  809. package/cli/app/.next-cli-build/server/chunks/5852.js +8 -0
  810. package/cli/app/.next-cli-build/server/chunks/5949.js +51 -0
  811. package/cli/app/.next-cli-build/server/chunks/{2909.js → 6036.js} +1 -1
  812. package/cli/app/.next-cli-build/server/chunks/{6744.js → 6108.js} +1 -1
  813. package/cli/app/.next-cli-build/server/chunks/{8578.js → 6457.js} +2 -2
  814. package/cli/app/.next-cli-build/server/chunks/6652.js +1 -0
  815. package/cli/app/.next-cli-build/server/chunks/{5370.js → 6802.js} +1 -1
  816. package/cli/app/.next-cli-build/server/chunks/{1469.js → 6844.js} +1 -1
  817. package/cli/app/.next-cli-build/server/chunks/6935.js +1 -0
  818. package/cli/app/.next-cli-build/server/chunks/698.js +1 -0
  819. package/cli/app/.next-cli-build/server/chunks/{4341.js → 7341.js} +1 -1
  820. package/cli/app/.next-cli-build/server/chunks/7774.js +121 -0
  821. package/cli/app/.next-cli-build/server/chunks/7828.js +1 -0
  822. package/cli/app/.next-cli-build/server/chunks/{4880.js → 7965.js} +1 -1
  823. package/cli/app/.next-cli-build/server/chunks/7967.js +1 -0
  824. package/cli/app/.next-cli-build/server/chunks/8157.js +1 -0
  825. package/cli/app/.next-cli-build/server/chunks/8255.js +1 -0
  826. package/cli/app/.next-cli-build/server/chunks/8371.js +1 -0
  827. package/cli/app/.next-cli-build/server/chunks/8450.js +1 -0
  828. package/cli/app/.next-cli-build/server/chunks/8520.js +1 -0
  829. package/cli/app/.next-cli-build/server/chunks/8590.js +1 -0
  830. package/cli/app/.next-cli-build/server/chunks/8895.js +67 -0
  831. package/cli/app/.next-cli-build/server/chunks/891.js +1 -0
  832. package/cli/app/.next-cli-build/server/chunks/8920.js +1 -0
  833. package/cli/app/.next-cli-build/server/chunks/8971.js +1 -0
  834. package/cli/app/.next-cli-build/server/chunks/915.js +63 -0
  835. package/cli/app/.next-cli-build/server/chunks/9489.js +1 -0
  836. package/cli/app/.next-cli-build/server/chunks/{7741.js → 9528.js} +3 -3
  837. package/cli/app/.next-cli-build/server/chunks/9609.js +1 -0
  838. package/cli/app/.next-cli-build/server/chunks/9613.js +1 -0
  839. package/cli/app/.next-cli-build/server/chunks/9858.js +3 -0
  840. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  841. package/cli/app/.next-cli-build/server/middleware-react-loadable-manifest.js +1 -1
  842. package/cli/app/.next-cli-build/server/middleware.js +22 -22
  843. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  844. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  845. package/cli/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  846. package/cli/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  847. package/cli/app/.next-cli-build/static/chunks/{8434-db0f0049d0262e2e.js → 1992-b492aa3235a8c259.js} +1 -1
  848. package/cli/app/.next-cli-build/static/chunks/1a258343-33aee1e7d9aa500f.js +1 -0
  849. package/cli/app/.next-cli-build/static/chunks/2018-ef32f3ab3ea35dcd.js +66 -0
  850. package/cli/app/.next-cli-build/static/chunks/3794-907785a527d8128b.js +32 -0
  851. package/cli/app/.next-cli-build/static/chunks/{0937d497-33e2049988b7c22e.js → 4bd1b696-e356ca5ba0218e27.js} +1 -1
  852. package/cli/app/.next-cli-build/static/chunks/5242-bb1a1a7ec3bfb62f.js +1 -0
  853. package/cli/app/.next-cli-build/static/chunks/5472-544ea4e7aa338d84.js +1 -0
  854. package/cli/app/.next-cli-build/static/chunks/5497-7d1ff94cc58ff88b.js +7 -0
  855. package/cli/app/.next-cli-build/static/chunks/5950-482b14a8d993bcca.js +1 -0
  856. package/cli/app/.next-cli-build/static/chunks/{3539-25f16e696f32ccdf.js → 6069-6bce779705f69e62.js} +5 -5
  857. package/cli/app/.next-cli-build/static/chunks/7055-e60e20f43bfbe5f8.js +1 -0
  858. package/cli/app/.next-cli-build/static/chunks/{1768.ad4675e8c839dd60.js → 8202.1ffc6ce531e066ce.js} +1 -1
  859. package/cli/app/.next-cli-build/static/chunks/85-ce113d56030497e0.js +1 -0
  860. package/cli/app/.next-cli-build/static/chunks/979-224d95321cf78dbd.js +3 -0
  861. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/automation/page-923e1225b9dcac58.js +1 -0
  862. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-c4a2045a626b6173.js +1 -0
  863. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-78f688c92bfd33f8.js +1 -0
  864. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-1fd20c51954e29a9.js +1 -0
  865. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-6b0b9cd44867512c.js +1 -0
  866. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-d07a4d1d78007f2f.js +1 -0
  867. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/context/page-327a9c6b4894c269.js +1 -0
  868. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-4444a33464a1d419.js +1 -0
  869. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-2365f7b85dd8967d.js → page-27ae2ac497b5fb7a.js} +2 -2
  870. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-104279ff16950493.js +1 -0
  871. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-939421769eec6d3b.js → page-599568329c50bcc8.js} +2 -2
  872. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-717f8f942951b934.js +1 -0
  873. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-f399c8cbafcff3cd.js +1 -0
  874. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-b5aa3e2a4b3c0b17.js +1 -0
  875. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-c7ac7e59cdef2ce8.js +1 -0
  876. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-ff8862b4d59f7c46.js +1 -0
  877. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-4bfe29eb86322368.js → page-97d30dea16ab149a.js} +2 -2
  878. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-499682de2c626a83.js +1 -0
  879. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-52ea5f73e4c01b92.js +1 -0
  880. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-69eefaf477523b7d.js → page-e08a36cec64b2567.js} +2 -2
  881. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/pxpipe/{page-930e38c563b5c8a1.js → page-636747e49448e0e8.js} +1 -1
  882. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-c1d6f8802c5c874d.js +1 -0
  883. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/terminal/{page-8da3399a4ed0af0d.js → page-d78611694b7915c0.js} +2 -2
  884. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-59f3cc8f19b08fa6.js +1 -0
  885. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-da741d27517645b1.js +1 -0
  886. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-26780f3f0df0345f.js +1 -0
  887. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-ded3017c321c14e3.js +1 -0
  888. package/cli/app/.next-cli-build/static/chunks/app/_global-error/{page-63a0542d75a38025.js → page-0958b3b629c68bd2.js} +1 -1
  889. package/cli/app/.next-cli-build/static/chunks/app/_not-found/page-311966a4d78dec6d.js +1 -0
  890. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/{route-63a0542d75a38025.js → route-0958b3b629c68bd2.js} +1 -1
  891. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/{route-63a0542d75a38025.js → route-0958b3b629c68bd2.js} +1 -1
  892. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/{route-63a0542d75a38025.js → route-0958b3b629c68bd2.js} +1 -1
  893. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-0958b3b629c68bd2.js +1 -0
  894. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-0958b3b629c68bd2.js +1 -0
  895. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-0958b3b629c68bd2.js +1 -0
  896. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-0958b3b629c68bd2.js +1 -0
  897. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-0958b3b629c68bd2.js +1 -0
  898. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-0958b3b629c68bd2.js +1 -0
  899. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-0958b3b629c68bd2.js +1 -0
  900. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-0958b3b629c68bd2.js +1 -0
  901. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-0958b3b629c68bd2.js +1 -0
  902. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-0958b3b629c68bd2.js +1 -0
  903. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-0958b3b629c68bd2.js +1 -0
  904. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-0958b3b629c68bd2.js +1 -0
  905. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-0958b3b629c68bd2.js +1 -0
  906. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-0958b3b629c68bd2.js +1 -0
  907. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-0958b3b629c68bd2.js +1 -0
  908. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-0958b3b629c68bd2.js +1 -0
  909. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-0958b3b629c68bd2.js +1 -0
  910. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-0958b3b629c68bd2.js +1 -0
  911. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-0958b3b629c68bd2.js +1 -0
  912. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-0958b3b629c68bd2.js +1 -0
  913. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-0958b3b629c68bd2.js +1 -0
  914. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-0958b3b629c68bd2.js +1 -0
  915. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-0958b3b629c68bd2.js +1 -0
  916. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-0958b3b629c68bd2.js +1 -0
  917. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-0958b3b629c68bd2.js +1 -0
  918. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-0958b3b629c68bd2.js +1 -0
  919. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-0958b3b629c68bd2.js +1 -0
  920. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-0958b3b629c68bd2.js +1 -0
  921. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-0958b3b629c68bd2.js +1 -0
  922. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-0958b3b629c68bd2.js +1 -0
  923. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-0958b3b629c68bd2.js +1 -0
  924. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-0958b3b629c68bd2.js +1 -0
  925. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-0958b3b629c68bd2.js +1 -0
  926. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-0958b3b629c68bd2.js +1 -0
  927. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-0958b3b629c68bd2.js +1 -0
  928. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-0958b3b629c68bd2.js +1 -0
  929. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-0958b3b629c68bd2.js +1 -0
  930. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-0958b3b629c68bd2.js +1 -0
  931. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-0958b3b629c68bd2.js +1 -0
  932. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-0958b3b629c68bd2.js +1 -0
  933. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-0958b3b629c68bd2.js +1 -0
  934. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-0958b3b629c68bd2.js +1 -0
  935. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-0958b3b629c68bd2.js +1 -0
  936. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-0958b3b629c68bd2.js +1 -0
  937. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-0958b3b629c68bd2.js +1 -0
  938. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-0958b3b629c68bd2.js +1 -0
  939. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-0958b3b629c68bd2.js +1 -0
  940. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-0958b3b629c68bd2.js +1 -0
  941. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-0958b3b629c68bd2.js +1 -0
  942. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-0958b3b629c68bd2.js +1 -0
  943. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-0958b3b629c68bd2.js +1 -0
  944. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-0958b3b629c68bd2.js +1 -0
  945. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-0958b3b629c68bd2.js +1 -0
  946. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-0958b3b629c68bd2.js +1 -0
  947. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-0958b3b629c68bd2.js +1 -0
  948. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-0958b3b629c68bd2.js +1 -0
  949. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-0958b3b629c68bd2.js +1 -0
  950. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +1 -0
  951. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +1 -0
  952. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-0958b3b629c68bd2.js +1 -0
  953. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-0958b3b629c68bd2.js +1 -0
  954. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-0958b3b629c68bd2.js +1 -0
  955. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +1 -0
  956. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +1 -0
  957. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/route-0958b3b629c68bd2.js +1 -0
  958. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/latest/route-0958b3b629c68bd2.js +1 -0
  959. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/route-0958b3b629c68bd2.js +1 -0
  960. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +1 -0
  961. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +1 -0
  962. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-0958b3b629c68bd2.js +1 -0
  963. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-0958b3b629c68bd2.js +1 -0
  964. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-0958b3b629c68bd2.js +1 -0
  965. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +1 -0
  966. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +1 -0
  967. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-0958b3b629c68bd2.js +1 -0
  968. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-0958b3b629c68bd2.js +1 -0
  969. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-0958b3b629c68bd2.js +1 -0
  970. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-0958b3b629c68bd2.js +1 -0
  971. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-0958b3b629c68bd2.js +1 -0
  972. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +1 -0
  973. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +1 -0
  974. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-0958b3b629c68bd2.js +1 -0
  975. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-0958b3b629c68bd2.js +1 -0
  976. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-0958b3b629c68bd2.js +1 -0
  977. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-0958b3b629c68bd2.js +1 -0
  978. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-0958b3b629c68bd2.js +1 -0
  979. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-0958b3b629c68bd2.js +1 -0
  980. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-0958b3b629c68bd2.js +1 -0
  981. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-0958b3b629c68bd2.js +1 -0
  982. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-0958b3b629c68bd2.js +1 -0
  983. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +1 -0
  984. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +1 -0
  985. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-0958b3b629c68bd2.js +1 -0
  986. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-0958b3b629c68bd2.js +1 -0
  987. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-0958b3b629c68bd2.js +1 -0
  988. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-0958b3b629c68bd2.js +1 -0
  989. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-0958b3b629c68bd2.js +1 -0
  990. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +1 -0
  991. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +1 -0
  992. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-0958b3b629c68bd2.js +1 -0
  993. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-0958b3b629c68bd2.js +1 -0
  994. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-0958b3b629c68bd2.js +1 -0
  995. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-0958b3b629c68bd2.js +1 -0
  996. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-0958b3b629c68bd2.js +1 -0
  997. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-0958b3b629c68bd2.js +1 -0
  998. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-0958b3b629c68bd2.js +1 -0
  999. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-0958b3b629c68bd2.js +1 -0
  1000. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-0958b3b629c68bd2.js +1 -0
  1001. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-0958b3b629c68bd2.js +1 -0
  1002. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-0958b3b629c68bd2.js +1 -0
  1003. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-0958b3b629c68bd2.js +1 -0
  1004. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-0958b3b629c68bd2.js +1 -0
  1005. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-0958b3b629c68bd2.js +1 -0
  1006. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-0958b3b629c68bd2.js +1 -0
  1007. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-0958b3b629c68bd2.js +1 -0
  1008. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-0958b3b629c68bd2.js +1 -0
  1009. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-0958b3b629c68bd2.js +1 -0
  1010. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-0958b3b629c68bd2.js +1 -0
  1011. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-0958b3b629c68bd2.js +1 -0
  1012. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-0958b3b629c68bd2.js +1 -0
  1013. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-0958b3b629c68bd2.js +1 -0
  1014. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-0958b3b629c68bd2.js +1 -0
  1015. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-0958b3b629c68bd2.js +1 -0
  1016. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-0958b3b629c68bd2.js +1 -0
  1017. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-0958b3b629c68bd2.js +1 -0
  1018. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-0958b3b629c68bd2.js +1 -0
  1019. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-0958b3b629c68bd2.js +1 -0
  1020. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-0958b3b629c68bd2.js +1 -0
  1021. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-0958b3b629c68bd2.js +1 -0
  1022. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-0958b3b629c68bd2.js +1 -0
  1023. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-0958b3b629c68bd2.js +1 -0
  1024. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-0958b3b629c68bd2.js +1 -0
  1025. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-0958b3b629c68bd2.js +1 -0
  1026. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-0958b3b629c68bd2.js +1 -0
  1027. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-0958b3b629c68bd2.js +1 -0
  1028. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-0958b3b629c68bd2.js +1 -0
  1029. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-0958b3b629c68bd2.js +1 -0
  1030. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-0958b3b629c68bd2.js +1 -0
  1031. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-0958b3b629c68bd2.js +1 -0
  1032. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-0958b3b629c68bd2.js +1 -0
  1033. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-0958b3b629c68bd2.js +1 -0
  1034. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-0958b3b629c68bd2.js +1 -0
  1035. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-0958b3b629c68bd2.js +1 -0
  1036. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-0958b3b629c68bd2.js +1 -0
  1037. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-0958b3b629c68bd2.js +1 -0
  1038. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-0958b3b629c68bd2.js +1 -0
  1039. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-0958b3b629c68bd2.js +1 -0
  1040. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-0958b3b629c68bd2.js +1 -0
  1041. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-0958b3b629c68bd2.js +1 -0
  1042. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-0958b3b629c68bd2.js +1 -0
  1043. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-0958b3b629c68bd2.js +1 -0
  1044. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-0958b3b629c68bd2.js +1 -0
  1045. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-0958b3b629c68bd2.js +1 -0
  1046. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-0958b3b629c68bd2.js +1 -0
  1047. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-0958b3b629c68bd2.js +1 -0
  1048. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-0958b3b629c68bd2.js +1 -0
  1049. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-0958b3b629c68bd2.js +1 -0
  1050. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-0958b3b629c68bd2.js +1 -0
  1051. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-0958b3b629c68bd2.js +1 -0
  1052. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-0958b3b629c68bd2.js +1 -0
  1053. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-0958b3b629c68bd2.js +1 -0
  1054. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-0958b3b629c68bd2.js +1 -0
  1055. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-0958b3b629c68bd2.js +1 -0
  1056. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-0958b3b629c68bd2.js +1 -0
  1057. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-0958b3b629c68bd2.js +1 -0
  1058. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-0958b3b629c68bd2.js +1 -0
  1059. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-0958b3b629c68bd2.js +1 -0
  1060. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-0958b3b629c68bd2.js +1 -0
  1061. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-0958b3b629c68bd2.js +1 -0
  1062. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-0958b3b629c68bd2.js +1 -0
  1063. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-0958b3b629c68bd2.js +1 -0
  1064. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-0958b3b629c68bd2.js +1 -0
  1065. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-0958b3b629c68bd2.js +1 -0
  1066. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-0958b3b629c68bd2.js +1 -0
  1067. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-0958b3b629c68bd2.js +1 -0
  1068. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-0958b3b629c68bd2.js +1 -0
  1069. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-0958b3b629c68bd2.js +1 -0
  1070. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-0958b3b629c68bd2.js +1 -0
  1071. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-0958b3b629c68bd2.js +1 -0
  1072. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-0958b3b629c68bd2.js +1 -0
  1073. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-0958b3b629c68bd2.js +1 -0
  1074. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-0958b3b629c68bd2.js +1 -0
  1075. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-0958b3b629c68bd2.js +1 -0
  1076. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-0958b3b629c68bd2.js +1 -0
  1077. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-0958b3b629c68bd2.js +1 -0
  1078. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-0958b3b629c68bd2.js +1 -0
  1079. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-0958b3b629c68bd2.js +1 -0
  1080. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-0958b3b629c68bd2.js +1 -0
  1081. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-0958b3b629c68bd2.js +1 -0
  1082. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-0958b3b629c68bd2.js +1 -0
  1083. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-0958b3b629c68bd2.js +1 -0
  1084. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-0958b3b629c68bd2.js +1 -0
  1085. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-0958b3b629c68bd2.js +1 -0
  1086. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-0958b3b629c68bd2.js +1 -0
  1087. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-0958b3b629c68bd2.js +1 -0
  1088. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-0958b3b629c68bd2.js +1 -0
  1089. package/cli/app/.next-cli-build/static/chunks/app/callback/page-46f416e4d9761459.js +1 -0
  1090. package/cli/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-73d3a4f63b04d3b7.js +1 -0
  1091. package/cli/app/.next-cli-build/static/chunks/app/landing/page-c25b710b30674c8b.js +1 -0
  1092. package/cli/app/.next-cli-build/static/chunks/app/layout-877a5e197a59de85.js +1 -0
  1093. package/cli/app/.next-cli-build/static/chunks/app/login/page-6d5463b29f4c2091.js +1 -0
  1094. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-0958b3b629c68bd2.js +1 -0
  1095. package/cli/app/.next-cli-build/static/chunks/app/page-0958b3b629c68bd2.js +1 -0
  1096. package/cli/app/.next-cli-build/static/chunks/{fcafe1ac-fb00beefde649e9f.js → e868780c-9fd397bedad188d4.js} +1 -1
  1097. package/cli/app/.next-cli-build/static/chunks/framework-711ef29bc66f648c.js +1 -0
  1098. package/cli/app/.next-cli-build/static/chunks/main-1539aac2075bb2e7.js +5 -0
  1099. package/cli/app/.next-cli-build/static/chunks/main-app-19158719aba2802f.js +1 -0
  1100. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-0958b3b629c68bd2.js +1 -0
  1101. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-0958b3b629c68bd2.js +1 -0
  1102. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/global-error-af60171a653b28c7.js +1 -0
  1103. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-0958b3b629c68bd2.js +1 -0
  1104. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-0958b3b629c68bd2.js +1 -0
  1105. package/cli/app/.next-cli-build/static/chunks/{webpack-9c203f4468cc2f7c.js → webpack-948b910ed7afd0b8.js} +1 -1
  1106. package/cli/app/.next-cli-build/static/css/1f0d0f24ab2983b7.css +1 -0
  1107. package/cli/app/.next-cli-build/static/css/{f0a349c70ab9fca8.css → 30eaa31d38376b4f.css} +1 -1
  1108. package/cli/app/.next-cli-build/static/css/{008a05b0ad6b854a.css → e07f2bf4fa519943.css} +1 -1
  1109. package/cli/app/.next-cli-build/static/media/material-symbols-outlined.5445fd89.woff2 +0 -0
  1110. package/cli/app/CHANGELOG.md +14 -0
  1111. package/cli/app/package.json +1 -1
  1112. package/cli/app/server.js +1 -1
  1113. package/cli/package.json +1 -1
  1114. package/open-sse/config/providerModels.js +5 -2
  1115. package/open-sse/services/usage.js +8 -7
  1116. package/package.json +1 -1
  1117. package/src/app/(dashboard)/dashboard/automation/page.js +13 -109
  1118. package/src/shared/components/BulkAccountAutomationModal.js +15 -6
  1119. package/src/shared/constants/automationProviders.js +0 -2
  1120. package/cli/app/.next-cli-build/server/chunks/1046.js +0 -1
  1121. package/cli/app/.next-cli-build/server/chunks/1237.js +0 -51
  1122. package/cli/app/.next-cli-build/server/chunks/1500.js +0 -1
  1123. package/cli/app/.next-cli-build/server/chunks/1536.js +0 -1
  1124. package/cli/app/.next-cli-build/server/chunks/1586.js +0 -7
  1125. package/cli/app/.next-cli-build/server/chunks/1637.js +0 -3
  1126. package/cli/app/.next-cli-build/server/chunks/2027.js +0 -1
  1127. package/cli/app/.next-cli-build/server/chunks/2282.js +0 -1
  1128. package/cli/app/.next-cli-build/server/chunks/23.js +0 -63
  1129. package/cli/app/.next-cli-build/server/chunks/2423.js +0 -1
  1130. package/cli/app/.next-cli-build/server/chunks/2674.js +0 -121
  1131. package/cli/app/.next-cli-build/server/chunks/3174.js +0 -19
  1132. package/cli/app/.next-cli-build/server/chunks/3538.js +0 -1
  1133. package/cli/app/.next-cli-build/server/chunks/3560.js +0 -7
  1134. package/cli/app/.next-cli-build/server/chunks/3833.js +0 -1
  1135. package/cli/app/.next-cli-build/server/chunks/3871.js +0 -60
  1136. package/cli/app/.next-cli-build/server/chunks/3972.js +0 -1
  1137. package/cli/app/.next-cli-build/server/chunks/4014.js +0 -1
  1138. package/cli/app/.next-cli-build/server/chunks/4088.js +0 -1
  1139. package/cli/app/.next-cli-build/server/chunks/4293.js +0 -1
  1140. package/cli/app/.next-cli-build/server/chunks/4350.js +0 -1
  1141. package/cli/app/.next-cli-build/server/chunks/4441.js +0 -24
  1142. package/cli/app/.next-cli-build/server/chunks/4539.js +0 -1
  1143. package/cli/app/.next-cli-build/server/chunks/46.js +0 -17
  1144. package/cli/app/.next-cli-build/server/chunks/4607.js +0 -18
  1145. package/cli/app/.next-cli-build/server/chunks/4693.js +0 -1
  1146. package/cli/app/.next-cli-build/server/chunks/4959.js +0 -1
  1147. package/cli/app/.next-cli-build/server/chunks/497.js +0 -1
  1148. package/cli/app/.next-cli-build/server/chunks/5015.js +0 -67
  1149. package/cli/app/.next-cli-build/server/chunks/5337.js +0 -1
  1150. package/cli/app/.next-cli-build/server/chunks/5614.js +0 -8
  1151. package/cli/app/.next-cli-build/server/chunks/5747.js +0 -1
  1152. package/cli/app/.next-cli-build/server/chunks/5956.js +0 -1
  1153. package/cli/app/.next-cli-build/server/chunks/6041.js +0 -1
  1154. package/cli/app/.next-cli-build/server/chunks/6170.js +0 -3
  1155. package/cli/app/.next-cli-build/server/chunks/6220.js +0 -1
  1156. package/cli/app/.next-cli-build/server/chunks/6372.js +0 -1
  1157. package/cli/app/.next-cli-build/server/chunks/6408.js +0 -43
  1158. package/cli/app/.next-cli-build/server/chunks/6673.js +0 -1
  1159. package/cli/app/.next-cli-build/server/chunks/6714.js +0 -1
  1160. package/cli/app/.next-cli-build/server/chunks/733.js +0 -1
  1161. package/cli/app/.next-cli-build/server/chunks/7716.js +0 -1
  1162. package/cli/app/.next-cli-build/server/chunks/7729.js +0 -1
  1163. package/cli/app/.next-cli-build/server/chunks/7806.js +0 -1
  1164. package/cli/app/.next-cli-build/server/chunks/7870.js +0 -1
  1165. package/cli/app/.next-cli-build/server/chunks/8180.js +0 -1
  1166. package/cli/app/.next-cli-build/server/chunks/8182.js +0 -1
  1167. package/cli/app/.next-cli-build/server/chunks/8183.js +0 -1
  1168. package/cli/app/.next-cli-build/server/chunks/8227.js +0 -1
  1169. package/cli/app/.next-cli-build/server/chunks/83.js +0 -45
  1170. package/cli/app/.next-cli-build/server/chunks/8341.js +0 -1
  1171. package/cli/app/.next-cli-build/server/chunks/857.js +0 -1
  1172. package/cli/app/.next-cli-build/server/chunks/8669.js +0 -1
  1173. package/cli/app/.next-cli-build/server/chunks/8779.js +0 -1
  1174. package/cli/app/.next-cli-build/server/chunks/9001.js +0 -1
  1175. package/cli/app/.next-cli-build/server/chunks/906.js +0 -183
  1176. package/cli/app/.next-cli-build/server/chunks/9345.js +0 -1
  1177. package/cli/app/.next-cli-build/server/chunks/9901.js +0 -1
  1178. package/cli/app/.next-cli-build/server/chunks/9992.js +0 -66
  1179. package/cli/app/.next-cli-build/static/chunks/1096-6d775ecc28cf6340.js +0 -1
  1180. package/cli/app/.next-cli-build/static/chunks/1554-f9422191725f4f61.js +0 -1
  1181. package/cli/app/.next-cli-build/static/chunks/1858-5de22f4a0f7873ea.js +0 -32
  1182. package/cli/app/.next-cli-build/static/chunks/2b9ff8ee-8330dc76023de107.js +0 -1
  1183. package/cli/app/.next-cli-build/static/chunks/4391-0e471d2e761014ea.js +0 -3
  1184. package/cli/app/.next-cli-build/static/chunks/6656-0ca5257ec474f863.js +0 -66
  1185. package/cli/app/.next-cli-build/static/chunks/7783-7a4ed0063ec0fecc.js +0 -7
  1186. package/cli/app/.next-cli-build/static/chunks/7813-e1ba7449a3791419.js +0 -1
  1187. package/cli/app/.next-cli-build/static/chunks/8689-ee86215b9a3eb108.js +0 -1
  1188. package/cli/app/.next-cli-build/static/chunks/888-1894db92ff847dbb.js +0 -1
  1189. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/automation/page-2ee85b86d7597651.js +0 -1
  1190. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-bad8ff5503e4f0b7.js +0 -1
  1191. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-3fb4f7227c4ab57f.js +0 -1
  1192. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-9459e82acdd078ac.js +0 -1
  1193. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-f411959991f96990.js +0 -1
  1194. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-1a77fd86f2a4922a.js +0 -1
  1195. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/context/page-63e5ceb81d87c300.js +0 -1
  1196. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-1a097de73412d440.js +0 -1
  1197. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-7427ee87015d1113.js +0 -1
  1198. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-ca761e638d38dae4.js +0 -1
  1199. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-eeb71d37d39b3586.js +0 -1
  1200. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-1c1a986664906bea.js +0 -1
  1201. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-284542c819665387.js +0 -1
  1202. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-30229a682f3cb8df.js +0 -1
  1203. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-71ca5c61fe011c5b.js +0 -1
  1204. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-fa8e4cba2691a844.js +0 -1
  1205. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-fb96c1c4474868b3.js +0 -1
  1206. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-ef6d294917d01201.js +0 -1
  1207. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-86b61948afed34e8.js +0 -1
  1208. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-b4939c80e73c7dfd.js +0 -1
  1209. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-2e14da9e57c3e171.js +0 -1
  1210. package/cli/app/.next-cli-build/static/chunks/app/_not-found/page-85ef61223793be87.js +0 -1
  1211. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-63a0542d75a38025.js +0 -1
  1212. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-63a0542d75a38025.js +0 -1
  1213. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-63a0542d75a38025.js +0 -1
  1214. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-63a0542d75a38025.js +0 -1
  1215. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-63a0542d75a38025.js +0 -1
  1216. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-63a0542d75a38025.js +0 -1
  1217. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-63a0542d75a38025.js +0 -1
  1218. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-63a0542d75a38025.js +0 -1
  1219. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-63a0542d75a38025.js +0 -1
  1220. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-63a0542d75a38025.js +0 -1
  1221. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-63a0542d75a38025.js +0 -1
  1222. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-63a0542d75a38025.js +0 -1
  1223. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-63a0542d75a38025.js +0 -1
  1224. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-63a0542d75a38025.js +0 -1
  1225. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-63a0542d75a38025.js +0 -1
  1226. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-63a0542d75a38025.js +0 -1
  1227. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-63a0542d75a38025.js +0 -1
  1228. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-63a0542d75a38025.js +0 -1
  1229. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-63a0542d75a38025.js +0 -1
  1230. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-63a0542d75a38025.js +0 -1
  1231. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-63a0542d75a38025.js +0 -1
  1232. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-63a0542d75a38025.js +0 -1
  1233. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-63a0542d75a38025.js +0 -1
  1234. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-63a0542d75a38025.js +0 -1
  1235. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-63a0542d75a38025.js +0 -1
  1236. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-63a0542d75a38025.js +0 -1
  1237. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-63a0542d75a38025.js +0 -1
  1238. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-63a0542d75a38025.js +0 -1
  1239. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-63a0542d75a38025.js +0 -1
  1240. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-63a0542d75a38025.js +0 -1
  1241. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-63a0542d75a38025.js +0 -1
  1242. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-63a0542d75a38025.js +0 -1
  1243. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-63a0542d75a38025.js +0 -1
  1244. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-63a0542d75a38025.js +0 -1
  1245. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-63a0542d75a38025.js +0 -1
  1246. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-63a0542d75a38025.js +0 -1
  1247. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-63a0542d75a38025.js +0 -1
  1248. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-63a0542d75a38025.js +0 -1
  1249. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-63a0542d75a38025.js +0 -1
  1250. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-63a0542d75a38025.js +0 -1
  1251. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-63a0542d75a38025.js +0 -1
  1252. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-63a0542d75a38025.js +0 -1
  1253. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-63a0542d75a38025.js +0 -1
  1254. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-63a0542d75a38025.js +0 -1
  1255. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-63a0542d75a38025.js +0 -1
  1256. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-63a0542d75a38025.js +0 -1
  1257. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-63a0542d75a38025.js +0 -1
  1258. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-63a0542d75a38025.js +0 -1
  1259. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-63a0542d75a38025.js +0 -1
  1260. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-63a0542d75a38025.js +0 -1
  1261. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-63a0542d75a38025.js +0 -1
  1262. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-63a0542d75a38025.js +0 -1
  1263. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-63a0542d75a38025.js +0 -1
  1264. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-63a0542d75a38025.js +0 -1
  1265. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-63a0542d75a38025.js +0 -1
  1266. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-63a0542d75a38025.js +0 -1
  1267. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-63a0542d75a38025.js +0 -1
  1268. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +0 -1
  1269. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +0 -1
  1270. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-63a0542d75a38025.js +0 -1
  1271. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-63a0542d75a38025.js +0 -1
  1272. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-63a0542d75a38025.js +0 -1
  1273. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +0 -1
  1274. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +0 -1
  1275. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/[jobId]/route-63a0542d75a38025.js +0 -1
  1276. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/latest/route-63a0542d75a38025.js +0 -1
  1277. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/autoclaw/bulk-import/route-63a0542d75a38025.js +0 -1
  1278. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +0 -1
  1279. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +0 -1
  1280. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-63a0542d75a38025.js +0 -1
  1281. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-63a0542d75a38025.js +0 -1
  1282. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-63a0542d75a38025.js +0 -1
  1283. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +0 -1
  1284. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +0 -1
  1285. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-63a0542d75a38025.js +0 -1
  1286. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-63a0542d75a38025.js +0 -1
  1287. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-63a0542d75a38025.js +0 -1
  1288. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-63a0542d75a38025.js +0 -1
  1289. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-63a0542d75a38025.js +0 -1
  1290. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +0 -1
  1291. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +0 -1
  1292. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-63a0542d75a38025.js +0 -1
  1293. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-63a0542d75a38025.js +0 -1
  1294. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-63a0542d75a38025.js +0 -1
  1295. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-63a0542d75a38025.js +0 -1
  1296. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-63a0542d75a38025.js +0 -1
  1297. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-63a0542d75a38025.js +0 -1
  1298. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-63a0542d75a38025.js +0 -1
  1299. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-63a0542d75a38025.js +0 -1
  1300. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-63a0542d75a38025.js +0 -1
  1301. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +0 -1
  1302. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +0 -1
  1303. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-63a0542d75a38025.js +0 -1
  1304. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-63a0542d75a38025.js +0 -1
  1305. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-63a0542d75a38025.js +0 -1
  1306. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-63a0542d75a38025.js +0 -1
  1307. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-63a0542d75a38025.js +0 -1
  1308. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +0 -1
  1309. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +0 -1
  1310. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-63a0542d75a38025.js +0 -1
  1311. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-63a0542d75a38025.js +0 -1
  1312. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-63a0542d75a38025.js +0 -1
  1313. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-63a0542d75a38025.js +0 -1
  1314. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-63a0542d75a38025.js +0 -1
  1315. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-63a0542d75a38025.js +0 -1
  1316. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-63a0542d75a38025.js +0 -1
  1317. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-63a0542d75a38025.js +0 -1
  1318. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-63a0542d75a38025.js +0 -1
  1319. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-63a0542d75a38025.js +0 -1
  1320. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-63a0542d75a38025.js +0 -1
  1321. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-63a0542d75a38025.js +0 -1
  1322. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-63a0542d75a38025.js +0 -1
  1323. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-63a0542d75a38025.js +0 -1
  1324. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-63a0542d75a38025.js +0 -1
  1325. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-63a0542d75a38025.js +0 -1
  1326. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-63a0542d75a38025.js +0 -1
  1327. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-63a0542d75a38025.js +0 -1
  1328. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-63a0542d75a38025.js +0 -1
  1329. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-63a0542d75a38025.js +0 -1
  1330. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-63a0542d75a38025.js +0 -1
  1331. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-63a0542d75a38025.js +0 -1
  1332. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-63a0542d75a38025.js +0 -1
  1333. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-63a0542d75a38025.js +0 -1
  1334. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-63a0542d75a38025.js +0 -1
  1335. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-63a0542d75a38025.js +0 -1
  1336. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-63a0542d75a38025.js +0 -1
  1337. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-63a0542d75a38025.js +0 -1
  1338. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-63a0542d75a38025.js +0 -1
  1339. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-63a0542d75a38025.js +0 -1
  1340. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-63a0542d75a38025.js +0 -1
  1341. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-63a0542d75a38025.js +0 -1
  1342. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-63a0542d75a38025.js +0 -1
  1343. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-63a0542d75a38025.js +0 -1
  1344. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-63a0542d75a38025.js +0 -1
  1345. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-63a0542d75a38025.js +0 -1
  1346. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-63a0542d75a38025.js +0 -1
  1347. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-63a0542d75a38025.js +0 -1
  1348. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-63a0542d75a38025.js +0 -1
  1349. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-63a0542d75a38025.js +0 -1
  1350. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-63a0542d75a38025.js +0 -1
  1351. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-63a0542d75a38025.js +0 -1
  1352. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-63a0542d75a38025.js +0 -1
  1353. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-63a0542d75a38025.js +0 -1
  1354. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-63a0542d75a38025.js +0 -1
  1355. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-63a0542d75a38025.js +0 -1
  1356. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-63a0542d75a38025.js +0 -1
  1357. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-63a0542d75a38025.js +0 -1
  1358. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-63a0542d75a38025.js +0 -1
  1359. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-63a0542d75a38025.js +0 -1
  1360. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-63a0542d75a38025.js +0 -1
  1361. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-63a0542d75a38025.js +0 -1
  1362. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-63a0542d75a38025.js +0 -1
  1363. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-63a0542d75a38025.js +0 -1
  1364. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-63a0542d75a38025.js +0 -1
  1365. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-63a0542d75a38025.js +0 -1
  1366. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-63a0542d75a38025.js +0 -1
  1367. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-63a0542d75a38025.js +0 -1
  1368. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-63a0542d75a38025.js +0 -1
  1369. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-63a0542d75a38025.js +0 -1
  1370. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-63a0542d75a38025.js +0 -1
  1371. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-63a0542d75a38025.js +0 -1
  1372. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-63a0542d75a38025.js +0 -1
  1373. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-63a0542d75a38025.js +0 -1
  1374. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-63a0542d75a38025.js +0 -1
  1375. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-63a0542d75a38025.js +0 -1
  1376. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-63a0542d75a38025.js +0 -1
  1377. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-63a0542d75a38025.js +0 -1
  1378. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-63a0542d75a38025.js +0 -1
  1379. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-63a0542d75a38025.js +0 -1
  1380. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-63a0542d75a38025.js +0 -1
  1381. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-63a0542d75a38025.js +0 -1
  1382. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-63a0542d75a38025.js +0 -1
  1383. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-63a0542d75a38025.js +0 -1
  1384. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-63a0542d75a38025.js +0 -1
  1385. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-63a0542d75a38025.js +0 -1
  1386. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-63a0542d75a38025.js +0 -1
  1387. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-63a0542d75a38025.js +0 -1
  1388. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-63a0542d75a38025.js +0 -1
  1389. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-63a0542d75a38025.js +0 -1
  1390. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-63a0542d75a38025.js +0 -1
  1391. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-63a0542d75a38025.js +0 -1
  1392. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-63a0542d75a38025.js +0 -1
  1393. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-63a0542d75a38025.js +0 -1
  1394. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-63a0542d75a38025.js +0 -1
  1395. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-63a0542d75a38025.js +0 -1
  1396. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-63a0542d75a38025.js +0 -1
  1397. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-63a0542d75a38025.js +0 -1
  1398. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-63a0542d75a38025.js +0 -1
  1399. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-63a0542d75a38025.js +0 -1
  1400. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-63a0542d75a38025.js +0 -1
  1401. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-63a0542d75a38025.js +0 -1
  1402. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-63a0542d75a38025.js +0 -1
  1403. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-63a0542d75a38025.js +0 -1
  1404. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-63a0542d75a38025.js +0 -1
  1405. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-63a0542d75a38025.js +0 -1
  1406. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-63a0542d75a38025.js +0 -1
  1407. package/cli/app/.next-cli-build/static/chunks/app/callback/page-747616215eaffcc5.js +0 -1
  1408. package/cli/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-fc0526db0d6faea4.js +0 -1
  1409. package/cli/app/.next-cli-build/static/chunks/app/landing/page-a972ff4fc204488f.js +0 -1
  1410. package/cli/app/.next-cli-build/static/chunks/app/layout-195d8bc39318cb3f.js +0 -1
  1411. package/cli/app/.next-cli-build/static/chunks/app/login/page-ec9730458515625e.js +0 -1
  1412. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-63a0542d75a38025.js +0 -1
  1413. package/cli/app/.next-cli-build/static/chunks/app/page-63a0542d75a38025.js +0 -1
  1414. package/cli/app/.next-cli-build/static/chunks/framework-6b10028fc45b4fba.js +0 -1
  1415. package/cli/app/.next-cli-build/static/chunks/main-af2e4cf487829313.js +0 -5
  1416. package/cli/app/.next-cli-build/static/chunks/main-app-5349704f9863330d.js +0 -1
  1417. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-63a0542d75a38025.js +0 -1
  1418. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-63a0542d75a38025.js +0 -1
  1419. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/global-error-79da82ac351d0af0.js +0 -1
  1420. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-63a0542d75a38025.js +0 -1
  1421. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-63a0542d75a38025.js +0 -1
  1422. package/cli/app/.next-cli-build/static/css/e42a53c7486ca4f0.css +0 -1
  1423. package/cli/app/.next-cli-build/static/media/material-symbols-outlined.cf1f75f5.woff2 +0 -0
  1424. /package/cli/app/.next-cli-build/static/{YyXkaMCJ50p0A8GqlWRS_ → Z0U80pm6SJ5xtgUbMnxKJ}/_buildManifest.js +0 -0
  1425. /package/cli/app/.next-cli-build/static/{YyXkaMCJ50p0A8GqlWRS_ → Z0U80pm6SJ5xtgUbMnxKJ}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2326],{65145:(e,s,l)=>{"use strict";l.d(s,{default:()=>m});var t=l(94799),a=l(34023),r=l(77783),i=l(6142),n=l(29448),o=l(68202),c=l.n(o),d=l(99870);function x({toolId:e,tool:s,status:l}){let a=l?.error?{label:"Unavailable",cls:"bg-red-500/10 text-red-600 dark:text-red-400"}:l?l.installed?l.hasZevai?{label:"Connected",cls:"bg-green-500/10 text-green-600 dark:text-green-400"}:{label:"Not configured",cls:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400"}:{label:"Not installed",cls:"bg-gray-500/10 text-gray-500"}:{label:"Unknown",cls:"bg-gray-500/10 text-gray-500"};return(0,t.jsx)(c(),{href:`/dashboard/cli-tools/${e}`,className:"block",children:(0,t.jsx)(r.Zp,{padding:"sm",className:"h-full overflow-hidden hover:border-primary/50 transition-colors cursor-pointer",children:(0,t.jsx)("div",{className:"flex h-full flex-col gap-2",children:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:s.image?(0,t.jsx)(d.default,{src:s.image,alt:s.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}}):s.icon?(0,t.jsx)("span",{className:"material-symbols-outlined text-[28px]",style:{color:s.color},children:s.icon}):null}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("h3",{className:"font-medium text-sm truncate",children:s.name}),(0,t.jsx)("span",{className:`inline-block mt-1 px-1.5 py-0.5 text-[10px] font-medium rounded-full ${a.cls}`,children:a.label})]}),(0,t.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[18px] shrink-0",children:"chevron_right"})]})})})})}function m({machineId:e}){let[s,l]=(0,a.useState)(!0),[o,c]=(0,a.useState)({}),d=(0,a.useCallback)(async e=>{try{let s=await fetch("/api/cli-tools/all-statuses",{signal:e});s.ok&&c(await s.json())}catch(e){"AbortError"!==e.name&&console.log("Error fetching tool statuses:",e)}finally{e.aborted||l(!1)}},[]);if((0,a.useEffect)(()=>{let e=new AbortController;d(e.signal);let s=()=>{e.abort(),d((e=new AbortController).signal)};return window.addEventListener("focus",s),()=>{e.abort(),window.removeEventListener("focus",s)}},[d]),s)return(0,t.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:[(0,t.jsx)(r.Qv,{}),(0,t.jsx)(r.Qv,{}),(0,t.jsx)(r.Qv,{}),(0,t.jsx)(r.Qv,{}),(0,t.jsx)(r.Qv,{}),(0,t.jsx)(r.Qv,{})]});let g=Object.entries(i.dM),h=Object.entries(i.wn);return(0,t.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-6 px-1 sm:px-0",children:[(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:g.map(([e,s])=>(0,t.jsx)(x,{toolId:e,tool:s,status:o[e]},e))}),(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary",children:"security"}),(0,t.jsx)("h2",{className:"text-sm font-semibold text-text-main",children:"MITM Tools"})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:h.map(([e,s])=>(0,t.jsx)(n.gY,{tool:s},e))})]})]})}},66898:(e,s,l)=>{Promise.resolve().then(l.bind(l,65145))}},e=>{e.O(0,[9118,3986,6656,7813,7783,3539,7408,1858,7358],()=>e(e.s=66898)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3649],{38600:(e,t,s)=>{Promise.resolve().then(s.bind(s,63791))},63791:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>x});var a=s(94799),l=s(34023),r=s(39413),o=s(30898),i=s(46378),n=s(65862),c=s(77783),d=s(33379);s(45303);let m=/^[a-zA-Z0-9_.\-]+$/;function x(){let[e,t]=(0,l.useState)([]),[s,r]=(0,l.useState)(!0),[o,i]=(0,l.useState)(!1),[n,m]=(0,l.useState)(null),[x,u]=(0,l.useState)([]),[b,g]=(0,l.useState)({}),[f,j]=(0,l.useState)(null),[y,v]=(0,l.useState)(1),[w,N]=(0,l.useState)(20),{copied:k,copy:C}=(0,d.C)();(0,l.useEffect)(()=>{S()},[]);let S=async()=>{try{let[e,s,a]=await Promise.all([fetch("/api/combos"),fetch("/api/providers"),fetch("/api/settings")]),l=await e.json(),r=await s.json(),o=a.ok?await a.json():{};e.ok&&t((l.combos||[]).filter(e=>!e.kind)),s.ok&&u(r.connections||[]),g(o.comboStrategies||{})}catch(e){console.log("Error fetching data:",e)}finally{r(!1)}},E=async e=>{try{let t=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(t.ok)await S(),i(!1);else{let e=await t.json();alert(e.error||"Failed to create combo")}}catch(e){console.log("Error creating combo:",e)}},M=async(e,t)=>{try{let s=await fetch(`/api/combos/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(s.ok)await S(),m(null);else{let e=await s.json();alert(e.error||"Failed to update combo")}}catch(e){console.log("Error updating combo:",e)}},O=async s=>{j({title:"Delete Combo",message:"Delete this combo?",onConfirm:async()=>{j(null);try{(await fetch(`/api/combos/${s}`,{method:"DELETE"})).ok&&t(e.filter(e=>e.id!==s))}catch(e){console.log("Error deleting combo:",e)}}})},$=async(e,t)=>{try{let s={...b};t?s[e]={fallbackStrategy:"round-robin"}:delete s[e],await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:s})}),g(s)}catch(e){console.log("Error updating combo strategy:",e)}};(0,l.useEffect)(()=>{v(t=>Math.min(t,Math.max(1,Math.ceil(e.length/w))))},[e.length,w]);let _=Math.min(y,Math.max(1,Math.ceil(e.length/w))),D=e.slice((_-1)*w,_*w);return s?(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsx)(c.Qv,{}),(0,a.jsx)(c.Qv,{})]}):(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h1",{className:"text-2xl font-semibold",children:"Combos"}),(0,a.jsx)("p",{className:"text-sm text-text-muted mt-1",children:"Create model combos with fallback support"})]}),(0,a.jsx)(c.$n,{icon:"add",onClick:()=>i(!0),className:"w-full sm:w-auto",children:"Create Combo"})]}),0===e.length?(0,a.jsx)(c.Zp,{children:(0,a.jsxs)("div",{className:"text-center py-12",children:[(0,a.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"layers"})}),(0,a.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No combos yet"}),(0,a.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create model combos with fallback support"}),(0,a.jsx)(c.$n,{icon:"add",onClick:()=>i(!0),className:"w-full sm:w-auto",children:"Create Combo"})]})}):(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[D.map(e=>(0,a.jsx)(h,{combo:e,copied:k,onCopy:C,onEdit:()=>m(e),onDelete:()=>O(e.id),roundRobinEnabled:b[e.name]?.fallbackStrategy==="round-robin",onToggleRoundRobin:t=>$(e.name,t)},e.id)),(0,a.jsx)(c.dK,{currentPage:_,pageSize:w,totalItems:e.length,onPageChange:v,onPageSizeChange:e=>{N(e),v(1)}})]}),(0,a.jsx)(p,{isOpen:o,onClose:()=>i(!1),onSave:E,activeProviders:x},"create"),(0,a.jsx)(p,{isOpen:!!n,combo:n,onClose:()=>m(null),onSave:e=>M(n.id,e),activeProviders:x},n?.id||"new"),(0,a.jsx)(c.uo,{isOpen:!!f,onClose:()=>j(null),onConfirm:f?.onConfirm,title:f?.title||"Confirm",message:f?.message,variant:"danger"})]})}function h({combo:e,copied:t,onCopy:s,onEdit:l,onDelete:r,roundRobinEnabled:o,onToggleRoundRobin:i}){return(0,a.jsx)(c.Zp,{padding:"sm",className:"group",children:(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-3 sm:items-center",children:[(0,a.jsx)("div",{className:"size-8 rounded-lg bg-primary/10 flex items-center justify-center shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:"layers"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("code",{className:"block truncate font-mono text-sm font-medium",children:e.name}),(0,a.jsxs)("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1",children:[0===e.models.length?(0,a.jsx)("span",{className:"text-xs text-text-muted italic",children:"No models"}):e.models.slice(0,3).map((e,t)=>(0,a.jsx)("code",{className:"max-w-full truncate rounded bg-black/5 px-1.5 py-0.5 font-mono text-[10px] text-text-muted dark:bg-white/5 sm:max-w-[220px]",children:e},t)),e.models.length>3&&(0,a.jsxs)("span",{className:"text-[10px] text-text-muted",children:["+",e.models.length-3," more"]})]})]})]}),(0,a.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center sm:gap-3 sm:shrink-0",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-1.5 rounded-lg bg-black/[0.02] px-2 py-1.5 dark:bg-white/[0.02] sm:justify-start sm:bg-transparent sm:px-0 sm:py-0 sm:dark:bg-transparent",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted font-medium",children:"Round Robin"}),(0,a.jsx)(c.lM,{size:"sm",checked:o,onChange:i})]}),(0,a.jsxs)("div",{className:"grid grid-cols-3 gap-1 sm:flex",children:[(0,a.jsxs)("button",{onClick:t=>{t.stopPropagation(),s(e.name,`combo-${e.id}`)},className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Copy combo name",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:t===`combo-${e.id}`?"check":"content_copy"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Copy"})]}),(0,a.jsxs)("button",{onClick:l,className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Edit",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,a.jsxs)("button",{onClick:r,className:"flex flex-col items-center rounded px-2 py-1 text-red-500 transition-colors hover:bg-red-500/10",title:"Delete",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]})]})]})})}function u({id:e,index:t,model:s,isFirst:r,isLast:n,onEdit:c,onMoveUp:d,onMoveDown:m,onRemove:x}){let{attributes:h,listeners:p,setNodeRef:b,transform:g,isDragging:f}=(0,o.gl)({id:e}),j={transform:i.Ks.Transform.toString(g),opacity:f?.4:1,zIndex:f?999:void 0},[y,v]=(0,l.useState)(!1),[w,N]=(0,l.useState)(s),k=()=>{let e=w.trim();e&&e!==s?c(e):N(s),v(!1)};return(0,a.jsxs)("div",{ref:b,style:j,className:`group flex min-w-0 items-center gap-1.5 rounded-md px-2 py-1 bg-black/[0.02] hover:bg-black/[0.04] dark:bg-white/[0.02] dark:hover:bg-white/[0.04] transition-colors ${f?"shadow-md ring-1 ring-primary/30":""}`,children:[(0,a.jsx)("button",{...h,...p,type:"button",className:"cursor-grab touch-none p-0.5 rounded text-text-muted hover:text-primary active:cursor-grabbing shrink-0",title:"Drag to reorder",children:(0,a.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:[(0,a.jsx)("circle",{cx:"9",cy:"4",r:"2"}),(0,a.jsx)("circle",{cx:"15",cy:"4",r:"2"}),(0,a.jsx)("circle",{cx:"9",cy:"12",r:"2"}),(0,a.jsx)("circle",{cx:"15",cy:"12",r:"2"}),(0,a.jsx)("circle",{cx:"9",cy:"20",r:"2"}),(0,a.jsx)("circle",{cx:"15",cy:"20",r:"2"})]})}),(0,a.jsx)("span",{className:"text-[10px] font-medium text-text-muted w-3 text-center shrink-0",children:t+1}),y?(0,a.jsx)("input",{autoFocus:!0,value:w,onChange:e=>N(e.target.value),onBlur:k,onKeyDown:e=>{"Enter"===e.key&&k(),"Escape"===e.key&&(N(s),v(!1))},className:"min-w-0 flex-1 rounded border border-primary/40 bg-white px-1.5 py-0.5 font-mono text-xs text-text-main outline-none dark:bg-black/20"}):(0,a.jsx)("div",{className:"min-w-0 flex-1 cursor-text truncate rounded px-1.5 py-0.5 font-mono text-xs text-text-main hover:bg-black/5 dark:hover:bg-white/5",onClick:()=>v(!0),title:"Click to edit",children:s}),(0,a.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5",children:[(0,a.jsx)("button",{onClick:d,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move up",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_upward"})}),(0,a.jsx)("button",{onClick:m,disabled:n,className:`p-0.5 rounded ${n?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move down",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_downward"})})]}),(0,a.jsx)("button",{onClick:x,className:"p-0.5 hover:bg-red-500/10 rounded text-text-muted hover:text-red-500 transition-all",title:"Remove",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]})}function p({isOpen:e,combo:t,onClose:s,onSave:i,activeProviders:d,kindFilter:x=null}){let[h,b]=(0,l.useState)(t?.name||""),[g,f]=(0,l.useState)(t?.models||[]),[j,y]=(0,l.useState)(!1),[v,w]=(0,l.useState)(!1),[N,k]=(0,l.useState)(""),[C,S]=(0,l.useState)({}),E=(0,r.FR)((0,r.MS)(r.AN,{activationConstraint:{distance:5}}),(0,r.MS)(r.uN,{coordinateGetter:o.JR})),M=g.map((e,t)=>({uid:`item-${t}`,model:e})),O=async()=>{try{let e=await fetch("/api/models/alias");if(!e.ok)return;let t=await e.json();S(t.aliases||{})}catch(e){console.error("Error fetching modal data:",e)}};(0,l.useEffect)(()=>{e&&O()},[e]);let $=e=>e.trim()?m.test(e)?(k(""),!0):(k("Only letters, numbers, -, _ and . allowed"),!1):(k("Name is required"),!1),_=async()=>{$(h)&&(w(!0),await i({name:h.trim(),models:g}),w(!1))},D=!!t;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(c.aF,{isOpen:e,onClose:s,title:D?"Edit Combo":"Create Combo",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(c.pd,{label:"Combo Name",value:h,onChange:e=>{let t=e.target.value;b(t),t?$(t):k("")},placeholder:"my-combo",error:N}),(0,a.jsx)("p",{className:"text-[10px] text-text-muted mt-0.5",children:"Only letters, numbers, -, _ and . allowed"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium mb-1.5 block",children:"Models"}),0===g.length?(0,a.jsxs)("div",{className:"text-center py-4 border border-dashed border-black/10 dark:border-white/10 rounded-lg bg-black/[0.01] dark:bg-white/[0.01]",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-xl mb-1",children:"layers"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"No models added yet"})]}):(0,a.jsx)(r.Mp,{sensors:E,collisionDetection:r.fp,onDragEnd:e=>{let{active:t,over:s}=e;if(s&&t.id!==s.id){let e=M.findIndex(e=>e.uid===t.id),a=M.findIndex(e=>e.uid===s.id);-1!==e&&-1!==a&&f(t=>(0,o.be)(t,e,a))}},modifiers:[n.FN,n.gj],children:(0,a.jsx)(o.gB,{items:M.map(e=>e.uid),strategy:o._G,children:(0,a.jsx)("div",{className:"flex max-h-[55vh] min-w-0 flex-col gap-1 overflow-y-auto sm:max-h-[350px]",children:M.map(({uid:e,model:t},s)=>(0,a.jsx)(u,{id:e,index:s,model:t,isFirst:0===s,isLast:s===M.length-1,onEdit:e=>{let t=[...g];t[s]=e,f(t)},onMoveUp:()=>(e=>{if(0===e)return;let t=[...g];[t[e-1],t[e]]=[t[e],t[e-1]],f(t)})(s),onMoveDown:()=>(e=>{if(e===g.length-1)return;let t=[...g];[t[e],t[e+1]]=[t[e+1],t[e]],f(t)})(s),onRemove:()=>{f(g.filter((e,t)=>t!==s))}},e))})})}),(0,a.jsxs)("button",{onClick:()=>y(!0),className:"w-full mt-2 py-2 border border-dashed border-black/10 dark:border-white/10 rounded-lg text-xs text-primary font-medium hover:text-primary hover:border-primary/50 transition-colors flex items-center justify-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),"Add Model"]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 pt-1 sm:flex-row",children:[(0,a.jsx)(c.$n,{onClick:s,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,a.jsx)(c.$n,{onClick:_,fullWidth:!0,size:"sm",disabled:!h.trim()||!!N||v,children:v?"Saving...":D?"Save":"Create"})]})]})}),(0,a.jsx)(c.rq,{isOpen:j,onClose:()=>y(!1),onSelect:e=>{g.includes(e.value)||f([...g,e.value])},onDeselect:e=>{f(g.filter(t=>t!==e.value))},activeProviders:d,modelAliases:C,title:"Add Model to Combo",kindFilter:x,addedModelValues:g,closeOnSelect:!1})]})}}},e=>{e.O(0,[9118,3986,6656,8689,7813,7783,7408,1858,7358],()=>e(e.s=38600)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[712],{27805:(e,t,l)=>{"use strict";l.d(t,{default:()=>o});var n=l(94799),s=l(34023),r=l(77783),a=l(65418);let c={LOG:"text-green-700 dark:text-green-400",INFO:"text-blue-700 dark:text-blue-400",WARN:"text-amber-700 dark:text-yellow-400",ERROR:"text-red-700 dark:text-red-400",DEBUG:"text-purple-700 dark:text-purple-400"};function o(){let[e,t]=(0,s.useState)([]),[l,o]=(0,s.useState)("connecting"),[i,d]=(0,s.useState)(0),[u,x]=(0,s.useState)(!1),[g,p]=(0,s.useState)(null),m=(0,s.useRef)(null),h=async()=>{if(!u){x(!0),p(null),t([]);try{let e=await fetch("/api/translator/console-logs",{method:"DELETE"});if(!e.ok)throw Error(`Failed to clear logs (${e.status})`)}catch(l){t(e),p(l.message||"Failed to clear console logs")}finally{x(!1)}}};return(0,s.useEffect)(()=>{let e=new EventSource("/api/translator/console-logs/stream");return e.onopen=()=>o("connected"),e.onmessage=e=>{try{let l=JSON.parse(e.data);"init"===l.type&&Array.isArray(l.logs)?t(l.logs.slice(-a.UY.maxLines)):"line"===l.type&&null!=l.line?t(e=>[...e,String(l.line)].slice(-a.UY.maxLines)):"clear"===l.type&&t([])}catch{p("Received an invalid console log event")}},e.onerror=()=>o("disconnected"),()=>e.close()},[i]),(0,s.useEffect)(()=>{m.current&&(m.current.scrollTop=m.current.scrollHeight)},[e]),(0,n.jsxs)(r.Zp,{className:"p-0 overflow-hidden",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 border-b border-border bg-surface-2 px-4 py-3",children:[(0,n.jsxs)("div",{role:"status","aria-live":"polite",className:"flex items-center gap-2",children:[(0,n.jsx)("span",{"aria-hidden":"true",className:`size-2 rounded-full ${"connected"===l?"bg-green-500":"connecting"===l?"animate-pulse bg-yellow-500":"bg-red-500"}`}),(0,n.jsx)("span",{className:"text-sm capitalize text-text-muted",children:l})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:["disconnected"===l?(0,n.jsx)(r.$n,{size:"sm",variant:"outline",onClick:()=>{o("connecting"),p(null),d(e=>e+1)},children:"Reconnect"}):null,(0,n.jsx)(r.$n,{size:"sm",variant:"outline",icon:"delete",onClick:h,loading:u,disabled:0===e.length,children:"Clear"})]})]}),g?(0,n.jsx)("div",{role:"alert",className:"border-b border-border px-4 py-2 text-sm text-danger",children:g}):null,(0,n.jsx)("div",{ref:m,role:"log","aria-live":"polite","aria-relevant":"additions text",className:"h-[calc(100vh-220px)] overflow-y-auto bg-bg-alt p-4 font-mono text-xs text-text-main dark:bg-black",children:0===e.length?(0,n.jsx)("span",{className:"text-text-muted",children:"connecting"===l?"Connecting to console logs…":"disconnected"===l?"Console log stream disconnected.":"No console logs yet. Logs appear after routed requests."}):(0,n.jsx)("div",{className:"space-y-0.5",children:e.map((e,t)=>{let l,s,r;return(0,n.jsx)("div",{children:(r=c[(s=(l="string"==typeof e?e:String(e)).match(/\[(\w+)\]/g))?s[1]?.replace(/\[|\]/g,""):null]||"text-green-700 dark:text-green-400",(0,n.jsx)("span",{className:r,children:l}))},`${t}-${e}`)})})})]})}},78879:(e,t,l)=>{Promise.resolve().then(l.bind(l,27805))}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=78879)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9933],{54886:(e,t,s)=>{Promise.resolve().then(s.bind(s,74079))},74079:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>r});var a=s(94799),n=s(34023),l=s(77783);function i(e){let t=new TextEncoder().encode(e||"").length;return t<1024?`${t} B`:`${(t/1024).toFixed(1)} KB`}function r(){let[e,t]=(0,n.useState)(!1),[s,r]=(0,n.useState)([]),[d,c]=(0,n.useState)(!0),[o,m]=(0,n.useState)(!1),[x,h]=(0,n.useState)(null),[p,u]=(0,n.useState)(null),[f,b]=(0,n.useState)({type:"",message:""}),[g,j]=(0,n.useState)(!1),y=(0,n.useRef)(null),N=(0,n.useCallback)(async()=>{c(!0);try{let[e,s]=await Promise.all([fetch("/api/settings",{cache:"no-store"}),fetch("/api/context",{cache:"no-store"})]),a=await e.json(),n=await s.json();t(!!a.contextInjectionEnabled),r(Array.isArray(n.files)?n.files:[])}catch(e){b({type:"error",message:"Failed to load context files."})}finally{c(!1)}},[]);(0,n.useEffect)(()=>{N()},[N]);let v=async e=>{t(e);try{await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({contextInjectionEnabled:e})})}catch{t(!e),b({type:"error",message:"Failed to update global toggle."})}},w=async()=>{if(!x?.name?.trim())return void b({type:"error",message:"Name is required."});m(!0);try{x.id?await fetch(`/api/context/${x.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:x.name,content:x.content})}):await fetch("/api/context",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:x.name,content:x.content,priority:s.length})}),h(null),await N(),b({type:"success",message:"Saved."})}catch{b({type:"error",message:"Failed to save."})}finally{m(!1)}},k=async(e,t)=>{r(s=>s.map(s=>s.id===e.id?{...s,enabled:t}:s));try{await fetch(`/api/context/${e.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:t})})}catch{await N()}},C=async()=>{if(p)try{await fetch(`/api/context/${p.id}`,{method:"DELETE"}),u(null),await N()}catch{b({type:"error",message:"Failed to delete."})}},E=async e=>{let t=Array.from(e.target.files||[]);if(0!==t.length){j(!0),b({type:"",message:""});try{let e=await Promise.all(t.map(async e=>({name:e.name,content:await e.text()}))),s=await fetch("/api/context/bulk",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({files:e})}),a=await s.json();if(!s.ok)throw Error(a?.error||"Upload failed");await N(),b({type:"success",message:`Uploaded ${a.created} file(s) — all disabled by default. Enable the ones you want below.`})}catch(e){b({type:"error",message:e.message||"Upload failed."})}finally{j(!1),y.current&&(y.current.value="")}}},S=s.filter(e=>e.enabled).length,T=s.filter(e=>e.enabled).reduce((e,t)=>e+new TextEncoder().encode(t.content||"").length,0);return(0,a.jsxs)("div",{className:"max-w-4xl mx-auto space-y-6",children:[(0,a.jsxs)(l.Zp,{padding:"md",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-4 flex-wrap",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h1",{className:"text-lg font-semibold text-text-main",children:"Context Injection"}),(0,a.jsx)("p",{className:"text-xs text-text-muted mt-1 max-w-xl",children:"Prepend your own context files (soul.md, agent.md, rules…) to the system prompt of every chat request routed through ZevaiRouter. Enabled files are injected in order, across all providers."})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,a.jsx)("span",{className:"text-sm text-text-muted",children:e?"On":"Off"}),(0,a.jsx)(l.lM,{checked:e,onChange:v})]})]}),e&&(0,a.jsxs)("p",{className:"text-[11px] text-text-muted mt-3",children:[S," file(s) active \xb7 ~",(T/1024).toFixed(1)," KB added to every request"]})]}),f.message&&(0,a.jsx)("div",{className:`text-xs px-3 py-2 rounded ${"error"===f.type?"text-red-500 bg-red-500/10":"text-green-600 bg-green-500/10"}`,children:f.message}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("h2",{className:"text-sm font-semibold text-text-main",children:"Files"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("input",{ref:y,type:"file",multiple:!0,className:"hidden",onChange:E}),(0,a.jsxs)(l.$n,{variant:"ghost",size:"sm",onClick:()=>y.current?.click(),disabled:g,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1",children:"upload_file"}),g?"Uploading…":"Upload .md"]}),(0,a.jsxs)(l.$n,{size:"sm",onClick:()=>h({name:"",content:"",enabled:!0}),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1",children:"add"}),"Add File"]})]})]}),d?(0,a.jsx)("div",{className:"text-sm text-text-muted",children:"Loading…"}):0===s.length?(0,a.jsx)(l.Zp,{padding:"md",children:(0,a.jsxs)("p",{className:"text-sm text-text-muted",children:["No context files yet. Click ",(0,a.jsx)("b",{children:"Add File"})," to create one (e.g. ",(0,a.jsx)("code",{children:"soul.md"}),")."]})}):(0,a.jsx)("div",{className:"space-y-2",children:s.map(e=>(0,a.jsxs)("div",{className:"flex items-start gap-3 p-4 rounded-[14px] border border-border-subtle bg-surface",children:[(0,a.jsx)("div",{className:"size-9 rounded-lg flex items-center justify-center shrink-0 bg-primary/10 text-primary",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"description"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,a.jsx)("h3",{className:"font-semibold text-sm text-text-main",children:e.name}),(0,a.jsx)(l.Ex,{variant:"default",size:"sm",children:i(e.content)}),!e.enabled&&(0,a.jsx)(l.Ex,{variant:"default",size:"sm",children:"disabled"})]}),(0,a.jsx)("p",{className:"text-xs text-text-muted mt-0.5 line-clamp-2 whitespace-pre-wrap",children:e.content?.slice(0,160)||"(empty)"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,a.jsx)(l.lM,{checked:e.enabled,onChange:t=>k(e,t),size:"sm"}),(0,a.jsx)("button",{onClick:()=>h({...e}),className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5",title:"Edit",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,a.jsx)("button",{onClick:()=>u(e),className:"p-1.5 rounded-lg text-text-muted hover:bg-red-500/10 hover:text-red-500",title:"Delete",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},e.id))}),x&&(0,a.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/30 backdrop-blur-sm",onClick:()=>h(null)}),(0,a.jsxs)("div",{className:"relative w-full max-w-2xl bg-surface border border-black/10 dark:border-white/10 rounded-xl shadow-2xl flex flex-col max-h-[85vh]",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between p-3 border-b border-black/5 dark:border-white/5",children:[(0,a.jsx)("h2",{className:"text-base font-semibold text-text-main",children:x.id?"Edit File":"New Context File"}),(0,a.jsx)("button",{onClick:()=>h(null),className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,a.jsxs)("div",{className:"p-4 space-y-3 overflow-y-auto flex-1",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Name"}),(0,a.jsx)(l.pd,{placeholder:"soul.md",value:x.name,onChange:e=>h(t=>({...t,name:e.target.value}))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Content (markdown / plain text)"}),(0,a.jsx)("textarea",{className:"w-full mt-1 rounded-lg border border-border bg-surface-2 p-3 font-mono text-xs text-text-main min-h-[280px] resize-y focus:outline-none focus:ring-2 focus:ring-primary/40",placeholder:"You are a helpful assistant with the following persona…",value:x.content,onChange:e=>h(t=>({...t,content:e.target.value}))}),(0,a.jsxs)("p",{className:"text-[11px] text-text-muted mt-1",children:[i(x.content)," \xb7 injected into the system prompt"]})]})]}),(0,a.jsxs)("div",{className:"flex items-center justify-end gap-2 p-3 border-t border-black/5 dark:border-white/5",children:[(0,a.jsx)(l.$n,{variant:"ghost",size:"sm",onClick:()=>h(null),children:"Cancel"}),(0,a.jsx)(l.$n,{size:"sm",onClick:w,disabled:o,children:o?"Saving…":"Save"})]})]})]}),(0,a.jsx)(l.uo,{isOpen:!!p,title:"Delete context file?",message:`"${p?.name}" will be permanently removed.`,confirmText:"Delete",variant:"danger",onConfirm:C,onClose:()=>u(null)})]})}}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=54886)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6099],{},_=>{_.O(0,[9118,3986,6656,7813,7783,4391,7408,1858,7358],()=>_(_.s=94391)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6620],{69408:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>f});var i=t(94799),r=t(1727),a=t(68202),n=t.n(a),o=t(34023),l=t(77783),c=t(94994),d=t(45303);let m=new Set([]),x={image:"image-combo",tts:"tts-combo"};function h(e){let s=Object.entries(e).some(([e,s])=>e.startsWith("modelLock_")&&s&&new Date(s).getTime()>Date.now());return"unavailable"!==e.testStatus||s?e.testStatus:"active"}function p({provider:e,kind:s,connections:t,isCustom:r,onToggle:a}){let o=d.Q2[e.id],m=!!o?.noAuth,x=t.filter(s=>s.provider===e.id),u=x.filter(e=>{let s=h(e);return"active"===s||"success"===s}).length,f=x.filter(e=>{let s=h(e);return"error"===s||"expired"===s||"unavailable"===s}).length,g=x.length,j=g>0&&x.every(e=>!1===e.isActive);return(0,i.jsx)(n(),{href:`/dashboard/media-providers/${s}/${e.id}`,className:"group",children:(0,i.jsx)(l.Zp,{padding:"xs",className:`h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer ${j?"opacity-50":""}`,children:(0,i.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,i.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,i.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${e.color?.length>7?e.color:(e.color??"#888")+"15"}`},children:(0,i.jsx)(c.A,{src:`/providers/${e.id}.png`,alt:e.name,size:30,className:"object-contain rounded-lg max-w-[30px] max-h-[30px]",fallbackText:e.textIcon||e.id.slice(0,2).toUpperCase(),fallbackColor:e.color})}),(0,i.jsxs)("div",{className:"min-w-0",children:[(0,i.jsx)("h3",{className:"font-semibold text-sm",children:e.name}),(0,i.jsxs)("div",{className:"flex items-center gap-2 mt-0.5 flex-wrap",children:[r&&(0,i.jsx)(l.Ex,{variant:"default",size:"sm",children:"Custom"}),m?(0,i.jsx)(l.Ex,{variant:"success",size:"sm",children:"Ready"}):j?(0,i.jsx)(l.Ex,{variant:"default",size:"sm",children:"Disabled"}):0===g?(0,i.jsx)("span",{className:"text-xs text-text-muted",children:"No connections"}):(0,i.jsxs)(i.Fragment,{children:[u>0&&(0,i.jsxs)(l.Ex,{variant:"success",size:"sm",dot:!0,children:[u," Connected"]}),f>0&&(0,i.jsxs)(l.Ex,{variant:"error",size:"sm",dot:!0,children:[f," Error"]}),0===u&&0===f&&(0,i.jsxs)(l.Ex,{variant:"default",size:"sm",children:[g," Added"]})]})]})]})]}),g>0&&(0,i.jsx)("div",{className:"shrink-0 opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:s=>{s.preventDefault(),s.stopPropagation(),a&&a(e.id,j)},children:(0,i.jsx)(l.lM,{size:"sm",checked:!j,onChange:()=>{},title:j?"Enable provider":"Disable provider"})})]})})})}function u({combos:e}){return 0===e.length?null:(0,i.jsx)("div",{className:"flex flex-col gap-2",children:e.map(e=>(0,i.jsx)(n(),{href:`/dashboard/media-providers/combo/${e.id}`,children:(0,i.jsx)(l.Zp,{padding:"xs",className:"hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors cursor-pointer",children:(0,i.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:"layers"}),(0,i.jsx)("code",{className:"text-sm font-mono font-medium flex-1 truncate",children:e.name}),(0,i.jsxs)("div",{className:"flex flex-wrap items-center gap-1 sm:shrink-0",children:[e.models.slice(0,6).map((e,s)=>{let t="string"==typeof e?e.split("/")[0]:"",r=d.Q2[t];return(0,i.jsx)("div",{title:r?.name||e,className:"size-5 rounded flex items-center justify-center",style:{backgroundColor:`${r?.color??"#888"}15`},children:(0,i.jsx)(c.A,{src:`/providers/${t}.png`,alt:r?.name||t,size:18,className:"object-contain rounded max-w-[18px] max-h-[18px]",fallbackText:r?.textIcon||t.slice(0,2).toUpperCase(),fallbackColor:r?.color})},`${e}-${s}`)}),e.models.length>6&&(0,i.jsxs)("span",{className:"text-[10px] text-text-muted ml-1",children:["+",e.models.length-6]})]}),(0,i.jsx)("span",{className:"text-[11px] text-text-muted shrink-0",children:e.models.length}),(0,i.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[16px]",children:"chevron_right"})]})})},e.id))})}function f(){let{kind:e}=(0,r.useParams)(),s=(0,r.useRouter)(),[t,a]=(0,o.useState)([]),[n,c]=(0,o.useState)([]),[h,f]=(0,o.useState)([]),[g,j]=(0,o.useState)(!1);(0,o.useEffect)(()=>{("webSearch"===e||"webFetch"===e)&&s.replace("/dashboard/media-providers/web")},[e,s]);let b=d.rj.find(s=>s.id===e),v="embedding"===e,N=m.has(e);if((0,o.useEffect)(()=>{b&&(fetch("/api/providers",{cache:"no-store"}).then(e=>e.json()).then(e=>a(e.connections||[])).catch(()=>{}),v&&fetch("/api/provider-nodes",{cache:"no-store"}).then(e=>e.json()).then(e=>c((e.nodes||[]).filter(e=>"custom-embedding"===e.type))).catch(()=>{}),N&&fetch("/api/combos",{cache:"no-store"}).then(e=>e.json()).then(e=>f(e.combos||[])).catch(()=>{}))},[v,N,b]),!b)return(0,r.notFound)();let y=(0,d.o5)(e),k=h.filter(s=>s.kind===e),w=n.map(e=>({id:e.id,name:e.name||"Custom Embedding",color:"#6366F1",textIcon:"CE"})),C=[...y,...w],$=async(e,s)=>{let i=t.filter(s=>s.provider===e);a(t=>t.map(t=>t.provider===e?{...t,isActive:s}:t)),await Promise.allSettled(i.map(e=>fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:s})})))},E=async()=>{let t=x[e]||`${e}-combo`,i=t,r=1,a=new Set(h.map(e=>e.name));for(;a.has(i);)i=`${t}-${r++}`;let n=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:i,models:[],kind:e})});if(n.ok){let e=await n.json();s.push(`/dashboard/media-providers/combo/${e.id}`)}else alert((await n.json()).error||"Failed to create combo")};return(0,i.jsxs)("div",{className:"flex flex-col gap-6",children:[(v||N)&&(0,i.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[N&&(0,i.jsx)(l.$n,{size:"sm",icon:"add",onClick:E,children:"Create Combo"}),v&&(0,i.jsx)(l.$n,{size:"sm",icon:"add",onClick:()=>j(!0),children:"Add Custom Embedding"})]}),N&&k.length>0&&(0,i.jsx)(u,{combos:k}),0===C.length?(0,i.jsxs)("div",{className:"text-center py-12 border border-dashed border-border rounded-xl text-text-muted text-sm",children:["No providers support ",(0,i.jsx)("strong",{children:b.label})," yet."]}):(0,i.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:[y.map(s=>(0,i.jsx)(p,{provider:s,kind:e,connections:t,onToggle:$},s.id)),w.map(s=>(0,i.jsx)(p,{provider:s,kind:e,connections:t,isCustom:!0,onToggle:$},s.id))]}),v&&(0,i.jsx)(l.x0,{isOpen:g,onClose:()=>j(!1),onCreated:e=>{c(s=>[...s,e]),j(!1)}})]})}},73593:(e,s,t)=>{Promise.resolve().then(t.bind(t,69408))}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=73593)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9260],{34528:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>b});var r=t(94799),a=t(68202),i=t.n(a),l=t(34023),o=t(1727),c=t(77783),n=t(94994),d=t(45303);function m(e){let s=Object.entries(e).some(([e,s])=>e.startsWith("modelLock_")&&s&&new Date(s).getTime()>Date.now());return"unavailable"!==e.testStatus||s?e.testStatus:"active"}function x({provider:e,kind:s,connections:t}){let a=d.Q2[e.id],l=!!a?.noAuth,o=t.filter(s=>s.provider===e.id),h=o.filter(e=>{let s=m(e);return"active"===s||"success"===s}).length,p=o.filter(e=>{let s=m(e);return"error"===s||"expired"===s||"unavailable"===s}).length,b=o.length,u=b>0&&o.every(e=>!1===e.isActive);return(0,r.jsx)(i(),{href:`/dashboard/media-providers/${s}/${e.id}`,className:"group",children:(0,r.jsx)(c.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,r.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,r.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${e.color?.length>7?e.color:(e.color??"#888")+"15"}`},children:(0,r.jsx)(n.A,{src:`/providers/${e.id}.png`,alt:e.name,size:30,className:"object-contain rounded-lg max-w-[30px] max-h-[30px]",fallbackText:e.textIcon||e.id.slice(0,2).toUpperCase(),fallbackColor:e.color})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:"font-semibold text-sm",children:e.name}),(0,r.jsx)("div",{className:"flex items-center gap-2 mt-0.5 flex-wrap",children:l?(0,r.jsx)(c.Ex,{variant:"success",size:"sm",children:"Ready"}):u?(0,r.jsx)(c.Ex,{variant:"default",size:"sm",children:"Disabled"}):0===b?(0,r.jsx)("span",{className:"text-xs text-text-muted",children:"No connections"}):(0,r.jsxs)(r.Fragment,{children:[h>0&&(0,r.jsxs)(c.Ex,{variant:"success",size:"sm",dot:!0,children:[h," Connected"]}),p>0&&(0,r.jsxs)(c.Ex,{variant:"error",size:"sm",dot:!0,children:[p," Error"]}),0===h&&0===p&&(0,r.jsxs)(c.Ex,{variant:"default",size:"sm",children:[b," Added"]})]})})]})]})})})}function h({combos:e}){return 0===e.length?(0,r.jsx)("p",{className:"text-xs text-text-muted italic",children:"No combos yet."}):(0,r.jsx)("div",{className:"flex flex-col gap-2",children:e.map(e=>(0,r.jsx)(i(),{href:`/dashboard/media-providers/combo/${e.id}`,children:(0,r.jsx)(c.Zp,{padding:"xs",className:"hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors cursor-pointer",children:(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:"layers"}),(0,r.jsx)("code",{className:"text-sm font-mono font-medium flex-1 truncate",children:e.name}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-1 sm:shrink-0",children:[e.models.slice(0,6).map((e,s)=>{let t="string"==typeof e?e.split("/")[0]:"",a=d.Q2[t];return(0,r.jsx)("div",{title:a?.name||e,className:"size-5 rounded flex items-center justify-center",style:{backgroundColor:`${a?.color??"#888"}15`},children:(0,r.jsx)(n.A,{src:`/providers/${t}.png`,alt:a?.name||t,size:18,className:"object-contain rounded max-w-[18px] max-h-[18px]",fallbackText:a?.textIcon||t.slice(0,2).toUpperCase(),fallbackColor:a?.color})},`${e}-${s}`)}),e.models.length>6&&(0,r.jsxs)("span",{className:"text-[10px] text-text-muted ml-1",children:["+",e.models.length-6]})]}),(0,r.jsx)("span",{className:"text-[11px] text-text-muted shrink-0",children:e.models.length}),(0,r.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[16px]",children:"chevron_right"})]})})},e.id))})}function p({title:e,icon:s,kind:t,providers:a,connections:i,combos:l,onCreateCombo:o}){return(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-3",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-primary",children:s}),(0,r.jsx)("h2",{className:"text-base font-semibold",children:e}),(0,r.jsxs)("span",{className:"text-xs text-text-muted",children:["(",a.length," providers \xb7 ",l.length," combos)"]})]}),(0,r.jsx)(c.$n,{size:"sm",icon:"add",onClick:o,children:"Create Combo"})]}),l.length>0&&(0,r.jsx)("div",{className:"mb-4",children:(0,r.jsx)(h,{combos:l})}),0===a.length?(0,r.jsx)("div",{className:"text-center py-8 border border-dashed border-border rounded-xl text-text-muted text-sm",children:"No providers."}):(0,r.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:a.map(e=>(0,r.jsx)(x,{provider:e,kind:t,connections:i},e.id))})]})}function b(){let e=(0,o.useRouter)(),[s,t]=(0,l.useState)([]),[a,i]=(0,l.useState)([]),c=async()=>{try{let[e,s]=await Promise.all([fetch("/api/providers",{cache:"no-store"}),fetch("/api/combos",{cache:"no-store"})]);e.ok&&t((await e.json()).connections||[]),s.ok&&i((await s.json()).combos||[])}catch{}};(0,l.useEffect)(()=>{c()},[]);let n=(0,d.o5)("webSearch"),m=(0,d.o5)("webFetch"),x=a.filter(e=>"webSearch"===e.kind),h=a.filter(e=>"webFetch"===e.kind),b=async s=>{let t="webSearch"===s?"search-combo":"fetch-combo",r=t,i=1,l=new Set(a.map(e=>e.name));for(;l.has(r);)r=`${t}-${i++}`;let o=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:r,models:[],kind:s})});if(o.ok){let s=await o.json();e.push(`/dashboard/media-providers/combo/${s.id}`)}else alert((await o.json()).error||"Failed to create combo")};return(0,r.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,r.jsx)(p,{title:"Web Search",icon:"search",kind:"webSearch",providers:n,connections:s,combos:x,onCreateCombo:()=>b("webSearch")}),(0,r.jsx)("div",{className:"border-t border-border"}),(0,r.jsx)(p,{title:"Web Fetch",icon:"travel_explore",kind:"webFetch",providers:m,connections:s,combos:h,onCreateCombo:()=>b("webFetch")})]})}},62849:(e,s,t)=>{Promise.resolve().then(t.bind(t,34528))}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=62849)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6607],{17203:(e,s,t)=>{Promise.resolve().then(t.bind(t,43959))},43959:(e,s,t)=>{"use strict";t.d(s,{default:()=>d});var a=t(94799),i=t(34023),n=t(6142),l=t(31225),o=t(45303),r=t(29448);function d(){let[e,s]=(0,i.useState)([]),[t,d]=(0,i.useState)([]),[c,u]=(0,i.useState)({}),[h,p]=(0,i.useState)(!1),[w,f]=(0,i.useState)(null),[y,x]=(0,i.useState)({running:!1,certExists:!1,dnsStatus:{},hasCachedPassword:!1});(0,i.useEffect)(()=>{g(),v(),m(),S()},[]);let g=async()=>{try{let e=await fetch("/api/providers");if(e.ok){let t=await e.json();s(t.connections||[])}}catch{}},v=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let s=await e.json();d(s.keys||[])}}catch{}},m=async()=>{try{let e=await fetch("/api/models/alias");if(e.ok){let s=await e.json();u(s.aliases||{})}}catch{}},S=async()=>{try{let e=await fetch("/api/settings");if(e.ok){let s=await e.json();p(s.cloudEnabled||!1)}}catch{}},b=()=>e.filter(e=>!1!==e.isActive),k=Object.entries(n.wn);return(0,a.jsxs)("div",{className:"flex w-full flex-col gap-6",children:[(0,a.jsxs)("div",{className:"flex items-start gap-2 px-3 py-2 rounded-lg bg-yellow-500/10 border border-yellow-500/30",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-yellow-500 mt-0.5 shrink-0",children:"warning"}),(0,a.jsx)("p",{className:"text-xs text-red-600 dark:text-yellow-400 leading-relaxed",children:"⚠️ MITM intercepts HTTPS traffic of IDE tools (Antigravity, GitHub Copilot, Kiro) via local CA to redirect requests to your providers. May violate ToS → account ban. Use at your own risk."})]}),(0,a.jsx)(r.tA,{apiKeys:t,cloudEnabled:h,onStatusChange:x}),(0,a.jsx)("div",{className:"grid gap-3 sm:gap-4",children:k.map(([e,s])=>(0,a.jsx)(r.kn,{tool:s,isExpanded:w===e,onToggle:()=>f(w===e?null:e),serverRunning:y.running,dnsActive:y.dnsStatus?.[e]||!1,hasCachedPassword:y.hasCachedPassword||!1,needsSudoPassword:!1!==y.needsSudoPassword,isWin:!0===y.isWin,apiKeys:t,activeProviders:b(),hasActiveProviders:b().some(e=>(0,l.KC)(e.provider).length>0||(0,o.mq)(e.provider)||(0,o.gb)(e.provider)),modelAliases:c,cloudEnabled:h,onDnsChange:e=>x(s=>({...s,dnsStatus:e.dnsStatus??s.dnsStatus}))},e))})]})}}},e=>{e.O(0,[9118,3986,6656,7813,7783,3539,7408,1858,7358],()=>e(e.s=17203)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6337],{},_=>{_.O(0,[9118,3986,6656,7813,7783,4391,7408,1858,7358],()=>_(_.s=94391)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1287],{},_=>{_.O(0,[9118,3986,6656,8434,7813,7783,1554,7408,1858,7358],()=>_(_.s=51554)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3471],{60353:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>p});var a=s(94799),r=s(34023),o=s(1727),l=s(77783),i=s(16983),n=s(39835),d=s(7364),c=s(28834),m=s(65418),x=s(64172),u=s(16778);function p(){let e=(0,o.useRouter)(),{theme:t,setTheme:s,isDark:p}=(0,d.D)(),[h,b]=(0,r.useState)("en"),[g,y]=(0,r.useState)(!1),[f,j]=(0,r.useState)(!1),[N,w]=(0,r.useState)(!1),[v,C]=(0,r.useState)({fallbackStrategy:"fill-first"}),[k,S]=(0,r.useState)(!0),[P,O]=(0,r.useState)({current:"",new:"",confirm:""}),[I,L]=(0,r.useState)({type:"",message:""}),[T,R]=(0,r.useState)(!1),[D,U]=(0,r.useState)(!1),[M,E]=(0,r.useState)({type:"",message:""}),[A,$]=(0,r.useState)({authMode:"password",oidcIssuerUrl:"",oidcClientId:"",oidcScopes:"openid profile email",oidcLoginLabel:"Sign in with OIDC"}),[q,F]=(0,r.useState)(""),[J,H]=(0,r.useState)({type:"",message:""}),[_,W]=(0,r.useState)(!1),[z,B]=(0,r.useState)(!1),[Z,K]=(0,r.useState)({type:"",message:""}),[Q,V]=(0,r.useState)("/api/auth/oidc/callback"),[G,Y]=(0,r.useState)(!1),X=(0,r.useRef)(null),[ee,et]=(0,r.useState)({outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:""}),[es,ea]=(0,r.useState)({type:"",message:""}),[er,eo]=(0,r.useState)(!1),[el,ei]=(0,r.useState)(!1);(0,r.useEffect)(()=>{b(function(){if("u"<typeof document)return"en";let e=document.cookie.split(";").find(e=>e.trim().startsWith(`${x.CL}=`)),t=e?decodeURIComponent(e.split("=")[1]):"en";return(0,x.QC)(t)}())},[g]),(0,r.useEffect)(()=>{fetch("/api/settings").then(e=>e.json()).then(e=>{C(e),$({authMode:e?.authMode||"password",oidcIssuerUrl:e?.oidcIssuerUrl||"",oidcClientId:e?.oidcClientId||"",oidcScopes:e?.oidcScopes||"openid profile email",oidcLoginLabel:e?.oidcLoginLabel||"Sign in with OIDC"}),F(""),(e?.authMode==="oidc"||e?.authMode==="both")&&Y(!0),et({outboundProxyEnabled:e?.outboundProxyEnabled===!0,outboundProxyUrl:e?.outboundProxyUrl||"",outboundNoProxy:e?.outboundNoProxy||""}),S(!1)}).catch(e=>{console.error("Failed to fetch settings:",e),S(!1)})},[]),(0,r.useEffect)(()=>{V(`${window.location.origin}/api/auth/oidc/callback`)},[]);let en=async e=>{if(e.preventDefault(),!0===v.outboundProxyEnabled){eo(!0),ea({type:"",message:""});try{let e=await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({outboundProxyUrl:ee.outboundProxyUrl,outboundNoProxy:ee.outboundNoProxy})}),t=await e.json();e.ok?(C(e=>({...e,...t})),ea({type:"success",message:"Proxy settings applied"})):ea({type:"error",message:t.error||"Failed to update proxy settings"})}catch(e){ea({type:"error",message:"An error occurred"})}finally{eo(!1)}}},ed=async()=>{if(!0!==v.outboundProxyEnabled)return;let e=(ee.outboundProxyUrl||"").trim();if(!e)return void ea({type:"error",message:"Please enter a Proxy URL to test"});ei(!0),ea({type:"",message:""});try{let t=await fetch("/api/settings/proxy-test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({proxyUrl:e})}),s=await t.json();t.ok&&s?.ok?ea({type:"success",message:`Proxy test OK (${s.status}) in ${s.elapsedMs}ms`}):ea({type:"error",message:s?.error||"Proxy test failed"})}catch(e){ea({type:"error",message:"An error occurred"})}finally{ei(!1)}},ec=async e=>{eo(!0),ea({type:"",message:""});try{let t=await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({outboundProxyEnabled:e})}),s=await t.json();t.ok?(C(e=>({...e,...s})),et(e=>({...e,outboundProxyEnabled:s?.outboundProxyEnabled===!0})),ea({type:"success",message:e?"Proxy enabled":"Proxy disabled"})):ea({type:"error",message:s.error||"Failed to update proxy settings"})}catch(e){ea({type:"error",message:"An error occurred"})}finally{eo(!1)}},em=async e=>{if(e.preventDefault(),P.new!==P.confirm)return void L({type:"error",message:"Passwords do not match"});R(!0),L({type:"",message:""});try{let e=await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({currentPassword:P.current,newPassword:P.new})}),t=await e.json();e.ok?(L({type:"success",message:"Password updated successfully"}),O({current:"",new:"",confirm:""})):L({type:"error",message:t.error||"Failed to update password"})}catch(e){L({type:"error",message:"An error occurred"})}finally{R(!1)}},ex=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({fallbackStrategy:e})})).ok&&C(t=>({...t,fallbackStrategy:e}))}catch(e){console.error("Failed to update settings:",e)}},eu=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({responseCacheEnabled:e})})).ok&&C(t=>({...t,responseCacheEnabled:e}))}catch(e){console.error("Failed to update settings:",e)}},ep=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&C(t=>({...t,...e}))}catch(e){console.error("Failed to update alert settings:",e)}},eh=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategy:e})})).ok&&C(t=>({...t,comboStrategy:e}))}catch(e){console.error("Failed to update combo strategy:",e)}},eb=async e=>{let t=parseInt(e);if(!isNaN(t)&&!(t<1))try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({stickyRoundRobinLimit:t})})).ok&&C(e=>({...e,stickyRoundRobinLimit:t}))}catch(e){console.error("Failed to update sticky limit:",e)}},eg=async e=>{let t=parseInt(e);if(!isNaN(t)&&!(t<1))try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStickyRoundRobinLimit:t})})).ok&&C(e=>({...e,comboStickyRoundRobinLimit:t}))}catch(e){console.error("Failed to update combo sticky limit:",e)}},ey=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireLogin:e})})).ok&&C(t=>({...t,requireLogin:e}))}catch(e){console.error("Failed to update require login:",e)}},ef=(e,t)=>{$(s=>({...s,[e]:t}))},ej=async(e=A.authMode||"password")=>{let t=A.oidcIssuerUrl.trim(),s=A.oidcClientId.trim(),a=A.oidcScopes.trim(),r=A.oidcLoginLabel.trim(),o=q.trim();if("password"!==e&&(!t||!s||!o)&&!v.oidcConfigured)return void H({type:"error",message:"Issuer URL, client ID, and client secret are required to enable OIDC."});W(!0),H({type:"",message:""}),K({type:"",message:""});try{let l={authMode:e,oidcIssuerUrl:t,oidcClientId:s,oidcScopes:a||"openid profile email",oidcLoginLabel:r||"Sign in with OIDC"};o&&(l.oidcClientSecret=o);let i=await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)}),n=await i.json();i.ok?(C(e=>({...e,...n})),$({authMode:n?.authMode||e,oidcIssuerUrl:n?.oidcIssuerUrl||t,oidcClientId:n?.oidcClientId||s,oidcScopes:n?.oidcScopes||a||"openid profile email",oidcLoginLabel:n?.oidcLoginLabel||r||"Sign in with OIDC"}),F(""),H({type:"success",message:"oidc"===e?"OIDC login enabled":"both"===e?"Password and OIDC login enabled":"OIDC settings saved"})):H({type:"error",message:n.error||"Failed to save OIDC settings"})}catch(e){H({type:"error",message:"An error occurred"})}finally{W(!1)}},eN=async()=>{let e=A.oidcIssuerUrl.trim(),t=A.oidcClientId.trim(),s=A.oidcScopes.trim(),a=q.trim();if(!e||!t)return void K({type:"error",message:"Issuer URL and client ID are required to test the connection."});B(!0),H({type:"",message:""}),K({type:"",message:""});try{let r=await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({authMode:A.authMode||v.authMode||"password",oidcIssuerUrl:e,oidcClientId:t,oidcScopes:s||"openid profile email",oidcLoginLabel:A.oidcLoginLabel.trim()||"Sign in with OIDC",...a?{oidcClientSecret:a}:{}})}),o=await r.json().catch(()=>({}));if(!r.ok)return void K({type:"error",message:o.error||"Failed to save OIDC settings before testing"});let l=await fetch("/api/auth/oidc/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({issuerUrl:o.oidcIssuerUrl||e,clientId:o.oidcClientId||t,scopes:o.oidcScopes||s||"openid profile email"})}),i=await l.json().catch(()=>({}));if(l.ok&&i?.ok){let e=i.clientSecretTested?!0===i.clientSecretValid?`Connection OK. Discovery loaded from ${i.issuerUrl}. Client secret validated too.`:`Connection OK. Discovery loaded from ${i.issuerUrl}. Client secret was not checked.`:`Connection OK. Discovery loaded from ${i.issuerUrl}.`;K({type:"success",message:e})}else K({type:"error",message:i.error||"OIDC connection test failed"})}catch(e){K({type:"error",message:"An error occurred"})}finally{B(!1)}},ew=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({enableObservability:e})})).ok&&C(t=>({...t,enableObservability:e}))}catch(e){console.error("Failed to update enableObservability:",e)}},ev=async()=>{try{let e=await fetch("/api/settings");if(!e.ok)return;let t=await e.json();C(t)}catch(e){console.error("Failed to reload settings:",e)}},eC=async()=>{U(!0),E({type:"",message:""});try{let e=await fetch("/api/settings/database");if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error||"Failed to export database")}let t=await e.json(),s=JSON.stringify(t,null,2),a=new Blob([s],{type:"application/json"}),r=URL.createObjectURL(a),o=document.createElement("a"),l=new Date().toISOString().replace(/[.:]/g,"-");o.href=r,o.download=`zevairouter-backup-${l}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(r),E({type:"success",message:"Database backup downloaded"})}catch(e){E({type:"error",message:e.message||"Failed to export database"})}finally{U(!1)}},ek=async e=>{let t=e.target.files?.[0];if(t){U(!0),E({type:"",message:""});try{let e=await t.text(),s=JSON.parse(e),a=await fetch("/api/settings/database",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}),r=await a.json().catch(()=>({}));if(!a.ok)throw Error(r.error||"Failed to import database");await ev(),E({type:"success",message:"Database imported successfully"})}catch(e){E({type:"error",message:e.message||"Invalid backup file"})}finally{X.current&&(X.current.value=""),U(!1)}}},eS=!0===v.enableObservability,eP=async()=>{w(!0);try{await fetch("/api/version/shutdown",{method:"POST"})}catch(e){}w(!1),j(!1)},eO=async()=>{try{(await fetch("/api/auth/logout",{method:"POST"})).ok&&(e.push("/login"),e.refresh())}catch(e){console.error("Failed to logout:",e)}};return(0,a.jsxs)("div",{className:"max-w-2xl mx-auto px-4 sm:px-0",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsxs)(l.Zp,{children:[(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 sm:gap-4",children:[(0,a.jsx)("div",{className:"size-10 sm:size-12 rounded-lg bg-green-500/10 text-green-500 flex items-center justify-center shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-xl sm:text-2xl",children:"computer"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-lg sm:text-xl font-semibold",children:"Local Mode"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Running on your machine"})]})]}),(0,a.jsx)("div",{className:"inline-flex p-1 rounded-lg bg-black/5 dark:bg-white/5 w-full sm:w-auto",children:["light","dark","system"].map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>s(e),className:(0,c.cn)("flex items-center justify-center gap-1 sm:gap-1.5 px-2 sm:px-3 py-1.5 rounded-md font-medium transition-all flex-1 sm:flex-initial",t===e?"bg-white dark:bg-white/10 text-text-main shadow-sm":"text-text-muted hover:text-text-main"),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"light"===e?"light_mode":"dark"===e?"dark_mode":"contrast"}),(0,a.jsx)("span",{className:"capitalize text-xs sm:text-sm",children:e})]},e))})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-3 pt-4 border-t border-border",children:[(0,a.jsx)("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between p-3 rounded-lg bg-bg border border-border gap-2",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Database Location"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted font-mono break-all",children:"~/.zevai/db/data.sqlite"})]})}),(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2",children:[(0,a.jsx)(l.$n,{variant:"secondary",icon:"download",onClick:eC,loading:D,className:"w-full sm:w-auto",children:"Download Backup"}),(0,a.jsx)(l.$n,{variant:"outline",icon:"upload",onClick:()=>X.current?.click(),disabled:D,className:"w-full sm:w-auto",children:"Import Backup"}),(0,a.jsx)("input",{ref:X,type:"file",accept:"application/json,.json",className:"hidden",onChange:ek})]}),M.message&&(0,a.jsx)("p",{className:`text-sm ${"error"===M.type?"text-red-500":"text-green-600 dark:text-green-400"}`,children:M.message})]})]}),(0,a.jsxs)(l.Zp,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,a.jsx)("div",{className:"size-10 rounded-lg bg-blue-500/10 text-blue-500 flex items-center justify-center shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"language"})}),(0,a.jsx)("h3",{className:"text-base sm:text-lg font-semibold",children:"Language"})]}),(0,a.jsxs)("button",{onClick:()=>y(!0),className:"flex items-center justify-between w-full p-3 rounded-lg bg-bg border border-border hover:border-primary/50 transition-colors","data-i18n-skip":"true",children:[(0,a.jsx)("span",{className:"text-sm text-text-muted",children:"Display language"}),(0,a.jsx)("span",{className:"text-2xl",children:u.h[h]||"\uD83C\uDF10"})]})]}),(0,a.jsxs)(l.Zp,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-primary/10 text-primary shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"shield"})}),(0,a.jsx)("h3",{className:"text-base sm:text-lg font-semibold",children:"Security"})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex items-start sm:items-center justify-between gap-4",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Require login"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"When ON, dashboard requires password. When OFF, access without login."})]}),(0,a.jsx)(l.lM,{checked:!0===v.requireLogin,onChange:()=>ey(!v.requireLogin),disabled:k})]}),!0===v.requireLogin&&(0,a.jsxs)("form",{onSubmit:em,className:"flex flex-col gap-4 pt-4 border-t border-border/50",children:[v.hasPassword&&(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("label",{className:"text-xs sm:text-sm font-medium",children:"Current Password"}),(0,a.jsx)(l.pd,{type:"password",placeholder:"Enter current password",value:P.current,onChange:e=>O({...P,current:e.target.value}),required:!0})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("label",{className:"text-xs sm:text-sm font-medium",children:"New Password"}),(0,a.jsx)(l.pd,{type:"password",placeholder:"Enter new password",value:P.new,onChange:e=>O({...P,new:e.target.value}),required:!0})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("label",{className:"text-xs sm:text-sm font-medium",children:"Confirm New Password"}),(0,a.jsx)(l.pd,{type:"password",placeholder:"Confirm new password",value:P.confirm,onChange:e=>O({...P,confirm:e.target.value}),required:!0})]})]}),I.message&&(0,a.jsx)("p",{className:`text-xs sm:text-sm ${"error"===I.type?"text-red-500":"text-green-500"}`,children:I.message}),(0,a.jsx)("div",{className:"pt-2",children:(0,a.jsx)(l.$n,{type:"submit",variant:"primary",loading:T,className:"w-full sm:w-auto",children:v.hasPassword?"Update Password":"Set Password"})})]})]})]}),(0,a.jsxs)(l.Zp,{children:[(0,a.jsxs)("button",{type:"button",onClick:()=>Y(e=>!e),className:"w-full flex items-center gap-3 text-left",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-indigo-500/10 text-indigo-500 shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"lock_open"})}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("h3",{className:"text-base sm:text-lg font-semibold",children:"OIDC Dashboard Login"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"oidc"===v.authMode?"OIDC active":"both"===v.authMode?"Password + OIDC active":"Optional SSO via Authentik/Keycloak/Google"})]}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted shrink-0",children:G?"expand_less":"expand_more"})]}),G&&(0,a.jsxs)("div",{className:"flex flex-col gap-4 mt-4",children:[(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Use Authentik or any OIDC provider to sign in to the dashboard. You can enable password-only, OIDC-only, or both for the dashboard; model API access still uses API keys."}),(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("label",{className:"font-medium text-sm sm:text-base",children:"Auth Mode"}),(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-2",children:[{value:"password",title:"Password only",desc:"Keep the legacy password login."},{value:"oidc",title:"OIDC only",desc:"Require OIDC for dashboard access."},{value:"both",title:"Both",desc:"Allow either password or OIDC."}].map(e=>{let t=A.authMode===e.value;return(0,a.jsxs)("button",{type:"button",onClick:()=>ef("authMode",e.value),className:(0,c.cn)("text-left rounded-lg border p-3 transition-colors",t?"border-primary bg-primary/5":"border-border bg-bg hover:bg-black/5 dark:hover:bg-white/5"),disabled:k||_,children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:e.title}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted mt-1",children:e.desc})]},e.value)})})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("label",{className:"font-medium text-sm sm:text-base",children:"Issuer URL"}),(0,a.jsx)(l.pd,{placeholder:"https://auth.example.com/application/o/zevairouter/",value:A.oidcIssuerUrl,onChange:e=>ef("oidcIssuerUrl",e.target.value),disabled:k||_})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("label",{className:"font-medium text-sm sm:text-base",children:"Client ID"}),(0,a.jsx)(l.pd,{placeholder:"zevairouter-dashboard",value:A.oidcClientId,onChange:e=>ef("oidcClientId",e.target.value),disabled:k||_})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("label",{className:"font-medium text-sm sm:text-base",children:"Client Secret"}),(0,a.jsx)(l.pd,{type:"password",placeholder:"Leave blank to keep existing secret",value:q,onChange:e=>F(e.target.value),disabled:k||_}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"This value is write-only after saving."})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("label",{className:"font-medium text-sm sm:text-base",children:"Scopes"}),(0,a.jsx)(l.pd,{placeholder:"openid profile email",value:A.oidcScopes,onChange:e=>ef("oidcScopes",e.target.value),disabled:k||_})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("label",{className:"font-medium text-sm sm:text-base",children:"Login Button Label"}),(0,a.jsx)(l.pd,{placeholder:"Sign in with OIDC",value:A.oidcLoginLabel,onChange:e=>ef("oidcLoginLabel",e.target.value),disabled:k||_})]})]}),(0,a.jsxs)("div",{className:"rounded-lg border border-border bg-bg p-3 text-xs sm:text-sm text-text-muted",children:[(0,a.jsx)("p",{className:"font-medium text-text-main mb-1",children:"Redirect URI"}),(0,a.jsx)("code",{className:"block break-all font-mono",children:Q})]}),(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 pt-2 border-t border-border/50",children:[(0,a.jsx)(l.$n,{type:"button",variant:"primary",loading:_,onClick:()=>ej(),className:"w-full sm:w-auto",children:"Save auth mode"}),(0,a.jsx)(l.$n,{type:"button",variant:"outline",loading:z,onClick:eN,className:"w-full sm:w-auto",children:"Test connection"})]}),Z.message&&(0,a.jsx)("p",{className:`text-xs sm:text-sm ${"error"===Z.type?"text-red-500":"text-green-500"}`,children:Z.message}),J.message&&(0,a.jsx)("p",{className:`text-xs sm:text-sm ${"error"===J.type?"text-red-500":"text-green-500"}`,children:J.message}),"oidc"===v.authMode&&(0,a.jsx)("p",{className:"text-xs sm:text-sm text-amber-600 dark:text-amber-400",children:"OIDC login is currently active. Password login is disabled until you switch back."}),"both"===v.authMode&&(0,a.jsx)("p",{className:"text-xs sm:text-sm text-amber-600 dark:text-amber-400",children:"Password and OIDC login are both active."})]})]}),(0,a.jsxs)(l.Zp,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-blue-500/10 text-blue-500 shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"route"})}),(0,a.jsx)("h3",{className:"text-base sm:text-lg font-semibold",children:"Routing Strategy"})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex items-start sm:items-center justify-between gap-4",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Round Robin"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Cycle through accounts to distribute load"})]}),(0,a.jsx)(l.lM,{checked:"round-robin"===v.fallbackStrategy,onChange:()=>ex("round-robin"===v.fallbackStrategy?"fill-first":"round-robin"),disabled:k})]}),"round-robin"===v.fallbackStrategy&&(0,a.jsxs)("div",{className:"flex items-start sm:items-center justify-between gap-4 pt-2 border-t border-border/50",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Sticky Limit"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Calls per account before switching"})]}),(0,a.jsx)(l.pd,{type:"number",min:"1",max:"10",value:v.stickyRoundRobinLimit||3,onChange:e=>eb(e.target.value),disabled:k,className:"w-16 sm:w-20 text-center shrink-0"})]}),(0,a.jsxs)("div",{className:"flex items-start sm:items-center justify-between gap-4 pt-4 border-t border-border/50",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Most Quota"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Pick the account with the most remaining quota (uses cached usage)"})]}),(0,a.jsx)(l.lM,{checked:"most-quota"===v.fallbackStrategy,onChange:()=>ex("most-quota"===v.fallbackStrategy?"fill-first":"most-quota"),disabled:k})]}),(0,a.jsxs)("div",{className:"flex items-start sm:items-center justify-between gap-4 pt-4 border-t border-border/50",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Lowest Latency"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Route to the fastest account by recent avg response time"})]}),(0,a.jsx)(l.lM,{checked:"lowest-latency"===v.fallbackStrategy,onChange:()=>ex("lowest-latency"===v.fallbackStrategy?"fill-first":"lowest-latency"),disabled:k})]}),(0,a.jsxs)("div",{className:"flex items-start sm:items-center justify-between gap-4 pt-4 border-t border-border/50",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Response Cache"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Serve identical non-streaming requests from memory (saves cost)"})]}),(0,a.jsx)(l.lM,{checked:!1!==v.responseCacheEnabled,onChange:()=>eu(!1===v.responseCacheEnabled),disabled:k})]}),(0,a.jsxs)("div",{className:"flex items-start sm:items-center justify-between gap-4 pt-4 border-t border-border/50",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Webhook Alerts"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Notify on provider down / quota exhausted (Discord, Telegram, or generic webhook)"})]}),(0,a.jsx)(l.lM,{checked:!0===v.alertEnabled,onChange:()=>ep({alertEnabled:!0!==v.alertEnabled}),disabled:k})]}),!0===v.alertEnabled&&(0,a.jsxs)("div",{className:"flex flex-col gap-3 pt-2 border-t border-border/50",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-xs text-text-muted block mb-1",children:"Webhook URL"}),(0,a.jsx)(l.pd,{type:"url",placeholder:"https://discord.com/api/webhooks/… or https://api.telegram.org/bot<token>/sendMessage",defaultValue:v.alertWebhookUrl||"",onBlur:e=>ep({alertWebhookUrl:e.target.value.trim()}),disabled:k})]}),(0,a.jsxs)("div",{className:"flex gap-3",children:[(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("label",{className:"text-xs text-text-muted block mb-1",children:"Type"}),(0,a.jsxs)("select",{defaultValue:v.alertWebhookType||"discord",onChange:e=>ep({alertWebhookType:e.target.value}),disabled:k,className:"w-full px-2 py-1.5 text-sm bg-transparent border border-border rounded",children:[(0,a.jsx)("option",{value:"discord",children:"Discord"}),(0,a.jsx)("option",{value:"telegram",children:"Telegram"}),(0,a.jsx)("option",{value:"generic",children:"Generic JSON"})]})]}),"telegram"===v.alertWebhookType&&(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("label",{className:"text-xs text-text-muted block mb-1",children:"Telegram Chat ID"}),(0,a.jsx)(l.pd,{type:"text",placeholder:"-1001234567890",defaultValue:v.alertTelegramChatId||"",onBlur:e=>ep({alertTelegramChatId:e.target.value.trim()}),disabled:k})]})]})]}),(0,a.jsxs)("div",{className:"flex items-start sm:items-center justify-between gap-4 pt-4 border-t border-border/50",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Combo Round Robin"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Cycle through providers in combos instead of always starting with first"})]}),(0,a.jsx)(l.lM,{checked:"round-robin"===v.comboStrategy,onChange:()=>eh("round-robin"===v.comboStrategy?"fallback":"round-robin"),disabled:k})]}),"round-robin"===v.comboStrategy&&(0,a.jsxs)("div",{className:"flex items-center justify-between pt-2 border-t border-border/50",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium",children:"Combo Sticky Limit"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Calls per combo model before switching"})]}),(0,a.jsx)(l.pd,{type:"number",min:"1",max:"100",value:v.comboStickyRoundRobinLimit||1,onChange:e=>eg(e.target.value),disabled:k,className:"w-20 text-center"})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted italic pt-2 border-t border-border/50",children:["round-robin"===v.fallbackStrategy?`Currently distributing requests across all available accounts with ${v.stickyRoundRobinLimit||3} calls per account.`:"most-quota"===v.fallbackStrategy?"Currently routing to the account with the most remaining quota.":"lowest-latency"===v.fallbackStrategy?"Currently routing to the fastest account by recent avg latency.":"Currently using accounts in priority order (Fill First).","round-robin"===v.comboStrategy?` Combos rotate after ${v.comboStickyRoundRobinLimit||1} call${1===(v.comboStickyRoundRobinLimit||1)?"":"s"} per model.`:" Combos always start with their first model."]})]})]}),(0,a.jsxs)(l.Zp,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-purple-500/10 text-purple-500 shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"wifi"})}),(0,a.jsx)("h3",{className:"text-base sm:text-lg font-semibold",children:"Network"})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex items-start sm:items-center justify-between gap-4",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Outbound Proxy"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Enable proxy for OAuth + provider outbound requests."})]}),(0,a.jsx)(l.lM,{checked:!0===v.outboundProxyEnabled,onChange:()=>ec(!0!==v.outboundProxyEnabled),disabled:k||er})]}),!0===v.outboundProxyEnabled&&(0,a.jsxs)("form",{onSubmit:en,className:"flex flex-col gap-4 pt-2 border-t border-border/50",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("label",{className:"font-medium text-sm sm:text-base",children:"Proxy URL"}),(0,a.jsx)(l.pd,{placeholder:"http://127.0.0.1:7897",value:ee.outboundProxyUrl,onChange:e=>et(t=>({...t,outboundProxyUrl:e.target.value})),disabled:k||er}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Leave empty to inherit existing env proxy (if any)."})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 pt-2 border-t border-border/50",children:[(0,a.jsx)("label",{className:"font-medium text-sm sm:text-base",children:"No Proxy"}),(0,a.jsx)(l.pd,{placeholder:"localhost,127.0.0.1",value:ee.outboundNoProxy,onChange:e=>et(t=>({...t,outboundNoProxy:e.target.value})),disabled:k||er}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Comma-separated hostnames/domains to bypass the proxy."})]}),(0,a.jsxs)("div",{className:"pt-2 border-t border-border/50 flex flex-col sm:flex-row items-stretch sm:items-center gap-2",children:[(0,a.jsx)(l.$n,{type:"button",variant:"secondary",loading:el,disabled:k||er,onClick:ed,className:"w-full sm:w-auto",children:"Test proxy URL"}),(0,a.jsx)(l.$n,{type:"submit",variant:"primary",loading:er,className:"w-full sm:w-auto",children:"Apply"})]})]}),es.message&&(0,a.jsx)("p",{className:`text-xs sm:text-sm ${"error"===es.type?"text-red-500":"text-green-500"} pt-2 border-t border-border/50`,children:es.message})]})]}),(0,a.jsxs)(l.Zp,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-orange-500/10 text-orange-500 shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"monitoring"})}),(0,a.jsx)("h3",{className:"text-base sm:text-lg font-semibold",children:"Observability"})]}),(0,a.jsxs)("div",{className:"flex items-start sm:items-center justify-between gap-4",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-sm sm:text-base",children:"Enable Observability"}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-text-muted",children:"Record request details for inspection in the logs view"})]}),(0,a.jsx)(l.lM,{checked:eS,onChange:ew,disabled:k})]})]}),(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2",children:[(0,a.jsx)(l.$n,{variant:"outline",fullWidth:!0,icon:"power_settings_new",onClick:()=>j(!0),className:"text-red-500 border-red-200 hover:bg-red-50 hover:border-red-300",children:"Shutdown"}),(0,a.jsx)(l.$n,{variant:"outline",fullWidth:!0,icon:"logout",onClick:eO,children:"Logout"})]}),(0,a.jsxs)("div",{className:"text-center text-xs sm:text-sm text-text-muted py-4",children:[(0,a.jsxs)("p",{children:[m.vQ.name," v",m.vQ.version]}),(0,a.jsx)("p",{className:"mt-1",children:"Local Mode - All data stored on your machine"})]})]}),(0,a.jsx)(n.default,{hideTrigger:!0,isOpen:g,onClose:e=>{y(!1),b(e)}}),(0,a.jsx)(i.ConfirmModal,{isOpen:f,onClose:()=>j(!1),onConfirm:eP,title:"Close Proxy",message:"Are you sure you want to close the proxy server?",confirmText:"Close",cancelText:"Cancel",variant:"danger",loading:N})]})}},75828:(e,t,s)=>{Promise.resolve().then(s.bind(s,60353))}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=75828)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9089],{65231:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>u});var a=t(94799),s=t(34023),i=t(1727),l=t(68202),d=t.n(l),o=t(77783),n=t(65418);let c=Object.values(n.Q2).map(e=>({value:e.id,label:e.name})),p=Object.values(n.MA).map(e=>({value:e.id,label:e.name}));function u(){let e=(0,i.useRouter)(),[r,t]=(0,s.useState)(!1),[l,u]=(0,s.useState)({provider:"",authMethod:"api_key",apiKey:"",displayName:"",isActive:!0}),[h,m]=(0,s.useState)({}),x=(e,r)=>{u(t=>({...t,[e]:r})),h[e]&&m(r=>({...r,[e]:null}))},b=async r=>{let a;if(r.preventDefault(),a={},l.provider||(a.provider="Please select a provider"),"api_key"!==l.authMethod||l.apiKey||(a.apiKey="API Key is required"),m(a),0===Object.keys(a).length){t(!0);try{let r=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)});if(r.ok)e.push("/dashboard/providers");else{let e=await r.json();m({submit:e.error||"Failed to create provider"})}}catch(e){m({submit:"An error occurred. Please try again."})}finally{t(!1)}}},v=n.Q2[l.provider];return(0,a.jsxs)("div",{className:"max-w-2xl mx-auto",children:[(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsxs)(d(),{href:"/dashboard/providers",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),"Back to Providers"]}),(0,a.jsx)("h1",{className:"text-3xl font-semibold tracking-tight",children:"Add New Provider"}),(0,a.jsx)("p",{className:"text-text-muted mt-2",children:"Configure a new AI provider to use with your applications."})]}),(0,a.jsx)(o.Zp,{children:(0,a.jsxs)("form",{onSubmit:b,className:"flex flex-col gap-6",children:[(0,a.jsx)(o.l6,{label:"Provider",options:c,value:l.provider,onChange:e=>x("provider",e.target.value),placeholder:"Select a provider",error:h.provider,required:!0}),v&&(0,a.jsxs)(o.Zp.Section,{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-10 rounded-lg flex items-center justify-center bg-bg border border-border",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:v.color},children:v.icon})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium",children:v.name}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Selected provider"})]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("label",{className:"text-sm font-medium",children:["Authentication Method ",(0,a.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,a.jsx)("div",{className:"flex gap-3",children:p.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>x("authMethod",e.value),className:`flex-1 flex items-center justify-center gap-2 p-4 rounded-lg border transition-all ${l.authMethod===e.value?"border-primary bg-primary/5 text-primary":"border-border hover:border-primary/50"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined",children:"api_key"===e.value?"key":"lock"}),(0,a.jsx)("span",{className:"font-medium",children:e.label})]},e.value))})]}),"api_key"===l.authMethod&&(0,a.jsx)(o.pd,{label:"API Key",type:"password",placeholder:"Enter your API key",value:l.apiKey,onChange:e=>x("apiKey",e.target.value),error:h.apiKey,hint:"Your API key will be encrypted and stored securely.",required:!0}),"oauth2"===l.authMethod&&(0,a.jsxs)(o.Zp.Section,{children:[(0,a.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Connect your account using OAuth2 authentication."}),(0,a.jsx)(o.$n,{type:"button",variant:"secondary",icon:"link",children:"Connect with OAuth2"})]}),(0,a.jsx)(o.pd,{label:"Display Name",placeholder:"e.g., Production API, Dev Environment",value:l.displayName,onChange:e=>x("displayName",e.target.value),hint:"Optional. A friendly name to identify this configuration."}),(0,a.jsx)(o.lM,{checked:l.isActive,onChange:e=>x("isActive",e),label:"Active",description:"Enable this provider for use in your applications"}),h.submit&&(0,a.jsx)("div",{className:"p-4 rounded-lg bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 text-red-600 dark:text-red-400 text-sm",children:h.submit}),(0,a.jsxs)("div",{className:"flex gap-3 pt-4 border-t border-border",children:[(0,a.jsx)(d(),{href:"/dashboard/providers",className:"flex-1",children:(0,a.jsx)(o.$n,{type:"button",variant:"ghost",fullWidth:!0,children:"Cancel"})}),(0,a.jsx)(o.$n,{type:"submit",loading:r,fullWidth:!0,className:"flex-1",children:"Create Provider"})]})]})})]})}},72588:(e,r,t)=>{Promise.resolve().then(t.bind(t,65231))}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=72588)),_N_E=e.O()}]);
@@ -1 +0,0 @@
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 +0,0 @@
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 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9839],{26736:(e,t,a)=>{"use strict";a.d(t,{default:()=>x});var s=a(94799),l=a(34023),r=a(77783),n=a(33379),i=a(99646);let o=["zh-CN","zh-TW"],c=[{id:"lite",label:"Lite",desc:"Drop filler, keep grammar"},{id:"full",label:"Full",desc:"Drop articles, fragments OK"},{id:"ultra",label:"Ultra",desc:"Telegraphic, max compression"},{id:"wenyan-lite",label:"文 Lite",desc:"Classical Chinese, light compression",wenyan:!0},{id:"wenyan",label:"文 Full",desc:"Maximum 文言文, 80-90% reduction",wenyan:!0},{id:"wenyan-ultra",label:"文 Ultra",desc:"Extreme classical compression",wenyan:!0}],d=[{id:"lite",label:"Lite",desc:"Build asked, name lazier option"},{id:"full",label:"Full",desc:"Ladder enforced: stdlib/native first"},{id:"ultra",label:"Ultra",desc:"YAGNI extremist, deletion first"}];function x(){let[e,t]=(0,l.useState)(!0),[a,x]=(0,l.useState)(!1),[m,h]=(0,l.useState)("http://localhost:8787"),[p,u]=(0,l.useState)({installed:!1,running:!1,python:null,loading:!0}),[f,g]=(0,l.useState)(!1),[b,j]=(0,l.useState)(!1),[y,v]=(0,l.useState)(""),[N,w]=(0,l.useState)({version:null,extras:{code:!1,ml:!1},available:["code","ml"],loading:!1}),[k,C]=(0,l.useState)([]),[S,E]=(0,l.useState)(!1),[P,T]=(0,l.useState)(""),[$,I]=(0,l.useState)(null),[R,O]=(0,l.useState)(""),[L,U]=(0,l.useState)(null),[H,M]=(0,l.useState)(!1),[_,A]=(0,l.useState)(!0),[D,F]=(0,l.useState)(!1),B=(0,l.useRef)(null),[J,W]=(0,l.useState)(!1),[z,G]=(0,l.useState)("full"),[K,X]=(0,l.useState)(!1),[q,Y]=(0,l.useState)("full"),[Z,Q]=(0,l.useState)(!1),[V,ee]=(0,l.useState)(25e3),[et,ea]=(0,l.useState)({installed:!1,installing:!1,running:!1,version:null,loading:!0}),[es,el]=(0,l.useState)(null),[er,en]=(0,l.useState)(!1),[ei,eo]=(0,l.useState)(!1),[ec,ed]=(0,l.useState)(""),[ex,em]=(0,l.useState)("en"),{copied:eh,copy:ep}=(0,n.C)();(0,l.useEffect)(()=>(em((0,i.kk)()),(0,i.oQ)(()=>em((0,i.kk)()))),[]);let eu=o.includes(ex),ef=eu?c:c.filter(e=>!e.wenyan);(0,l.useEffect)(()=>{let e=c.find(e=>e.id===z);e?.wenyan&&!eu&&(G("ultra"),eg({cavemanLevel:"ultra"}))},[eu,z]);let eg=async e=>{try{await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch(e){console.log("Error updating setting:",e)}},eb=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({rtkEnabled:e})})).ok&&t(e)}catch(e){console.log("Error updating rtkEnabled:",e)}},ej=async()=>{let e=m.trim()||"http://localhost:8787";h(e),await eg({headroomUrl:e}),ey()},ey=(0,l.useCallback)(async()=>{u(e=>({...e,loading:!0}));try{let e=await fetch("/api/headroom/status",{headers:{"Cache-Control":"no-store"}}),t=await e.json();if(u({...t,loading:!1}),!t?.installed){w({version:null,extras:{code:!1,ml:!1},available:["code","ml"],loading:!1}),C([]);return}try{let e=await fetch("/api/headroom/extras",{headers:{"Cache-Control":"no-store"}});if(!e.ok)throw Error("extras status failed");let t=await e.json();w(e=>({...e,version:t.version??null,extras:t.extras||{code:!1,ml:!1},available:t.available||["code","ml"],loading:!1})),C([])}catch{w({version:null,extras:{code:!1,ml:!1},available:["code","ml"],loading:!1}),C([])}}catch{u({installed:!1,running:!1,python:null,loading:!1}),w({version:null,extras:{code:!1,ml:!1},available:["code","ml"],loading:!1}),C([])}},[]),ev=(0,l.useCallback)(async()=>{v(""),j(!0);try{let e=await fetch("/api/headroom/start",{method:"POST"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Failed to start proxy");await ey()}catch(e){v(e.message)}finally{j(!1)}},[ey]),eN=(0,l.useCallback)(async()=>{j(!0);try{await fetch("/api/headroom/stop",{method:"POST"}),await ey()}finally{j(!1)}},[ey]),ew=(0,l.useCallback)(()=>{O(""),B.current&&clearInterval(B.current);let e=async()=>{try{let e=await fetch("/api/headroom/extras?log=1",{headers:{"Cache-Control":"no-store"}}),t=await e.json().catch(()=>({}));"string"==typeof t.log&&O(t.log)}catch{}};e(),B.current=setInterval(e,1500)},[]),ek=(0,l.useCallback)(()=>{B.current&&(clearInterval(B.current),B.current=null)},[]);(0,l.useEffect)(()=>()=>ek(),[ek]);let eC=(0,l.useCallback)(async()=>{if(0!==k.length){E(!0),T(""),ew();try{let e=await fetch("/api/headroom/extras",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({extras:k})}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Install failed");w(e=>({...e,version:t.version??e.version,extras:t.extras||e.extras})),C([])}catch(e){T(e.message)}finally{ek(),E(!1)}}},[k,ew,ek]),eS=(0,l.useCallback)(async e=>{I(e),T(""),ew();try{let t=await fetch("/api/headroom/extras",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({extras:[e]})}),a=await t.json().catch(()=>({}));if(!t.ok)throw Error(a.error||"Remove failed");w(e=>({...e,version:a.version??e.version,extras:a.extras||e.extras}))}catch(e){T(e.message)}finally{ek(),I(null)}},[ew,ek]),eE=(0,l.useCallback)(()=>{if(0!==k.length){if(k.includes("ml"))return void U({title:"Install [ml]",message:"[ml] downloads ~1 GB (torch + huggingface-hub). Continue?",confirmText:"Install",variant:"primary",onConfirm:eC});eC()}},[k,eC]),eP=(0,l.useCallback)(e=>{U({title:`Remove [${e}]`,message:`Remove [${e}] and its packages?`,confirmText:"Remove",variant:"danger",onConfirm:()=>eS(e)})},[eS]),eT=(0,l.useCallback)(async(e,t)=>{if(T(""),"code"===e&&M(t),"ml"===e&&A(t),await eg({["code"===e?"headroomCodeAware":"headroomKompress"]:t}),p.running){F(!0);try{let e=await fetch("/api/headroom/restart",{method:"POST"}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Restart failed");await ey()}catch(e){T(e.message)}finally{F(!1)}}},[p.running,ey]),e$=(0,l.useCallback)(async()=>{ea(e=>({...e,loading:!0}));try{let e=await fetch("/api/pxpipe/status",{headers:{"Cache-Control":"no-store"}}),t=await e.json();ea({...t,loading:!1}),"number"==typeof t.minChars&&ee(t.minChars)}catch{ea({installed:!1,installing:!1,running:!1,version:null,loading:!1})}},[]),eI=(0,l.useCallback)(async()=>{try{let e=await fetch("/api/pxpipe/health",{method:"POST"});el(await e.json())}catch(e){el({healthy:!1,checks:[],error:e.message})}},[]),eR=(0,l.useCallback)(async e=>{ed(""),eo(!0);try{let t=await fetch(`/api/pxpipe/${e}`,{method:"POST"}),a=await t.json().catch(()=>({}));if(!t.ok)throw Error(a.error||`PXPIPE ${e} failed`);await e$(),await eI()}catch(e){ed(e.message)}finally{eo(!1)}},[e$,eI]);(0,l.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/settings");if(e.ok){let a=await e.json();t(!1!==a.rtkEnabled),x(!!a.headroomEnabled),h(a.headroomUrl||"http://localhost:8787"),M(!0===a.headroomCodeAware),A(!1!==a.headroomKompress),W(!!a.cavemanEnabled),G(a.cavemanLevel||"full"),X(!!a.ponytailEnabled),Y(a.ponytailLevel||"full"),Q(!!a.pxpipeEnabled),"number"==typeof a.pxpipeMinChars&&ee(a.pxpipeMinChars),ey(),e$().then(eI)}}catch{}})()},[ey,e$,eI]);let eO=!!p.running,eL=p.loading?"Checking…":eO?"Running":!1===p.localUrl||p.installed?!1!==p.localUrl?"Stopped":"External":"Not installed",eU=!1!==p.localUrl,eH=!!p.canStart,eM=eU&&!!p.managedPid,e_=es?.healthy===!0,eA=et.loading?"Checking…":et.installing?"Installing…":et.installed?e_?"Healthy":et.running?"Running":"Stopped":"Not installed";return e_||et.running,(0,s.jsxs)("div",{className:"space-y-6 p-6",children:[(0,s.jsxs)(r.Zp,{id:"rtk",children:[(0,s.jsx)("div",{className:"flex items-center justify-between mb-2",children:(0,s.jsxs)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-primary",children:"bolt"}),"Token Saver"]})}),(0,s.jsxs)("div",{className:"flex items-center justify-between pt-2 pb-4 border-b border-border gap-4",children:[(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsxs)("p",{className:"font-medium",children:["Compress tool output"," ",(0,s.jsx)("a",{href:"https://github.com/rtk-ai/rtk",target:"_blank",rel:"noreferrer",className:"text-xs font-normal text-primary underline hover:opacity-80",children:"(RTK)"})]}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"git/grep/ls/tree/logs → 60-90% fewer input tokens"})]}),(0,s.jsx)(r.lM,{checked:e,onChange:()=>eb(!e)})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between py-4 gap-4 flex-wrap",children:[(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 flex-wrap",children:[(0,s.jsxs)("p",{className:"font-medium",children:["Compress context"," ",(0,s.jsx)("a",{href:"https://github.com/chopratejas/headroom",target:"_blank",rel:"noreferrer",className:"text-xs font-normal text-primary underline hover:opacity-80",children:"(Headroom)"})]}),(0,s.jsx)("span",{className:`text-xs px-2 py-0.5 rounded ${eO?"bg-success/15 text-success":"bg-warning/15 text-warning"}`,children:eL}),(0,s.jsx)("button",{type:"button",onClick:()=>g(!0),className:"text-xs text-primary underline hover:opacity-80",children:eO?"Manage":"Setup"})]}),(0,s.jsx)("p",{className:"text-sm text-text-muted mt-1",children:"Compress prompts via /v1/compress before routing to the model"})]}),(0,s.jsx)(r.lM,{checked:a&&eO,disabled:!eO,onChange:()=>{var e;let t;return e=!a,void(h(t=m.trim()||"http://localhost:8787"),x(e),eg({headroomEnabled:e,headroomUrl:t}))}})]}),p.installed&&(0,s.jsxs)("div",{className:"mb-3 ml-1 pl-3 pb-4 border-l-2 border-border",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,s.jsxs)("span",{className:"text-xs text-text-muted",children:["Compression extras",N.version?` \xb7 v${N.version}`:"",":"]}),N.available.map(e=>{let t=!!N.extras[e],a=k.includes(e),l="code"===e?"tree-sitter AST compression for code responses":"Kompress-v2 HF model for prose/agentic traces (~+1GB)";if(t){let t="code"===e?H:_;return(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-xs px-2 py-1 rounded border border-success/40 bg-success/5 text-text",title:l,children:[(0,s.jsx)(r.lM,{size:"sm",checked:t,disabled:D,onChange:()=>eT(e,!t)}),(0,s.jsxs)("span",{className:"font-medium",children:["[",e,"]"]}),(0,s.jsx)("button",{type:"button",onClick:()=>eP(e),disabled:$===e,className:"ml-1 text-error underline hover:opacity-80 disabled:opacity-50",title:`Uninstall [${e}]`,children:$===e?"Uninstalling…":"Uninstall"})]},e)}return(0,s.jsxs)("label",{className:`flex items-center gap-1.5 text-xs px-2 py-1 rounded border cursor-pointer transition-colors ${a?"border-primary bg-primary/10 text-primary":"border-border text-text-muted hover:bg-surface-2"}`,title:l,children:[(0,s.jsx)("input",{type:"checkbox",className:"w-3 h-3",checked:a,onChange:()=>{C(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}}),(0,s.jsxs)("span",{className:"font-medium",children:["[",e,"]"]}),(0,s.jsx)("span",{className:"opacity-70",children:"not installed"})]},e)}),k.length>0&&(0,s.jsx)("button",{onClick:eE,disabled:S,className:"text-xs px-2.5 py-1 rounded bg-primary text-white hover:opacity-90 disabled:opacity-50",children:S?"Installing…":`Install [proxy,${k.join(",")}]`})]}),P&&(0,s.jsx)("p",{className:"text-xs text-error mt-1",children:P}),D&&(0,s.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"Restarting proxy…"}),(S||$)&&R&&(0,s.jsx)("pre",{className:"mt-2 max-h-32 overflow-auto rounded bg-surface-2 p-2 text-[10px] leading-tight text-text-muted whitespace-pre-wrap",children:R}),(0,s.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Installing adds the package; use ",(0,s.jsx)("code",{children:"on"}),"/",(0,s.jsx)("code",{children:"off"})," ","to activate it (restarts the proxy). Default install is"," ",(0,s.jsx)("code",{children:"[proxy]"})," only (SmartCrusher for JSON). Adding"," ",(0,s.jsx)("code",{children:"[code]"})," enables AST compression (Python/JS/TS/Go/Rust/Java/C/C++/Perl). Adding ",(0,s.jsx)("code",{children:"[ml]"})," ","enables the Kompress-v2 HF model for prose/agentic traces but adds ~1 GB (torch + huggingface-hub)."]})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between pt-4 border-t border-border gap-4 flex-wrap",children:[(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsxs)("p",{className:"font-medium",children:["Compress LLM output"," ",(0,s.jsx)("a",{href:"https://github.com/JuliusBrussee/caveman",target:"_blank",rel:"noreferrer",className:"text-xs font-normal text-primary underline hover:opacity-80",children:"(Caveman)"})]}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Terse-style system prompt → ~65% fewer output tokens (up to 87%)"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-3 shrink-0",children:[J&&(0,s.jsxs)("div",{className:"flex flex-col items-end gap-1",children:[(0,s.jsx)("div",{className:"flex items-center gap-1.5",children:ef.map(e=>(0,s.jsx)("button",{onClick:()=>{var t;G(t=e.id),eg({cavemanLevel:t})},className:`px-3 py-1.5 rounded text-xs font-medium border transition-colors ${z===e.id?"bg-primary text-white border-primary":"bg-transparent border-border text-text-muted hover:bg-surface-2"}`,title:e.desc,children:e.label},e.id))}),(0,s.jsx)("p",{className:"text-xs text-primary",children:c.find(e=>e.id===z)?.desc})]}),(0,s.jsx)(r.lM,{checked:J,onChange:()=>{var e;W(e=!J),eg({cavemanEnabled:e})}})]})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between pt-4 mt-4 border-t border-border gap-4 flex-wrap",children:[(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsxs)("p",{className:"font-medium",children:["Lazy senior dev"," ",(0,s.jsx)("a",{href:"https://github.com/DietrichGebert/ponytail",target:"_blank",rel:"noreferrer",className:"text-xs font-normal text-primary underline hover:opacity-80",children:"(Ponytail)"})]}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Bias the model toward minimal code: YAGNI, reuse stdlib, deletion over addition"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-3 shrink-0",children:[K&&(0,s.jsxs)("div",{className:"flex flex-col items-end gap-1",children:[(0,s.jsx)("div",{className:"flex items-center gap-1.5",children:d.map(e=>(0,s.jsx)("button",{onClick:()=>{var t;Y(t=e.id),eg({ponytailLevel:t})},className:`px-3 py-1.5 rounded text-xs font-medium border transition-colors ${q===e.id?"bg-primary text-white border-primary":"bg-transparent border-border text-text-muted hover:bg-surface-2"}`,title:e.desc,children:e.label},e.id))}),(0,s.jsx)("p",{className:"text-xs text-primary",children:d.find(e=>e.id===q)?.desc})]}),(0,s.jsx)(r.lM,{checked:K,onChange:()=>{var e;X(e=!K),eg({ponytailEnabled:e})}})]})]}),!1]}),(0,s.jsx)(r.aF,{isOpen:f,title:eO?"Headroom":"Setup Headroom",onClose:()=>g(!1),children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsx)("span",{children:"Status"}),(0,s.jsx)("span",{className:eO?"text-success":"text-warning",children:eL})]}),eO&&(0,s.jsx)("a",{href:"/api/headroom/proxy/dashboard",target:"_blank",rel:"noreferrer",className:"w-full rounded border border-border px-4 py-2 text-center text-sm hover:bg-surface-2",children:"Open Headroom Dashboard"}),(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("p",{className:"text-sm font-medium",children:"Proxy URL"}),(0,s.jsx)(r.pd,{value:m,onChange:e=>h(e.target.value),onBlur:ej,placeholder:"http://localhost:8787",className:"font-mono text-sm"}),(0,s.jsx)("p",{className:"text-xs text-text-muted",children:"Use a local proxy for Start/Stop, or an external Docker sidecar like http://headroom:8787."})]}),eM?(0,s.jsx)(r.$n,{onClick:eN,variant:"ghost",fullWidth:!0,disabled:b,children:b?"Stopping…":"Stop Headroom"}):eO?(0,s.jsx)("p",{className:"text-sm text-success",children:"Headroom proxy is reachable. You can enable the token saver."}):eH?(0,s.jsx)(r.$n,{onClick:ev,fullWidth:!0,disabled:b,children:b?"Starting…":"Start Headroom"}):eU?p.python?(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("p",{className:"text-sm font-medium",children:"Install then click Start:"}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("pre",{className:"flex-1 rounded bg-black/5 dark:bg-white/5 p-2 text-xs font-mono overflow-x-auto",children:'pip install "headroom-ai[proxy]"'}),(0,s.jsx)(r.$n,{size:"sm",variant:"ghost",onClick:()=>ep('pip install "headroom-ai[proxy]"'),children:eh?"Copied":"Copy"})]})]}):(0,s.jsx)("p",{className:"text-sm text-warning",children:"Python ≥ 3.10 required for local managed mode. Install Python first, or use an external proxy URL."}):(0,s.jsx)("p",{className:"text-sm text-warning",children:"Start Headroom separately at the configured URL, then recheck."}),y&&(0,s.jsx)("p",{className:"text-sm text-warning",children:y}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(r.$n,{onClick:()=>ey(),variant:"ghost",fullWidth:!0,children:"Recheck"}),(0,s.jsx)(r.$n,{onClick:()=>g(!1),fullWidth:!0,children:"Done"})]})]})}),(0,s.jsx)(r.aF,{isOpen:!1,title:et.installed?"PXPIPE":"Setup PXPIPE",onClose:()=>en(!1),children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Compress prompts using multimodal encoding. Runs in-process — no extra server or environment variables required."}),(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsx)("span",{children:"Status"}),(0,s.jsxs)("span",{className:e_||et.running?"text-success":"text-warning",children:[eA,et.version?` \xb7 v${et.version}`:""]})]}),es?.checks?.length>0&&(0,s.jsxs)("div",{className:"flex flex-col gap-1 rounded border border-border p-3",children:[(0,s.jsx)("p",{className:"text-sm font-medium mb-1",children:"Health check"}),es.checks.map(e=>(0,s.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,s.jsxs)("span",{className:e.ok?"text-success":"text-warning",children:[e.ok?"●":"○"," ",e.label]}),e.detail&&(0,s.jsx)("span",{className:"text-text-muted font-mono truncate max-w-[50%]",children:e.detail})]},e.id)),es.error&&(0,s.jsx)("p",{className:"text-xs text-warning mt-1",children:es.error})]}),et.installed?(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[et.running?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(r.$n,{onClick:()=>eR("restart"),variant:"ghost",disabled:ei,children:"Restart"}),(0,s.jsx)(r.$n,{onClick:()=>eR("stop"),variant:"ghost",disabled:ei,children:"Stop"})]}):(0,s.jsx)(r.$n,{onClick:()=>eR("start"),disabled:ei,children:ei?"Starting…":"Start"}),(0,s.jsx)(r.$n,{onClick:()=>eR("install"),variant:"ghost",disabled:ei,children:"Repair"}),(0,s.jsx)("a",{href:"/dashboard/pxpipe#logs",className:"col-span-2 rounded border border-border px-4 py-2 text-center text-sm hover:bg-surface-2",children:"Open Logs"})]}):(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsx)("p",{className:"text-sm text-warning",children:"PXPIPE is not installed."}),(0,s.jsx)(r.$n,{onClick:()=>eR("install"),fullWidth:!0,disabled:ei||et.installing,children:ei||et.installing?"Installing…":"Install"}),(0,s.jsxs)("p",{className:"text-xs text-text-muted",children:["Installs the npm package ",(0,s.jsx)("code",{className:"font-mono",children:"pxpipe-proxy"})," into the ZevaiRouter data directory. May take a few minutes."]})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("p",{className:"text-sm font-medium",children:"Minimum prompt size (chars)"}),(0,s.jsx)(r.pd,{value:String(V),onChange:e=>ee(e.target.value),onBlur:()=>{let e=Math.max(0,Number(V)||25e3);ee(e),eg({pxpipeMinChars:e})},placeholder:"25000",className:"font-mono text-sm"}),(0,s.jsx)("p",{className:"text-xs text-text-muted",children:"Requests smaller than this bypass PXPIPE and are sent as-is."})]}),ec&&(0,s.jsx)("p",{className:"text-sm text-warning",children:ec}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(r.$n,{onClick:()=>e$().then(eI),variant:"ghost",fullWidth:!0,children:"Recheck"}),(0,s.jsx)(r.$n,{onClick:()=>en(!1),fullWidth:!0,children:"Done"})]})]})}),(0,s.jsx)(r.uo,{isOpen:!!L,onClose:()=>U(null),onConfirm:()=>{let e=L?.onConfirm;U(null),e?.()},title:L?.title,message:L?.message,confirmText:L?.confirmText,variant:L?.variant})]})}},74601:(e,t,a)=>{Promise.resolve().then(a.bind(a,26736))}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=74601)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3528],{9375:(e,t,n)=>{"use strict";function r({moduleIds:e}){return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return r}}),n(94799),n(56742),n(83520),n(75293),n(57409)},26893:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let r=n(94799),a=n(34023),s=n(50802);function l(e){return{default:e&&"default"in e?e.default:e}}n(9375);let o={loader:()=>Promise.resolve(l(()=>null)),loading:null,ssr:!0},i=function(e){let t={...o,...e},n=(0,a.lazy)(()=>t.loader().then(l)),i=t.loading;function d(e){let l=i?(0,r.jsx)(i,{isLoading:!0,pastDelay:!0,error:null}):null,o=!t.ssr||!!t.loading,d=o?a.Suspense:a.Fragment,c=t.ssr?(0,r.jsxs)(r.Fragment,{children:[null,(0,r.jsx)(n,{...e})]}):(0,r.jsx)(s.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(n,{...e})});return(0,r.jsx)(d,{...o?{fallback:l}:{},children:c})}return d.displayName="LoadableComponent",d}},45301:(e,t,n)=>{Promise.resolve().then(n.bind(n,66884))},50802:(e,t,n)=>{"use strict";function r({reason:e,children:t}){return t}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return r}}),n(8510)},66884:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var r=n(94799),a=n(34023),s=n(77783),l=n(33379),o=n(99893);let i=n.n(o)()(()=>n.e(1768).then(n.bind(n,31768)),{loadableGenerated:{webpack:()=>[31768]},ssr:!1}),d=[{id:1,label:"Client Request",file:"1_req_client.json",lang:"json",desc:"Raw request from client"},{id:2,label:"Source Body",file:"2_req_source.json",lang:"json",desc:"After initial conversion"},{id:3,label:"OpenAI Intermediate",file:"3_req_openai.json",lang:"json",desc:"source → openai"},{id:4,label:"Target Request",file:"4_req_target.json",lang:"json",desc:"openai → target + URL + headers"},{id:5,label:"Provider Response",file:"5_res_provider.txt",lang:"text",desc:"Raw SSE from provider"},{id:6,label:"OpenAI Response",file:"6_res_openai.txt",lang:"text",desc:"target → openai (response)"},{id:7,label:"Client Response",file:"7_res_client.txt",lang:"text",desc:"Final response to client"}],c={minimap:{enabled:!1},fontSize:12,lineNumbers:"on",scrollBeyondLastLine:!1,wordWrap:"on",automaticLayout:!0};function u(){let[e,t]=(0,a.useState)({}),[n,o]=(0,a.useState)({1:!0}),[u,f]=(0,a.useState)({}),[m,x]=(0,a.useState)(null),g=(e,t)=>f(n=>({...n,[e]:t})),h=(e,n)=>t(t=>({...t,[e]:n})),b=e=>o(t=>{let n={};return d.forEach(e=>{n[e.id]=!1}),n[e]=!0,n}),y=async e=>{let t=d.find(t=>t.id===e);g(`load-${e}`,!0);try{let n=await fetch(`/api/translator/load?file=${t.file}`),r=await n.json();r.success?(h(e,r.content),1===e&&await j(r.content)):alert(r.error||"File not found")}catch(e){alert(e.message)}g(`load-${e}`,!1)},j=async e=>{try{let t="string"==typeof e?JSON.parse(e):e,n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:1,body:t})}),r=await n.json();r.success&&x(r.result)}catch{}},_=(e,t)=>fetch("/api/translator/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:e,content:t})}).catch(()=>{}),v=async()=>{g("toOpenAI",!0);try{let t=e[1],n=JSON.parse(t);_("1_req_client.json",t),_("2_req_source.json",JSON.stringify({timestamp:new Date().toISOString(),headers:{},body:n.body||n},null,2));let r=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:2,body:n})}),a=await r.json();if(!a.success)return void alert(a.error);let s=JSON.stringify(a.result.body,null,2);h(3,s),b(3)}catch(e){alert(e.message)}g("toOpenAI",!1)},O=async()=>{g("toTarget",!0);try{let t=e[3],n=JSON.parse(t);_("3_req_openai.json",t);let r=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:3,body:{...n,provider:m?.provider,model:m?.model}})}),a=await r.json();if(!a.success)return void alert(a.error);let s={...a.result,provider:m?.provider,model:m?.model};h(4,JSON.stringify(s,null,2)),b(4)}catch(e){alert(e.message)}g("toTarget",!1)},S=async()=>{g("send",!0);try{let t=e[4],n=JSON.parse(t);_("4_req_target.json",t);let r=n.provider||m?.provider,a=n.model||m?.model;if(!r||!a)return void alert("Missing provider or model. Please run step 1 first to detect them.");let s=await fetch("/api/translator/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:r,model:a,body:n.body||n})});if(!s.ok){let e=await s.json().catch(()=>({error:s.statusText}));alert(e.error||"Send failed");return}let l=s.body.getReader(),o=new TextDecoder,i="";for(;;){let{done:e,value:t}=await l.read();if(e)break;i+=o.decode(t,{stream:!0})}h(5,i),b(5),await fetch("/api/translator/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:"5_res_provider.txt",content:i})})}catch(e){alert(e.message)}finally{g("send",!1)}},{copy:w}=(0,l.C)(),N=async t=>{e[t]&&w(e[t],`translator-step-${t}`)};return(0,r.jsxs)("div",{className:"p-8 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-2xl font-bold text-text-main",children:"Translator Debug"}),(0,r.jsx)("p",{className:"text-sm text-text-muted mt-1",children:"Replay request flow — matches log files"})]}),m&&(0,r.jsxs)("div",{className:"flex items-center gap-2 flex-wrap justify-end",children:[(0,r.jsx)(p,{label:"src",value:m.sourceFormat,color:"blue"}),(0,r.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,r.jsx)(p,{label:"dst",value:m.targetFormat,color:"orange"}),(0,r.jsx)(p,{label:"provider",value:m.provider,color:"green"}),(0,r.jsx)(p,{label:"model",value:m.model,color:"purple"})]})]}),d.map(t=>{var a;let l=1===(a=t.id)?(0,r.jsx)(s.$n,{size:"sm",icon:"arrow_forward",loading:u.toOpenAI,onClick:v,children:"→ OpenAI"}):3===a?(0,r.jsx)(s.$n,{size:"sm",icon:"arrow_forward",loading:u.toTarget,onClick:O,children:"→ Target"}):4===a?(0,r.jsx)(s.$n,{size:"sm",icon:"send",loading:u.send,onClick:S,children:"Send"}):null,d=!!n[t.id],p=e[t.id]||"";return(0,r.jsx)(s.Zp,{children:(0,r.jsxs)("div",{className:"p-4 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("button",{onClick:()=>{let e;return e=t.id,o(t=>({...t,[e]:!t[e]}))},className:"flex items-center gap-2 flex-1 text-left group",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px] text-text-muted group-hover:text-primary transition-colors",children:d?"expand_more":"chevron_right"}),(0,r.jsx)("span",{className:"text-xs font-mono text-text-muted/60 w-4",children:t.id}),(0,r.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:t.label}),(0,r.jsx)("span",{className:"text-xs text-text-muted/60 font-mono",children:t.file}),p&&(0,r.jsxs)("span",{className:"text-xs text-green-500",children:["(",p.length," chars)"]})]}),!d&&(0,r.jsxs)("div",{className:"flex gap-1 shrink-0",children:[(0,r.jsx)(s.$n,{size:"sm",variant:"ghost",icon:"folder_open",loading:u[`load-${t.id}`],onClick:()=>y(t.id)}),l]})]}),d&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"border border-border rounded-lg overflow-hidden",children:(0,r.jsx)(i,{height:"400px",defaultLanguage:"text"===t.lang?"plaintext":"json",value:p,onChange:e=>{h(t.id,e||""),1===t.id&&j(e||"")},theme:"vs-dark",options:c})}),(0,r.jsxs)("div",{className:"flex gap-2 flex-wrap",children:[(0,r.jsx)(s.$n,{size:"sm",variant:"outline",icon:"folder_open",loading:u[`load-${t.id}`],onClick:()=>y(t.id),children:"Load"}),(0,r.jsx)(s.$n,{size:"sm",variant:"outline",icon:"data_object",onClick:()=>(t=>{try{let n=JSON.parse(e[t]);h(t,JSON.stringify(n,null,2))}catch{}})(t.id),children:"Format"}),(0,r.jsx)(s.$n,{size:"sm",variant:"outline",icon:"content_copy",onClick:()=>N(t.id),children:"Copy"}),l]})]})]})},t.id)})]})}function p({label:e,value:t,color:n}){return(0,r.jsxs)("span",{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs font-mono ${{blue:"bg-blue-500/10 text-blue-500",orange:"bg-orange-500/10 text-orange-500",green:"bg-green-500/10 text-green-500",purple:"bg-purple-500/10 text-purple-500"}[n]}`,children:[(0,r.jsxs)("span",{className:"text-text-muted/70 font-sans text-[10px]",children:[e,":"]}),t]})}},77138:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={bindSnapshot:function(){return i},createAsyncLocalStorage:function(){return o},createSnapshot:function(){return d}};for(var r in n)Object.defineProperty(t,r,{enumerable:!0,get:n[r]});let a=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class s{disable(){throw a}getStore(){}run(){throw a}exit(){throw a}enterWith(){throw a}static bind(e){return e}}let l="u">typeof globalThis&&globalThis.AsyncLocalStorage;function o(){return l?new l:new s}function i(e){return l?l.bind(e):s.bind(e)}function d(){return l?l.snapshot():function(e,...t){return e(...t)}}},79968:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return r}});let r=(0,n(77138).createAsyncLocalStorage)()},83520:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return r.workAsyncStorageInstance}});let r=n(79968)},99893:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let r=n(38489)._(n(26893));function a(e,t){let n={};"function"==typeof e&&(n.loader=e);let a={...n,...t};return(0,r.default)({...a,modules:a.loadableGenerated?.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[9118,3986,6656,7813,7783,7408,1858,7358],()=>e(e.s=45301)),_N_E=e.O()}]);