n9router 0.4.2 → 0.4.3

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 (931) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +13 -3
  3. package/.next/standalone/.next/build-manifest.json +2 -2
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/routes-manifest.json +60 -0
  6. package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  7. package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  10. package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  13. package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  16. package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  19. package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +18 -2
  22. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  25. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  28. package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  31. package/.next/standalone/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  34. package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  37. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  40. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  43. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  46. package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  49. package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  52. package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  55. package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/_global-error/page.js +3 -3
  58. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  60. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  61. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  62. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  63. package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  64. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  65. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  66. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  67. package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
  68. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  71. package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
  72. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  73. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  74. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  75. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  76. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  77. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  78. package/.next/standalone/.next/server/app/api/9remote/install/route.js +1 -1
  79. package/.next/standalone/.next/server/app/api/9remote/start/route.js +1 -1
  80. package/.next/standalone/.next/server/app/api/9remote/status/route.js +1 -1
  81. package/.next/standalone/.next/server/app/api/antigravity-ide/route.js +1 -1
  82. package/.next/standalone/.next/server/app/api/antigravity-tools/import/route.js +1 -1
  83. package/.next/standalone/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +1 -1
  85. package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/api/auth/login/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/auth/logout/route.js +1 -1
  88. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  89. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  90. package/.next/standalone/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  91. package/.next/standalone/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
  92. package/.next/standalone/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  93. package/.next/standalone/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  94. package/.next/standalone/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  95. package/.next/standalone/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  96. package/.next/standalone/.next/server/app/api/cloud/auth/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  98. package/.next/standalone/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  99. package/.next/standalone/.next/server/app/api/cloud/models/alias/route.js +1 -1
  100. package/.next/standalone/.next/server/app/api/combos/[id]/route.js +1 -1
  101. package/.next/standalone/.next/server/app/api/combos/route.js +1 -1
  102. package/.next/standalone/.next/server/app/api/health/route.js +1 -0
  103. package/.next/standalone/.next/server/app/api/health/route.js.nft.json +1 -0
  104. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -0
  105. package/.next/standalone/.next/server/app/api/init/route.js +1 -1
  106. package/.next/standalone/.next/server/app/api/init/route.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/api/internal/request-detail/route.js +1 -1
  108. package/.next/standalone/.next/server/app/api/internal/usage/route.js +1 -1
  109. package/.next/standalone/.next/server/app/api/keys/[id]/route.js +1 -1
  110. package/.next/standalone/.next/server/app/api/keys/route.js +1 -1
  111. package/.next/standalone/.next/server/app/api/locale/route.js +1 -1
  112. package/.next/standalone/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -0
  113. package/.next/standalone/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -0
  114. package/.next/standalone/.next/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -0
  115. package/.next/standalone/.next/server/app/api/media-providers/tts/voices/route.js +1 -0
  116. package/.next/standalone/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -0
  117. package/.next/standalone/.next/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -0
  118. package/.next/standalone/.next/server/app/api/models/alias/route.js +1 -1
  119. package/.next/standalone/.next/server/app/api/models/availability/route.js +1 -1
  120. package/.next/standalone/.next/server/app/api/models/route.js +1 -1
  121. package/.next/standalone/.next/server/app/api/models/test/route.js +1 -1
  122. package/.next/standalone/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  123. package/.next/standalone/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  124. package/.next/standalone/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  125. package/.next/standalone/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  126. package/.next/standalone/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  127. package/.next/standalone/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  128. package/.next/standalone/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  129. package/.next/standalone/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  130. package/.next/standalone/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  131. package/.next/standalone/.next/server/app/api/pricing/route.js +1 -1
  132. package/.next/standalone/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  133. package/.next/standalone/.next/server/app/api/provider-nodes/route.js +1 -1
  134. package/.next/standalone/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  135. package/.next/standalone/.next/server/app/api/providers/[id]/models/route.js +1 -1
  136. package/.next/standalone/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  137. package/.next/standalone/.next/server/app/api/providers/[id]/route.js +1 -1
  138. package/.next/standalone/.next/server/app/api/providers/[id]/test/route.js +1 -1
  139. package/.next/standalone/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  140. package/.next/standalone/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  141. package/.next/standalone/.next/server/app/api/providers/client/route.js +1 -1
  142. package/.next/standalone/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  143. package/.next/standalone/.next/server/app/api/providers/route.js +1 -1
  144. package/.next/standalone/.next/server/app/api/providers/test-batch/route.js +1 -1
  145. package/.next/standalone/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/api/providers/validate/route.js +1 -1
  147. package/.next/standalone/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  148. package/.next/standalone/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  149. package/.next/standalone/.next/server/app/api/proxy-pools/route.js +1 -1
  150. package/.next/standalone/.next/server/app/api/settings/database/route.js +1 -1
  151. package/.next/standalone/.next/server/app/api/settings/proxy-test/route.js +1 -1
  152. package/.next/standalone/.next/server/app/api/settings/require-login/route.js +1 -1
  153. package/.next/standalone/.next/server/app/api/settings/route.js +1 -1
  154. package/.next/standalone/.next/server/app/api/shutdown/route.js +1 -1
  155. package/.next/standalone/.next/server/app/api/tags/route.js +1 -1
  156. package/.next/standalone/.next/server/app/api/translator/console-logs/route.js +1 -1
  157. package/.next/standalone/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  158. package/.next/standalone/.next/server/app/api/translator/load/route.js +1 -1
  159. package/.next/standalone/.next/server/app/api/translator/save/route.js +1 -1
  160. package/.next/standalone/.next/server/app/api/translator/send/route.js +1 -1
  161. package/.next/standalone/.next/server/app/api/translator/translate/route.js +1 -1
  162. package/.next/standalone/.next/server/app/api/tunnel/disable/route.js +1 -1
  163. package/.next/standalone/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  164. package/.next/standalone/.next/server/app/api/tunnel/enable/route.js +1 -1
  165. package/.next/standalone/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  166. package/.next/standalone/.next/server/app/api/tunnel/status/route.js +1 -1
  167. package/.next/standalone/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  168. package/.next/standalone/.next/server/app/api/tunnel/tailscale-check/route.js +4 -0
  169. package/.next/standalone/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -0
  170. package/.next/standalone/.next/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -0
  171. package/.next/standalone/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -0
  172. package/.next/standalone/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -0
  173. package/.next/standalone/.next/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -0
  174. package/.next/standalone/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -0
  175. package/.next/standalone/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -0
  176. package/.next/standalone/.next/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -0
  177. package/.next/standalone/.next/server/app/api/tunnel/tailscale-install/route.js +5 -0
  178. package/.next/standalone/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -0
  179. package/.next/standalone/.next/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -0
  180. package/.next/standalone/.next/server/app/api/tunnel/tailscale-login/route.js +4 -0
  181. package/.next/standalone/.next/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -0
  182. package/.next/standalone/.next/server/app/api/tunnel/tailscale-login/route_client-reference-manifest.js +1 -0
  183. package/.next/standalone/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -0
  184. package/.next/standalone/.next/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -0
  185. package/.next/standalone/.next/server/app/api/tunnel/tailscale-start-daemon/route_client-reference-manifest.js +1 -0
  186. package/.next/standalone/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  187. package/.next/standalone/.next/server/app/api/usage/chart/route.js +1 -1
  188. package/.next/standalone/.next/server/app/api/usage/history/route.js +1 -1
  189. package/.next/standalone/.next/server/app/api/usage/logs/route.js +1 -1
  190. package/.next/standalone/.next/server/app/api/usage/providers/route.js +1 -1
  191. package/.next/standalone/.next/server/app/api/usage/request-details/route.js +1 -1
  192. package/.next/standalone/.next/server/app/api/usage/request-logs/route.js +1 -1
  193. package/.next/standalone/.next/server/app/api/usage/stats/route.js +1 -1
  194. package/.next/standalone/.next/server/app/api/usage/stream/route.js +2 -2
  195. package/.next/standalone/.next/server/app/api/v1/api/chat/route.js +1 -1
  196. package/.next/standalone/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  197. package/.next/standalone/.next/server/app/api/v1/audio/speech/route.js +1 -0
  198. package/.next/standalone/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -0
  199. package/.next/standalone/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -0
  200. package/.next/standalone/.next/server/app/api/v1/chat/completions/route.js +1 -1
  201. package/.next/standalone/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  202. package/.next/standalone/.next/server/app/api/v1/embeddings/route.js +1 -1
  203. package/.next/standalone/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  204. package/.next/standalone/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  205. package/.next/standalone/.next/server/app/api/v1/messages/route.js +1 -1
  206. package/.next/standalone/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  207. package/.next/standalone/.next/server/app/api/v1/models/route.js +1 -1
  208. package/.next/standalone/.next/server/app/api/v1/responses/route.js +1 -1
  209. package/.next/standalone/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  210. package/.next/standalone/.next/server/app/api/v1/route.js +1 -1
  211. package/.next/standalone/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  212. package/.next/standalone/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  213. package/.next/standalone/.next/server/app/api/v1beta/models/route.js +1 -1
  214. package/.next/standalone/.next/server/app/api/version/route.js +1 -1
  215. package/.next/standalone/.next/server/app/callback/page.js +2 -2
  216. package/.next/standalone/.next/server/app/callback/page.js.nft.json +1 -1
  217. package/.next/standalone/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/callback.html +1 -1
  219. package/.next/standalone/.next/server/app/callback.rsc +4 -4
  220. package/.next/standalone/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  221. package/.next/standalone/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  222. package/.next/standalone/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  223. package/.next/standalone/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  224. package/.next/standalone/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  225. package/.next/standalone/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  226. package/.next/standalone/.next/server/app/dashboard/basic-chat.html +1 -1
  227. package/.next/standalone/.next/server/app/dashboard/basic-chat.rsc +6 -6
  228. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  229. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  230. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  231. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  232. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  233. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  234. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  235. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  236. package/.next/standalone/.next/server/app/dashboard/cli-tools.html +1 -1
  237. package/.next/standalone/.next/server/app/dashboard/cli-tools.rsc +6 -6
  238. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  239. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  240. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  241. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  242. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  243. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  244. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  245. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  246. package/.next/standalone/.next/server/app/dashboard/combos.html +1 -1
  247. package/.next/standalone/.next/server/app/dashboard/combos.rsc +6 -6
  248. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  249. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  250. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  251. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  252. package/.next/standalone/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  253. package/.next/standalone/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  254. package/.next/standalone/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  255. package/.next/standalone/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  256. package/.next/standalone/.next/server/app/dashboard/endpoint.html +1 -1
  257. package/.next/standalone/.next/server/app/dashboard/endpoint.rsc +6 -6
  258. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  259. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  260. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  261. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  262. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  263. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  264. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  265. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  266. package/.next/standalone/.next/server/app/dashboard/mitm.html +1 -1
  267. package/.next/standalone/.next/server/app/dashboard/mitm.rsc +6 -6
  268. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  269. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  270. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  271. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  272. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  273. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  274. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  275. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  276. package/.next/standalone/.next/server/app/dashboard/profile.html +1 -1
  277. package/.next/standalone/.next/server/app/dashboard/profile.rsc +6 -6
  278. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  279. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  280. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  281. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  282. package/.next/standalone/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  283. package/.next/standalone/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  284. package/.next/standalone/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  285. package/.next/standalone/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  286. package/.next/standalone/.next/server/app/dashboard/providers/new.html +1 -1
  287. package/.next/standalone/.next/server/app/dashboard/providers/new.rsc +6 -6
  288. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  289. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  290. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  291. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  292. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  293. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  294. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  295. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  296. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  297. package/.next/standalone/.next/server/app/dashboard/providers.html +1 -1
  298. package/.next/standalone/.next/server/app/dashboard/providers.rsc +6 -6
  299. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  300. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  301. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  302. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  303. package/.next/standalone/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  304. package/.next/standalone/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  305. package/.next/standalone/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  306. package/.next/standalone/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  307. package/.next/standalone/.next/server/app/dashboard/proxy-pools.html +1 -1
  308. package/.next/standalone/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  309. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  310. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  311. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  312. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  313. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  314. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  315. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  316. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  317. package/.next/standalone/.next/server/app/dashboard/quota.html +2 -2
  318. package/.next/standalone/.next/server/app/dashboard/quota.rsc +7 -7
  319. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  320. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  321. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  322. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  323. package/.next/standalone/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  324. package/.next/standalone/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  325. package/.next/standalone/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  326. package/.next/standalone/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  327. package/.next/standalone/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  328. package/.next/standalone/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  329. package/.next/standalone/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  330. package/.next/standalone/.next/server/app/dashboard/settings/pricing.html +1 -1
  331. package/.next/standalone/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  332. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  333. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  334. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  335. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  336. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  337. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  338. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  339. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  340. package/.next/standalone/.next/server/app/dashboard/translator.html +1 -1
  341. package/.next/standalone/.next/server/app/dashboard/translator.rsc +6 -6
  342. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  343. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  344. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  345. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  346. package/.next/standalone/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  347. package/.next/standalone/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  348. package/.next/standalone/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  349. package/.next/standalone/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  350. package/.next/standalone/.next/server/app/dashboard/usage.html +1 -1
  351. package/.next/standalone/.next/server/app/dashboard/usage.rsc +6 -6
  352. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  353. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  354. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  355. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  356. package/.next/standalone/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  357. package/.next/standalone/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  358. package/.next/standalone/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  359. package/.next/standalone/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  360. package/.next/standalone/.next/server/app/dashboard.html +1 -1
  361. package/.next/standalone/.next/server/app/dashboard.rsc +6 -6
  362. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  363. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  364. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  365. package/.next/standalone/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  366. package/.next/standalone/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  367. package/.next/standalone/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  368. package/.next/standalone/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  369. package/.next/standalone/.next/server/app/favicon.ico/route.js +1 -1
  370. package/.next/standalone/.next/server/app/index.html +1 -1
  371. package/.next/standalone/.next/server/app/index.rsc +4 -4
  372. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  373. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  374. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  375. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
  376. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  377. package/.next/standalone/.next/server/app/landing/page.js +2 -2
  378. package/.next/standalone/.next/server/app/landing/page.js.nft.json +1 -1
  379. package/.next/standalone/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  380. package/.next/standalone/.next/server/app/landing.html +1 -1
  381. package/.next/standalone/.next/server/app/landing.rsc +4 -4
  382. package/.next/standalone/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  383. package/.next/standalone/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  384. package/.next/standalone/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  385. package/.next/standalone/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  386. package/.next/standalone/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  387. package/.next/standalone/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  388. package/.next/standalone/.next/server/app/login/page.js +2 -2
  389. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  390. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  391. package/.next/standalone/.next/server/app/login.html +1 -1
  392. package/.next/standalone/.next/server/app/login.rsc +5 -5
  393. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +5 -5
  394. package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
  395. package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +4 -4
  396. package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  397. package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  398. package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
  399. package/.next/standalone/.next/server/app/manifest.webmanifest/route.js +2 -2
  400. package/.next/standalone/.next/server/app/page.js +2 -2
  401. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  402. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  403. package/.next/standalone/.next/server/app-paths-manifest.json +13 -3
  404. package/.next/standalone/.next/server/chunks/2506.js +5 -0
  405. package/.next/standalone/.next/server/chunks/289.js +1 -0
  406. package/.next/standalone/.next/server/chunks/318.js +4 -4
  407. package/.next/standalone/.next/server/chunks/3646.js +1 -1
  408. package/.next/standalone/.next/server/chunks/3832.js +1 -1
  409. package/.next/standalone/.next/server/chunks/412.js +2 -2
  410. package/.next/standalone/.next/server/chunks/4689.js +1 -1
  411. package/.next/standalone/.next/server/chunks/5127.js +1 -0
  412. package/.next/standalone/.next/server/chunks/5324.js +1 -1
  413. package/.next/standalone/.next/server/chunks/6555.js +1 -0
  414. package/.next/standalone/.next/server/chunks/7828.js +1 -0
  415. package/.next/standalone/.next/server/chunks/7994.js +2 -2
  416. package/.next/standalone/.next/server/chunks/8220.js +1 -1
  417. package/.next/standalone/.next/server/chunks/8226.js +18 -0
  418. package/.next/standalone/.next/server/chunks/869.js +1 -1
  419. package/.next/standalone/.next/server/chunks/8895.js +1 -1
  420. package/.next/standalone/.next/server/chunks/9201.js +1 -1
  421. package/.next/standalone/.next/server/chunks/9609.js +1 -1
  422. package/.next/standalone/.next/server/chunks/9718.js +1 -1
  423. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  424. package/.next/standalone/.next/server/middleware.js +2 -2
  425. package/.next/standalone/.next/server/pages/404.html +1 -1
  426. package/.next/standalone/.next/server/pages/500.html +1 -1
  427. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  428. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  429. package/.next/standalone/.next/static/_6iT5puM28i82au_Z-Hj5/_buildManifest.js +1 -0
  430. package/.next/standalone/.next/static/chunks/1321-d2153c50711f1db5.js +1 -0
  431. package/.next/standalone/.next/static/chunks/2589-e33ccd63c1afc7ba.js +3 -0
  432. package/.next/standalone/.next/static/chunks/{5497-89d4d158e6603ee9.js → 5497-f31fec65c312a69e.js} +2 -2
  433. package/.next/standalone/.next/static/chunks/5601-0a2235641c503d61.js +18 -0
  434. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-6de79bf0d6e818c6.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-ac26c9a5556a0b0b.js → page-80256518cf21bba3.js} +1 -1
  436. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-9187cde45715aa36.js +17 -0
  437. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-4b6e1e7c8db448ec.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-d99e342ecd18b0ef.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-179c978e4cac46d1.js → page-acbbfd33f5456170.js} +2 -2
  440. package/.next/standalone/.next/static/chunks/app/_global-error/page-ad4e2601ee308c36.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/9remote/install/route-ad4e2601ee308c36.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/9remote/start/route-ad4e2601ee308c36.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/9remote/status/route-ad4e2601ee308c36.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/antigravity-ide/route-ad4e2601ee308c36.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import/route-ad4e2601ee308c36.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-ad4e2601ee308c36.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/auth/login/route-ad4e2601ee308c36.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-ad4e2601ee308c36.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ad4e2601ee308c36.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-ad4e2601ee308c36.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/cli-tools/claude-settings/route-ad4e2601ee308c36.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/cli-tools/codex-settings/route-ad4e2601ee308c36.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/cli-tools/copilot-settings/route-ad4e2601ee308c36.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/cli-tools/droid-settings/route-ad4e2601ee308c36.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-ad4e2601ee308c36.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/cli-tools/opencode-settings/route-ad4e2601ee308c36.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/cloud/auth/route-ad4e2601ee308c36.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/cloud/credentials/update/route-ad4e2601ee308c36.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/cloud/model/resolve/route-ad4e2601ee308c36.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/cloud/models/alias/route-ad4e2601ee308c36.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/combos/[id]/route-ad4e2601ee308c36.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/combos/route-ad4e2601ee308c36.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/health/route-ad4e2601ee308c36.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/init/route-ad4e2601ee308c36.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/internal/request-detail/route-ad4e2601ee308c36.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/internal/usage/route-ad4e2601ee308c36.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/keys/[id]/route-ad4e2601ee308c36.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/keys/route-ad4e2601ee308c36.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/api/locale/route-ad4e2601ee308c36.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ad4e2601ee308c36.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/api/media-providers/tts/voices/route-ad4e2601ee308c36.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/api/models/alias/route-ad4e2601ee308c36.js +1 -0
  473. package/.next/standalone/.next/static/chunks/app/api/models/availability/route-ad4e2601ee308c36.js +1 -0
  474. package/.next/standalone/.next/static/chunks/app/api/models/route-ad4e2601ee308c36.js +1 -0
  475. package/.next/standalone/.next/static/chunks/app/api/models/test/route-ad4e2601ee308c36.js +1 -0
  476. package/.next/standalone/.next/static/chunks/app/api/oauth/[provider]/[action]/route-ad4e2601ee308c36.js +1 -0
  477. package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/auto-import/route-ad4e2601ee308c36.js +1 -0
  478. package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/import/route-ad4e2601ee308c36.js +1 -0
  479. package/.next/standalone/.next/static/chunks/app/api/oauth/gitlab/pat/route-ad4e2601ee308c36.js +1 -0
  480. package/.next/standalone/.next/static/chunks/app/api/oauth/iflow/cookie/route-ad4e2601ee308c36.js +1 -0
  481. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/auto-import/route-ad4e2601ee308c36.js +1 -0
  482. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/import/route-ad4e2601ee308c36.js +1 -0
  483. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-ad4e2601ee308c36.js +1 -0
  484. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-ad4e2601ee308c36.js +1 -0
  485. package/.next/standalone/.next/static/chunks/app/api/pricing/route-ad4e2601ee308c36.js +1 -0
  486. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/[id]/route-ad4e2601ee308c36.js +1 -0
  487. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/route-ad4e2601ee308c36.js +1 -0
  488. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/validate/route-ad4e2601ee308c36.js +1 -0
  489. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/models/route-ad4e2601ee308c36.js +1 -0
  490. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/route-ad4e2601ee308c36.js +1 -0
  491. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test/route-ad4e2601ee308c36.js +1 -0
  492. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test-models/route-ad4e2601ee308c36.js +1 -0
  493. package/.next/standalone/.next/static/chunks/app/api/providers/client/route-ad4e2601ee308c36.js +1 -0
  494. package/.next/standalone/.next/static/chunks/app/api/providers/kilo/free-models/route-ad4e2601ee308c36.js +1 -0
  495. package/.next/standalone/.next/static/chunks/app/api/providers/route-ad4e2601ee308c36.js +1 -0
  496. package/.next/standalone/.next/static/chunks/app/api/providers/test-batch/route-ad4e2601ee308c36.js +1 -0
  497. package/.next/standalone/.next/static/chunks/app/api/providers/validate/route-ad4e2601ee308c36.js +1 -0
  498. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/route-ad4e2601ee308c36.js +1 -0
  499. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/test/route-ad4e2601ee308c36.js +1 -0
  500. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/route-ad4e2601ee308c36.js +1 -0
  501. package/.next/standalone/.next/static/chunks/app/api/settings/database/route-ad4e2601ee308c36.js +1 -0
  502. package/.next/standalone/.next/static/chunks/app/api/settings/proxy-test/route-ad4e2601ee308c36.js +1 -0
  503. package/.next/standalone/.next/static/chunks/app/api/settings/require-login/route-ad4e2601ee308c36.js +1 -0
  504. package/.next/standalone/.next/static/chunks/app/api/settings/route-ad4e2601ee308c36.js +1 -0
  505. package/.next/standalone/.next/static/chunks/app/api/shutdown/route-ad4e2601ee308c36.js +1 -0
  506. package/.next/standalone/.next/static/chunks/app/api/tags/route-ad4e2601ee308c36.js +1 -0
  507. package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/route-ad4e2601ee308c36.js +1 -0
  508. package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/stream/route-ad4e2601ee308c36.js +1 -0
  509. package/.next/standalone/.next/static/chunks/app/api/translator/load/route-ad4e2601ee308c36.js +1 -0
  510. package/.next/standalone/.next/static/chunks/app/api/translator/save/route-ad4e2601ee308c36.js +1 -0
  511. package/.next/standalone/.next/static/chunks/app/api/translator/send/route-ad4e2601ee308c36.js +1 -0
  512. package/.next/standalone/.next/static/chunks/app/api/translator/translate/route-ad4e2601ee308c36.js +1 -0
  513. package/.next/standalone/.next/static/chunks/app/api/tunnel/disable/route-ad4e2601ee308c36.js +1 -0
  514. package/.next/standalone/.next/static/chunks/app/api/tunnel/enable/route-ad4e2601ee308c36.js +1 -0
  515. package/.next/standalone/.next/static/chunks/app/api/tunnel/status/route-ad4e2601ee308c36.js +1 -0
  516. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-check/route-ad4e2601ee308c36.js +1 -0
  517. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-disable/route-ad4e2601ee308c36.js +1 -0
  518. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-enable/route-ad4e2601ee308c36.js +1 -0
  519. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-install/route-ad4e2601ee308c36.js +1 -0
  520. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-login/route-ad4e2601ee308c36.js +1 -0
  521. package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-ad4e2601ee308c36.js +1 -0
  522. package/.next/standalone/.next/static/chunks/app/api/usage/[connectionId]/route-ad4e2601ee308c36.js +1 -0
  523. package/.next/standalone/.next/static/chunks/app/api/usage/chart/route-ad4e2601ee308c36.js +1 -0
  524. package/.next/standalone/.next/static/chunks/app/api/usage/history/route-ad4e2601ee308c36.js +1 -0
  525. package/.next/standalone/.next/static/chunks/app/api/usage/logs/route-ad4e2601ee308c36.js +1 -0
  526. package/.next/standalone/.next/static/chunks/app/api/usage/providers/route-ad4e2601ee308c36.js +1 -0
  527. package/.next/standalone/.next/static/chunks/app/api/usage/request-details/route-ad4e2601ee308c36.js +1 -0
  528. package/.next/standalone/.next/static/chunks/app/api/usage/request-logs/route-ad4e2601ee308c36.js +1 -0
  529. package/.next/standalone/.next/static/chunks/app/api/usage/stats/route-ad4e2601ee308c36.js +1 -0
  530. package/.next/standalone/.next/static/chunks/app/api/usage/stream/route-ad4e2601ee308c36.js +1 -0
  531. package/.next/standalone/.next/static/chunks/app/api/v1/api/chat/route-ad4e2601ee308c36.js +1 -0
  532. package/.next/standalone/.next/static/chunks/app/api/v1/audio/speech/route-ad4e2601ee308c36.js +1 -0
  533. package/.next/standalone/.next/static/chunks/app/api/v1/chat/completions/route-ad4e2601ee308c36.js +1 -0
  534. package/.next/standalone/.next/static/chunks/app/api/v1/embeddings/route-ad4e2601ee308c36.js +1 -0
  535. package/.next/standalone/.next/static/chunks/app/api/v1/messages/count_tokens/route-ad4e2601ee308c36.js +1 -0
  536. package/.next/standalone/.next/static/chunks/app/api/v1/messages/route-ad4e2601ee308c36.js +1 -0
  537. package/.next/standalone/.next/static/chunks/app/api/v1/models/route-ad4e2601ee308c36.js +1 -0
  538. package/.next/standalone/.next/static/chunks/app/api/v1/responses/route-ad4e2601ee308c36.js +1 -0
  539. package/.next/standalone/.next/static/chunks/app/api/v1/route-ad4e2601ee308c36.js +1 -0
  540. package/.next/standalone/.next/static/chunks/app/api/v1beta/models/[...path]/route-ad4e2601ee308c36.js +1 -0
  541. package/.next/standalone/.next/static/chunks/app/api/v1beta/models/route-ad4e2601ee308c36.js +1 -0
  542. package/.next/standalone/.next/static/chunks/app/api/version/route-ad4e2601ee308c36.js +1 -0
  543. package/.next/standalone/.next/static/chunks/app/manifest.webmanifest/route-ad4e2601ee308c36.js +1 -0
  544. package/.next/standalone/.next/static/chunks/app/page-ad4e2601ee308c36.js +1 -0
  545. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-ad4e2601ee308c36.js +1 -0
  546. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-ad4e2601ee308c36.js +1 -0
  547. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-ad4e2601ee308c36.js +1 -0
  548. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ad4e2601ee308c36.js +1 -0
  549. package/.next/standalone/.next/static/css/b18dfd2c9a0a7b49.css +1 -0
  550. package/.next/standalone/package.json +1 -1
  551. package/.next/standalone/public/providers/cartesia.png +0 -0
  552. package/.next/standalone/public/providers/cerebras.png +0 -0
  553. package/.next/standalone/public/providers/cohere.png +0 -0
  554. package/.next/standalone/public/providers/comfyui.png +0 -0
  555. package/.next/standalone/public/providers/deepseek.png +0 -0
  556. package/.next/standalone/public/providers/edge-tts.png +0 -0
  557. package/.next/standalone/public/providers/elevenlabs.png +0 -0
  558. package/.next/standalone/public/providers/fireworks.png +0 -0
  559. package/.next/standalone/public/providers/google-tts.png +0 -0
  560. package/.next/standalone/public/providers/groq.png +0 -0
  561. package/.next/standalone/public/providers/huggingface.png +0 -0
  562. package/.next/standalone/public/providers/local-device.png +0 -0
  563. package/.next/standalone/public/providers/mistral.png +0 -0
  564. package/.next/standalone/public/providers/nebius.png +0 -0
  565. package/.next/standalone/public/providers/perplexity.png +0 -0
  566. package/.next/standalone/public/providers/playht.png +0 -0
  567. package/.next/standalone/public/providers/sdwebui.png +0 -0
  568. package/.next/standalone/public/providers/together.png +0 -0
  569. package/.next/standalone/public/providers/xai.png +0 -0
  570. package/.next/static/_6iT5puM28i82au_Z-Hj5/_buildManifest.js +1 -0
  571. package/.next/static/chunks/1321-d2153c50711f1db5.js +1 -0
  572. package/.next/static/chunks/2589-e33ccd63c1afc7ba.js +3 -0
  573. package/.next/static/chunks/{5497-89d4d158e6603ee9.js → 5497-f31fec65c312a69e.js} +2 -2
  574. package/.next/static/chunks/5601-0a2235641c503d61.js +18 -0
  575. package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-6de79bf0d6e818c6.js +1 -0
  576. package/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-ac26c9a5556a0b0b.js → page-80256518cf21bba3.js} +1 -1
  577. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-9187cde45715aa36.js +17 -0
  578. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-4b6e1e7c8db448ec.js +1 -0
  579. package/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-d99e342ecd18b0ef.js +1 -0
  580. package/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-179c978e4cac46d1.js → page-acbbfd33f5456170.js} +2 -2
  581. package/.next/static/chunks/app/_global-error/page-ad4e2601ee308c36.js +1 -0
  582. package/.next/static/chunks/app/api/9remote/install/route-ad4e2601ee308c36.js +1 -0
  583. package/.next/static/chunks/app/api/9remote/start/route-ad4e2601ee308c36.js +1 -0
  584. package/.next/static/chunks/app/api/9remote/status/route-ad4e2601ee308c36.js +1 -0
  585. package/.next/static/chunks/app/api/antigravity-ide/route-ad4e2601ee308c36.js +1 -0
  586. package/.next/static/chunks/app/api/antigravity-tools/import/route-ad4e2601ee308c36.js +1 -0
  587. package/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-ad4e2601ee308c36.js +1 -0
  588. package/.next/static/chunks/app/api/auth/login/route-ad4e2601ee308c36.js +1 -0
  589. package/.next/static/chunks/app/api/auth/logout/route-ad4e2601ee308c36.js +1 -0
  590. package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ad4e2601ee308c36.js +1 -0
  591. package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-ad4e2601ee308c36.js +1 -0
  592. package/.next/static/chunks/app/api/cli-tools/claude-settings/route-ad4e2601ee308c36.js +1 -0
  593. package/.next/static/chunks/app/api/cli-tools/codex-settings/route-ad4e2601ee308c36.js +1 -0
  594. package/.next/static/chunks/app/api/cli-tools/copilot-settings/route-ad4e2601ee308c36.js +1 -0
  595. package/.next/static/chunks/app/api/cli-tools/droid-settings/route-ad4e2601ee308c36.js +1 -0
  596. package/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-ad4e2601ee308c36.js +1 -0
  597. package/.next/static/chunks/app/api/cli-tools/opencode-settings/route-ad4e2601ee308c36.js +1 -0
  598. package/.next/static/chunks/app/api/cloud/auth/route-ad4e2601ee308c36.js +1 -0
  599. package/.next/static/chunks/app/api/cloud/credentials/update/route-ad4e2601ee308c36.js +1 -0
  600. package/.next/static/chunks/app/api/cloud/model/resolve/route-ad4e2601ee308c36.js +1 -0
  601. package/.next/static/chunks/app/api/cloud/models/alias/route-ad4e2601ee308c36.js +1 -0
  602. package/.next/static/chunks/app/api/combos/[id]/route-ad4e2601ee308c36.js +1 -0
  603. package/.next/static/chunks/app/api/combos/route-ad4e2601ee308c36.js +1 -0
  604. package/.next/static/chunks/app/api/health/route-ad4e2601ee308c36.js +1 -0
  605. package/.next/static/chunks/app/api/init/route-ad4e2601ee308c36.js +1 -0
  606. package/.next/static/chunks/app/api/internal/request-detail/route-ad4e2601ee308c36.js +1 -0
  607. package/.next/static/chunks/app/api/internal/usage/route-ad4e2601ee308c36.js +1 -0
  608. package/.next/static/chunks/app/api/keys/[id]/route-ad4e2601ee308c36.js +1 -0
  609. package/.next/static/chunks/app/api/keys/route-ad4e2601ee308c36.js +1 -0
  610. package/.next/static/chunks/app/api/locale/route-ad4e2601ee308c36.js +1 -0
  611. package/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ad4e2601ee308c36.js +1 -0
  612. package/.next/static/chunks/app/api/media-providers/tts/voices/route-ad4e2601ee308c36.js +1 -0
  613. package/.next/static/chunks/app/api/models/alias/route-ad4e2601ee308c36.js +1 -0
  614. package/.next/static/chunks/app/api/models/availability/route-ad4e2601ee308c36.js +1 -0
  615. package/.next/static/chunks/app/api/models/route-ad4e2601ee308c36.js +1 -0
  616. package/.next/static/chunks/app/api/models/test/route-ad4e2601ee308c36.js +1 -0
  617. package/.next/static/chunks/app/api/oauth/[provider]/[action]/route-ad4e2601ee308c36.js +1 -0
  618. package/.next/static/chunks/app/api/oauth/cursor/auto-import/route-ad4e2601ee308c36.js +1 -0
  619. package/.next/static/chunks/app/api/oauth/cursor/import/route-ad4e2601ee308c36.js +1 -0
  620. package/.next/static/chunks/app/api/oauth/gitlab/pat/route-ad4e2601ee308c36.js +1 -0
  621. package/.next/static/chunks/app/api/oauth/iflow/cookie/route-ad4e2601ee308c36.js +1 -0
  622. package/.next/static/chunks/app/api/oauth/kiro/auto-import/route-ad4e2601ee308c36.js +1 -0
  623. package/.next/static/chunks/app/api/oauth/kiro/import/route-ad4e2601ee308c36.js +1 -0
  624. package/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-ad4e2601ee308c36.js +1 -0
  625. package/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-ad4e2601ee308c36.js +1 -0
  626. package/.next/static/chunks/app/api/pricing/route-ad4e2601ee308c36.js +1 -0
  627. package/.next/static/chunks/app/api/provider-nodes/[id]/route-ad4e2601ee308c36.js +1 -0
  628. package/.next/static/chunks/app/api/provider-nodes/route-ad4e2601ee308c36.js +1 -0
  629. package/.next/static/chunks/app/api/provider-nodes/validate/route-ad4e2601ee308c36.js +1 -0
  630. package/.next/static/chunks/app/api/providers/[id]/models/route-ad4e2601ee308c36.js +1 -0
  631. package/.next/static/chunks/app/api/providers/[id]/route-ad4e2601ee308c36.js +1 -0
  632. package/.next/static/chunks/app/api/providers/[id]/test/route-ad4e2601ee308c36.js +1 -0
  633. package/.next/static/chunks/app/api/providers/[id]/test-models/route-ad4e2601ee308c36.js +1 -0
  634. package/.next/static/chunks/app/api/providers/client/route-ad4e2601ee308c36.js +1 -0
  635. package/.next/static/chunks/app/api/providers/kilo/free-models/route-ad4e2601ee308c36.js +1 -0
  636. package/.next/static/chunks/app/api/providers/route-ad4e2601ee308c36.js +1 -0
  637. package/.next/static/chunks/app/api/providers/test-batch/route-ad4e2601ee308c36.js +1 -0
  638. package/.next/static/chunks/app/api/providers/validate/route-ad4e2601ee308c36.js +1 -0
  639. package/.next/static/chunks/app/api/proxy-pools/[id]/route-ad4e2601ee308c36.js +1 -0
  640. package/.next/static/chunks/app/api/proxy-pools/[id]/test/route-ad4e2601ee308c36.js +1 -0
  641. package/.next/static/chunks/app/api/proxy-pools/route-ad4e2601ee308c36.js +1 -0
  642. package/.next/static/chunks/app/api/settings/database/route-ad4e2601ee308c36.js +1 -0
  643. package/.next/static/chunks/app/api/settings/proxy-test/route-ad4e2601ee308c36.js +1 -0
  644. package/.next/static/chunks/app/api/settings/require-login/route-ad4e2601ee308c36.js +1 -0
  645. package/.next/static/chunks/app/api/settings/route-ad4e2601ee308c36.js +1 -0
  646. package/.next/static/chunks/app/api/shutdown/route-ad4e2601ee308c36.js +1 -0
  647. package/.next/static/chunks/app/api/tags/route-ad4e2601ee308c36.js +1 -0
  648. package/.next/static/chunks/app/api/translator/console-logs/route-ad4e2601ee308c36.js +1 -0
  649. package/.next/static/chunks/app/api/translator/console-logs/stream/route-ad4e2601ee308c36.js +1 -0
  650. package/.next/static/chunks/app/api/translator/load/route-ad4e2601ee308c36.js +1 -0
  651. package/.next/static/chunks/app/api/translator/save/route-ad4e2601ee308c36.js +1 -0
  652. package/.next/static/chunks/app/api/translator/send/route-ad4e2601ee308c36.js +1 -0
  653. package/.next/static/chunks/app/api/translator/translate/route-ad4e2601ee308c36.js +1 -0
  654. package/.next/static/chunks/app/api/tunnel/disable/route-ad4e2601ee308c36.js +1 -0
  655. package/.next/static/chunks/app/api/tunnel/enable/route-ad4e2601ee308c36.js +1 -0
  656. package/.next/static/chunks/app/api/tunnel/status/route-ad4e2601ee308c36.js +1 -0
  657. package/.next/static/chunks/app/api/tunnel/tailscale-check/route-ad4e2601ee308c36.js +1 -0
  658. package/.next/static/chunks/app/api/tunnel/tailscale-disable/route-ad4e2601ee308c36.js +1 -0
  659. package/.next/static/chunks/app/api/tunnel/tailscale-enable/route-ad4e2601ee308c36.js +1 -0
  660. package/.next/static/chunks/app/api/tunnel/tailscale-install/route-ad4e2601ee308c36.js +1 -0
  661. package/.next/static/chunks/app/api/tunnel/tailscale-login/route-ad4e2601ee308c36.js +1 -0
  662. package/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-ad4e2601ee308c36.js +1 -0
  663. package/.next/static/chunks/app/api/usage/[connectionId]/route-ad4e2601ee308c36.js +1 -0
  664. package/.next/static/chunks/app/api/usage/chart/route-ad4e2601ee308c36.js +1 -0
  665. package/.next/static/chunks/app/api/usage/history/route-ad4e2601ee308c36.js +1 -0
  666. package/.next/static/chunks/app/api/usage/logs/route-ad4e2601ee308c36.js +1 -0
  667. package/.next/static/chunks/app/api/usage/providers/route-ad4e2601ee308c36.js +1 -0
  668. package/.next/static/chunks/app/api/usage/request-details/route-ad4e2601ee308c36.js +1 -0
  669. package/.next/static/chunks/app/api/usage/request-logs/route-ad4e2601ee308c36.js +1 -0
  670. package/.next/static/chunks/app/api/usage/stats/route-ad4e2601ee308c36.js +1 -0
  671. package/.next/static/chunks/app/api/usage/stream/route-ad4e2601ee308c36.js +1 -0
  672. package/.next/static/chunks/app/api/v1/api/chat/route-ad4e2601ee308c36.js +1 -0
  673. package/.next/static/chunks/app/api/v1/audio/speech/route-ad4e2601ee308c36.js +1 -0
  674. package/.next/static/chunks/app/api/v1/chat/completions/route-ad4e2601ee308c36.js +1 -0
  675. package/.next/static/chunks/app/api/v1/embeddings/route-ad4e2601ee308c36.js +1 -0
  676. package/.next/static/chunks/app/api/v1/messages/count_tokens/route-ad4e2601ee308c36.js +1 -0
  677. package/.next/static/chunks/app/api/v1/messages/route-ad4e2601ee308c36.js +1 -0
  678. package/.next/static/chunks/app/api/v1/models/route-ad4e2601ee308c36.js +1 -0
  679. package/.next/static/chunks/app/api/v1/responses/route-ad4e2601ee308c36.js +1 -0
  680. package/.next/static/chunks/app/api/v1/route-ad4e2601ee308c36.js +1 -0
  681. package/.next/static/chunks/app/api/v1beta/models/[...path]/route-ad4e2601ee308c36.js +1 -0
  682. package/.next/static/chunks/app/api/v1beta/models/route-ad4e2601ee308c36.js +1 -0
  683. package/.next/static/chunks/app/api/version/route-ad4e2601ee308c36.js +1 -0
  684. package/.next/static/chunks/app/manifest.webmanifest/route-ad4e2601ee308c36.js +1 -0
  685. package/.next/static/chunks/app/page-ad4e2601ee308c36.js +1 -0
  686. package/.next/static/chunks/next/dist/client/components/builtin/app-error-ad4e2601ee308c36.js +1 -0
  687. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ad4e2601ee308c36.js +1 -0
  688. package/.next/static/chunks/next/dist/client/components/builtin/not-found-ad4e2601ee308c36.js +1 -0
  689. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ad4e2601ee308c36.js +1 -0
  690. package/.next/static/css/b18dfd2c9a0a7b49.css +1 -0
  691. package/package.json +1 -1
  692. package/public/providers/cartesia.png +0 -0
  693. package/public/providers/cerebras.png +0 -0
  694. package/public/providers/cohere.png +0 -0
  695. package/public/providers/comfyui.png +0 -0
  696. package/public/providers/deepseek.png +0 -0
  697. package/public/providers/edge-tts.png +0 -0
  698. package/public/providers/elevenlabs.png +0 -0
  699. package/public/providers/fireworks.png +0 -0
  700. package/public/providers/google-tts.png +0 -0
  701. package/public/providers/groq.png +0 -0
  702. package/public/providers/huggingface.png +0 -0
  703. package/public/providers/local-device.png +0 -0
  704. package/public/providers/mistral.png +0 -0
  705. package/public/providers/nebius.png +0 -0
  706. package/public/providers/perplexity.png +0 -0
  707. package/public/providers/playht.png +0 -0
  708. package/public/providers/sdwebui.png +0 -0
  709. package/public/providers/together.png +0 -0
  710. package/public/providers/xai.png +0 -0
  711. package/.next/standalone/.next/server/chunks/4756.js +0 -1
  712. package/.next/standalone/.next/server/chunks/7491.js +0 -15
  713. package/.next/standalone/.next/server/chunks/8137.js +0 -1
  714. package/.next/standalone/.next/static/Z3suC1MLsVxstppcjgL5J/_buildManifest.js +0 -1
  715. package/.next/standalone/.next/static/chunks/1321-835e375749d721a9.js +0 -1
  716. package/.next/standalone/.next/static/chunks/2589-339af3822207611a.js +0 -3
  717. package/.next/standalone/.next/static/chunks/5507-fb71a0c2e754e069.js +0 -15
  718. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-c0a16328f9656c4a.js +0 -1
  719. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-54e94d84c6afd6e8.js +0 -1
  720. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-a0923a6fbd936614.js +0 -1
  721. package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-1c784308396f8f41.js +0 -1
  722. package/.next/standalone/.next/static/chunks/app/_global-error/page-83e8db56a6cc8694.js +0 -1
  723. package/.next/standalone/.next/static/chunks/app/api/9remote/install/route-83e8db56a6cc8694.js +0 -1
  724. package/.next/standalone/.next/static/chunks/app/api/9remote/start/route-83e8db56a6cc8694.js +0 -1
  725. package/.next/standalone/.next/static/chunks/app/api/9remote/status/route-83e8db56a6cc8694.js +0 -1
  726. package/.next/standalone/.next/static/chunks/app/api/antigravity-ide/route-83e8db56a6cc8694.js +0 -1
  727. package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import/route-83e8db56a6cc8694.js +0 -1
  728. package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-83e8db56a6cc8694.js +0 -1
  729. package/.next/standalone/.next/static/chunks/app/api/auth/login/route-83e8db56a6cc8694.js +0 -1
  730. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-83e8db56a6cc8694.js +0 -1
  731. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-83e8db56a6cc8694.js +0 -1
  732. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-83e8db56a6cc8694.js +0 -1
  733. package/.next/standalone/.next/static/chunks/app/api/cli-tools/claude-settings/route-83e8db56a6cc8694.js +0 -1
  734. package/.next/standalone/.next/static/chunks/app/api/cli-tools/codex-settings/route-83e8db56a6cc8694.js +0 -1
  735. package/.next/standalone/.next/static/chunks/app/api/cli-tools/copilot-settings/route-83e8db56a6cc8694.js +0 -1
  736. package/.next/standalone/.next/static/chunks/app/api/cli-tools/droid-settings/route-83e8db56a6cc8694.js +0 -1
  737. package/.next/standalone/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-83e8db56a6cc8694.js +0 -1
  738. package/.next/standalone/.next/static/chunks/app/api/cli-tools/opencode-settings/route-83e8db56a6cc8694.js +0 -1
  739. package/.next/standalone/.next/static/chunks/app/api/cloud/auth/route-83e8db56a6cc8694.js +0 -1
  740. package/.next/standalone/.next/static/chunks/app/api/cloud/credentials/update/route-83e8db56a6cc8694.js +0 -1
  741. package/.next/standalone/.next/static/chunks/app/api/cloud/model/resolve/route-83e8db56a6cc8694.js +0 -1
  742. package/.next/standalone/.next/static/chunks/app/api/cloud/models/alias/route-83e8db56a6cc8694.js +0 -1
  743. package/.next/standalone/.next/static/chunks/app/api/combos/[id]/route-83e8db56a6cc8694.js +0 -1
  744. package/.next/standalone/.next/static/chunks/app/api/combos/route-83e8db56a6cc8694.js +0 -1
  745. package/.next/standalone/.next/static/chunks/app/api/init/route-83e8db56a6cc8694.js +0 -1
  746. package/.next/standalone/.next/static/chunks/app/api/internal/request-detail/route-83e8db56a6cc8694.js +0 -1
  747. package/.next/standalone/.next/static/chunks/app/api/internal/usage/route-83e8db56a6cc8694.js +0 -1
  748. package/.next/standalone/.next/static/chunks/app/api/keys/[id]/route-83e8db56a6cc8694.js +0 -1
  749. package/.next/standalone/.next/static/chunks/app/api/keys/route-83e8db56a6cc8694.js +0 -1
  750. package/.next/standalone/.next/static/chunks/app/api/locale/route-83e8db56a6cc8694.js +0 -1
  751. package/.next/standalone/.next/static/chunks/app/api/models/alias/route-83e8db56a6cc8694.js +0 -1
  752. package/.next/standalone/.next/static/chunks/app/api/models/availability/route-83e8db56a6cc8694.js +0 -1
  753. package/.next/standalone/.next/static/chunks/app/api/models/route-83e8db56a6cc8694.js +0 -1
  754. package/.next/standalone/.next/static/chunks/app/api/models/test/route-83e8db56a6cc8694.js +0 -1
  755. package/.next/standalone/.next/static/chunks/app/api/oauth/[provider]/[action]/route-83e8db56a6cc8694.js +0 -1
  756. package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/auto-import/route-83e8db56a6cc8694.js +0 -1
  757. package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/import/route-83e8db56a6cc8694.js +0 -1
  758. package/.next/standalone/.next/static/chunks/app/api/oauth/gitlab/pat/route-83e8db56a6cc8694.js +0 -1
  759. package/.next/standalone/.next/static/chunks/app/api/oauth/iflow/cookie/route-83e8db56a6cc8694.js +0 -1
  760. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/auto-import/route-83e8db56a6cc8694.js +0 -1
  761. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/import/route-83e8db56a6cc8694.js +0 -1
  762. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-83e8db56a6cc8694.js +0 -1
  763. package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-83e8db56a6cc8694.js +0 -1
  764. package/.next/standalone/.next/static/chunks/app/api/pricing/route-83e8db56a6cc8694.js +0 -1
  765. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/[id]/route-83e8db56a6cc8694.js +0 -1
  766. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/route-83e8db56a6cc8694.js +0 -1
  767. package/.next/standalone/.next/static/chunks/app/api/provider-nodes/validate/route-83e8db56a6cc8694.js +0 -1
  768. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/models/route-83e8db56a6cc8694.js +0 -1
  769. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/route-83e8db56a6cc8694.js +0 -1
  770. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test/route-83e8db56a6cc8694.js +0 -1
  771. package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test-models/route-83e8db56a6cc8694.js +0 -1
  772. package/.next/standalone/.next/static/chunks/app/api/providers/client/route-83e8db56a6cc8694.js +0 -1
  773. package/.next/standalone/.next/static/chunks/app/api/providers/kilo/free-models/route-83e8db56a6cc8694.js +0 -1
  774. package/.next/standalone/.next/static/chunks/app/api/providers/route-83e8db56a6cc8694.js +0 -1
  775. package/.next/standalone/.next/static/chunks/app/api/providers/test-batch/route-83e8db56a6cc8694.js +0 -1
  776. package/.next/standalone/.next/static/chunks/app/api/providers/validate/route-83e8db56a6cc8694.js +0 -1
  777. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/route-83e8db56a6cc8694.js +0 -1
  778. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/test/route-83e8db56a6cc8694.js +0 -1
  779. package/.next/standalone/.next/static/chunks/app/api/proxy-pools/route-83e8db56a6cc8694.js +0 -1
  780. package/.next/standalone/.next/static/chunks/app/api/settings/database/route-83e8db56a6cc8694.js +0 -1
  781. package/.next/standalone/.next/static/chunks/app/api/settings/proxy-test/route-83e8db56a6cc8694.js +0 -1
  782. package/.next/standalone/.next/static/chunks/app/api/settings/require-login/route-83e8db56a6cc8694.js +0 -1
  783. package/.next/standalone/.next/static/chunks/app/api/settings/route-83e8db56a6cc8694.js +0 -1
  784. package/.next/standalone/.next/static/chunks/app/api/shutdown/route-83e8db56a6cc8694.js +0 -1
  785. package/.next/standalone/.next/static/chunks/app/api/tags/route-83e8db56a6cc8694.js +0 -1
  786. package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/route-83e8db56a6cc8694.js +0 -1
  787. package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/stream/route-83e8db56a6cc8694.js +0 -1
  788. package/.next/standalone/.next/static/chunks/app/api/translator/load/route-83e8db56a6cc8694.js +0 -1
  789. package/.next/standalone/.next/static/chunks/app/api/translator/save/route-83e8db56a6cc8694.js +0 -1
  790. package/.next/standalone/.next/static/chunks/app/api/translator/send/route-83e8db56a6cc8694.js +0 -1
  791. package/.next/standalone/.next/static/chunks/app/api/translator/translate/route-83e8db56a6cc8694.js +0 -1
  792. package/.next/standalone/.next/static/chunks/app/api/tunnel/disable/route-83e8db56a6cc8694.js +0 -1
  793. package/.next/standalone/.next/static/chunks/app/api/tunnel/enable/route-83e8db56a6cc8694.js +0 -1
  794. package/.next/standalone/.next/static/chunks/app/api/tunnel/status/route-83e8db56a6cc8694.js +0 -1
  795. package/.next/standalone/.next/static/chunks/app/api/usage/[connectionId]/route-83e8db56a6cc8694.js +0 -1
  796. package/.next/standalone/.next/static/chunks/app/api/usage/chart/route-83e8db56a6cc8694.js +0 -1
  797. package/.next/standalone/.next/static/chunks/app/api/usage/history/route-83e8db56a6cc8694.js +0 -1
  798. package/.next/standalone/.next/static/chunks/app/api/usage/logs/route-83e8db56a6cc8694.js +0 -1
  799. package/.next/standalone/.next/static/chunks/app/api/usage/providers/route-83e8db56a6cc8694.js +0 -1
  800. package/.next/standalone/.next/static/chunks/app/api/usage/request-details/route-83e8db56a6cc8694.js +0 -1
  801. package/.next/standalone/.next/static/chunks/app/api/usage/request-logs/route-83e8db56a6cc8694.js +0 -1
  802. package/.next/standalone/.next/static/chunks/app/api/usage/stats/route-83e8db56a6cc8694.js +0 -1
  803. package/.next/standalone/.next/static/chunks/app/api/usage/stream/route-83e8db56a6cc8694.js +0 -1
  804. package/.next/standalone/.next/static/chunks/app/api/v1/api/chat/route-83e8db56a6cc8694.js +0 -1
  805. package/.next/standalone/.next/static/chunks/app/api/v1/chat/completions/route-83e8db56a6cc8694.js +0 -1
  806. package/.next/standalone/.next/static/chunks/app/api/v1/embeddings/route-83e8db56a6cc8694.js +0 -1
  807. package/.next/standalone/.next/static/chunks/app/api/v1/messages/count_tokens/route-83e8db56a6cc8694.js +0 -1
  808. package/.next/standalone/.next/static/chunks/app/api/v1/messages/route-83e8db56a6cc8694.js +0 -1
  809. package/.next/standalone/.next/static/chunks/app/api/v1/models/route-83e8db56a6cc8694.js +0 -1
  810. package/.next/standalone/.next/static/chunks/app/api/v1/responses/route-83e8db56a6cc8694.js +0 -1
  811. package/.next/standalone/.next/static/chunks/app/api/v1/route-83e8db56a6cc8694.js +0 -1
  812. package/.next/standalone/.next/static/chunks/app/api/v1beta/models/[...path]/route-83e8db56a6cc8694.js +0 -1
  813. package/.next/standalone/.next/static/chunks/app/api/v1beta/models/route-83e8db56a6cc8694.js +0 -1
  814. package/.next/standalone/.next/static/chunks/app/api/version/route-83e8db56a6cc8694.js +0 -1
  815. package/.next/standalone/.next/static/chunks/app/manifest.webmanifest/route-83e8db56a6cc8694.js +0 -1
  816. package/.next/standalone/.next/static/chunks/app/page-83e8db56a6cc8694.js +0 -1
  817. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-83e8db56a6cc8694.js +0 -1
  818. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-83e8db56a6cc8694.js +0 -1
  819. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-83e8db56a6cc8694.js +0 -1
  820. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-83e8db56a6cc8694.js +0 -1
  821. package/.next/standalone/.next/static/css/906c7e86967ac5b9.css +0 -1
  822. package/.next/static/Z3suC1MLsVxstppcjgL5J/_buildManifest.js +0 -1
  823. package/.next/static/chunks/1321-835e375749d721a9.js +0 -1
  824. package/.next/static/chunks/2589-339af3822207611a.js +0 -3
  825. package/.next/static/chunks/5507-fb71a0c2e754e069.js +0 -15
  826. package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-c0a16328f9656c4a.js +0 -1
  827. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-54e94d84c6afd6e8.js +0 -1
  828. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-a0923a6fbd936614.js +0 -1
  829. package/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-1c784308396f8f41.js +0 -1
  830. package/.next/static/chunks/app/_global-error/page-83e8db56a6cc8694.js +0 -1
  831. package/.next/static/chunks/app/api/9remote/install/route-83e8db56a6cc8694.js +0 -1
  832. package/.next/static/chunks/app/api/9remote/start/route-83e8db56a6cc8694.js +0 -1
  833. package/.next/static/chunks/app/api/9remote/status/route-83e8db56a6cc8694.js +0 -1
  834. package/.next/static/chunks/app/api/antigravity-ide/route-83e8db56a6cc8694.js +0 -1
  835. package/.next/static/chunks/app/api/antigravity-tools/import/route-83e8db56a6cc8694.js +0 -1
  836. package/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-83e8db56a6cc8694.js +0 -1
  837. package/.next/static/chunks/app/api/auth/login/route-83e8db56a6cc8694.js +0 -1
  838. package/.next/static/chunks/app/api/auth/logout/route-83e8db56a6cc8694.js +0 -1
  839. package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-83e8db56a6cc8694.js +0 -1
  840. package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-83e8db56a6cc8694.js +0 -1
  841. package/.next/static/chunks/app/api/cli-tools/claude-settings/route-83e8db56a6cc8694.js +0 -1
  842. package/.next/static/chunks/app/api/cli-tools/codex-settings/route-83e8db56a6cc8694.js +0 -1
  843. package/.next/static/chunks/app/api/cli-tools/copilot-settings/route-83e8db56a6cc8694.js +0 -1
  844. package/.next/static/chunks/app/api/cli-tools/droid-settings/route-83e8db56a6cc8694.js +0 -1
  845. package/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-83e8db56a6cc8694.js +0 -1
  846. package/.next/static/chunks/app/api/cli-tools/opencode-settings/route-83e8db56a6cc8694.js +0 -1
  847. package/.next/static/chunks/app/api/cloud/auth/route-83e8db56a6cc8694.js +0 -1
  848. package/.next/static/chunks/app/api/cloud/credentials/update/route-83e8db56a6cc8694.js +0 -1
  849. package/.next/static/chunks/app/api/cloud/model/resolve/route-83e8db56a6cc8694.js +0 -1
  850. package/.next/static/chunks/app/api/cloud/models/alias/route-83e8db56a6cc8694.js +0 -1
  851. package/.next/static/chunks/app/api/combos/[id]/route-83e8db56a6cc8694.js +0 -1
  852. package/.next/static/chunks/app/api/combos/route-83e8db56a6cc8694.js +0 -1
  853. package/.next/static/chunks/app/api/init/route-83e8db56a6cc8694.js +0 -1
  854. package/.next/static/chunks/app/api/internal/request-detail/route-83e8db56a6cc8694.js +0 -1
  855. package/.next/static/chunks/app/api/internal/usage/route-83e8db56a6cc8694.js +0 -1
  856. package/.next/static/chunks/app/api/keys/[id]/route-83e8db56a6cc8694.js +0 -1
  857. package/.next/static/chunks/app/api/keys/route-83e8db56a6cc8694.js +0 -1
  858. package/.next/static/chunks/app/api/locale/route-83e8db56a6cc8694.js +0 -1
  859. package/.next/static/chunks/app/api/models/alias/route-83e8db56a6cc8694.js +0 -1
  860. package/.next/static/chunks/app/api/models/availability/route-83e8db56a6cc8694.js +0 -1
  861. package/.next/static/chunks/app/api/models/route-83e8db56a6cc8694.js +0 -1
  862. package/.next/static/chunks/app/api/models/test/route-83e8db56a6cc8694.js +0 -1
  863. package/.next/static/chunks/app/api/oauth/[provider]/[action]/route-83e8db56a6cc8694.js +0 -1
  864. package/.next/static/chunks/app/api/oauth/cursor/auto-import/route-83e8db56a6cc8694.js +0 -1
  865. package/.next/static/chunks/app/api/oauth/cursor/import/route-83e8db56a6cc8694.js +0 -1
  866. package/.next/static/chunks/app/api/oauth/gitlab/pat/route-83e8db56a6cc8694.js +0 -1
  867. package/.next/static/chunks/app/api/oauth/iflow/cookie/route-83e8db56a6cc8694.js +0 -1
  868. package/.next/static/chunks/app/api/oauth/kiro/auto-import/route-83e8db56a6cc8694.js +0 -1
  869. package/.next/static/chunks/app/api/oauth/kiro/import/route-83e8db56a6cc8694.js +0 -1
  870. package/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-83e8db56a6cc8694.js +0 -1
  871. package/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-83e8db56a6cc8694.js +0 -1
  872. package/.next/static/chunks/app/api/pricing/route-83e8db56a6cc8694.js +0 -1
  873. package/.next/static/chunks/app/api/provider-nodes/[id]/route-83e8db56a6cc8694.js +0 -1
  874. package/.next/static/chunks/app/api/provider-nodes/route-83e8db56a6cc8694.js +0 -1
  875. package/.next/static/chunks/app/api/provider-nodes/validate/route-83e8db56a6cc8694.js +0 -1
  876. package/.next/static/chunks/app/api/providers/[id]/models/route-83e8db56a6cc8694.js +0 -1
  877. package/.next/static/chunks/app/api/providers/[id]/route-83e8db56a6cc8694.js +0 -1
  878. package/.next/static/chunks/app/api/providers/[id]/test/route-83e8db56a6cc8694.js +0 -1
  879. package/.next/static/chunks/app/api/providers/[id]/test-models/route-83e8db56a6cc8694.js +0 -1
  880. package/.next/static/chunks/app/api/providers/client/route-83e8db56a6cc8694.js +0 -1
  881. package/.next/static/chunks/app/api/providers/kilo/free-models/route-83e8db56a6cc8694.js +0 -1
  882. package/.next/static/chunks/app/api/providers/route-83e8db56a6cc8694.js +0 -1
  883. package/.next/static/chunks/app/api/providers/test-batch/route-83e8db56a6cc8694.js +0 -1
  884. package/.next/static/chunks/app/api/providers/validate/route-83e8db56a6cc8694.js +0 -1
  885. package/.next/static/chunks/app/api/proxy-pools/[id]/route-83e8db56a6cc8694.js +0 -1
  886. package/.next/static/chunks/app/api/proxy-pools/[id]/test/route-83e8db56a6cc8694.js +0 -1
  887. package/.next/static/chunks/app/api/proxy-pools/route-83e8db56a6cc8694.js +0 -1
  888. package/.next/static/chunks/app/api/settings/database/route-83e8db56a6cc8694.js +0 -1
  889. package/.next/static/chunks/app/api/settings/proxy-test/route-83e8db56a6cc8694.js +0 -1
  890. package/.next/static/chunks/app/api/settings/require-login/route-83e8db56a6cc8694.js +0 -1
  891. package/.next/static/chunks/app/api/settings/route-83e8db56a6cc8694.js +0 -1
  892. package/.next/static/chunks/app/api/shutdown/route-83e8db56a6cc8694.js +0 -1
  893. package/.next/static/chunks/app/api/tags/route-83e8db56a6cc8694.js +0 -1
  894. package/.next/static/chunks/app/api/translator/console-logs/route-83e8db56a6cc8694.js +0 -1
  895. package/.next/static/chunks/app/api/translator/console-logs/stream/route-83e8db56a6cc8694.js +0 -1
  896. package/.next/static/chunks/app/api/translator/load/route-83e8db56a6cc8694.js +0 -1
  897. package/.next/static/chunks/app/api/translator/save/route-83e8db56a6cc8694.js +0 -1
  898. package/.next/static/chunks/app/api/translator/send/route-83e8db56a6cc8694.js +0 -1
  899. package/.next/static/chunks/app/api/translator/translate/route-83e8db56a6cc8694.js +0 -1
  900. package/.next/static/chunks/app/api/tunnel/disable/route-83e8db56a6cc8694.js +0 -1
  901. package/.next/static/chunks/app/api/tunnel/enable/route-83e8db56a6cc8694.js +0 -1
  902. package/.next/static/chunks/app/api/tunnel/status/route-83e8db56a6cc8694.js +0 -1
  903. package/.next/static/chunks/app/api/usage/[connectionId]/route-83e8db56a6cc8694.js +0 -1
  904. package/.next/static/chunks/app/api/usage/chart/route-83e8db56a6cc8694.js +0 -1
  905. package/.next/static/chunks/app/api/usage/history/route-83e8db56a6cc8694.js +0 -1
  906. package/.next/static/chunks/app/api/usage/logs/route-83e8db56a6cc8694.js +0 -1
  907. package/.next/static/chunks/app/api/usage/providers/route-83e8db56a6cc8694.js +0 -1
  908. package/.next/static/chunks/app/api/usage/request-details/route-83e8db56a6cc8694.js +0 -1
  909. package/.next/static/chunks/app/api/usage/request-logs/route-83e8db56a6cc8694.js +0 -1
  910. package/.next/static/chunks/app/api/usage/stats/route-83e8db56a6cc8694.js +0 -1
  911. package/.next/static/chunks/app/api/usage/stream/route-83e8db56a6cc8694.js +0 -1
  912. package/.next/static/chunks/app/api/v1/api/chat/route-83e8db56a6cc8694.js +0 -1
  913. package/.next/static/chunks/app/api/v1/chat/completions/route-83e8db56a6cc8694.js +0 -1
  914. package/.next/static/chunks/app/api/v1/embeddings/route-83e8db56a6cc8694.js +0 -1
  915. package/.next/static/chunks/app/api/v1/messages/count_tokens/route-83e8db56a6cc8694.js +0 -1
  916. package/.next/static/chunks/app/api/v1/messages/route-83e8db56a6cc8694.js +0 -1
  917. package/.next/static/chunks/app/api/v1/models/route-83e8db56a6cc8694.js +0 -1
  918. package/.next/static/chunks/app/api/v1/responses/route-83e8db56a6cc8694.js +0 -1
  919. package/.next/static/chunks/app/api/v1/route-83e8db56a6cc8694.js +0 -1
  920. package/.next/static/chunks/app/api/v1beta/models/[...path]/route-83e8db56a6cc8694.js +0 -1
  921. package/.next/static/chunks/app/api/v1beta/models/route-83e8db56a6cc8694.js +0 -1
  922. package/.next/static/chunks/app/api/version/route-83e8db56a6cc8694.js +0 -1
  923. package/.next/static/chunks/app/manifest.webmanifest/route-83e8db56a6cc8694.js +0 -1
  924. package/.next/static/chunks/app/page-83e8db56a6cc8694.js +0 -1
  925. package/.next/static/chunks/next/dist/client/components/builtin/app-error-83e8db56a6cc8694.js +0 -1
  926. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-83e8db56a6cc8694.js +0 -1
  927. package/.next/static/chunks/next/dist/client/components/builtin/not-found-83e8db56a6cc8694.js +0 -1
  928. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-83e8db56a6cc8694.js +0 -1
  929. package/.next/static/css/906c7e86967ac5b9.css +0 -1
  930. /package/.next/standalone/.next/static/{Z3suC1MLsVxstppcjgL5J → _6iT5puM28i82au_Z-Hj5}/_ssgManifest.js +0 -0
  931. /package/.next/static/{Z3suC1MLsVxstppcjgL5J → _6iT5puM28i82au_Z-Hj5}/_ssgManifest.js +0 -0
@@ -1,15 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5507],{3176:(e,t,s)=>{s.d(t,{Tk:()=>o,Ah:()=>d,a7:()=>u,ZM:()=>x,tA:()=>g,kn:()=>f,yZ:()=>m,qO:()=>p,xm:()=>k});var a=s(95155),r=s(12115),l=s(35497),i=s(5772);let n="https://9router.com";function o({tool:e,isExpanded:t,onToggle:s,activeProviders:d,modelMappings:c,onModelMappingChange:x,baseUrl:m,hasActiveProviders:u,apiKeys:p,cloudEnabled:h,initialStatus:g}){let f,y,b,[j,N]=(0,r.useState)(g||null),[v,w]=(0,r.useState)(!1),[k,C]=(0,r.useState)(!1),[S,A]=(0,r.useState)(!1),[_,E]=(0,r.useState)(null),[T,O]=(0,r.useState)(!1),[M,P]=(0,r.useState)(!1),[$,I]=(0,r.useState)(null),[R,D]=(0,r.useState)(""),[U,K]=(0,r.useState)({}),[L,F]=(0,r.useState)(!1),[z,q]=(0,r.useState)(""),[H,B]=(0,r.useState)(!1),J=(0,r.useRef)(!1),W=(()=>{if(!j?.installed)return null;let e=j.settings?.env?.ANTHROPIC_BASE_URL;if(!e)return"not_configured";let t=e.includes("localhost")||e.includes("127.0.0.1"),s=h&&n&&e.startsWith(n),a=m&&e.startsWith(m);return t||s||a?"configured":"other"})();(0,r.useEffect)(()=>{p?.length>0&&!R&&D(p[0].key)},[p,R]),(0,r.useEffect)(()=>{g&&N(g)},[g]),(0,r.useEffect)(()=>{t&&!j&&(Y(),Z()),t&&Z()},[t]),(0,r.useEffect)(()=>{fetch("/api/settings").then(e=>e.json()).then(e=>{B(!!e.ccFilterNaming)}).catch(()=>{})},[]);let G=async e=>{let t=e.target.checked;B(t),await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({ccFilterNaming:t})}).catch(()=>{})},Z=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&K(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,r.useEffect)(()=>{if(j?.installed&&!J.current){J.current=!0;let t=j.settings?.env||{};e.defaultModels.forEach(e=>{if(e.envKey){let s=t[e.envKey]||e.defaultValue||"";s&&x(e.alias,s)}});let s=t.ANTHROPIC_AUTH_TOKEN;s&&p?.some(e=>e.key===s)&&D(s)}},[j,p,e.defaultModels,x]);let Y=async()=>{w(!0);try{let e=await fetch("/api/cli-tools/claude-settings"),t=await e.json();N(t)}catch(e){N({installed:!1,error:e.message})}finally{w(!1)}},V=()=>{let e=z||m;return e.endsWith("/v1")?e:`${e}/v1`},Q=async()=>{C(!0),E(null);try{let t={ANTHROPIC_BASE_URL:V()},s=R?.trim()||(p?.length>0?p[0].key:null)||(h?null:"sk_9router");s&&(t.ANTHROPIC_AUTH_TOKEN=s),e.defaultModels.forEach(e=>{let s=c[e.alias];s&&e.envKey&&(t[e.envKey]=s)});let a=await fetch("/api/cli-tools/claude-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({env:t})}),r=await a.json();a.ok?(E({type:"success",text:"Settings applied successfully!"}),N(e=>({...e,hasBackup:!0,settings:{...e?.settings,env:t}}))):E({type:"error",text:r.error||"Failed to apply settings"})}catch(e){E({type:"error",text:e.message})}finally{C(!1)}},X=async()=>{A(!0),E(null);try{let t=await fetch("/api/cli-tools/claude-settings",{method:"DELETE"}),s=await t.json();t.ok?(E({type:"success",text:"Settings reset successfully!"}),e.defaultModels.forEach(e=>x(e.alias,e.defaultValue||"")),D("")):E({type:"error",text:s.error||"Failed to reset settings"})}catch(e){E({type:"error",text:e.message})}finally{A(!1)}};return(0,a.jsxs)(l.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,a.jsx)(i.default,{src:"/providers/claude.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===W&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===W&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===W&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,a.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[v&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,a.jsx)("span",{children:"Checking Claude CLI..."})]}),!v&&j&&!j.installed&&(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Claude CLI not installed"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Claude CLI to use this feature."})]}),(0,a.jsxs)(l.$n,{variant:"outline",size:"sm",onClick:()=>O(!T),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:T?"expand_less":"help"}),T?"Hide":"How to Install"]})]}),T&&(0,a.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,a.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,a.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,a.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @anthropic-ai/claude-code"})]}),(0,a.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,a.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"claude"})," to verify."]})]})]})]}),!v&&j?.installed&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[j?.settings?.env?.ANTHROPIC_BASE_URL&&(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:j.settings.env.ANTHROPIC_BASE_URL})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:(f=z||m).endsWith("/v1")?f:`${f}/v1`,onChange:e=>q(e.target.value),placeholder:"https://.../v1",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),z&&z!==m&&(0,a.jsx)("button",{onClick:()=>q(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),p.length>0?(0,a.jsx)("select",{value:R,onChange:e=>D(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:p.map(e=>(0,a.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,a.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:h?"No API keys - Create one in Keys page":"sk_9router (default)"})]}),e.defaultModels.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:e.name}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:c[e.alias]||"",onChange:t=>x(e.alias,t.target.value),placeholder:"provider/model-id",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,a.jsx)("button",{onClick:()=>{I(e.alias),P(!0)},disabled:!u,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${u?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),c[e.alias]&&(0,a.jsx)("button",{onClick:()=>x(e.alias,""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.alias)),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Filter naming"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[(0,a.jsx)("input",{type:"checkbox",checked:H,onChange:G,className:"w-3.5 h-3.5 accent-primary cursor-pointer"}),(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"Filter naming requests"})]}),(0,a.jsx)(l.m_,{text:"Intercepts Claude Code's topic-naming requests and returns a fake response locally, saving API tokens.",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px] cursor-help",children:"info"})})]})]}),_&&(0,a.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===_.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===_.type?"check_circle":"error"}),(0,a.jsx)("span",{children:_.text})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)(l.$n,{variant:"primary",size:"sm",onClick:Q,disabled:!u,loading:k,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,a.jsxs)(l.$n,{variant:"outline",size:"sm",onClick:X,disabled:!j?.has9Router,loading:S,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,a.jsxs)(l.$n,{variant:"ghost",size:"sm",onClick:()=>F(!0),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,a.jsx)(l.rq,{isOpen:M,onClose:()=>P(!1),onSelect:e=>{$&&x($,e.value)},selectedModel:$?c[$]:null,activeProviders:d,modelAliases:U,title:`Select model for ${$}`}),(0,a.jsx)(l.uR,{isOpen:L,onClose:()=>F(!1),title:"Claude CLI - Manual Configuration",configs:(y=R&&R.trim()?R:h?"<API_KEY_FROM_DASHBOARD>":"sk_9router",b={ANTHROPIC_BASE_URL:V(),ANTHROPIC_AUTH_TOKEN:y},e.defaultModels.forEach(e=>{let t=c[e.alias];t&&e.envKey&&(b[e.envKey]=t)}),[{filename:"~/.claude/settings.json",content:JSON.stringify({env:b},null,2)}])})]})}function d({tool:e,isExpanded:t,onToggle:s,baseUrl:n,apiKeys:o,activeProviders:c,cloudEnabled:x,initialStatus:m}){let u,p,h,[g,f]=(0,r.useState)(m||null),[y,b]=(0,r.useState)(!1),[j,N]=(0,r.useState)(!1),[v,w]=(0,r.useState)(!1),[k,C]=(0,r.useState)(null),[S,A]=(0,r.useState)(!1),[_,E]=(0,r.useState)(""),[T,O]=(0,r.useState)(""),[M,P]=(0,r.useState)(!1),[$,I]=(0,r.useState)({}),[R,D]=(0,r.useState)(!1),[U,K]=(0,r.useState)("");(0,r.useEffect)(()=>{o?.length>0&&!_&&E(o[0].key)},[o,_]),(0,r.useEffect)(()=>{m&&f(m)},[m]),(0,r.useEffect)(()=>{t&&!g&&(q(),L()),t&&L()},[t]);let L=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&I(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,r.useEffect)(()=>{if(g?.config){let e=g.config.match(/^model\s*=\s*"([^"]+)"/m);e&&O(e[1])}},[g]);let F=g?.installed?g.config?g.config.includes(n)||g.config.includes("localhost")||g.config.includes("127.0.0.1")?"configured":"other":"not_configured":null,z=()=>{let e=U||`${n}/v1`;return e.endsWith("/v1")?e:`${e}/v1`},q=async()=>{b(!0);try{let e=await fetch("/api/cli-tools/codex-settings"),t=await e.json();f(t)}catch(e){f({installed:!1,error:e.message})}finally{b(!1)}},H=async()=>{N(!0),C(null);try{let e=_&&_.trim()||x?_:"sk_9router",t=await fetch("/api/cli-tools/codex-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:z(),apiKey:e,model:T})}),s=await t.json();t.ok?(C({type:"success",text:"Settings applied successfully!"}),q()):C({type:"error",text:s.error||"Failed to apply settings"})}catch(e){C({type:"error",text:e.message})}finally{N(!1)}},B=async()=>{w(!0),C(null);try{let e=await fetch("/api/cli-tools/codex-settings",{method:"DELETE"}),t=await e.json();e.ok?(C({type:"success",text:"Settings reset successfully!"}),O(""),q()):C({type:"error",text:t.error||"Failed to reset settings"})}catch(e){C({type:"error",text:e.message})}finally{w(!1)}};return(0,a.jsxs)(l.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,a.jsx)(i.default,{src:"/providers/codex.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===F&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===F&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===F&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,a.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[y&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,a.jsx)("span",{children:"Checking Codex CLI..."})]}),!y&&g&&!g.installed&&(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Codex CLI not installed"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Codex CLI to use auto-apply feature."})]}),(0,a.jsxs)(l.$n,{variant:"outline",size:"sm",onClick:()=>A(!S),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:S?"expand_less":"help"}),S?"Hide":"How to Install"]})]}),S&&(0,a.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,a.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,a.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,a.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @openai/codex"})]}),(0,a.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,a.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"codex"})," to verify."]}),(0,a.jsx)("div",{className:"pt-2 border-t border-border",children:(0,a.jsxs)("p",{className:"text-text-muted text-xs",children:["Codex uses ",(0,a.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"~/.codex/auth.json"})," with ",(0,a.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"OPENAI_API_KEY"}),'. Click "Apply" to auto-configure.']})})]})]})]}),!y&&g?.installed&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[g?.config&&((p=(u=g.config.match(/base_url\s*=\s*"([^"]+)"/))?u[1]:null)?(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:p})]}):null),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:U||`${n}/v1`,onChange:e=>K(e.target.value),placeholder:"https://.../v1",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),U&&U!==`${n}/v1`&&(0,a.jsx)("button",{onClick:()=>K(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),o.length>0?(0,a.jsx)("select",{value:_,onChange:e=>E(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:o.map(e=>(0,a.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,a.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:x?"No API keys - Create one in Keys page":"sk_9router (default)"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Model"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:T,onChange:e=>O(e.target.value),placeholder:"provider/model-id",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,a.jsx)("button",{onClick:()=>P(!0),disabled:!c?.length,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${c?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),T&&(0,a.jsx)("button",{onClick:()=>O(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),k&&(0,a.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===k.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===k.type?"check_circle":"error"}),(0,a.jsx)("span",{children:k.text})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)(l.$n,{variant:"primary",size:"sm",onClick:H,disabled:!_||!T,loading:j,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,a.jsxs)(l.$n,{variant:"outline",size:"sm",onClick:B,disabled:!g.has9Router,loading:v,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,a.jsxs)(l.$n,{variant:"ghost",size:"sm",onClick:()=>D(!0),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,a.jsx)(l.rq,{isOpen:M,onClose:()=>P(!1),onSelect:e=>{O(e.value),P(!1)},selectedModel:T,activeProviders:c,modelAliases:$,title:"Select Model for Codex"}),(0,a.jsx)(l.uR,{isOpen:R,onClose:()=>D(!1),title:"Codex CLI - Manual Configuration",configs:(h=_&&_.trim()?_:x?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.codex/config.toml",content:`# 9Router Configuration for Codex CLI
2
- model = "${T}"
3
- model_provider = "9router"
4
-
5
- [model_providers.9router]
6
- name = "9Router"
7
- base_url = "${z()}"
8
- wire_api = "responses"
9
- `},{filename:"~/.codex/auth.json",content:JSON.stringify({OPENAI_API_KEY:h},null,2)}])})]})}let c="https://9router.com";function x({tool:e,isExpanded:t,onToggle:s,baseUrl:n,hasActiveProviders:o,apiKeys:d,activeProviders:m,cloudEnabled:u,initialStatus:p}){let h,g,f,y,[b,j]=(0,r.useState)(p||null),[N,v]=(0,r.useState)(!1),[w,k]=(0,r.useState)(!1),[C,S]=(0,r.useState)(!1),[A,_]=(0,r.useState)(null),[E,T]=(0,r.useState)(""),[O,M]=(0,r.useState)(""),[P,$]=(0,r.useState)(!1),[I,R]=(0,r.useState)({}),[D,U]=(0,r.useState)(!1),[K,L]=(0,r.useState)(""),F=(0,r.useRef)(!1),z=(()=>{if(!b?.installed)return null;let e=b.settings?.customModels?.find(e=>"custom:9Router-0"===e.id);if(!e)return"not_configured";let t=e.baseUrl?.includes("localhost")||e.baseUrl?.includes("127.0.0.1"),s=u&&c&&e.baseUrl?.startsWith(c),a=n&&e.baseUrl?.startsWith(n);return t||s||a?"configured":"other"})();(0,r.useEffect)(()=>{d?.length>0&&!E&&T(d[0].key)},[d,E]),(0,r.useEffect)(()=>{p&&j(p)},[p]),(0,r.useEffect)(()=>{t&&!b&&(H(),q()),t&&q()},[t]);let q=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&R(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,r.useEffect)(()=>{if(b?.installed&&!F.current){F.current=!0;let e=b.settings?.customModels?.find(e=>"custom:9Router-0"===e.id);e&&(e.model&&M(e.model),e.apiKey&&d?.some(t=>t.key===e.apiKey)&&T(e.apiKey))}},[b,d]);let H=async()=>{v(!0);try{let e=await fetch("/api/cli-tools/droid-settings"),t=await e.json();j(t)}catch(e){j({installed:!1,error:e.message})}finally{v(!1)}},B=()=>{let e=K||n;return e.endsWith("/v1")?e:`${e}/v1`},J=async()=>{k(!0),_(null);try{let e=E?.trim()||(d?.length>0?d[0].key:null)||(u?null:"sk_9router"),t=await fetch("/api/cli-tools/droid-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:B(),apiKey:e,model:O})}),s=await t.json();t.ok?(_({type:"success",text:"Settings applied successfully!"}),H()):_({type:"error",text:s.error||"Failed to apply settings"})}catch(e){_({type:"error",text:e.message})}finally{k(!1)}},W=async()=>{S(!0),_(null);try{let e=await fetch("/api/cli-tools/droid-settings",{method:"DELETE"}),t=await e.json();e.ok?(_({type:"success",text:"Settings reset successfully!"}),M(""),T(""),H()):_({type:"error",text:t.error||"Failed to reset settings"})}catch(e){_({type:"error",text:e.message})}finally{S(!1)}};return(0,a.jsxs)(l.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,a.jsx)(i.default,{src:"/providers/droid.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===z&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===z&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===z&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,a.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[N&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,a.jsx)("span",{children:"Checking Factory Droid CLI..."})]}),!N&&b&&!b.installed&&(0,a.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Factory Droid CLI not installed"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Factory Droid CLI to use this feature."})]})]}),!N&&b?.installed&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[b?.settings?.customModels?.find(e=>"custom:9Router-0"===e.id)?.baseUrl&&(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:b.settings.customModels.find(e=>"custom:9Router-0"===e.id).baseUrl})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:(h=K||n).endsWith("/v1")?h:`${h}/v1`,onChange:e=>L(e.target.value),placeholder:"https://.../v1",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),K&&K!==n&&(0,a.jsx)("button",{onClick:()=>L(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),d.length>0?(0,a.jsx)("select",{value:E,onChange:e=>T(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:d.map(e=>(0,a.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,a.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:u?"No API keys - Create one in Keys page":"sk_9router (default)"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Model"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:O,onChange:e=>M(e.target.value),placeholder:"provider/model-id",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,a.jsx)("button",{onClick:()=>$(!0),disabled:!o,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${o?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),O&&(0,a.jsx)("button",{onClick:()=>M(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),A&&(0,a.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===A.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===A.type?"check_circle":"error"}),(0,a.jsx)("span",{children:A.text})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)(l.$n,{variant:"primary",size:"sm",onClick:J,disabled:!O,loading:w,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,a.jsxs)(l.$n,{variant:"outline",size:"sm",onClick:W,disabled:!b?.has9Router,loading:C,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,a.jsxs)(l.$n,{variant:"ghost",size:"sm",onClick:()=>U(!0),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,a.jsx)(l.rq,{isOpen:P,onClose:()=>$(!1),onSelect:e=>{M(e.value),$(!1)},selectedModel:O,activeProviders:m,modelAliases:I,title:"Select Model for Factory Droid"}),(0,a.jsx)(l.uR,{isOpen:D,onClose:()=>U(!1),title:"Factory Droid - Manual Configuration",configs:(g=E&&E.trim()?E:u?"<API_KEY_FROM_DASHBOARD>":"sk_9router",f={customModels:[{model:O||"provider/model-id",id:"custom:9Router-0",index:0,baseUrl:B(),apiKey:g,displayName:O||"provider/model-id",maxOutputTokens:131072,noImageSupport:!1,provider:"openai"}]},y="u">typeof navigator&&navigator.platform,[{filename:y?.toLowerCase().includes("win")?"%USERPROFILE%\\.factory\\settings.json":"~/.factory/settings.json",content:JSON.stringify(f,null,2)}])})]})}function m({tool:e,isExpanded:t,onToggle:s,baseUrl:n,hasActiveProviders:o,apiKeys:d,activeProviders:c,cloudEnabled:x,initialStatus:u}){let p,h,[g,f]=(0,r.useState)(u||null),[y,b]=(0,r.useState)(!1),[j,N]=(0,r.useState)(!1),[v,w]=(0,r.useState)(!1),[k,C]=(0,r.useState)(null),[S,A]=(0,r.useState)(""),[_,E]=(0,r.useState)(""),[T,O]=(0,r.useState)({}),[M,P]=(0,r.useState)(null),[$,I]=(0,r.useState)(!1),[R,D]=(0,r.useState)({}),[U,K]=(0,r.useState)(!1),[L,F]=(0,r.useState)(""),z=(0,r.useRef)(!1),q=(()=>{if(!g?.installed)return null;let e=g.settings?.models?.providers?.["9router"];if(!e)return"not_configured";let t=e.baseUrl?.includes("localhost")||e.baseUrl?.includes("127.0.0.1")||e.baseUrl?.includes("0.0.0.0"),s=n&&e.baseUrl?.startsWith(n);return t||s?"configured":"other"})();(0,r.useEffect)(()=>{d?.length>0&&!S&&A(d[0].key)},[d,S]),(0,r.useEffect)(()=>{u&&f(u)},[u]),(0,r.useEffect)(()=>{t&&!g&&(B(),H()),t&&H()},[t]);let H=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&D(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,r.useEffect)(()=>{if(g?.installed&&!z.current){z.current=!0;let e=g.settings?.models?.providers?.["9router"];if(e){let t=g.settings?.agents?.defaults?.model?.primary;t&&E(t.replace("9router/","")),e.apiKey&&d?.some(t=>t.key===e.apiKey)&&A(e.apiKey)}let t=g.agents||[],s={};t.forEach(e=>{e.currentModel&&(s[e.id]=e.currentModel)}),O(s)}},[g,d]);let B=async()=>{b(!0);try{let e=await fetch("/api/cli-tools/openclaw-settings"),t=await e.json();f(t)}catch(e){f({installed:!1,error:e.message})}finally{b(!1)}},J=()=>window.location.origin.replace("://localhost","://127.0.0.1"),W=()=>{let e=L||J();return e.endsWith("/v1")?e:`${e}/v1`},G=async()=>{N(!0),C(null);try{let e=S?.trim()||(d?.length>0?d[0].key:null)||(x?null:"sk_9router"),t=await fetch("/api/cli-tools/openclaw-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:W(),apiKey:e,model:_,agentModels:T})}),s=await t.json();t.ok?(C({type:"success",text:"Settings applied successfully!"}),B()):C({type:"error",text:s.error||"Failed to apply settings"})}catch(e){C({type:"error",text:e.message})}finally{N(!1)}},Z=async()=>{w(!0),C(null);try{let e=await fetch("/api/cli-tools/openclaw-settings",{method:"DELETE"}),t=await e.json();e.ok?(C({type:"success",text:"Settings reset successfully!"}),E(""),A(""),B()):C({type:"error",text:t.error||"Failed to reset settings"})}catch(e){C({type:"error",text:e.message})}finally{w(!1)}};return(0,a.jsxs)(l.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,a.jsx)(i.default,{src:"/providers/openclaw.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===q&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===q&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===q&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,a.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[y&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,a.jsx)("span",{children:"Checking Open Claw CLI..."})]}),!y&&g&&!g.installed&&(0,a.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Open Claw CLI not installed"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Open Claw CLI to use this feature."})]})]}),!y&&g?.installed&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[g?.settings?.models?.providers?.["9router"]?.baseUrl&&(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:g.settings.models.providers["9router"].baseUrl})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:(p=L||J()).endsWith("/v1")?p:`${p}/v1`,onChange:e=>F(e.target.value),placeholder:"https://.../v1",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),L&&L!==n&&(0,a.jsx)("button",{onClick:()=>F(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),d.length>0?(0,a.jsx)("select",{value:S,onChange:e=>A(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:d.map(e=>(0,a.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,a.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:x?"No API keys - Create one in Keys page":"sk_9router (default)"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Default Model"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:_,onChange:e=>E(e.target.value),placeholder:"provider/model-id",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,a.jsx)("button",{onClick:()=>{P(null),I(!0)},disabled:!o,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${o?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"}),_&&(0,a.jsx)("button",{onClick:()=>E(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(g.agents||[]).filter(e=>e.agentDir).map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 pl-4",children:[(0,a.jsxs)("span",{className:"w-32 shrink-0 text-xs text-primary text-right truncate",title:e.name||e.id,children:["Agent ",e.name||e.id]}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:T[e.id]||"",onChange:t=>O(s=>({...s,[e.id]:t.target.value})),placeholder:`default (${_||"provider/model-id"})`,className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,a.jsx)("button",{onClick:()=>{P(e.id),I(!0)},disabled:!o,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${o?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"}),T[e.id]&&(0,a.jsx)("button",{onClick:()=>O(t=>({...t,[e.id]:""})),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.id))]}),k&&(0,a.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===k.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===k.type?"check_circle":"error"}),(0,a.jsx)("span",{children:k.text})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)(l.$n,{variant:"primary",size:"sm",onClick:G,disabled:!_,loading:j,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,a.jsxs)(l.$n,{variant:"outline",size:"sm",onClick:Z,disabled:!g?.has9Router,loading:v,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,a.jsxs)(l.$n,{variant:"ghost",size:"sm",onClick:()=>K(!0),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,a.jsx)(l.rq,{isOpen:$,onClose:()=>I(!1),onSelect:e=>{M?(O(t=>({...t,[M]:e.value})),P(null)):E(e.value),I(!1)},selectedModel:_,activeProviders:c,modelAliases:R,title:"Select Model for Open Claw"}),(0,a.jsx)(l.uR,{isOpen:U,onClose:()=>K(!1),title:"Open Claw - Manual Configuration",configs:(h=S&&S.trim()?S:x?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.openclaw/openclaw.json",content:JSON.stringify({agents:{defaults:{model:{primary:`9router/${_||"provider/model-id"}`}}},models:{providers:{"9router":{baseUrl:W(),apiKey:h,api:"openai-completions",models:[{id:_||"provider/model-id",name:(_||"provider/model-id").split("/").pop()}]}}}},null,2)}])})]})}function u({toolId:e,tool:t,isExpanded:s,onToggle:n,baseUrl:o,apiKeys:d,activeProviders:c=[],cloudEnabled:x=!1,tunnelEnabled:m=!1}){let[p,h]=(0,r.useState)(null),[g,f]=(0,r.useState)(!1),[y,b]=(0,r.useState)(""),[j,N]=(0,r.useState)(()=>d?.length>0?d[0].key:""),v=e=>{let t=j&&j.trim()?j:x?"your-api-key":"sk_9router",s=o||"http://localhost:20128",a=s.endsWith("/v1")?s:`${s}/v1`;return e.replace(/\{\{baseUrl\}\}/g,a).replace(/\{\{apiKey\}\}/g,t).replace(/\{\{model\}\}/g,y||"provider/model-id")},w=async(e,t)=>{await navigator.clipboard.writeText(v(e)),h(t),setTimeout(()=>h(null),2e3)},k=c.length>0,C=()=>(!t.requiresExternalUrl||!!x||!!m)&&(!t.requiresCloud||!!x);return(0,a.jsxs)(l.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:n,children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",children:t.image?(0,a.jsx)(i.default,{src:t.image,alt:t.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}}):t.icon?(0,a.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:t.color},children:t.icon}):(0,a.jsx)(i.default,{src:`/providers/${e}.png`,alt:t.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:t.name}),(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:t.description})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${s?"rotate-180":""}`,children:"expand_more"})]}),s&&(0,a.jsx)("div",{className:"mt-6 pt-6 border-t border-border",children:t.guideSteps?(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[t.notes&&0!==t.notes.length?(0,a.jsx)("div",{className:"flex flex-col gap-2 mb-4",children:t.notes.map((e,t)=>{if("cloudCheck"===e.type&&(x||m))return null;let s="warning"===e.type,r="cloudCheck"===e.type&&!x&&!m,l="bg-blue-500/10 border-blue-500/30",i="text-blue-600 dark:text-blue-400",n="text-blue-500",o="info";return s?(l="bg-yellow-500/10 border-yellow-500/30",i="text-yellow-600 dark:text-yellow-400",n="text-yellow-500",o="warning"):r&&(l="bg-red-500/10 border-red-500/30",i="text-red-600 dark:text-red-400",n="text-red-500",o="error"),(0,a.jsxs)("div",{className:`flex items-start gap-3 p-3 rounded-lg border ${l}`,children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-lg ${n}`,children:o}),(0,a.jsx)("p",{className:`text-sm ${i}`,children:e.text})]},t)})}):null,C()&&t.guideSteps.map(e=>(0,a.jsxs)("div",{className:"flex items-start gap-4",children:[(0,a.jsx)("div",{className:"size-8 rounded-full flex items-center justify-center shrink-0 text-sm font-semibold text-white",style:{backgroundColor:t.color},children:e.step}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"font-medium text-text",children:e.title}),e.desc&&(0,a.jsx)("p",{className:"text-sm text-text-muted mt-0.5",children:e.desc}),"apiKeySelector"===e.type&&(0,a.jsx)("div",{className:"mt-2 flex items-center gap-2",children:d&&d.length>0?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("select",{value:j,onChange:e=>N(e.target.value),className:"flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:d.map(e=>(0,a.jsx)("option",{value:e.key,children:e.key},e.id))}),(0,a.jsx)("button",{onClick:()=>w(j,"apiKey"),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-lg",children:"apiKey"===p?"check":"content_copy"})})]}):(0,a.jsx)("span",{className:"text-sm text-text-muted",children:x?"No API keys - Create one in Keys page":"sk_9router"})}),"modelSelector"===e.type&&(0,a.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,a.jsx)("input",{type:"text",value:y,onChange:e=>b(e.target.value),placeholder:"provider/model-id",className:"flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,a.jsx)("button",{onClick:()=>f(!0),disabled:!k,className:`shrink-0 px-3 py-2 rounded-lg border text-sm transition-colors ${k?"bg-bg-secondary border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),y&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{onClick:()=>w(y,"model"),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-lg",children:"model"===p?"check":"content_copy"})}),(0,a.jsx)("button",{onClick:()=>b(""),className:"p-2 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-lg",children:"close"})})]})]}),e.value&&(0,a.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,a.jsx)("code",{className:"flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm font-mono border border-border truncate",children:v(e.value)}),e.copyable&&(0,a.jsx)("button",{onClick:()=>w(e.value,`${e.step}-${e.title}`),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-lg",children:p===`${e.step}-${e.title}`?"check":"content_copy"})})]})]})]},e.step)),C()&&t.codeBlock&&(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase tracking-wide",children:t.codeBlock.language}),(0,a.jsxs)("button",{onClick:()=>w(t.codeBlock.code,"codeblock"),className:"flex items-center gap-1 px-2 py-1 text-xs bg-bg-secondary hover:bg-bg-tertiary rounded border border-border transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"codeblock"===p?"check":"content_copy"}),"codeblock"===p?"Copied!":"Copy"]})]}),(0,a.jsx)("pre",{className:"p-4 bg-bg-secondary rounded-lg border border-border overflow-x-auto",children:(0,a.jsx)("code",{className:"text-sm font-mono whitespace-pre",children:v(t.codeBlock.code)})})]})]}):(0,a.jsx)("p",{className:"text-text-muted text-sm",children:"Coming soon..."})}),(0,a.jsx)(l.rq,{isOpen:g,onClose:()=>f(!1),onSelect:e=>{b(e.value)},selectedModel:y,activeProviders:c,title:"Select Model"})]})}function p({tool:e,isExpanded:t,onToggle:s,baseUrl:n,apiKeys:o,activeProviders:d,cloudEnabled:c,initialStatus:x}){let m,[u,h]=(0,r.useState)(x||null),[g,f]=(0,r.useState)(!1),[y,b]=(0,r.useState)(!1),[j,N]=(0,r.useState)(!1),[v,w]=(0,r.useState)(null),[k,C]=(0,r.useState)(!1),[S,A]=(0,r.useState)(""),[_,E]=(0,r.useState)(""),[T,O]=(0,r.useState)(!1),[M,P]=(0,r.useState)({}),[$,I]=(0,r.useState)(!1),[R,D]=(0,r.useState)("");(0,r.useEffect)(()=>{o?.length>0&&!S&&A(o[0].key)},[o,S]),(0,r.useEffect)(()=>{x&&h(x)},[x]),(0,r.useEffect)(()=>{t&&!u&&(F(),U()),t&&U()},[t]),(0,r.useEffect)(()=>{u?.config?.model?.startsWith("9router/")&&E(u.config.model.replace("9router/",""))},[u]);let U=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&P(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}},K=(()=>{if(!u?.installed)return null;if(!u.config)return"not_configured";let e=u.config?.provider?.["9router"]?.options?.baseURL||"",t=e.includes("localhost")||e.includes("127.0.0.1");return u.has9Router&&(t||e.includes(n))?"configured":u.has9Router?"other":"not_configured"})(),L=()=>{let e=R||n;return e.endsWith("/v1")?e:`${e}/v1`},F=async()=>{f(!0);try{let e=await fetch("/api/cli-tools/opencode-settings"),t=await e.json();h(t)}catch(e){h({installed:!1,error:e.message})}finally{f(!1)}},z=async()=>{b(!0),w(null);try{let e=S&&S.trim()||c?S:"sk_9router",t=await fetch("/api/cli-tools/opencode-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:L(),apiKey:e,model:_})}),s=await t.json();t.ok?(w({type:"success",text:"Settings applied successfully!"}),F()):w({type:"error",text:s.error||"Failed to apply settings"})}catch(e){w({type:"error",text:e.message})}finally{b(!1)}},q=async()=>{N(!0),w(null);try{let e=await fetch("/api/cli-tools/opencode-settings",{method:"DELETE"}),t=await e.json();e.ok?(w({type:"success",text:"Settings reset successfully!"}),E(""),F()):w({type:"error",text:t.error||"Failed to reset settings"})}catch(e){w({type:"error",text:e.message})}finally{N(!1)}};return(0,a.jsxs)(l.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,a.jsx)(i.default,{src:"/providers/opencode.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===K&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full",children:"Connected"}),"not_configured"===K&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 rounded-full",children:"Not configured"}),"other"===K&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full",children:"Other"})]}),(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,a.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[g&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,a.jsx)("span",{children:"Checking OpenCode CLI..."})]}),!g&&u&&!u.installed&&(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"OpenCode CLI not installed"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Please install OpenCode CLI to use auto-apply feature."})]}),(0,a.jsxs)(l.$n,{variant:"outline",size:"sm",onClick:()=>C(!k),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:k?"expand_less":"help"}),k?"Hide":"How to Install"]})]}),k&&(0,a.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,a.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,a.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux:"}),(0,a.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g opencode-ai"})]}),(0,a.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,a.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"opencode"})," to verify."]})]})]})]}),!g&&u?.installed&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[u?.config?.provider?.["9router"]?.options?.baseURL&&(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:u.config.provider["9router"].options.baseURL})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:R||`${n}/v1`,onChange:e=>D(e.target.value),placeholder:"https://.../v1",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),R&&R!==`${n}/v1`&&(0,a.jsx)("button",{onClick:()=>D(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),o.length>0?(0,a.jsx)("select",{value:S,onChange:e=>A(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:o.map(e=>(0,a.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,a.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:c?"No API keys - Create one in Keys page":"sk_9router (default)"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Model"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:_,onChange:e=>E(e.target.value),placeholder:"provider/model-id",className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,a.jsx)("button",{onClick:()=>O(!0),disabled:!d?.length,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${d?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),_&&(0,a.jsx)("button",{onClick:()=>E(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),v&&(0,a.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===v.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===v.type?"check_circle":"error"}),(0,a.jsx)("span",{children:v.text})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)(l.$n,{variant:"primary",size:"sm",onClick:z,disabled:!_,loading:y,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,a.jsxs)(l.$n,{variant:"outline",size:"sm",onClick:q,disabled:!u.has9Router,loading:j,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,a.jsxs)(l.$n,{variant:"ghost",size:"sm",onClick:()=>I(!0),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,a.jsx)(l.rq,{isOpen:T,onClose:()=>O(!1),onSelect:e=>{E(e.value),O(!1)},selectedModel:_,activeProviders:d,modelAliases:M,title:"Select Model for OpenCode"}),(0,a.jsx)(l.uR,{isOpen:$,onClose:()=>I(!1),title:"OpenCode - Manual Configuration",configs:(m=S&&S.trim()?S:c?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.config/opencode/opencode.json",content:JSON.stringify({provider:{"9router":{npm:"@ai-sdk/openai-compatible",options:{baseURL:L(),apiKey:m},models:{[_||"provider/model-id"]:{name:_||"provider/model-id"}}}},model:`9router/${_||"provider/model-id"}`},null,2)}])})]})}let h="http://localhost:20128";function g({apiKeys:e,cloudEnabled:t,onStatusChange:s}){let[i,n]=(0,r.useState)(null),[o,d]=(0,r.useState)(!1),[c,x]=(0,r.useState)(!1),[m,u]=(0,r.useState)(""),[p,f]=(0,r.useState)(""),[y,b]=(0,r.useState)(null),[j,N]=(0,r.useState)(null),[v,w]=(0,r.useState)(null),[k,C]=(0,r.useState)(h),S="u">typeof navigator&&navigator.userAgent?.includes("Windows"),A=i?.isAdmin!==!1;(0,r.useEffect)(()=>{e?.length>0&&!p&&f(e[0].key)},[e,p]),(0,r.useEffect)(()=>{_()},[]);let _=async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm");if(e.ok){let t=await e.json();n(t),t.mitmRouterBaseUrl&&C(t.mitmRouterBaseUrl),s?.(t)}}catch{n({running:!1,certExists:!1,dnsStatus:{}})}},E=e=>{S||i?.hasCachedPassword?T(e,""):(b(e),x(!0),N(null))},T=async(s,a)=>{d(!0),w(null);try{let r;if("trust-cert"===s)r=await fetch("/api/cli-tools/antigravity-mitm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"trust-cert",sudoPassword:a})});else if("start"===s){let s=p?.trim()||(e?.length>0?e[0].key:null)||(t?null:"sk_9router");r=await fetch("/api/cli-tools/antigravity-mitm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:s,sudoPassword:a,mitmRouterBaseUrl:k.trim()||h})})}else r=await fetch("/api/cli-tools/antigravity-mitm",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:a})});let l=await r.json().catch(()=>({}));if(!r.ok)throw Error(l.error||"MITM action failed");x(!1),u(""),N(null),await _()}catch(t){let e=t?.message||"MITM action failed";w(e),c&&N(e)}finally{d(!1),b(null)}},O=()=>{m?T(y,m):N("Sudo password is required")},M=i?.running;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l.Zp,{padding:"sm",className:"border-primary/20 bg-primary/5",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary text-[20px]",children:"security"}),(0,a.jsx)("span",{className:"font-semibold text-sm text-text-main",children:"MITM Server"}),M?(0,a.jsx)(l.Ex,{variant:"success",size:"sm",children:"Running"}):(0,a.jsx)(l.Ex,{variant:"default",size:"sm",children:"Stopped"})]}),(0,a.jsx)("div",{className:"flex items-center gap-1 text-xs text-text-muted","data-i18n-skip":"true",children:[{label:"Cert",ok:i?.certExists},{label:"Trusted",ok:i?.certTrusted},{label:"Server",ok:M}].map(({label:e,ok:t})=>(0,a.jsxs)("span",{className:`flex items-center gap-0.5 px-1.5 py-0.5 rounded ${t?"text-green-600":"text-text-muted"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:t?"check_circle":"cancel"}),e]},e))})]}),(0,a.jsxs)("div",{className:"px-2 py-2 rounded-lg bg-surface/50 border border-border/50 flex flex-col gap-2",children:[(0,a.jsxs)("p",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,a.jsx)("span",{className:"font-medium text-text-main",children:"Purpose:"})," Use Antigravity IDE & GitHub Copilot → with ANY provider/model from 9Router"]}),(0,a.jsxs)("p",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,a.jsx)("span",{className:"font-medium text-text-main",children:"How it works:"})," Antigravity/Copilot IDE request → DNS redirect to localhost:443 → MITM proxy intercepts → 9Router → response to Antigravity/Copilot"]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"9Router Base URL"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:k,onChange:e=>C(e.target.value),placeholder:h,disabled:M,className:"flex-1 min-w-0 px-2 py-1.5 bg-surface rounded border border-border text-xs text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50 disabled:opacity-50"})]}),!M&&(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),e?.length>0?(0,a.jsx)("select",{value:p,onChange:e=>f(e.target.value),className:"flex-1 min-w-0 px-2 py-1.5 bg-surface rounded text-xs border border-border text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50",children:e.map(e=>(0,a.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,a.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted",children:t?"No API keys — create one in Keys page":"sk_9router (default)"})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 flex-wrap","data-i18n-skip":"true",children:[i?.certExists&&!i?.certTrusted&&(0,a.jsxs)("button",{onClick:()=>E("trust-cert"),disabled:o,className:"px-4 py-1.5 rounded-lg bg-yellow-500/10 border border-yellow-500/30 text-yellow-600 font-medium text-xs flex items-center gap-1.5 hover:bg-yellow-500/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"verified_user"}),"Trust Cert"]}),M?(0,a.jsxs)("button",{onClick:()=>E("stop"),disabled:o,className:"px-4 py-1.5 rounded-lg bg-red-500/10 border border-red-500/30 text-red-500 font-medium text-xs flex items-center gap-1.5 hover:bg-red-500/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop_circle"}),"Stop Server"]}):(0,a.jsxs)("button",{onClick:()=>E("start"),disabled:o||S&&!A,className:"px-4 py-1.5 rounded-lg bg-primary/10 border border-primary/30 text-primary font-medium text-xs flex items-center gap-1.5 hover:bg-primary/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"play_circle"}),"Start Server"]}),M&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Enable DNS per tool below to activate interception"})]}),v&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600 border border-red-500/20",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{children:v})]}),S&&!A&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600 border border-red-500/20",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"shield_lock"}),(0,a.jsx)("span",{children:"Administrator required — restart 9Router as Administrator to use MITM"})]})]})}),c&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,a.jsxs)("div",{className:"bg-surface border border-border rounded-xl p-6 w-full max-w-sm flex flex-col gap-4 shadow-xl",children:[(0,a.jsx)("h3",{className:"font-semibold text-text-main",children:"Sudo Password Required"}),(0,a.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Required for SSL certificate and server startup"})]}),(0,a.jsx)(l.pd,{type:"password",placeholder:"Enter sudo password",value:m,onChange:e=>u(e.target.value),onKeyDown:e=>{"Enter"!==e.key||o||O()}}),j&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{children:j})]}),(0,a.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,a.jsx)(l.$n,{variant:"ghost",size:"sm",onClick:()=>{x(!1),u(""),N(null)},disabled:o,children:"Cancel"}),(0,a.jsx)(l.$n,{variant:"primary",size:"sm",onClick:O,loading:o,children:"Confirm"})]})]})})]})}function f({tool:e,isExpanded:t,onToggle:s,serverRunning:n,dnsActive:o,hasCachedPassword:d,apiKeys:c,activeProviders:x,hasActiveProviders:m,modelAliases:u={},cloudEnabled:p,onDnsChange:h,tokenSwapActive:g=!1}){let[b,j]=(0,r.useState)(!1),[N,v]=(0,r.useState)(null),[w,k]=(0,r.useState)(null),[C,S]=(0,r.useState)(!1),[A,_]=(0,r.useState)(""),[E,T]=(0,r.useState)(null),[O,M]=(0,r.useState)(null),[P,$]=(0,r.useState)({}),[I,R]=(0,r.useState)(!1),[D,U]=(0,r.useState)(null),K="u">typeof navigator&&navigator.userAgent?.includes("Windows"),L=(0,r.useCallback)(async()=>{try{let t=await fetch(`/api/cli-tools/antigravity-mitm/alias?tool=${e.id}`);if(t.ok){let e=await t.json();Object.keys(e.aliases||{}).length>0&&$(e.aliases)}}catch{}},[e.id]);(0,r.useEffect)(()=>{t&&L()},[t,L]);let F=(0,r.useCallback)(async t=>{try{await fetch("/api/cli-tools/antigravity-mitm/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:e.id,mappings:t})})}catch{}},[e.id]),z=(e,t)=>{$(s=>({...s,[e]:t}))},q=()=>{if(!n)return;let e=o?"disable":"enable";K||d?H(e,""):(T(e),S(!0),M(null))},H=async(t,s)=>{j(!0),v(null),k(null);try{let a=await fetch("/api/cli-tools/antigravity-mitm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:e.id,action:t,sudoPassword:s})}),r=await a.json().catch(()=>({}));if(!a.ok)throw Error(r.error||`Failed to ${t} DNS`);"enable"===t&&v(`Restart ${e.name} to apply changes`),S(!1),_(""),h?.(r)}catch(e){k(e.message||`Failed to ${t} DNS`)}finally{j(!1),T(null)}},B=()=>{A?H(E,A):M("Sudo password is required")};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(l.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,a.jsx)(i.default,{src:e.image,alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:e.name}),e.supportsTokenSwap&&(0,a.jsx)("span",{className:"text-[9px] uppercase tracking-wider text-text-muted bg-surface border border-border px-1.5 py-0.5 rounded font-semibold",children:"Mode A"}),n?g?(0,a.jsx)(l.Ex,{variant:"default",size:"sm",children:"Bypassed"}):o?(0,a.jsx)(l.Ex,{variant:"success",size:"sm",children:"Active"}):(0,a.jsx)(l.Ex,{variant:"warning",size:"sm",children:"DNS off"}):(0,a.jsx)(l.Ex,{variant:"default",size:"sm",children:"Server off"})]}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Model routing — remap model IDs in intercepted requests"})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,a.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[g&&(0,a.jsxs)("div",{className:"flex items-start gap-2 px-2 py-2 rounded-lg bg-violet-500/5 border border-violet-500/15",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] text-violet-400 mt-0.5 shrink-0",children:"info"}),(0,a.jsx)("p",{className:"text-[11px] text-violet-400",children:"Token Rotation (Mode B) is active — model routing is currently bypassed. Disable Token Rotation to use model routing."})]}),"antigravity"===e.id&&(0,a.jsx)(y,{}),(0,a.jsxs)("div",{className:"flex flex-col gap-0.5 text-[11px] text-text-muted px-1",children:[(0,a.jsxs)("p",{children:["Toggle DNS to redirect ",e.name," traffic through 9Router via MITM."]}),!o&&(0,a.jsx)("p",{className:"text-amber-600 text-[10px] mt-1",children:"⚠️ Enable DNS to edit model mappings"})]}),e.defaultModels?.length>0&&(0,a.jsx)("div",{className:"flex flex-col gap-2",children:e.defaultModels.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-36 shrink-0 text-xs font-semibold text-text-main text-right",children:e.name}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:P[e.alias]||"",onChange:t=>z(e.alias,t.target.value),onBlur:t=>{var s,a;return s=e.alias,a=t.target.value,void F({...P,[s]:a})},placeholder:"provider/model-id",disabled:!o,className:`flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 ${!o?"opacity-50 cursor-not-allowed":""}`}),(0,a.jsx)("button",{onClick:()=>{U(e.alias),R(!0)},disabled:!m||!o,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 ${m&&o?"bg-surface border-border hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"}),P[e.alias]&&(0,a.jsx)("button",{onClick:()=>{z(e.alias,""),F({...P,[e.alias]:""})},className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.alias))}),e.defaultModels?.length===0&&(0,a.jsx)("p",{className:"text-xs text-text-muted px-1",children:"Model mappings will be available soon."}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 items-start",children:[o?(0,a.jsxs)("button",{onClick:q,disabled:!n||b,className:"px-4 py-1.5 rounded-lg bg-red-500/10 border border-red-500/30 text-red-500 font-medium text-xs flex items-center gap-1.5 hover:bg-red-500/20 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop_circle"}),"Stop DNS"]}):(0,a.jsxs)("button",{onClick:q,disabled:!n||b,className:"px-4 py-1.5 rounded-lg bg-primary/10 border border-primary/30 text-primary font-medium text-xs flex items-center gap-1.5 hover:bg-primary/20 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"play_circle"}),"Start DNS"]}),N&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs text-amber-500",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"warning"}),(0,a.jsx)("span",{children:N})]}),w&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{children:w})]})]})]})]}),C&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,a.jsxs)("div",{className:"bg-surface border border-border rounded-xl p-6 w-full max-w-sm flex flex-col gap-4 shadow-xl",children:[(0,a.jsx)("h3",{className:"font-semibold text-text-main",children:"Sudo Password Required"}),(0,a.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Required to modify /etc/hosts and flush DNS cache"})]}),(0,a.jsx)(l.pd,{type:"password",placeholder:"Enter sudo password",value:A,onChange:e=>_(e.target.value),onKeyDown:e=>{"Enter"!==e.key||b||B()}}),O&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{children:O})]}),(0,a.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,a.jsx)(l.$n,{variant:"ghost",size:"sm",onClick:()=>{S(!1),_(""),M(null)},disabled:b,children:"Cancel"}),(0,a.jsx)(l.$n,{variant:"primary",size:"sm",onClick:B,loading:b,children:"Confirm"})]})]})}),(0,a.jsx)(l.rq,{isOpen:I,onClose:()=>R(!1),onSelect:e=>{if(!D||e.isPlaceholder)return;let t={...P,[D]:e.value};$(t),F(t)},selectedModel:D?P[D]:null,activeProviders:x,modelAliases:u,title:`Select model for ${D}`})]})}function y(){let[e,t]=(0,r.useState)(null),[s,l]=(0,r.useState)(!1),[i,n]=(0,r.useState)(null),o=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/antigravity-ide");e.ok&&t(await e.json())}catch{}},[]);(0,r.useEffect)(()=>{let e=!0;return(async()=>{try{let s=await fetch("/api/antigravity-ide");s.ok&&e&&t(await s.json())}catch{}})(),()=>{e=!1}},[]);let d=async()=>{l(!0),n(null);try{let e=await fetch("/api/antigravity-ide",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"close"})}),t=await e.json();n(t),setTimeout(o,1e3)}catch(e){n({success:!1,error:e.message})}l(!1)};return(0,a.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,a.jsxs)("button",{onClick:d,disabled:s||!e?.running,className:"flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg text-xs font-medium border border-red-500/30 text-red-500 bg-red-500/5 hover:bg-red-500/15 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",title:e?.running?"Close all Antigravity IDE processes":"Antigravity IDE is not running",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px] ${s?"animate-spin":""}`,children:s?"progress_activity":"close"}),s?"Closing…":"Close IDE"]}),e&&(0,a.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-text-muted",children:[(0,a.jsx)("span",{className:`inline-block w-1.5 h-1.5 rounded-full ${!e.installed?"bg-gray-400":e.running?"bg-green-500":"bg-red-400"}`}),e.installed?e.running?"Running":"Stopped":"Not installed"]}),i&&!s&&(0,a.jsxs)("span",{className:`text-[10px] ${i.success?"text-green-500":"text-red-400"}`,children:[i.success?"✓":"✗"," ",i.message||i.error]})]})}var b=s(98500),j=s.n(b);function N(e){if(null==e)return null;let t=String(e).trim();if(!t)return null;let s=t.toLowerCase();return s.includes("ultra")?"Ultra":s.includes("pro")?"Pro":s.includes("free")?"Free":null}["Free","Pro","Ultra"].map(e=>({value:e,label:e}));var v=s(57294);function w(e){if(!e||"string"!=typeof e)return e;let t=e.indexOf("@");if(t<=0||t===e.length-1)return e;let s=e.slice(0,t),a=e.slice(t+1);return 1===s.length?`${s[0]}**@${a}`:2===s.length?`${s[0]}**${s[1]}@${a}`:`${s[0]}**${s[s.length-1]}@${a}`}function k({tool:e,connections:t=[],serverRunning:s,dnsActive:i,onToggle:n,onRefreshConnections:o}){let[d,c]=(0,r.useState)(!1),[x,m]=(0,r.useState)(!1),[u,p]=(0,r.useState)("round-robin"),[h,g]=(0,r.useState)(!1),[f,y]=(0,r.useState)(!1),[b,C]=(0,r.useState)(!1),[S,A]=(0,r.useState)(null),[_,E]=(0,r.useState)(null),[T,O]=(0,r.useState)(!1),[M,P]=(0,r.useState)({}),$=(0,r.useRef)({}),I=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();c(!!t.tokenSwapEnabled),p(t.tokenSwapStrategy||"round-robin"),y(!!t.tokenSwapMaskEmails)}}catch{}},[]);(0,r.useEffect)(()=>{I()},[I]);let R=(0,r.useCallback)(async(t,s=!1)=>{if(!t||0===t.length)return;let a=Date.now(),r=[],l={};if(t.forEach(e=>{let t=$.current[e.id];!s&&t&&a-t.ts<12e4?l[e.id]={quotas:t.data,error:t.error,loading:!1,accountType:t.accountType||null}:r.push(e)}),Object.keys(l).length>0&&P(e=>({...e,...l})),0===r.length)return;let i={};r.forEach(e=>{i[e.id]={quotas:[],error:null,loading:!0}}),P(e=>({...e,...i})),await Promise.all(r.map(async t=>{try{let s=await fetch(`/api/usage/${t.id}`);if(!s.ok){let e=(await s.json().catch(()=>({}))).error||`HTTP ${s.status}`;$.current[t.id]={data:[],error:e,ts:Date.now(),accountType:null},P(s=>({...s,[t.id]:{quotas:[],error:e,loading:!1,accountType:null}}));return}let a=await s.json(),r=(0,v.W_)(e.tokenSwapProvider||"antigravity",a),l=function(e){if(!e)return null;if("string"==typeof e)return N(e);for(let t of[e.accountType,e.plan,e.paidTier?.name,e.subscriptionTier,e.subscription_tier,e.currentTier?.name,e.subscriptionInfo?.paidTier?.name,e.quota?.subscription_tier,e.subscriptionInfo?.currentTier?.name]){let e=N(t);if(e)return e}return null}(a);$.current[t.id]={data:r,error:null,ts:Date.now(),accountType:l},P(e=>({...e,[t.id]:{quotas:r,error:null,loading:!1,accountType:l}}))}catch(s){let e=s.message||"Failed";$.current[t.id]={data:[],error:e,ts:Date.now(),accountType:null},P(s=>({...s,[t.id]:{quotas:[],error:e,loading:!1,accountType:null}}))}}))},[e.tokenSwapProvider]);if(!e?.supportsTokenSwap)return null;let D=async()=>{m(!0);let e=!d;try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tokenSwapEnabled:e})})).ok&&(c(e),n?.(e))}catch{}m(!1)},U=async e=>{if(e!==u&&!h){g(!0);try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tokenSwapStrategy:e})})).ok&&p(e)}catch{}g(!1)}},K=async()=>{if(b)return;C(!0);let e=!f;try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tokenSwapMaskEmails:e})})).ok&&y(e)}catch{}C(!1)},L=t.filter(t=>t.provider===e.tokenSwapProvider),F=L.filter(e=>!1!==e.isActive),z=F.length,q=F.map(e=>e.id).join("|"),H=function(e,t){if(!e||0===e.length)return null;if(1===e.length)return e[0].id;let s=[...e].sort((e,t)=>e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(t.lastUsedAt)-new Date(e.lastUsedAt):-1:1:(e.priority||999)-(t.priority||999));if("sticky"===t)return s[0]?.id||null;let a=[...e].sort((e,t)=>e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(e.lastUsedAt)-new Date(t.lastUsedAt):1:-1:(e.priority||999)-(t.priority||999));return a[0]?.id||null}(F,u);(0,r.useEffect)(()=>{d&&z>0&&R(F)},[d,z,q,R]);let B=s&&i,J=d&&B&&z>0,W=async(e,t)=>{if(e&&!S&&!T&&!_){A(e);try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&await o?.()}catch{}A(null)}},G=async e=>{if(e&&!_&&!T&&!S){E(e);try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({lastUsedAt:null})})).ok&&await o?.()}catch{}E(null)}},Z=async()=>{if(!T&&!_&&!S&&0!==L.length){O(!0);try{await Promise.all(L.map(e=>fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({lastUsedAt:null})}))),await o?.()}catch{}O(!1)}};return(0,a.jsxs)(l.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0 rounded-lg bg-violet-500/10",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-violet-400 text-[18px]",children:"swap_horiz"})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:"Token Rotation"}),(0,a.jsx)("span",{className:"text-[9px] uppercase tracking-wider text-text-muted bg-surface border border-border px-1.5 py-0.5 rounded font-semibold",children:"Mode B"}),J?(0,a.jsx)(l.Ex,{variant:"success",size:"sm",children:"Active"}):d?(0,a.jsx)(l.Ex,{variant:"warning",size:"sm",children:"Enabled"}):(0,a.jsx)(l.Ex,{variant:"default",size:"sm",children:"Off"})]}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Rotate auth tokens across pool accounts to bypass per-account quota"})]})]}),(0,a.jsx)("button",{onClick:D,disabled:x,className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors shrink-0 ${d?"bg-violet-500":"bg-surface-alt border border-border"} ${x?"opacity-50":"cursor-pointer"}`,title:d?"Disable Token Rotation":"Enable Token Rotation",children:(0,a.jsx)("span",{className:`inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform shadow-sm ${d?"translate-x-4":"translate-x-0.5"}`})})]}),d&&(0,a.jsxs)("div",{className:"mt-3 pt-3 border-t border-border/50 flex flex-col gap-3",children:[(0,a.jsxs)("div",{className:"flex items-start gap-2 px-2 py-2 rounded-lg bg-violet-500/5 border border-violet-500/15",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] text-violet-400 mt-0.5 shrink-0",children:"info"}),(0,a.jsxs)("div",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,a.jsx)("p",{children:"Intercepts Antigravity requests → swaps IDE's auth token with a pool account → auto-retries on 429 quota error with next account in pool."}),(0,a.jsx)("p",{className:"mt-1 text-violet-400/80 font-medium",children:"⚠ When active, Model Routing (Mode A) is bypassed."})]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1.5 px-1",children:[(0,a.jsx)("p",{className:"text-[10px] uppercase tracking-wider text-text-muted font-semibold",children:"Rotation Strategy"}),(0,a.jsxs)("div",{className:"flex gap-1.5",children:[(0,a.jsxs)("button",{onClick:()=>U("round-robin"),disabled:h,className:`flex-1 flex flex-col items-center gap-0.5 px-2 py-2 rounded-lg border text-[11px] font-medium transition-colors ${"round-robin"===u?"border-violet-500/50 bg-violet-500/10 text-violet-400":"border-border bg-surface text-text-muted hover:border-border-alt"} disabled:opacity-50`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"autorenew"}),"Round Robin"]}),(0,a.jsxs)("button",{onClick:()=>U("sticky"),disabled:h,className:`flex-1 flex flex-col items-center gap-0.5 px-2 py-2 rounded-lg border text-[11px] font-medium transition-colors ${"sticky"===u?"border-violet-500/50 bg-violet-500/10 text-violet-400":"border-border bg-surface text-text-muted hover:border-border-alt"} disabled:opacity-50`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"push_pin"}),"Sticky"]})]}),(0,a.jsx)("p",{className:"text-[10px] text-text-muted px-0.5",children:"sticky"===u?"Stays on the same account until its quota is exhausted for the requested model, then switches. Optimizes session-level token cache.":"Chooses the least recently used eligible account first. Each successful request updates that account's last-used time."})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1 px-1",children:[(0,a.jsx)("p",{className:"text-[10px] uppercase tracking-wider text-text-muted font-semibold mb-0.5",children:"Prerequisites"}),(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px] ${s?"text-green-500":"text-red-400"}`,children:s?"check_circle":"cancel"}),(0,a.jsx)("span",{className:s?"text-text-main":"text-text-muted",children:"MITM Server"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px] ${i?"text-green-500":"text-red-400"}`,children:i?"check_circle":"cancel"}),(0,a.jsxs)("span",{className:i?"text-text-main":"text-text-muted",children:["DNS redirect",!i&&(0,a.jsx)("span",{className:"text-[10px] text-text-muted ml-1",children:"— enable via Antigravity card above"})]})]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1 px-1",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-0.5",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("p",{className:"text-[10px] uppercase tracking-wider text-text-muted font-semibold",children:"Pool Accounts"}),(0,a.jsx)("span",{className:"text-[10px] text-text-muted",children:L.length>0?`${z}/${L.length} active`:"none"}),z>1&&(0,a.jsx)("span",{className:"text-[9px] text-text-muted bg-surface border border-border px-1 py-0.5 rounded",children:"round-robin"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[z>0&&(0,a.jsx)("button",{onClick:()=>R(F,!0),className:"text-[10px] text-text-muted hover:text-primary flex items-center gap-0.5 transition-colors",title:"Refresh quotas",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"refresh"})}),"round-robin"===u&&L.length>0&&(0,a.jsxs)("button",{onClick:Z,disabled:T||!!_,className:"inline-flex items-center gap-1 rounded-md border border-border bg-surface px-2 py-1 text-[10px] font-medium text-text-main hover:border-border-alt hover:bg-surface-alt disabled:opacity-50 disabled:cursor-not-allowed transition-colors",title:"Clear last-used timestamps for all pool accounts",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"restart_alt"}),"Reset order"]})]})]}),(0,a.jsx)("p",{className:"text-[10px] text-text-muted px-0.5",children:"Round robin uses least-recently-used ordering. Accounts with no usage timestamp are tried first, then older timestamps rotate ahead of newer ones."}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3 px-2 py-2 rounded-lg border border-border bg-surface-alt/40",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("p",{className:"text-[11px] font-medium text-text-main",children:"Mask account emails"}),(0,a.jsxs)("p",{className:"text-[10px] text-text-muted",children:["Hide pool account emails in token swap logs and this panel. Example: ",w("email@gmail.com")]})]}),(0,a.jsx)("button",{onClick:K,disabled:b,className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors shrink-0 ${f?"bg-violet-500":"bg-surface border border-border"} ${b?"opacity-50":"cursor-pointer"}`,title:f?"Disable email masking":"Enable email masking",children:(0,a.jsx)("span",{className:`inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform shadow-sm ${f?"translate-x-4":"translate-x-0.5"}`})})]}),L.length>0?(0,a.jsxs)(a.Fragment,{children:[L.map(e=>{let t=N(M[e.id]?.accountType)||N(e.accountType)||null;return(0,a.jsxs)("div",{className:`rounded-xl border border-border bg-surface-alt/30 px-3 py-2.5 transition-colors ${!1===e.isActive?"opacity-65":"hover:bg-surface-alt/50"}`,children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px] shrink-0 ${!1===e.isActive?"text-text-muted":"text-green-500"}`,children:!1===e.isActive?"pause_circle":"check_circle"}),(0,a.jsx)("span",{className:"text-xs font-medium text-text-main truncate",children:e.email?f?w(e.email):e.email:e.name||e.id.slice(0,16)}),t&&(0,a.jsx)(l.Ex,{variant:"Ultra"===t?"warning":"Pro"===t?"primary":"Free"===t?"info":"default",size:"sm",children:t}),H===e.id&&!1!==e.isActive&&(0,a.jsx)("span",{className:"text-[9px] text-violet-300 bg-violet-500/10 border border-violet-500/20 px-1 py-0.5 rounded shrink-0",children:"next"}),(0,a.jsx)(l.Ex,{variant:!1===e.isActive?"default":"success",size:"sm",children:!1===e.isActive?"disabled":"active"})]}),(0,a.jsxs)("div",{className:"mt-1 flex items-center gap-2 flex-wrap text-[10px] text-text-muted",children:[(0,a.jsxs)("span",{children:["Priority #",e.priority??"-"]}),e.lastUsedAt&&(0,a.jsxs)("span",{children:["Last used ",new Date(e.lastUsedAt).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})]})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-3 shrink-0",children:["round-robin"===u&&(0,a.jsxs)("button",{onClick:()=>G(e.id),disabled:T||S===e.id||_===e.id,className:"inline-flex items-center gap-1 rounded-md border border-border bg-surface px-2 py-1 text-[10px] font-medium text-text-main hover:border-border-alt hover:bg-surface-alt disabled:opacity-50 disabled:cursor-not-allowed transition-colors",title:"Clear this account's last-used timestamp",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"restart_alt"}),_===e.id?"...":"Reset Order"]}),(0,a.jsx)(l.lM,{size:"sm",checked:!1!==e.isActive,disabled:T||_===e.id||S===e.id,onChange:t=>W(e.id,t)})]})]}),(0,a.jsx)("div",{className:"mt-2 pl-6",children:!1===e.isActive?(0,a.jsx)("div",{className:"text-[10px] text-text-muted",children:"Enable this account to include it in token rotation and load quota reset info."}):(e=>{let t=(e=>{let t=M[e];if(!t)return{state:"empty"};if(t.loading)return{state:"loading"};if(t.error)return{state:"error",error:t.error};if(!t.quotas||0===t.quotas.length)return{state:"no-data"};let s=t.quotas.find(e=>e.modelKey?.includes("claude-sonnet-4-6")||e.name?.toLowerCase().includes("opus"))||t.quotas[0];if(!s)return{state:"no-data"};let a=void 0!==s.remainingPercentage?Math.round(s.remainingPercentage):s.total>0?Math.round((s.total-s.used)/s.total*100):null,r=(s.resetAt&&new Date(s.resetAt).getTime()>Date.now()?s.resetAt:null)||[...t.quotas].map(e=>e.resetAt).filter(Boolean).filter(e=>new Date(e).getTime()>Date.now()).sort((e,t)=>new Date(e).getTime()-new Date(t).getTime())[0]||null;return{state:null===a?"no-data":"ready",highlight:s,accountType:t.accountType||null,pct:a,nextResetAt:r,resetCountdown:(0,v.mO)(r),resetDisplay:(0,v.sQ)(r)}})(e);if(!t||"empty"===t.state)return(0,a.jsx)("span",{className:"text-[10px] text-text-muted",children:"Enable to load quota data"});if("loading"===t.state)return(0,a.jsx)("span",{className:"text-[10px] text-text-muted animate-pulse",children:"Loading quota…"});if("error"===t.state)return(0,a.jsx)("span",{className:"text-[10px] text-red-400",title:t.error,children:"Quota unavailable"});if("no-data"===t.state)return(0,a.jsx)("span",{className:"text-[10px] text-text-muted",children:"No quota data"});let{highlight:s,pct:r,resetCountdown:l,resetDisplay:i}=t;return(0,a.jsxs)("div",{className:"flex flex-col gap-1.5 min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,a.jsx)("span",{className:"text-[10px] text-text-muted truncate",children:s.name}),(0,a.jsx)("div",{className:"flex-1 h-1.5 rounded-full bg-surface-alt overflow-hidden min-w-[56px]",children:(0,a.jsx)("div",{className:`h-full rounded-full ${r>70?"bg-green-500":r>=30?"bg-yellow-500":"bg-red-500"}`,style:{width:`${Math.min(r,100)}%`}})}),(0,a.jsxs)("span",{className:`text-[10px] font-medium shrink-0 ${r>70?"text-green-500":r>=30?"text-yellow-500":"text-red-500"}`,children:[r,"%"]})]}),"-"!==l&&i?(0,a.jsxs)("div",{className:"text-[10px] text-text-muted",children:["Reset in ",(0,a.jsx)("span",{className:"text-text-main",children:l}),(0,a.jsxs)("span",{className:"text-text-muted/70",children:[" • ",i]})]}):(0,a.jsx)("div",{className:"text-[10px] text-text-muted",children:"Reset time unavailable"})]})})(e.id)})]},e.id)}),(0,a.jsxs)(j(),{href:"/dashboard/providers",className:"text-[11px] text-primary hover:underline flex items-center gap-1 px-1 mt-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"open_in_new"}),"Manage accounts"]})]}):(0,a.jsx)("div",{className:"px-1",children:(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["No active ",e.name," accounts in pool."," ",(0,a.jsx)(j(),{href:"/dashboard/providers",className:"text-primary hover:underline",children:"Add account →"})]})})]}),!B&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-amber-500/10 text-amber-600 border border-amber-500/20",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"warning"}),(0,a.jsx)("span",{children:"Start MITM server and enable DNS to activate token rotation"})]})]})]})}},3534:(e,t,s)=>{s.d(t,{dM:()=>r,wn:()=>a});let a={antigravity:{id:"antigravity",name:"Antigravity",image:"/providers/antigravity.png",color:"#4285F4",description:"Google Antigravity IDE with MITM",configType:"mitm",mitmDomain:"daily-cloudcode-pa.googleapis.com",supportsTokenSwap:!0,tokenSwapProvider:"antigravity",modelAliases:["claude-opus-4-6-thinking","claude-sonnet-4-6","gemini-3-flash","gpt-oss-120b-medium","gemini-3-pro-high","gemini-3-pro-low"],defaultModels:[{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High",alias:"gemini-3.1-pro-high"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low",alias:"gemini-3.1-pro-low"},{id:"gemini-3-flash",name:"Gemini 3 Flash",alias:"gemini-3-flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",alias:"claude-opus-4-6-thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium",alias:"gpt-oss-120b-medium"}]},copilot:{id:"copilot",name:"GitHub Copilot",image:"/providers/copilot.png",color:"#1F6FEB",description:"GitHub Copilot IDE with MITM",configType:"mitm",mitmDomain:"api.individual.githubcopilot.com",modelAliases:["gpt-4o-mini","claude-haiku-4.5","gpt-4o","gpt-5-mini"],defaultModels:[{id:"gpt-4o",name:"GPT-4o",alias:"gpt-4o"},{id:"gpt-4.1",name:"GPT-4.1",alias:"gpt-4.1"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"}]},kiro:{id:"kiro",name:"Kiro",image:"/providers/kiro.png",color:"#FF6B00",description:"Kiro IDE with MITM",configType:"mitm",mitmDomain:"q.us-east-1.amazonaws.com",defaultModels:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5",alias:"claude-sonnet-4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4",alias:"claude-sonnet-4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",alias:"deepseek-3.2"},{id:"minimax-m2.1",name:"MiniMax M2.1",alias:"minimax-m2.1"},{id:"simple-task",name:"Qwen3 Coder Next",alias:"simple-task"}]}},r={claude:{id:"claude",name:"Claude Code",icon:"terminal",color:"#D97757",description:"Anthropic Claude Code CLI",configType:"env",envVars:{baseUrl:"ANTHROPIC_BASE_URL",model:"ANTHROPIC_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL"},modelAliases:["default","sonnet","opus","haiku","opusplan"],settingsFile:"~/.claude/settings.json",defaultModels:[{id:"opus",name:"Claude Opus",alias:"opus",envKey:"ANTHROPIC_DEFAULT_OPUS_MODEL",defaultValue:"cc/claude-opus-4-6"},{id:"sonnet",name:"Claude Sonnet",alias:"sonnet",envKey:"ANTHROPIC_DEFAULT_SONNET_MODEL",defaultValue:"cc/claude-sonnet-4-6"},{id:"haiku",name:"Claude Haiku",alias:"haiku",envKey:"ANTHROPIC_DEFAULT_HAIKU_MODEL",defaultValue:"cc/claude-haiku-4-5-20251001"}]},openclaw:{id:"openclaw",name:"Open Claw",image:"/providers/openclaw.png",color:"#FF6B35",description:"Open Claw AI Assistant",configType:"custom"},codex:{id:"codex",name:"OpenAI Codex CLI",image:"/providers/codex.png",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},opencode:{id:"opencode",name:"OpenCode",image:"/providers/opencode.png",color:"#E87040",description:"OpenCode AI Terminal Assistant",configType:"custom"},droid:{id:"droid",name:"Factory Droid",image:"/providers/droid.png",color:"#00D4FF",description:"Factory Droid AI Assistant",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.png",color:"#000000",description:"Cursor AI Code Editor",configType:"guide",requiresExternalUrl:!0,notes:[{type:"warning",text:"Requires Cursor Pro account to use this feature."},{type:"cloudCheck",text:"Cursor routes requests through its own server, so local endpoint is not supported. Please enable Tunnel or Cloud Endpoint in Settings."}],guideSteps:[{step:1,title:"Open Settings",desc:"Go to Settings → Models"},{step:2,title:"Enable OpenAI API",desc:'Enable "OpenAI API key" option'},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Add Custom Model",desc:'Click "View All Model" → "Add Custom Model"'},{step:6,title:"Select Model",type:"modelSelector"}]},cline:{id:"cline",name:"Cline",image:"/providers/cline.png",color:"#00D1B2",description:"Cline AI Coding Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Cline Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → OpenAI Compatible"},{step:3,title:"Base URL",value:"{{baseUrl}}/v1",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Model",type:"modelSelector"}]},kilo:{id:"kilo",name:"Kilo Code",image:"/providers/kilocode.png",color:"#FF6B6B",description:"Kilo Code AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Kilo Code Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → OpenAI Compatible"},{step:3,title:"Base URL",value:"{{baseUrl}}/v1",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Model",type:"modelSelector"}]},roo:{id:"roo",name:"Roo",image:"/providers/roo.png",color:"#FF6B6B",description:"Roo AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Roo Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → Ollama"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Model",type:"modelSelector"}]},continue:{id:"continue",name:"Continue",image:"/providers/continue.png",color:"#7C3AED",description:"Continue AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Config",desc:"Open Continue configuration file"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Select Model",type:"modelSelector"},{step:4,title:"Add Model Config",desc:"Add the following configuration to your models array:"}],codeBlock:{language:"json",code:`{
10
- "apiBase": "{{baseUrl}}",
11
- "title": "{{model}}",
12
- "model": "{{model}}",
13
- "provider": "openai",
14
- "apiKey": "{{apiKey}}"
15
- }`}}}},57294:(e,t,s)=>{s.d(t,{$4:()=>i,W_:()=>n,mO:()=>r,sQ:()=>l});var a=s(45564);function r(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,s=new Date,a=t-s;if(a<=0)return"-";let r=Math.ceil(a/6e4);if(r<60)return`${r}m`;let l=Math.floor(r/60),i=r%60;if(l<24)return`${l}h ${i}m`;let n=Math.floor(l/24);return`${n}d ${l%24}h ${i}m`}catch(e){return"-"}}function l(e){if(!e)return null;try{let t="string"==typeof e?new Date(e):e,s=new Date,a=new Date(s.getFullYear(),s.getMonth(),s.getDate()),r=new Date(a);r.setDate(r.getDate()+1);let l=new Date(r);l.setDate(l.getDate()+1);let i="";i=t>=a&&t<r?"Today":t>=r&&t<l?"Tomorrow":t.toLocaleDateString("en-US",{month:"short",day:"numeric"});let n=t.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return`${i}, ${n}`}catch{return null}}function i(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0}function n(e,t){if(!t||"object"!=typeof t)return[];let s=[];try{switch(e.toLowerCase()){case"github":default:t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{s.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])=>{s.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])=>{s.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"kiro":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{s.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"claude":t.message?s.push({name:"error",used:0,total:0,resetAt:null,message:t.message}):t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{s.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let r=(0,a.KC)(e);if(r.length>0){let e=new Map(r.map((e,t)=>[e.id,t]));s.sort((t,s)=>{let a=t.modelKey||t.name,r=s.modelKey||s.name;return(e.get(a)??999)-(e.get(r)??999)})}return s}}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2326],{70044:(e,t,a)=>{Promise.resolve().then(a.bind(a,75228))},75228:(e,t,a)=>{"use strict";a.d(t,{default:()=>u});var s=a(95155),i=a(12115),o=a(35497),l=a(3534),r=a(28777),c=a(3176);let n="https://9router.com",d={claude:"/api/cli-tools/claude-settings",codex:"/api/cli-tools/codex-settings",opencode:"/api/cli-tools/opencode-settings",droid:"/api/cli-tools/droid-settings",openclaw:"/api/cli-tools/openclaw-settings"};function u({machineId:e}){let t,a,p,[v,h]=(0,i.useState)([]),[f,g]=(0,i.useState)(!0),[x,j]=(0,i.useState)(null),[w,E]=(0,i.useState)({}),[b,y]=(0,i.useState)(!1),[S,m]=(0,i.useState)(!1),[k,P]=(0,i.useState)(""),[N,A]=(0,i.useState)([]),[O,_]=(0,i.useState)({});(0,i.useEffect)(()=>{I(),M(),$(),C()},[]);let C=async()=>{try{let e=await Promise.all(Object.entries(d).map(async([e,t])=>{try{let a=await fetch(t),s=await a.json();return[e,s]}catch{return[e,null]}}));_(Object.fromEntries(e))}catch(e){console.log("Error fetching tool statuses:",e)}},M=async()=>{try{let[e,t]=await Promise.all([fetch("/api/settings"),fetch("/api/tunnel/status")]);if(e.ok){let t=await e.json();y(t.cloudEnabled||!1)}if(t.ok){let e=await t.json();m(e.enabled||!1),P(e.publicUrl||"")}}catch(e){console.log("Error loading settings:",e)}},$=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();A(t.keys||[])}}catch(e){console.log("Error fetching API keys:",e)}},I=async()=>{try{let e=await fetch("/api/providers"),t=await e.json();e.ok&&h(t.connections||[])}catch(e){console.log("Error fetching connections:",e)}finally{g(!1)}},Q=()=>v.filter(e=>!1!==e.isActive),T=(0,i.useCallback)((e,t,a)=>{E(s=>s[e]?.[t]===a?s:{...s,[e]:{...s[e],[t]:a}})},[]);if(f)return(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(o.Qv,{}),(0,s.jsx)(o.Qv,{}),(0,s.jsx)(o.Qv,{})]});let U=(t=Q(),a=[],p=new Set,t.forEach(e=>{let t=r.Xg[e.provider]||e.provider;(0,r.KC)(e.provider).forEach(s=>{let i=`${t}/${s.id}`;p.has(i)||(p.add(i),a.push({value:i,label:`${t}/${s.id}`,provider:e.provider,alias:t,connectionName:e.name,modelId:s.id}))})}),a).length>0,Z=Object.entries(l.dM);return(0,s.jsx)("div",{className:"flex flex-col gap-6",children:(0,s.jsx)("div",{className:"flex flex-col gap-4",children:Z.map(([e,t])=>((e,t)=>{let a={tool:t,isExpanded:x===e,onToggle:()=>j(x===e?null:e),baseUrl:S&&k?k:b&&n?n:window.location.origin,apiKeys:N};switch(e){case"claude":return(0,s.jsx)(c.Tk,{...a,activeProviders:Q(),modelMappings:w[e]||{},onModelMappingChange:(t,a)=>T(e,t,a),hasActiveProviders:U,cloudEnabled:b,initialStatus:O.claude},e);case"codex":return(0,s.jsx)(c.Ah,{...a,activeProviders:Q(),cloudEnabled:b,initialStatus:O.codex},e);case"opencode":return(0,s.jsx)(c.qO,{...a,activeProviders:Q(),cloudEnabled:b,initialStatus:O.opencode},e);case"droid":return(0,s.jsx)(c.ZM,{...a,activeProviders:Q(),hasActiveProviders:U,cloudEnabled:b,initialStatus:O.droid},e);case"openclaw":return(0,s.jsx)(c.yZ,{...a,activeProviders:Q(),hasActiveProviders:U,cloudEnabled:b,initialStatus:O.openclaw},e);default:return(0,s.jsx)(c.a7,{toolId:e,...a,activeProviders:Q(),cloudEnabled:b,tunnelEnabled:S},e)}})(e,t))})})}}},e=>{e.O(0,[2574,3862,123,5772,1321,5497,5507,8441,3794,7358],()=>e(e.s=70044)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[182],{1943:(e,t,s)=>{Promise.resolve().then(s.bind(s,58954))},58954:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>N});var i=s(95155),a=s(73321),r=s(98500),o=s.n(r),n=s(5772),l=s(12115),d=s(35497),c=s(52679),p=s(11059),x=s(14051),m=s.n(x);function u({until:e}){let[t,s]=(0,l.useState)("");return((0,l.useEffect)(()=>{let t=()=>{let t=new Date(e).getTime()-Date.now();if(t<=0)return void s("");let i=Math.floor(t/1e3);i<60?s(`${i}s`):i<3600?s(`${Math.floor(i/60)}m ${i%60}s`):s(`${Math.floor(i/3600)}h ${Math.floor(i%3600/60)}m`)};t();let i=setInterval(t,1e3);return()=>clearInterval(i)},[e]),t)?(0,i.jsxs)("span",{className:"text-xs text-orange-500 font-mono",children:["⏱ ",t]}):null}function h({connection:e,proxyPools:t,isOAuth:s,isFirst:a,isLast:r,onMoveUp:o,onMoveDown:n,onToggleActive:c,onUpdateProxy:p,onEdit:x,onDelete:m}){let[y,f]=(0,l.useState)(!1),[b,g]=(0,l.useState)(!1),[v,j]=(0,l.useState)(!1),N=(0,l.useRef)(null),k=new Map((t||[]).map(e=>[e.id,e])),w=e.providerSpecificData?.proxyPoolId||null,C=w?k.get(w):null,S=e.providerSpecificData?.connectionProxyEnabled===!0&&!!e.providerSpecificData?.connectionProxyUrl,$=!!w||S,P=C?`Pool: ${C.name}`:w?`Pool: ${w} (inactive/missing)`:S?`Legacy: ${e.providerSpecificData?.connectionProxyUrl}`:"",T="",O=C?.proxyUrl||e.providerSpecificData?.connectionProxyUrl;if(O)try{let e=new URL(O);T=`${e.protocol}//${e.hostname}${e.port?`:${e.port}`:""}`}catch{T=O}let R=C?.noProxy||e.providerSpecificData?.connectionNoProxy||"",E=C?.isActive===!0?"success":w||S?"error":"default",A=Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>e).filter(Boolean).sort()[0]||null;(0,l.useEffect)(()=>{let t=()=>{j(!!Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>e).filter(e=>e&&new Date(e).getTime()>Date.now()).sort()[0])};t();let s=A?setInterval(t,1e3):null;return()=>{s&&clearInterval(s)}},[A]),(0,l.useEffect)(()=>{if(!y)return;let e=e=>{N.current&&!N.current.contains(e.target)&&f(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[y]);let _="unavailable"!==e.testStatus||v?e.testStatus:"active",D=s?e.name||e.email||e.displayName||"OAuth Account":e.name,I=async e=>{g(!0);try{await p("__none__"===e?null:e)}finally{g(!1),f(!1)}};return(0,i.jsxs)("div",{className:`group flex items-center justify-between p-3 rounded-lg hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors ${!1===e.isActive?"opacity-60":""}`,children:[(0,i.jsxs)("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[(0,i.jsxs)("div",{className:"flex flex-col",children:[(0,i.jsx)("button",{onClick:o,disabled:a,className:`p-0.5 rounded ${a?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,i.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_up"})}),(0,i.jsx)("button",{onClick:n,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,i.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_down"})})]}),(0,i.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",children:s?"lock":"key"}),(0,i.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,i.jsx)("p",{className:"text-sm font-medium truncate",children:D}),(0,i.jsxs)("div",{className:"flex items-center gap-2 mt-1 flex-wrap",children:[(0,i.jsx)(d.Ex,{variant:!1===e.isActive?"default":"active"===_||"success"===_?"success":"error"===_||"expired"===_||"unavailable"===_?"error":"default",size:"sm",dot:!0,children:!1===e.isActive?"disabled":_||"Unknown"}),$&&(0,i.jsx)(d.Ex,{variant:E,size:"sm",children:"Proxy"}),v&&!1!==e.isActive&&(0,i.jsx)(u,{until:A}),e.lastError&&!1!==e.isActive&&(0,i.jsx)("span",{className:"text-xs text-red-500 truncate max-w-[300px]",title:e.lastError,children:e.lastError}),(0,i.jsxs)("span",{className:"text-xs text-text-muted",children:["#",e.priority]})]}),$&&(0,i.jsxs)("div",{className:"mt-1 flex items-center gap-2 flex-wrap",children:[(0,i.jsx)("span",{className:"text-[11px] text-text-muted truncate max-w-[420px]",title:P,children:P}),T&&(0,i.jsx)("code",{className:"text-[10px] font-mono bg-black/5 dark:bg-white/5 px-1 py-0.5 rounded text-text-muted",children:T}),R&&(0,i.jsxs)("span",{className:"text-[11px] text-text-muted truncate max-w-[320px]",title:R,children:["no_proxy: ",R]})]})]})]}),(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsxs)("div",{className:"flex gap-1",children:[(t||[]).length>0&&(0,i.jsxs)("div",{className:"relative",ref:N,children:[(0,i.jsxs)("button",{onClick:()=>f(e=>!e),className:`flex flex-col items-center px-2 py-1 rounded hover:bg-black/5 dark:hover:bg-white/5 transition-colors ${$?"text-primary":"text-text-muted hover:text-primary"}`,disabled:b,children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:b?"progress_activity":"lan"}),(0,i.jsx)("span",{className:"text-[10px] leading-tight",children:"Proxy"})]}),y&&(0,i.jsxs)("div",{className:"absolute right-0 top-full mt-1 z-50 bg-bg border border-border rounded-lg shadow-lg py-1 min-w-[160px]",children:[(0,i.jsx)("button",{onClick:()=>I("__none__"),className:`w-full text-left px-3 py-1.5 text-sm hover:bg-black/5 dark:hover:bg-white/5 ${!w?"text-primary font-medium":"text-text-main"}`,children:"None"}),(t||[]).map(e=>(0,i.jsx)("button",{onClick:()=>I(e.id),className:`w-full text-left px-3 py-1.5 text-sm hover:bg-black/5 dark:hover:bg-white/5 ${w===e.id?"text-primary font-medium":"text-text-main"}`,children:e.name},e.id))]})]}),(0,i.jsxs)("button",{onClick:x,className:"flex flex-col items-center px-2 py-1 rounded hover:bg-black/5 dark:hover:bg-white/5 text-text-muted hover:text-primary",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,i.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,i.jsxs)("button",{onClick:m,className:"flex flex-col items-center px-2 py-1 rounded hover:bg-red-500/10 text-red-500",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,i.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]}),(0,i.jsx)(d.lM,{size:"sm",checked:e.isActive??!0,onChange:c,title:e.isActive??!0?"Disable":"Enable"})]})]})}function y({isOpen:e,provider:t,providerName:s,proxyPools:a,onSave:r,onClose:o}){let n="__none__",[c,p]=(0,l.useState)({name:"",apiKey:"",priority:1,proxyPoolId:n}),[x,m]=(0,l.useState)(!1),[u,h]=(0,l.useState)(null),[f,b]=(0,l.useState)(!1),g=async()=>{m(!0);try{let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t,apiKey:c.apiKey})}),s=await e.json();h(s.valid?"success":"failed")}catch{h("failed")}finally{m(!1)}},v=async()=>{if(t&&c.apiKey){b(!0);try{let e=!1;try{m(!0),h(null);let s=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t,apiKey:c.apiKey})});e=!!(await s.json()).valid,h(e?"success":"failed")}catch{h("failed")}finally{m(!1)}await r({name:c.name,apiKey:c.apiKey,priority:c.priority,proxyPoolId:c.proxyPoolId===n?null:c.proxyPoolId,testStatus:e?"active":"unknown"})}finally{b(!1)}}};return t?(0,i.jsx)(d.aF,{isOpen:e,title:`Add ${s||t} API Key`,onClose:o,children:(0,i.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:"Name"}),(0,i.jsx)("input",{className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",value:c.name,onChange:e=>p({...c,name:e.target.value}),placeholder:"Production Key"})]}),(0,i.jsxs)("div",{className:"flex gap-2",children:[(0,i.jsxs)("div",{className:"flex-1",children:[(0,i.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:"API Key"}),(0,i.jsx)("input",{type:"password",className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",value:c.apiKey,onChange:e=>p({...c,apiKey:e.target.value})})]}),(0,i.jsx)("div",{className:"pt-6",children:(0,i.jsx)(d.$n,{onClick:g,disabled:!c.apiKey||x||f,variant:"secondary",children:x?"Checking...":"Check"})})]}),u&&(0,i.jsx)(d.Ex,{variant:"success"===u?"success":"error",children:"success"===u?"Valid":"Invalid"}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:"Priority"}),(0,i.jsx)("input",{type:"number",className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",value:c.priority,onChange:e=>p({...c,priority:Number.parseInt(e.target.value)||1})})]}),(0,i.jsx)(d.l6,{label:"Proxy Pool",value:c.proxyPoolId,onChange:e=>p({...c,proxyPoolId:e.target.value}),options:[{value:n,label:"None"},...(a||[]).map(e=>({value:e.id,label:e.name}))]}),(0,i.jsxs)("div",{className:"flex gap-2",children:[(0,i.jsx)(d.$n,{onClick:v,fullWidth:!0,disabled:!c.name||!c.apiKey||f,children:f?"Saving...":"Save"}),(0,i.jsx)(d.$n,{onClick:o,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}function f({providerId:e,isOAuth:t}){let[s,a]=(0,l.useState)([]),[r,o]=(0,l.useState)([]),[n,c]=(0,l.useState)(!0),[p,x]=(0,l.useState)(!1),[m,u]=(0,l.useState)(!1),[b,g]=(0,l.useState)(null),[v,j]=(0,l.useState)(null),[N,k]=(0,l.useState)("1"),w=(0,l.useCallback)(async()=>{try{let[t,s,i]=await Promise.all([fetch("/api/providers",{cache:"no-store"}),fetch("/api/proxy-pools?isActive=true",{cache:"no-store"}),fetch("/api/settings",{cache:"no-store"})]),r=await t.json(),n=await s.json(),l=i.ok?await i.json():{};t.ok&&a((r.connections||[]).filter(t=>t.provider===e)),s.ok&&o(n.proxyPools||[]);let d=(l.providerStrategies||{})[e]||{};j(d.fallbackStrategy||null),k(null!=d.stickyRoundRobinLimit?String(d.stickyRoundRobinLimit):"1")}catch(e){console.log("ConnectionsCard fetch error:",e)}finally{c(!1)}},[e]);(0,l.useEffect)(()=>{w()},[w]);let C=async(t,s)=>{try{let i=await fetch("/api/settings",{cache:"no-store"}),a=(i.ok?await i.json():{}).providerStrategies||{},r={};t&&(r.fallbackStrategy=t),"round-robin"===t&&""!==s&&(r.stickyRoundRobinLimit=Number(s)||3);let o={...a};0===Object.keys(r).length?delete o[e]:o[e]=r,await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerStrategies:o})})}catch(e){console.log("saveStrategy error:",e)}},S=async(e,t)=>{let i=[...s];[i[e],i[t]]=[i[t],i[e]],a(i);try{await Promise.all([fetch(`/api/providers/${i[e].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:e})}),fetch(`/api/providers/${i[t].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:t})})])}catch{await w()}},$=async e=>{if(confirm("Delete this connection?"))try{(await fetch(`/api/providers/${e}`,{method:"DELETE"})).ok&&a(t=>t.filter(t=>t.id!==e))}catch(e){console.log("delete error:",e)}},P=async(e,t)=>{try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&a(s=>s.map(s=>s.id===e?{...s,isActive:t}:s))}catch(e){console.log("toggle error:",e)}},T=async(e,t)=>{try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({proxyPoolId:t||null})})).ok&&a(s=>s.map(s=>s.id===e?{...s,providerSpecificData:{...s.providerSpecificData,proxyPoolId:t||null}}:s))}catch(e){console.log("proxy error:",e)}},O=async t=>{try{(await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,...t})})).ok&&(await w(),x(!1))}catch(e){console.log("save apikey error:",e)}},R=async e=>{try{(await fetch(`/api/providers/${b.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(await w(),u(!1))}catch(e){console.log("update connection error:",e)}};return n?(0,i.jsx)(d.Zp,{children:(0,i.jsx)("div",{className:"h-20 animate-pulse bg-black/5 rounded-lg"})}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(d.Zp,{children:[(0,i.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,i.jsx)("h2",{className:"text-lg font-semibold",children:"Connections"}),(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)("span",{className:"text-xs text-text-muted font-medium",children:"Round Robin"}),(0,i.jsx)(d.lM,{checked:"round-robin"===v,onChange:e=>{let t=e?"round-robin":null;j(t),e&&!N&&k("1"),C(t,e?N||"1":N)}}),"round-robin"===v&&(0,i.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,i.jsx)("span",{className:"text-xs text-text-muted",children:"Sticky:"}),(0,i.jsx)("input",{type:"number",min:1,value:N,onChange:e=>{k(e.target.value),C("round-robin",e.target.value)},className:"w-14 px-2 py-1 text-xs border border-border rounded-md bg-background focus:outline-none focus:border-primary"})]})]})]}),0===s.length?(0,i.jsxs)("div",{className:"flex items-center justify-between",children:[(0,i.jsx)("p",{className:"text-sm text-text-muted",children:"No connections yet"}),(0,i.jsx)(d.$n,{size:"sm",icon:"add",onClick:()=>x(!0),children:"Add Connection"})]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("div",{className:"flex flex-col divide-y divide-black/[0.03] dark:divide-white/[0.03]",children:s.map((e,a)=>(0,i.jsx)(h,{connection:e,proxyPools:r,isOAuth:t,isFirst:0===a,isLast:a===s.length-1,onMoveUp:()=>S(a,a-1),onMoveDown:()=>S(a,a+1),onToggleActive:t=>P(e.id,t),onUpdateProxy:t=>T(e.id,t),onEdit:()=>{g(e),u(!0)},onDelete:()=>$(e.id)},e.id))}),(0,i.jsx)("div",{className:"mt-4",children:(0,i.jsx)(d.$n,{size:"sm",icon:"add",onClick:()=>x(!0),children:"Add"})})]})]}),(0,i.jsx)(y,{isOpen:p,provider:e,proxyPools:r,onSave:O,onClose:()=>x(!1)}),(0,i.jsx)(d.wI,{isOpen:m,connection:b,proxyPools:r,onSave:R,onClose:()=>u(!1)})]})}u.propTypes={until:m().string.isRequired},h.propTypes={connection:m().shape({id:m().string,name:m().string,email:m().string,displayName:m().string,testStatus:m().string,isActive:m().bool,lastError:m().string,priority:m().number}).isRequired,proxyPools:m().array,isOAuth:m().bool.isRequired,isFirst:m().bool.isRequired,isLast:m().bool.isRequired,onMoveUp:m().func.isRequired,onMoveDown:m().func.isRequired,onToggleActive:m().func.isRequired,onUpdateProxy:m().func,onEdit:m().func.isRequired,onDelete:m().func.isRequired},y.propTypes={isOpen:m().bool.isRequired,provider:m().string,providerName:m().string,proxyPools:m().array,onSave:m().func.isRequired,onClose:m().func.isRequired},f.propTypes={providerId:m().string.isRequired,isOAuth:m().bool};var b=s(28777);function g({model:e,fullModel:t,copied:s,onCopy:a,testStatus:r,isCustom:o,isFree:n,onDeleteAlias:l,onTest:d,isTesting:c}){let p="ok"===r?"#22c55e":"error"===r?"#ef4444":void 0;return(0,i.jsx)("div",{className:`group px-3 py-2 rounded-lg border ${"ok"===r?"border-green-500/40":"error"===r?"border-red-500/40":"border-border"} hover:bg-sidebar/50`,children:(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-base",style:p?{color:p}:void 0,children:"ok"===r?"check_circle":"error"===r?"cancel":"smart_toy"}),(0,i.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:t}),d&&(0,i.jsxs)("div",{className:"relative group/btn",children:[(0,i.jsx)("button",{onClick:d,disabled:c,className:`p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary transition-opacity ${c?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:(0,i.jsx)("span",{className:"material-symbols-outlined text-sm",style:c?{animation:"spin 1s linear infinite"}:void 0,children:c?"progress_activity":"science"})}),(0,i.jsx)("span",{className:"pointer-events-none absolute mt-1 top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:c?"Testing...":"Test"})]}),(0,i.jsxs)("div",{className:"relative group/btn",children:[(0,i.jsx)("button",{onClick:()=>a(t,`model-${e.id}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",children:(0,i.jsx)("span",{className:"material-symbols-outlined text-sm",children:s===`model-${e.id}`?"check":"content_copy"})}),(0,i.jsx)("span",{className:"pointer-events-none absolute mt-1 top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:s===`model-${e.id}`?"Copied!":"Copy"})]}),n&&(0,i.jsx)("span",{className:"text-[10px] font-bold text-green-500 bg-green-500/10 px-1.5 py-0.5 rounded",children:"FREE"}),o&&(0,i.jsx)("button",{onClick:l,className:"p-0.5 hover:bg-red-500/10 rounded text-text-muted hover:text-red-500 opacity-0 group-hover:opacity-100 transition-opacity ml-auto",title:"Remove custom model",children:(0,i.jsx)("span",{className:"material-symbols-outlined text-sm",children:"close"})})]})})}function v({isOpen:e,onSave:t,onClose:s}){let[a,r]=(0,l.useState)(""),o=()=>{a.trim()&&(t(a.trim()),r(""))};return(0,i.jsx)(d.aF,{isOpen:e,title:"Add Custom Model",onClose:s,children:(0,i.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:"Model ID"}),(0,i.jsx)("input",{className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",value:a,onChange:e=>r(e.target.value),onKeyDown:e=>"Enter"===e.key&&o(),placeholder:"e.g. tts-1-hd",autoFocus:!0})]}),(0,i.jsxs)("div",{className:"flex gap-2",children:[(0,i.jsx)(d.$n,{onClick:o,fullWidth:!0,disabled:!a.trim(),children:"Add"}),(0,i.jsx)(d.$n,{onClick:s,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function j({providerId:e,kindFilter:t}){let{copied:s,copy:a}=(0,p.C)(),[r,o]=(0,l.useState)({}),[n,x]=(0,l.useState)({}),[m,u]=(0,l.useState)(null),[h,y]=(0,l.useState)(""),[f,N]=(0,l.useState)(!1),[k,w]=(0,l.useState)([]),C=(0,c.wG)(e),S=(0,l.useCallback)(async()=>{try{let[t,s]=await Promise.all([fetch("/api/models/alias"),fetch("/api/providers",{cache:"no-store"})]),i=await t.json(),a=await s.json();t.ok&&o(i.aliases||{}),s.ok&&w((a.connections||[]).filter(t=>t.provider===e))}catch(e){console.log("ModelsCard fetch error:",e)}},[e]);(0,l.useEffect)(()=>{S()},[S]);let $=async(e,t)=>{let s=`${C}/${e}`;try{(await fetch("/api/models/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:s,alias:t})})).ok&&await S()}catch(e){console.log("set alias error:",e)}},P=async e=>{try{(await fetch(`/api/models/alias?alias=${encodeURIComponent(e)}`,{method:"DELETE"})).ok&&await S()}catch(e){console.log("delete alias error:",e)}},T=async e=>{if(!m){u(e);try{let t=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${C}/${e}`})}),s=await t.json();x(t=>({...t,[e]:s.ok?"ok":"error"})),y(s.ok?"":s.error||"Model not reachable")}catch{x(t=>({...t,[e]:"error"})),y("Network error")}finally{u(null)}}},O=(0,b.KC)(e),R=t?O.filter(e=>e.kinds?e.kinds.includes(t):e.type?e.type===t:"llm"===t):O,E=Object.entries(r).filter(([e,t])=>{let s=`${C}/`;if(!t.startsWith(s))return!1;let i=t.slice(s.length);return!R.some(e=>e.id===i)&&e===i}).map(([e,t])=>({id:t.slice(`${C}/`.length),alias:e}));return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(d.Zp,{children:[(0,i.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,i.jsxs)("h2",{className:"text-lg font-semibold",children:["Models",t?` — ${t.toUpperCase()}`:""]})}),h&&(0,i.jsx)("p",{className:"text-xs text-red-500 mb-3 break-words",children:h}),(0,i.jsxs)("div",{className:"flex flex-wrap gap-3",children:[R.map(e=>{let t=`${C}/${e.id}`,o=Object.entries(r).find(([,e])=>e===t)?.[0];return(0,i.jsx)(g,{model:e,fullModel:`${C}/${e.id}`,alias:o,copied:s,onCopy:a,onSetAlias:t=>$(e.id,t),onDeleteAlias:()=>P(o),testStatus:n[e.id],onTest:k.length>0?()=>T(e.id):void 0,isTesting:m===e.id,isFree:e.isFree},e.id)}),E.map(e=>(0,i.jsx)(g,{model:{id:e.id},fullModel:`${C}/${e.id}`,alias:e.alias,copied:s,onCopy:a,onSetAlias:()=>{},onDeleteAlias:()=>P(e.alias),testStatus:n[e.id],onTest:k.length>0?()=>T(e.id):void 0,isTesting:m===e.id,isCustom:!0},e.id)),(0,i.jsxs)("button",{onClick:()=>N(!0),className:"flex items-center gap-1.5 px-3 py-2 rounded-lg border border-dashed border-black/15 dark:border-white/15 text-xs text-text-muted hover:text-primary hover:border-primary/40 transition-colors",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-sm",children:"add"}),"Add Model"]})]})]}),(0,i.jsx)(v,{isOpen:f,onSave:async e=>{await $(e,e),N(!1)},onClose:()=>N(!1)})]})}function N(){let{kind:e,id:t}=(0,a.useParams)(),{copied:s,copy:r}=(0,p.C)(),[x,m]=(0,l.useState)(!1),u=c.rj.find(t=>t.id===e);if(!u)return(0,a.notFound)();let h=c.Q2[t];if(!h)return(0,a.notFound)();let y=h.serviceKinds??["llm"];if(!y.includes(e))return(0,a.notFound)();let b=`${u.endpoint.method} ${u.endpoint.path}`;return(0,i.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,i.jsxs)("div",{children:[(0,i.jsxs)(o(),{href:`/dashboard/media-providers/${e}`,className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4",children:[(0,i.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),u.label]}),(0,i.jsxs)("div",{className:"flex items-center gap-4",children:[(0,i.jsx)("div",{className:"rounded-lg flex items-center justify-center",style:{backgroundColor:`${h.color}15`},children:x?(0,i.jsx)("span",{className:"size-12 flex items-center justify-center text-sm font-bold rounded-lg",style:{color:h.color},children:h.textIcon||h.id.slice(0,2).toUpperCase()}):(0,i.jsx)(n.default,{src:`/providers/${h.id}.png`,alt:h.name,width:48,height:48,className:"object-contain rounded-lg max-w-[48px] max-h-[48px]",sizes:"48px",onError:()=>m(!0)})}),(0,i.jsxs)("div",{children:[(0,i.jsx)("h1",{className:"text-3xl font-semibold tracking-tight",children:h.name}),(0,i.jsx)("div",{className:"flex items-center gap-1.5 mt-1 flex-wrap",children:y.map(t=>(0,i.jsx)(d.Ex,{variant:t===e?"primary":"default",size:"sm",children:t.toUpperCase()},t))})]})]})]}),(0,i.jsxs)(d.Zp,{padding:"sm",children:[(0,i.jsxs)("p",{className:"text-xs text-text-muted uppercase tracking-wider mb-2 font-semibold",children:[u.label," Endpoint"]}),(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)("span",{className:"text-xs font-bold text-primary bg-primary/10 px-2 py-0.5 rounded",children:u.endpoint.method}),(0,i.jsx)("code",{className:"text-sm font-mono text-text-main flex-1",children:u.endpoint.path}),(0,i.jsx)("button",{onClick:()=>r(b),className:"text-text-muted hover:text-text-main transition-colors",title:"Copy",children:(0,i.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:s?"check":"content_copy"})})]})]}),(0,i.jsx)(f,{providerId:t,isOAuth:!1}),(0,i.jsx)(j,{providerId:t,kindFilter:e})]})}g.propTypes={model:m().shape({id:m().string.isRequired}).isRequired,fullModel:m().string.isRequired,copied:m().string,onCopy:m().func.isRequired,testStatus:m().oneOf(["ok","error"]),isCustom:m().bool,isFree:m().bool,onDeleteAlias:m().func,onTest:m().func,isTesting:m().bool},v.propTypes={isOpen:m().bool.isRequired,onSave:m().func.isRequired,onClose:m().func.isRequired},j.propTypes={providerId:m().string.isRequired,kindFilter:m().string}}},e=>{e.O(0,[2574,3862,123,5772,1321,5497,8441,3794,7358],()=>e(e.s=1943)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6620],{16144:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>x});var r=t(95155),l=t(73321),n=t(98500),d=t.n(n),i=t(35497),o=t(57250),a=t(52679),c=t(11059);function x(){let{kind:e}=(0,l.useParams)(),{copied:s,copy:t}=(0,c.C)(),n=a.rj.find(s=>s.id===e);if(!n)return(0,l.notFound)();let x=(0,a.o5)(e),m=`${n.endpoint.method} ${n.endpoint.path}`;return(0,r.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,r.jsxs)(i.Zp,{padding:"sm",children:[(0,r.jsx)("p",{className:"text-xs text-text-muted uppercase tracking-wider mb-2 font-semibold",children:"Endpoint"}),(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"text-xs font-bold text-primary bg-primary/10 px-2 py-0.5 rounded",children:n.endpoint.method}),(0,r.jsx)("code",{className:"text-sm font-mono text-text-main flex-1",children:n.endpoint.path}),(0,r.jsx)("button",{onClick:()=>t(m),className:"text-text-muted hover:text-text-main transition-colors",title:"Copy endpoint",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:s?"check":"content_copy"})})]})]}),0===x.length?(0,r.jsxs)("div",{className:"text-center py-12 border border-dashed border-border rounded-xl text-text-muted text-sm",children:["No providers support ",(0,r.jsx)("strong",{children:n.label})," yet."]}):(0,r.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:x.map(s=>(0,r.jsx)(d(),{href:`/dashboard/media-providers/${e}/${s.id}`,children:(0,r.jsx)(i.Zp,{padding:"xs",className:"h-full hover:bg-black/[0.01] dark:hover:bg-white/[0.01] transition-colors cursor-pointer",children:(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${s.color?.length>7?s.color:(s.color??"#888")+"15"}`},children:(0,r.jsx)(o.A,{src:`/providers/${s.id}.png`,alt:s.name,size:30,className:"object-contain rounded-lg max-w-[30px] max-h-[30px]",fallbackText:s.textIcon||s.id.slice(0,2).toUpperCase(),fallbackColor:s.color})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"font-semibold text-sm",children:s.name}),(0,r.jsx)("p",{className:"text-xs text-text-muted",children:(s.serviceKinds??["llm"]).join(", ")})]})]})})},s.id))})]})}},34607:(e,s,t)=>{Promise.resolve().then(t.bind(t,16144))}},e=>{e.O(0,[2574,3862,123,1321,5497,8441,3794,7358],()=>e(e.s=34607)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6607],{23879:(e,s,t)=>{"use strict";t.d(s,{default:()=>r});var a=t(95155),n=t(12115),i=t(3534),o=t(28777),l=t(52679),c=t(3176);function r(){let[e,s]=(0,n.useState)([]),[t,r]=(0,n.useState)([]),[d,u]=(0,n.useState)({}),[h,p]=(0,n.useState)(!1),[f,w]=(0,n.useState)(null),[v,S]=(0,n.useState)({running:!1,certExists:!1,dnsStatus:{},hasCachedPassword:!1}),[g,k]=(0,n.useState)(!1),x=async()=>{try{let e=await fetch("/api/providers");if(e.ok){let t=await e.json();s(t.connections||[])}}catch{}},y=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let s=await e.json();r(s.keys||[])}}catch{}},j=async()=>{try{let e=await fetch("/api/models/alias");if(e.ok){let s=await e.json();u(s.aliases||{})}}catch{}},m=async()=>{try{let e=await fetch("/api/settings");if(e.ok){let s=await e.json();p(s.cloudEnabled||!1),k(!!s.tokenSwapEnabled)}}catch{}};(0,n.useEffect)(()=>{(async()=>{await Promise.all([x(),y(),j(),m()])})()},[]);let E=()=>e.filter(e=>!1!==e.isActive),b=Object.entries(i.wn);return(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsx)(c.tA,{apiKeys:t,cloudEnabled:h,onStatusChange:S}),(0,a.jsx)("div",{className:"flex flex-col gap-2",children:b.map(([s,i])=>(0,a.jsxs)(n.Fragment,{children:[(0,a.jsx)(c.kn,{tool:i,isExpanded:f===s,onToggle:()=>w(f===s?null:s),serverRunning:v.running,dnsActive:v.dnsStatus?.[s]||!1,hasCachedPassword:v.hasCachedPassword||!1,apiKeys:t,activeProviders:E(),hasActiveProviders:E().some(e=>(0,o.KC)(e.provider).length>0||(0,l.mq)(e.provider)||(0,l.gb)(e.provider)),modelAliases:d,cloudEnabled:h,tokenSwapActive:i.supportsTokenSwap&&g,onDnsChange:e=>S(s=>({...s,dnsStatus:e.dnsStatus??s.dnsStatus}))}),i.supportsTokenSwap&&(0,a.jsx)(c.xm,{tool:i,connections:e,serverRunning:v.running,dnsActive:v.dnsStatus?.[s]||!1,onToggle:e=>k(e),onRefreshConnections:x})]},s))})]})}},60817:(e,s,t)=>{Promise.resolve().then(t.bind(t,23879))}},e=>{e.O(0,[2574,3862,123,5772,1321,5497,5507,8441,3794,7358],()=>e(e.s=60817)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[174,204,335,513,543,552,747,748,907,931,992,997,1070,1088,1110,1118,1200,1288,1337,1382,1451,1512,1566,1666,1860,1949,2121,2284,2296,2499,2785,2797,2802,2919,2922,3025,3038,3079,3102,3397,3472,3519,3549,3552,3562,3568,4286,4422,4444,4656,4896,4993,5018,5079,5107,5177,5211,5226,5466,5685,5745,5922,6268,6529,6580,6740,6819,6919,6988,7241,7429,7442,7445,7508,7520,7758,7824,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9194,9199,9321,9461,9595,9749],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);