@sleep2agi/agent-network-dashboard 0.4.6 → 0.5.0

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 (493) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/diagnostics/route-bundle-stats.json +31 -31
  5. package/.next/fallback-build-manifest.json +3 -3
  6. package/.next/prerender-manifest.json +3 -3
  7. package/.next/routes-manifest.json +16 -0
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/_not-found.html +2 -2
  17. package/.next/server/app/_not-found.rsc +12 -12
  18. package/.next/server/app/_not-found.segments/_full.segment.rsc +12 -12
  19. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  20. package/.next/server/app/_not-found.segments/_index.segment.rsc +7 -7
  21. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  23. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/admin.html +2 -2
  26. package/.next/server/app/admin.rsc +14 -14
  27. package/.next/server/app/admin.segments/_full.segment.rsc +14 -14
  28. package/.next/server/app/admin.segments/_head.segment.rsc +4 -4
  29. package/.next/server/app/admin.segments/_index.segment.rsc +7 -7
  30. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  31. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +4 -4
  32. package/.next/server/app/admin.segments/admin.segment.rsc +3 -3
  33. package/.next/server/app/api/hub/server/[hostname]/agents/route/app-paths-manifest.json +3 -0
  34. package/.next/server/app/api/hub/server/[hostname]/agents/route/build-manifest.json +9 -0
  35. package/.next/server/app/api/hub/server/[hostname]/agents/route/server-reference-manifest.json +4 -0
  36. package/.next/server/app/api/hub/server/[hostname]/agents/route.js +7 -0
  37. package/.next/server/app/api/hub/server/[hostname]/agents/route.js.map +5 -0
  38. package/.next/server/app/api/hub/server/[hostname]/agents/route.js.nft.json +1 -0
  39. package/.next/server/app/api/hub/server/[hostname]/agents/route_client-reference-manifest.js +3 -0
  40. package/.next/server/app/api/hub/server/[hostname]/health/route/app-paths-manifest.json +3 -0
  41. package/.next/server/app/api/hub/server/[hostname]/health/route/build-manifest.json +9 -0
  42. package/.next/server/app/api/hub/server/[hostname]/health/route/server-reference-manifest.json +4 -0
  43. package/.next/server/app/api/hub/server/[hostname]/health/route.js +7 -0
  44. package/.next/server/app/api/hub/server/[hostname]/health/route.js.map +5 -0
  45. package/.next/server/app/api/hub/server/[hostname]/health/route.js.nft.json +1 -0
  46. package/.next/server/app/api/hub/server/[hostname]/health/route_client-reference-manifest.js +3 -0
  47. package/.next/server/app/index.html +2 -2
  48. package/.next/server/app/index.rsc +14 -14
  49. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  50. package/.next/server/app/index.segments/_full.segment.rsc +14 -14
  51. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  52. package/.next/server/app/index.segments/_index.segment.rsc +7 -7
  53. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  54. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  55. package/.next/server/app/login.html +2 -2
  56. package/.next/server/app/login.rsc +14 -14
  57. package/.next/server/app/login.segments/_full.segment.rsc +14 -14
  58. package/.next/server/app/login.segments/_head.segment.rsc +4 -4
  59. package/.next/server/app/login.segments/_index.segment.rsc +7 -7
  60. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  61. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  62. package/.next/server/app/login.segments/login.segment.rsc +3 -3
  63. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  64. package/.next/server/app/logs.html +2 -2
  65. package/.next/server/app/logs.rsc +14 -14
  66. package/.next/server/app/logs.segments/_full.segment.rsc +14 -14
  67. package/.next/server/app/logs.segments/_head.segment.rsc +4 -4
  68. package/.next/server/app/logs.segments/_index.segment.rsc +7 -7
  69. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  70. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +4 -4
  71. package/.next/server/app/logs.segments/logs.segment.rsc +3 -3
  72. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  73. package/.next/server/app/messages.html +2 -2
  74. package/.next/server/app/messages.rsc +14 -14
  75. package/.next/server/app/messages.segments/_full.segment.rsc +14 -14
  76. package/.next/server/app/messages.segments/_head.segment.rsc +4 -4
  77. package/.next/server/app/messages.segments/_index.segment.rsc +7 -7
  78. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  79. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +4 -4
  80. package/.next/server/app/messages.segments/messages.segment.rsc +3 -3
  81. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  82. package/.next/server/app/node.html +2 -2
  83. package/.next/server/app/node.rsc +14 -14
  84. package/.next/server/app/node.segments/_full.segment.rsc +14 -14
  85. package/.next/server/app/node.segments/_head.segment.rsc +4 -4
  86. package/.next/server/app/node.segments/_index.segment.rsc +7 -7
  87. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  88. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +4 -4
  89. package/.next/server/app/node.segments/node.segment.rsc +3 -3
  90. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  91. package/.next/server/app/nodes.html +2 -2
  92. package/.next/server/app/nodes.rsc +14 -14
  93. package/.next/server/app/nodes.segments/_full.segment.rsc +14 -14
  94. package/.next/server/app/nodes.segments/_head.segment.rsc +4 -4
  95. package/.next/server/app/nodes.segments/_index.segment.rsc +7 -7
  96. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  97. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +4 -4
  98. package/.next/server/app/nodes.segments/nodes.segment.rsc +3 -3
  99. package/.next/server/app/page_client-reference-manifest.js +1 -1
  100. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  101. package/.next/server/app/server-logs.html +2 -2
  102. package/.next/server/app/server-logs.rsc +14 -14
  103. package/.next/server/app/server-logs.segments/_full.segment.rsc +14 -14
  104. package/.next/server/app/server-logs.segments/_head.segment.rsc +4 -4
  105. package/.next/server/app/server-logs.segments/_index.segment.rsc +7 -7
  106. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  107. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +4 -4
  108. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +3 -3
  109. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  110. package/.next/server/app/settings/networks.html +2 -2
  111. package/.next/server/app/settings/networks.rsc +14 -14
  112. package/.next/server/app/settings/networks.segments/_full.segment.rsc +14 -14
  113. package/.next/server/app/settings/networks.segments/_head.segment.rsc +4 -4
  114. package/.next/server/app/settings/networks.segments/_index.segment.rsc +7 -7
  115. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  116. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +4 -4
  117. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +3 -3
  118. package/.next/server/app/settings/networks.segments/settings.segment.rsc +3 -3
  119. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  120. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  121. package/.next/server/app/settings/tokens.html +2 -2
  122. package/.next/server/app/settings/tokens.rsc +14 -14
  123. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +14 -14
  124. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +4 -4
  125. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +7 -7
  126. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  127. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +4 -4
  128. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +3 -3
  129. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +3 -3
  130. package/.next/server/app/settings.html +2 -2
  131. package/.next/server/app/settings.rsc +14 -14
  132. package/.next/server/app/settings.segments/_full.segment.rsc +14 -14
  133. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  134. package/.next/server/app/settings.segments/_index.segment.rsc +7 -7
  135. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  136. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  137. package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  138. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  139. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  140. package/.next/server/app/tasks.html +2 -2
  141. package/.next/server/app/tasks.rsc +14 -14
  142. package/.next/server/app/tasks.segments/_full.segment.rsc +14 -14
  143. package/.next/server/app/tasks.segments/_head.segment.rsc +4 -4
  144. package/.next/server/app/tasks.segments/_index.segment.rsc +7 -7
  145. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  146. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +4 -4
  147. package/.next/server/app/tasks.segments/tasks.segment.rsc +3 -3
  148. package/.next/server/app-paths-manifest.json +2 -0
  149. package/.next/server/chunks/0dk5_next-internal_server_app_api_hub_server_[hostname]_agents_route_actions_0vr92s4.js +3 -0
  150. package/.next/server/chunks/0dk5_next-internal_server_app_api_hub_server_[hostname]_agents_route_actions_0vr92s4.js.map +1 -0
  151. package/.next/server/chunks/0dk5_next-internal_server_app_api_hub_server_[hostname]_health_route_actions_0vr-bv5.js +3 -0
  152. package/.next/server/chunks/0dk5_next-internal_server_app_api_hub_server_[hostname]_health_route_actions_0vr-bv5.js.map +1 -0
  153. package/.next/server/chunks/[root-of-the-server]__05nyivw._.js +3 -0
  154. package/.next/server/chunks/[root-of-the-server]__05nyivw._.js.map +1 -0
  155. package/.next/server/chunks/[root-of-the-server]__0floe3h._.js +3 -0
  156. package/.next/server/chunks/[root-of-the-server]__0floe3h._.js.map +1 -0
  157. package/.next/server/chunks/[root-of-the-server]__0tx8s8i._.js +1 -1
  158. package/.next/server/chunks/[root-of-the-server]__0tx8s8i._.js.map +1 -1
  159. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +4 -2
  160. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  161. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  162. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  163. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  164. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  165. package/.next/server/chunks/ssr/agent-network-dashboard_app_components_0mvyi-4._.js +1 -1
  166. package/.next/server/chunks/ssr/agent-network-dashboard_app_components_0mvyi-4._.js.map +1 -1
  167. package/.next/server/middleware-build-manifest.js +3 -3
  168. package/.next/server/pages/404.html +2 -2
  169. package/.next/server/pages/500.html +1 -1
  170. package/.next/server/server-reference-manifest.js +1 -1
  171. package/.next/server/server-reference-manifest.json +1 -1
  172. package/.next/static/chunks/0aauz~36q5n2a.css +2 -0
  173. package/.next/static/chunks/0f~0kgy2pycyc.js +1 -0
  174. package/.next/static/chunks/0l_~q07bhpkcx.js +7 -0
  175. package/.next/static/chunks/1175-dp18a1e_.js +1 -0
  176. package/.next/static/chunks/1552j0415oeal.js +4 -0
  177. package/.next/trace +2 -2
  178. package/.next/trace-build +1 -1
  179. package/.next/types/routes.d.ts +3 -1
  180. package/.next/types/validator.ts +18 -0
  181. package/app/api/hub/server/[hostname]/agents/route.ts +62 -0
  182. package/app/api/hub/server/[hostname]/health/route.ts +58 -0
  183. package/app/api/hub/servers/route.ts +88 -1
  184. package/app/components/CommandPalette.tsx +107 -0
  185. package/app/components/HelpOverlay.tsx +109 -1
  186. package/app/components/ServersDrawer.tsx +181 -5
  187. package/app/components/TopoGraph.tsx +6409 -286
  188. package/app/globals.css +110 -5
  189. package/app/lib/vendorIdentity.ts +14 -3
  190. package/docs/rfc/v0.10.0-hero3-dashboard-upgrade.md +230 -0
  191. package/package.json +2 -2
  192. package/public/sleep2agi-logo.svg +11 -0
  193. package/public/vendors/claude.svg +11 -0
  194. package/public/vendors/minimax.svg +11 -0
  195. package/public/vendors/openai.svg +12 -0
  196. package/screenshots/r293-p0/after-full.png +0 -0
  197. package/screenshots/r293-p0/after-topo.png +0 -0
  198. package/screenshots/r293-p0/baseline-full.png +0 -0
  199. package/screenshots/r293-p0/baseline-topo.png +0 -0
  200. package/screenshots/r293-p0/logo-integrated-full.png +0 -0
  201. package/screenshots/r293-p0/logo-integrated-topo.png +0 -0
  202. package/screenshots/r293-p0/servers-drawer-v0.10.0-full.png +0 -0
  203. package/screenshots/r293-p0/servers-drawer-v0.10.0.png +0 -0
  204. package/screenshots/r293-p0/wave1-after-full.png +0 -0
  205. package/screenshots/r293-p0/wave1-after-topo.png +0 -0
  206. package/scripts/p0-servers-drawer-screenshot.mjs +99 -0
  207. package/scripts/p0-topo-screenshot.mjs +82 -0
  208. package/scripts/topo-active-filter-pill-test.mjs +101 -0
  209. package/scripts/topo-active-links-chip-hover-test.mjs +103 -0
  210. package/scripts/topo-active-links-chip-nav-test.mjs +117 -0
  211. package/scripts/topo-active-links-chip-self-hover-test.mjs +171 -0
  212. package/scripts/topo-active-links-empty-recede-test.mjs +125 -0
  213. package/scripts/topo-active-links-freshness-test.mjs +113 -0
  214. package/scripts/topo-active-links-tooltip-test.mjs +79 -0
  215. package/scripts/topo-active-pulse-ease-test.mjs +120 -0
  216. package/scripts/topo-brand-logo-transition-test.mjs +94 -0
  217. package/scripts/topo-brand-watermark-test.mjs +97 -0
  218. package/scripts/topo-canvas-aria-test.mjs +108 -0
  219. package/scripts/topo-canvas-brand-fade-test.mjs +87 -0
  220. package/scripts/topo-chat-target-breath-test.mjs +84 -0
  221. package/scripts/topo-chat-target-ring-ease-test.mjs +82 -0
  222. package/scripts/topo-chat-target-ring-fade-test.mjs +124 -0
  223. package/scripts/topo-chip-empty-recede-test.mjs +116 -0
  224. package/scripts/topo-chip-focus-test.mjs +95 -0
  225. package/scripts/topo-chip-pin-mirror-test.mjs +113 -0
  226. package/scripts/topo-chip-row-gap-test.mjs +90 -0
  227. package/scripts/topo-chip-row-semantic-gap-test.mjs +97 -0
  228. package/scripts/topo-chip-row-tabular-test.mjs +111 -0
  229. package/scripts/topo-chip-unit-demotion-test.mjs +93 -0
  230. package/scripts/topo-chiprow-data-weight-test.mjs +94 -0
  231. package/scripts/topo-chrome-a11y-test.mjs +107 -0
  232. package/scripts/topo-chrome-active-weight-test.mjs +104 -0
  233. package/scripts/topo-chrome-focus-ring-unify-test.mjs +100 -0
  234. package/scripts/topo-chrome-gap-test.mjs +73 -0
  235. package/scripts/topo-chrome-icon-stroke-test.mjs +95 -0
  236. package/scripts/topo-chrome-inactive-color-test.mjs +90 -0
  237. package/scripts/topo-chrome-pop-extension-test.mjs +98 -0
  238. package/scripts/topo-chrome-pop-nodesize-test.mjs +88 -0
  239. package/scripts/topo-chrome-press-state-test.mjs +135 -0
  240. package/scripts/topo-chrome-strip-semantic-gap-test.mjs +99 -0
  241. package/scripts/topo-chrome-strip-theme-ease-test.mjs +99 -0
  242. package/scripts/topo-chrome-zoom-level-pop-test.mjs +122 -0
  243. package/scripts/topo-chrome-zoom-pop-test.mjs +130 -0
  244. package/scripts/topo-chrome-zoom-readout-weight-test.mjs +81 -0
  245. package/scripts/topo-click-ripple-ease-test.mjs +94 -0
  246. package/scripts/topo-cmdk-edge-clear-test.mjs +109 -0
  247. package/scripts/topo-cmdk-layout-view-test.mjs +108 -0
  248. package/scripts/topo-cmdk-pin-test.mjs +123 -0
  249. package/scripts/topo-cmdk-vendor-clear-test.mjs +133 -0
  250. package/scripts/topo-cmdk-vendor-pin-test.mjs +103 -0
  251. package/scripts/topo-corner-radius-unify-test.mjs +103 -0
  252. package/scripts/topo-dense-alias-fill-transition-test.mjs +133 -0
  253. package/scripts/topo-discrete-zoom-smooth-test.mjs +125 -0
  254. package/scripts/topo-edge-badge-click-pin-test.mjs +94 -0
  255. package/scripts/topo-edge-badge-crossfade-test.mjs +138 -0
  256. package/scripts/topo-edge-badge-hot-test.mjs +115 -0
  257. package/scripts/topo-edge-badge-hover-test.mjs +85 -0
  258. package/scripts/topo-edge-badge-lift-test.mjs +150 -0
  259. package/scripts/topo-edge-badge-ripple-test.mjs +111 -0
  260. package/scripts/topo-edge-badge-stroke-transition-test.mjs +118 -0
  261. package/scripts/topo-edge-badge-text-pin-test.mjs +121 -0
  262. package/scripts/topo-edge-badge-theme-ease-test.mjs +89 -0
  263. package/scripts/topo-edge-count-badge-test.mjs +86 -0
  264. package/scripts/topo-edge-endpoint-highlight-test.mjs +111 -0
  265. package/scripts/topo-edge-fadein-test.mjs +106 -0
  266. package/scripts/topo-edge-focus-test.mjs +113 -0
  267. package/scripts/topo-edge-hover-test.mjs +13 -5
  268. package/scripts/topo-edge-pill-hot-test.mjs +129 -0
  269. package/scripts/topo-edge-pill-test.mjs +105 -0
  270. package/scripts/topo-edge-ping-pulse-retired-test.mjs +119 -0
  271. package/scripts/topo-edge-stroke-ease-test.mjs +100 -0
  272. package/scripts/topo-edge-stroke-transition-test.mjs +132 -0
  273. package/scripts/topo-empty-hint-tracking-test.mjs +84 -0
  274. package/scripts/topo-empty-state-breath-test.mjs +150 -0
  275. package/scripts/topo-empty-state-crossfade-test.mjs +130 -0
  276. package/scripts/topo-empty-state-recenter-test.mjs +107 -0
  277. package/scripts/topo-empty-subhint-tracking-test.mjs +87 -0
  278. package/scripts/topo-endpoint-ring-fade-test.mjs +132 -0
  279. package/scripts/topo-endpoint-ring-test.mjs +93 -0
  280. package/scripts/topo-endpoint-ring-thicken-test.mjs +112 -0
  281. package/scripts/topo-esc-clears-pin-test.mjs +98 -0
  282. package/scripts/topo-filter-pill-aliases-test.mjs +121 -0
  283. package/scripts/topo-filter-pill-body-click-test.mjs +112 -0
  284. package/scripts/topo-filter-pill-count-tabular-test.mjs +135 -0
  285. package/scripts/topo-filter-pill-count-test.mjs +110 -0
  286. package/scripts/topo-filter-pill-mobile-test.mjs +90 -0
  287. package/scripts/topo-freshness-chip-transition-test.mjs +80 -0
  288. package/scripts/topo-freshness-chip-weight-test.mjs +90 -0
  289. package/scripts/topo-freshness-conditional-render-test.mjs +92 -0
  290. package/scripts/topo-fullscreen-active-test.mjs +115 -0
  291. package/scripts/topo-group-box-pinned-state-test.mjs +95 -0
  292. package/scripts/topo-group-count-test.mjs +6 -1
  293. package/scripts/topo-group-label-a11y-test.mjs +113 -0
  294. package/scripts/topo-group-label-count-inherit-test.mjs +99 -0
  295. package/scripts/topo-group-label-hover-test.mjs +119 -0
  296. package/scripts/topo-group-label-pin-spacing-test.mjs +136 -0
  297. package/scripts/topo-group-label-tint-test.mjs +99 -0
  298. package/scripts/topo-group-label-title-test.mjs +83 -0
  299. package/scripts/topo-group-pin-test.mjs +119 -0
  300. package/scripts/topo-group-pip-fadein-test.mjs +104 -0
  301. package/scripts/topo-group-pip-singletier-drop-test.mjs +131 -0
  302. package/scripts/topo-group-pip-tabular-test.mjs +95 -0
  303. package/scripts/topo-group-status-pips-test.mjs +103 -0
  304. package/scripts/topo-groupbox-fadein-test.mjs +95 -0
  305. package/scripts/topo-groupbox-hover-lift-test.mjs +127 -0
  306. package/scripts/topo-groupbox-hubcore-ease-test.mjs +106 -0
  307. package/scripts/topo-groupbox-live-test.mjs +100 -0
  308. package/scripts/topo-groupbox-march-busyness-test.mjs +155 -0
  309. package/scripts/topo-groupbox-test.mjs +4 -2
  310. package/scripts/topo-header-gap-test.mjs +94 -0
  311. package/scripts/topo-help-overlay-r109-test.mjs +67 -0
  312. package/scripts/topo-help-overlay-r118-test.mjs +69 -0
  313. package/scripts/topo-help-overlay-r123-test.mjs +69 -0
  314. package/scripts/topo-help-overlay-r134-test.mjs +74 -0
  315. package/scripts/topo-help-overlay-r137-test.mjs +81 -0
  316. package/scripts/topo-help-overlay-r141-test.mjs +86 -0
  317. package/scripts/topo-help-overlay-r153-test.mjs +85 -0
  318. package/scripts/topo-help-overlay-r59-test.mjs +67 -0
  319. package/scripts/topo-help-overlay-r65-test.mjs +64 -0
  320. package/scripts/topo-help-overlay-r70-test.mjs +63 -0
  321. package/scripts/topo-help-overlay-r78-test.mjs +59 -0
  322. package/scripts/topo-help-overlay-r81-test.mjs +58 -0
  323. package/scripts/topo-help-overlay-r87-test.mjs +64 -0
  324. package/scripts/topo-help-overlay-r91-test.mjs +65 -0
  325. package/scripts/topo-hot-tail-crossfade-test.mjs +117 -0
  326. package/scripts/topo-html-overlay-padding-unify-test.mjs +120 -0
  327. package/scripts/topo-hub-a11y-test.mjs +112 -0
  328. package/scripts/topo-hub-busyness-test.mjs +100 -0
  329. package/scripts/topo-hub-center-crossfade-test.mjs +124 -0
  330. package/scripts/topo-hub-click-fit-test.mjs +137 -0
  331. package/scripts/topo-hub-digit-scale-test.mjs +129 -0
  332. package/scripts/topo-hub-fadein-test.mjs +88 -0
  333. package/scripts/topo-hub-hover-lift-test.mjs +101 -0
  334. package/scripts/topo-hub-hover-ring-test.mjs +82 -0
  335. package/scripts/topo-hub-pip-theme-ease-test.mjs +116 -0
  336. package/scripts/topo-hub-spoke-ease-test.mjs +120 -0
  337. package/scripts/topo-hub-title-test.mjs +7 -2
  338. package/scripts/topo-hub-working-count-test.mjs +99 -0
  339. package/scripts/topo-ingroup-edge-test.mjs +103 -0
  340. package/scripts/topo-inner-radar-ring-retired-test.mjs +89 -0
  341. package/scripts/topo-kicker-color-test.mjs +93 -0
  342. package/scripts/topo-kicker-tracking-test.mjs +101 -0
  343. package/scripts/topo-kicker-weight-test.mjs +98 -0
  344. package/scripts/topo-label-card-theme-ease-test.mjs +85 -0
  345. package/scripts/topo-label-lift-test.mjs +5 -1
  346. package/scripts/topo-layout-hover-text-preview-test.mjs +101 -0
  347. package/scripts/topo-layout-switch-crossfade-test.mjs +126 -0
  348. package/scripts/topo-layout-toggle-border-unify-test.mjs +104 -0
  349. package/scripts/topo-layout-toggle-test.mjs +131 -0
  350. package/scripts/topo-layout-trailer-mr-test.mjs +82 -0
  351. package/scripts/topo-legend-compress-test.mjs +107 -0
  352. package/scripts/topo-legend-count-empty-test.mjs +126 -0
  353. package/scripts/topo-legend-count-tabular-parity-test.mjs +90 -0
  354. package/scripts/topo-legend-count-tabular-test.mjs +87 -0
  355. package/scripts/topo-legend-count-test.mjs +88 -0
  356. package/scripts/topo-legend-count-tier-fill-test.mjs +121 -0
  357. package/scripts/topo-legend-count-weight-test.mjs +86 -0
  358. package/scripts/topo-legend-header-symmetric-inset-test.mjs +112 -0
  359. package/scripts/topo-legend-hitbox-swatch-center-test.mjs +93 -0
  360. package/scripts/topo-legend-hover-test.mjs +113 -0
  361. package/scripts/topo-legend-offline-delimiter-test.mjs +84 -0
  362. package/scripts/topo-legend-offline-label-simplify-test.mjs +86 -0
  363. package/scripts/topo-legend-panel-count-weight-test.mjs +89 -0
  364. package/scripts/topo-legend-panel-header-test.mjs +83 -0
  365. package/scripts/topo-legend-pin-ring-fade-test.mjs +112 -0
  366. package/scripts/topo-legend-pin-test.mjs +128 -0
  367. package/scripts/topo-legend-row-hover-lift-test.mjs +109 -0
  368. package/scripts/topo-legend-row-labels-simplify-test.mjs +80 -0
  369. package/scripts/topo-legend-row-pin-spacing-test.mjs +124 -0
  370. package/scripts/topo-legend-row-tint-test.mjs +95 -0
  371. package/scripts/topo-legend-row-title-test.mjs +102 -0
  372. package/scripts/topo-legend-swatch-grow-test.mjs +116 -0
  373. package/scripts/topo-legend-swatch-radius-test.mjs +78 -0
  374. package/scripts/topo-minimap-a11y-test.mjs +101 -0
  375. package/scripts/topo-minimap-dot-transition-test.mjs +113 -0
  376. package/scripts/topo-minimap-radius-test.mjs +88 -0
  377. package/scripts/topo-minimap-rect-stroke-test.mjs +94 -0
  378. package/scripts/topo-minimap-viewport-smooth-test.mjs +124 -0
  379. package/scripts/topo-monogram-font-test.mjs +112 -0
  380. package/scripts/topo-monogram-stroke-test.mjs +101 -0
  381. package/scripts/topo-more-flows-letterspacing-test.mjs +111 -0
  382. package/scripts/topo-node-a11y-test.mjs +107 -0
  383. package/scripts/topo-node-alias-chat-pin-test.mjs +95 -0
  384. package/scripts/topo-node-hover-lift-test.mjs +85 -0
  385. package/scripts/topo-node-label-card-elevation-test.mjs +157 -0
  386. package/scripts/topo-node-label-card-stroke-test.mjs +135 -0
  387. package/scripts/topo-node-stroke-transition-test.mjs +103 -0
  388. package/scripts/topo-node-text-fill-transition-test.mjs +119 -0
  389. package/scripts/topo-node-title-peers-test.mjs +107 -0
  390. package/scripts/topo-node-title-test.mjs +101 -0
  391. package/scripts/topo-nodesize-active-hover-test.mjs +109 -0
  392. package/scripts/topo-nodesize-crossfade-test.mjs +141 -0
  393. package/scripts/topo-online-chip-nav-test.mjs +143 -0
  394. package/scripts/topo-orbit-particles-retired-test.mjs +91 -0
  395. package/scripts/topo-panel-count-unit-test.mjs +112 -0
  396. package/scripts/topo-panel-elevation-test.mjs +76 -0
  397. package/scripts/topo-panel-fadein-test.mjs +102 -0
  398. package/scripts/topo-panel-hot-tail-fade-test.mjs +132 -0
  399. package/scripts/topo-panel-hover-elevation-test.mjs +118 -0
  400. package/scripts/topo-panel-rx-test.mjs +90 -0
  401. package/scripts/topo-panel-theme-ease-test.mjs +85 -0
  402. package/scripts/topo-panel-title-fill-ease-test.mjs +91 -0
  403. package/scripts/topo-panel-title-tracking-test.mjs +78 -0
  404. package/scripts/topo-particle-stagger-test.mjs +82 -0
  405. package/scripts/topo-pin-intersection-color-ease-test.mjs +111 -0
  406. package/scripts/topo-pin-intersection-empty-test.mjs +129 -0
  407. package/scripts/topo-pin-intersection-tabular-test.mjs +96 -0
  408. package/scripts/topo-pin-intersection-test.mjs +121 -0
  409. package/scripts/topo-pin-intersection-warning-crossfade-test.mjs +107 -0
  410. package/scripts/topo-pin-mirror-transition-test.mjs +101 -0
  411. package/scripts/topo-pin-persistence-test.mjs +105 -0
  412. package/scripts/topo-prefix-opacity-test.mjs +107 -0
  413. package/scripts/topo-prepublish-guard-test.mjs +95 -0
  414. package/scripts/topo-pressure-hover-test.mjs +123 -0
  415. package/scripts/topo-pressure-pin-test.mjs +119 -0
  416. package/scripts/topo-pressure-seg-self-hover-test.mjs +126 -0
  417. package/scripts/topo-pressure-seg-tooltip-test.mjs +98 -0
  418. package/scripts/topo-pressure-seg-transition-test.mjs +107 -0
  419. package/scripts/topo-pulse-dot-crossfade-test.mjs +122 -0
  420. package/scripts/topo-pulse-dot-retired-test.mjs +86 -0
  421. package/scripts/topo-recent-panel-count-freshness-test.mjs +109 -0
  422. package/scripts/topo-recent-panel-count-test.mjs +72 -0
  423. package/scripts/topo-recent-panel-count-weight-test.mjs +91 -0
  424. package/scripts/topo-recent-panel-footer-breath-test.mjs +142 -0
  425. package/scripts/topo-recent-panel-hot-header-test.mjs +132 -0
  426. package/scripts/topo-recent-panel-hot-tabular-test.mjs +113 -0
  427. package/scripts/topo-recent-panel-more-crossfade-test.mjs +124 -0
  428. package/scripts/topo-recent-panel-more-cyan-hover-test.mjs +151 -0
  429. package/scripts/topo-recent-panel-more-nav-test.mjs +127 -0
  430. package/scripts/topo-recent-panel-more-test.mjs +106 -0
  431. package/scripts/topo-recent-panel-readability-bump-test.mjs +151 -0
  432. package/scripts/topo-recent-row-count-fill-test.mjs +129 -0
  433. package/scripts/topo-recent-row-count-weight-test.mjs +112 -0
  434. package/scripts/topo-recent-row-fadein-test.mjs +107 -0
  435. package/scripts/topo-recent-row-freshness-test.mjs +102 -0
  436. package/scripts/topo-recent-row-hot-test.mjs +110 -0
  437. package/scripts/topo-recent-row-hover-lift-test.mjs +128 -0
  438. package/scripts/topo-recent-row-hover-test.mjs +122 -0
  439. package/scripts/topo-recent-row-pin-spacing-test.mjs +137 -0
  440. package/scripts/topo-recent-row-pin-test.mjs +126 -0
  441. package/scripts/topo-recent-row-tint-test.mjs +91 -0
  442. package/scripts/topo-recent-row-title-test.mjs +112 -0
  443. package/scripts/topo-recent-row-ts-alpha-test.mjs +100 -0
  444. package/scripts/topo-recent-row-ts-tabular-test.mjs +108 -0
  445. package/scripts/topo-recent-row-ts-test.mjs +95 -0
  446. package/scripts/topo-recent-row-typography-test.mjs +119 -0
  447. package/scripts/topo-recent-signal-empty-hint-test.mjs +73 -0
  448. package/scripts/topo-reset-spin-test.mjs +120 -0
  449. package/scripts/topo-runtime-badge-grow-test.mjs +114 -0
  450. package/scripts/topo-spokes-retired-test.mjs +93 -0
  451. package/scripts/topo-starfield-density-test.mjs +89 -0
  452. package/scripts/topo-status-chip-hover-test.mjs +101 -0
  453. package/scripts/topo-status-chip-tooltip-test.mjs +95 -0
  454. package/scripts/topo-statusbar-chips-self-hover-test.mjs +177 -0
  455. package/scripts/topo-svg-focus-test.mjs +112 -0
  456. package/scripts/topo-sweep-busyness-test.mjs +94 -0
  457. package/scripts/topo-tabular-nums-sweep-test.mjs +93 -0
  458. package/scripts/topo-tier-guide-dashes-test.mjs +86 -0
  459. package/scripts/topo-tier-ring-fadein-test.mjs +107 -0
  460. package/scripts/topo-tier-ring-occupancy-test.mjs +87 -0
  461. package/scripts/topo-tier-ring-test.mjs +69 -0
  462. package/scripts/topo-tier-ring-tint-test.mjs +110 -0
  463. package/scripts/topo-tier-stagger-test.mjs +89 -0
  464. package/scripts/topo-title-block-tight-leading-test.mjs +95 -0
  465. package/scripts/topo-title-tracking-test.mjs +98 -0
  466. package/scripts/topo-titleblock-gap-test.mjs +86 -0
  467. package/scripts/topo-titleblock-margin-test.mjs +83 -0
  468. package/scripts/topo-toggle-inactive-cyan-hover-test.mjs +110 -0
  469. package/scripts/topo-top-rail-theme-ease-test.mjs +89 -0
  470. package/scripts/topo-vendor-chip-hover-test.mjs +111 -0
  471. package/scripts/topo-vendor-chip-self-hover-test.mjs +131 -0
  472. package/scripts/topo-vendor-chip-tabular-test.mjs +92 -0
  473. package/scripts/topo-vendor-chip-threshold-test.mjs +78 -0
  474. package/scripts/topo-vendor-chip-weight-test.mjs +87 -0
  475. package/scripts/topo-vendor-count-suffix-test.mjs +95 -0
  476. package/scripts/topo-vendor-letter-tooltip-test.mjs +92 -0
  477. package/scripts/topo-vendor-pill-test.mjs +125 -0
  478. package/scripts/topo-vendor-pin-test.mjs +125 -0
  479. package/scripts/topo-view-smooth-test.mjs +131 -0
  480. package/scripts/topo-watermark-tracking-test.mjs +99 -0
  481. package/scripts/topo-working-chip-pin-test.mjs +154 -0
  482. package/scripts/topo-working-halo-breath-retired-test.mjs +99 -0
  483. package/scripts/topo-wrapper-flow-arrow-theme-test.mjs +97 -0
  484. package/scripts/topo-wrapper-radius-test.mjs +73 -0
  485. package/scripts/topo-wrapper-shadow-theme-ease-test.mjs +89 -0
  486. package/.next/static/chunks/088ouqy7tekty.js +0 -2
  487. package/.next/static/chunks/0hyl7mdapsz38.js +0 -1
  488. package/.next/static/chunks/0mqwn-l7wtcdo.js +0 -7
  489. package/.next/static/chunks/127kw7~wsnyu7.css +0 -2
  490. package/.next/static/chunks/16yfxp9ak2gdm.js +0 -1
  491. /package/.next/static/{23MxP0RBVA4BaOJ_HMYmM → 424zX3i80AJ_wHF_otKuP}/_buildManifest.js +0 -0
  492. /package/.next/static/{23MxP0RBVA4BaOJ_HMYmM → 424zX3i80AJ_wHF_otKuP}/_clientMiddlewareManifest.js +0 -0
  493. /package/.next/static/{23MxP0RBVA4BaOJ_HMYmM → 424zX3i80AJ_wHF_otKuP}/_ssgManifest.js +0 -0
@@ -0,0 +1,7 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,24156,e=>{"use strict";var t=e.i(22381),a=e.i(23910);let s=[{id:"cyber",label:"Cyber",emoji:"🌃",desc:"默认深色"},{id:"light",label:"Light",emoji:"☀️",desc:"浅色简洁"},{id:"mint",label:"Mint",emoji:"🌿",desc:"薄荷绿"},{id:"sunset",label:"Sunset",emoji:"🌅",desc:"暖色橙紫"}],n="anet-theme";function r(e){"u">typeof document&&document.documentElement.setAttribute("data-theme",e)}e.s(["ThemeProvider",0,function({children:e}){return(0,a.useEffect)(()=>{r(localStorage.getItem(n)||"cyber")},[]),(0,t.jsx)(t.Fragment,{children:e})},"ThemeSwitcher",0,function({compact:e=!1}){let[l,o]=(0,a.useState)("cyber"),[i,c]=(0,a.useState)(!1);(0,a.useEffect)(()=>{let e=localStorage.getItem(n)||"cyber";o(e),r(e)},[]);let d=s.find(e=>e.id===l)||s[0];return(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("button",{"aria-label":"切换主题",onClick:()=>c(!i),className:"px-2.5 py-1.5 rounded-md text-xs flex items-center gap-1.5 hover:opacity-80 transition-opacity",style:{background:"var(--bg-elevated)",color:"var(--fg)",border:"1px solid var(--border)"},children:[(0,t.jsx)("span",{"aria-hidden":!0,children:d.emoji}),!e&&(0,t.jsx)("span",{children:d.label})]}),i&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-40",onClick:()=>c(!1)}),(0,t.jsx)("div",{className:"absolute right-0 top-full mt-1 z-50 rounded-md min-w-[160px] py-1 shadow-lg",style:{background:"var(--bg-secondary)",border:"1px solid var(--border)"},children:s.map(e=>(0,t.jsxs)("button",{onClick:()=>{var t;o(t=e.id),localStorage.setItem(n,t),r(t),c(!1)},className:"w-full px-3 py-2 text-left text-xs flex items-center gap-2 hover:opacity-80",style:{background:e.id===l?"var(--bg-elevated)":"transparent",color:"var(--fg)"},children:[(0,t.jsx)("span",{"aria-hidden":!0,children:e.emoji}),(0,t.jsx)("span",{className:"flex-1",children:e.label}),(0,t.jsx)("span",{style:{color:"var(--fg-dim)"},className:"text-[10px]",children:e.desc}),e.id===l&&(0,t.jsx)("span",{style:{color:"var(--accent)"},children:"•"})]},e.id))})]})]})}])},22485,e=>{"use strict";var t=e.i(22381),a=e.i(56058),s=e.i(56839),n=e.i(23910),r=e.i(12629),l=e.i(11449),o=e.i(24156);let i=e=>fetch(e).then(e=>e.ok?e.json():{networks:[]}),c=[{href:"/",label:"Overview",icon:"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"},{href:"/tasks",label:"Tasks",icon:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"},{href:"/nodes",label:"Nodes",icon:"M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01"},{href:"/messages",label:"Messages",icon:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"},{href:"/settings/networks",label:"Networks",icon:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"},{href:"/logs",label:"Audit Log",icon:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},{href:"/server-logs",label:"Server Logs",icon:"M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"},{href:"/admin",label:"Admin",icon:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"},{href:"/settings",label:"Settings",icon:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.066 2.573c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.573 1.066c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.066-2.573c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z M15 12a3 3 0 11-6 0 3 3 0 016 0z"}],d={owner:"⭐",admin:"🔧",member:"👤",viewer:"👁"};function h(){let e=(0,a.usePathname)(),[h,x]=(0,n.useState)(!1),[u,g]=(0,n.useState)(!1),{networkId:f,setNetworkId:v}=(0,l.useNetworkId)(),{data:b}=(0,r.default)("/api/hub/networks",i,{refreshInterval:15e3,dedupingInterval:1e4}),{data:y}=(0,r.default)("/api/hub/status",m,{refreshInterval:15e3,dedupingInterval:1e4}),k=b?.networks||[],j=(()=>{let e=new Map;for(let t of y?.sessions||[])t.network_id&&e.set(t.network_id,(e.get(t.network_id)||0)+1);let t=new Set(k.map(e=>e.network_id));return[...k,...[...e.keys()].filter(e=>!t.has(e)).map(e=>({network_id:e,network_name:e}))].map(t=>({...t,agentCount:e.get(t.network_id)||0}))})(),w=(0,t.jsx)("nav",{className:"flex flex-col gap-1 px-2 py-4",children:c.map(a=>{var n;return(0,t.jsxs)(s.default,{href:a.href,prefetch:!1,onClick:()=>g(!1),title:h?a.label:void 0,className:`relative flex items-center gap-3 px-3 py-3 rounded-lg text-sm transition-colors active:bg-[#1a1a3a] ${("/"===(n=a.href)?"/"===e:"/settings"===n?"/settings"===e:e.startsWith(n))?"bg-cyan-500/10 text-cyan-300 border border-cyan-500/20 anet-nav-active":"text-gray-400 hover:text-gray-200 hover:bg-[#1a1a2a]"} ${h?"justify-center px-0":""}`,children:[(0,t.jsx)("svg",{className:"w-5 h-5 shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:a.icon})}),!h&&(0,t.jsx)("span",{children:a.label})]},a.href)})});return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>g(!u),className:"fixed top-4 left-3 z-50 lg:hidden bg-[#111128] border border-[#2a2a4a] rounded-lg p-2.5 text-gray-400 hover:text-white active:bg-[#1a1a3a]","aria-label":"Toggle menu",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:u?(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"}):(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16M4 18h16"})})}),u&&(0,t.jsx)("div",{className:"fixed inset-0 bg-black/50 z-30 lg:hidden anet-fade-in",onClick:()=>g(!1)}),(0,t.jsxs)("aside",{"data-anet-sidebar":"true",className:`
2
+ fixed top-0 left-0 h-full z-40 bg-[#0d0d1a] border-r border-[#2a2a4a]
3
+ transition-transform duration-200 ease-out
4
+ ${h?"w-16":"w-52"}
5
+ ${u?"translate-x-0 shadow-2xl shadow-black/40 lg:shadow-none":"-translate-x-full"}
6
+ lg:translate-x-0 lg:static lg:shrink-0 lg:shadow-none
7
+ `,children:[(0,t.jsx)(p,{collapsed:h}),(0,t.jsx)("div",{className:"border-b border-[#2a2a4a]"}),!h&&j.length>0&&(0,t.jsxs)("div",{className:"px-2 py-3 border-b border-[#2a2a4a]",children:[(0,t.jsx)("div",{className:"px-3 text-[10px] text-gray-600 uppercase mb-2",children:"Networks"}),(0,t.jsx)("div",{className:"space-y-0.5 max-h-32 overflow-y-auto",children:j.map(e=>(0,t.jsxs)("button",{onClick:()=>{v(e.network_id),g(!1)},title:e.network_id,className:`w-full flex items-center gap-2 px-3 py-1.5 rounded-md text-xs transition-colors text-left ${f===e.network_id?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-300 hover:bg-[#1a1a2a]"}`,children:[(0,t.jsx)("span",{children:d[e.role||"member"]||"👤"}),(0,t.jsx)("span",{className:"truncate flex-1",children:e.network_name}),e.agentCount?(0,t.jsx)("span",{className:"shrink-0 tabular-nums text-[10px] text-gray-600",children:e.agentCount}):null]},e.network_id))})]}),(0,t.jsx)("div",{className:"pb-20",children:w}),(0,t.jsxs)("div",{className:"absolute bottom-0 left-0 right-0 border-t border-[#2a2a4a] bg-[#0d0d1a]",children:[(0,t.jsxs)("button",{onClick:()=>{window.dispatchEvent(new KeyboardEvent("keydown",{key:"k",metaKey:!0,ctrlKey:!0}))},title:h?"Quick search (⌘K)":void 0,className:`w-full flex items-center text-[11px] text-gray-600 hover:text-gray-400 hover:bg-[#1a1a2a] transition-colors ${h?"justify-center px-0 py-2.5":"justify-between gap-2 px-5 py-2"}`,"aria-label":"Open command palette",children:[(0,t.jsxs)("span",{className:`flex items-center ${h?"":"gap-2"}`,children:[(0,t.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),!h&&"Quick search"]}),!h&&(0,t.jsx)("kbd",{className:"text-[10px] border border-current rounded px-1 py-0.5 opacity-60 font-mono",children:"⌘K"})]}),(0,t.jsxs)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),sessionStorage.removeItem("anet_v3_auth"),window.location.assign("/login")},title:h?"Sign out":void 0,className:`w-full flex items-center text-xs text-gray-500 hover:text-red-400 hover:bg-red-500/5 transition-colors ${h?"justify-center px-0 py-2.5":"gap-3 px-5 py-3"}`,children:[(0,t.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15m3 0l3-3m0 0l-3-3m3 3H9"})}),!h&&"Sign out"]}),(0,t.jsxs)("div",{className:`flex items-center gap-2 ${h?"flex-col px-0 py-2":"px-3 py-2 justify-between"}`,children:[(0,t.jsx)(o.ThemeSwitcher,{compact:h}),(0,t.jsx)("button",{onClick:()=>x(!h),title:h?"Expand sidebar":"Collapse sidebar",className:"hidden lg:flex p-1.5 rounded text-gray-600 hover:text-gray-400 transition-colors","aria-label":h?"Expand sidebar":"Collapse sidebar",children:(0,t.jsx)("svg",{className:`w-4 h-4 transition-transform ${h?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 19l-7-7 7-7"})})})]})]})]})]})}let m=e=>fetch(e).then(e=>e.ok?e.json():{sessions:[]});function p({collapsed:e}){let{data:a}=(0,r.default)("/api/hub/status",m,{refreshInterval:1e4,dedupingInterval:4e3}),n=a?.sessions||[],l=n.filter(e=>e.status&&"offline"!==e.status).length,o=n.length;return e?(0,t.jsx)(s.default,{href:"/",className:"block px-3 py-4 flex justify-center hover:opacity-80 transition-opacity","aria-label":"Agent Network — home",children:(0,t.jsx)(x,{size:32})}):(0,t.jsxs)(s.default,{href:"/",className:"block px-4 py-4 flex items-center gap-3 hover:bg-[#11112a]/40 transition-colors rounded-r-xl","aria-label":"Agent Network — home",children:[(0,t.jsx)(x,{size:32}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("div",{className:"text-white text-[13px] font-semibold leading-tight",children:"Agent Network"}),(0,t.jsxs)("div",{className:"text-[10px] text-gray-500 flex items-center gap-1.5 mt-0.5",children:[(0,t.jsx)("span",{className:`inline-block w-1.5 h-1.5 rounded-full ${l>0?"bg-emerald-400 anet-brand-pulse":"bg-gray-600"}`,"aria-hidden":!0}),0===o?(0,t.jsx)("span",{children:"waiting for agents"}):(0,t.jsxs)("span",{children:[(0,t.jsx)("span",{className:"text-gray-300 font-medium tabular-nums",children:l}),(0,t.jsxs)("span",{className:"text-gray-600",children:["/",o]})," online"]})]})]})]})}function x({size:e}){return(0,t.jsxs)("svg",{width:e,height:e,viewBox:"0 0 32 32","aria-hidden":!0,className:"shrink-0",children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.2",className:"text-cyan-400"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.45",className:"text-cyan-400"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.45",className:"text-cyan-400"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.45",className:"text-cyan-400"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"2.5",fill:"currentColor",className:"text-cyan-400"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"2.5",fill:"currentColor",className:"text-green-400"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"2.5",fill:"currentColor",className:"text-violet-400"})]})}let u=async e=>{let t=await fetch(e);if(!t.ok)throw Error(String(t.status));return t.json()};function g(){let e,a,{data:l,error:o}=(0,r.default)("/api/hub/stats",u,{refreshInterval:15e3,dedupingInterval:5e3,shouldRetryOnError:!1}),{data:i,error:c}=(0,r.default)("/api/hub/health",u,{refreshInterval:15e3,dedupingInterval:5e3,shouldRetryOnError:!1}),[d,h]=(0,n.useState)(()=>"1"===sessionStorage.getItem("anet-hb-dismissed"));if(d)return null;let m=o&&c||i&&!1===i.ok,p=l?.tasks?.by_status?.find(e=>"failed"===e.status)?.count||0,x=l?.nodes?.total===0,g=null;if(m?(e="red",a="CommHub unreachable — agents may be offline",g={label:"Open Settings",href:"/settings"}):p>0?(e="amber",a=`${p} task${p>1?"s":""} failed recently`,g={label:"Review failures",href:"/tasks?status=failed"}):(x?(e="green",a="Waiting for first agent"):(e="green",a="All systems go"),g=null),"green"===e&&!l)return null;let f={red:"bg-red-500/8 border-red-500/25 text-red-300",amber:"bg-amber-500/8 border-amber-500/25 text-amber-300",green:"bg-emerald-500/6 border-emerald-500/20 text-emerald-300"}[e],v={red:"bg-red-400",amber:"bg-amber-400 anet-brand-pulse",green:"bg-emerald-400"}[e];return(0,t.jsxs)("div",{role:"status",className:`anet-health-banner sticky top-0 z-30 border-b ${f} pl-14 pr-3 sm:px-6 py-1.5 text-[12px] flex items-center justify-between gap-3 backdrop-blur-sm`,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)("span",{className:`inline-block w-1.5 h-1.5 rounded-full shrink-0 ${v}`,"aria-hidden":!0}),(0,t.jsx)("span",{className:"truncate",children:a})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[g&&(0,t.jsxs)(s.default,{href:g.href,className:"text-[11px] font-medium underline-offset-2 hover:underline opacity-90 hover:opacity-100 hidden sm:inline",children:[g.label," →"]}),g&&(0,t.jsx)(s.default,{href:g.href,"aria-label":g.label,className:"sm:hidden text-[11px] font-medium opacity-90 hover:opacity-100",children:"→"}),(0,t.jsx)("button",{onClick:()=>{h(!0);try{sessionStorage.setItem("anet-hb-dismissed","1")}catch{}},"aria-label":"Dismiss banner",className:"opacity-50 hover:opacity-100 leading-none px-1",children:"×"})]})]})}let f="anet-cmdk-recents";function v(){try{let e=sessionStorage.getItem(f);return e?JSON.parse(e):[]}catch{return[]}}function b(e){try{let t=v().filter(t=>t!==e);t.unshift(e),sessionStorage.setItem(f,JSON.stringify(t.slice(0,4)))}catch{}}function y(e,t){if(!t)return{score:0,indices:[]};let a=e.toLowerCase(),s=t.toLowerCase(),n=0,r=0,l=0,o=0,i=[];for(;n<a.length&&r<s.length;)a[n]===s[r]?(l+=2+o,o++,i.push(n),(0===n||/[\s·:_/-]/.test(a[n-1]))&&(l+=4),r++):o=0,n++;return r<s.length?{score:-1,indices:[]}:{score:l-.05*Math.max(0,a.length-s.length),indices:i}}function k({text:e,indices:a}){if(!a.length)return(0,t.jsx)(t.Fragment,{children:e});let s=new Set(a),n=Array.from(e);return(0,t.jsx)(t.Fragment,{children:n.map((e,a)=>s.has(a)?(0,t.jsx)("mark",{className:"anet-cmdk-mark",children:e},a):(0,t.jsx)("span",{children:e},a))})}function j({d:e}){return(0,t.jsx)("svg",{width:"14",height:"14",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"1.5",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:e})})}let w=[{id:"go-overview",title:"Go to Overview",hint:"Fleet at a glance",group:"Navigate",icon:(0,t.jsx)(j,{d:"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3"}),perform:e=>e.push("/")},{id:"go-tasks",title:"Go to Tasks",hint:"All task statuses",group:"Navigate",icon:(0,t.jsx)(j,{d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"}),perform:e=>e.push("/tasks")},{id:"go-tasks-failed",title:"Go to Failed tasks",hint:"Filter status=failed",group:"Navigate",icon:(0,t.jsx)(j,{d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"}),perform:e=>e.push("/tasks?status=failed")},{id:"go-nodes",title:"Go to Nodes",hint:"Agent fleet",group:"Navigate",icon:(0,t.jsx)(j,{d:"M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01"}),perform:e=>e.push("/nodes")},{id:"go-messages",title:"Go to Messages",hint:"Inter-agent chat",group:"Navigate",icon:(0,t.jsx)(j,{d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"}),perform:e=>e.push("/messages")},{id:"go-networks",title:"Go to Networks",hint:"Manage networks",group:"Navigate",icon:(0,t.jsx)(j,{d:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"}),perform:e=>e.push("/settings/networks")},{id:"go-logs",title:"Go to Audit Log",hint:"Register / login / actions",group:"Navigate",icon:(0,t.jsx)(j,{d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"}),perform:e=>e.push("/logs")},{id:"go-server-logs",title:"Go to Server Logs",hint:"CommHub stdout/stderr",group:"Navigate",icon:(0,t.jsx)(j,{d:"M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"}),perform:e=>e.push("/server-logs")},{id:"go-admin",title:"Go to Admin",hint:"Server overview + broadcast",group:"Navigate",icon:(0,t.jsx)(j,{d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"}),perform:e=>e.push("/admin")},{id:"go-settings",title:"Go to Settings",hint:"Connection / Account / Resources",group:"Navigate",icon:(0,t.jsx)(j,{d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.066 2.573c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.573 1.066c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.066-2.573c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),perform:e=>e.push("/settings")},{id:"act-toggle-theme",title:"Toggle theme",hint:"cyber ↔ light",group:"Actions",icon:(0,t.jsx)(j,{d:"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"}),perform:()=>{let e=document.documentElement.getAttribute("data-theme")||"cyber",t="light"===e||"mint"===e?"cyber":"light";document.documentElement.setAttribute("data-theme",t);try{localStorage.setItem("anet-theme",t)}catch{}}},{id:"act-copy-url",title:"Copy current URL",hint:"page link to clipboard",group:"Actions",icon:(0,t.jsx)(j,{d:"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"}),perform:()=>{try{navigator.clipboard.writeText(window.location.href)}catch{}}},{id:"act-sign-out",title:"Sign out",hint:"clear session",group:"Actions",icon:(0,t.jsx)(j,{d:"M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15m3 0l3-3m0 0l-3-3m3 3H9"}),perform:()=>{fetch("/api/auth/logout",{method:"POST"}).catch(()=>{});try{sessionStorage.removeItem("anet_v3_auth")}catch{}window.location.assign("/login")}},{id:"act-help",title:"Show keyboard shortcuts",hint:"press ? — works on mobile too",group:"Actions",icon:(0,t.jsx)(j,{d:"M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"}),perform:()=>{window.dispatchEvent(new KeyboardEvent("keydown",{key:"?"}))}},{id:"act-pin-working",title:"Pin topology filter: working",hint:"highlight working nodes only",group:"Actions",icon:(0,t.jsx)(j,{d:"M4 6h16M4 12h8m-8 6h16"}),perform:()=>{try{sessionStorage.setItem("anet-topo-pinned-status","working")}catch{}window.dispatchEvent(new CustomEvent("anet:topo-pin",{detail:{kind:"status",value:"working"}}))}},{id:"act-pin-idle",title:"Pin topology filter: idle",hint:"highlight idle (online) nodes only",group:"Actions",icon:(0,t.jsx)(j,{d:"M4 6h16M4 12h8m-8 6h16"}),perform:()=>{try{sessionStorage.setItem("anet-topo-pinned-status","idle")}catch{}window.dispatchEvent(new CustomEvent("anet:topo-pin",{detail:{kind:"status",value:"idle"}}))}},{id:"act-pin-offline",title:"Pin topology filter: offline",hint:"highlight offline / no-SSE nodes",group:"Actions",icon:(0,t.jsx)(j,{d:"M4 6h16M4 12h8m-8 6h16"}),perform:()=>{try{sessionStorage.setItem("anet-topo-pinned-status","offline")}catch{}window.dispatchEvent(new CustomEvent("anet:topo-pin",{detail:{kind:"status",value:"offline"}}))}},{id:"act-pin-vendor-A",title:"Pin topology filter: Anthropic",hint:"highlight A vendor only",group:"Actions",icon:(0,t.jsx)(j,{d:"M4 6h16M4 12h8m-8 6h16"}),perform:()=>{try{sessionStorage.setItem("anet-topo-pinned-vendor","A")}catch{}window.dispatchEvent(new CustomEvent("anet:topo-pin",{detail:{kind:"vendor",value:"A"}}))}},{id:"act-pin-vendor-O",title:"Pin topology filter: OpenAI",hint:"highlight O vendor only",group:"Actions",icon:(0,t.jsx)(j,{d:"M4 6h16M4 12h8m-8 6h16"}),perform:()=>{try{sessionStorage.setItem("anet-topo-pinned-vendor","O")}catch{}window.dispatchEvent(new CustomEvent("anet:topo-pin",{detail:{kind:"vendor",value:"O"}}))}},{id:"act-pin-vendor-S",title:"Pin topology filter: 书生",hint:"highlight 书 vendor only",group:"Actions",icon:(0,t.jsx)(j,{d:"M4 6h16M4 12h8m-8 6h16"}),perform:()=>{try{sessionStorage.setItem("anet-topo-pinned-vendor","书")}catch{}window.dispatchEvent(new CustomEvent("anet:topo-pin",{detail:{kind:"vendor",value:"书"}}))}},{id:"act-clear-topo-pins",title:"Clear topology filters",hint:"release pinned status + group + vendor + edge",group:"Actions",icon:(0,t.jsx)(j,{d:"M6 18L18 6M6 6l12 12"}),perform:()=>{try{sessionStorage.removeItem("anet-topo-pinned-status"),sessionStorage.removeItem("anet-topo-pinned-group"),sessionStorage.removeItem("anet-topo-pinned-vendor")}catch{}window.dispatchEvent(new CustomEvent("anet:topo-pin",{detail:{kind:"clear"}}))}},{id:"act-clear-topo-edge",title:"Clear topology edge pin",hint:"release pinned recent-signal row only",group:"Actions",icon:(0,t.jsx)(j,{d:"M6 18L18 6M6 6l12 12"}),perform:()=>{window.dispatchEvent(new CustomEvent("anet:topo-pin",{detail:{kind:"clear-edge"}}))}},{id:"act-clear-topo-vendor",title:"Clear topology vendor filter",hint:"release pinned vendor only",group:"Actions",icon:(0,t.jsx)(j,{d:"M6 18L18 6M6 6l12 12"}),perform:()=>{try{sessionStorage.removeItem("anet-topo-pinned-vendor")}catch{}window.dispatchEvent(new CustomEvent("anet:topo-pin",{detail:{kind:"clear-vendor"}}))}},{id:"act-topo-toggle-layout",title:"Toggle topology layout",hint:"ring ↔ grid (or press `l`)",group:"Actions",icon:(0,t.jsx)(j,{d:"M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6zm10 0h6v6h-6v-6z"}),perform:()=>{window.dispatchEvent(new CustomEvent("anet:topo-layout",{detail:{kind:"toggle"}}))}},{id:"act-topo-fit",title:"Fit topology to canvas",hint:"auto-zoom to content (or press `f`)",group:"Actions",icon:(0,t.jsx)(j,{d:"M4 8V4h4M16 4h4v4M20 16v4h-4M8 20H4v-4"}),perform:()=>{window.dispatchEvent(new CustomEvent("anet:topo-view",{detail:{kind:"fit"}}))}}];function N(){let e=(0,a.useRouter)(),[s,r]=(0,n.useState)(!1),[l,o]=(0,n.useState)(""),[i,c]=(0,n.useState)(0),d=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=e=>{if((e.metaKey||e.ctrlKey)&&"k"===e.key.toLowerCase()){e.preventDefault(),r(e=>!e);return}if("/"===e.key&&document.activeElement?.tagName!=="INPUT"&&document.activeElement?.tagName!=="TEXTAREA"&&!s){e.preventDefault(),r(!0);return}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[s]),(0,n.useEffect)(()=>{s&&(o(""),c(0),setTimeout(()=>d.current?.focus(),50))},[s]);let[h,m]=(0,n.useState)([]);(0,n.useEffect)(()=>{s&&m(v())},[s]);let[p,x]=(0,n.useState)([]);(0,n.useEffect)(()=>{if(!s)return;let e=!1;return(async()=>{try{let[a,s]=await Promise.all([fetch("/api/hub/status").then(e=>e.ok?e.json():{sessions:[]}),fetch("/api/hub/tasks?limit=20").then(e=>e.ok?e.json():{tasks:[]})]);if(e)return;let n=(a.sessions||[]).filter(e=>e.alias).slice(0,20).map(e=>({id:`agent-${e.alias}`,title:`Go to agent ${e.alias}`,hint:`${e.agent||"agent"} \xb7 ${e.status||"unknown"}`,group:"Agents",icon:(0,t.jsx)(j,{d:"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"}),perform:t=>t.push(`/node?alias=${encodeURIComponent(e.alias)}`)})),r=(s.tasks||[]).filter(e=>e.task_id).slice(0,15).map(e=>({id:`task-${e.task_id}`,title:`Open task: ${(e.content||e.task_id||"").slice(0,50)}`,hint:`${e.from_name||"?"} → ${e.to_name||"?"} \xb7 ${e.status||""}`,group:"Tasks",icon:(0,t.jsx)(j,{d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"}),perform:t=>t.push(`/tasks/${encodeURIComponent(e.task_id)}`)}));x([...n,...r])}catch{}})(),()=>{e=!0}},[s]);let u=(0,n.useMemo)(()=>{let e=[...w,...p];if(!l.trim()){let t=h.map(t=>e.find(e=>e.id===t)).filter(e=>!!e).map(e=>({...e,group:"Recents"})),a=new Set(h);return[...t,...w.filter(e=>!a.has(e.id))]}let t=e.map(e=>{let t=y(e.title,l),a=e.hint?y(e.hint,l):{score:-1,indices:[]},s=y(e.id,l);return{c:e,score:Math.max(t.score>=0?+t.score:-1/0,a.score>=0?.6*a.score:-1/0,s.score>=0?.3*s.score:-1/0),_titleHi:t.score>=0?t.indices:[],_hintHi:a.score>=0?a.indices:[]}}).filter(e=>e.score>-1/0);return t.sort((e,t)=>t.score-e.score),t.map(e=>({...e.c,_titleHi:e._titleHi,_hintHi:e._hintHi}))},[l,h,p]);if((0,n.useEffect)(()=>{i>=u.length&&c(0)},[u.length,i]),!s)return null;let g={};for(let e of u)(g[e.group]||=[]).push(e);let f=0;return(0,t.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"Command palette",className:"anet-cmdk fixed inset-0 z-[100] flex items-start justify-center pt-[10vh] sm:pt-[15vh] px-4",onClick:()=>r(!1),onKeyDown:t=>{if("Escape"===t.key)return void r(!1);if("ArrowDown"===t.key){t.preventDefault(),c(e=>Math.min(e+1,u.length-1));return}if("ArrowUp"===t.key){t.preventDefault(),c(e=>Math.max(e-1,0));return}if("Enter"===t.key){t.preventDefault();let a=u[i];a&&(b(a.id),a.perform(e),r(!1))}},children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-xl rounded-xl border border-[#2a2a4a] bg-[#0d0d1a] shadow-2xl shadow-black/40 overflow-hidden",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 border-b border-[#2a2a4a] px-3 py-2.5",children:[(0,t.jsx)("svg",{width:"14",height:"14",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"1.5",className:"text-gray-500 shrink-0",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),(0,t.jsx)("input",{ref:d,value:l,onChange:e=>{o(e.target.value),c(0)},placeholder:"Type a command or search…",className:"flex-1 bg-transparent text-sm text-gray-200 placeholder-gray-600 focus:outline-none"}),(0,t.jsx)("kbd",{className:"text-[10px] text-gray-600 border border-[#2a2a4a] rounded px-1.5 py-0.5 font-mono",children:"esc"})]}),(0,t.jsx)("div",{className:"max-h-[60vh] overflow-y-auto py-2",children:0===u.length?(0,t.jsxs)("div",{className:"px-4 py-8 text-center text-xs text-gray-600",children:['No commands match "',l,'"']}):Object.entries(g).map(([a,s])=>(0,t.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,t.jsx)("div",{className:"text-[10px] uppercase tracking-[0.12em] text-gray-600 px-3 py-1",children:a}),s.map(a=>{let s=f++,n=s===i;return(0,t.jsxs)("button",{onMouseEnter:()=>c(s),onClick:()=>{b(a.id),a.perform(e),r(!1)},className:`anet-cmdk-row w-full flex items-center gap-3 px-3 py-2 text-left text-sm ${n?"bg-cyan-500/10 text-cyan-300":"text-gray-300 hover:bg-[#1a1a2a]/50"}`,children:[(0,t.jsx)("span",{className:n?"text-cyan-400":"text-gray-500",children:a.icon}),(0,t.jsxs)("span",{className:"flex-1 min-w-0",children:[(0,t.jsx)("span",{className:"block truncate",children:(0,t.jsx)(k,{text:a.title,indices:a._titleHi||[]})}),a.hint&&(0,t.jsx)("span",{className:"block text-[11px] text-gray-600 truncate",children:(0,t.jsx)(k,{text:a.hint,indices:a._hintHi||[]})})]}),n&&(0,t.jsx)("span",{className:"text-[10px] text-gray-500",children:"↵"})]},a.id)})]},a))}),(0,t.jsxs)("div",{className:"border-t border-[#2a2a4a] px-3 py-1.5 flex items-center justify-between text-[10px] text-gray-600",children:[(0,t.jsxs)("span",{className:"flex items-center gap-3",children:[(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{className:"font-mono",children:"↑↓"})," navigate"]}),(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{className:"font-mono",children:"↵"})," select"]}),(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{className:"font-mono",children:"esc"})," close"]})]}),(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{className:"font-mono",children:"⌘K"})," toggle"]})]})]})]})}let M=[{group:"Global",items:[{keys:["⌘","K"],label:"Open command palette (also Ctrl+K)"},{keys:["/"],label:"Open command palette"},{keys:["?"],label:"Toggle this help overlay"},{keys:["Esc"],label:"Close any open modal"}]},{group:"Navigate (vim-style)",items:[{keys:["g","o"],label:"Go to Overview"},{keys:["g","t"],label:"Go to Tasks"},{keys:["g","n"],label:"Go to Nodes"},{keys:["g","m"],label:"Go to Messages"},{keys:["g","w"],label:"Go to Networks"},{keys:["g","a"],label:"Go to Admin"},{keys:["g","l"],label:"Go to Audit Log"},{keys:["g","s"],label:"Go to Settings"}]},{group:"Command palette",items:[{keys:["↑","↓"],label:"Move selection"},{keys:["↵"],label:"Activate selected command"},{keys:["type"],label:"Filter — searches commands, agents, tasks"}]},{group:"Topology canvas",items:[{keys:["+"],label:"Zoom in (also =)"},{keys:["−"],label:"Zoom out"},{keys:["0"],label:"Reset zoom + pan"},{keys:["f"],label:"Fit topology to canvas"},{keys:["l"],label:"Toggle layout (ring ↔ grid)"},{keys:["⌘","wheel"],label:"Zoom toward cursor (Ctrl on Windows/Linux)"},{keys:["drag"],label:"Pan the canvas (cursor → grabbing)"},{keys:["dbl-click"],label:"Reset zoom + pan (empty canvas only)"},{keys:["click"],label:"Open chat popover on a node (Esc to close)"},{keys:["click hub"],label:"Fit topology to canvas (R52)"},{keys:["hover legend"],label:"Highlight nodes of a status (R55)"},{keys:["hover signal"],label:"Highlight one flow edge (R56)"},{keys:["click chip"],label:"Pin a status filter (R60/R61)"},{keys:["Esc"],label:"Clear pinned filter (R62) — or close chat"},{keys:["click group"],label:"Pin a team focus (R63)"},{keys:["click ×"],label:"Clear one filter (R64) — Esc clears all"},{keys:["⌘","K"],label:'Pin / clear filters via palette → "Pin topology filter…" (R69)'},{keys:["⌘","K"],label:"Toggle layout / Fit canvas via palette (R74)"},{keys:["click pill"],label:"Clear filter — click anywhere on the pill body (R73)"},{keys:["hover chip"],label:'Brighten all active flows — hover "N active links" (R77)'},{keys:["hover N working"],label:"Highlight working nodes — chip-row sibling of legend (R79)"},{keys:["hover vendor"],label:"Highlight one vendor — hover A/O/书/? in the chip row (R80)"},{keys:["hover seg"],label:"Preview a status filter — hover a pressure-bar segment (R83)"},{keys:["hover group"],label:"Preview a team focus — hover a group label (R86)"},{keys:["click vendor"],label:"Pin a vendor filter — click A/O/书/? in the chip row (R88)"},{keys:["⌘","K"],label:'Clear vendor pin only via palette → "Clear topology vendor filter" (R90)'},{keys:["⌘","K"],label:'Pin vendor: Anthropic/OpenAI/书生 via palette → "Pin topology filter…" (R108)'},{keys:["click row"],label:"Pin a flow filter — click a recent-signal row to lock the edge (R116)"},{keys:["⌘","K"],label:'Clear edge pin only via palette → "Clear topology edge pin" (R117)'},{keys:["click badge"],label:"Pin a flow filter from the canvas — click an edge midpoint count badge (R121)"},{keys:["click footer"],label:'See all flows — click "+ N more flows" in the recent-signal panel (R133)'},{keys:["click chip"],label:'See all flows — click the "N active links" chip in the chip row (R136)'},{keys:["click chip"],label:'Pin "working" status — click "N working" in the chip row (R139)'},{keys:["click chip"],label:'Open the agent list — click "N online" in the chip row (R140)'},{keys:["Tab","Enter"],label:"Open chat on a focused node (also Space) — keyboard parallel of click-to-chat (R151)"}]}],C={o:"/",t:"/tasks",n:"/nodes",m:"/messages",w:"/settings/networks",a:"/admin",l:"/logs",s:"/settings"};function _(){let[e,s]=(0,n.useState)(!1),r=(0,a.useRouter)(),l=(0,n.useRef)(0);return((0,n.useEffect)(()=>{let t=t=>{let a=document.activeElement?.tagName,n="INPUT"===a||"TEXTAREA"===a||document.activeElement?.isContentEditable;if("?"===t.key&&!n){t.preventDefault(),s(e=>!e);return}if("Escape"===t.key&&e&&s(!1),!n&&!t.metaKey&&!t.ctrlKey&&!t.altKey){if("g"===t.key){l.current=Date.now();return}if(Date.now()-l.current<1500){let e=C[t.key.toLowerCase()];e&&(t.preventDefault(),l.current=0,r.push(e))}}};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[e,r]),e)?(0,t.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"Keyboard shortcuts",className:"anet-help fixed inset-0 z-[101] flex items-center justify-center px-4",onClick:()=>s(!1),children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-md rounded-xl border border-[#2a2a4a] bg-[#0d0d1a] shadow-2xl shadow-black/40 overflow-hidden",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-[#2a2a4a] px-4 py-2.5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-gray-200",children:[(0,t.jsx)("svg",{width:"14",height:"14",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"1.5",className:"text-gray-500",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})}),"Keyboard shortcuts"]}),(0,t.jsx)("button",{onClick:()=>s(!1),"aria-label":"Close help",className:"text-gray-500 hover:text-gray-300 text-lg leading-none px-1",children:"×"})]}),(0,t.jsx)("div",{className:"px-4 py-3 max-h-[70vh] overflow-y-auto",children:M.map(e=>(0,t.jsxs)("div",{className:"mb-3 last:mb-0",children:[(0,t.jsx)("div",{className:"text-[10px] uppercase tracking-[0.12em] text-gray-600 mb-1.5",children:e.group}),(0,t.jsx)("ul",{className:"space-y-1.5",children:e.items.map((e,a)=>(0,t.jsxs)("li",{className:"flex items-center gap-3 text-xs",children:[(0,t.jsx)("span",{className:"flex items-center gap-1",children:e.keys.map((e,a)=>(0,t.jsx)("kbd",{className:"text-[10px] font-mono border border-[#2a2a4a] rounded px-1.5 py-0.5 text-gray-400 bg-[#1a1a2a]/40",children:e},a))}),(0,t.jsx)("span",{className:"text-gray-400 flex-1",children:e.label})]},a))})]},e.group))}),(0,t.jsxs)("div",{className:"border-t border-[#2a2a4a] px-4 py-1.5 text-[10px] text-gray-600 flex items-center justify-between",children:[(0,t.jsxs)("span",{children:["Press ",(0,t.jsx)("kbd",{className:"font-mono",children:"?"})," to toggle"]}),(0,t.jsxs)("span",{children:["or ",(0,t.jsx)("kbd",{className:"font-mono",children:"esc"})," to close"]})]})]})]}):null}let S=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");if(!t.ok)throw Error(`hub ${t.status}`);return t.json()};function E(e){return e>=85?{fill:"#ef4444",track:"rgb(239 68 68 / 0.16)"}:e>=60?{fill:"#f59e0b",track:"rgb(245 158 11 / 0.16)"}:{fill:"#10b981",track:"rgb(16 185 129 / 0.16)"}}function A({pct:e,label:a}){let s=E(e),n=Math.max(0,Math.min(100,e));return(0,t.jsxs)("div",{className:"space-y-0.5",children:[(0,t.jsxs)("div",{className:"flex justify-between text-[10px] text-[var(--fg-muted)] font-mono",children:[(0,t.jsx)("span",{children:a}),(0,t.jsxs)("span",{className:"tabular-nums",children:[Math.round(n),"%"]})]}),(0,t.jsx)("div",{className:"h-1.5 rounded-full overflow-hidden",style:{background:s.track},children:(0,t.jsx)("div",{className:"h-full transition-[width] duration-300 ease-out",style:{width:`${n}%`,background:s.fill}})})]})}function L({values:e,tint:a,label:s}){if(!e||e.length<2)return null;let n=100/Math.max(1,e.length-1),r=e.map((e,t)=>{let a=18-Math.max(0,Math.min(100,e))/100*18;return`${(t*n).toFixed(1)},${a.toFixed(1)}`}),l=r.join(" "),o=`M0,18 L${r.join(" L")} L100,18 Z`;return(0,t.jsxs)("svg",{width:"100%",height:18,viewBox:"0 0 100 18",preserveAspectRatio:"none","aria-label":`${s} 5-min history`,"data-server-sparkline":s,children:[(0,t.jsx)("path",{d:o,fill:a,opacity:"0.18"}),(0,t.jsx)("polyline",{points:l,fill:"none",stroke:a,strokeWidth:"1.2"})]})}function R({cpu:e,mem:a,disk:s}){let n=[e,a,s].filter(e=>"number"==typeof e);if(0===n.length)return null;let r=Math.max(...n),l=E(r);return(0,t.jsx)("span",{className:"inline-block w-2 h-2 rounded-full shrink-0",style:{background:l.fill,boxShadow:`0 0 0 2px ${l.track}`},"data-server-health-badge":r>=85?"red":r>=60?"amber":"green",title:`worst: ${Math.round(r)}%`})}function I({agents:e}){return e&&0!==e.length?(0,t.jsx)("ul",{className:"space-y-1","data-server-agent-list":!0,children:e.map(e=>{let a="working"===e.status?"#10b981":"idle"===e.status?"#06b6d4":"#6b7280";return(0,t.jsxs)("li",{className:"flex items-center gap-1.5 text-[10px] font-mono","data-server-agent":e.alias,children:[(0,t.jsx)("span",{className:"w-1.5 h-1.5 rounded-full shrink-0",style:{background:a}}),(0,t.jsx)("span",{className:"font-semibold truncate",style:{color:"var(--fg)"},children:e.alias}),e.runtime&&(0,t.jsxs)("span",{className:"text-[9px] text-[var(--fg-dim)] shrink-0",children:["· ",e.runtime]}),"number"==typeof e.progress&&e.progress>0&&(0,t.jsxs)("span",{className:"ml-auto text-[9px] tabular-nums text-[var(--fg-muted)]",children:[Math.round(100*e.progress),"%"]})]},e.alias)})}):(0,t.jsx)("div",{className:"text-[9px] text-[var(--fg-dim)] font-mono italic px-1 py-1",children:"agent rollup pending hub ≥ 0.8.2-preview"})}function $(){let[e,a]=(0,n.useState)(!1),[s,l]=(0,n.useState)(new Set);(0,n.useEffect)(()=>{try{"1"===localStorage.getItem("anet-servers-drawer")&&a(!0)}catch{}try{let e=localStorage.getItem("anet-servers-drawer-expanded");e&&l(new Set(JSON.parse(e)))}catch{}},[]);let{data:o,error:i}=(0,r.default)(e?"/api/hub/servers":null,S,{refreshInterval:5e3,dedupingInterval:3e3}),c=o?.servers??[],d=o?.unavailable===!0,h=c.filter(e=>"online"===e.status).length,m=e&&!o&&!i;return(0,t.jsxs)("aside",{className:"fixed right-0 top-20 z-40 hidden lg:flex flex-col rounded-l-xl border border-r-0 shadow-xl shadow-black/30 anet-fade-in",style:{background:"var(--bg-secondary)",borderColor:"var(--border)",width:e?296:40,maxHeight:"calc(100vh - 6rem)",transition:"width 200ms ease-out"},"aria-label":"Servers panel",children:[(0,t.jsxs)("button",{onClick:()=>a(e=>{let t=!e;try{localStorage.setItem("anet-servers-drawer",t?"1":"0")}catch{}return t}),"aria-expanded":e,"aria-label":e?"Collapse servers panel":"Expand servers panel",className:"flex items-center gap-2 px-2.5 py-2 border-b text-[11px] font-semibold tracking-wide select-none",style:{color:"var(--fg)",borderColor:"var(--border)"},children:[(0,t.jsxs)("svg",{className:"w-4 h-4 shrink-0",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("rect",{x:"3",y:"4",width:"18",height:"6",rx:"1.5"}),(0,t.jsx)("rect",{x:"3",y:"14",width:"18",height:"6",rx:"1.5"}),(0,t.jsx)("circle",{cx:"7",cy:"7",r:"0.7",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"7",cy:"17",r:"0.7",fill:"currentColor"})]}),e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"flex-1 text-left",children:"Servers"}),(0,t.jsxs)("span",{className:"text-[10px] text-[var(--fg-muted)] font-mono",children:[h,"/",c.length]})]})]}),e&&(0,t.jsxs)("div",{className:"flex-1 min-h-0 overflow-y-auto px-2 py-2 space-y-2","data-servers-body":!0,children:[m&&(0,t.jsx)("div",{className:"text-[10px] text-[var(--fg-muted)] font-mono text-center py-4",children:"loading servers…"}),i&&!o&&(0,t.jsx)("div",{className:"rounded-md border px-2.5 py-2 text-[10px] font-mono",style:{background:"rgb(239 68 68 / 0.06)",borderColor:"rgb(239 68 68 / 0.25)",color:"#ef4444"},children:"hub unreachable · retrying every 5s"}),d&&(0,t.jsxs)("div",{className:"text-[10px] text-[var(--fg-muted)] font-mono text-center py-3 leading-relaxed",children:["host telemetry not available",(0,t.jsx)("br",{}),(0,t.jsx)("span",{className:"text-[var(--fg-dim)]",children:"upgrade commhub-server ≥ 0.8.1-preview.2"})]}),!m&&!i&&!d&&0===c.length&&(0,t.jsx)("div",{className:"text-[10px] text-[var(--fg-muted)] font-mono text-center py-4",children:"no servers reporting yet"}),c.map(e=>{let a="offline"===e.status,n=null!=e.cpu_load_1min&&e.cpu_cores>0?e.cpu_load_1min/e.cpu_cores*100:null,r=null!=e.mem_used_gb&&null!=e.mem_total_gb&&e.mem_total_gb>0?e.mem_used_gb/e.mem_total_gb*100:null,o=null!=e.disk_used_gb&&null!=e.disk_total_gb&&e.disk_total_gb>0?e.disk_used_gb/e.disk_total_gb*100:null,i=s.has(e.hostname);return(0,t.jsxs)("div",{className:"rounded-lg border px-2.5 py-2 space-y-1.5",style:{background:"var(--bg)",borderColor:"var(--border)",opacity:a?.55:1},"data-server-card":e.hostname,"data-server-expanded":i?"true":"false",title:e.ip?`${e.hostname} \xb7 ${e.ip}`:e.hostname,children:[(0,t.jsxs)("button",{type:"button",onClick:()=>{let t;return t=e.hostname,l(e=>{let a=new Set(e);a.has(t)?a.delete(t):a.add(t);try{localStorage.setItem("anet-servers-drawer-expanded",JSON.stringify([...a]))}catch{}return a})},"aria-expanded":i,className:"w-full flex items-center justify-between gap-2 text-left","data-server-card-toggle":e.hostname,children:[(0,t.jsxs)("div",{className:"min-w-0 flex items-center gap-1.5",children:[!a&&(0,t.jsx)(R,{cpu:n,mem:r,disk:o}),(0,t.jsx)("span",{className:"font-mono text-[12px] font-semibold truncate",style:{color:"var(--fg)"},children:e.hostname}),e.note&&(0,t.jsxs)("span",{className:"text-[9px] text-[var(--fg-dim)]",children:["(",e.note,")"]})]}),(0,t.jsxs)("span",{className:"flex items-center gap-1 shrink-0",children:[(0,t.jsxs)("span",{className:"text-[10px] text-[var(--fg-muted)] font-mono tabular-nums",children:[e.agent_count," agent",1===e.agent_count?"":"s"]}),(0,t.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",style:{transform:i?"rotate(90deg)":"rotate(0deg)",transition:"transform 150ms ease-out"},"aria-hidden":!0,children:(0,t.jsx)("path",{d:"M3 1.5L7 5L3 8.5",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]})]}),!a&&null!=n&&(0,t.jsx)(A,{pct:n,label:`CPU ${e.cpu_load_1min.toFixed(2)}/${e.cpu_cores}`}),!a&&null!=r&&(0,t.jsx)(A,{pct:r,label:`RAM ${e.mem_used_gb.toFixed(1)}/${e.mem_total_gb.toFixed(1)}G`}),a&&(0,t.jsx)("div",{className:"text-[10px] text-[var(--fg-dim)] font-mono italic",children:"CPU n/a · RAM n/a · offline"}),i&&!a&&(0,t.jsxs)("div",{className:"pt-1 mt-1 border-t space-y-1.5",style:{borderColor:"var(--border)"},children:[null!=o?(0,t.jsx)(A,{pct:o,label:`DISK ${e.disk_used_gb.toFixed(1)}/${e.disk_total_gb.toFixed(1)}G`}):(0,t.jsx)("div",{className:"text-[9px] text-[var(--fg-dim)] font-mono italic",children:"disk metric pending hub ≥ 0.8.2-preview"}),e.cpu_history&&e.cpu_history.length>=2&&(0,t.jsxs)("div",{className:"space-y-0.5",children:[(0,t.jsx)("div",{className:"text-[9px] text-[var(--fg-muted)] font-mono",children:"CPU · 5-min"}),(0,t.jsx)(L,{values:e.cpu_history,tint:"#10b981",label:"CPU"})]}),e.mem_history&&e.mem_history.length>=2&&(0,t.jsxs)("div",{className:"space-y-0.5",children:[(0,t.jsx)("div",{className:"text-[9px] text-[var(--fg-muted)] font-mono",children:"RAM · 5-min"}),(0,t.jsx)(L,{values:e.mem_history,tint:"#06b6d4",label:"MEM"})]}),(0,t.jsxs)("div",{className:"pt-1",children:[(0,t.jsx)("div",{className:"text-[9px] text-[var(--fg-muted)] font-mono mb-0.5",children:"agents"}),(0,t.jsx)(I,{agents:e.agents})]})]})]},e.hostname)}),c.length>0&&(0,t.jsx)("div",{className:"pt-1 text-[9px] text-[var(--fg-dim)] font-mono text-center",children:"live · refreshing every 5s"})]})]})}let z=["/login"];e.s(["AppShell",0,function({children:e}){let s=(0,a.usePathname)();return z.includes(s)?(0,t.jsx)(t.Fragment,{children:e}):(0,t.jsxs)("div",{className:"flex min-h-screen",children:[(0,t.jsx)(h,{}),(0,t.jsxs)("main",{className:"flex-1 min-w-0 flex flex-col",children:[(0,t.jsx)(g,{}),(0,t.jsx)("div",{className:"flex-1 min-w-0",children:e})]}),(0,t.jsx)(N,{}),(0,t.jsx)(_,{}),(0,t.jsx)($,{})]})}],22485)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,59276,e=>{"use strict";var s=e.i(12629),a=e.i(11449);let t=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",t,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/health",t,r);return{health:e||null,error:a}},"useLicense",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/license",t,{refreshInterval:6e4});return{license:e?.ok?e:null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),t,r);return{messages:i?.messages||[],error:c,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:c}=(0,s.default)(n("/api/hub/status",e),t,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:c}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),t,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:c,error:d,isLoading:o}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),t,r);return{tasks:c?.tasks||[],count:c?.count??0,source:c?.source,error:d,isLoading:o}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.4.6-preview.416"],70286)},65610,e=>{"use strict";var s=e.i(22381),a=e.i(23910),t=e.i(56839),r=e.i(59276),n=e.i(70286);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:l}=(0,r.useHealth)(),{license:i}=(0,r.useLicense)(),[c,d]=(0,a.useState)(""),[o,x]=(0,a.useState)(""),[m,h]=(0,a.useState)(""),[g,u]=(0,a.useState)(""),[p,N]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",j="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${j}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${j}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${l?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:l?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsxs)("span",{className:"text-gray-500",children:["SSE streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.uptime?`${Math.floor(l.uptime/3600)}h ${Math.floor(l.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 font-mono ${j}`,title:"From package.json @sleep2agi/agent-network-dashboard",children:n.DASHBOARD_VERSION})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",i?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===i.license.type?"text-green-300 bg-green-500/10 border-green-500/30":i.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),i.license.type,i.license.days_left?` \xb7 ${i.license.days_left}d left`:""]})]}),i?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[i.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[i.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.license.expires_at})]}),i.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!c.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})}),s=await e.json();x(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&d(""),setTimeout(()=>x(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),o&&(0,s.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!m||!g)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void N("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:m,new_password:g})}),t=await a.json();if(N(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}h(""),u("")}setTimeout(()=>N(""),5e3)},disabled:!m||!g,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),p&&(0,s.jsx)("div",{className:`mt-2 text-xs ${p.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:p})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);
@@ -0,0 +1,4 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,136,(e,t,a)=>{},7454,(e,t,a)=>{var n=e.i(20888);e.r(136);var s=e.r(23910),r=s&&"object"==typeof s&&"default"in s?s:{default:s},o=void 0!==n.default&&n.default.env&&!0,l=function(e){return"[object String]"===Object.prototype.toString.call(e)},i=function(){function e(e){var t=void 0===e?{}:e,a=t.name,n=void 0===a?"stylesheet":a,s=t.optimizeForSpeed,r=void 0===s?o:s;d(l(n),"`name` must be a string"),this._name=n,this._deletedRulePlaceholder="#"+n+"-deleted-rule____{}",d("boolean"==typeof r,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=r,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0;var i="u">typeof window&&document.querySelector('meta[property="csp-nonce"]');this._nonce=i?i.getAttribute("content"):null}var t,a=e.prototype;return a.setOptimizeForSpeed=function(e){d("boolean"==typeof e,"`setOptimizeForSpeed` accepts a boolean"),d(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=e,this.inject()},a.isOptimizeForSpeed=function(){return this._optimizeForSpeed},a.inject=function(){var e=this;if(d(!this._injected,"sheet already injected"),this._injected=!0,"u">typeof window&&this._optimizeForSpeed){this._tags[0]=this.makeStyleTag(this._name),this._optimizeForSpeed="insertRule"in this.getSheet(),this._optimizeForSpeed||(o||console.warn("StyleSheet: optimizeForSpeed mode not supported falling back to standard mode."),this.flush(),this._injected=!0);return}this._serverSheet={cssRules:[],insertRule:function(t,a){return"number"==typeof a?e._serverSheet.cssRules[a]={cssText:t}:e._serverSheet.cssRules.push({cssText:t}),a},deleteRule:function(t){e._serverSheet.cssRules[t]=null}}},a.getSheetForTag=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]},a.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},a.insertRule=function(e,t){if(d(l(e),"`insertRule` accepts only strings"),"u"<typeof window)return"number"!=typeof t&&(t=this._serverSheet.cssRules.length),this._serverSheet.insertRule(e,t),this._rulesCount++;if(this._optimizeForSpeed){var a=this.getSheet();"number"!=typeof t&&(t=a.cssRules.length);try{a.insertRule(e,t)}catch(t){return o||console.warn("StyleSheet: illegal rule: \n\n"+e+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),-1}}else{var n=this._tags[t];this._tags.push(this.makeStyleTag(this._name,e,n))}return this._rulesCount++},a.replaceRule=function(e,t){if(this._optimizeForSpeed||"u"<typeof window){var a="u">typeof window?this.getSheet():this._serverSheet;if(t.trim()||(t=this._deletedRulePlaceholder),!a.cssRules[e])return e;a.deleteRule(e);try{a.insertRule(t,e)}catch(n){o||console.warn("StyleSheet: illegal rule: \n\n"+t+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),a.insertRule(this._deletedRulePlaceholder,e)}}else{var n=this._tags[e];d(n,"old rule at index `"+e+"` not found"),n.textContent=t}return e},a.deleteRule=function(e){if("u"<typeof window)return void this._serverSheet.deleteRule(e);if(this._optimizeForSpeed)this.replaceRule(e,"");else{var t=this._tags[e];d(t,"rule at index `"+e+"` not found"),t.parentNode.removeChild(t),this._tags[e]=null}},a.flush=function(){this._injected=!1,this._rulesCount=0,"u">typeof window?(this._tags.forEach(function(e){return e&&e.parentNode.removeChild(e)}),this._tags=[]):this._serverSheet.cssRules=[]},a.cssRules=function(){var e=this;return"u"<typeof window?this._serverSheet.cssRules:this._tags.reduce(function(t,a){return a?t=t.concat(Array.prototype.map.call(e.getSheetForTag(a).cssRules,function(t){return t.cssText===e._deletedRulePlaceholder?null:t})):t.push(null),t},[])},a.makeStyleTag=function(e,t,a){t&&d(l(t),"makeStyleTag accepts only strings as second parameter");var n=document.createElement("style");this._nonce&&n.setAttribute("nonce",this._nonce),n.type="text/css",n.setAttribute("data-"+e,""),t&&n.appendChild(document.createTextNode(t));var s=document.head||document.getElementsByTagName("head")[0];return a?s.insertBefore(n,a):s.appendChild(n),n},t=[{key:"length",get:function(){return this._rulesCount}}],function(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(e.prototype,t),e}();function d(e,t){if(!e)throw Error("StyleSheet: "+t+".")}var c=function(e){for(var t=5381,a=e.length;a;)t=33*t^e.charCodeAt(--a);return t>>>0},u={};function h(e,t){if(!t)return"jsx-"+e;var a=String(t),n=e+a;return u[n]||(u[n]="jsx-"+c(e+"-"+a)),u[n]}function p(e,t){"u"<typeof window&&(t=t.replace(/\/style/gi,"\\/style"));var a=e+t;return u[a]||(u[a]=t.replace(/__jsx-style-dynamic-selector/g,e)),u[a]}var m=function(){function e(e){var t=void 0===e?{}:e,a=t.styleSheet,n=void 0===a?null:a,s=t.optimizeForSpeed,r=void 0!==s&&s;this._sheet=n||new i({name:"styled-jsx",optimizeForSpeed:r}),this._sheet.inject(),n&&"boolean"==typeof r&&(this._sheet.setOptimizeForSpeed(r),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var t=e.prototype;return t.add=function(e){var t=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(e.children),this._sheet.setOptimizeForSpeed(this._optimizeForSpeed),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),"u">typeof window&&!this._fromServer&&(this._fromServer=this.selectFromServer(),this._instancesCounts=Object.keys(this._fromServer).reduce(function(e,t){return e[t]=0,e},{}));var a=this.getIdAndRules(e),n=a.styleId,s=a.rules;if(n in this._instancesCounts){this._instancesCounts[n]+=1;return}var r=s.map(function(e){return t._sheet.insertRule(e)}).filter(function(e){return -1!==e});this._indices[n]=r,this._instancesCounts[n]=1},t.remove=function(e){var t=this,a=this.getIdAndRules(e).styleId;if(function(e,t){if(!e)throw Error("StyleSheetRegistry: "+t+".")}(a in this._instancesCounts,"styleId: `"+a+"` not found"),this._instancesCounts[a]-=1,this._instancesCounts[a]<1){var n=this._fromServer&&this._fromServer[a];n?(n.parentNode.removeChild(n),delete this._fromServer[a]):(this._indices[a].forEach(function(e){return t._sheet.deleteRule(e)}),delete this._indices[a]),delete this._instancesCounts[a]}},t.update=function(e,t){this.add(t),this.remove(e)},t.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},t.cssRules=function(){var e=this,t=this._fromServer?Object.keys(this._fromServer).map(function(t){return[t,e._fromServer[t]]}):[],a=this._sheet.cssRules();return t.concat(Object.keys(this._indices).map(function(t){return[t,e._indices[t].map(function(e){return a[e].cssText}).join(e._optimizeForSpeed?"":"\n")]}).filter(function(e){return!!e[1]}))},t.styles=function(e){var t,a;return t=this.cssRules(),void 0===(a=e)&&(a={}),t.map(function(e){var t=e[0],n=e[1];return r.default.createElement("style",{id:"__"+t,key:"__"+t,nonce:a.nonce?a.nonce:void 0,dangerouslySetInnerHTML:{__html:n}})})},t.getIdAndRules=function(e){var t=e.children,a=e.dynamic,n=e.id;if(a){var s=h(n,a);return{styleId:s,rules:Array.isArray(t)?t.map(function(e){return p(s,e)}):[p(s,t)]}}return{styleId:h(n),rules:Array.isArray(t)?t:[t]}},t.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(e,t){return e[t.id.slice(2)]=t,e},{})},e}(),f=s.createContext(null);function x(){return new m}function g(){return s.useContext(f)}f.displayName="StyleSheetContext";var y=r.default.useInsertionEffect||r.default.useLayoutEffect,b="u">typeof window?x():void 0;function v(e){var t=b||g();return t&&("u"<typeof window?t.add(e):y(function(){return t.add(e),function(){t.remove(e)}},[e.id,String(e.dynamic)])),null}v.dynamic=function(e){return e.map(function(e){return h(e[0],e[1])}).join(" ")},a.StyleRegistry=function(e){var t=e.registry,a=e.children,n=s.useContext(f),o=s.useState(function(){return n||t||x()})[0];return r.default.createElement(f.Provider,{value:o},a)},a.createStyleRegistry=x,a.style=v,a.useStyleRegistry=g},6694,(e,t,a)=>{t.exports=e.r(7454).style},18722,e=>{"use strict";var t=e.i(20888),a=e.i(22381),n=e.i(23910),s=e.i(56839),r=e.i(3479);function o({online:e,working:t,total:n,version:s,uptime:r}){let i=n>0?Math.round(e/n*100):0,d=0===n;return(0,a.jsxs)("div",{className:d?"mb-4":"mb-8",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mb-4",children:[(0,a.jsx)("h1",{className:"text-2xl font-bold text-white tracking-tight",children:"Agent Network"}),(0,a.jsxs)("span",{className:"text-xs text-gray-500",children:["CommHub ",s," · ",r]})]}),d?(0,a.jsxs)("div",{className:"anet-stat-strip flex flex-wrap items-center gap-x-4 gap-y-1.5 text-xs text-gray-500 border-t border-b border-[#2a2a4a] py-2",children:[(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block w-1.5 h-1.5 rounded-full bg-gray-600"}),(0,a.jsx)("span",{className:"text-gray-300 tabular-nums",children:"0"})," online"]}),(0,a.jsx)("span",{className:"text-gray-700",children:"·"}),(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block w-1.5 h-1.5 rounded-full bg-gray-600"}),(0,a.jsx)("span",{className:"text-gray-300 tabular-nums",children:"0"})," working"]}),(0,a.jsx)("span",{className:"text-gray-700",children:"·"}),(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block w-1.5 h-1.5 rounded-full bg-gray-600"}),(0,a.jsx)("span",{className:"text-gray-300 tabular-nums",children:"0"})," registered"]})]}):(0,a.jsxs)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3",children:[(0,a.jsx)(l,{value:e,label:"Online",sub:`${i}% of fleet`,color:"text-green-400",accent:"from-green-500/20 to-green-500/0",border:"border-green-500/15"}),(0,a.jsx)(l,{value:t,label:"Working",sub:e>0?`${Math.round(t/e*100)}% utilization`:"--",color:"text-cyan-400",accent:"from-cyan-500/20 to-cyan-500/0",border:"border-cyan-500/15"}),(0,a.jsx)(l,{value:n-e,label:"Offline",sub:n-e==0?"All systems go":`${n-e} disconnected`,color:"text-gray-400",accent:"from-gray-500/10 to-gray-500/0",border:"border-gray-500/15"}),(0,a.jsx)(l,{value:n,label:"Total",sub:"Registered nodes",color:"text-white",accent:"from-blue-500/15 to-blue-500/0",border:"border-blue-500/15"})]})]})}function l({value:e,label:t,sub:n,color:s,accent:r,border:o}){let i=s.replace("text-","").split("-")[0];return(0,a.jsxs)("div",{"data-anet-stat-card":i,className:`anet-stat-card relative overflow-hidden rounded-xl border ${o} bg-[#111128] px-4 py-3 transition-all`,children:[(0,a.jsx)("div",{className:`absolute inset-0 bg-gradient-to-br ${r} pointer-events-none`}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("div",{className:`text-3xl font-bold ${s} tabular-nums leading-tight`,children:e}),(0,a.jsx)("div",{className:"text-sm text-gray-300 mt-0.5",children:t}),(0,a.jsx)("div",{className:"text-xs text-gray-600 mt-1",children:n})]})]})}function i(){let[e,t]=(0,n.useState)(""),[s,r]=(0,n.useState)(!1),[o,l]=(0,n.useState)(""),i=async()=>{if(e.trim()){r(!0),l("");try{let a=await fetch("/api/hub/broadcast",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:e})}),n=await a.json();n.ok?(l(`Broadcast sent to ${n.recipients} node(s)`),t("")):l(`Failed: ${n.error||"Send error"}`)}catch(e){l(`Failed: ${e instanceof Error?e.message:"Send error"}`)}r(!1),setTimeout(()=>l(""),5e3)}};return(0,a.jsxs)("div",{className:"mb-6",children:[(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("input",{type:"text",value:e,onChange:e=>t(e.target.value),onKeyDown:e=>"Enter"===e.key&&i(),placeholder:"Broadcast message to all online agents...",maxLength:500,"aria-label":"Broadcast message",className:"flex-1 bg-[#111128] border border-[#2a2a4a] rounded-lg px-4 py-2.5 text-sm text-white placeholder-gray-600 focus:border-blue-500/50 focus:ring-1 focus:ring-blue-500/20 focus:outline-none transition-colors"}),(0,a.jsx)("button",{onClick:i,disabled:s||!e.trim(),"aria-label":"Send broadcast",className:"flex items-center gap-2 px-5 py-2.5 bg-blue-600 hover:bg-blue-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-all font-medium cursor-pointer disabled:cursor-not-allowed",children:s?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,a.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,a.jsx)("span",{children:"Sending…"})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("path",{d:"M3 11v3a1 1 0 0 0 1 1h2l3.29 3.29a1 1 0 0 0 1.71-.71V7.42a1 1 0 0 0-1.71-.71L6 10H4a1 1 0 0 0-1 1Z"}),(0,a.jsx)("path",{d:"M16 8a5 5 0 0 1 0 6",opacity:"0.7"}),(0,a.jsx)("path",{d:"M19 5a9 9 0 0 1 0 12",opacity:"0.45"})]}),(0,a.jsx)("span",{children:"Broadcast"})]})})]}),e.length>0&&(0,a.jsxs)("div",{className:"text-right text-xs text-gray-600 mt-1 tabular-nums",children:[e.length,"/500"]}),o&&(0,a.jsx)("div",{className:`mt-3 text-sm text-center anet-fade-in ${o.startsWith("Failed")?"text-red-400":"text-green-400/80"}`,children:o})]})}var d=e.i(12629),c=e.i(56058),u=e.i(46228),h=e.i(43058),p=e.i(59276),m=e.i(59746);function f({alias:e,onClose:t}){let[s,r]=(0,n.useState)({x:0,y:0}),[o,l]=(0,n.useState)({w:380,h:520}),i=(0,n.useRef)({active:!1,startX:0,startY:0,baseX:0,baseY:0}),d=(0,n.useRef)({active:!1,startX:0,startY:0,baseW:0,baseH:0}),{sessions:c}=(0,p.useSessions)(),x=(0,n.useMemo)(()=>c.find(t=>t.alias===e),[c,e]),g=x&&"offline"!==x.status?null:(0,m.relativeAgo)(x?.last_seen_at),y=(0,n.useCallback)((e,t,a,n)=>({x:Math.min(Math.max(16,e),Math.max(16,window.innerWidth-a-16)),y:Math.min(Math.max(16,t),Math.max(16,window.innerHeight-n-16))}),[]);(0,n.useEffect)(()=>{let e=()=>{let e=window.innerWidth,t=window.innerHeight,a=Math.min(380,e-32),n=Math.min(520,t-96);l({w:a,h:n});let s=e<640;r(y(s?16:e-a-24,s?t-n-16:96,a,n))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[y]),(0,n.useEffect)(()=>{let e=e=>{"Escape"===e.key&&t()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[t]);let b=e=>{if(i.current.active){i.current.active=!1;try{e.currentTarget.releasePointerCapture?.(e.pointerId)}catch{}}},v=e=>{if(d.current.active){d.current.active=!1,e.stopPropagation();try{e.currentTarget.releasePointerCapture?.(e.pointerId)}catch{}}};return(0,a.jsxs)("div",{className:"fixed z-50 flex flex-col overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--bg)] shadow-2xl shadow-black/60 anet-fade-in",style:{left:s.x,top:s.y,width:o.w,height:o.h},role:"dialog","aria-label":`Chat with ${e}`,children:[(0,a.jsxs)("div",{onPointerDown:e=>{0===e.button&&(e.currentTarget.setPointerCapture?.(e.pointerId),i.current={active:!0,startX:e.clientX,startY:e.clientY,baseX:s.x,baseY:s.y})},onPointerMove:e=>{let t=i.current;t.active&&r(y(t.baseX+(e.clientX-t.startX),t.baseY+(e.clientY-t.startY),o.w,o.h))},onPointerUp:b,onPointerCancel:b,className:"flex items-center justify-between px-3 py-2.5 border-b border-[var(--border)] bg-[var(--bg-secondary)] rounded-t-xl cursor-grab active:cursor-grabbing select-none touch-none",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2.5 min-w-0",children:[(0,a.jsx)(u.AliasAvatar,{alias:e,size:28}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("div",{className:"text-sm font-semibold text-[var(--fg)] truncate",children:e}),x?.project_dir?(0,a.jsxs)("div",{className:"text-[10px] text-[var(--fg-muted)] truncate font-mono",title:x.project_dir,"data-popover-cwd":!0,children:["cwd: ",x.project_dir]}):null,g?(0,a.jsxs)("div",{className:"text-[10px] text-[var(--fg-muted)] truncate","data-popover-lastseen":!0,children:["last seen: ",g]}):null,x?.project_dir||g?null:(0,a.jsx)("div",{className:"text-[10px] text-[var(--fg-muted)]",children:"Drag to move · Esc to close"})]})]}),(0,a.jsx)("button",{onClick:t,onPointerDown:e=>e.stopPropagation(),"aria-label":"Close chat",className:"text-[var(--fg-muted)] hover:text-[var(--fg)] p-1.5 rounded-lg hover:bg-[var(--bg-elevated)] shrink-0",children:(0,a.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),(0,a.jsx)("div",{className:"flex-1 min-h-0",children:(0,a.jsx)(h.TaskChatPanel,{alias:e,onClose:t,inline:!0})}),(0,a.jsx)("div",{onPointerDown:e=>{0===e.button&&(e.stopPropagation(),e.currentTarget.setPointerCapture?.(e.pointerId),d.current={active:!0,startX:e.clientX,startY:e.clientY,baseW:o.w,baseH:o.h})},onPointerMove:e=>{let t=d.current;if(!t.active)return;e.stopPropagation();let a=Math.max(300,window.innerWidth-s.x-16),n=Math.max(320,window.innerHeight-s.y-16);l({w:Math.min(a,Math.max(300,t.baseW+(e.clientX-t.startX))),h:Math.min(n,Math.max(320,t.baseH+(e.clientY-t.startY)))})},onPointerUp:v,onPointerCancel:v,"aria-label":"Resize chat",className:"absolute bottom-0 right-0 w-5 h-5 cursor-nwse-resize touch-none z-10",style:{touchAction:"none"},children:(0,a.jsx)("svg",{className:"absolute bottom-0.5 right-0.5 w-3 h-3 text-[var(--fg-dim)]",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M11 5L5 11M11 9L9 11"})})})]})}let x={id:"unknown",label:"Unknown vendor",mono:{bg:"hsl(220 10% 26%)",ring:"hsl(220 10% 46%)",text:"hsl(220 14% 82%)"},initial:"?",logo:null},g=[{test:e=>e.startsWith("intern"),vendor:{id:"intern",label:"书生 · 上海 AI 实验室",mono:{bg:"hsl(28 38% 24%)",ring:"hsl(32 45% 52%)",text:"hsl(34 60% 82%)"},initial:"书",logo:"/intern_avatar.png"}},{test:e=>e.startsWith("minimax"),vendor:{id:"minimax",label:"MiniMax",mono:{bg:"hsl(18 50% 26%)",ring:"hsl(18 65% 52%)",text:"hsl(20 80% 82%)"},initial:"M",logo:"/vendors/minimax.svg"}},{test:e=>e.startsWith("claude"),vendor:{id:"anthropic",label:"Anthropic",mono:{bg:"hsl(16 32% 26%)",ring:"hsl(16 48% 54%)",text:"hsl(18 60% 84%)"},initial:"A",logo:"/vendors/claude.svg"}},{test:e=>e.startsWith("gpt")||e.startsWith("codex")||e.startsWith("o1")||e.startsWith("o3")||e.startsWith("o4"),vendor:{id:"openai",label:"OpenAI",mono:{bg:"hsl(165 26% 22%)",ring:"hsl(165 40% 44%)",text:"hsl(165 45% 80%)"},initial:"O",logo:"/vendors/openai.svg"}}];function y(e){if(!e)return x;let t=e.toLowerCase();for(let e of g)if(e.test(t))return e.vendor;return x}let b={"claude-code-cli":{label:"Claude Code CLI",iconPath:"M4 5h16v14H4z M7 9l3 3-3 3 M13 15h4",color:"#a78bfa"},"codex-sdk":{label:"Codex SDK",iconPath:"M9 7l-5 5 5 5 M15 7l5 5-5 5",color:"#38bdf8"},"claude-agent-sdk":{label:"Claude Agent SDK",iconPath:"M4 7h16v10H4z M8 11h8 M8 14h5",color:"#34d399"},"http-api":{label:"HTTP API",iconPath:"M7 18a4 4 0 010-8 5 5 0 019.6-1.3A3.5 3.5 0 0118 18z",color:"#fbbf24"}};function v(e){return e?b[e]??null:null}let k=async e=>{let t=await fetch(e);return t.ok?t.json():null};function w(e,t,a,n=0){let s=t<=2?Math.PI:1.78*Math.PI,r=-Math.PI/2-s/2,o=t<=1?-Math.PI/2:r+s*e/(t-1)+n;return{x:500+a*Math.cos(o),y:330+a*Math.sin(o)}}function j(e,t,a=0){let n=(e.x+t.x)/2,s=(e.y+t.y)/2,r=t.x-e.x,o=t.y-e.y,l=Math.hypot(r,o)||1,i={x:n+-o/l*a,y:s+r/l*a};return`M${e.x},${e.y} Q${i.x},${i.y} ${t.x},${t.y}`}function N(e,t){return e.length>t?`${e.slice(0,t-1)}...`:e}function S({sessions:e}){let t=(0,n.useRef)(Date.now()),[s,r]=(0,n.useState)(()=>Date.now());(0,n.useEffect)(()=>{t.current=Date.now()},[e]),(0,n.useEffect)(()=>{let e=setInterval(()=>r(Date.now()),1e3);return()=>clearInterval(e)},[]);let o=Math.max(0,Math.floor((s-t.current)/1e3)),l=o>10;return l?(0,a.jsxs)("span",{className:`hidden sm:inline px-2.5 py-1 rounded-md font-mono font-medium border transition-colors duration-300 ${l?"bg-amber-500/10 text-amber-300 border-amber-500/20":"bg-gray-500/10 text-gray-400 border-gray-500/20"}`,title:l?`Last sync ${o}s ago — SWR refresh may be lagging`:`Live data \xb7 refreshes every 5s \xb7 last sync ${o}s ago`,"data-freshness-chip":!0,"data-freshness-chip-stale":l?"true":"false",children:[l?"lag":"live"," · ",o,"s"]}):null}function $(e,t,a){return t?"working"===e.status?{label:"working",primary:a?"#059669":"#22c55e",halo:a?"#d1fae5":"#14532d",text:a?"#065f46":"#dcfce7"}:"idle"===e.status?{label:"idle",primary:a?"#0d9488":"#2dd4bf",halo:a?"#ccfbf1":"#134e4a",text:a?"#115e59":"#ccfbf1"}:{label:e.status||"online",primary:a?"#0284c7":"#38bdf8",halo:a?"#e0f2fe":"#0c4a6e",text:a?"#0c4a6e":"#e0f2fe"}:{label:"offline",primary:a?"#94a3b8":"#6b7280",halo:a?"#e2e8f0":"#111827",text:a?"#475569":"#9ca3af"}}let _={panelStops:["#0b1220","#080814","#101018"],radarStops:[{color:"#22d3ee",opacity:.18},{color:"#22c55e",opacity:.045},{color:"#020617",opacity:0}],arrowFill:"#67e8f9",ringStroke:"#164e63",spokeStroke:{active:"#22d3ee",idle:"#155e75"},flowEdge:"#67e8f9",flowPath:"#e0f2fe",flowParticle:"#fef08a",nodeFill:{online:"#020617",offline:"#080814"},labelBox:{fill:"#020617",stroke:"#1f2937"},legendBox:{fill:"#020617",stroke:"#1f2937"},legendText:"#94a3b8",legendHeadline:"#e5e7eb",legendAccent:"#67e8f9",containerBg:"#080814",containerBorder:"#2a2a4a",topRailGradient:"from-transparent via-cyan-400/70 to-transparent"},M={panelStops:["#f8fafc","#ffffff","#f1f5f9"],radarStops:[{color:"#10b981",opacity:.06},{color:"#3b82f6",opacity:.03},{color:"#ffffff",opacity:0}],arrowFill:"#10b981",ringStroke:"#cbd5e1",spokeStroke:{active:"#10b981",idle:"#cbd5e1"},flowEdge:"#10b981",flowPath:"#475569",flowParticle:"#f59e0b",nodeFill:{online:"#ffffff",offline:"#f8fafc"},labelBox:{fill:"#ffffff",stroke:"#e2e8f0"},legendBox:{fill:"#ffffff",stroke:"#e2e8f0"},legendText:"#475569",legendHeadline:"#0f172a",legendAccent:"#0d9488",containerBg:"#ffffff",containerBorder:"#e3e6eb",topRailGradient:"from-transparent via-emerald-500/40 to-transparent"};function C(e,t){let a=0;for(;a<e.length&&a<t.length&&e[a]===t[a];)a++;return e.slice(0,a)}function E(e){let t=e.length,a=e.map((e,t)=>t),n=e=>{for(;a[e]!==e;)a[e]=a[a[e]],e=a[e];return e},s=(e,t)=>{let s=n(e),r=n(t);s!==r&&(a[s]=r)},r={};for(let t of(e.forEach((e,t)=>{let a=e.project_dir?.trim();a&&(r[a]||=[]).push(t)}),Object.values(r)))for(let e=1;e<t.length;e++)s(t[0],t[e]);let o=e.map((e,t)=>t).sort((t,a)=>e[t].alias.localeCompare(e[a].alias));for(let t=0;t+1<o.length;t++)C(e[o[t]].alias,e[o[t+1]].alias).length>=2&&s(o[t],o[t+1]);let l={};for(let e=0;e<t;e++)(l[n(e)]||=[]).push(e);let i={};for(let t of Object.values(l)){let a;if(1===t.length)a=e[t[0]].alias;else{let n=new Set(t.map(t=>e[t].project_dir?.trim()).filter(Boolean));if(1===n.size){let e=[...n][0];a=e.split("/").filter(Boolean).pop()||e}else(a=t.map(t=>e[t].alias).reduce((e,t)=>C(e,t))).length<2&&(a=e[t[0]].alias)}for(let n of t)i[e[n].alias]=a}return i}function z(e,t){let a=new Map;return e.forEach(e=>{if(!t[e.from_alias]||!t[e.to_alias]||e.from_alias===e.to_alias)return;let n=`${e.from_alias}->${e.to_alias}`,s=a.get(n),r=e.created_at||"",o=s?r>s.last_at?r:s.last_at:r;a.set(n,{key:n,from:e.from_alias,to:e.to_alias,count:(s?.count||0)+1,content:s?.content||e.content,last_at:o})}),[...a.values()].slice(0,18)}function T({sessions:e,sseSessions:t,renameSignal:s}){let r,o,l,i,h,p,x,g,b,C,A,F,L,P,D,I,W,B,R,O,H,Y,X,K,V,U,G,J,q,Z,Q,ee,et,ea,en,es,er,eo,el,ei,ed,ec,eu,eh,ep,em,ef,ex,eg,ey,eb,ev,ek,ew,ej,eN="light"===function(){let[e,t]=(0,n.useState)("dark");return(0,n.useEffect)(()=>{let e=()=>{let e=document.documentElement.getAttribute("data-theme")||"cyber";t("light"===e||"mint"===e?"light":"dark")};e();let a=new MutationObserver(e);return a.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>a.disconnect()},[]),e}(),eS=function(){let[e,t]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{if(!window.matchMedia)return;let e=window.matchMedia("(prefers-reduced-motion: reduce)");t(e.matches);let a=e=>t(e.matches);return e.addEventListener("change",a),()=>e.removeEventListener("change",a)},[]),e}(),e$=eN?M:_,e_="intern"===function(){let[e,t]=(0,n.useState)(null);return(0,n.useEffect)(()=>{try{let e=new URL(window.location.href).searchParams.get("brand");null!==e?""===e||"none"===e?(localStorage.removeItem("anet-brand"),t(null)):(localStorage.setItem("anet-brand",e),t(e)):t(localStorage.getItem("anet-brand"))}catch{}},[]),e}(),eM=function(){let{data:e}=(0,d.default)("/api/hub/servers",k,{refreshInterval:15e3,dedupingInterval:5e3});return(0,n.useMemo)(()=>{let t=new Map;for(let a of e?.servers??[]){let e=function(e){if("offline"===e.status)return null;let t=[null!=e.cpu_load_1min&&e.cpu_cores>0?e.cpu_load_1min/e.cpu_cores*100:null,null!=e.mem_used_gb&&null!=e.mem_total_gb&&e.mem_total_gb>0?e.mem_used_gb/e.mem_total_gb*100:null,null!=e.disk_used_gb&&null!=e.disk_total_gb&&e.disk_total_gb>0?e.disk_used_gb/e.disk_total_gb*100:null].filter(e=>"number"==typeof e);if(0===t.length)return null;let a=Math.max(...t);return a>=85?"red":a>=60?"amber":"green"}(a);e&&t.set(a.hostname,e)}return t},[e])}(),eC=(0,c.useRouter)(),[eE,ez]=(0,n.useState)([]),[eT,eA]=(0,n.useState)("ring");(0,n.useEffect)(()=>{try{let t=localStorage.getItem("anet-topo-layout");"grid"===t||"ring"===t?eA(t):e.length>=20&&eA("grid")}catch{}},[]);let[eF,eL]=(0,n.useState)(!1),eP=()=>{eL(!0),setTimeout(()=>eL(!1),400),eA(e=>{let t="ring"===e?"grid":"ring";try{localStorage.setItem("anet-topo-layout",t)}catch{}return t})},[eD,eI]=(0,n.useState)(.84);(0,n.useEffect)(()=>{try{let e=parseFloat(localStorage.getItem("anet-topo-nodescale")||"");(.7===e||.84===e||1===e)&&eI(e)}catch{}},[]);let[eW,eB]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let e=async()=>{try{let e=await fetch("/api/hub/messages?limit=50");if(401===e.status)return void window.location.assign("/login");let t=await e.json();ez(t.messages||[])}catch{}};e();let t=setInterval(e,5e3);return()=>clearInterval(t)},[]);let{onlineNodes:eR,offlineNodes:eO,nodePositions:eH,flowLinks:eY,activeAliases:eX,groupKeys:eK,groupBoxes:eV,gridContentBottom:eU}=(0,n.useMemo)(()=>{let a=e=>(e.network_id?t[`${e.network_id}:${e.alias}`]:void 0)??t[e.alias],n=(e,t)=>e.alias.localeCompare(t.alias),s=Date.now(),r=e.filter(e=>"offline"!==e.status||a(e)).sort(n),o=e.filter(e=>"offline"===e.status&&!a(e)&&!(e=>{if("offline"!==e.status||a(e)||!e.last_seen_at)return!1;let t=(0,m.parseHubTime)(e.last_seen_at);return null!==t&&s-t>36e5})(e)).sort(n),l={};if("grid"===eT){let e=[...r,...o],t=E(e),n=Math.max(1,Math.ceil(Math.sqrt(e.length))),s=700/n,i=Math.round(26*eD),d=[];for(let a of e){let e=t[a.alias],n=d[d.length-1];n&&n.key===e?n.members.push(a):d.push({key:e,members:[a]})}let c=[],u=0,h=0;for(;h<d.length;)if(d[h].members.length>=2)c.push({members:d[h].members,startRow:u,centred:!1,isGroup:!0}),u+=Math.ceil(d[h].members.length/n),h++;else{let e=[];for(;h<d.length&&d[h].members.length<2;)e.push(d[h].members[0]),h++;c.push({members:e,startRow:u,centred:!0,isGroup:!1}),u+=Math.ceil(e.length/n)}let p=Math.max(1,u),m=i+20,f=Math.max(2*i+22,m+12,i+(eD<.8?12:14)+m+3,Math.min(100,526/p));for(let e of c)e.members.forEach((t,a)=>{let r=Math.floor(a/n),o=a%n,i=Math.min(n,e.members.length-r*n),d=e.centred?(n-i)*s/2:0;l[t.alias]={x:150+d+(o+.5)*s,y:126+(e.startRow+r+.5)*f}});let x=z(eE,l),g=new Set;x.forEach(e=>{g.add(e.from),g.add(e.to)});let y=Math.max(8,Math.min(26,f-m-8)),b=c.filter(e=>e.isGroup).map(e=>{let n=e.members.map(e=>l[e.alias]).filter(Boolean),s=n.map(e=>e.x),r=n.map(e=>e.y),o=Math.min(...s),i=Math.min(...r),d=0,c=0,u=0;for(let t of e.members){let e="offline"!==t.status||!!a(t);"working"===t.status?d++:e?c++:u++}return{key:e.members.length?t[e.members[0].alias]:"",count:e.members.length,statuses:{working:d,idle:c,offline:u},x:o-y,y:i-m,w:Math.max(...s)-o+2*y,h:Math.max(...r)-i+m+y}});return{onlineNodes:r,offlineNodes:o,nodePositions:l,flowLinks:x,activeAliases:g,groupKeys:t,groupBoxes:b,gridContentBottom:126+p*f+8}}let i=r.length>14,d=!i&&r.length>8,c=r.length;if(i){let e=Math.ceil(r.length/3),t=r.slice(0,e),a=r.slice(e,2*e),n=r.slice(2*e);t.forEach((e,a)=>{l[e.alias]=w(a,Math.max(t.length,1),145)});let s=t.length<=2?Math.PI:1.78*Math.PI,o=t.length>1?s/(t.length-1):0;a.forEach((e,t)=>{l[e.alias]=w(t,Math.max(a.length,1),215,o/2)}),n.forEach((e,t)=>{l[e.alias]=w(t,Math.max(n.length,1),285)}),c=n.length}else if(d){let e=Math.ceil(r.length/2),t=r.length-e,a=r.slice(0,e),n=r.slice(e);a.forEach((t,a)=>{l[t.alias]=w(a,Math.max(e,1),175)});let s=e<=2?Math.PI:1.78*Math.PI,o=e>1?s/(e-1):0;n.forEach((e,a)=>{l[e.alias]=w(a,Math.max(t,1),260,o/2)}),c=t}else r.forEach((e,t)=>{l[e.alias]=w(t,Math.max(r.length,1),220)});let u=c<=2?Math.PI:1.78*Math.PI,h=c>1?u/(c-1):0,p=c>0?h/2:0,f=325+6*Math.max(0,o.length-4);o.forEach((e,t)=>{l[e.alias]=w(t,Math.max(o.length,1),f,p)});let x=z(eE,l),g=new Set;x.forEach(e=>{g.add(e.from),g.add(e.to)});let y=E([...r,...o]);return{onlineNodes:r,offlineNodes:o,nodePositions:l,flowLinks:x,activeAliases:g,groupKeys:y,groupBoxes:[],gridContentBottom:0}},[eE,e,t,eT,eD]),eG=eR.filter(e=>"working"===e.status).length,eJ=(0,n.useMemo)(()=>{let e=new Map;for(let t of[...eR,...eO]){let a=y(t.model),n="unknown"===a.id?"?":a.initial,s=e.get(n);s?s.count++:e.set(n,{initial:n,count:1,color:a.mono.text})}return[...e.values()].sort((e,t)=>t.count-e.count)},[eR,eO]),eq=eR.length+eO.length>16,[eZ,eQ]=(0,n.useState)(null),[e0,e1]=(0,n.useState)(null),e2=e0??(eZ?eK[eZ]??eZ:null),[e5,e4]=(0,n.useState)(()=>{try{return sessionStorage.getItem("anet-topo-pinned-group")}catch{return null}}),e3=e2??e5;(0,n.useEffect)(()=>{try{e5?sessionStorage.setItem("anet-topo-pinned-group",e5):sessionStorage.removeItem("anet-topo-pinned-group")}catch{}},[e5]),(0,n.useEffect)(()=>{!e5||new Set(Object.values(eK)).has(e5)||e4(null)},[e5,eK]);let[e8,e6]=(0,n.useState)(null),[e7,e9]=(0,n.useState)(null),te=e8??e7,[tt,ta]=(0,n.useState)(!1),[tn,ts]=(0,n.useState)(!1),[tr,to]=(0,n.useState)(!1),[tl,ti]=(0,n.useState)(null),[td,tc]=(0,n.useState)(null),[tu,th]=(0,n.useState)(()=>{try{return sessionStorage.getItem("anet-topo-pinned-vendor")}catch{return null}}),tp=td??tu;(0,n.useEffect)(()=>{try{tu?sessionStorage.setItem("anet-topo-pinned-vendor",tu):sessionStorage.removeItem("anet-topo-pinned-vendor")}catch{}},[tu]),(0,n.useEffect)(()=>{tu&&!eJ.some(e=>e.initial===tu)&&th(null)},[tu,eJ]);let[tm,tf]=(0,n.useState)(null),[tx,tg]=(0,n.useState)(()=>{try{let e=sessionStorage.getItem("anet-topo-pinned-status");return"working"===e||"idle"===e||"offline"===e?e:null}catch{return null}}),ty=tm??tx;(0,n.useEffect)(()=>{try{tx?sessionStorage.setItem("anet-topo-pinned-status",tx):sessionStorage.removeItem("anet-topo-pinned-status")}catch{}},[tx]),(0,n.useEffect)(()=>{let e=e=>{let t=e.detail||{};if("clear"===t.kind)tg(null),e4(null),th(null),e9(null);else if("clear-vendor"===t.kind)th(null);else if("clear-edge"===t.kind)e9(null);else if("status"===t.kind){let e=t.value;("working"===e||"idle"===e||"offline"===e)&&tg(e)}else"group"===t.kind&&"string"==typeof t.value?e4(t.value):"vendor"===t.kind&&"string"==typeof t.value&&th(t.value)};return window.addEventListener("anet:topo-pin",e),()=>window.removeEventListener("anet:topo-pin",e)},[]);let tb=(0,n.useMemo)(()=>{if(!te)return null;let e=eY.find(e=>e.key===te);return e?new Set([e.from,e.to]):null},[te,eY]),tv=(0,n.useRef)(null),tk=(0,n.useRef)(null),[tw,tj]=(0,n.useState)({zoom:1,x:0,y:0}),tN=(0,n.useRef)(tw),tS=(0,n.useRef)({active:!1,startX:0,startY:0,baseX:0,baseY:0}),[t$,t_]=(0,n.useState)(!1),[tM,tC]=(0,n.useState)(!1),[tE,tz]=(0,n.useState)(null),tT=e=>{tz(e),setTimeout(()=>tz(t=>t===e?null:t),240)},[tA,tF]=(0,n.useState)(null),[tL,tP]=(0,n.useState)(null);(0,n.useEffect)(()=>{s&&s.from===tA&&tF(s.to)},[s]),(0,n.useEffect)(()=>{tN.current=tw},[tw]),(0,n.useEffect)(()=>{try{let e=localStorage.getItem("anet-topo-view");if(e){let t=JSON.parse(e);"number"==typeof t?.zoom&&tj({zoom:Math.min(4,Math.max(.5,t.zoom)),x:"number"==typeof t.x?t.x:0,y:"number"==typeof t.y?t.y:0})}}catch{}},[]);let[tD]=(0,n.useState)(()=>!!localStorage.getItem("anet-topo-view")),tI=(0,n.useRef)(!1);(0,n.useEffect)(()=>{if(!tI.current){if(tD){tI.current=!0;return}if("grid"===eT&&0!==e.length&&eU){if(eU<=680){tI.current=!0;return}tj({zoom:Math.max(.5,Math.min(1,680/eU)),x:0,y:0}),tI.current=!0}}},[eT,e.length,eU,tD]),(0,n.useEffect)(()=>{try{localStorage.setItem("anet-topo-view",JSON.stringify(tw))}catch{}},[tw]),(0,n.useEffect)(()=>{let e=()=>t_(document.fullscreenElement===tv.current);return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[]),(0,n.useEffect)(()=>{let e=tk.current;if(!e)return;let t=t=>{if(!t$&&!t.ctrlKey&&!t.metaKey)return;t.preventDefault();let a=e.getBoundingClientRect(),n=(t.clientX-a.left)/a.width*1e3,s=(t.clientY-a.top)/a.height*680;tj(e=>{let a=Math.min(1.08,Math.max(.926,Math.exp(-(6e-4*t.deltaY)))),r=Math.min(4,Math.max(.5,e.zoom*a)),o=r/e.zoom;return{zoom:r,x:n-(n-e.x)*o,y:s-(s-e.y)*o}})};return e.addEventListener("wheel",t,{passive:!1}),()=>e.removeEventListener("wheel",t)},[t$]);let[tW,tB]=(0,n.useState)(!1),tR=e=>{if(tS.current.active){tS.current.active=!1,tB(!1);try{e.currentTarget.releasePointerCapture?.(e.pointerId)}catch{}}},tO=e=>{tY(!0),setTimeout(()=>tY(!1),350),tj(t=>{let a=Math.min(4,Math.max(.5,t.zoom*e)),n=a/t.zoom;return{zoom:a,x:500-(500-t.x)*n,y:340-(340-t.y)*n}})},[tH,tY]=(0,n.useState)(!1),tX=()=>{tY(!0),setTimeout(()=>tY(!1),350),tj({zoom:1,x:0,y:0})},tK=(0,n.useCallback)(()=>{let e=!eU||eU<=680?1:Math.max(.5,Math.min(1,680/eU));tY(!0),setTimeout(()=>tY(!1),350),tj({zoom:e,x:0,y:0})},[eU]);return(0,n.useEffect)(()=>{let e=e=>{"toggle"===(e.detail||{}).kind&&eP()},t=e=>{"fit"===(e.detail||{}).kind&&tK()};return window.addEventListener("anet:topo-layout",e),window.addEventListener("anet:topo-view",t),()=>{window.removeEventListener("anet:topo-layout",e),window.removeEventListener("anet:topo-view",t)}},[tK]),(0,n.useEffect)(()=>{let e=e=>{if(e.ctrlKey||e.metaKey||e.altKey)return;let t=document.activeElement;if(t){let e=t.tagName;if("INPUT"===e||"TEXTAREA"===e||"SELECT"===e||t.isContentEditable)return}"+"===e.key||"="===e.key?(tO(1.2),e.preventDefault()):"-"===e.key||"_"===e.key?(tO(1/1.2),e.preventDefault()):"0"===e.key?(tX(),e.preventDefault()):"f"===e.key||"F"===e.key?(tK(),e.preventDefault()):"l"===e.key||"L"===e.key?(eP(),e.preventDefault()):"Escape"===e.key&&!tA&&(tx||e5||tu||e7)&&(tx&&tg(null),e5&&e4(null),tu&&th(null),e7&&e9(null),e.preventDefault())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[tK,tA,tx,e5,tu,e7]),(0,a.jsxs)("section",{className:"w-full max-w-6xl mx-auto mb-8",children:[(0,a.jsxs)("div",{className:`flex flex-col gap-2.5 sm:flex-row sm:items-end sm:justify-between mb-4 px-1${t$?" hidden":""}`,"data-topo-header-row":!0,"data-topo-header-hidden":t$?"true":"false",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,a.jsxs)("svg",{width:"40",height:"40",viewBox:"0 0 32 32","aria-hidden":!0,className:"shrink-0","data-topo-brand-logo":!0,style:{color:eN?"#0d9488":"#67e8f9",transition:"color 200ms ease-out"},children:[(0,a.jsxs)("mask",{id:"s2a-titleblock-moon-mask",children:[(0,a.jsx)("rect",{width:"32",height:"32",fill:"black"}),(0,a.jsx)("circle",{cx:"16",cy:"16",r:"13",fill:"white"}),(0,a.jsx)("circle",{cx:"20.5",cy:"14.5",r:"11",fill:"black"})]}),(0,a.jsx)("rect",{width:"32",height:"32",fill:"currentColor",mask:"url(#s2a-titleblock-moon-mask)"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-xs uppercase text-gray-500 tracking-widest leading-tight font-medium","data-topo-section-kicker":!0,children:"Network Topology"}),(0,a.jsx)("h2",{className:"text-lg text-white font-semibold leading-tight tracking-tight","data-topo-section-title":!0,children:"Command mesh"})]})]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2.5 text-xs",children:[(0,a.jsxs)("div",{className:"mr-0.5 inline-flex rounded-md border overflow-hidden",style:{borderColor:e$.containerBorder,transition:"border-color 200ms ease-out"},role:"group","aria-label":"Topology layout","data-topo-chrome-layout-trailer":!0,children:[(0,a.jsx)("button",{onClick:()=>{tT("layout-ring"),"ring"!==eT&&eP()},"aria-pressed":"ring"===eT,title:"Ring layout (l to toggle)","data-topo-chrome-layout":"ring","data-topo-chrome-layout-active":"ring"===eT?"true":"false","data-topo-chrome-layout-ring-popping":"layout-ring"===tE?"true":"false",className:`px-2.5 py-1 transition-colors focus:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${"ring"===eT?"bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25":"text-gray-400 hover:text-cyan-300 hover:bg-cyan-500/5 active:bg-cyan-500/15"} ${"layout-ring"===tE?" anet-chrome-pop":""}`,children:"Ring"}),(0,a.jsx)("button",{onClick:()=>{tT("layout-grid"),"grid"!==eT&&eP()},"aria-pressed":"grid"===eT,title:"Grid layout (l to toggle)","data-topo-chrome-layout":"grid","data-topo-chrome-layout-active":"grid"===eT?"true":"false","data-topo-chrome-layout-grid-popping":"layout-grid"===tE?"true":"false",className:`px-2.5 py-1 border-l transition-colors focus:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${"grid"===eT?"bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25":"text-gray-400 hover:text-cyan-300 hover:bg-cyan-500/5 active:bg-cyan-500/15"} ${"layout-grid"===tE?" anet-chrome-pop":""}`,style:{borderColor:e$.containerBorder},children:"Grid"})]}),(r=eR.filter(e=>"working"===e.status).map(e=>e.alias),o=eR.map(e=>e.alias),l=e=>e.slice(0,8).join(", ")+(e.length>8?` + ${e.length-8} more`:""),i=0===eG?void 0:"working"===tx?`${l(r)} — pinned, Esc to clear`:`${l(r)} — hover highlights, click to pin`,h=0===eR.length?void 0:"idle"===tx?`${l(o)} — pinned, Esc to clear`:`${l(o)} — hover highlights \xb7 click to open /nodes`,(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("span",{className:`tabular-nums font-medium px-2.5 py-1 rounded-md border anet-topo-chip-focus transition-colors duration-200 ${eG>0?"bg-green-500/10 text-green-300 border-green-500/20 hover:bg-green-500/15 hover:border-green-500/30":"bg-green-500/10 text-green-300 border-green-500/20"}`,"data-working-chip":!0,"data-working-chip-aliases":r.join(","),"data-pin-mirror":"working"===tx?"true":"false","data-working-chip-clickable":eG>0?"true":"false","data-working-chip-empty":0===eG?"true":"false",title:i,role:eG>0?"button":void 0,tabIndex:eG>0?0:void 0,"aria-pressed":eG>0?"working"===tx:void 0,style:{cursor:eG>0?"pointer":void 0,opacity:0===eG?.5:1,boxShadow:"working"===tx?"inset 0 0 0 1px #4ade80, inset 0 0 0 2px rgba(255,255,255,0.45)":void 0,transition:"box-shadow 150ms ease-out, background-color 200ms ease-out, border-color 200ms ease-out, opacity 200ms ease-out"},onMouseEnter:()=>{eG>0&&tf("working")},onMouseLeave:()=>tf(e=>"working"===e?null:e),onClick:()=>{eG>0&&tg(e=>"working"===e?null:"working")},onKeyDown:e=>{0!==eG&&("Enter"===e.key||" "===e.key)&&(e.preventDefault(),tg(e=>"working"===e?null:"working"))},children:[eG,(0,a.jsx)("span",{className:"opacity-70","data-working-chip-unit":!0,children:" working"})]}),(0,a.jsxs)("span",{className:`tabular-nums font-medium px-2.5 py-1 rounded-md border anet-topo-chip-focus transition-colors duration-200 ${eR.length>0?"bg-cyan-500/10 text-cyan-300 border-cyan-500/20 hover:bg-cyan-500/15 hover:border-cyan-500/30":"bg-cyan-500/10 text-cyan-300 border-cyan-500/20"}`,"data-online-chip":!0,"data-online-chip-aliases":o.join(","),"data-pin-mirror":"idle"===tx?"true":"false","data-online-chip-clickable":eR.length>0?"true":"false","data-online-chip-empty":0===eR.length?"true":"false",title:h,role:eR.length>0?"link":void 0,tabIndex:eR.length>0?0:void 0,style:{cursor:eR.length>0?"pointer":void 0,opacity:0===eR.length?.5:1,boxShadow:"idle"===tx?"inset 0 0 0 1px #67e8f9, inset 0 0 0 2px rgba(255,255,255,0.45)":void 0,transition:"box-shadow 150ms ease-out, background-color 200ms ease-out, border-color 200ms ease-out, opacity 200ms ease-out"},onMouseEnter:()=>{let e=eR.length-eG;eG>0?tf("working"):e>0&&tf("idle")},onMouseLeave:()=>tf(e=>"working"===e||"idle"===e?null:e),onClick:()=>{eR.length>0&&eC.push("/nodes")},onKeyDown:e=>{0!==eR.length&&("Enter"===e.key||" "===e.key)&&(e.preventDefault(),eC.push("/nodes"))},children:[eR.length,(0,a.jsx)("span",{className:"opacity-70","data-online-chip-unit":!0,children:" online"})]})]})),(()=>{let e=eR.length-eG,t=eO.length,n=eG+e+t;if(0===n)return null;let s=(e,t,s,r)=>{if(0===e)return null;let o=tx===s,l="working"===s?eR.filter(e=>"working"===e.status).map(e=>e.alias):"idle"===s?eR.filter(e=>"working"!==e.status).map(e=>e.alias):eO.map(e=>e.alias),i=l.slice(0,8).join(", "),d=l.length>8?` + ${l.length-8} more`:"",c=o?"click to release filter":"click to highlight";return(0,a.jsx)("span",{"data-pressure-seg":s,"data-pressure-seg-aliases":l.join(","),"data-pressure-seg-hovered":tm===s?"true":"false",role:"button",tabIndex:0,"aria-pressed":o,className:"anet-topo-chip-focus",title:`${e} ${r}
2
+ ${i}${d}
3
+ ${c}`,style:{width:`${e/n*100}%`,background:t,height:"100%",cursor:"pointer",boxShadow:o?`inset 0 0 0 1px ${t}, inset 0 0 0 2px rgba(255,255,255,0.6)`:void 0,filter:tm===s?"brightness(1.2)":void 0,transition:"width 220ms ease-out, box-shadow 150ms ease-out, filter 150ms ease-out"},onClick:e=>{e.stopPropagation(),tg(e=>e===s?null:s)},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),tg(e=>e===s?null:s))},onMouseEnter:()=>tf(s),onMouseLeave:()=>tf(e=>e===s?null:e)},s)};return(0,a.jsxs)("span",{className:"hidden sm:inline-flex items-center gap-2 px-2.5 py-1 rounded-md bg-gray-500/10 text-gray-400 border border-gray-500/20 font-mono",title:`${eG} working \xb7 ${e} idle \xb7 ${t} offline`,"data-fleet-pressure":!0,children:[(0,a.jsx)("span",{className:"text-[10px] tracking-wide",children:"pressure"}),(0,a.jsxs)("span",{className:"inline-flex h-1.5 w-16 rounded-full overflow-hidden",style:{background:"rgb(75 85 99 / 0.25)"},children:[s(eG,eN?"#059669":"#22c55e","working","working"),s(e,eN?"#0d9488":"#2dd4bf","idle","idle"),s(t,eN?"#94a3b8":"#6b7280","offline","offline")]})]})})(),tx&&(p="working"===tx?eG:"idle"===tx?eR.length-eG:eO.length,g=(x="working"===tx?eR.filter(e=>"working"===e.status).map(e=>e.alias):"idle"===tx?eR.filter(e=>"working"!==e.status).map(e=>e.alias):eO.map(e=>e.alias)).slice(0,8).join(", "),b=x.length>8?` + ${x.length-8} more`:"",(0,a.jsxs)("span",{"data-active-filter":"status","data-filter-match-count":p,"data-filter-match-aliases":x.join(","),className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md font-mono text-xs border anet-fade-in anet-topo-chip-focus",title:p>0?`${g}${b} — click to clear`:"Click to clear filter",onClick:()=>tg(null),style:{background:"working"===tx?eN?"#05966914":"#22c55e1f":"idle"===tx?eN?"#0d948814":"#2dd4bf1f":eN?"#94a3b814":"#6b72801f",color:"working"===tx?eN?"#047857":"#86efac":"idle"===tx?eN?"#0f766e":"#5eead4":eN?"#475569":"#9ca3af",borderColor:"currentColor",cursor:"pointer"},children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"hidden sm:inline opacity-70","data-filter-prefix":!0,children:"filter: "}),tx,(0,a.jsxs)("span",{className:"opacity-70 tabular-nums","data-filter-pill-count":!0,children:[" · ",p]})]}),(0,a.jsx)("button",{type:"button","aria-label":`Clear ${tx} filter`,onClick:e=>{e.stopPropagation(),tg(null)},className:"ml-0.5 leading-none hover:opacity-70",style:{background:"transparent",color:"inherit",cursor:"pointer",padding:0},children:"×"})]})),e5&&(C=Object.values(eK).filter(e=>e===e5).length,F=(A=Object.entries(eK).filter(([,e])=>e===e5).map(([e])=>e)).slice(0,8).join(", "),L=A.length>8?` + ${A.length-8} more`:"",(0,a.jsxs)("span",{"data-active-filter":"group","data-filter-match-count":C,"data-filter-match-aliases":A.join(","),className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md font-mono text-xs border anet-fade-in anet-topo-chip-focus",title:C>0?`${F}${L} — click to clear`:"Click to clear filter",onClick:()=>e4(null),style:{background:eN?"#67e8f914":"#67e8f91f",color:e$.legendAccent,borderColor:"currentColor",cursor:"pointer"},children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"hidden sm:inline opacity-70","data-filter-prefix":!0,children:"filter: "}),e5,(0,a.jsxs)("span",{className:"opacity-70 tabular-nums","data-filter-pill-count":!0,children:[" · ",C]})]}),(0,a.jsx)("button",{type:"button","aria-label":`Clear group filter ${e5}`,onClick:e=>{e.stopPropagation(),e4(null)},className:"ml-0.5 leading-none hover:opacity-70",style:{background:"transparent",color:"inherit",cursor:"pointer",padding:0},children:"×"})]})),tu&&(P=eJ.find(e=>e.initial===tu),D=P?.count??0,I=P?.color??e$.legendText,B=(W=[...eR,...eO].filter(e=>{let t=y(e.model);return("unknown"===t.id?"?":t.initial)===tu}).map(e=>e.alias)).slice(0,8).join(", "),R=W.length>8?` + ${W.length-8} more`:"",(0,a.jsxs)("span",{"data-active-filter":"vendor","data-filter-match-count":D,"data-filter-match-aliases":W.join(","),className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md font-mono text-xs border anet-fade-in anet-topo-chip-focus",title:D>0?`${B}${R} — click to clear`:"Click to clear vendor filter",onClick:()=>th(null),style:{background:`${I}1f`,color:I,borderColor:"currentColor",cursor:"pointer"},children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"hidden sm:inline opacity-70","data-filter-prefix":!0,children:"filter: "}),tu,(0,a.jsxs)("span",{className:"opacity-70 tabular-nums","data-filter-pill-count":!0,children:[" · ",D]})]}),(0,a.jsx)("button",{type:"button","aria-label":`Clear vendor filter ${tu}`,onClick:e=>{e.stopPropagation(),th(null)},className:"ml-0.5 leading-none hover:opacity-70",style:{background:"transparent",color:"inherit",cursor:"pointer",padding:0},children:"×"})]})),e7&&(()=>{let e=eY.find(e=>e.key===e7);if(!e)return null;let t=e.count>=10;return(0,a.jsxs)("span",{"data-active-filter":"edge","data-filter-match-count":e.count,"data-filter-match-aliases":`${e.from},${e.to}`,"data-active-filter-edge-hot":t?"true":"false",className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md font-mono text-xs border anet-fade-in anet-topo-chip-focus",title:`${e.from} → ${e.to} (${e.count} msg${1===e.count?"":"s"}${t?", hot lane · ≥ 10":""}) — click to clear`,onClick:()=>e9(null),style:{background:eN?`${e$.flowEdge}14`:`${e$.flowEdge}1f`,color:e$.flowEdge,borderColor:"currentColor",cursor:"pointer"},children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"hidden sm:inline opacity-70","data-filter-prefix":!0,children:"filter: "}),e.from,"→",e.to,t?(0,a.jsxs)("span",{className:"opacity-90 tabular-nums",style:{color:eN?"#d97706":"#fbbf24",fontWeight:700},"data-active-filter-edge-count-hot":!0,children:[" · ",e.count]}):(0,a.jsxs)("span",{className:"opacity-70 tabular-nums","data-active-filter-edge-count":!0,children:[" · ",e.count]})]}),(0,a.jsx)("button",{type:"button","aria-label":`Clear edge filter ${e.from} → ${e.to}`,onClick:e=>{e.stopPropagation(),e9(null)},className:"ml-0.5 leading-none hover:opacity-70",style:{background:"transparent",color:"inherit",cursor:"pointer",padding:0},children:"×"})]})})(),(()=>{let e=+!!tx+ +!!e5+ +!!tu+ +!!e7;if(e<2)return null;let t=e7?eY.find(e=>e.key===e7):null,n=t?new Set([t.from,t.to]):null,s=[...eR,...eO].filter(e=>{let t="offline"!==e.status;if("working"===tx&&"working"!==e.status||"idle"===tx&&!(t&&"working"!==e.status)||"offline"===tx&&t||e5&&(eK[e.alias]??e.alias)!==e5)return!1;if(tu){let t=y(e.model);if(("unknown"===t.id?"?":t.initial)!==tu)return!1}return!n||!!n.has(e.alias)}).map(e=>e.alias),r=s.slice(0,8).join(", "),o=s.length>8?` + ${s.length-8} more`:"",l=0===s.length,i=l?`No nodes pass all ${e} pinned filters — release one to widen (Esc clears all)`:`${r}${o} — nodes passing all ${e} pinned filters`;return(0,a.jsx)("span",{"data-pin-intersection":!0,"data-pin-dim-count":e,"data-pin-intersection-count":s.length,"data-pin-intersection-empty":l?"true":"false","data-pin-intersection-aliases":s.join(","),className:"hidden sm:inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md font-mono tabular-nums text-xs border anet-fade-in anet-topo-chip-focus",title:i,style:{background:l?eN?"#d9770614":"#fbbf241f":eN?"#94a3b814":"#94a3b81f",color:l?eN?"#d97706":"#fbbf24":eN?"#475569":"#9ca3af",borderColor:"currentColor",transition:"background-color 200ms ease-out, color 200ms ease-out, border-color 200ms ease-out"},children:(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"hidden sm:inline opacity-70","data-pin-intersection-prefix":!0,children:"match: "}),(0,a.jsx)("span",{className:"tabular-nums","data-pin-intersection-count-dims":!0,children:e})," pins",(0,a.jsxs)("span",{className:"opacity-70 tabular-nums","data-pin-intersection-count-matches":!0,children:[" · ",s.length]}),(0,a.jsx)("span",{className:"ml-1","aria-hidden":!0,"data-pin-intersection-warning":l?"true":"false",style:{opacity:+!!l,transition:"opacity 200ms ease-out"},children:"⚠"})]})})})(),eJ.length>2&&(0,a.jsx)("span",{className:"hidden sm:inline-flex items-center gap-2 px-2.5 py-1 rounded-md bg-gray-500/10 text-gray-400 border border-gray-500/20 font-mono",title:"Hover to highlight; click to pin",children:eJ.map(e=>{let t=tu===e.initial,n=[...eR,...eO].filter(t=>{let a=y(t.model);return("unknown"===a.id?"?":a.initial)===e.initial}).map(e=>e.alias),s=n.slice(0,8).join(", "),r=n.length>8?` + ${n.length-8} more`:"",o=t?`${s}${r} — click again or Esc to clear`:`${s}${r} — click to pin`;return(0,a.jsxs)("span",{role:"button",tabIndex:0,"aria-pressed":t,className:"tabular-nums font-medium inline-flex items-baseline gap-0.5 px-1 rounded anet-topo-chip-focus","data-vendor-letter":e.initial,"data-vendor-letter-count":e.count,"data-vendor-pinned":t?"true":"false","data-vendor-hovered":td===e.initial?"true":"false","data-vendor-aliases":n.join(","),title:o,style:{cursor:"pointer",backgroundColor:td!==e.initial||t?"transparent":`color-mix(in srgb, ${e.color} 12%, transparent)`,boxShadow:t?`inset 0 0 0 1px ${e.color}, inset 0 0 0 2px rgba(255,255,255,0.45)`:void 0,transition:"box-shadow 150ms ease-out, background-color 200ms ease-out"},onMouseEnter:()=>tc(e.initial),onMouseLeave:()=>tc(t=>t===e.initial?null:t),onClick:()=>th(t=>t===e.initial?null:e.initial),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),th(t=>t===e.initial?null:e.initial))},children:[(0,a.jsx)("span",{style:{color:e.color},children:e.initial}),(0,a.jsxs)("span",{className:"text-gray-400 tabular-nums","data-vendor-letter-count-suffix":!0,children:[":",e.count]})]},e.initial)})}),(H=null!==(O=eY.reduce((e,t)=>{if(!t.last_at)return e;let a=(0,m.parseHubTime)(t.last_at);return null===a?e:null===e||a>e?a:e},null))?(0,m.relativeAgo)(new Date(O).toISOString()):null,Y=eY.slice(0,6).map(e=>`${e.from}→${e.to} (${e.count})`).join(", "),X=eY.length>6?` + ${eY.length-6} more`:"",V=(K=eY.length>0)?`${Y}${X} — hover brightens all \xb7 click to open /messages`:void 0,(0,a.jsxs)("span",{className:`tabular-nums font-medium hidden sm:inline px-2.5 py-1 rounded-md border anet-topo-chip-focus ${K?"bg-gray-500/10 text-gray-400 border-gray-500/20 hover:bg-cyan-500/10 hover:text-cyan-200 hover:border-cyan-500/30":"bg-gray-500/10 text-gray-400 border-gray-500/20"}`,"data-active-links-chip":!0,"data-active-links-flow-count":eY.length,"data-active-links-clickable":K?"true":"false","data-active-links-empty":K?"false":"true",title:V,role:K?"link":void 0,tabIndex:K?0:void 0,style:{cursor:K?"pointer":void 0,opacity:K?1:.5,transition:"color 200ms ease-out, background-color 200ms ease-out, border-color 200ms ease-out, opacity 200ms ease-out"},onMouseEnter:()=>{K&&ta(!0)},onMouseLeave:()=>ta(!1),onClick:()=>{K&&eC.push("/messages")},onKeyDown:e=>{K&&("Enter"===e.key||" "===e.key)&&(e.preventDefault(),eC.push("/messages"))},children:[eY.length,(0,a.jsxs)("span",{className:"opacity-70","data-active-links-chip-unit":!0,children:[" active link",1===eY.length?"":"s"]}),H?(G=(U=null!==O?Math.max(0,(Date.now()-O)/1e3):999)<=30?1:U<=300?1-(U-30)/270*.75:.25,J=eN?`rgba(13, 148, 136, ${G.toFixed(2)})`:`rgba(34, 211, 238, ${G.toFixed(2)})`,(0,a.jsxs)("span",{className:"text-gray-500",children:[(0,a.jsx)("span",{"data-active-links-freshness-dot":!0,"data-active-links-freshness-alpha":G.toFixed(2),style:{color:J,fontWeight:G>.7?700:400,transition:"color 200ms ease-out"},children:" · "}),"last ",H]})):null]})),(0,a.jsx)(S,{sessions:e})]})]}),(0,a.jsxs)("div",{ref:tv,className:`relative overflow-hidden rounded-xl border shadow-2xl ${eN?"shadow-zinc-900/5":"shadow-cyan-950/30"} ${t$?"flex items-center justify-center":""}`,"data-topo-wrapper":!0,style:{background:e$.containerBg,borderColor:e$.containerBorder,transition:"background-color 200ms ease-out, border-color 200ms ease-out, box-shadow 200ms ease-out"},children:[(0,a.jsx)("div",{className:`absolute inset-x-0 top-0 h-px bg-gradient-to-r ${e$.topRailGradient}`,"data-topo-top-rail":!0,style:{transition:"background-image 200ms ease-out"}}),(0,a.jsxs)("svg",{ref:tk,viewBox:"0 0 1000 680",className:"w-full h-auto block",preserveAspectRatio:"xMidYMid meet","aria-roledescription":"agent network topology","aria-label":(q=eR.length,Z=eO.length,Q=eY.length,(ee=[]).push(`${q} agent${1===q?"":"s"} online`),eG>0&&ee.push(`${eG} working`),Z>0&&ee.push(`${Z} offline`),ee.push(`${Q} active link${1===Q?"":"s"}`),`Agent network topology — ${ee.join(" · ")}. Tab to navigate nodes, double-click canvas to reset view.`),"data-topo-canvas-aria":!0,onPointerDown:e=>{0===e.button&&(e.currentTarget.setPointerCapture?.(e.pointerId),tS.current={active:!0,startX:e.clientX,startY:e.clientY,baseX:tN.current.x,baseY:tN.current.y},tB(!0))},onPointerMove:e=>{let t=tS.current;if(!t.active)return;let a=tk.current;if(!a)return;let n=a.getBoundingClientRect(),s=(e.clientX-t.startX)/n.width*1e3,r=(e.clientY-t.startY)/n.height*680;tj(e=>({...e,x:t.baseX+s,y:t.baseY+r}))},onPointerUp:tR,onPointerLeave:tR,onDoubleClick:e=>{let t=e.target;t?.closest("g[data-node]")||tX()},style:{cursor:tW?"grabbing":"grab",touchAction:"none"},children:[(0,a.jsxs)("defs",{children:[(0,a.jsxs)("linearGradient",{id:"topo-panel",x1:"0",x2:"1",y1:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"0%",stopColor:e$.panelStops[0]}),(0,a.jsx)("stop",{offset:"48%",stopColor:e$.panelStops[1]}),(0,a.jsx)("stop",{offset:"100%",stopColor:e$.panelStops[2]})]}),(0,a.jsxs)("radialGradient",{id:"topo-radar",cx:"50%",cy:"50%",r:"55%",children:[(0,a.jsx)("stop",{offset:"0%",stopColor:e$.radarStops[0].color,stopOpacity:e$.radarStops[0].opacity}),(0,a.jsx)("stop",{offset:"45%",stopColor:e$.radarStops[1].color,stopOpacity:e$.radarStops[1].opacity}),(0,a.jsx)("stop",{offset:"100%",stopColor:e$.radarStops[2].color,stopOpacity:e$.radarStops[2].opacity})]}),!eN&&(0,a.jsxs)("filter",{id:"topo-glow",children:[(0,a.jsx)("feGaussianBlur",{stdDeviation:"4",result:"blur"}),(0,a.jsxs)("feMerge",{children:[(0,a.jsx)("feMergeNode",{in:"blur"}),(0,a.jsx)("feMergeNode",{in:"SourceGraphic"})]})]}),(0,a.jsx)("filter",{id:"topo-groupbox-lift",x:"-10%",y:"-10%",width:"120%",height:"120%",children:(0,a.jsx)("feDropShadow",{dx:"0",dy:"3",stdDeviation:"4",floodColor:eN?"#0f172a":"#000000",floodOpacity:eN?.18:.55})}),[{id:"topo-arrow-s",size:12},{id:"topo-arrow",size:16},{id:"topo-arrow-l",size:22}].map(e=>(0,a.jsx)("marker",{id:e.id,viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:e.size,markerHeight:e.size,markerUnits:"userSpaceOnUse",orient:"auto-start-reverse",children:(0,a.jsx)("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:e$.arrowFill})},e.id)),(0,a.jsxs)("radialGradient",{id:"topo-sweep",cx:"0%",cy:"50%",r:"100%",children:[(0,a.jsx)("stop",{offset:"0%",stopColor:eN?"#0d9488":"#22d3ee",stopOpacity:eN?.18:.32}),(0,a.jsx)("stop",{offset:"70%",stopColor:eN?"#0d9488":"#22d3ee",stopOpacity:eN?.1:.18}),(0,a.jsx)("stop",{offset:"100%",stopColor:eN?"#0d9488":"#22d3ee",stopOpacity:"0"})]})]}),(0,a.jsx)("rect",{width:"1000",height:"680",fill:"url(#topo-panel)"}),(0,a.jsxs)("g",{transform:`translate(${tw.x} ${tw.y}) scale(${tw.zoom})`,"data-topo-viewport":!0,"data-topo-viewport-smooth":tH?"true":"false","data-topo-viewport-layout-switching":eF?"true":"false","data-topo-viewport-nodesize-switching":eW?"true":"false",style:{transition:tH?"opacity 250ms ease-out, transform 300ms ease-out":"opacity 250ms ease-out",opacity:eF||eW?.45:1},children:["ring"===eT&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("circle",{cx:500,cy:330,r:"330",fill:"url(#topo-radar)",style:{pointerEvents:"none"}}),!eN&&(0,a.jsx)("g",{opacity:"0.5",style:{pointerEvents:"none"},"data-topo-starfield":!0,children:Array.from({length:14}).map((e,t)=>{let n=9301*t+49297,s=t%3==0?1.2:.7;return(0,a.jsx)("circle",{cx:13*n%1e3,cy:7*n%680,r:s,fill:"#a5b4fc",opacity:.35+t%4*.05,"data-topo-starfield-dot":t},t)})}),!1,[170,250,330].map(e=>(0,a.jsx)("circle",{cx:500,cy:330,r:e,fill:"none",stroke:e$.ringStroke,strokeWidth:"1",opacity:eN?.6:.35,"data-topo-radar-ring":e},e)),(et=eR.length>14?[145,215,285]:eR.length>8?[175,260]:eR.length>0?[220]:[],en=(ea=!!(tx||e5||tu))?e$.legendAccent:e$.ringStroke,et.map((e,t)=>{let n=eR.reduce((t,a)=>{let n=eH[a.alias];return n&&15>Math.abs(Math.hypot(n.x-500,n.y-330)-e)?t+1:t},0);if(0===n)return null;let s=n<=2?0:n<=6?1:2,r=[.24,.36,.5][s],o=[.32,.46,.62][s],l=60*Math.min(t,8);return(0,a.jsx)("circle",{cx:500,cy:330,r:e,fill:"none",stroke:en,strokeWidth:"0.7",strokeDasharray:"2 6",opacity:eN?r:o,className:"anet-fade-in",style:{pointerEvents:"none",transition:"stroke 200ms ease-out, opacity 250ms ease-out",animationDelay:`${l}ms`},"data-tier-ring":e,"data-tier-occupancy":n,"data-tier-bucket":s,"data-tier-tinted":ea?"true":"false","data-tier-fade-delay":l},`tier-${e}`)})),!1,!1]}),"ring"===eT&&(er=[2.8,2.4,2,1.6][es=0===eG?0:eG<=2?1:eG<=5?2:3],eR.map((e,t)=>{let n=eH[e.alias];if(!n)return null;let s=j({x:500,y:330},n,0),r=eX.has(e.alias);return(0,a.jsx)("path",{d:s,fill:"none",stroke:r?e$.spokeStroke.active:e$.spokeStroke.idle,strokeWidth:r?2:1,strokeDasharray:r?"none":"6 14",opacity:r?.7:.45,className:r?void 0:"anet-topo-spoke-flow","data-topo-spoke-bucket":r?void 0:es,"data-topo-spoke-dur":r?void 0:er,"data-topo-hub-spoke-active":r?"true":"false",style:{transition:"stroke 250ms ease-out, stroke-width 250ms ease-out, opacity 250ms ease-out",...r?{}:{animationDelay:`${-(.25*t)}s`,...{"--spoke-dur":`${er}s`}}}},`hub-${e.alias}`)})),eV.map((e,t)=>{let n,s,r,o,l=e3===e.key,i=e5===e.key,d=e.statuses.working,c=d>=6?8:d>=4?10:d>=2?12:14;return(0,a.jsxs)("g",{"data-group":e.key,className:"transition-opacity anet-fade-in","data-group-fade-delay":60*Math.min(t,8),style:{opacity:!e3||l?1:.28,animationDelay:`${60*Math.min(t,8)}ms`},children:[(0,a.jsx)("rect",{x:e.x,y:e.y,width:e.w,height:e.h,rx:"14",fill:eN?"#0f172a":"#a5b4fc",fillOpacity:i?eN?.08:.13:l?eN?.05:.09:eN?.025:.045,stroke:i||l?e$.legendAccent:e$.ringStroke,strokeWidth:i?3:l?2:1.5,strokeDasharray:i||l?"none":"6 6","data-group-box-pinned":i?"true":"false","data-group-box-live":i||l||!(e.statuses.working>0)?"false":"true","data-group-box-march-dur":c,"data-group-box-lifted":i||l?"true":"false",className:i||l||!(e.statuses.working>0)?void 0:"anet-topo-groupbox-live",filter:i||l?"url(#topo-groupbox-lift)":void 0,style:{transition:"stroke 200ms ease-out, stroke-width 200ms ease-out, fill-opacity 200ms ease-out, filter 200ms ease-out, fill 200ms ease-out",pointerEvents:"none",...{"--march-dur":`${c}s`}}}),(0,a.jsxs)("g",{role:"button",tabIndex:0,"aria-pressed":e5===e.key,"data-group-label-hit":e.key,className:"anet-topo-svg-focus",style:{pointerEvents:"all",cursor:"pointer"},onPointerDown:e=>e.stopPropagation(),onClick:()=>e4(t=>t===e.key?null:e.key),onPointerEnter:()=>e1(e.key),onPointerLeave:()=>e1(t=>t===e.key?null:t),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),e4(t=>t===e.key?null:e.key))},children:[(s=(n=Object.entries(eK).filter(([,t])=>t===e.key).map(([e])=>e)).slice(0,8).join(", "),r=n.length>8?` + ${n.length-8} more`:"",o=[e.statuses.working>0?`${e.statuses.working} working`:null,e.statuses.idle>0?`${e.statuses.idle} idle`:null,e.statuses.offline>0?`${e.statuses.offline} offline`:null].filter(Boolean).join(" · "),(0,a.jsx)("title",{children:[`${e.key} (${n.length} member${1===n.length?"":"s"})`,o||null,`${s}${r}`,e5===e.key?"click to release pin":"click to pin this group"].filter(Boolean).join("\n")})),(0,a.jsx)("rect",{x:e.x+6,y:e.y+2,width:Math.min(e.w-12,240),height:20,rx:"4",fill:e5===e.key||e0===e.key?e$.legendAccent:"transparent",opacity:e5===e.key?eN?.16:.2:e0===e.key?eN?.09:.13:1,"data-group-label-tinted":e5===e.key?"pinned":e0===e.key?"hover":"none",style:{transition:"fill 150ms ease-out, opacity 150ms ease-out"}}),(0,a.jsxs)("text",{x:e.x+12,y:e.y+14,fill:l?e$.legendHeadline:e$.legendText,fontSize:"13",fontFamily:"monospace",fontWeight:"700",style:{transition:"fill 200ms ease-out, letter-spacing 200ms ease-out",letterSpacing:i?"0.5px":"0px"},"data-group-label":e.key,"data-group-label-pinned":i?"true":"false",children:[e.key,(0,a.jsxs)("tspan",{dx:"6",fontSize:"11",fontWeight:"400","data-group-label-count":e.key,"data-group-label-count-value":e.count,style:{fontVariantNumeric:"tabular-nums"},children:["· ",e.count]}),e.statuses.working>0&&e.statuses.working!==e.count&&(0,a.jsxs)("tspan",{dx:"8",fill:eN?"#059669":"#22c55e",fontSize:"11",fontWeight:"600",className:"anet-fade-in","data-group-pip":"working",style:{fontVariantNumeric:"tabular-nums",transition:"fill 200ms ease-out"},children:[e.statuses.working,"w"]}),e.statuses.idle>0&&e.statuses.idle!==e.count&&(0,a.jsxs)("tspan",{dx:"4",fill:eN?"#0d9488":"#2dd4bf",fontSize:"11",fontWeight:"600",className:"anet-fade-in","data-group-pip":"idle",style:{fontVariantNumeric:"tabular-nums",transition:"fill 200ms ease-out"},children:[e.statuses.idle,"i"]}),e.statuses.offline>0&&e.statuses.offline!==e.count&&(0,a.jsxs)("tspan",{dx:"4",fill:eN?"#94a3b8":"#6b7280",fontSize:"11",fontWeight:"600",className:"anet-fade-in","data-group-pip":"offline",style:{fontVariantNumeric:"tabular-nums",transition:"fill 200ms ease-out"},children:[e.statuses.offline,"o"]})]})]})]},`grp-${e.key}`)}),eY.map((e,t)=>{let n,s,r,o,l,i,d,c,u,h,p,f=eH[e.from],x=eH[e.to];if(!f||!x)return null;let g=(t%2==0?1:-1)*Math.min(36,.18*Math.hypot(x.x-f.x,x.y-f.y)),y=j(f,x,g),b=Math.min(2+e.count,7),v=Math.max(.9,2.6/Math.sqrt(e.count)),k=Math.max(.35,1-(e.last_at?Math.max(0,Date.now()-Date.parse(e.last_at)):0)/3e5),w=e.count<=2?"topo-arrow-s":e.count<=4?"topo-arrow":"topo-arrow-l",N=(0,m.relativeAgo)(e.last_at),S=`${e.from} → ${e.to}
4
+ ${e.count} message${1===e.count?"":"s"}${N?` \xb7 last ${N}`:""}`,$=te===e.key,_=eK[e.from]??e.from,M=eK[e.to]??e.to,C=$?2:te?.35:eZ||e3?e.from===eZ||e.to===eZ?1.7:e3&&_===e3&&M===e3?1.3:.35:tt?1.5:1,E=$?Math.min(1.4*b,10):b;return(0,a.jsxs)("g",{className:"anet-fade-in",style:{animationDelay:`${280+35*Math.min(t,20)}ms`},"data-edge-group":e.key,children:[(0,a.jsx)("path",{d:y,fill:"none",stroke:"transparent",strokeWidth:Math.max(b+10,16),style:{pointerEvents:"stroke"},"data-edge-hitbox":!0,onMouseEnter:()=>e6(e.key),onMouseLeave:()=>e6(t=>t===e.key?null:t),children:(0,a.jsx)("title",{children:S})}),(0,a.jsx)("path",{d:y,fill:"none",stroke:e$.flowEdge,strokeWidth:E,opacity:Math.min(1,(eN?.22:.28)*k*C),filter:eN?void 0:"url(#topo-glow)",markerEnd:`url(#${w})`,"data-edge-visible":e.key,style:{pointerEvents:"none",transition:"opacity 300ms ease-out, stroke-width 300ms ease-out, stroke 300ms ease-out"}}),(0,a.jsx)("path",{id:`flow-path-${t}`,d:y,fill:"none",stroke:e$.flowPath,strokeWidth:"1",strokeDasharray:"2 12",opacity:Math.min(1,(eN?.4:.75)*k*C),"data-edge-flow-rail":e.key,style:{transition:"opacity 300ms ease-out, stroke 300ms ease-out"}}),!eS&&(0,a.jsx)("circle",{r:"4",fill:e$.flowParticle,filter:eN?void 0:"url(#topo-glow)",opacity:Math.min(1,k*C),"data-edge-particle":e.key,style:{transition:"fill 200ms ease-out, opacity 200ms ease-out"},children:(0,a.jsx)("animateMotion",{dur:`${v}s`,begin:`-${(.37*t%v).toFixed(3)}s`,repeatCount:"indefinite",path:y})}),!1,!1,(n=e.count>=3,s=(f.x+x.x)/2,r=(f.y+x.y)/2,o=x.x-f.x,i=Math.hypot(o,l=x.y-f.y)||1,d=s+-l/i*g*.5,c=r+o/i*g*.5,u=n?Math.min(1,k*C):0,h=e7===e.key,p=e.count>=10,(0,a.jsxs)("g",{"data-edge-count-badge":e.key,"data-edge-count-badge-pinned":h?"true":"false","data-edge-count-badge-hot":p?"true":"false","data-edge-count-badge-visible":n?"true":"false",role:n?"button":void 0,tabIndex:n?0:-1,"aria-pressed":n?h:void 0,"aria-hidden":!n||void 0,className:"anet-topo-svg-focus",style:{pointerEvents:n?"all":"none",cursor:n?"pointer":void 0,transition:"opacity 300ms ease-out"},opacity:u,onPointerDown:e=>e.stopPropagation(),onMouseEnter:()=>e6(e.key),onMouseLeave:()=>e6(t=>t===e.key?null:t),onClick:t=>{t.stopPropagation(),e9(t=>t===e.key?null:e.key);let a=Date.now();tP({ts:a,x:d,y:c,r0:10.5,color:e$.flowEdge}),setTimeout(()=>tP(e=>e&&e.ts===a?null:e),600)},onKeyDown:t=>{if("Enter"===t.key||" "===t.key){t.preventDefault(),e9(t=>t===e.key?null:e.key);let a=Date.now();tP({ts:a,x:d,y:c,r0:10.5,color:e$.flowEdge}),setTimeout(()=>tP(e=>e&&e.ts===a?null:e),600)}},children:[(0,a.jsx)("title",{children:h?`${e.from} → ${e.to} (${e.count}) — click to release pin`:`${e.from} → ${e.to} (${e.count}) — click to pin`}),(0,a.jsx)("circle",{cx:d,cy:c,r:$||h?10.5:9,fill:e$.legendBox.fill,stroke:h?e$.legendHeadline:p?eN?"#d97706":"#fbbf24":e$.flowEdge,strokeWidth:h||p?2:1,opacity:eN?.95:.82,"data-edge-badge-lifted":$||h?"true":"false",style:{transition:"r 180ms ease-out, stroke 300ms ease-out, stroke-width 300ms ease-out, fill 200ms ease-out, opacity 200ms ease-out"}}),(0,a.jsx)("text",{x:d,y:c+3,textAnchor:"middle",fill:e$.legendHeadline,fontSize:"10",fontFamily:"monospace",fontWeight:"700","data-edge-badge-text":e.key,"data-edge-badge-text-pin":h||p?"true":"false",style:{pointerEvents:"none",fontVariantNumeric:"tabular-nums",letterSpacing:h||p?"0.4px":"0px",transition:"letter-spacing 300ms ease-out"},children:e.count})]}))]},e.key)}),"ring"===eT&&(0,a.jsxs)("g",{"data-topo-hub":!0,"data-topo-hub-hovered":tn?"true":"false",role:"button",tabIndex:0,"aria-label":(eo=["Network hub"],eR.length>0&&eo.push(`${eR.length} online`),eG>0&&eo.push(`${eG} working`),eY.length>0&&eo.push(`${eY.length} active link${1===eY.length?"":"s"}`),eo.join(" · ")+" — Enter to fit view"),className:"anet-topo-svg-focus anet-fade-in","data-topo-hub-fade-delay":0,style:{cursor:"pointer"},onPointerDown:e=>e.stopPropagation(),onMouseEnter:()=>ts(!0),onMouseLeave:()=>ts(!1),onClick:()=>{tK(),tP({ts:Date.now(),x:500,y:330,r0:18,color:eN?"#059669":"#10b981"}),setTimeout(()=>tP(e=>e&&500===e.x&&330===e.y?null:e),600)},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),tK(),tP({ts:Date.now(),x:500,y:330,r0:18,color:eN?"#059669":"#10b981"}),setTimeout(()=>tP(e=>e&&500===e.x&&330===e.y?null:e),600))},children:[(0,a.jsx)("title",{children:(el=e.length,ei=["Network hub",`${el} session${1===el?"":"s"}`],eR.length>0&&ei.push(`${eR.length} online`),eG>0&&ei.push(`${eG} working`),eY.length>0&&ei.push(`${eY.length} active link${1===eY.length?"":"s"}`),ei.join(" · ")+"\nclick to fit view")}),(ec=[.52,.58,.65,.72][ed=0===eG?0:eG<=2?1:eG<=5?2:3],eu=[.16,.2,.26,.32][ed],eh=[4,3.2,2.7,2.4][ed],ep=`0.32;${ec};0.32`,em=`0.08;${eu};0.08`,(0,a.jsx)("circle",{cx:500,cy:330,r:"18",fill:eN?"#d1fae5":"#10b981",opacity:eN?.42:.12,"data-hub-busyness":ed,style:{transition:"fill 200ms ease-out"},children:!eS&&(0,a.jsx)("animate",{attributeName:"opacity",values:eN?ep:em,dur:`${eh}s`,repeatCount:"indefinite",calcMode:"spline",keyTimes:"0;0.5;1",keySplines:"0.42 0 0.58 1;0.42 0 0.58 1"})})),(0,a.jsx)("circle",{cx:500,cy:330,r:"10",fill:eN?"#059669":"#10b981","data-topo-hub-core":!0,style:{transition:"fill 200ms ease-out"}}),(0,a.jsx)("text",{x:500,y:330,textAnchor:"middle",dy:"0.36em",fill:eN?"#d1fae5":"#ecfdf5",fontSize:"11",fontFamily:"monospace",fontWeight:"700",opacity:+(eG>0),"data-topo-hub-working-count":eG,"data-topo-hub-working-count-hovered":tn?"true":"false","data-topo-hub-working-count-visible":eG>0?"true":"false",style:{pointerEvents:"none",transform:!eS&&tn?"scale(1.08)":"scale(1)",transformBox:"fill-box",transformOrigin:"center",transition:"transform 200ms ease-out, opacity 300ms ease-out, fill 200ms ease-out",fontVariantNumeric:"tabular-nums"},children:eG}),(0,a.jsx)("circle",{cx:500,cy:330,r:"5",fill:"#d1fae5",opacity:eG>0?0:.9,"data-topo-hub-highlight":!0,"data-topo-hub-highlight-visible":eG>0?"false":"true",style:{pointerEvents:"none",transition:"opacity 300ms ease-out"}}),(0,a.jsx)("circle",{cx:500,cy:330,r:tn?17:14,fill:"none",stroke:eN?"#059669":"#10b981",strokeWidth:"1.5",opacity:tn?eN?.85:.7:0,"data-topo-hub-hover-ring":!0,"data-topo-hub-hover-ring-radius":tn?17:14,style:{pointerEvents:"none",transition:"opacity 180ms ease-out, r 180ms ease-out, stroke 200ms ease-out"}})]}),[...eR,...eO].map((e,n)=>{let s,r,o,l,i,d,c,h,p,f=eH[e.alias];if(!f)return null;let x=(e.network_id?t[`${e.network_id}:${e.alias}`]:void 0)??t[e.alias],g="offline"!==e.status||!!x,b=$(e,g,eN),k=eX.has(e.alias),w=Math.round((g?26:18)*eD),j=!eq||eZ===e.alias||tw.zoom>=1.4,S=!e3||(eK[e.alias]??e.alias)===e3,_=0;if("ring"===eT){let t=eH[e.alias];if(t){let e=Math.hypot(t.x-500,t.y-330);_=e<195?0:e<270?1:e<310?2:3}}return(0,a.jsxs)("g",{"data-node":e.alias,"data-tier-idx":"ring"===eT?_:-1,role:"button",tabIndex:0,"aria-pressed":tA===e.alias,"aria-label":`Chat with ${e.alias} (${e.status})`,onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),tF(e.alias),tP({ts:Date.now(),x:f.x,y:f.y,r0:w,color:b.primary}),setTimeout(()=>tP(e=>e&&Date.now()-e.ts>=590?null:e),600))},className:"group transition-opacity anet-fade-in anet-topo-svg-focus",style:{cursor:"pointer",opacity:tb&&!tb.has(e.alias)&&tA!==e.alias||tp&&tA!==e.alias&&("unknown"===(s=y(e.model)).id?"?":s.initial)!==tp||ty&&tA!==e.alias&&!("working"===ty?"working"===e.status:"idle"===ty?g&&"working"!==e.status:!g)?.28:S?tA===e.alias||g?1:.6:.32,animationDelay:"ring"===eT?`${180*_+n%6*25}ms`:`${25*Math.min(n,24)}ms`,transform:eS||eZ!==e.alias?void 0:"translateY(-2px)",transition:"transform 180ms cubic-bezier(0.4,0,0.2,1)"},onPointerDown:e=>e.stopPropagation(),onPointerEnter:()=>eQ(e.alias),onPointerLeave:()=>eQ(t=>t===e.alias?null:t),onClick:()=>{tF(e.alias),tP({ts:Date.now(),x:f.x,y:f.y,r0:w,color:b.primary}),setTimeout(()=>tP(e=>e&&Date.now()-e.ts>=590?null:e),600)},children:[(()=>{var t,n;let s,r,o,l=!g&&e.last_seen_at?(0,m.relativeAgo)(e.last_seen_at):null,i=eK[e.alias],d=i?Object.values(eK).filter(e=>e===i).length:1,c=d>1?`group: ${i} \xb7 ${d}`:null,u=0,h=0,p=new Map,f=new Map;for(let t of eY)t.from===e.alias&&(h+=t.count,f.set(t.to,(f.get(t.to)??0)+t.count)),t.to===e.alias&&(u+=t.count,p.set(t.from,(p.get(t.from)??0)+t.count));let x=e=>{let t=[...e.entries()].sort((e,t)=>t[1]-e[1]);return t.slice(0,6).map(([e,t])=>`${e} (${t})`).join(", ")+(t.length>6?` + ${t.length-6} more`:"")},b=u+h>0?`flows: ${u} in / ${h} out`:null,k=p.size>0?`← from: ${x(p)}`:null,w=f.size>0?`→ to: ${x(f)}`:null;return(0,a.jsx)("title",{children:[`${e.alias} \xb7 ${e.status}`,(t=e.model,n=e.runtime,s=y(t),r=v(n),o=[],"unknown"!==s.id&&o.push(s.label),t&&o.push(t),r&&o.push(r.label),o.join(" · ")),c,e.project_dir?`cwd: ${e.project_dir}`:null,l?`last seen: ${l}`:null,b,k,w].filter(Boolean).join("\n")})})(),(0,a.jsx)("circle",{cx:f.x,cy:f.y,r:w+12,fill:"none",stroke:b.primary,strokeWidth:"2",className:"opacity-0 group-hover:opacity-70 transition-opacity duration-150",style:{pointerEvents:"none"}}),(r=tA===e.alias,(0,a.jsx)("circle",{cx:f.x,cy:f.y,r:w+14,fill:"none",stroke:b.primary,strokeWidth:"2.5",opacity:r?eN?.85:.95:0,filter:!eN&&r?"url(#topo-glow)":void 0,style:{pointerEvents:"none",transition:"opacity 200ms ease-out, stroke 200ms ease-out, filter 200ms ease-out"},"data-chat-target-ring":!0,"data-chat-target-active":r?"true":"false","data-chat-target-breath":!eS&&r?"on":"off",children:!eS&&r&&(0,a.jsx)("animate",{attributeName:"opacity",values:eN?"0.72;0.95;0.72":"0.82;1;0.82",dur:"3s",repeatCount:"indefinite"})})),!eS&&(0,a.jsx)("g",{opacity:+!!k,"data-node-pulse":e.alias,"data-node-pulse-active":k?"true":"false",style:{transition:"opacity 300ms ease-out"},children:(0,a.jsxs)("circle",{cx:f.x,cy:f.y,r:w+14,fill:b.primary,opacity:eN?.08:.12,children:[(0,a.jsx)("animate",{attributeName:"r",values:`${w+8};${w+22};${w+8}`,dur:"2.4s",repeatCount:"indefinite",calcMode:"spline",keyTimes:"0;0.5;1",keySplines:"0.42 0 0.58 1;0.42 0 0.58 1"}),(0,a.jsx)("animate",{attributeName:"opacity",values:eN?"0.12;0.02;0.12":"0.18;0.04;0.18",dur:"2.4s",repeatCount:"indefinite",calcMode:"spline",keyTimes:"0;0.5;1",keySplines:"0.42 0 0.58 1;0.42 0 0.58 1"})]})}),(0,a.jsx)("circle",{cx:f.x,cy:f.y,r:w+8,fill:b.halo,opacity:g?eN?.85:.65:eN?.4:.25,className:"transition-[fill,opacity] duration-300 ease-out","data-node-halo-breath":eS||"working"!==e.status?"off":"on","data-node-halo-breath-offset":eS||"working"!==e.status?void 0:(.37*n%3).toFixed(3),children:!1}),(o=tb&&tb.has(e.alias),(0,a.jsx)("circle",{cx:f.x,cy:f.y,r:w+7,fill:"none",stroke:e$.flowEdge,strokeWidth:o?2.4:1.6,opacity:o?eN?.9:.85:0,"data-edge-endpoint-ring":!0,"data-edge-endpoint-active":o?"true":"false","data-edge-endpoint-ring-stroke-width":o?2.4:1.6,style:{pointerEvents:"none",transition:"opacity 180ms ease-out, stroke-width 180ms ease-out"}})),(0,a.jsx)("circle",{cx:f.x,cy:f.y,r:w,fill:g?e$.nodeFill.online:e$.nodeFill.offline,stroke:b.primary,strokeWidth:g?3:1.5,strokeDasharray:g?"none":"5 5",filter:g&&!eN?"url(#topo-glow)":void 0,"data-node-status-ring":b.label,style:{transition:"fill 300ms ease-out, stroke 300ms ease-out, stroke-width 300ms ease-out"}}),"red"!==eM.get(e.server)?null:(0,a.jsx)("circle",{cx:f.x,cy:f.y,r:w+8,fill:"none",stroke:eN?"#d97706":"#fbbf24",strokeWidth:"2.5",opacity:"0.6","data-node-server-health":"red","data-node-server-host":e.server,style:{pointerEvents:"none",transition:"stroke 200ms ease-out, opacity 200ms ease-out"}}),(()=>{let t=Math.round((g?14:10)*eD),n=2*w,s=y(e.model),r=/书生|书小生|intern/i.test(e.alias);if(e_||r||s.logo)return(0,a.jsx)("image",{href:s.logo??"/intern_avatar.png",x:f.x-n/2,y:f.y-n/2,width:n,height:n,preserveAspectRatio:"xMidYMid meet"});if("unknown"!==s.id)return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("circle",{cx:f.x,cy:f.y,r:t,fill:s.mono.bg,stroke:s.mono.ring,strokeWidth:"1.5"}),(0,a.jsx)("text",{x:f.x,y:f.y,dy:"0.34em",textAnchor:"middle",fill:s.mono.text,fontSize:t,fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Inter, sans-serif",fontWeight:"700","data-monogram-letter":s.initial,children:s.initial})]});let o=(0,u.aliasAvatarColors)(eK[e.alias]||e.alias);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("circle",{cx:f.x,cy:f.y,r:t,fill:o.bg,stroke:o.ring,strokeWidth:"1"}),(0,a.jsx)("text",{x:f.x,y:f.y,dy:"0.34em",textAnchor:"middle",fill:o.text,fontSize:t,fontFamily:"monospace",fontWeight:"700",children:(0,u.aliasInitial)(e.alias)})]})})(),(()=>{let t=v(e.runtime);if(!t)return null;let n=g?7:5.5,s=f.x+.72*w,r=f.y+.72*w,o=2*n*.62,l=!eS&&eZ===e.alias;return(0,a.jsxs)("g",{style:{pointerEvents:"none"},children:[(0,a.jsx)("circle",{cx:s,cy:r,r:n,fill:e$.containerBg,stroke:t.color,strokeWidth:"1.5","data-runtime-badge":e.alias,"data-runtime-badge-active":l?"true":"false",style:{r:l?`${n+1}px`:`${n}px`,strokeWidth:l?"2px":"1.5px",transition:"r 150ms ease-out, stroke-width 150ms ease-out"}}),(0,a.jsx)("g",{transform:`translate(${s-o/2} ${r-o/2}) scale(${o/24})`,children:(0,a.jsx)("path",{d:t.iconPath,fill:"none",stroke:t.color,strokeWidth:"2.4",strokeLinecap:"round",strokeLinejoin:"round"})})]})})(),!1,(i=(l=eD<.8)?88:100,j?(0,a.jsxs)("g",{transform:`translate(${f.x}, ${f.y+w+(l?18:22)})`,style:{pointerEvents:"none"},className:"transition-transform duration-200 group-hover:-translate-y-[1.5px]",children:[(0,a.jsx)("rect",{x:-i/2,y:l?-12:-14,width:i,height:l?36:42,rx:"6",fill:e$.labelBox.fill,stroke:eS||eZ!==e.alias?e$.labelBox.stroke:e$.legendAccent,opacity:eN?1:.94,"data-node-label-card":e.alias,"data-node-label-card-elevation":eS||eZ!==e.alias?"idle":"hover",style:{filter:eS||eZ!==e.alias?eN?"drop-shadow(0 1px 2px rgba(15,23,42,0.08))":"drop-shadow(0 1px 2px rgba(0,0,0,0.30))":eN?"drop-shadow(0 3px 8px rgba(15,23,42,0.20))":"drop-shadow(0 4px 12px rgba(0,0,0,0.60))",transition:"filter 220ms ease-out, stroke 220ms ease-out, fill 220ms ease-out, opacity 220ms ease-out"}}),(0,a.jsx)("text",{x:"0",y:"1",textAnchor:"middle",fill:b.text,fontSize:l?11:12,fontFamily:"monospace",fontWeight:"700","data-node-alias-text":e.alias,"data-node-alias-chat-target":tA===e.alias?"true":"false",style:{transition:"fill 300ms ease-out, letter-spacing 200ms ease-out",letterSpacing:tA===e.alias?"0.5px":"0px"},children:N(e.alias,l?11:12)}),(0,a.jsxs)("text",{x:"0",y:l?15:17,textAnchor:"middle",fill:b.primary,fontSize:l?8:9,fontFamily:"monospace","data-node-sub-text":e.alias,style:{transition:"fill 300ms ease-out"},children:[b.label,g&&null!=x?` sse:${x}`:""]})]}):(0,a.jsx)("text",{x:f.x,y:f.y+w+(l?12:14),textAnchor:"middle",fill:b.text,fontSize:l?9:10,fontFamily:"monospace",fontWeight:"700",opacity:.9,className:"group-hover:-translate-y-[1.5px]","data-node-dense-alias-text":e.alias,style:{pointerEvents:"none",paintOrder:"stroke",transition:"transform 200ms ease-out, fill 300ms ease-out"},stroke:e$.containerBg,strokeWidth:"3",children:N(e.alias,l?9:10)})),!eS&&eZ===e.alias&&!eq&&(d=y(e.model),c=v(e.runtime),h=f.x>650?f.x-w-18-192:f.x+w+18,p=f.y-44,(0,a.jsxs)("g",{transform:`translate(${h}, ${p})`,"data-topo-hover-detail":e.alias,style:{pointerEvents:"none"},children:[(0,a.jsx)("rect",{x:"0",y:"0",width:192,height:88,rx:"8",fill:e$.labelBox.fill,stroke:e$.legendAccent,opacity:eN?.98:.94,style:{filter:eN?"drop-shadow(0 4px 12px rgba(15,23,42,0.16))":"drop-shadow(0 4px 12px rgba(0,0,0,0.6))"}}),(0,a.jsx)("text",{x:"10",y:"16",fontSize:"9",fontFamily:"monospace",fill:e$.legendAccent,fontWeight:"700",children:"unknown"!==d.id?d.label:"—"}),(0,a.jsx)("text",{x:"10",y:"32",fontSize:"10",fontFamily:"monospace",fill:e$.legendHeadline,children:e.model||"model · pending"}),(0,a.jsx)("text",{x:"10",y:"48",fontSize:"9",fontFamily:"monospace",fill:e$.legendText,children:c?c.label:"runtime · pending"}),(0,a.jsxs)("text",{x:"10",y:"64",fontSize:"9",fontFamily:"monospace",fill:e$.legendText,children:["host · ",e.server||"unknown"]}),(0,a.jsx)("text",{x:"10",y:"80",fontSize:"9",fontFamily:"monospace",fill:e$.legendText,opacity:"0.7",children:e.task?N(e.task,28):"no recent task"})]}))]},e.alias)}),tL&&!eS&&(0,a.jsxs)("circle",{cx:tL.x,cy:tL.y,r:tL.r0+4,fill:"none",stroke:tL.color,strokeWidth:"2",opacity:"0","data-click-ripple":!0,style:{pointerEvents:"none"},children:[(0,a.jsx)("animate",{attributeName:"r",values:`${tL.r0+4};${tL.r0+30}`,dur:"0.5s",calcMode:"spline",keyTimes:"0;1",keySplines:"0.25 0.1 0.25 1",fill:"freeze"}),(0,a.jsx)("animate",{attributeName:"opacity",values:"0.7;0",dur:"0.5s",calcMode:"spline",keyTimes:"0;1",keySplines:"0.25 0.1 0.25 1",fill:"freeze"})]},tL.ts)]}),eY.length>0&&(0,a.jsxs)("g",{transform:"translate(16, 16)","data-topo-panel":"recent","data-topo-panel-hovered":"recent"===tl?"true":"false",className:"anet-fade-in","data-topo-panel-fade-delay":700,style:{animationDelay:"700ms"},onMouseEnter:()=>ti("recent"),onMouseLeave:()=>ti(e=>"recent"===e?null:e),children:[(0,a.jsx)("rect",{x:"0",y:"0",width:"230",height:"88",rx:"10",fill:e$.legendBox.fill,stroke:e$.legendBox.stroke,opacity:eN?.97:.92,style:{filter:"recent"===tl?eN?"drop-shadow(0 4px 12px rgba(15,23,42,0.14))":"drop-shadow(0 4px 12px rgba(0,0,0,0.65))":eN?"drop-shadow(0 2px 6px rgba(15,23,42,0.08))":"drop-shadow(0 2px 6px rgba(0,0,0,0.45))",transition:"filter 200ms ease-out, fill 200ms ease-out, stroke 200ms ease-out, opacity 200ms ease-out"},"data-topo-panel-elevation":"recent"}),(0,a.jsx)("text",{x:"13",y:"21",fill:e$.legendHeadline,fontSize:"12",fontFamily:"monospace",fontWeight:"700",letterSpacing:"0.3",style:{transition:"fill 200ms ease-out"},"data-recent-panel-title":!0,children:"recent signal"}),(ef=eY.filter(e=>e.count>=10).length,ey=(eg=null!==(ex=eY.reduce((e,t)=>{if(!t.last_at)return e;let a=Date.parse(t.last_at);return Number.isNaN(a)?e:null===e||a>e?a:e},null))?Math.max(0,(Date.now()-ex)/1e3):999)<=30?1:eg<=300?1-(eg-30)/270*.75:.25,eb=eN?`rgba(13, 148, 136, ${ey.toFixed(2)})`:`rgba(34, 211, 238, ${ey.toFixed(2)})`,(0,a.jsxs)("text",{x:"217",y:"21",textAnchor:"end",fontSize:"10",fontFamily:"monospace",children:[(0,a.jsxs)("tspan",{fill:eb,fontWeight:"600","data-recent-panel-count":!0,"data-recent-panel-count-freshness-alpha":ey.toFixed(2),style:{transition:"fill 200ms ease-out",fontVariantNumeric:"tabular-nums"},children:[eY.length,(0,a.jsx)("tspan",{opacity:"0.7","data-recent-panel-count-unit":!0,children:" flows"})]}),(0,a.jsx)("tspan",{fill:eN?"#d97706":"#fbbf24",fontWeight:"700","data-recent-panel-hot-count":ef,"data-recent-panel-hot-visible":ef>0?"true":"false",className:"anet-fade-in",opacity:+(ef>0),style:{transition:"opacity 300ms ease-out",fontVariantNumeric:"tabular-nums"},children:ef>0?(0,a.jsxs)(a.Fragment,{children:[` \xb7 ${ef}`,(0,a.jsx)("tspan",{opacity:"0.7","data-recent-panel-hot-count-unit":!0,children:" hot"})]}):""})]})),(0,a.jsxs)("g",{"data-recent-signal-empty-wrapper":!0,"data-recent-signal-empty-visible":0===eY.length?"true":"false",style:{opacity:+(0===eY.length),transition:"opacity 300ms ease-out",pointerEvents:"none"},children:[(0,a.jsxs)("text",{x:"115",y:"56",textAnchor:"middle",fill:e$.legendText,fontSize:"10",fontFamily:"monospace",fontStyle:"italic",letterSpacing:"0.2",opacity:.65,"data-recent-signal-empty":!0,"data-recent-signal-empty-breathes":eS?"false":"true",children:["no flow yet",!eS&&(0,a.jsx)("animate",{attributeName:"opacity",values:"0.55;0.78;0.55",dur:"4.4s",repeatCount:"indefinite"})]}),(0,a.jsxs)("text",{x:"115",y:"70",textAnchor:"middle",fill:e$.legendText,fontSize:"9",fontFamily:"monospace",letterSpacing:"0.15",opacity:.45,"data-recent-signal-empty-hint":!0,"data-recent-signal-empty-hint-breathes":eS?"false":"true",children:["send a message between agents",!eS&&(0,a.jsx)("animate",{attributeName:"opacity",values:"0.36;0.58;0.36",dur:"4.4s",begin:"-1.5s",repeatCount:"indefinite"})]})]}),0===eY.length?null:eY.slice(0,3).map((e,t)=>{let n,s=e.last_at?(0,m.relativeAgo)(e.last_at):null,r=s?s.replace(/\s+ago$/,""):null,o=e8===e.key,l=e7===e.key,i=o||l,d=e.last_at?(n=Math.max(0,(Date.now()-Date.parse(e.last_at))/1e3))<=30?.85:n<=300?.85-(n-30)/270*.55:.3:.55,c=e.count>=10;return(0,a.jsxs)("g",{"data-recent-row":e.key,"data-recent-row-hovered":o?"true":"false","data-recent-row-pinned":l?"true":"false","data-recent-row-hot":c?"true":"false","data-recent-row-lifted":o||l?"true":"false",className:"anet-topo-svg-focus anet-fade-in",role:"button",tabIndex:0,"aria-pressed":l,style:{cursor:"pointer",transform:o||l?"translateY(-1px)":void 0,transition:"transform 150ms cubic-bezier(0.4, 0, 0.2, 1)"},onPointerDown:e=>e.stopPropagation(),onMouseEnter:()=>e6(e.key),onMouseLeave:()=>e6(t=>t===e.key?null:t),onClick:()=>e9(t=>t===e.key?null:e.key),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),e9(t=>t===e.key?null:e.key))},children:[(0,a.jsx)("title",{children:[`${e.from} → ${e.to} \xb7 ${e.count} msg${1===e.count?"":"s"}${c?" (hot lane · ≥ 10)":""}`,e.last_at?`last: ${new Date(e.last_at).toLocaleString()}`:null,e.content?`"${e.content}"`:null,l?"click to release pin (Esc to clear)":"click to pin · hover to preview"].filter(Boolean).join("\n")}),(0,a.jsx)("rect",{x:"6",y:38+16*t-10,width:"218",height:"14",rx:"3",fill:i?e$.legendAccent:"transparent",opacity:l?eN?.18:.22:o?eN?.1:.14:1,style:{transition:"fill 150ms ease-out, opacity 150ms ease-out"}}),(()=>{if(!e.last_at)return null;let n=Math.max(0,(Date.now()-Date.parse(e.last_at))/1e3),s=n<=30?1:n<=300?1-(n-30)/270*.75:.25;return(0,a.jsx)("circle",{cx:10,cy:38+16*t-3,r:1.6,fill:e$.legendAccent,opacity:s,"data-recent-row-freshness":e.key,"data-recent-row-freshness-alpha":s.toFixed(2),style:{pointerEvents:"none",transition:"opacity 200ms ease-out"}})})(),(0,a.jsxs)("text",{x:"13",y:38+16*t,fill:i?e$.legendHeadline:e$.legendText,fontSize:"9",fontFamily:"monospace","data-recent-row-text":e.key,"data-recent-row-text-pinned":l?"true":"false",style:{transition:"fill 150ms ease-out, letter-spacing 150ms ease-out",letterSpacing:l?"0.5px":"0px"},children:[N(e.from,6)," ","→"," ",N(e.to,6)," "," · ",(0,a.jsx)("tspan",{fill:c?eN?"#d97706":"#fbbf24":void 0,fontWeight:c?"700":"600","data-recent-row-count":!0,...c?{"data-recent-row-count-hot":"true"}:{},style:{transition:"fill 300ms ease-out",fontVariantNumeric:"tabular-nums"},children:e.count})," · ",N(e.content,8)]}),r?(0,a.jsx)("text",{x:"217",y:38+16*t,textAnchor:"end",fill:e$.legendText,fontSize:"8",fontFamily:"monospace",opacity:d,"data-recent-row-ts":e.key,"data-recent-row-ts-alpha":d.toFixed(2),style:{pointerEvents:"none",transition:"opacity 200ms ease-out",fontVariantNumeric:"tabular-nums"},children:r}):null]},e.key)}),(ev=eY.length>3,ek=Math.max(0,eY.length-3),ew=`+ ${ek} more flow${1===ek?"":"s"}`,(0,a.jsxs)("g",{"data-recent-panel-more-nav":!0,"data-recent-panel-more-visible":ev?"true":"false",role:ev?"link":void 0,tabIndex:ev?0:-1,"aria-hidden":!ev||void 0,className:"anet-topo-svg-focus",style:{cursor:ev?"pointer":void 0,pointerEvents:ev?"all":"none",opacity:+!!ev,transition:"opacity 300ms ease-out"},onPointerDown:e=>e.stopPropagation(),onMouseEnter:()=>{ev&&to(!0)},onMouseLeave:()=>to(!1),onClick:()=>{ev&&eC.push("/messages")},onKeyDown:e=>{ev&&("Enter"===e.key||" "===e.key)&&(e.preventDefault(),eC.push("/messages"))},children:[(0,a.jsx)("title",{children:`${ew} — open /messages for the full list`}),(0,a.jsx)("text",{x:"115",y:"82",textAnchor:"middle",fill:tr?e$.legendAccent:e$.legendText,fontSize:"9",fontFamily:"monospace",fontStyle:"italic",letterSpacing:"0.2",opacity:tr?.85:.55,textDecoration:tr?"underline":"none","data-recent-panel-more":ek,"data-recent-panel-more-hovered":tr?"true":"false",style:{transition:"opacity 150ms ease-out, fill 200ms ease-out"},children:ew})]}))]}),(0,a.jsxs)("g",{transform:"translate(760, 16)","data-topo-panel":"legend","data-topo-panel-hovered":"legend"===tl?"true":"false",className:"anet-fade-in","data-topo-panel-fade-delay":800,style:{animationDelay:"800ms"},onMouseEnter:()=>ti("legend"),onMouseLeave:()=>ti(e=>"legend"===e?null:e),children:[(0,a.jsx)("rect",{x:"0",y:"0",width:"224",height:"88",rx:"10",fill:e$.legendBox.fill,stroke:e$.legendBox.stroke,opacity:eN?.97:.92,style:{filter:"legend"===tl?eN?"drop-shadow(0 4px 12px rgba(15,23,42,0.14))":"drop-shadow(0 4px 12px rgba(0,0,0,0.65))":eN?"drop-shadow(0 2px 6px rgba(15,23,42,0.08))":"drop-shadow(0 2px 6px rgba(0,0,0,0.45))",transition:"filter 200ms ease-out, fill 200ms ease-out, stroke 200ms ease-out, opacity 200ms ease-out"},"data-topo-panel-elevation":"legend"}),(0,a.jsx)("text",{x:"13",y:"21",fill:e$.legendHeadline,fontSize:"12",fontFamily:"monospace",fontWeight:"700",letterSpacing:"0.3",style:{transition:"fill 200ms ease-out"},"data-legend-panel-title":!0,children:"legend"}),(0,a.jsxs)("text",{x:"211",y:"21",textAnchor:"end",fill:e$.legendAccent,fontSize:"10",fontFamily:"monospace",fontWeight:"600","data-legend-panel-count":!0,style:{transition:"fill 200ms ease-out",fontVariantNumeric:"tabular-nums"},children:[e.length,(0,a.jsxs)("tspan",{opacity:"0.7","data-legend-panel-count-unit":!0,children:[" node",1===e.length?"":"s"]})]}),(ej=eR.length-eG,[{key:"working",y0:32,y1:36,fill:eN?"#059669":"#22c55e",label:"working",count:eG},{key:"idle",y0:50,y1:54,fill:eN?"#0d9488":"#2dd4bf",label:"idle",count:ej},{key:"offline",y0:68,y1:72,fill:eN?"#94a3b8":"#6b7280",label:"offline",count:eO.length}]).map(e=>{let t,n,s,r=tx===e.key,o=tm===e.key,l=o||r;return(0,a.jsxs)("g",{"data-legend-status":e.key,"data-legend-row-lifted":l?"true":"false",className:"anet-topo-svg-focus",role:"button",tabIndex:0,"aria-pressed":r,style:{cursor:"pointer",transform:l?"translateY(-1px)":void 0,transition:"transform 150ms cubic-bezier(0.4, 0, 0.2, 1)"},onPointerDown:e=>e.stopPropagation(),onMouseEnter:()=>tf(e.key),onMouseLeave:()=>tf(t=>t===e.key?null:t),onClick:()=>tg(t=>t===e.key?null:e.key),children:[(0,a.jsx)("title",{children:(n=(t="working"===e.key?eR.filter(e=>"working"===e.status).map(e=>e.alias):"idle"===e.key?eR.filter(e=>"working"!==e.status).map(e=>e.alias):eO.map(e=>e.alias)).slice(0,8).join(", "),s=t.length>8?` + ${t.length-8} more`:"",[`${e.label} \xb7 ${e.count}`,t.length>0?`${n}${s}`:null,r?"click to release pin (Esc to clear)":"click to pin · hover to preview"].filter(Boolean).join("\n"))}),(0,a.jsx)("rect",{x:"6",y:e.y0-11,width:"170",height:"22",rx:"3",fill:tm===e.key||r?e.fill:"transparent",opacity:r?eN?.14:.18:tm===e.key?eN?.08:.12:1,"data-legend-row-tinted":r?"pinned":tm===e.key?"hover":"none",style:{transition:"fill 150ms ease-out, opacity 150ms ease-out"}}),(0,a.jsx)("circle",{cx:"16",cy:e.y0,r:"6",fill:e.fill,"data-legend-swatch":e.key,"data-legend-swatch-state":r?"pinned":o?"hover":"idle",style:{r:o||r?"7px":"6px",transition:"r 150ms ease-out"}}),(0,a.jsx)("circle",{cx:"16",cy:e.y0,r:"8",fill:"none",stroke:e.fill,strokeWidth:"1.5",opacity:+!!r,"data-legend-pin-ring":e.key,"data-legend-pin-ring-pinned":r?"true":"false",style:{pointerEvents:"none",transition:"opacity 150ms ease-out"}}),(0,a.jsx)("text",{x:"30",y:e.y1,fill:tm===e.key||r?e$.legendHeadline:e$.legendText,fontSize:"11",fontFamily:"monospace","data-legend-row-label":e.key,"data-legend-row-label-pinned":r?"true":"false",style:{transition:"fill 150ms ease-out, letter-spacing 150ms ease-out",letterSpacing:r?"0.5px":"0px"},children:e.label}),(0,a.jsx)("text",{x:"215",y:e.y1,textAnchor:"end",fill:e.count>0&&(tm===e.key||r)?e.fill:e$.legendText,fontSize:"11",fontFamily:"monospace",fontWeight:"600",opacity:0===e.count?eN?.28:.3:tm===e.key||r?.95:.65,"data-legend-count":e.key,"data-legend-count-empty":0===e.count?"true":"false","data-legend-count-fill":e.count>0&&(tm===e.key||r)?"tier":"neutral",style:{pointerEvents:"none",transition:"opacity 150ms ease-out, fill 150ms ease-out",fontVariantNumeric:"tabular-nums"},children:e.count})]},e.key)}),(0,a.jsx)("path",{d:"M140,68 Q164,44 196,68",fill:"none",stroke:e$.flowEdge,strokeWidth:"3",markerEnd:"url(#topo-arrow)","data-legend-flow-arrow":!0,style:{pointerEvents:"none",transition:"stroke 200ms ease-out"}})]}),(0,a.jsx)("text",{x:"16",y:"672",fontSize:"11",fontFamily:"monospace",fontWeight:"600",letterSpacing:"0.5",fill:e$.legendText,opacity:"0.4","data-topo-brand-watermark":!0,style:{pointerEvents:"none",transition:"fill 200ms ease-out"},children:"sleep2agi"}),(0,a.jsxs)("g",{opacity:.35*(0===eY.length),"data-topo-brand-canvas-mark":!0,"data-topo-brand-canvas-mark-visible":0===eY.length?"true":"false",style:{pointerEvents:"none",transition:"opacity 300ms ease-out, fill 200ms ease-out"},children:[(0,a.jsx)("defs",{children:(0,a.jsxs)("mask",{id:"s2a-canvas-corner-mask",children:[(0,a.jsx)("rect",{x:"0",y:"0",width:"28",height:"28",fill:"black"}),(0,a.jsx)("circle",{cx:"14",cy:"14",r:"12",fill:"white"}),(0,a.jsx)("circle",{cx:"17.5",cy:"13",r:"10",fill:"black"})]})}),(0,a.jsx)("rect",{x:"16",y:"16",width:"28",height:"28",fill:e$.legendText,mask:"url(#s2a-canvas-corner-mask)"})]})]}),(()=>{if(.01>Math.abs(tw.zoom-1)&&1>Math.abs(tw.x)&&1>Math.abs(tw.y)||eR.length+eO.length===0)return null;let e=-tw.x/tw.zoom*.12,n=-tw.y/tw.zoom*.12058823529411765,s=1e3/tw.zoom*.12,r=680/tw.zoom*.12058823529411765;return(0,a.jsx)("div",{className:"absolute right-4 rounded-lg border shadow-lg shadow-black/30 overflow-hidden anet-fade-in anet-topo-chip-focus",style:{bottom:56,background:e$.legendBox.fill,borderColor:e$.containerBorder,cursor:"crosshair",color:e$.legendAccent,transition:"background-color 200ms ease-out, border-color 200ms ease-out, color 200ms ease-out"},role:"button",tabIndex:0,"aria-label":"Topology minimap — click to recenter, Enter to reset view",title:"Minimap · click to recenter · Enter to reset view",onClick:e=>{let t=e.currentTarget.getBoundingClientRect(),a=(e.clientX-t.left)/t.width,n=(e.clientY-t.top)/t.height;tj(e=>({...e,x:500-1e3*a*e.zoom,y:340-680*n*e.zoom}))},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),tX())},"data-topo-minimap":!0,children:(0,a.jsxs)("svg",{width:120,height:82,viewBox:"0 0 120 82",style:{display:"block"},children:[[...eR,...eO].map(e=>{let n=eH[e.alias];if(!n)return null;let s=(e.network_id?t[`${e.network_id}:${e.alias}`]:void 0)??t[e.alias],r="offline"!==e.status||!!s,o=$(e,r,eN);return(0,a.jsx)("circle",{cx:.12*n.x,cy:.12058823529411765*n.y,r:r?1.7:1.2,fill:o.primary,opacity:r?.9:.5,"data-topo-minimap-dot":e.alias,"data-topo-minimap-dot-online":r?"true":"false",style:{transition:"opacity 200ms ease-out, fill 200ms ease-out, r 200ms ease-out"}},e.alias)}),(0,a.jsx)("rect",{x:Math.max(0,e),y:Math.max(0,n),width:Math.max(0,Math.min(120-Math.max(0,e),s)),height:Math.max(0,Math.min(82-Math.max(0,n),r)),fill:"none",stroke:e$.legendAccent,strokeWidth:"1.5",opacity:"0.9","data-topo-minimap-viewport":!0,"data-topo-minimap-viewport-smooth":tH?"true":"false",style:{transition:tH?"x 280ms ease-out, y 280ms ease-out, width 280ms ease-out, height 280ms ease-out":"none"}})]})})})(),(0,a.jsxs)("div",{className:"absolute bottom-4 right-4 flex items-center gap-2 text-xs select-none","data-topo-chrome":!0,children:[(0,a.jsx)("div",{className:"flex items-center rounded-md border overflow-hidden",style:{background:e$.legendBox.fill,borderColor:e$.containerBorder,transition:"background-color 200ms ease-out, border-color 200ms ease-out"},role:"group","aria-label":"Node size","data-topo-chrome-fleet-group-trailer":!0,children:[["S",.7],["M",.84],["L",1]].map(([e,t],n)=>{let s=`size-${e}`;return(0,a.jsx)("button",{onClick:()=>{tT(s);if(t!==eD){eB(!0),setTimeout(()=>eB(!1),400),eI(t);try{localStorage.setItem("anet-topo-nodescale",String(t))}catch{}}},"aria-pressed":eD===t,"data-topo-chrome-nodesize":e,"data-topo-chrome-nodesize-active":eD===t?"true":"false","data-topo-chrome-nodesize-popping":tE===s?"true":"false",title:`Node size: ${"S"===e?"small":"M"===e?"medium":"large"}`,className:`px-2 py-1 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${n>0?"border-l":""} ${eD===t?"bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25":"hover:bg-cyan-500/5 active:bg-cyan-500/15"}${tE===s?" anet-chrome-pop":""}`,style:{color:eD===t?void 0:e$.legendText,borderColor:e$.containerBorder},children:e},e)})}),(0,a.jsxs)("div",{className:"ml-1.5 flex items-center rounded-md border overflow-hidden",style:{background:e$.legendBox.fill,borderColor:e$.containerBorder,transition:"background-color 200ms ease-out, border-color 200ms ease-out"},"data-topo-chrome-view-group-leader":!0,"data-topo-chrome-zoom-wrapper":!0,children:[(0,a.jsx)("button",{onClick:()=>{tT("zoom-out"),tO(1/1.2)},"data-topo-chrome-zoom-out":!0,"data-topo-chrome-zoom-out-popping":"zoom-out"===tE?"true":"false",className:"px-2 py-1 hover:bg-white/5 active:bg-white/10 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset",style:{color:e$.legendText},"aria-label":"Zoom out",title:"Zoom out (−)",children:(0,a.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round","aria-hidden":!0,className:"zoom-out"===tE?"anet-chrome-pop":void 0,"data-topo-chrome-zoom-out-icon":!0,children:(0,a.jsx)("path",{d:"M5 12h14"})})}),(0,a.jsxs)("span",{className:`px-2 py-1 tabular-nums font-medium border-x text-center${"zoom-in"===tE||"zoom-out"===tE?" anet-chrome-pop":""}`,"data-topo-chrome-zoom-level":!0,"data-topo-chrome-zoom-level-popping":"zoom-in"===tE||"zoom-out"===tE?"true":"false",style:{color:e$.legendText,borderColor:e$.containerBorder,minWidth:46,display:"inline-block",transition:"color 200ms ease-out, border-color 200ms ease-out"},title:"Current zoom level",children:[Math.round(100*tw.zoom),"%"]}),(0,a.jsx)("button",{onClick:()=>{tT("zoom-in"),tO(1.2)},"data-topo-chrome-zoom-in":!0,"data-topo-chrome-zoom-in-popping":"zoom-in"===tE?"true":"false",className:"px-2 py-1 hover:bg-white/5 active:bg-white/10 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset",style:{color:e$.legendText},"aria-label":"Zoom in",title:"Zoom in (+)",children:(0,a.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round","aria-hidden":!0,className:"zoom-in"===tE?"anet-chrome-pop":void 0,"data-topo-chrome-zoom-in-icon":!0,children:(0,a.jsx)("path",{d:"M12 5v14M5 12h14"})})})]}),(0,a.jsx)("button",{onClick:()=>{tC(!0),setTimeout(()=>tC(!1),460),tX()},"data-topo-chrome-reset":!0,"data-topo-chrome-reset-spinning":tM?"true":"false",className:"p-1.5 rounded-md border hover:bg-white/5 active:bg-white/10 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60",style:{background:e$.legendBox.fill,borderColor:e$.containerBorder,color:e$.legendText},"aria-label":"Reset view",title:"Reset zoom + pan (0, or double-click the canvas)",children:(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,className:tM?"anet-reset-spin":void 0,"data-topo-chrome-reset-icon":!0,children:[(0,a.jsx)("path",{d:"M3 12a9 9 0 1 0 9-9 9 9 0 0 0-6.4 2.6L3 8"}),(0,a.jsx)("path",{d:"M3 3v5h5"})]})}),(0,a.jsx)("button",{onClick:()=>{tT("fullscreen");let e=tv.current;if(e)if(document.fullscreenElement)document.exitFullscreen?.();else{let t=e.requestFullscreen||e.webkitRequestFullscreen;t?.call(e)}},"data-topo-chrome-fullscreen":!0,"data-topo-chrome-fullscreen-active":t$?"true":"false","data-topo-chrome-fullscreen-popping":"fullscreen"===tE?"true":"false",className:`p-1.5 rounded-md border transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 ${t$?"bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25":"hover:bg-cyan-500/5 active:bg-cyan-500/15"}${"fullscreen"===tE?" anet-chrome-pop":""}`,style:{borderColor:e$.containerBorder,...t$?{}:{background:e$.legendBox.fill,color:e$.legendText}},"aria-label":t$?"Exit fullscreen":"Enter fullscreen",title:t$?"Exit fullscreen":"Fullscreen",children:t$?(0,a.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,"data-topo-chrome-fullscreen-icon":"exit",children:(0,a.jsx)("path",{d:"M8 3v4a1 1 0 0 1-1 1H3M21 8h-4a1 1 0 0 1-1-1V3M3 16h4a1 1 0 0 1 1 1v4M16 21v-4a1 1 0 0 1 1-1h4"})}):(0,a.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,"data-topo-chrome-fullscreen-icon":"enter",children:(0,a.jsx)("path",{d:"M3 8V5a2 2 0 0 1 2-2h3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M21 16v3a2 2 0 0 1-2 2h-3"})})})]}),tA&&(0,a.jsx)(f,{alias:tA,onClose:()=>tF(null)})]})]})}let A={working:{bg:"bg-green-900/30 border-green-800/30",text:"text-green-300",dot:"bg-green-500",glow:"shadow-green-500/10"},idle:{bg:"bg-cyan-900/30 border-cyan-800/30",text:"text-cyan-300",dot:"bg-cyan-400",glow:"shadow-cyan-500/5"},blocked:{bg:"bg-yellow-900/30 border-yellow-800/30",text:"text-yellow-300",dot:"bg-yellow-500",glow:""},error:{bg:"bg-red-900/30 border-red-800/30",text:"text-red-300",dot:"bg-red-500",glow:""}},F={bg:"bg-gray-800/50 border-gray-700/30",text:"text-gray-500",dot:"bg-gray-500",glow:""};function L({session:e,hasSse:t,sseCount:n,onChat:o}){let l=t&&A[e.status]||F;return(0,a.jsxs)(s.default,{href:`/node?alias=${encodeURIComponent(e.alias)}`,prefetch:!1,className:`anet-agent-card group relative block rounded-xl border p-4 transition-all duration-300 cursor-pointer hover:-translate-y-0.5 ${t?`bg-[#111128] border-[#2a2a4a] hover:border-cyan-500/30 hover:shadow-lg ${l.glow}`:"bg-[#0d0d1a] border-[#1a1a2a] opacity-40"}`,children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,a.jsx)(u.AliasAvatar,{alias:e.alias,size:22}),(0,a.jsx)("span",{className:"font-semibold text-white truncate text-sm",title:e.alias,children:e.alias}),(0,a.jsx)("span",{className:`inline-block w-1.5 h-1.5 rounded-full shrink-0 ${l.dot} ${t&&"working"===e.status?"animate-pulse":""}`})]}),(0,a.jsx)("span",{className:`text-[11px] px-2 py-0.5 rounded-md border shrink-0 ${l.bg} ${l.text}`,children:t?e.status:"offline"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,a.jsx)("span",{className:"text-xs text-gray-600 bg-[#0a0a15] px-2 py-0.5 rounded border border-[#1a1a2a]",children:e.agent||"unknown"}),t&&(0,a.jsxs)("span",{className:"text-[10px] text-green-500",children:["SSE:",n]})]}),e.task?(0,a.jsx)("div",{className:"text-xs text-gray-400 bg-[#0a0a15] rounded-lg px-3 py-2 border border-[#1a1a2a] line-clamp-2",title:e.task,children:e.task}):(0,a.jsx)("div",{className:"text-xs text-gray-700 italic",children:"No active task"}),e.progress>0&&(0,a.jsxs)("div",{className:"mt-3",children:[(0,a.jsxs)("div",{className:"flex justify-between text-[10px] mb-1",children:[(0,a.jsx)("span",{className:"text-gray-600",children:"Progress"}),(0,a.jsxs)("span",{className:l.text,children:[e.progress,"%"]})]}),(0,a.jsx)("div",{className:"w-full bg-gray-800 rounded-full h-1.5 overflow-hidden",children:(0,a.jsx)("div",{className:`h-1.5 rounded-full transition-all duration-700 ${"working"===e.status?"bg-green-500":"bg-cyan-500"}`,style:{width:`${Math.min(e.progress,100)}%`}})})]}),(0,a.jsxs)("div",{className:"mt-3 flex justify-between items-center text-[10px] text-gray-600",children:[(0,a.jsx)("span",{className:"truncate",title:e.server||"",children:e.server||"--"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[o&&t&&(0,a.jsx)("button",{onClick:t=>{t.preventDefault(),t.stopPropagation(),o(e.alias)},className:"text-cyan-400 hover:text-cyan-300 px-1.5 py-0.5 rounded border border-cyan-500/20 hover:bg-cyan-500/10 transition-colors",children:"Chat"}),(0,a.jsx)("span",{children:(0,r.timeAgo)(e.updated_at)}),(0,a.jsx)("svg",{"aria-hidden":!0,className:"w-3 h-3 text-gray-700 opacity-0 -translate-x-1 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-200",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,a.jsx)("path",{d:"M9 18l6-6-6-6"})})]})]})]})}function P({messages:e}){return 0===e.length?null:(0,a.jsxs)("div",{className:"mt-8",children:[(0,a.jsxs)("h2",{className:"text-lg font-semibold text-white mb-3 flex items-center gap-2",children:[(0,a.jsx)("span",{className:"text-gray-500",children:"Inbox"}),(0,a.jsx)("span",{className:"text-xs bg-blue-900/30 text-blue-400 px-2 py-0.5 rounded-full border border-blue-800/30",children:e.length})]}),(0,a.jsx)("div",{className:"space-y-2 max-h-96 overflow-y-auto pr-1 scrollbar-thin",children:e.map(e=>(0,a.jsxs)("div",{className:"bg-[#111128] border border-[#2a2a4a] rounded-lg px-4 py-3 text-sm transition-colors hover:border-[#3a3a5a]",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs mb-1.5",children:[e.from_session&&(0,a.jsx)(u.AliasAvatar,{alias:e.from_session,size:16}),(0,a.jsx)("span",{className:"text-gray-200 font-medium truncate",children:e.from_session}),(0,a.jsx)("span",{className:"ml-auto text-gray-600 shrink-0",title:e.created_at,children:(0,r.timeAgo)(e.created_at)})]}),(0,a.jsx)("div",{className:"text-gray-300 leading-relaxed line-clamp-3",title:e.content||"",children:(0,r.previewContent)(e.content)})]},e.id))})]})}function D(){return(0,a.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,a.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3 mb-8 anet-skeleton-pulse",children:[1,2,3,4].map(e=>(0,a.jsxs)("div",{className:"rounded-xl border border-[#2a2a4a] bg-[#111128] px-4 py-3",children:[(0,a.jsx)(I,{w:"2.5rem",h:"1.75rem"}),(0,a.jsx)(I,{w:"3.5rem",h:"0.75rem",className:"mt-2"}),(0,a.jsx)(I,{w:"5rem",h:"0.625rem",className:"mt-1"})]},e))}),(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-3 anet-skeleton-pulse",children:[(0,a.jsx)(I,{w:"6rem",h:"2.5rem",rounded:"0.75rem"}),(0,a.jsxs)("div",{className:"flex-1 rounded-lg border border-[#2a2a4a] bg-[#111128] px-4 py-2.5 flex items-center gap-3",children:[(0,a.jsx)("div",{className:"w-8 h-8 rounded-full anet-skeleton-bar"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)(I,{w:"6rem",h:"0.875rem"}),(0,a.jsx)(I,{w:"10rem",h:"0.625rem",className:"mt-1"})]})]})]}),(0,a.jsx)("div",{className:"mb-6 rounded-lg border border-[#2a2a4a] bg-[#111128] px-4 py-3 anet-skeleton-pulse",children:(0,a.jsx)(I,{w:"14rem",h:"0.875rem"})}),(0,a.jsx)("div",{className:"grid grid-cols-3 gap-2 sm:gap-3 mb-3 anet-skeleton-pulse",children:[1,2,3].map(e=>(0,a.jsxs)("div",{className:"rounded-xl border border-[#2a2a4a] bg-[#111128] px-3 py-3",children:[(0,a.jsx)(I,{w:"2rem",h:"1.25rem"}),(0,a.jsx)(I,{w:"2.5rem",h:"0.75rem",className:"mt-1"}),(0,a.jsx)(I,{w:"3.5rem",h:"0.625rem",className:"mt-px"})]},e))}),(0,a.jsx)("div",{className:"grid grid-cols-3 gap-2 sm:gap-3 mb-6 anet-skeleton-pulse",children:[1,2,3].map(e=>(0,a.jsxs)("div",{className:"rounded-xl border border-[#2a2a4a] bg-[#111128] px-3 py-2.5 flex items-center justify-center gap-2",children:[(0,a.jsx)("div",{className:"w-4 h-4 rounded anet-skeleton-bar"}),(0,a.jsx)(I,{w:"4rem",h:"0.75rem"})]},e))}),(0,a.jsxs)("div",{className:"mb-6 flex gap-2 anet-skeleton-pulse",children:[(0,a.jsx)("div",{className:"flex-1 h-10 rounded-lg border border-[#2a2a4a] bg-[#111128]"}),(0,a.jsx)("div",{className:"w-28 h-10 rounded-lg anet-skeleton-bar"})]}),(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4 gap-3 sm:gap-4 anet-skeleton-pulse",children:[1,2,3,4].map(e=>(0,a.jsxs)("div",{className:"rounded-xl border border-[#2a2a4a] bg-[#111128] p-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,a.jsx)("div",{className:"w-2 h-2 rounded-full anet-skeleton-bar"}),(0,a.jsx)(I,{w:"6rem",h:"0.875rem"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(I,{w:"100%",h:"0.625rem"}),(0,a.jsx)(I,{w:"75%",h:"0.625rem"}),(0,a.jsx)(I,{w:"55%",h:"0.625rem"})]})]},e))})]})}function I({w:e,h:t,rounded:n,className:s}){return(0,a.jsx)("div",{className:`anet-skeleton-bar ${s||""}`,style:{width:e,height:t,borderRadius:n||"0.375rem"}})}var W=e.i(76161),B=e.i(98025),R=e.i(11449);function O(){let{setNetworkId:e}=(0,R.useNetworkId)(),[t,s]=(0,n.useState)({user:null,networks:[],currentNetwork:"",token:""}),[r,o]=(0,n.useState)(!1),[l,i]=(0,n.useState)(""),[d,c]=(0,n.useState)(""),[u,h]=(0,n.useState)(""),[p,m]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let e=sessionStorage.getItem("anet_v3_auth");if(e)try{s(JSON.parse(e))}catch{}},[]);let[f,x]=(0,n.useState)(!1),[g,y]=(0,n.useState)(""),[b,v]=(0,n.useState)(""),k=async()=>{try{await fetch(`/api/hub/auth?token=${t.token}&endpoint=/api/auth/me`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"update_profile",token:t.token,display_name:g,email:b})});let e=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"update_profile",token:t.token,display_name:g,email:b})}),a=await e.json();if(a.ok&&a.user){let e={...t,user:a.user};s(e),sessionStorage.setItem("anet_v3_auth",JSON.stringify(e)),x(!1)}}catch{}};if(!t.user)return null;let w=(t.user.display_name||t.user.username).slice(0,2).toUpperCase();return(0,a.jsxs)("div",{className:"flex items-center justify-between bg-[#111128] border border-[#2a2a4a] rounded-lg px-4 py-2.5 mb-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"w-8 h-8 rounded-full bg-gradient-to-br from-cyan-500 to-blue-600 flex items-center justify-center text-xs font-bold text-white",children:w}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-sm text-white font-medium",children:t.user.display_name||t.user.username}),(0,a.jsxs)("div",{className:"text-[10px] text-gray-500",children:[t.user.role," · ",t.user.user_id]})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[t.networks.length>0&&(0,a.jsx)("select",{value:t.currentNetwork,onChange:a=>{let n={...t,currentNetwork:a.target.value};s(n),e(a.target.value),sessionStorage.setItem("anet_v3_auth",JSON.stringify(n))},className:"bg-[#0a0a15] border border-[#2a2a4a] rounded px-2 py-1 text-xs text-white focus:outline-none",children:t.networks.map(e=>(0,a.jsx)("option",{value:e.network_id,children:e.network_name},e.network_id))}),(0,a.jsxs)("button",{onClick:()=>{y(t.user?.display_name||""),v(""),x(!f)},className:"text-xs text-gray-500 hover:text-gray-300 whitespace-nowrap","aria-label":"Edit profile",children:[(0,a.jsx)("span",{className:"hidden sm:inline",children:"Edit"}),(0,a.jsx)("svg",{className:"sm:hidden w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"1.5",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 011.13-1.897L16.862 4.487z"})})]}),(0,a.jsxs)("button",{onClick:()=>{s({user:null,networks:[],currentNetwork:"",token:""}),sessionStorage.removeItem("anet_v3_auth")},className:"text-xs text-gray-500 hover:text-gray-300 whitespace-nowrap","aria-label":"Sign out",children:[(0,a.jsx)("span",{className:"hidden sm:inline",children:"Sign out"}),(0,a.jsx)("svg",{className:"sm:hidden w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"1.5",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15m3 0l3-3m0 0l-3-3m3 3H9"})})]})]}),f&&(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mt-2 pt-2 border-t border-[#2a2a4a]",children:[(0,a.jsx)("input",{type:"text",value:g,onChange:e=>y(e.target.value),placeholder:"Display name",className:"bg-[#0a0a15] border border-[#2a2a4a] rounded px-2 py-1 text-xs text-white placeholder-gray-600 focus:outline-none w-32"}),(0,a.jsx)("input",{type:"email",value:b,onChange:e=>v(e.target.value),placeholder:"Email",className:"bg-[#0a0a15] border border-[#2a2a4a] rounded px-2 py-1 text-xs text-white placeholder-gray-600 focus:outline-none w-40"}),(0,a.jsx)("button",{onClick:k,className:"px-2 py-1 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded",children:"Save"})]})]})}var H=e.i(6694);function Y({tabs:e,activeTab:t,onOpenTab:n,onCloseTab:s,onSetActive:r,onClose:o}){return 0===e.length?null:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{onClick:o,className:"jsx-f7cf3d1a6fdfc074 fixed inset-0 bg-black/30 z-40 lg:hidden"}),(0,a.jsxs)("div",{className:"jsx-f7cf3d1a6fdfc074 fixed top-0 right-0 h-full w-full lg:w-[500px] bg-[#0a0a1a] border-l border-[#2a2a4a] z-50 flex flex-col shadow-2xl shadow-black/60 animate-slide-in",children:[(0,a.jsxs)("div",{className:"jsx-f7cf3d1a6fdfc074 flex items-center border-b border-[#2a2a4a] bg-[#0d0d1a] overflow-x-auto",children:[(0,a.jsx)("div",{className:"jsx-f7cf3d1a6fdfc074 flex-1 flex min-w-0",children:e.map(e=>(0,a.jsxs)("button",{onClick:()=>r(e),className:`jsx-f7cf3d1a6fdfc074 flex items-center gap-1.5 px-3 py-2.5 text-xs border-b-2 transition-colors shrink-0 ${t===e?"border-cyan-400 text-cyan-300 bg-cyan-500/5":"border-transparent text-gray-500 hover:text-gray-300"}`,children:[(0,a.jsx)("div",{className:`jsx-f7cf3d1a6fdfc074 w-2 h-2 rounded-full ${t===e?"bg-cyan-400":"bg-gray-600"}`}),(0,a.jsx)("span",{className:"jsx-f7cf3d1a6fdfc074 max-w-[80px] truncate",children:e}),(0,a.jsx)("button",{onClick:t=>{t.stopPropagation(),s(e)},className:"jsx-f7cf3d1a6fdfc074 ml-1 text-gray-600 hover:text-gray-300 p-0.5",children:"×"})]},e))}),(0,a.jsx)("button",{onClick:o,className:"jsx-f7cf3d1a6fdfc074 text-gray-500 hover:text-white px-3 py-2.5 shrink-0 border-l border-[#2a2a4a]",children:(0,a.jsx)("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,className:"jsx-f7cf3d1a6fdfc074 w-4 h-4",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12",className:"jsx-f7cf3d1a6fdfc074"})})})]}),(0,a.jsx)("div",{className:"jsx-f7cf3d1a6fdfc074 flex-1 relative overflow-hidden",children:e.map(e=>(0,a.jsx)("div",{className:`jsx-f7cf3d1a6fdfc074 absolute inset-0 ${t===e?"block":"hidden"}`,children:(0,a.jsx)(X,{alias:e})},e))})]}),(0,a.jsx)(H.default,{id:"f7cf3d1a6fdfc074",children:"@keyframes slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.animate-slide-in{animation:.2s ease-out slide-in}"})]})}function X({alias:e}){return(0,a.jsx)(h.TaskChatPanel,{alias:e,onClose:()=>{},inline:!0})}function K({sessions:e,onClose:t}){let[s,r]=(0,n.useState)(new Set),[o,l]=(0,n.useState)(""),[i,d]=(0,n.useState)("normal"),[c,h]=(0,n.useState)(!1),[p,m]=(0,n.useState)([]),[f,x]=(0,n.useState)(""),g=e.filter(e=>"offline"!==e.status).filter(e=>!f||e.alias.toLowerCase().includes(f.toLowerCase())||(e.agent||"").toLowerCase().includes(f.toLowerCase())),y=async()=>{if(!o.trim()||0===s.size||c)return;h(!0),m([]);let e=[...s].map(async e=>{try{let t=await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:e,task:o,priority:i})}),a=await t.json();return{alias:e,ok:!!a.ok,error:a.error}}catch(t){return{alias:e,ok:!1,error:"send failed"}}});m(await Promise.all(e)),h(!1)},b=p.filter(e=>e.ok).length;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fixed inset-0 bg-black/50 z-40 anet-fade-in",onClick:t}),(0,a.jsxs)("div",{className:"fixed inset-4 lg:inset-x-[15%] lg:inset-y-[5%] bg-[#0a0a1a] border border-[#2a2a4a] rounded-2xl z-50 flex flex-col shadow-2xl shadow-black/70 overflow-hidden anet-fade-in",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-[#2a2a4a] bg-[#0d0d1a]",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-lg font-bold text-white",children:"Dispatch Task"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 mt-0.5",children:"Send a task to one or more agents"})]}),(0,a.jsx)("button",{onClick:t,className:"text-gray-500 hover:text-white p-1.5 rounded-lg hover:bg-[#1a1a2a]",children:(0,a.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),(0,a.jsxs)("div",{className:"flex-1 flex flex-col lg:flex-row overflow-hidden",children:[(0,a.jsxs)("div",{className:"lg:w-[280px] border-b lg:border-b-0 lg:border-r border-[#2a2a4a] flex flex-col",children:[(0,a.jsxs)("div",{className:"px-4 py-3 border-b border-[#2a2a4a]",children:[(0,a.jsx)("input",{type:"text",value:f,onChange:e=>x(e.target.value),placeholder:"Filter agents...",className:"w-full bg-[#111128] border border-[#2a2a4a] rounded-lg px-3 py-2 text-xs text-white placeholder-gray-600 focus:border-cyan-500/40 focus:outline-none"}),(0,a.jsxs)("div",{className:"flex items-center justify-between mt-2",children:[(0,a.jsx)("button",{onClick:()=>{s.size===g.length?r(new Set):r(new Set(g.map(e=>e.alias)))},className:"text-[10px] text-cyan-400 hover:text-cyan-300",children:s.size===g.length?"Deselect all":`Select all (${g.length})`}),(0,a.jsxs)("span",{className:"text-[10px] text-gray-600",children:[s.size," selected"]})]})]}),(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto px-2 py-2 space-y-0.5 max-h-[200px] lg:max-h-none",children:[g.map(e=>(0,a.jsxs)("button",{onClick:()=>{var t;return t=e.alias,void r(e=>{let a=new Set(e);return a.has(t)?a.delete(t):a.add(t),a})},className:`w-full flex items-center gap-2 px-3 py-2 rounded-lg text-xs text-left transition-colors ${s.has(e.alias)?"bg-cyan-500/10 text-cyan-300 border border-cyan-500/20":"text-gray-400 hover:bg-[#1a1a2a]"}`,children:[(0,a.jsx)(u.AliasAvatar,{alias:e.alias,size:16}),(0,a.jsx)("div",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${"working"===e.status?"bg-green-400":"idle"===e.status?"bg-cyan-400":"bg-gray-500"}`}),(0,a.jsx)("span",{className:"truncate flex-1",children:e.alias}),(0,a.jsx)("span",{className:"text-[9px] text-gray-600",children:e.agent||"--"})]},e.alias)),0===g.length&&(0,a.jsx)("div",{className:"text-center text-xs text-gray-600 py-4",children:"No online agents"})]})]}),(0,a.jsxs)("div",{className:"flex-1 flex flex-col",children:[(0,a.jsxs)("div",{className:"flex-1 px-6 py-4 flex flex-col",children:[(0,a.jsx)("label",{className:"text-xs text-gray-500 uppercase mb-2",children:"Task Prompt"}),(0,a.jsx)("textarea",{value:o,onChange:e=>l(e.target.value),placeholder:"Enter the task you want to dispatch...",className:"flex-1 min-h-[120px] bg-[#111128] border border-[#2a2a4a] rounded-xl px-4 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/40 focus:outline-none resize-none"}),(0,a.jsxs)("div",{className:"flex items-center gap-3 mt-4",children:[(0,a.jsxs)("select",{value:i,onChange:e=>d(e.target.value),className:"bg-[#111128] border border-[#2a2a4a] rounded-lg px-3 py-2 text-xs text-white focus:outline-none",children:[(0,a.jsx)("option",{value:"normal",children:"Normal priority"}),(0,a.jsx)("option",{value:"high",children:"High priority"}),(0,a.jsx)("option",{value:"low",children:"Low priority"})]}),(0,a.jsx)("div",{className:"flex-1"}),(0,a.jsx)("button",{onClick:y,disabled:c||!o.trim()||0===s.size,className:"px-6 py-2.5 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-xl transition-all shadow-lg shadow-cyan-500/10 disabled:shadow-none active:scale-95",children:c?(0,a.jsxs)("span",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin"}),"Sending..."]}):`Dispatch to ${s.size} agent${s.size>1?"s":""}`})]})]}),p.length>0&&(0,a.jsxs)("div",{className:"px-6 py-3 border-t border-[#2a2a4a] bg-[#0d0d1a]",children:[(0,a.jsxs)("div",{className:"text-xs text-gray-500 mb-2",children:[b,"/",p.length," dispatched successfully"]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:p.map(e=>(0,a.jsxs)("span",{className:`flex items-center gap-1.5 text-[10px] pl-1 pr-2 py-0.5 rounded-full border ${e.ok?"text-green-300 border-green-500/20 bg-green-500/5":"text-red-300 border-red-500/20 bg-red-500/5"}`,children:[(0,a.jsx)(u.AliasAvatar,{alias:e.alias,size:14}),(0,a.jsx)("span",{children:e.alias}),(0,a.jsx)("span",{"aria-hidden":!0,children:e.ok?"✓":e.error||"✗"})]},e.alias))})]})]})]})]})]})}var V=e.i(2684),U=e.i(50111);e.s(["default",0,function(){let e,l,d,c,h;(0,n.useEffect)(()=>{sessionStorage.getItem("anet_v3_auth")||(fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login"))},[]);let{sessions:m,hint:f,error:x,isLoading:g}=(0,p.useSessions)(),{health:y}=(0,p.useHealth)(),{config:b}=(0,p.useAnetConfig)(),{tasks:v}=(0,p.useTasks)({limit:"500"}),{stats:k}=(0,p.useStats)(),[w,j]=(0,n.useState)(window.innerWidth>=1024),[N,S]=(0,n.useState)(!1),$=function(){let[e,t]=(0,n.useState)([]),[a,s]=(0,n.useState)("");return{tabs:e,activeTab:a,openTab:e=>{t(t=>t.includes(e)?t:[...t,e]),s(e)},closeTab:e=>{t(t=>{let n=t.filter(t=>t!==e);return a===e&&s(n[n.length-1]||""),n})},closeAll:()=>{t([]),s("")},setActiveTab:s}}(),[_,M]=(0,n.useState)(!1),[C,E]=(0,n.useState)([]),[z,A]=(0,n.useState)("all"),[F,I]=(0,n.useState)(null),{mutate:R}=(0,U.useSWRConfig)(),H="1"!==t.default.env.NEXT_PUBLIC_DISABLE_SSE,{connected:X,supported:G}=(0,V.useSSE)({url:"/api/hub/events",enabled:H,onEvent:e=>{if("node.renamed"===e.type){R("/api/hub/status");let t=e.data;t?.old_alias&&t?.new_alias&&I({from:t.old_alias,to:t.new_alias,ts:Date.now()});return}["new_task","new_message","new_reply","node_status_changed","broadcast"].includes(e.type)&&(R("/api/hub/status"),R(e=>"string"==typeof e&&e.startsWith("/api/hub/tasks"),void 0,{revalidate:!0}))}});if((0,n.useEffect)(()=>{let e=()=>{fetch("/api/hub/inbox").then(e=>e.json()).then(e=>{e.messages?.length&&E(t=>{let a=new Set(t.map(e=>e.id));return[...e.messages.filter(e=>!a.has(e.id)),...t].slice(0,100)})}).catch(()=>{})};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[]),g)return(0,a.jsx)(D,{});let J=y?.sse_sessions||{},q=e=>(e.network_id?J[`${e.network_id}:${e.alias}`]:void 0)??J[e.alias],Z=e=>"offline"!==e.status||!!q(e),Q=m.filter(Z).length,ee=m.length,et=m.filter(e=>"working"===e.status).length,ea=y?(0,r.formatUptime)(y.uptime):"--",en=y?.version||"--",es=!!(b?.hub&&b.tokenConfigured),er=b?.source==="file"?"Local config":b?.source==="runtime-env"?"Runtime env":"Config missing",eo={};if(k?.tasks?.by_status?.length)for(let e of k.tasks.by_status)eo[e.status]=e.count;else for(let e of v)eo[e.status]=(eo[e.status]||0)+1;let el=[...m].sort((e,t)=>{let a=+!!Z(e),n=+!!Z(t);if(a!==n)return n-a;let s=+("working"===e.status);return("working"===t.status)-s}),ei=0===m.length&&!x;return(0,a.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,a.jsx)("div",{className:"lg:ml-0 ml-10",children:(0,a.jsx)(o,{online:Q,working:et,total:ee,version:en,uptime:ea})}),(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[!ei&&(0,a.jsx)("button",{onClick:()=>M(!0),className:"px-4 py-2 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 text-white text-sm font-medium rounded-xl shadow-lg shadow-cyan-500/10 transition-all active:scale-95 shrink-0",children:"⚡ Dispatch"}),(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)(O,{})})]}),(0,a.jsxs)("section",{className:"mb-6 rounded-lg border border-[#2a2a4a] bg-[#111128] px-4 py-3 shadow-lg shadow-black/20",children:[(0,a.jsxs)("button",{onClick:()=>S(!N),className:"w-full flex items-center justify-between text-left",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,a.jsx)("span",{className:"uppercase text-gray-600",children:"Config"}),(0,a.jsx)("span",{className:`w-2 h-2 rounded-full ${es?"bg-green-400":"bg-red-400"}`}),(0,a.jsx)("span",{className:"text-gray-500",children:er})]}),(0,a.jsx)("svg",{className:`w-4 h-4 text-gray-600 transition-transform ${N?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),N&&(0,a.jsxs)("div",{className:"mt-3 pt-3 border-t border-[#2a2a4a]",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsx)("div",{className:"min-w-0",children:(0,a.jsxs)("div",{className:"text-gray-100 truncate text-sm",title:b?.hub||void 0,children:["Hub: ",(0,a.jsx)("span",{className:b?.hub?"text-cyan-300":"text-red-300",children:b?.hub?.trim()||"not configured"})]})}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 text-xs",children:(0,a.jsxs)("span",{className:`px-2.5 py-1 rounded-md border ${b?.tokenConfigured?"bg-blue-500/5 text-blue-300 border-blue-500/20":"bg-gray-500/5 text-gray-400 border-gray-500/20"}`,children:["Token: ",b?.tokenPreview||"not configured"]})})]}),b?.error&&(0,a.jsx)("div",{className:"mt-2 text-xs text-gray-600",children:b.error})]})]}),Object.keys(eo).length>0&&(0,a.jsxs)("section",{className:"mb-6 rounded-lg border border-[#2a2a4a] bg-[#111128] px-4 py-3 shadow-lg shadow-black/20",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,a.jsx)("div",{className:"text-xs uppercase text-gray-600",children:"Task Status"}),(0,a.jsx)(s.default,{href:"/tasks",prefetch:!1,className:"text-xs text-cyan-400 hover:text-cyan-300",children:"View all →"})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:["running","delivered","acked","replied","created","failed","cancelled","expired","closed"].filter(e=>eo[e]).map(e=>(0,a.jsxs)(s.default,{href:`/tasks?status=${e}`,prefetch:!1,className:`px-2.5 py-1 rounded-md border text-xs ${B.STATUS_CHIP_CLASS[e]} hover:opacity-80 transition-opacity`,children:[e,": ",eo[e]]},e))})]}),!ei&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"text-[10px] uppercase tracking-[0.12em] text-gray-600 mb-2",children:"Quick navigation"}),(0,a.jsx)("section",{className:"mb-3 grid grid-cols-3 gap-2 sm:gap-3",children:(e=m.filter(e=>Z(e)&&"working"!==e.status).length,l=ee-Q,d=v.filter(e=>"failed"===e.status).length,[{href:"/nodes",label:"Nodes",value:`${Q}/${ee}`,sub:`${ee>0?Math.round(Q/ee*100):0}% online`,color:"text-green-400 border-green-500/20",popover:0===ee?null:[{k:"working",v:et,dot:"",color:"#4ade80"},{k:"idle",v:e,dot:"",color:"#22d3ee"},{k:"offline",v:l,dot:"",color:"#9ca3af"}]},{href:"/tasks",label:"Tasks",value:String(Object.values(eo).reduce((e,t)=>e+t,0)||0),sub:"all-time",color:"text-cyan-400 border-cyan-500/20",popover:0===Object.keys(eo).length?null:["running","replied","failed","cancelled","expired","closed","created","delivered","acked"].filter(e=>eo[e]).map(e=>({k:e,v:eo[e],dot:"",color:({running:"#4ade80",replied:"#a78bfa",failed:"#f87171",cancelled:"#facc15",expired:"#fb923c",closed:"#9ca3af",created:"#9ca3af",delivered:"#60a5fa",acked:"#22d3ee"})[e]||"#9ca3af"}))},{href:"/tasks?status=failed",label:"Failed",value:String(eo.failed||0),sub:eo.failed?"needs review":"none",color:eo.failed?"text-red-400 border-red-500/25":"text-gray-500 border-gray-700/30",popover:d?[{k:`${d} in current view`,v:"",dot:"",color:"#f87171"}]:[{k:"no failures yet",v:"",dot:"",color:"#4b5563"}]}].map(e=>(0,a.jsxs)(s.default,{href:e.href,prefetch:!1,className:`anet-stat-link group relative rounded-xl border ${e.color} bg-[#111128] px-3 py-3 transition-all hover:-translate-y-px`,children:[(0,a.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,a.jsx)("div",{className:`text-xl font-semibold tabular-nums ${e.color.split(" ")[0]}`,children:e.value}),(0,a.jsx)("div",{className:"hidden sm:block text-[10px] text-gray-600 group-hover:text-gray-400 transition-colors",children:"View →"})]}),(0,a.jsx)("div",{className:"text-[11px] text-gray-400 mt-0.5",children:e.label}),(0,a.jsx)("div",{className:"text-[10px] text-gray-600 mt-px",children:e.sub}),e.popover&&e.popover.length>0&&(0,a.jsxs)("div",{className:"anet-stat-popover hidden md:block pointer-events-none absolute left-2 right-2 top-full mt-1 z-20 rounded-lg border border-[#2a2a4a] bg-[#0d0d1a] shadow-lg shadow-black/30 px-3 py-2 opacity-0 translate-y-[-2px] group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-150 delay-100",children:[(0,a.jsx)("div",{className:"text-[10px] text-gray-600 uppercase tracking-wider mb-1.5",children:"Breakdown"}),(0,a.jsx)("ul",{className:"space-y-1",children:e.popover.map(e=>(0,a.jsxs)("li",{className:"flex items-center gap-2 text-[11px]",children:[(0,a.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full shrink-0",style:{backgroundColor:e.color},"aria-hidden":!0}),(0,a.jsx)("span",{className:"text-gray-400 capitalize",children:e.k}),""!==e.v&&(0,a.jsx)("span",{className:"ml-auto text-gray-300 tabular-nums font-medium",children:e.v})]},e.k))})]})]},e.href)))}),(0,a.jsx)("section",{className:"mb-6 grid grid-cols-3 gap-2 sm:gap-3",children:[{href:"/messages",label:"Messages",icon:"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"},{href:"/logs",label:"Audit log",icon:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z M14 2v6h6 M16 13H8 M16 17H8 M10 9H8"},{href:"/admin",label:"Admin",icon:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4z M6 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2"}].map(e=>(0,a.jsxs)(s.default,{href:e.href,prefetch:!1,className:"anet-nav-tile flex items-center justify-center gap-2 rounded-xl border border-[#2a2a4a] bg-[#111128] px-3 py-2.5 text-[12px] text-gray-400 hover:text-gray-200 transition-colors",children:[(0,a.jsx)("svg",{className:"w-4 h-4 shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,a.jsx)("path",{d:e.icon})}),(0,a.jsx)("span",{children:e.label})]},e.href))}),(0,a.jsx)(i,{}),v.length>0&&(0,a.jsxs)("section",{className:"mb-6 bg-[#111128] border border-[#2a2a4a] rounded-xl p-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,a.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Recent Activity"}),(0,a.jsx)(s.default,{href:"/tasks",className:"text-xs text-cyan-400 hover:text-cyan-300",children:"All tasks →"})]}),(0,a.jsx)("div",{className:"space-y-2 max-h-40 overflow-y-auto",children:v.slice(0,5).map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 rounded-full shrink-0",style:{backgroundColor:B.STATUS_DOT_HEX[e.status]||"#6b7280"}}),e.from_name&&(0,a.jsx)(u.AliasAvatar,{alias:e.from_name,size:14}),(0,a.jsx)("span",{className:"text-gray-300 shrink-0 max-w-[20%] truncate",children:e.from_name||"?"}),(0,a.jsx)("span",{className:"text-gray-600",children:"→"}),e.to_name&&(0,a.jsx)(u.AliasAvatar,{alias:e.to_name,size:14}),(0,a.jsx)("span",{className:"text-gray-300 shrink-0 max-w-[20%] truncate",children:e.to_name||"?"}),(0,a.jsx)("span",{className:"text-gray-500 truncate flex-1",title:e.content||"",children:(0,r.previewContent)(e.content).slice(0,60)}),(0,a.jsx)("span",{className:`shrink-0 px-1.5 py-0.5 rounded text-[10px] border ${B.STATUS_CHIP_CLASS[e.status]||"text-gray-500 border-gray-700/30"}`,children:e.status})]},e.task_id))})]})]}),x&&(0,a.jsxs)("div",{className:"bg-red-900/20 border border-red-800/40 text-red-300 px-4 py-3 rounded-lg mb-6 text-sm flex items-center justify-between",role:"alert",children:[(0,a.jsx)("span",{children:String(x)}),(0,a.jsx)("span",{className:"text-gray-500 text-xs",children:"Check CommHub connection"})]}),m.length>0&&(0,a.jsx)("div",{className:"flex justify-center mb-4",children:(0,a.jsx)("button",{onClick:()=>j(!w),className:"text-xs text-gray-500 hover:text-gray-300 border border-gray-700/50 px-4 py-1.5 rounded-lg transition-colors hover:border-gray-600 cursor-pointer",children:w?"Hide Topology":"Show Topology"})}),!w&&m.length>0&&(0,a.jsx)("div",{className:"lg:hidden text-center text-xs text-gray-600 mb-4",children:"Topology hidden on mobile for better readability"}),w&&m.length>0&&(0,a.jsx)(T,{sessions:m,sseSessions:J,renameSignal:F}),0!==m.length||x?(c={all:el.length,working:el.filter(e=>Z(e)&&"working"===e.status).length,idle:el.filter(e=>Z(e)&&"working"!==e.status).length,offline:el.filter(e=>!Z(e)).length},h=el.filter(e=>"all"===z||("offline"===z?!Z(e):"working"===z?Z(e)&&"working"===e.status:"idle"!==z||Z(e)&&"working"!==e.status)),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"mb-3 flex flex-wrap items-center gap-1",children:[{key:"all",label:"All"},{key:"working",label:"Working",dot:"#4ade80"},{key:"idle",label:"Idle",dot:"#22d3ee"},{key:"offline",label:"Offline",dot:"#6b7280"}].map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>A(e.key),disabled:0===c[e.key]&&"all"!==e.key,className:`flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs transition-colors disabled:opacity-30 disabled:cursor-not-allowed ${z===e.key?"bg-cyan-500/10 text-cyan-300 border border-cyan-500/30":"text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] border border-transparent"}`,children:[e.dot&&(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block w-1.5 h-1.5 rounded-full",style:{backgroundColor:e.dot}}),(0,a.jsx)("span",{children:e.label}),(0,a.jsx)("span",{className:`text-[10px] tabular-nums ${z===e.key?"text-cyan-400":"text-gray-600"}`,children:c[e.key]})]},e.key))}),(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-3 sm:gap-4",children:h.map(e=>(0,a.jsx)(L,{session:e,hasSse:Z(e),sseCount:q(e)||0,onChat:$.openTab},e.alias))}),0===h.length&&(0,a.jsxs)("div",{className:"mt-4 text-center text-xs text-gray-600",children:['No agents match "',z,'" — ',(0,a.jsx)("button",{onClick:()=>A("all"),className:"underline hover:text-gray-400",children:"Show all"})]})]})):(0,a.jsx)(W.NodesEmptyState,{hint:f,taskHistoryCount:Object.values(eo).reduce((e,t)=>e+t,0)}),(0,a.jsx)(P,{messages:C}),(0,a.jsx)("div",{className:"mt-8 text-center text-xs text-gray-600 flex items-center justify-center gap-2 flex-wrap",children:G&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${X?"bg-green-400":"bg-gray-600"}`}),X?"SSE live":"SWR polling"]})}),_&&(0,a.jsx)(K,{sessions:m,onClose:()=>M(!1)}),$.tabs.length>0&&(0,a.jsx)(Y,{tabs:$.tabs,activeTab:$.activeTab,onOpenTab:$.openTab,onCloseTab:$.closeTab,onSetActive:$.setActiveTab,onClose:$.closeAll})]})}],18722)}]);