9router 0.2.87 → 0.2.89

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 (488) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +27 -26
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/routes-manifest.json +18 -12
  5. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +4 -4
  6. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  10. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  12. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  20. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/_global-error.html +2 -2
  27. package/app/.next/server/app/_global-error.rsc +1 -1
  28. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  29. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  30. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  31. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  32. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  33. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  34. package/app/.next/server/app/_not-found/page.js +1 -1
  35. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/_not-found.html +1 -1
  37. package/app/.next/server/app/_not-found.rsc +2 -2
  38. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  39. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  40. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  41. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  42. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  43. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  44. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  47. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  54. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  56. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  58. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  60. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  61. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  63. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  64. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/api/combos/route.js +1 -1
  66. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  67. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/api/init/route.js +1 -1
  69. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  71. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  72. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/keys/route.js +1 -1
  74. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/api/models/alias/route.js +1 -1
  76. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  77. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/api/models/route.js +1 -1
  79. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  81. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  82. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  85. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  86. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  89. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  90. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  93. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  94. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  97. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  99. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  102. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  104. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  107. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  108. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/providers/route.js +1 -1
  111. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  112. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  114. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  115. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  117. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/tunnel/disable/route.js +1 -0
  127. package/app/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -0
  128. package/app/.next/server/app/api/tunnel/enable/route.js +1 -0
  129. package/app/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -0
  130. package/app/.next/server/app/api/tunnel/status/route.js +1 -0
  131. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -0
  132. package/app/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -0
  133. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  134. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/usage/stream/route.js +6 -2
  142. package/app/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  144. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  145. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  147. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  148. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  150. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  154. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  158. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  162. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  163. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/callback/page.js +2 -2
  166. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/callback.html +1 -1
  168. package/app/.next/server/app/callback.rsc +2 -2
  169. package/app/.next/server/app/callback.segments/_full.segment.rsc +2 -2
  170. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  171. package/app/.next/server/app/callback.segments/_index.segment.rsc +2 -2
  172. package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
  173. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  174. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  175. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  176. package/app/.next/server/app/dashboard/cli-tools.rsc +4 -4
  177. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  178. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  179. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  180. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  181. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +4 -4
  182. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  183. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +2 -2
  184. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  185. package/app/.next/server/app/dashboard/combos.html +1 -1
  186. package/app/.next/server/app/dashboard/combos.rsc +4 -4
  187. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  188. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  189. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  190. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  191. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +4 -4
  192. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  193. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +2 -2
  194. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  195. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  196. package/app/.next/server/app/dashboard/endpoint.rsc +4 -4
  197. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  198. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  199. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  200. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  201. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +4 -4
  202. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  203. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +2 -2
  204. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  205. package/app/.next/server/app/dashboard/profile.html +1 -1
  206. package/app/.next/server/app/dashboard/profile.rsc +4 -4
  207. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  208. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  209. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  210. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  211. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
  212. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  213. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +2 -2
  214. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  215. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  216. package/app/.next/server/app/dashboard/providers/new.rsc +4 -4
  217. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  218. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  219. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  220. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  221. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  222. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +4 -4
  223. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  224. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +2 -2
  225. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  226. package/app/.next/server/app/dashboard/providers.html +1 -1
  227. package/app/.next/server/app/dashboard/providers.rsc +4 -4
  228. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  229. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  230. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  231. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  232. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +4 -4
  233. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  234. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +2 -2
  235. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  236. package/app/.next/server/app/dashboard/settings/pricing/page.js +1 -1
  237. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  238. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  239. package/app/.next/server/app/dashboard/settings/pricing.rsc +2 -2
  240. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +2 -2
  241. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  242. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +2 -2
  243. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  244. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  245. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  246. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  247. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  248. package/app/.next/server/app/dashboard/translator.html +1 -1
  249. package/app/.next/server/app/dashboard/translator.rsc +4 -4
  250. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  251. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  252. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  253. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  254. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +4 -4
  255. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  256. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +2 -2
  257. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  258. package/app/.next/server/app/dashboard/usage.html +1 -1
  259. package/app/.next/server/app/dashboard/usage.rsc +4 -4
  260. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  261. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  262. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  263. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  264. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +4 -4
  265. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  266. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +2 -2
  267. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  268. package/app/.next/server/app/dashboard.html +1 -1
  269. package/app/.next/server/app/dashboard.rsc +4 -4
  270. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  271. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  272. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  273. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +4 -4
  274. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  275. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +2 -2
  276. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  277. package/app/.next/server/app/index.html +1 -1
  278. package/app/.next/server/app/index.rsc +2 -2
  279. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  280. package/app/.next/server/app/index.segments/_full.segment.rsc +2 -2
  281. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  282. package/app/.next/server/app/index.segments/_index.segment.rsc +2 -2
  283. package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  284. package/app/.next/server/app/landing/page.js +2 -2
  285. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  286. package/app/.next/server/app/landing.html +1 -1
  287. package/app/.next/server/app/landing.rsc +2 -2
  288. package/app/.next/server/app/landing.segments/_full.segment.rsc +2 -2
  289. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  290. package/app/.next/server/app/landing.segments/_index.segment.rsc +2 -2
  291. package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
  292. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  293. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  294. package/app/.next/server/app/login/page.js +1 -1
  295. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  296. package/app/.next/server/app/login.html +1 -1
  297. package/app/.next/server/app/login.rsc +3 -3
  298. package/app/.next/server/app/login.segments/_full.segment.rsc +3 -3
  299. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  300. package/app/.next/server/app/login.segments/_index.segment.rsc +2 -2
  301. package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  302. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  303. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  304. package/app/.next/server/app/page.js +1 -1
  305. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  306. package/app/.next/server/app-paths-manifest.json +27 -26
  307. package/app/.next/server/chunks/3990.js +2 -2
  308. package/app/.next/server/chunks/412.js +1 -1
  309. package/app/.next/server/chunks/6084.js +1 -0
  310. package/app/.next/server/chunks/{5330.js → 7189.js} +3 -3
  311. package/app/.next/server/chunks/7533.js +1 -0
  312. package/app/.next/server/chunks/8954.js +1 -1
  313. package/app/.next/server/chunks/9489.js +1 -1
  314. package/app/.next/server/chunks/9718.js +1 -1
  315. package/app/.next/server/chunks/9862.js +2 -2
  316. package/app/.next/server/pages/404.html +1 -1
  317. package/app/.next/server/pages/500.html +2 -2
  318. package/app/.next/server/server-reference-manifest.js +1 -1
  319. package/app/.next/server/server-reference-manifest.json +1 -1
  320. package/app/.next/server/webpack-runtime.js +1 -1
  321. package/app/.next/static/0kBQAQeQcXjhcg1PkyrJY/_buildManifest.js +1 -0
  322. package/app/.next/static/chunks/1393-1761cc0c24573e2e.js +3 -0
  323. package/app/.next/static/chunks/5497-590ec825fbd92e55.js +7 -0
  324. package/app/.next/static/chunks/{8729-4d9f5ebc26ea7fb5.js → 8729-8e5ba4c38b294fe1.js} +1 -1
  325. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-f1a3de0e067ff7c4.js +15 -0
  326. package/app/.next/static/chunks/app/_global-error/page-6fc4c655a6c0cae7.js +1 -0
  327. package/app/.next/static/chunks/app/api/auth/login/route-6fc4c655a6c0cae7.js +1 -0
  328. package/app/.next/static/chunks/app/api/auth/logout/route-6fc4c655a6c0cae7.js +1 -0
  329. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-6fc4c655a6c0cae7.js +1 -0
  330. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-6fc4c655a6c0cae7.js +1 -0
  331. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-6fc4c655a6c0cae7.js +1 -0
  332. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-6fc4c655a6c0cae7.js +1 -0
  333. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-6fc4c655a6c0cae7.js +1 -0
  334. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-6fc4c655a6c0cae7.js +1 -0
  335. package/app/.next/static/chunks/app/api/cloud/auth/route-6fc4c655a6c0cae7.js +1 -0
  336. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-6fc4c655a6c0cae7.js +1 -0
  337. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-6fc4c655a6c0cae7.js +1 -0
  338. package/app/.next/static/chunks/app/api/cloud/models/alias/route-6fc4c655a6c0cae7.js +1 -0
  339. package/app/.next/static/chunks/app/api/combos/[id]/route-6fc4c655a6c0cae7.js +1 -0
  340. package/app/.next/static/chunks/app/api/combos/route-6fc4c655a6c0cae7.js +1 -0
  341. package/app/.next/static/chunks/app/api/init/route-6fc4c655a6c0cae7.js +1 -0
  342. package/app/.next/static/chunks/app/api/keys/[id]/route-6fc4c655a6c0cae7.js +1 -0
  343. package/app/.next/static/chunks/app/api/keys/route-6fc4c655a6c0cae7.js +1 -0
  344. package/app/.next/static/chunks/app/api/models/alias/route-6fc4c655a6c0cae7.js +1 -0
  345. package/app/.next/static/chunks/app/api/models/route-6fc4c655a6c0cae7.js +1 -0
  346. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-6fc4c655a6c0cae7.js +1 -0
  347. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-6fc4c655a6c0cae7.js +1 -0
  348. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-6fc4c655a6c0cae7.js +1 -0
  349. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-6fc4c655a6c0cae7.js +1 -0
  350. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-6fc4c655a6c0cae7.js +1 -0
  351. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-6fc4c655a6c0cae7.js +1 -0
  352. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-6fc4c655a6c0cae7.js +1 -0
  353. package/app/.next/static/chunks/app/api/pricing/route-6fc4c655a6c0cae7.js +1 -0
  354. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-6fc4c655a6c0cae7.js +1 -0
  355. package/app/.next/static/chunks/app/api/provider-nodes/route-6fc4c655a6c0cae7.js +1 -0
  356. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-6fc4c655a6c0cae7.js +1 -0
  357. package/app/.next/static/chunks/app/api/providers/[id]/models/route-6fc4c655a6c0cae7.js +1 -0
  358. package/app/.next/static/chunks/app/api/providers/[id]/route-6fc4c655a6c0cae7.js +1 -0
  359. package/app/.next/static/chunks/app/api/providers/[id]/test/route-6fc4c655a6c0cae7.js +1 -0
  360. package/app/.next/static/chunks/app/api/providers/client/route-6fc4c655a6c0cae7.js +1 -0
  361. package/app/.next/static/chunks/app/api/providers/route-6fc4c655a6c0cae7.js +1 -0
  362. package/app/.next/static/chunks/app/api/providers/test-batch/route-6fc4c655a6c0cae7.js +1 -0
  363. package/app/.next/static/chunks/app/api/providers/validate/route-6fc4c655a6c0cae7.js +1 -0
  364. package/app/.next/static/chunks/app/api/settings/require-login/route-6fc4c655a6c0cae7.js +1 -0
  365. package/app/.next/static/chunks/app/api/settings/route-6fc4c655a6c0cae7.js +1 -0
  366. package/app/.next/static/chunks/app/api/shutdown/route-6fc4c655a6c0cae7.js +1 -0
  367. package/app/.next/static/chunks/app/api/tags/route-6fc4c655a6c0cae7.js +1 -0
  368. package/app/.next/static/chunks/app/api/translator/load/route-6fc4c655a6c0cae7.js +1 -0
  369. package/app/.next/static/chunks/app/api/translator/save/route-6fc4c655a6c0cae7.js +1 -0
  370. package/app/.next/static/chunks/app/api/translator/send/route-6fc4c655a6c0cae7.js +1 -0
  371. package/app/.next/static/chunks/app/api/translator/translate/route-6fc4c655a6c0cae7.js +1 -0
  372. package/app/.next/static/chunks/app/api/tunnel/disable/route-6fc4c655a6c0cae7.js +1 -0
  373. package/app/.next/static/chunks/app/api/tunnel/enable/route-6fc4c655a6c0cae7.js +1 -0
  374. package/app/.next/static/chunks/app/api/tunnel/status/route-6fc4c655a6c0cae7.js +1 -0
  375. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-6fc4c655a6c0cae7.js +1 -0
  376. package/app/.next/static/chunks/app/api/usage/chart/route-6fc4c655a6c0cae7.js +1 -0
  377. package/app/.next/static/chunks/app/api/usage/history/route-6fc4c655a6c0cae7.js +1 -0
  378. package/app/.next/static/chunks/app/api/usage/providers/route-6fc4c655a6c0cae7.js +1 -0
  379. package/app/.next/static/chunks/app/api/usage/request-details/route-6fc4c655a6c0cae7.js +1 -0
  380. package/app/.next/static/chunks/app/api/usage/request-logs/route-6fc4c655a6c0cae7.js +1 -0
  381. package/app/.next/static/chunks/app/api/usage/stream/route-6fc4c655a6c0cae7.js +1 -0
  382. package/app/.next/static/chunks/app/api/v1/api/chat/route-6fc4c655a6c0cae7.js +1 -0
  383. package/app/.next/static/chunks/app/api/v1/chat/completions/route-6fc4c655a6c0cae7.js +1 -0
  384. package/app/.next/static/chunks/app/api/v1/embeddings/route-6fc4c655a6c0cae7.js +1 -0
  385. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-6fc4c655a6c0cae7.js +1 -0
  386. package/app/.next/static/chunks/app/api/v1/messages/route-6fc4c655a6c0cae7.js +1 -0
  387. package/app/.next/static/chunks/app/api/v1/models/route-6fc4c655a6c0cae7.js +1 -0
  388. package/app/.next/static/chunks/app/api/v1/responses/route-6fc4c655a6c0cae7.js +1 -0
  389. package/app/.next/static/chunks/app/api/v1/route-6fc4c655a6c0cae7.js +1 -0
  390. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-6fc4c655a6c0cae7.js +1 -0
  391. package/app/.next/static/chunks/app/api/v1beta/models/route-6fc4c655a6c0cae7.js +1 -0
  392. package/app/.next/static/chunks/app/page-6fc4c655a6c0cae7.js +1 -0
  393. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-6fc4c655a6c0cae7.js +1 -0
  394. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-6fc4c655a6c0cae7.js +1 -0
  395. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-6fc4c655a6c0cae7.js +1 -0
  396. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6fc4c655a6c0cae7.js +1 -0
  397. package/app/package.json +1 -1
  398. package/cli.js +4 -4
  399. package/package.json +1 -1
  400. package/src/cli/api/client.js +33 -0
  401. package/src/cli/menus/settings.js +38 -27
  402. package/src/cli/terminalUI.js +8 -10
  403. package/src/cli/tray/icon.png +0 -0
  404. package/src/cli/tray/tray.js +3 -2
  405. package/src/cli/utils/endpoint.js +10 -12
  406. package/app/.next/server/app/api/sync/cloud/route.js +0 -1
  407. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +0 -1
  408. package/app/.next/server/app/api/sync/initialize/route.js +0 -1
  409. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +0 -1
  410. package/app/.next/server/chunks/1638.js +0 -1
  411. package/app/.next/server/chunks/8647.js +0 -1
  412. package/app/.next/static/chunks/1393-5b60aa357f848139.js +0 -3
  413. package/app/.next/static/chunks/5497-825dd88e0a663cfe.js +0 -7
  414. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-d5e2be111394971e.js +0 -15
  415. package/app/.next/static/chunks/app/_global-error/page-d1d78f0818dfa7f5.js +0 -1
  416. package/app/.next/static/chunks/app/api/auth/login/route-d1d78f0818dfa7f5.js +0 -1
  417. package/app/.next/static/chunks/app/api/auth/logout/route-d1d78f0818dfa7f5.js +0 -1
  418. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-d1d78f0818dfa7f5.js +0 -1
  419. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-d1d78f0818dfa7f5.js +0 -1
  420. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-d1d78f0818dfa7f5.js +0 -1
  421. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-d1d78f0818dfa7f5.js +0 -1
  422. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-d1d78f0818dfa7f5.js +0 -1
  423. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-d1d78f0818dfa7f5.js +0 -1
  424. package/app/.next/static/chunks/app/api/cloud/auth/route-d1d78f0818dfa7f5.js +0 -1
  425. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-d1d78f0818dfa7f5.js +0 -1
  426. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-d1d78f0818dfa7f5.js +0 -1
  427. package/app/.next/static/chunks/app/api/cloud/models/alias/route-d1d78f0818dfa7f5.js +0 -1
  428. package/app/.next/static/chunks/app/api/combos/[id]/route-d1d78f0818dfa7f5.js +0 -1
  429. package/app/.next/static/chunks/app/api/combos/route-d1d78f0818dfa7f5.js +0 -1
  430. package/app/.next/static/chunks/app/api/init/route-d1d78f0818dfa7f5.js +0 -1
  431. package/app/.next/static/chunks/app/api/keys/[id]/route-d1d78f0818dfa7f5.js +0 -1
  432. package/app/.next/static/chunks/app/api/keys/route-d1d78f0818dfa7f5.js +0 -1
  433. package/app/.next/static/chunks/app/api/models/alias/route-d1d78f0818dfa7f5.js +0 -1
  434. package/app/.next/static/chunks/app/api/models/route-d1d78f0818dfa7f5.js +0 -1
  435. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-d1d78f0818dfa7f5.js +0 -1
  436. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-d1d78f0818dfa7f5.js +0 -1
  437. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-d1d78f0818dfa7f5.js +0 -1
  438. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-d1d78f0818dfa7f5.js +0 -1
  439. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-d1d78f0818dfa7f5.js +0 -1
  440. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-d1d78f0818dfa7f5.js +0 -1
  441. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-d1d78f0818dfa7f5.js +0 -1
  442. package/app/.next/static/chunks/app/api/pricing/route-d1d78f0818dfa7f5.js +0 -1
  443. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-d1d78f0818dfa7f5.js +0 -1
  444. package/app/.next/static/chunks/app/api/provider-nodes/route-d1d78f0818dfa7f5.js +0 -1
  445. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-d1d78f0818dfa7f5.js +0 -1
  446. package/app/.next/static/chunks/app/api/providers/[id]/models/route-d1d78f0818dfa7f5.js +0 -1
  447. package/app/.next/static/chunks/app/api/providers/[id]/route-d1d78f0818dfa7f5.js +0 -1
  448. package/app/.next/static/chunks/app/api/providers/[id]/test/route-d1d78f0818dfa7f5.js +0 -1
  449. package/app/.next/static/chunks/app/api/providers/client/route-d1d78f0818dfa7f5.js +0 -1
  450. package/app/.next/static/chunks/app/api/providers/route-d1d78f0818dfa7f5.js +0 -1
  451. package/app/.next/static/chunks/app/api/providers/test-batch/route-d1d78f0818dfa7f5.js +0 -1
  452. package/app/.next/static/chunks/app/api/providers/validate/route-d1d78f0818dfa7f5.js +0 -1
  453. package/app/.next/static/chunks/app/api/settings/require-login/route-d1d78f0818dfa7f5.js +0 -1
  454. package/app/.next/static/chunks/app/api/settings/route-d1d78f0818dfa7f5.js +0 -1
  455. package/app/.next/static/chunks/app/api/shutdown/route-d1d78f0818dfa7f5.js +0 -1
  456. package/app/.next/static/chunks/app/api/sync/cloud/route-d1d78f0818dfa7f5.js +0 -1
  457. package/app/.next/static/chunks/app/api/sync/initialize/route-d1d78f0818dfa7f5.js +0 -1
  458. package/app/.next/static/chunks/app/api/tags/route-d1d78f0818dfa7f5.js +0 -1
  459. package/app/.next/static/chunks/app/api/translator/load/route-d1d78f0818dfa7f5.js +0 -1
  460. package/app/.next/static/chunks/app/api/translator/save/route-d1d78f0818dfa7f5.js +0 -1
  461. package/app/.next/static/chunks/app/api/translator/send/route-d1d78f0818dfa7f5.js +0 -1
  462. package/app/.next/static/chunks/app/api/translator/translate/route-d1d78f0818dfa7f5.js +0 -1
  463. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-d1d78f0818dfa7f5.js +0 -1
  464. package/app/.next/static/chunks/app/api/usage/chart/route-d1d78f0818dfa7f5.js +0 -1
  465. package/app/.next/static/chunks/app/api/usage/history/route-d1d78f0818dfa7f5.js +0 -1
  466. package/app/.next/static/chunks/app/api/usage/providers/route-d1d78f0818dfa7f5.js +0 -1
  467. package/app/.next/static/chunks/app/api/usage/request-details/route-d1d78f0818dfa7f5.js +0 -1
  468. package/app/.next/static/chunks/app/api/usage/request-logs/route-d1d78f0818dfa7f5.js +0 -1
  469. package/app/.next/static/chunks/app/api/usage/stream/route-d1d78f0818dfa7f5.js +0 -1
  470. package/app/.next/static/chunks/app/api/v1/api/chat/route-d1d78f0818dfa7f5.js +0 -1
  471. package/app/.next/static/chunks/app/api/v1/chat/completions/route-d1d78f0818dfa7f5.js +0 -1
  472. package/app/.next/static/chunks/app/api/v1/embeddings/route-d1d78f0818dfa7f5.js +0 -1
  473. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-d1d78f0818dfa7f5.js +0 -1
  474. package/app/.next/static/chunks/app/api/v1/messages/route-d1d78f0818dfa7f5.js +0 -1
  475. package/app/.next/static/chunks/app/api/v1/models/route-d1d78f0818dfa7f5.js +0 -1
  476. package/app/.next/static/chunks/app/api/v1/responses/route-d1d78f0818dfa7f5.js +0 -1
  477. package/app/.next/static/chunks/app/api/v1/route-d1d78f0818dfa7f5.js +0 -1
  478. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-d1d78f0818dfa7f5.js +0 -1
  479. package/app/.next/static/chunks/app/api/v1beta/models/route-d1d78f0818dfa7f5.js +0 -1
  480. package/app/.next/static/chunks/app/page-d1d78f0818dfa7f5.js +0 -1
  481. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-d1d78f0818dfa7f5.js +0 -1
  482. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-d1d78f0818dfa7f5.js +0 -1
  483. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-d1d78f0818dfa7f5.js +0 -1
  484. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d1d78f0818dfa7f5.js +0 -1
  485. package/app/.next/static/jWN0ATVbXrki9UzHFr5nv/_buildManifest.js +0 -1
  486. /package/app/.next/server/app/api/{sync/cloud → tunnel/disable}/route.js.nft.json +0 -0
  487. /package/app/.next/server/app/api/{sync/initialize → tunnel/enable}/route.js.nft.json +0 -0
  488. /package/app/.next/static/{jWN0ATVbXrki9UzHFr5nv → 0kBQAQeQcXjhcg1PkyrJY}/_ssgManifest.js +0 -0
@@ -0,0 +1,15 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2326],{22016:(e,t,s)=>{Promise.resolve().then(s.bind(s,39378))},39378:(e,t,s)=>{"use strict";s.d(t,{default:()=>f});var l=s(95155),r=s(12115),a=s(35497);let i={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-5-20251101"},{id:"sonnet",name:"Claude Sonnet",alias:"sonnet",envKey:"ANTHROPIC_DEFAULT_SONNET_MODEL",defaultValue:"cc/claude-sonnet-4-5-20250929"},{id:"haiku",name:"Claude Haiku",alias:"haiku",envKey:"ANTHROPIC_DEFAULT_HAIKU_MODEL",defaultValue:"cc/claude-haiku-4-5-20251001"}]},codex:{id:"codex",name:"OpenAI Codex CLI",image:"/providers/codex.png",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},droid:{id:"droid",name:"Factory Droid",image:"/providers/droid.png",color:"#00D4FF",description:"Factory Droid AI Assistant",configType:"custom"},openclaw:{id:"openclaw",name:"Open Claw",image:"/providers/openclaw.png",color:"#FF6B35",description:"Open Claw AI Assistant",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.png",color:"#000000",description:"Cursor AI Code Editor",configType:"guide",requiresCloud:!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 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 Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to CLINE 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"}]},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:`{
2
+ "apiBase": "{{baseUrl}}",
3
+ "title": "{{model}}",
4
+ "model": "{{model}}",
5
+ "provider": "openai",
6
+ "apiKey": "{{apiKey}}"
7
+ }`}},antigravity:{id:"antigravity",name:"Antigravity",image:"/providers/antigravity.png",color:"#4285F4",description:"Google Antigravity IDE with MITM",configType:"mitm",modelAliases:["claude-opus-4-6-thinking","claude-sonnet-4-6-thinking","gemini-3-pro-high"],defaultModels:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",alias:"claude-opus-4-6-thinking"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"claude-sonnet-4-6"},{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-pro-high",name:"Gemini 3 Pro High",alias:"gemini-3-pro-high"},{id:"gemini-3-flash",name:"Gemini 3 Flash",alias:"gemini-3-flash"}]}};var n=s(28777),o=s(5772);let d="https://9router.com";function c({tool:e,isExpanded:t,onToggle:s,activeProviders:i,modelMappings:n,onModelMappingChange:c,baseUrl:x,hasActiveProviders:m,apiKeys:p,cloudEnabled:u}){let h,g,y,[f,b]=(0,r.useState)(null),[j,v]=(0,r.useState)(!1),[N,w]=(0,r.useState)(!1),[k,C]=(0,r.useState)(!1),[S,_]=(0,r.useState)(null),[A,E]=(0,r.useState)(!1),[O,I]=(0,r.useState)(!1),[P,M]=(0,r.useState)(null),[R,T]=(0,r.useState)(""),[$,K]=(0,r.useState)({}),[L,U]=(0,r.useState)(!1),[F,z]=(0,r.useState)(""),D=(0,r.useRef)(!1),H=(()=>{if(!f?.installed)return null;let e=f.settings?.env?.ANTHROPIC_BASE_URL;if(!e)return"not_configured";let t=e.includes("localhost")||e.includes("127.0.0.1"),s=u&&d&&e.startsWith(d),l=x&&e.startsWith(x);return t||s||l?"configured":"other"})();(0,r.useEffect)(()=>{p?.length>0&&!R&&T(p[0].key)},[p,R]),(0,r.useEffect)(()=>{t&&!f&&(W(),B())},[t,f]);let B=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(f?.installed&&!D.current){D.current=!0;let t=f.settings?.env||{};e.defaultModels.forEach(e=>{if(e.envKey){let s=t[e.envKey]||e.defaultValue||"";s&&c(e.alias,s)}});let s=t.ANTHROPIC_AUTH_TOKEN;s&&p?.some(e=>e.key===s)&&T(s)}},[f,p,e.defaultModels,c]);let W=async()=>{v(!0);try{let e=await fetch("/api/cli-tools/claude-settings"),t=await e.json();b(t)}catch(e){b({installed:!1,error:e.message})}finally{v(!1)}},q=()=>{let e=F||x;return e.endsWith("/v1")?e:`${e}/v1`},G=async()=>{w(!0),_(null);try{let t={ANTHROPIC_BASE_URL:q()},s=R?.trim()||(p?.length>0?p[0].key:null)||(u?null:"sk_9router");s&&(t.ANTHROPIC_AUTH_TOKEN=s),e.defaultModels.forEach(e=>{let s=n[e.alias];s&&e.envKey&&(t[e.envKey]=s)});let l=await fetch("/api/cli-tools/claude-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({env:t})}),r=await l.json();l.ok?(_({type:"success",text:"Settings applied successfully!"}),b(e=>({...e,hasBackup:!0,settings:{...e?.settings,env:t}}))):_({type:"error",text:r.error||"Failed to apply settings"})}catch(e){_({type:"error",text:e.message})}finally{w(!1)}},J=async()=>{C(!0),_(null);try{let t=await fetch("/api/cli-tools/claude-settings",{method:"DELETE"}),s=await t.json();t.ok?(_({type:"success",text:"Settings reset successfully!"}),e.defaultModels.forEach(e=>c(e.alias,e.defaultValue||"")),T("")):_({type:"error",text:s.error||"Failed to reset settings"})}catch(e){_({type:"error",text:e.message})}finally{C(!1)}};return(0,l.jsxs)(a.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(o.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===H&&(0,l.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"===H&&(0,l.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"===H&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[j&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Claude CLI..."})]}),!j&&f&&!f.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Claude CLI not installed"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Claude CLI to use this feature."})]}),(0,l.jsxs)(a.$n,{variant:"outline",size:"sm",onClick:()=>E(!A),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:A?"expand_less":"help"}),A?"Hide":"How to Install"]})]}),A&&(0,l.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,l.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,l.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,l.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,l.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"claude"})," to verify."]})]})]})]}),!j&&f?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[f?.settings?.env?.ANTHROPIC_BASE_URL&&(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:f.settings.env.ANTHROPIC_BASE_URL})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:(h=F||x).endsWith("/v1")?h:`${h}/v1`,onChange:e=>z(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"}),F&&F!==x&&(0,l.jsx)("button",{onClick:()=>z(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),p.length>0?(0,l.jsx)("select",{value:R,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:p.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.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)"})]}),e.defaultModels.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:e.name}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:n[e.alias]||"",onChange:t=>c(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,l.jsx)("button",{onClick:()=>{M(e.alias),I(!0)},disabled:!m,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${m?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),n[e.alias]&&(0,l.jsx)("button",{onClick:()=>c(e.alias,""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.alias))]}),S&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===S.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===S.type?"check_circle":"error"}),(0,l.jsx)("span",{children:S.text})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)(a.$n,{variant:"primary",size:"sm",onClick:G,disabled:!m,loading:N,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(a.$n,{variant:"outline",size:"sm",onClick:J,disabled:!f?.has9Router,loading:k,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(a.$n,{variant:"ghost",size:"sm",onClick:()=>U(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(a.rq,{isOpen:O,onClose:()=>I(!1),onSelect:e=>{P&&c(P,e.value)},selectedModel:P?n[P]:null,activeProviders:i,modelAliases:$,title:`Select model for ${P}`}),(0,l.jsx)(a.uR,{isOpen:L,onClose:()=>U(!1),title:"Claude CLI - Manual Configuration",configs:(g=R&&R.trim()?R:u?"<API_KEY_FROM_DASHBOARD>":"sk_9router",y={ANTHROPIC_BASE_URL:q(),ANTHROPIC_AUTH_TOKEN:g},e.defaultModels.forEach(e=>{let t=n[e.alias];t&&e.envKey&&(y[e.envKey]=t)}),[{filename:"~/.claude/settings.json",content:JSON.stringify({env:y},null,2)}])})]})}function x({tool:e,isExpanded:t,onToggle:s,baseUrl:i,apiKeys:n,activeProviders:d,cloudEnabled:c}){let x,m,p,[u,h]=(0,r.useState)(null),[g,y]=(0,r.useState)(!1),[f,b]=(0,r.useState)(!1),[j,v]=(0,r.useState)(!1),[N,w]=(0,r.useState)(null),[k,C]=(0,r.useState)(!1),[S,_]=(0,r.useState)(""),[A,E]=(0,r.useState)(""),[O,I]=(0,r.useState)(!1),[P,M]=(0,r.useState)({}),[R,T]=(0,r.useState)(!1),[$,K]=(0,r.useState)("");(0,r.useEffect)(()=>{n?.length>0&&!S&&_(n[0].key)},[n,S]),(0,r.useEffect)(()=>{t&&!u&&(z(),L())},[t,u]);let L=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&M(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,r.useEffect)(()=>{if(u?.config){let e=u.config.match(/^model\s*=\s*"([^"]+)"/m);e&&E(e[1])}},[u]);let U=u?.installed?u.config?u.config.includes(i)||u.config.includes("localhost")||u.config.includes("127.0.0.1")?"configured":"other":"not_configured":null,F=()=>{let e=$||`${i}/v1`;return e.endsWith("/v1")?e:`${e}/v1`},z=async()=>{y(!0);try{let e=await fetch("/api/cli-tools/codex-settings"),t=await e.json();h(t)}catch(e){h({installed:!1,error:e.message})}finally{y(!1)}},D=async()=>{b(!0),w(null);try{let e=S&&S.trim()||c?S:"sk_9router",t=await fetch("/api/cli-tools/codex-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:F(),apiKey:e,model:A})}),s=await t.json();t.ok?(w({type:"success",text:"Settings applied successfully!"}),z()):w({type:"error",text:s.error||"Failed to apply settings"})}catch(e){w({type:"error",text:e.message})}finally{b(!1)}},H=async()=>{v(!0),w(null);try{let e=await fetch("/api/cli-tools/codex-settings",{method:"DELETE"}),t=await e.json();e.ok?(w({type:"success",text:"Settings reset successfully!"}),E(""),z()):w({type:"error",text:t.error||"Failed to reset settings"})}catch(e){w({type:"error",text:e.message})}finally{v(!1)}};return(0,l.jsxs)(a.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(o.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===U&&(0,l.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"===U&&(0,l.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"===U&&(0,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[g&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Codex CLI..."})]}),!g&&u&&!u.installed&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Codex CLI not installed"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Codex CLI to use auto-apply feature."})]}),(0,l.jsxs)(a.$n,{variant:"outline",size:"sm",onClick:()=>C(!k),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:k?"expand_less":"help"}),k?"Hide":"How to Install"]})]}),k&&(0,l.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,l.jsx)("h4",{className:"font-medium mb-3",children:"Installation Guide"}),(0,l.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-text-muted mb-1",children:"macOS / Linux / Windows:"}),(0,l.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,l.jsxs)("p",{className:"text-text-muted",children:["After installation, run ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"codex"})," to verify."]}),(0,l.jsx)("div",{className:"pt-2 border-t border-border",children:(0,l.jsxs)("p",{className:"text-text-muted text-xs",children:["Codex uses ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"~/.codex/auth.json"})," with ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"OPENAI_API_KEY"}),'. Click "Apply" to auto-configure.']})})]})]})]}),!g&&u?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[u?.config&&((m=(x=u.config.match(/base_url\s*=\s*"([^"]+)"/))?x[1]:null)?(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:m})]}):null),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:$||`${i}/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"}),$&&$!==`${i}/v1`&&(0,l.jsx)("button",{onClick:()=>K(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),n.length>0?(0,l.jsx)("select",{value:S,onChange: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:n.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.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,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Model"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:A,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,l.jsx)("button",{onClick:()=>I(!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"}),A&&(0,l.jsx)("button",{onClick:()=>E(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),N&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===N.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===N.type?"check_circle":"error"}),(0,l.jsx)("span",{children:N.text})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)(a.$n,{variant:"primary",size:"sm",onClick:D,disabled:!S||!A,loading:f,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(a.$n,{variant:"outline",size:"sm",onClick:H,disabled:!u.has9Router,loading:j,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(a.$n,{variant:"ghost",size:"sm",onClick:()=>T(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(a.rq,{isOpen:O,onClose:()=>I(!1),onSelect:e=>{E(e.value),I(!1)},selectedModel:A,activeProviders:d,modelAliases:P,title:"Select Model for Codex"}),(0,l.jsx)(a.uR,{isOpen:R,onClose:()=>T(!1),title:"Codex CLI - Manual Configuration",configs:(p=S&&S.trim()?S:c?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.codex/config.toml",content:`# 9Router Configuration for Codex CLI
8
+ model = "${A}"
9
+ model_provider = "9router"
10
+
11
+ [model_providers.9router]
12
+ name = "9Router"
13
+ base_url = "${F()}"
14
+ wire_api = "responses"
15
+ `},{filename:"~/.codex/auth.json",content:JSON.stringify({OPENAI_API_KEY:p},null,2)}])})]})}let m="https://9router.com";function p({tool:e,isExpanded:t,onToggle:s,baseUrl:i,hasActiveProviders:n,apiKeys:d,activeProviders:c,cloudEnabled:x}){let p,u,h,g,[y,f]=(0,r.useState)(null),[b,j]=(0,r.useState)(!1),[v,N]=(0,r.useState)(!1),[w,k]=(0,r.useState)(!1),[C,S]=(0,r.useState)(null),[_,A]=(0,r.useState)(""),[E,O]=(0,r.useState)(""),[I,P]=(0,r.useState)(!1),[M,R]=(0,r.useState)({}),[T,$]=(0,r.useState)(!1),[K,L]=(0,r.useState)(""),U=(0,r.useRef)(!1),F=(()=>{if(!y?.installed)return null;let e=y.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=x&&m&&e.baseUrl?.startsWith(m),l=i&&e.baseUrl?.startsWith(i);return t||s||l?"configured":"other"})();(0,r.useEffect)(()=>{d?.length>0&&!_&&A(d[0].key)},[d,_]),(0,r.useEffect)(()=>{t&&!y&&(D(),z())},[t,y]);let z=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(y?.installed&&!U.current){U.current=!0;let e=y.settings?.customModels?.find(e=>"custom:9Router-0"===e.id);e&&(e.model&&O(e.model),e.apiKey&&d?.some(t=>t.key===e.apiKey)&&A(e.apiKey))}},[y,d]);let D=async()=>{j(!0);try{let e=await fetch("/api/cli-tools/droid-settings"),t=await e.json();f(t)}catch(e){f({installed:!1,error:e.message})}finally{j(!1)}},H=()=>{let e=K||i;return e.endsWith("/v1")?e:`${e}/v1`},B=async()=>{N(!0),S(null);try{let e=_?.trim()||(d?.length>0?d[0].key:null)||(x?null:"sk_9router"),t=await fetch("/api/cli-tools/droid-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:H(),apiKey:e,model:E})}),s=await t.json();t.ok?(S({type:"success",text:"Settings applied successfully!"}),D()):S({type:"error",text:s.error||"Failed to apply settings"})}catch(e){S({type:"error",text:e.message})}finally{N(!1)}},W=async()=>{k(!0),S(null);try{let e=await fetch("/api/cli-tools/droid-settings",{method:"DELETE"}),t=await e.json();e.ok?(S({type:"success",text:"Settings reset successfully!"}),O(""),A(""),D()):S({type:"error",text:t.error||"Failed to reset settings"})}catch(e){S({type:"error",text:e.message})}finally{k(!1)}};return(0,l.jsxs)(a.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(o.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===F&&(0,l.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,l.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,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[b&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Factory Droid CLI..."})]}),!b&&y&&!y.installed&&(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Factory Droid CLI not installed"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Factory Droid CLI to use this feature."})]})]}),!b&&y?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[y?.settings?.customModels?.find(e=>"custom:9Router-0"===e.id)?.baseUrl&&(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:y.settings.customModels.find(e=>"custom:9Router-0"===e.id).baseUrl})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:(p=K||i).endsWith("/v1")?p:`${p}/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!==i&&(0,l.jsx)("button",{onClick:()=>L(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),d.length>0?(0,l.jsx)("select",{value:_,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,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.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,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Model"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:E,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,l.jsx)("button",{onClick:()=>P(!0),disabled:!n,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${n?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),E&&(0,l.jsx)("button",{onClick:()=>O(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),C&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===C.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===C.type?"check_circle":"error"}),(0,l.jsx)("span",{children:C.text})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)(a.$n,{variant:"primary",size:"sm",onClick:B,disabled:!E,loading:v,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(a.$n,{variant:"outline",size:"sm",onClick:W,disabled:!y?.has9Router,loading:w,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(a.$n,{variant:"ghost",size:"sm",onClick:()=>$(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(a.rq,{isOpen:I,onClose:()=>P(!1),onSelect:e=>{O(e.value),P(!1)},selectedModel:E,activeProviders:c,modelAliases:M,title:"Select Model for Factory Droid"}),(0,l.jsx)(a.uR,{isOpen:T,onClose:()=>$(!1),title:"Factory Droid - Manual Configuration",configs:(u=_&&_.trim()?_:x?"<API_KEY_FROM_DASHBOARD>":"sk_9router",h={customModels:[{model:E||"provider/model-id",id:"custom:9Router-0",index:0,baseUrl:H(),apiKey:u,displayName:E||"provider/model-id",maxOutputTokens:131072,noImageSupport:!1,provider:"openai"}]},g="u">typeof navigator&&navigator.platform,[{filename:g?.toLowerCase().includes("win")?"%USERPROFILE%\\.factory\\settings.json":"~/.factory/settings.json",content:JSON.stringify(h,null,2)}])})]})}function u({tool:e,isExpanded:t,onToggle:s,baseUrl:i,hasActiveProviders:n,apiKeys:d,activeProviders:c,cloudEnabled:x}){let m,p,[u,h]=(0,r.useState)(null),[g,y]=(0,r.useState)(!1),[f,b]=(0,r.useState)(!1),[j,v]=(0,r.useState)(!1),[N,w]=(0,r.useState)(null),[k,C]=(0,r.useState)(""),[S,_]=(0,r.useState)(""),[A,E]=(0,r.useState)(!1),[O,I]=(0,r.useState)({}),[P,M]=(0,r.useState)(!1),[R,T]=(0,r.useState)(""),$=(0,r.useRef)(!1),K=(()=>{if(!u?.installed)return null;let e=u.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=i&&e.baseUrl?.startsWith(i);return t||s?"configured":"other"})();(0,r.useEffect)(()=>{d?.length>0&&!k&&C(d[0].key)},[d,k]),(0,r.useEffect)(()=>{t&&!u&&(U(),L())},[t,u]);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(u?.installed&&!$.current){$.current=!0;let e=u.settings?.models?.providers?.["9router"];if(e){let t=u.settings?.agents?.defaults?.model?.primary;t&&_(t.replace("9router/","")),e.apiKey&&d?.some(t=>t.key===e.apiKey)&&C(e.apiKey)}}},[u,d]);let U=async()=>{y(!0);try{let e=await fetch("/api/cli-tools/openclaw-settings"),t=await e.json();h(t)}catch(e){h({installed:!1,error:e.message})}finally{y(!1)}},F=()=>window.location.origin.replace("://localhost","://127.0.0.1"),z=()=>{let e=R||F();return e.endsWith("/v1")?e:`${e}/v1`},D=async()=>{b(!0),w(null);try{let e=k?.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:z(),apiKey:e,model:S})}),s=await t.json();t.ok?(w({type:"success",text:"Settings applied successfully!"}),U()):w({type:"error",text:s.error||"Failed to apply settings"})}catch(e){w({type:"error",text:e.message})}finally{b(!1)}},H=async()=>{v(!0),w(null);try{let e=await fetch("/api/cli-tools/openclaw-settings",{method:"DELETE"}),t=await e.json();e.ok?(w({type:"success",text:"Settings reset successfully!"}),_(""),C(""),U()):w({type:"error",text:t.error||"Failed to reset settings"})}catch(e){w({type:"error",text:e.message})}finally{v(!1)}};return(0,l.jsxs)(a.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(o.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),"configured"===K&&(0,l.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,l.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,l.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,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[g&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:"Checking Open Claw CLI..."})]}),!g&&u&&!u.installed&&(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"Open Claw CLI not installed"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Please install Open Claw CLI to use this feature."})]})]}),!g&&u?.installed&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[u?.settings?.models?.providers?.["9router"]?.baseUrl&&(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Current"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:u.settings.models.providers["9router"].baseUrl})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Base URL"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:(m=R||F()).endsWith("/v1")?m:`${m}/v1`,onChange:e=>T(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!==i&&(0,l.jsx)("button",{onClick:()=>T(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:"Reset to default",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),d.length>0?(0,l.jsx)("select",{value:k,onChange:e=>C(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,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.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,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"Model"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:S,onChange: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,l.jsx)("button",{onClick:()=>E(!0),disabled:!n,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${n?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),S&&(0,l.jsx)("button",{onClick:()=>_(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),N&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===N.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===N.type?"check_circle":"error"}),(0,l.jsx)("span",{children:N.text})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)(a.$n,{variant:"primary",size:"sm",onClick:D,disabled:!S,loading:f,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,l.jsxs)(a.$n,{variant:"outline",size:"sm",onClick:H,disabled:!u?.has9Router,loading:j,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,l.jsxs)(a.$n,{variant:"ghost",size:"sm",onClick:()=>M(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]})]})]}),(0,l.jsx)(a.rq,{isOpen:A,onClose:()=>E(!1),onSelect:e=>{_(e.value),E(!1)},selectedModel:S,activeProviders:c,modelAliases:O,title:"Select Model for Open Claw"}),(0,l.jsx)(a.uR,{isOpen:P,onClose:()=>M(!1),title:"Open Claw - Manual Configuration",configs:(p=k&&k.trim()?k:x?"<API_KEY_FROM_DASHBOARD>":"sk_9router",[{filename:"~/.openclaw/openclaw.json",content:JSON.stringify({agents:{defaults:{model:{primary:`9router/${S||"provider/model-id"}`}}},models:{providers:{"9router":{baseUrl:z(),apiKey:p,api:"openai-completions",models:[{id:S||"provider/model-id",name:(S||"provider/model-id").split("/").pop()}]}}}},null,2)}])})]})}function h({toolId:e,tool:t,isExpanded:s,onToggle:i,baseUrl:n,apiKeys:d,activeProviders:c=[],cloudEnabled:x=!1}){let[m,p]=(0,r.useState)(null),[u,h]=(0,r.useState)(!1),[g,y]=(0,r.useState)(""),[f,b]=(0,r.useState)(()=>d?.length>0?d[0].key:""),j=e=>{let t=f&&f.trim()?f:x?"your-api-key":"sk_9router",s=n||"http://localhost:20128",l=s.endsWith("/v1")?s:`${s}/v1`;return e.replace(/\{\{baseUrl\}\}/g,l).replace(/\{\{apiKey\}\}/g,t).replace(/\{\{model\}\}/g,g||"provider/model-id")},v=async(e,t)=>{await navigator.clipboard.writeText(j(e)),p(t),setTimeout(()=>p(null),2e3)},N=c.length>0,w=()=>!t.requiresCloud||!!x;return(0,l.jsxs)(a.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:i,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",children:t.image?(0,l.jsx)(o.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,l.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:t.color},children:t.icon}):(0,l.jsx)(o.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:t.name}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:t.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${s?"rotate-180":""}`,children:"expand_more"})]}),s&&(0,l.jsx)("div",{className:"mt-6 pt-6 border-t border-border",children:t.guideSteps?(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[t.notes&&0!==t.notes.length?(0,l.jsx)("div",{className:"flex flex-col gap-2 mb-4",children:t.notes.map((e,t)=>{if("cloudCheck"===e.type&&x)return null;let s="warning"===e.type,r="cloudCheck"===e.type&&!x,a="bg-blue-500/10 border-blue-500/30",i="text-blue-600 dark:text-blue-400",n="text-blue-500",o="info";return s?(a="bg-yellow-500/10 border-yellow-500/30",i="text-yellow-600 dark:text-yellow-400",n="text-yellow-500",o="warning"):r&&(a="bg-red-500/10 border-red-500/30",i="text-red-600 dark:text-red-400",n="text-red-500",o="error"),(0,l.jsxs)("div",{className:`flex items-start gap-3 p-3 rounded-lg border ${a}`,children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-lg ${n}`,children:o}),(0,l.jsx)("p",{className:`text-sm ${i}`,children:e.text})]},t)})}):null,w()&&t.guideSteps.map(e=>(0,l.jsxs)("div",{className:"flex items-start gap-4",children:[(0,l.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,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsx)("p",{className:"font-medium text-text",children:e.title}),e.desc&&(0,l.jsx)("p",{className:"text-sm text-text-muted mt-0.5",children:e.desc}),"apiKeySelector"===e.type&&(0,l.jsx)("div",{className:"mt-2 flex items-center gap-2",children:d&&d.length>0?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("select",{value:f,onChange:e=>b(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,l.jsx)("option",{value:e.key,children:e.key},e.id))}),(0,l.jsx)("button",{onClick:()=>v(f,"apiKey"),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:"apiKey"===m?"check":"content_copy"})})]}):(0,l.jsx)("span",{className:"text-sm text-text-muted",children:x?"No API keys - Create one in Keys page":"sk_9router"})}),"modelSelector"===e.type&&(0,l.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,l.jsx)("input",{type:"text",value:g,onChange:e=>y(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,l.jsx)("button",{onClick:()=>h(!0),disabled:!N,className:`shrink-0 px-3 py-2 rounded-lg border text-sm transition-colors ${N?"bg-bg-secondary border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select Model"}),g&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{onClick:()=>v(g,"model"),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:"model"===m?"check":"content_copy"})}),(0,l.jsx)("button",{onClick:()=>y(""),className:"p-2 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:"close"})})]})]}),e.value&&(0,l.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,l.jsx)("code",{className:"flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm font-mono border border-border truncate",children:j(e.value)}),e.copyable&&(0,l.jsx)("button",{onClick:()=>v(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,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:m===`${e.step}-${e.title}`?"check":"content_copy"})})]})]})]},e.step)),w()&&t.codeBlock&&(0,l.jsxs)("div",{className:"mt-2",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,l.jsx)("span",{className:"text-xs text-text-muted uppercase tracking-wide",children:t.codeBlock.language}),(0,l.jsxs)("button",{onClick:()=>v(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,l.jsx)("span",{className:"material-symbols-outlined text-sm",children:"codeblock"===m?"check":"content_copy"}),"codeblock"===m?"Copied!":"Copy"]})]}),(0,l.jsx)("pre",{className:"p-4 bg-bg-secondary rounded-lg border border-border overflow-x-auto",children:(0,l.jsx)("code",{className:"text-sm font-mono whitespace-pre",children:j(t.codeBlock.code)})})]})]}):(0,l.jsx)("p",{className:"text-text-muted text-sm",children:"Coming soon..."})}),(0,l.jsx)(a.rq,{isOpen:u,onClose:()=>h(!1),onSelect:e=>{y(e.value)},selectedModel:g,activeProviders:c,title:"Select Model"})]})}function g({tool:e,isExpanded:t,onToggle:s,baseUrl:i,apiKeys:n,activeProviders:d,hasActiveProviders:c,cloudEnabled:x}){let[m,p]=(0,r.useState)(null),[u,h]=(0,r.useState)(!1),[g,y]=(0,r.useState)(!1),[f,b]=(0,r.useState)(""),[j,v]=(0,r.useState)(""),[N,w]=(0,r.useState)(null),[k,C]=(0,r.useState)({}),[S,_]=(0,r.useState)(!1),[A,E]=(0,r.useState)(null);(0,r.useEffect)(()=>{n?.length>0&&!j&&v(n[0].key)},[n,j]),(0,r.useEffect)(()=>{t&&!m&&(I(),O())},[t,m]);let O=async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm/alias?tool=antigravity");if(e.ok){let t=(await e.json()).aliases||{};Object.keys(t).length>0&&C(t)}}catch(e){console.log("Error loading saved mappings:",e)}},I=async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm");if(e.ok){let t=await e.json();p(t)}}catch(e){console.log("Error fetching status:",e),p({running:!1})}},P="u">typeof navigator&&navigator.userAgent?.includes("Windows"),M=async e=>{h(!0),w(null);try{let t=j?.trim()||(n?.length>0?n[0].key:null)||(x?null:"sk_9router"),s=await fetch("/api/cli-tools/antigravity-mitm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:t,sudoPassword:e})}),l=await s.json();s.ok?(w({type:"success",text:"MITM started"}),y(!1),b(""),I()):w({type:"error",text:l.error||"Failed to start"})}catch(e){w({type:"error",text:e.message})}finally{h(!1)}},R=async e=>{h(!0),w(null);try{let t=await fetch("/api/cli-tools/antigravity-mitm",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:e})}),s=await t.json();t.ok?(w({type:"success",text:"MITM stopped"}),y(!1),b(""),I()):w({type:"error",text:s.error||"Failed to stop"})}catch(e){w({type:"error",text:e.message})}finally{h(!1)}},T=()=>{f.trim()?m?.running?R(f):M(f):w({type:"error",text:"Sudo password is required"})},$=(e,t)=>{C(s=>({...s,[e]:t}))},K=async()=>{h(!0),w(null);try{let e=await fetch("/api/cli-tools/antigravity-mitm/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:"antigravity",mappings:k})});if(!e.ok){let t=await e.json();throw Error(t.error||"Failed to save mappings")}w({type:"success",text:"Mappings saved!"})}catch(e){w({type:"error",text:e.message})}finally{h(!1)}},L=m?.running;return(0,l.jsxs)(a.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(o.default,{src:"/providers/antigravity.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,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),L?(0,l.jsx)(a.Ex,{variant:"success",size:"sm",children:"Active"}):(0,l.jsx)(a.Ex,{variant:"default",size:"sm",children:"Inactive"})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[(0,l.jsx)("div",{className:"flex items-center gap-2",children:L?(0,l.jsxs)("button",{onClick:()=>{P||m?.hasCachedPassword?R(""):(y(!0),w(null))},disabled:u,className:"px-4 py-2 rounded-lg bg-red-500/10 border border-red-500/30 text-red-500 font-medium text-sm flex items-center gap-2 hover:bg-red-500/20 transition-colors disabled:opacity-50",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"stop_circle"}),"Stop MITM"]}):(0,l.jsxs)("button",{onClick:()=>{P||m?.hasCachedPassword?M(""):(y(!0),w(null))},disabled:u||!c,className:"px-4 py-2 rounded-lg bg-primary/10 border border-primary/30 text-primary font-medium text-sm flex items-center gap-2 hover:bg-primary/20 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"play_circle"}),"Start MITM"]})}),N?.type==="error"&&(0,l.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,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,l.jsx)("span",{children:N.text})]}),L&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:"API Key"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),n.length>0?(0,l.jsx)("select",{value:j,onChange:e=>v(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:n.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.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)"})]}),e.defaultModels.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:e.name}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:k[e.alias]||"",onChange:t=>$(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,l.jsx)("button",{onClick:()=>{E(e.alias),_(!0)},disabled:!c,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${c?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"}),k[e.alias]&&(0,l.jsx)("button",{onClick:()=>$(e.alias,""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.alias)),(0,l.jsx)("div",{className:"flex items-center gap-2",children:(0,l.jsxs)(a.$n,{variant:"primary",size:"sm",onClick:K,disabled:u||0===Object.keys(k).length,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Save Mappings"]})})]}),!L&&(0,l.jsxs)("div",{className:"flex flex-col gap-1.5 px-1",children:[(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:"How it works:"})," Intercepts Antigravity traffic via DNS redirect, letting you reroute models through 9Router."]}),(0,l.jsxs)("div",{className:"flex flex-col gap-0.5 text-[11px] text-text-muted",children:[(0,l.jsx)("span",{children:"1. Generates SSL cert & adds to system keychain"}),(0,l.jsxs)("span",{children:["2. Redirects ",(0,l.jsx)("code",{className:"text-[10px] bg-surface px-1 rounded",children:"daily-cloudcode-pa.googleapis.com"})," → localhost"]}),(0,l.jsx)("span",{children:"3. Maps Antigravity models to any provider via 9Router"})]})]})]}),(0,l.jsx)(a.aF,{isOpen:g,onClose:()=>{y(!1),b(""),w(null)},title:"Sudo Password Required",size:"sm",children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Required for SSL certificate and DNS configuration"})]}),(0,l.jsx)(a.pd,{type:"password",placeholder:"Enter sudo password",value:f,onChange:e=>b(e.target.value),onKeyDown:e=>{"Enter"!==e.key||u||T()}}),N&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===N.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===N.type?"check_circle":"error"}),(0,l.jsx)("span",{children:N.text})]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,l.jsx)(a.$n,{variant:"ghost",size:"sm",onClick:()=>{y(!1),b(""),w(null)},disabled:u,children:"Cancel"}),(0,l.jsx)(a.$n,{variant:"primary",size:"sm",onClick:T,loading:u,children:"Confirm"})]})]})}),(0,l.jsx)(a.rq,{isOpen:S,onClose:()=>_(!1),onSelect:e=>{A&&C(t=>({...t,[A]:e.value}))},selectedModel:A?k[A]:null,activeProviders:d,title:`Select model for ${A}`})]})}let y="https://9router.com";function f({machineId:e}){let t,s,o,[d,m]=(0,r.useState)([]),[f,b]=(0,r.useState)(!0),[j,v]=(0,r.useState)(null),[N,w]=(0,r.useState)({}),[k,C]=(0,r.useState)(!1),[S,_]=(0,r.useState)(!1),[A,E]=(0,r.useState)(""),[O,I]=(0,r.useState)([]);(0,r.useEffect)(()=>{R(),P(),M()},[]);let P=async()=>{try{let[e,t]=await Promise.all([fetch("/api/settings"),fetch("/api/tunnel/status")]);if(e.ok){let t=await e.json();C(t.cloudEnabled||!1)}if(t.ok){let e=await t.json();_(e.enabled||!1),E(e.tunnelUrl||"")}}catch(e){console.log("Error loading settings:",e)}},M=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();I(t.keys||[])}}catch(e){console.log("Error fetching API keys:",e)}},R=async()=>{try{let e=await fetch("/api/providers"),t=await e.json();e.ok&&m(t.connections||[])}catch(e){console.log("Error fetching connections:",e)}finally{b(!1)}},T=()=>d.filter(e=>!1!==e.isActive),$=(0,r.useCallback)((e,t,s)=>{w(l=>l[e]?.[t]===s?l:{...l,[e]:{...l[e],[t]:s}})},[]);if(f)return(0,l.jsx)("div",{className:"flex flex-col gap-6",children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsx)(a.Qv,{}),(0,l.jsx)(a.Qv,{}),(0,l.jsx)(a.Qv,{})]})});let K=(t=T(),s=[],o=new Set,t.forEach(e=>{let t=n.Xg[e.provider]||e.provider;(0,n.KC)(e.provider).forEach(l=>{let r=`${t}/${l.id}`;o.has(r)||(o.add(r),s.push({value:r,label:`${t}/${l.id}`,provider:e.provider,alias:t,connectionName:e.name,modelId:l.id}))})}),s).length>0;return(0,l.jsxs)("div",{className:"flex flex-col gap-6",children:[!K&&(0,l.jsx)(a.Zp,{className:"border-yellow-500/50 bg-yellow-500/5",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:"No active providers"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Please add and connect providers first to configure CLI tools."})]})]})}),(0,l.jsx)("div",{className:"flex flex-col gap-4",children:Object.entries(i).map(([e,t])=>((e,t)=>{let s={tool:t,isExpanded:j===e,onToggle:()=>v(j===e?null:e),baseUrl:S&&A?A:k&&y?y:window.location.origin,apiKeys:O};switch(e){case"claude":return(0,l.jsx)(c,{...s,activeProviders:T(),modelMappings:N[e]||{},onModelMappingChange:(t,s)=>$(e,t,s),hasActiveProviders:K,cloudEnabled:k},e);case"codex":return(0,l.jsx)(x,{...s,activeProviders:T(),cloudEnabled:k},e);case"droid":return(0,l.jsx)(p,{...s,activeProviders:T(),hasActiveProviders:K,cloudEnabled:k},e);case"openclaw":return(0,l.jsx)(u,{...s,activeProviders:T(),hasActiveProviders:K,cloudEnabled:k},e);case"antigravity":return(0,l.jsx)(g,{...s,activeProviders:T(),hasActiveProviders:K,cloudEnabled:k},e);default:return(0,l.jsx)(h,{toolId:e,...s,activeProviders:T(),cloudEnabled:k},e)}})(e,t))})]})}}},e=>{e.O(0,[5370,4335,600,1672,8729,5497,8441,3794,7358],()=>e(e.s=22016)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[204,335,552,747,748,907,931,992,1070,1088,1110,1118,1200,1288,1382,1451,1512,1566,1666,1860,1949,2121,2296,2797,3025,3038,3079,3102,3397,3472,3549,4286,4422,4896,5018,5079,5107,5177,5211,5466,5685,5745,5922,6268,6529,6580,6740,6819,6988,7241,7429,7442,7520,7758,7851,8167,8207,8246,8453,8489,8573,8648,8814,8948,8974,8975,9027,9069,9088,9141,9321,9461],{6822:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=6822)),_N_E=_.O()}]);
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9router-app",
3
- "version": "0.2.87",
3
+ "version": "0.2.89",
4
4
  "description": "9Router web dashboard",
5
5
  "private": true,
6
6
  "scripts": {
package/cli.js CHANGED
@@ -413,17 +413,17 @@ checkForUpdate().then((latestVersion) => {
413
413
  async function showInterfaceMenu(latestVersion) {
414
414
  const { selectMenu } = require("./src/cli/utils/input");
415
415
  const { clearScreen } = require("./src/cli/utils/display");
416
- const { getEndpoint, CLOUD_URL } = require("./src/cli/utils/endpoint");
416
+ const { getEndpoint } = require("./src/cli/utils/endpoint");
417
417
 
418
418
  clearScreen();
419
419
 
420
420
  const displayHost = host === DEFAULT_HOST ? "localhost" : host;
421
421
 
422
- // Detect cloud mode for server URL display
422
+ // Detect tunnel/local mode for server URL display
423
423
  let serverUrl;
424
424
  try {
425
- const { cloudEnabled } = await getEndpoint(port);
426
- serverUrl = cloudEnabled ? CLOUD_URL : `http://${displayHost}:${port}`;
425
+ const { endpoint, tunnelEnabled } = await getEndpoint(port);
426
+ serverUrl = tunnelEnabled ? endpoint.replace(/\/v1$/, "") : `http://${displayHost}:${port}`;
427
427
  } catch (e) {
428
428
  serverUrl = `http://${displayHost}:${port}`;
429
429
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9router",
3
- "version": "0.2.87",
3
+ "version": "0.2.89",
4
4
  "description": "9Router CLI - Start and manage 9Router server",
5
5
  "bin": {
6
6
  "9router": "./cli.js"