@sleep2agi/agent-network-dashboard 0.4.6-preview.1 → 0.4.6-preview.100

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 (899) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/build/chunks/{node_modules_13sb.px._.js → 00jm_02mlcew._.js} +167 -167
  4. package/.next/build/chunks/00jm_02mlcew._.js.map +47 -0
  5. package/.next/build/chunks/{[root-of-the-server]__0ubbtyl._.js → [root-of-the-server]__0tgc-8p._.js} +3 -3
  6. package/.next/build/chunks/{[root-of-the-server]__0d-m0h0._.js → [root-of-the-server]__13z64y.._.js} +7 -7
  7. package/.next/build/chunks/{[root-of-the-server]__0d-m0h0._.js.map → [root-of-the-server]__13z64y.._.js.map} +2 -2
  8. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0r4x5ys._.js +13 -0
  9. package/.next/build/chunks/[turbopack]_runtime.js +1 -1
  10. package/.next/build/postcss.js +4 -4
  11. package/.next/build-manifest.json +8 -8
  12. package/.next/diagnostics/route-bundle-stats.json +157 -143
  13. package/.next/fallback-build-manifest.json +3 -3
  14. package/.next/next-minimal-server.js.nft.json +1 -1
  15. package/.next/next-server.js.nft.json +1 -1
  16. package/.next/prerender-manifest.json +3 -3
  17. package/.next/required-server-files.js +4 -4
  18. package/.next/required-server-files.json +4 -4
  19. package/.next/routes-manifest.json +6 -0
  20. package/.next/server/app/_global-error/page/build-manifest.json +5 -5
  21. package/.next/server/app/_global-error/page.js +9 -9
  22. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  23. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/_global-error.html +1 -1
  25. package/.next/server/app/_global-error.rsc +8 -8
  26. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  27. package/.next/server/app/_global-error.segments/_full.segment.rsc +8 -8
  28. package/.next/server/app/_global-error.segments/_head.segment.rsc +4 -4
  29. package/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  30. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  31. package/.next/server/app/_not-found/page/build-manifest.json +5 -5
  32. package/.next/server/app/_not-found/page/next-font-manifest.json +1 -1
  33. package/.next/server/app/_not-found/page.js +12 -12
  34. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  35. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/_not-found.html +2 -2
  37. package/.next/server/app/_not-found.rsc +12 -12
  38. package/.next/server/app/_not-found.segments/_full.segment.rsc +12 -12
  39. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  40. package/.next/server/app/_not-found.segments/_index.segment.rsc +7 -7
  41. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  42. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  43. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/admin/page/build-manifest.json +5 -5
  45. package/.next/server/app/admin/page/next-font-manifest.json +1 -1
  46. package/.next/server/app/admin/page.js +13 -13
  47. package/.next/server/app/admin/page.js.nft.json +1 -1
  48. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/admin.html +2 -2
  50. package/.next/server/app/admin.rsc +14 -14
  51. package/.next/server/app/admin.segments/_full.segment.rsc +14 -14
  52. package/.next/server/app/admin.segments/_head.segment.rsc +4 -4
  53. package/.next/server/app/admin.segments/_index.segment.rsc +7 -7
  54. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  55. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +4 -4
  56. package/.next/server/app/admin.segments/admin.segment.rsc +3 -3
  57. package/.next/server/app/api/anet/config/route.js +6 -6
  58. package/.next/server/app/api/anet/config/route.js.nft.json +1 -1
  59. package/.next/server/app/api/auth/login/route.js +7 -7
  60. package/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  61. package/.next/server/app/api/auth/logout/route.js +7 -7
  62. package/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  63. package/.next/server/app/api/auth/v3/route.js +7 -7
  64. package/.next/server/app/api/auth/v3/route.js.nft.json +1 -1
  65. package/.next/server/app/api/hub/audit-log/route.js +6 -6
  66. package/.next/server/app/api/hub/audit-log/route.js.nft.json +1 -1
  67. package/.next/server/app/api/hub/auth/route.js +7 -7
  68. package/.next/server/app/api/hub/auth/route.js.nft.json +1 -1
  69. package/.next/server/app/api/hub/broadcast/route.js +6 -6
  70. package/.next/server/app/api/hub/broadcast/route.js.nft.json +1 -1
  71. package/.next/server/app/api/hub/events/route.js +6 -6
  72. package/.next/server/app/api/hub/events/route.js.nft.json +1 -1
  73. package/.next/server/app/api/hub/health/route.js +6 -6
  74. package/.next/server/app/api/hub/health/route.js.nft.json +1 -1
  75. package/.next/server/app/api/hub/inbox/route.js +6 -6
  76. package/.next/server/app/api/hub/inbox/route.js.nft.json +1 -1
  77. package/.next/server/app/api/hub/license/route.js +6 -6
  78. package/.next/server/app/api/hub/license/route.js.nft.json +1 -1
  79. package/.next/server/app/api/hub/messages/route.js +6 -6
  80. package/.next/server/app/api/hub/messages/route.js.nft.json +1 -1
  81. package/.next/server/app/api/hub/networks/route.js +6 -6
  82. package/.next/server/app/api/hub/networks/route.js.nft.json +1 -1
  83. package/.next/server/app/api/hub/nodes/route.js +6 -6
  84. package/.next/server/app/api/hub/nodes/route.js.nft.json +1 -1
  85. package/.next/server/app/api/hub/register/route.js +6 -6
  86. package/.next/server/app/api/hub/register/route.js.nft.json +1 -1
  87. package/.next/server/app/api/hub/send/route.js +6 -6
  88. package/.next/server/app/api/hub/send/route.js.nft.json +1 -1
  89. package/.next/server/app/api/hub/server-logs/route.js +6 -6
  90. package/.next/server/app/api/hub/server-logs/route.js.nft.json +1 -1
  91. package/.next/server/app/api/hub/servers/route/app-paths-manifest.json +3 -0
  92. package/.next/server/app/api/hub/servers/route/build-manifest.json +9 -0
  93. package/.next/server/app/api/hub/servers/route/server-reference-manifest.json +4 -0
  94. package/.next/server/app/api/hub/servers/route.js +7 -0
  95. package/.next/server/app/api/hub/servers/route.js.map +5 -0
  96. package/.next/server/app/api/hub/servers/route.js.nft.json +1 -0
  97. package/.next/server/app/api/hub/servers/route_client-reference-manifest.js +3 -0
  98. package/.next/server/app/api/hub/session/route.js +6 -6
  99. package/.next/server/app/api/hub/session/route.js.nft.json +1 -1
  100. package/.next/server/app/api/hub/stats/route.js +6 -6
  101. package/.next/server/app/api/hub/stats/route.js.nft.json +1 -1
  102. package/.next/server/app/api/hub/status/route.js +6 -6
  103. package/.next/server/app/api/hub/status/route.js.nft.json +1 -1
  104. package/.next/server/app/api/hub/task-events/route.js +6 -6
  105. package/.next/server/app/api/hub/task-events/route.js.nft.json +1 -1
  106. package/.next/server/app/api/hub/tasks/route.js +6 -6
  107. package/.next/server/app/api/hub/tasks/route.js.nft.json +1 -1
  108. package/.next/server/app/api/hub/tmux/route.js +6 -6
  109. package/.next/server/app/api/hub/tmux/route.js.nft.json +1 -1
  110. package/.next/server/app/api/hub/tokens/route.js +6 -6
  111. package/.next/server/app/api/hub/tokens/route.js.nft.json +1 -1
  112. package/.next/server/app/favicon.ico/route.js +6 -6
  113. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  114. package/.next/server/app/index.html +2 -2
  115. package/.next/server/app/index.rsc +14 -14
  116. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  117. package/.next/server/app/index.segments/_full.segment.rsc +14 -14
  118. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  119. package/.next/server/app/index.segments/_index.segment.rsc +7 -7
  120. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  121. package/.next/server/app/login/page/build-manifest.json +5 -5
  122. package/.next/server/app/login/page/next-font-manifest.json +1 -1
  123. package/.next/server/app/login/page.js +13 -13
  124. package/.next/server/app/login/page.js.nft.json +1 -1
  125. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  126. package/.next/server/app/login.html +2 -2
  127. package/.next/server/app/login.rsc +14 -14
  128. package/.next/server/app/login.segments/_full.segment.rsc +14 -14
  129. package/.next/server/app/login.segments/_head.segment.rsc +4 -4
  130. package/.next/server/app/login.segments/_index.segment.rsc +7 -7
  131. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  132. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  133. package/.next/server/app/login.segments/login.segment.rsc +3 -3
  134. package/.next/server/app/logs/page/build-manifest.json +5 -5
  135. package/.next/server/app/logs/page/next-font-manifest.json +1 -1
  136. package/.next/server/app/logs/page.js +13 -13
  137. package/.next/server/app/logs/page.js.nft.json +1 -1
  138. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  139. package/.next/server/app/logs.html +2 -2
  140. package/.next/server/app/logs.rsc +14 -14
  141. package/.next/server/app/logs.segments/_full.segment.rsc +14 -14
  142. package/.next/server/app/logs.segments/_head.segment.rsc +4 -4
  143. package/.next/server/app/logs.segments/_index.segment.rsc +7 -7
  144. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  145. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +4 -4
  146. package/.next/server/app/logs.segments/logs.segment.rsc +3 -3
  147. package/.next/server/app/messages/page/build-manifest.json +5 -5
  148. package/.next/server/app/messages/page/next-font-manifest.json +1 -1
  149. package/.next/server/app/messages/page.js +13 -13
  150. package/.next/server/app/messages/page.js.nft.json +1 -1
  151. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  152. package/.next/server/app/messages.html +2 -2
  153. package/.next/server/app/messages.rsc +14 -14
  154. package/.next/server/app/messages.segments/_full.segment.rsc +14 -14
  155. package/.next/server/app/messages.segments/_head.segment.rsc +4 -4
  156. package/.next/server/app/messages.segments/_index.segment.rsc +7 -7
  157. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  158. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +4 -4
  159. package/.next/server/app/messages.segments/messages.segment.rsc +3 -3
  160. package/.next/server/app/node/page/build-manifest.json +5 -5
  161. package/.next/server/app/node/page/next-font-manifest.json +1 -1
  162. package/.next/server/app/node/page.js +13 -13
  163. package/.next/server/app/node/page.js.nft.json +1 -1
  164. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  165. package/.next/server/app/node.html +2 -2
  166. package/.next/server/app/node.rsc +14 -14
  167. package/.next/server/app/node.segments/_full.segment.rsc +14 -14
  168. package/.next/server/app/node.segments/_head.segment.rsc +4 -4
  169. package/.next/server/app/node.segments/_index.segment.rsc +7 -7
  170. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  171. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +4 -4
  172. package/.next/server/app/node.segments/node.segment.rsc +3 -3
  173. package/.next/server/app/nodes/page/build-manifest.json +5 -5
  174. package/.next/server/app/nodes/page/next-font-manifest.json +1 -1
  175. package/.next/server/app/nodes/page.js +13 -13
  176. package/.next/server/app/nodes/page.js.nft.json +1 -1
  177. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  178. package/.next/server/app/nodes.html +2 -2
  179. package/.next/server/app/nodes.rsc +14 -14
  180. package/.next/server/app/nodes.segments/_full.segment.rsc +14 -14
  181. package/.next/server/app/nodes.segments/_head.segment.rsc +4 -4
  182. package/.next/server/app/nodes.segments/_index.segment.rsc +7 -7
  183. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  184. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +4 -4
  185. package/.next/server/app/nodes.segments/nodes.segment.rsc +3 -3
  186. package/.next/server/app/page/build-manifest.json +5 -5
  187. package/.next/server/app/page/next-font-manifest.json +1 -1
  188. package/.next/server/app/page.js +13 -13
  189. package/.next/server/app/page.js.nft.json +1 -1
  190. package/.next/server/app/page_client-reference-manifest.js +1 -1
  191. package/.next/server/app/server-logs/page/build-manifest.json +5 -5
  192. package/.next/server/app/server-logs/page/next-font-manifest.json +1 -1
  193. package/.next/server/app/server-logs/page.js +13 -13
  194. package/.next/server/app/server-logs/page.js.nft.json +1 -1
  195. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  196. package/.next/server/app/server-logs.html +2 -2
  197. package/.next/server/app/server-logs.rsc +14 -14
  198. package/.next/server/app/server-logs.segments/_full.segment.rsc +14 -14
  199. package/.next/server/app/server-logs.segments/_head.segment.rsc +4 -4
  200. package/.next/server/app/server-logs.segments/_index.segment.rsc +7 -7
  201. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  202. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +4 -4
  203. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +3 -3
  204. package/.next/server/app/settings/networks/page/build-manifest.json +5 -5
  205. package/.next/server/app/settings/networks/page/next-font-manifest.json +1 -1
  206. package/.next/server/app/settings/networks/page.js +13 -13
  207. package/.next/server/app/settings/networks/page.js.nft.json +1 -1
  208. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  209. package/.next/server/app/settings/networks.html +2 -2
  210. package/.next/server/app/settings/networks.rsc +14 -14
  211. package/.next/server/app/settings/networks.segments/_full.segment.rsc +14 -14
  212. package/.next/server/app/settings/networks.segments/_head.segment.rsc +4 -4
  213. package/.next/server/app/settings/networks.segments/_index.segment.rsc +7 -7
  214. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  215. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +4 -4
  216. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +3 -3
  217. package/.next/server/app/settings/networks.segments/settings.segment.rsc +3 -3
  218. package/.next/server/app/settings/page/build-manifest.json +5 -5
  219. package/.next/server/app/settings/page/next-font-manifest.json +1 -1
  220. package/.next/server/app/settings/page.js +13 -13
  221. package/.next/server/app/settings/page.js.nft.json +1 -1
  222. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  223. package/.next/server/app/settings/tokens/page/build-manifest.json +5 -5
  224. package/.next/server/app/settings/tokens/page/next-font-manifest.json +1 -1
  225. package/.next/server/app/settings/tokens/page.js +13 -13
  226. package/.next/server/app/settings/tokens/page.js.nft.json +1 -1
  227. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  228. package/.next/server/app/settings/tokens.html +2 -2
  229. package/.next/server/app/settings/tokens.rsc +14 -14
  230. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +14 -14
  231. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +4 -4
  232. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +7 -7
  233. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  234. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +4 -4
  235. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +3 -3
  236. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +3 -3
  237. package/.next/server/app/settings.html +2 -2
  238. package/.next/server/app/settings.rsc +14 -14
  239. package/.next/server/app/settings.segments/_full.segment.rsc +14 -14
  240. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  241. package/.next/server/app/settings.segments/_index.segment.rsc +7 -7
  242. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  243. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  244. package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  245. package/.next/server/app/tasks/[id]/page/build-manifest.json +5 -5
  246. package/.next/server/app/tasks/[id]/page/next-font-manifest.json +1 -1
  247. package/.next/server/app/tasks/[id]/page.js +13 -13
  248. package/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
  249. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  250. package/.next/server/app/tasks/page/build-manifest.json +5 -5
  251. package/.next/server/app/tasks/page/next-font-manifest.json +1 -1
  252. package/.next/server/app/tasks/page.js +13 -13
  253. package/.next/server/app/tasks/page.js.nft.json +1 -1
  254. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  255. package/.next/server/app/tasks.html +2 -2
  256. package/.next/server/app/tasks.rsc +14 -14
  257. package/.next/server/app/tasks.segments/_full.segment.rsc +14 -14
  258. package/.next/server/app/tasks.segments/_head.segment.rsc +4 -4
  259. package/.next/server/app/tasks.segments/_index.segment.rsc +7 -7
  260. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  261. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +4 -4
  262. package/.next/server/app/tasks.segments/tasks.segment.rsc +3 -3
  263. package/.next/server/app-paths-manifest.json +1 -0
  264. package/.next/server/chunks/00jm_next_04f3gac._.js +10 -0
  265. package/.next/server/chunks/00jm_next_04f3gac._.js.map +1 -0
  266. package/.next/server/chunks/00jm_next_dist_esm_build_templates_app-route_02f430o.js +3 -0
  267. package/.next/server/chunks/00jm_next_dist_esm_build_templates_app-route_02f430o.js.map +1 -0
  268. package/.next/server/chunks/0ci9_nt-network-dashboard__next-internal_server_app_api_auth_v3_route_actions_0f5nbzr.js +3 -0
  269. package/.next/server/chunks/0ci9_nt-network-dashboard__next-internal_server_app_favicon_ico_route_actions_0t0eu9r.js +3 -0
  270. package/.next/server/chunks/0ykm__next-internal_server_app_api_anet_config_route_actions_0a~v55_.js +3 -0
  271. package/.next/server/chunks/0ykm__next-internal_server_app_api_auth_login_route_actions_0xnxfs4.js +3 -0
  272. package/.next/server/chunks/0ykm__next-internal_server_app_api_auth_logout_route_actions_0p8p0rn.js +3 -0
  273. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_audit-log_route_actions_06uquwi.js +3 -0
  274. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_auth_route_actions_0f_y1ey.js +3 -0
  275. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_broadcast_route_actions_0ao3j43.js +3 -0
  276. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_events_route_actions_0_5ndld.js +3 -0
  277. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_health_route_actions_0mpzl74.js +3 -0
  278. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_inbox_route_actions_0stoyto.js +3 -0
  279. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_license_route_actions_0a4.fuh.js +3 -0
  280. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_messages_route_actions_059rw1o.js +3 -0
  281. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_networks_route_actions_03sehpn.js +3 -0
  282. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_nodes_route_actions_11fbp28.js +3 -0
  283. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_register_route_actions_0l.d7~n.js +3 -0
  284. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_send_route_actions_0.p82vy.js +3 -0
  285. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_server-logs_route_actions_05~c5lb.js +3 -0
  286. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_servers_route_actions_08-m-cs.js +3 -0
  287. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_session_route_actions_0b9ef2i.js +3 -0
  288. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_stats_route_actions_03u65u0.js +3 -0
  289. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_status_route_actions_0_71ear.js +3 -0
  290. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_task-events_route_actions_07md_ee.js +3 -0
  291. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_tasks_route_actions_0er3uvk.js +3 -0
  292. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_tmux_route_actions_0o_1-8u.js +3 -0
  293. package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_tokens_route_actions_09doluz.js +3 -0
  294. package/.next/server/chunks/[root-of-the-server]__0-2le8-._.js +3 -0
  295. package/.next/server/chunks/[root-of-the-server]__0-2le8-._.js.map +1 -0
  296. package/.next/server/chunks/[root-of-the-server]__0-g~15e._.js +3 -0
  297. package/.next/server/chunks/[root-of-the-server]__0-g~15e._.js.map +1 -0
  298. package/.next/server/chunks/[root-of-the-server]__00194.t._.js +3 -0
  299. package/.next/server/chunks/{[root-of-the-server]__03ueci3._.js.map → [root-of-the-server]__00194.t._.js.map} +1 -1
  300. package/.next/server/chunks/[root-of-the-server]__02p2n3n._.js +3 -0
  301. package/.next/server/chunks/[root-of-the-server]__02p2n3n._.js.map +1 -0
  302. package/.next/server/chunks/[root-of-the-server]__02y-i-p._.js +6 -0
  303. package/.next/server/chunks/[root-of-the-server]__02y-i-p._.js.map +1 -0
  304. package/.next/server/chunks/[root-of-the-server]__043tnx2._.js +3 -0
  305. package/.next/server/chunks/{[root-of-the-server]__0o4qfn9._.js.map → [root-of-the-server]__043tnx2._.js.map} +1 -1
  306. package/.next/server/chunks/[root-of-the-server]__04z62zk._.js +3 -0
  307. package/.next/server/chunks/[root-of-the-server]__04z62zk._.js.map +1 -0
  308. package/.next/server/chunks/[root-of-the-server]__06p6kkp._.js +3 -0
  309. package/.next/server/chunks/[root-of-the-server]__06p6kkp._.js.map +1 -0
  310. package/.next/server/chunks/[root-of-the-server]__07ztet2._.js +3 -0
  311. package/.next/server/chunks/[root-of-the-server]__07ztet2._.js.map +1 -0
  312. package/.next/server/chunks/[root-of-the-server]__08uyvdq._.js +20 -0
  313. package/.next/server/chunks/[root-of-the-server]__08uyvdq._.js.map +1 -0
  314. package/.next/server/chunks/[root-of-the-server]__0b7v51y._.js +3 -0
  315. package/.next/server/chunks/[root-of-the-server]__0b7v51y._.js.map +1 -0
  316. package/.next/server/chunks/[root-of-the-server]__0e3ucl1._.js +3 -0
  317. package/.next/server/chunks/{[root-of-the-server]__0rg9ifx._.js.map → [root-of-the-server]__0e3ucl1._.js.map} +1 -1
  318. package/.next/server/chunks/[root-of-the-server]__0e6yail._.js +3 -0
  319. package/.next/server/chunks/[root-of-the-server]__0e6yail._.js.map +1 -0
  320. package/.next/server/chunks/[root-of-the-server]__0gx2_6a._.js +3 -0
  321. package/.next/server/chunks/[root-of-the-server]__0gx2_6a._.js.map +1 -0
  322. package/.next/server/chunks/[root-of-the-server]__0hcnyp.._.js +3 -0
  323. package/.next/server/chunks/{[root-of-the-server]__0o29v8c._.js.map → [root-of-the-server]__0hcnyp.._.js.map} +1 -1
  324. package/.next/server/chunks/[root-of-the-server]__0hg3_8r._.js +3 -0
  325. package/.next/server/chunks/[root-of-the-server]__0hg3_8r._.js.map +1 -0
  326. package/.next/server/chunks/[root-of-the-server]__0mxw4vb._.js +3 -0
  327. package/.next/server/chunks/[root-of-the-server]__0mxw4vb._.js.map +1 -0
  328. package/.next/server/chunks/[root-of-the-server]__0mzopco._.js +3 -0
  329. package/.next/server/chunks/[root-of-the-server]__0mzopco._.js.map +1 -0
  330. package/.next/server/chunks/[root-of-the-server]__0o45a4q._.js +3 -0
  331. package/.next/server/chunks/{[root-of-the-server]__0p6tutt._.js.map → [root-of-the-server]__0o45a4q._.js.map} +1 -1
  332. package/.next/server/chunks/[root-of-the-server]__0q-teo6._.js +3 -0
  333. package/.next/server/chunks/[root-of-the-server]__0q-teo6._.js.map +1 -0
  334. package/.next/server/chunks/[root-of-the-server]__0qcxxzf._.js +3 -0
  335. package/.next/server/chunks/[root-of-the-server]__0qcxxzf._.js.map +1 -0
  336. package/.next/server/chunks/[root-of-the-server]__0rovr5-._.js +3 -0
  337. package/.next/server/chunks/[root-of-the-server]__0rovr5-._.js.map +1 -0
  338. package/.next/server/chunks/[root-of-the-server]__0tx8s8i._.js +3 -0
  339. package/.next/server/chunks/{[root-of-the-server]__0~h2uqi._.js.map → [root-of-the-server]__0tx8s8i._.js.map} +1 -1
  340. package/.next/server/chunks/[root-of-the-server]__0xtp-et._.js +3 -0
  341. package/.next/server/chunks/[root-of-the-server]__0xtp-et._.js.map +1 -0
  342. package/.next/server/chunks/[root-of-the-server]__10pvabe._.js +3 -0
  343. package/.next/server/chunks/[root-of-the-server]__10pvabe._.js.map +1 -0
  344. package/.next/server/chunks/[root-of-the-server]__10t11zq._.js +3 -0
  345. package/.next/server/chunks/[root-of-the-server]__10t11zq._.js.map +1 -0
  346. package/.next/server/chunks/[root-of-the-server]__12r~omy._.js +3 -0
  347. package/.next/server/chunks/[root-of-the-server]__12r~omy._.js.map +1 -0
  348. package/.next/server/chunks/[root-of-the-server]__1389~cs._.js +3 -0
  349. package/.next/server/chunks/[root-of-the-server]__1389~cs._.js.map +1 -0
  350. package/.next/server/chunks/[root-of-the-server]__13n8t..._.js +3 -0
  351. package/.next/server/chunks/[root-of-the-server]__13n8t..._.js.map +1 -0
  352. package/.next/server/chunks/[turbopack]_runtime.js +1 -1
  353. package/.next/server/chunks/ssr/{node_modules_0r_.s40._.js → 00jm_03rn9vn._.js} +2 -2
  354. package/.next/server/chunks/ssr/00jm_03rn9vn._.js.map +1 -0
  355. package/.next/server/chunks/ssr/{node_modules_09w7yel._.js → 00jm_059ns68._.js} +3 -3
  356. package/.next/server/chunks/ssr/00jm_059ns68._.js.map +1 -0
  357. package/.next/server/chunks/ssr/00jm_09ae-q0._.js +3 -0
  358. package/.next/server/chunks/ssr/00jm_09ae-q0._.js.map +1 -0
  359. package/.next/server/chunks/ssr/00jm_0j7__z.._.js +3 -0
  360. package/.next/server/chunks/ssr/00jm_0j7__z.._.js.map +1 -0
  361. package/.next/server/chunks/ssr/00jm_next_01-0urn._.js +6 -0
  362. package/.next/server/chunks/ssr/00jm_next_01-0urn._.js.map +1 -0
  363. package/.next/server/chunks/ssr/00jm_next_dist_05rlh5d._.js +6 -0
  364. package/.next/server/chunks/ssr/00jm_next_dist_05rlh5d._.js.map +1 -0
  365. package/.next/server/chunks/ssr/00jm_next_dist_client_components_0gkudcq._.js +3 -0
  366. package/.next/server/chunks/ssr/00jm_next_dist_client_components_0gkudcq._.js.map +1 -0
  367. package/.next/server/chunks/ssr/00jm_next_dist_client_components_builtin_forbidden_0ecus3e.js +3 -0
  368. package/.next/server/chunks/ssr/00jm_next_dist_client_components_builtin_forbidden_0ecus3e.js.map +1 -0
  369. package/.next/server/chunks/ssr/00jm_next_dist_client_components_builtin_global-error_07n8pg2.js +3 -0
  370. package/.next/server/chunks/ssr/00jm_next_dist_client_components_builtin_global-error_07n8pg2.js.map +1 -0
  371. package/.next/server/chunks/ssr/00jm_next_dist_client_components_builtin_unauthorized_0r0uq4j.js +3 -0
  372. package/.next/server/chunks/ssr/00jm_next_dist_client_components_builtin_unauthorized_0r0uq4j.js.map +1 -0
  373. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_002l7yi.js → 00jm_next_dist_esm_build_templates_app-page_0..ddwm.js} +3 -3
  374. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_0..ddwm.js.map +1 -0
  375. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0qm1-a1.js → 00jm_next_dist_esm_build_templates_app-page_02bxi6j.js} +3 -3
  376. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_02bxi6j.js.map +1 -0
  377. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_02suzhc.js → 00jm_next_dist_esm_build_templates_app-page_05oassd.js} +3 -3
  378. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_05oassd.js.map +1 -0
  379. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0dm~kj8.js → 00jm_next_dist_esm_build_templates_app-page_05vxtby.js} +3 -3
  380. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_05vxtby.js.map +1 -0
  381. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0uccf9z.js → 00jm_next_dist_esm_build_templates_app-page_05~eml4.js} +3 -3
  382. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_05~eml4.js.map +1 -0
  383. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0l-fh0i.js → 00jm_next_dist_esm_build_templates_app-page_0_-g_q2.js} +3 -3
  384. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_0_-g_q2.js.map +1 -0
  385. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0uv6jyc.js → 00jm_next_dist_esm_build_templates_app-page_0_ec0xu.js} +3 -3
  386. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_0_ec0xu.js.map +1 -0
  387. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_0czb6wz.js +4 -0
  388. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_0czb6wz.js.map +1 -0
  389. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_13s07li.js → 00jm_next_dist_esm_build_templates_app-page_0e-cn.p.js} +3 -3
  390. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_0e-cn.p.js.map +1 -0
  391. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0o9vt1n.js → 00jm_next_dist_esm_build_templates_app-page_0k8_sr8.js} +3 -3
  392. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_0k8_sr8.js.map +1 -0
  393. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0nsg22r.js → 00jm_next_dist_esm_build_templates_app-page_0lt_3bw.js} +3 -3
  394. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_0lt_3bw.js.map +1 -0
  395. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0d2yq5t.js → 00jm_next_dist_esm_build_templates_app-page_0uyh3yt.js} +3 -3
  396. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_0uyh3yt.js.map +1 -0
  397. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0foejvu.js → 00jm_next_dist_esm_build_templates_app-page_0v-a2ps.js} +3 -3
  398. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_0v-a2ps.js.map +1 -0
  399. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_12.4r9~.js +4 -0
  400. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_12.4r9~.js.map +1 -0
  401. package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_07uu-xq.js → 00jm_next_dist_esm_build_templates_app-page_13mqkay.js} +3 -3
  402. package/.next/server/chunks/ssr/00jm_next_dist_esm_build_templates_app-page_13mqkay.js.map +1 -0
  403. package/.next/server/chunks/ssr/0dwh_ent-network-dashboard__next-internal_server_app_server-logs_page_actions_0hkk815.js +3 -0
  404. package/.next/server/chunks/ssr/0yas_gent-network-dashboard__next-internal_server_app__not-found_page_actions_0u.f-rz.js +3 -0
  405. package/.next/server/chunks/ssr/0yas_gent-network-dashboard__next-internal_server_app_tasks_[id]_page_actions_0r3~lho.js +3 -0
  406. package/.next/server/chunks/ssr/0ykm__next-internal_server_app__global-error_page_actions_100fxls.js +3 -0
  407. package/.next/server/chunks/ssr/0ykm__next-internal_server_app_settings_networks_page_actions_0jgy57m.js +3 -0
  408. package/.next/server/chunks/ssr/0ykm__next-internal_server_app_settings_tokens_page_actions_0l5h.k~.js +3 -0
  409. package/.next/server/chunks/ssr/[root-of-the-server]__030vg4n._.js +3 -0
  410. package/.next/server/chunks/ssr/[root-of-the-server]__030vg4n._.js.map +1 -0
  411. package/.next/server/chunks/ssr/[root-of-the-server]__03b.f76._.js +3 -0
  412. package/.next/server/chunks/ssr/[root-of-the-server]__03b.f76._.js.map +1 -0
  413. package/.next/server/chunks/ssr/[root-of-the-server]__063~dul._.js +3 -0
  414. package/.next/server/chunks/ssr/[root-of-the-server]__063~dul._.js.map +1 -0
  415. package/.next/server/chunks/ssr/[root-of-the-server]__07io.d8._.js +3 -0
  416. package/.next/server/chunks/ssr/[root-of-the-server]__07io.d8._.js.map +1 -0
  417. package/.next/server/chunks/ssr/[root-of-the-server]__08d6lp4._.js +3 -0
  418. package/.next/server/chunks/ssr/[root-of-the-server]__08d6lp4._.js.map +1 -0
  419. package/.next/server/chunks/ssr/[root-of-the-server]__09f1wn6._.js +3 -0
  420. package/.next/server/chunks/ssr/[root-of-the-server]__09f1wn6._.js.map +1 -0
  421. package/.next/server/chunks/ssr/[root-of-the-server]__0c4xtkg._.js +3 -0
  422. package/.next/server/chunks/ssr/[root-of-the-server]__0c4xtkg._.js.map +1 -0
  423. package/.next/server/chunks/ssr/[root-of-the-server]__0erfzjn._.js +3 -0
  424. package/.next/server/chunks/ssr/[root-of-the-server]__0erfzjn._.js.map +1 -0
  425. package/.next/server/chunks/ssr/[root-of-the-server]__0ezjwje._.js +3 -0
  426. package/.next/server/chunks/ssr/[root-of-the-server]__0ezjwje._.js.map +1 -0
  427. package/.next/server/chunks/ssr/[root-of-the-server]__0fhoq8i._.js +3 -0
  428. package/.next/server/chunks/ssr/[root-of-the-server]__0fhoq8i._.js.map +1 -0
  429. package/.next/server/chunks/ssr/{[root-of-the-server]__08qr2ji._.js → [root-of-the-server]__0gc.4uk._.js} +3 -3
  430. package/.next/server/chunks/ssr/[root-of-the-server]__0gc.4uk._.js.map +1 -0
  431. package/.next/server/chunks/ssr/[root-of-the-server]__0h_p~-4._.js +19 -0
  432. package/.next/server/chunks/ssr/[root-of-the-server]__0h_p~-4._.js.map +1 -0
  433. package/.next/server/chunks/ssr/[root-of-the-server]__0jdr1e5._.js +3 -0
  434. package/.next/server/chunks/ssr/[root-of-the-server]__0jdr1e5._.js.map +1 -0
  435. package/.next/server/chunks/ssr/[root-of-the-server]__0lw16mu._.js +3 -0
  436. package/.next/server/chunks/ssr/[root-of-the-server]__0lw16mu._.js.map +1 -0
  437. package/.next/server/chunks/ssr/[root-of-the-server]__0mjly~-._.js +33 -0
  438. package/.next/server/chunks/ssr/[root-of-the-server]__0mjly~-._.js.map +1 -0
  439. package/.next/server/chunks/ssr/[root-of-the-server]__0nw~zhp._.js +3 -0
  440. package/.next/server/chunks/ssr/[root-of-the-server]__0nw~zhp._.js.map +1 -0
  441. package/.next/server/chunks/ssr/[root-of-the-server]__0p-95r_._.js +3 -0
  442. package/.next/server/chunks/ssr/[root-of-the-server]__0p-95r_._.js.map +1 -0
  443. package/.next/server/chunks/ssr/[root-of-the-server]__0u5aqkk._.js +8 -0
  444. package/.next/server/chunks/ssr/[root-of-the-server]__0u5aqkk._.js.map +1 -0
  445. package/.next/server/chunks/ssr/[root-of-the-server]__0ue5.fy._.js +3 -0
  446. package/.next/server/chunks/ssr/[root-of-the-server]__0ue5.fy._.js.map +1 -0
  447. package/.next/server/chunks/ssr/[root-of-the-server]__0uggxvx._.js +3 -0
  448. package/.next/server/chunks/ssr/[root-of-the-server]__0uggxvx._.js.map +1 -0
  449. package/.next/server/chunks/ssr/[root-of-the-server]__0zjk5ro._.js +3 -0
  450. package/.next/server/chunks/ssr/[root-of-the-server]__0zjk5ro._.js.map +1 -0
  451. package/.next/server/chunks/ssr/[root-of-the-server]__0zz3v7a._.js +3 -0
  452. package/.next/server/chunks/ssr/[root-of-the-server]__0zz3v7a._.js.map +1 -0
  453. package/.next/server/chunks/ssr/[root-of-the-server]__0~y12ef._.js +3 -0
  454. package/.next/server/chunks/ssr/[root-of-the-server]__0~y12ef._.js.map +1 -0
  455. package/.next/server/chunks/ssr/[root-of-the-server]__129sc_9._.js +3 -0
  456. package/.next/server/chunks/ssr/[root-of-the-server]__129sc_9._.js.map +1 -0
  457. package/.next/server/chunks/ssr/[turbopack]_runtime.js +1 -1
  458. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +4 -0
  459. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -0
  460. package/.next/server/chunks/ssr/agent-network-dashboard__next-internal_server_app_admin_page_actions_0i~.x~j.js +3 -0
  461. package/.next/server/chunks/ssr/agent-network-dashboard__next-internal_server_app_login_page_actions_0frwl15.js +3 -0
  462. package/.next/server/chunks/ssr/agent-network-dashboard__next-internal_server_app_logs_page_actions_0xa2ox_.js +3 -0
  463. package/.next/server/chunks/ssr/agent-network-dashboard__next-internal_server_app_messages_page_actions_10j3tg4.js +3 -0
  464. package/.next/server/chunks/ssr/agent-network-dashboard__next-internal_server_app_node_page_actions_0sl4ntd.js +3 -0
  465. package/.next/server/chunks/ssr/agent-network-dashboard__next-internal_server_app_nodes_page_actions_0cpgkfs.js +3 -0
  466. package/.next/server/chunks/ssr/agent-network-dashboard__next-internal_server_app_page_actions_08nuo36.js +3 -0
  467. package/.next/server/chunks/ssr/agent-network-dashboard__next-internal_server_app_settings_page_actions_0iv.lmk.js +3 -0
  468. package/.next/server/chunks/ssr/agent-network-dashboard__next-internal_server_app_tasks_page_actions_08c7qlx.js +3 -0
  469. package/.next/server/chunks/ssr/agent-network-dashboard__next-internal_server_app_tasks_page_actions_08c7qlx.js.map +1 -0
  470. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +3 -0
  471. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -0
  472. package/.next/server/chunks/ssr/agent-network-dashboard_app_057q.ne._.js +3 -0
  473. package/.next/server/chunks/ssr/agent-network-dashboard_app_057q.ne._.js.map +1 -0
  474. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +3 -0
  475. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -0
  476. package/.next/server/chunks/ssr/agent-network-dashboard_app_0_d45-d._.js +3 -0
  477. package/.next/server/chunks/ssr/agent-network-dashboard_app_0_d45-d._.js.map +1 -0
  478. package/.next/server/chunks/ssr/agent-network-dashboard_app_0i3759l._.js +3 -0
  479. package/.next/server/chunks/ssr/agent-network-dashboard_app_0i3759l._.js.map +1 -0
  480. package/.next/server/chunks/ssr/agent-network-dashboard_app_0xgney8._.js +3 -0
  481. package/.next/server/chunks/ssr/agent-network-dashboard_app_0xgney8._.js.map +1 -0
  482. package/.next/server/chunks/ssr/agent-network-dashboard_app_10hjgv4._.js +3 -0
  483. package/.next/server/chunks/ssr/agent-network-dashboard_app_10hjgv4._.js.map +1 -0
  484. package/.next/server/chunks/ssr/agent-network-dashboard_app_1153xeb._.js +9 -0
  485. package/.next/server/chunks/ssr/agent-network-dashboard_app_1153xeb._.js.map +1 -0
  486. package/.next/server/chunks/ssr/agent-network-dashboard_app_12l4oto._.js +3 -0
  487. package/.next/server/chunks/ssr/agent-network-dashboard_app_12l4oto._.js.map +1 -0
  488. package/.next/server/chunks/ssr/{app_components_08ys5y3._.js → agent-network-dashboard_app_components_0mvyi-4._.js} +3 -3
  489. package/.next/server/chunks/ssr/agent-network-dashboard_app_components_0mvyi-4._.js.map +1 -0
  490. package/.next/server/chunks/ssr/{app_server-logs_page_tsx_0_kpp1p._.js → agent-network-dashboard_app_server-logs_page_tsx_0dg.l_8._.js} +2 -2
  491. package/.next/server/chunks/ssr/agent-network-dashboard_app_server-logs_page_tsx_0dg.l_8._.js.map +1 -0
  492. package/.next/server/chunks/ssr/agent-network-dashboard_app_tasks_page_tsx_0mwxy4z._.js +3 -0
  493. package/.next/server/chunks/ssr/agent-network-dashboard_app_tasks_page_tsx_0mwxy4z._.js.map +1 -0
  494. package/.next/server/middleware-build-manifest.js +8 -8
  495. package/.next/server/middleware.js +3 -3
  496. package/.next/server/middleware.js.nft.json +1 -1
  497. package/.next/server/next-font-manifest.js +1 -1
  498. package/.next/server/next-font-manifest.json +14 -14
  499. package/.next/server/pages/404.html +2 -2
  500. package/.next/server/pages/500.html +1 -1
  501. package/.next/server/server-reference-manifest.js +1 -1
  502. package/.next/server/server-reference-manifest.json +1 -1
  503. package/.next/static/chunks/0-mpa_947ipeq.js +1 -0
  504. package/.next/static/chunks/{0gtbwcilfu6b7.js → 0.66f3.rtcybb.js} +1 -1
  505. package/.next/static/chunks/01i3dw_l_utr4.js +2 -0
  506. package/.next/static/chunks/01lmbsd37fybu.js +1 -0
  507. package/.next/static/chunks/039-b.v_9-_rm.js +1 -0
  508. package/.next/static/chunks/03o.h6kvmw4l_.js +1 -0
  509. package/.next/static/chunks/03~~oirxz7~vc.js +1 -0
  510. package/.next/static/chunks/05oi25hh7b81r.js +31 -0
  511. package/.next/static/chunks/05uk96gc~9mni.js +1 -0
  512. package/.next/static/chunks/072so8rfx2tt-.css +2 -0
  513. package/.next/static/chunks/07~8sx3_5uiox.js +1 -0
  514. package/.next/static/chunks/08kf-.bgs10ze.js +1 -0
  515. package/.next/static/chunks/{0pqt~8bl3ukh4.js → 0_pxg.4pebw__.js} +2 -2
  516. package/.next/static/chunks/0b8wnt4put-5n.js +2 -0
  517. package/.next/static/chunks/{01xlw8hd842-c.js → 0eov~nkwaf-qa.js} +1 -1
  518. package/.next/static/chunks/0glmrdj9112tc.js +7 -0
  519. package/.next/static/chunks/0h18r~c2scsl3.js +1 -0
  520. package/.next/static/chunks/{0w1zwt8kq_7nb.js → 0ku0fjqlm9mca.js} +1 -1
  521. package/.next/static/chunks/0rxrez_cjn.eh.js +1 -0
  522. package/.next/static/chunks/0tufo8a3rcp0n.js +1 -0
  523. package/.next/static/chunks/0tvn2l1pc.h65.js +1 -0
  524. package/.next/static/chunks/0u3b93reo9xci.js +1 -0
  525. package/.next/static/chunks/0x8x.29hkju5a.js +1 -0
  526. package/.next/static/chunks/121d8yvfl8l_..js +7 -0
  527. package/.next/static/chunks/174re5ar~kxne.js +1 -0
  528. package/.next/static/chunks/{turbopack-01f1xs~cq_~si.js → turbopack-0.7dvsf9rllt0.js} +1 -1
  529. package/.next/trace +2 -2
  530. package/.next/trace-build +1 -1
  531. package/.next/types/routes.d.ts +2 -1
  532. package/.next/types/validator.ts +9 -0
  533. package/app/api/hub/servers/route.ts +39 -0
  534. package/app/components/AppShell.tsx +2 -0
  535. package/app/components/ChatPopover.tsx +43 -7
  536. package/app/components/CommandPalette.tsx +67 -0
  537. package/app/components/HelpOverlay.tsx +71 -0
  538. package/app/components/ServersDrawer.tsx +206 -0
  539. package/app/components/TaskChatPanel.tsx +39 -39
  540. package/app/components/TopoGraph.tsx +2159 -182
  541. package/app/components/types.ts +7 -0
  542. package/app/components/utils.ts +8 -7
  543. package/app/globals.css +19 -1
  544. package/app/lib/time.ts +36 -0
  545. package/app/lib/vendorIdentity.ts +145 -0
  546. package/app/page.tsx +18 -1
  547. package/package.json +1 -1
  548. package/scripts/chat-popover-test.mjs +91 -0
  549. package/scripts/chat-theme-test.mjs +98 -0
  550. package/scripts/help-overlay-topo-test.mjs +44 -0
  551. package/scripts/servers-drawer-live-test.mjs +96 -0
  552. package/scripts/topo-active-filter-pill-test.mjs +101 -0
  553. package/scripts/topo-active-links-chip-hover-test.mjs +103 -0
  554. package/scripts/topo-active-links-chip-test.mjs +73 -0
  555. package/scripts/topo-arrival-ping-test.mjs +87 -0
  556. package/scripts/topo-arrow-tier-test.mjs +61 -0
  557. package/scripts/topo-auto-fit-test.mjs +73 -0
  558. package/scripts/topo-chat-focus-ring-test.mjs +77 -0
  559. package/scripts/topo-chip-pin-mirror-test.mjs +113 -0
  560. package/scripts/topo-click-ripple-test.mjs +66 -0
  561. package/scripts/topo-cmdk-layout-view-test.mjs +108 -0
  562. package/scripts/topo-cmdk-pin-test.mjs +123 -0
  563. package/scripts/topo-cmdk-vendor-clear-test.mjs +133 -0
  564. package/scripts/topo-cwd-tooltip-test.mjs +64 -0
  565. package/scripts/topo-dblclick-reset-test.mjs +74 -0
  566. package/scripts/topo-dispatch-pulse-test.mjs +83 -0
  567. package/scripts/topo-edge-endpoint-highlight-test.mjs +111 -0
  568. package/scripts/topo-edge-focus-test.mjs +113 -0
  569. package/scripts/topo-edge-hover-test.mjs +93 -0
  570. package/scripts/topo-edge-tooltip-test.mjs +70 -0
  571. package/scripts/topo-esc-clears-pin-test.mjs +98 -0
  572. package/scripts/topo-filter-pill-body-click-test.mjs +112 -0
  573. package/scripts/topo-filter-pill-count-test.mjs +110 -0
  574. package/scripts/topo-filter-pill-mobile-test.mjs +90 -0
  575. package/scripts/topo-fit-key-test.mjs +106 -0
  576. package/scripts/topo-freshness-chip-test.mjs +74 -0
  577. package/scripts/topo-group-box-pinned-state-test.mjs +95 -0
  578. package/scripts/topo-group-count-test.mjs +68 -0
  579. package/scripts/topo-group-hover-test.mjs +82 -0
  580. package/scripts/topo-group-label-hover-test.mjs +119 -0
  581. package/scripts/topo-group-pin-test.mjs +119 -0
  582. package/scripts/topo-group-status-pips-test.mjs +103 -0
  583. package/scripts/topo-groupbox-live-test.mjs +100 -0
  584. package/scripts/topo-groupbox-test.mjs +120 -0
  585. package/scripts/topo-help-overlay-r59-test.mjs +67 -0
  586. package/scripts/topo-help-overlay-r65-test.mjs +64 -0
  587. package/scripts/topo-help-overlay-r70-test.mjs +63 -0
  588. package/scripts/topo-help-overlay-r78-test.mjs +59 -0
  589. package/scripts/topo-help-overlay-r81-test.mjs +58 -0
  590. package/scripts/topo-help-overlay-r87-test.mjs +64 -0
  591. package/scripts/topo-help-overlay-r91-test.mjs +65 -0
  592. package/scripts/topo-hub-busyness-test.mjs +100 -0
  593. package/scripts/topo-hub-click-fit-test.mjs +137 -0
  594. package/scripts/topo-hub-title-test.mjs +93 -0
  595. package/scripts/topo-ingroup-edge-test.mjs +103 -0
  596. package/scripts/topo-label-lift-test.mjs +119 -0
  597. package/scripts/topo-label-scale-test.mjs +78 -0
  598. package/scripts/topo-lastseen-tooltip-test.mjs +59 -0
  599. package/scripts/topo-layout-key-test.mjs +91 -0
  600. package/scripts/topo-layout-test.mjs +113 -0
  601. package/scripts/topo-legend-hover-test.mjs +113 -0
  602. package/scripts/topo-legend-pin-test.mjs +128 -0
  603. package/scripts/topo-minimap-test.mjs +68 -0
  604. package/scripts/topo-mobile-chips-test.mjs +103 -0
  605. package/scripts/topo-node-hover-lift-test.mjs +85 -0
  606. package/scripts/topo-offline-dim-test.mjs +70 -0
  607. package/scripts/topo-overlap-test.mjs +164 -0
  608. package/scripts/topo-p0round-test.mjs +166 -0
  609. package/scripts/topo-pan-cursor-test.mjs +62 -0
  610. package/scripts/topo-panel-elevation-test.mjs +76 -0
  611. package/scripts/topo-pin-persistence-test.mjs +105 -0
  612. package/scripts/topo-popover-meta-test.mjs +78 -0
  613. package/scripts/topo-pressure-bar-test.mjs +69 -0
  614. package/scripts/topo-pressure-hover-test.mjs +123 -0
  615. package/scripts/topo-pressure-pin-test.mjs +119 -0
  616. package/scripts/topo-pulse-rate-test.mjs +71 -0
  617. package/scripts/topo-recent-row-hover-test.mjs +122 -0
  618. package/scripts/topo-recent-signal-empty-test.mjs +63 -0
  619. package/scripts/topo-reduced-motion-test.mjs +77 -0
  620. package/scripts/topo-rename-test.mjs +107 -0
  621. package/scripts/topo-status-chip-hover-test.mjs +101 -0
  622. package/scripts/topo-tier-ring-occupancy-test.mjs +87 -0
  623. package/scripts/topo-tier-ring-test.mjs +69 -0
  624. package/scripts/topo-tier-ring-tint-test.mjs +110 -0
  625. package/scripts/topo-tier-stagger-test.mjs +89 -0
  626. package/scripts/topo-tz-ghost-test.mjs +69 -0
  627. package/scripts/topo-vendor-chip-hover-test.mjs +111 -0
  628. package/scripts/topo-vendor-pill-test.mjs +125 -0
  629. package/scripts/topo-vendor-pin-test.mjs +125 -0
  630. package/scripts/topo-vendor-test.mjs +97 -0
  631. package/scripts/topo-wheel-zoom-test.mjs +79 -0
  632. package/scripts/topo-zoom-keys-test.mjs +89 -0
  633. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_06e.r3r._.js +0 -13
  634. package/.next/build/chunks/node_modules_13sb.px._.js.map +0 -47
  635. package/.next/server/chunks/[root-of-the-server]__0-mykaf._.js +0 -3
  636. package/.next/server/chunks/[root-of-the-server]__0-mykaf._.js.map +0 -1
  637. package/.next/server/chunks/[root-of-the-server]__0.d_kqy._.js +0 -3
  638. package/.next/server/chunks/[root-of-the-server]__0.d_kqy._.js.map +0 -1
  639. package/.next/server/chunks/[root-of-the-server]__02pocyg._.js +0 -3
  640. package/.next/server/chunks/[root-of-the-server]__02pocyg._.js.map +0 -1
  641. package/.next/server/chunks/[root-of-the-server]__03ueci3._.js +0 -3
  642. package/.next/server/chunks/[root-of-the-server]__04aud7x._.js +0 -3
  643. package/.next/server/chunks/[root-of-the-server]__04aud7x._.js.map +0 -1
  644. package/.next/server/chunks/[root-of-the-server]__05fnt3n._.js +0 -3
  645. package/.next/server/chunks/[root-of-the-server]__05fnt3n._.js.map +0 -1
  646. package/.next/server/chunks/[root-of-the-server]__077tsd.._.js +0 -20
  647. package/.next/server/chunks/[root-of-the-server]__077tsd.._.js.map +0 -1
  648. package/.next/server/chunks/[root-of-the-server]__08wy1jr._.js +0 -3
  649. package/.next/server/chunks/[root-of-the-server]__08wy1jr._.js.map +0 -1
  650. package/.next/server/chunks/[root-of-the-server]__0adhu1m._.js +0 -3
  651. package/.next/server/chunks/[root-of-the-server]__0adhu1m._.js.map +0 -1
  652. package/.next/server/chunks/[root-of-the-server]__0aqv02v._.js +0 -3
  653. package/.next/server/chunks/[root-of-the-server]__0aqv02v._.js.map +0 -1
  654. package/.next/server/chunks/[root-of-the-server]__0cawhfq._.js +0 -3
  655. package/.next/server/chunks/[root-of-the-server]__0cawhfq._.js.map +0 -1
  656. package/.next/server/chunks/[root-of-the-server]__0d_-_k.._.js +0 -3
  657. package/.next/server/chunks/[root-of-the-server]__0d_-_k.._.js.map +0 -1
  658. package/.next/server/chunks/[root-of-the-server]__0f6bxfl._.js +0 -3
  659. package/.next/server/chunks/[root-of-the-server]__0f6bxfl._.js.map +0 -1
  660. package/.next/server/chunks/[root-of-the-server]__0h15edq._.js +0 -3
  661. package/.next/server/chunks/[root-of-the-server]__0h15edq._.js.map +0 -1
  662. package/.next/server/chunks/[root-of-the-server]__0k.vegl._.js +0 -3
  663. package/.next/server/chunks/[root-of-the-server]__0k.vegl._.js.map +0 -1
  664. package/.next/server/chunks/[root-of-the-server]__0kltbce._.js +0 -3
  665. package/.next/server/chunks/[root-of-the-server]__0kltbce._.js.map +0 -1
  666. package/.next/server/chunks/[root-of-the-server]__0mn04fw._.js +0 -3
  667. package/.next/server/chunks/[root-of-the-server]__0mn04fw._.js.map +0 -1
  668. package/.next/server/chunks/[root-of-the-server]__0o29v8c._.js +0 -3
  669. package/.next/server/chunks/[root-of-the-server]__0o4qfn9._.js +0 -3
  670. package/.next/server/chunks/[root-of-the-server]__0o7ya7r._.js +0 -3
  671. package/.next/server/chunks/[root-of-the-server]__0o7ya7r._.js.map +0 -1
  672. package/.next/server/chunks/[root-of-the-server]__0p3fo6l._.js +0 -6
  673. package/.next/server/chunks/[root-of-the-server]__0p3fo6l._.js.map +0 -1
  674. package/.next/server/chunks/[root-of-the-server]__0p6tutt._.js +0 -3
  675. package/.next/server/chunks/[root-of-the-server]__0pn3wsx._.js +0 -3
  676. package/.next/server/chunks/[root-of-the-server]__0pn3wsx._.js.map +0 -1
  677. package/.next/server/chunks/[root-of-the-server]__0rg9ifx._.js +0 -3
  678. package/.next/server/chunks/[root-of-the-server]__0x.-194._.js +0 -3
  679. package/.next/server/chunks/[root-of-the-server]__0x.-194._.js.map +0 -1
  680. package/.next/server/chunks/[root-of-the-server]__0x.a_yh._.js +0 -3
  681. package/.next/server/chunks/[root-of-the-server]__0x.a_yh._.js.map +0 -1
  682. package/.next/server/chunks/[root-of-the-server]__0~h2uqi._.js +0 -3
  683. package/.next/server/chunks/[root-of-the-server]__139~d6a._.js +0 -3
  684. package/.next/server/chunks/[root-of-the-server]__139~d6a._.js.map +0 -1
  685. package/.next/server/chunks/_next-internal_server_app_api_anet_config_route_actions_0xzy73j.js +0 -3
  686. package/.next/server/chunks/_next-internal_server_app_api_auth_login_route_actions_0zukc38.js +0 -3
  687. package/.next/server/chunks/_next-internal_server_app_api_auth_logout_route_actions_0fm~3ij.js +0 -3
  688. package/.next/server/chunks/_next-internal_server_app_api_auth_v3_route_actions_0ndzs5l.js +0 -3
  689. package/.next/server/chunks/_next-internal_server_app_api_hub_audit-log_route_actions_11k8fqt.js +0 -3
  690. package/.next/server/chunks/_next-internal_server_app_api_hub_auth_route_actions_0gs7ttk.js +0 -3
  691. package/.next/server/chunks/_next-internal_server_app_api_hub_broadcast_route_actions_0ads-kd.js +0 -3
  692. package/.next/server/chunks/_next-internal_server_app_api_hub_events_route_actions_0opktby.js +0 -3
  693. package/.next/server/chunks/_next-internal_server_app_api_hub_health_route_actions_0tzzt~x.js +0 -3
  694. package/.next/server/chunks/_next-internal_server_app_api_hub_inbox_route_actions_0xvslrg.js +0 -3
  695. package/.next/server/chunks/_next-internal_server_app_api_hub_license_route_actions_0i3tlr3.js +0 -3
  696. package/.next/server/chunks/_next-internal_server_app_api_hub_messages_route_actions_08-gi-s.js +0 -3
  697. package/.next/server/chunks/_next-internal_server_app_api_hub_networks_route_actions_02vejq2.js +0 -3
  698. package/.next/server/chunks/_next-internal_server_app_api_hub_nodes_route_actions_0nx8ryn.js +0 -3
  699. package/.next/server/chunks/_next-internal_server_app_api_hub_register_route_actions_086wi_3.js +0 -3
  700. package/.next/server/chunks/_next-internal_server_app_api_hub_send_route_actions_0-ga_ug.js +0 -3
  701. package/.next/server/chunks/_next-internal_server_app_api_hub_server-logs_route_actions_00euexv.js +0 -3
  702. package/.next/server/chunks/_next-internal_server_app_api_hub_session_route_actions_041wa62.js +0 -3
  703. package/.next/server/chunks/_next-internal_server_app_api_hub_stats_route_actions_1242~od.js +0 -3
  704. package/.next/server/chunks/_next-internal_server_app_api_hub_status_route_actions_0aml09a.js +0 -3
  705. package/.next/server/chunks/_next-internal_server_app_api_hub_task-events_route_actions_02v1tmm.js +0 -3
  706. package/.next/server/chunks/_next-internal_server_app_api_hub_tasks_route_actions_0nl77v4.js +0 -3
  707. package/.next/server/chunks/_next-internal_server_app_api_hub_tmux_route_actions_0u~aaza.js +0 -3
  708. package/.next/server/chunks/_next-internal_server_app_api_hub_tokens_route_actions_09hzf_1.js +0 -3
  709. package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_095lj93.js +0 -3
  710. package/.next/server/chunks/node_modules_next_11synfn._.js +0 -10
  711. package/.next/server/chunks/node_modules_next_11synfn._.js.map +0 -1
  712. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0yubv2d.js +0 -3
  713. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0yubv2d.js.map +0 -1
  714. package/.next/server/chunks/ssr/[root-of-the-server]__014uja_._.js +0 -3
  715. package/.next/server/chunks/ssr/[root-of-the-server]__014uja_._.js.map +0 -1
  716. package/.next/server/chunks/ssr/[root-of-the-server]__02hi65f._.js +0 -3
  717. package/.next/server/chunks/ssr/[root-of-the-server]__02hi65f._.js.map +0 -1
  718. package/.next/server/chunks/ssr/[root-of-the-server]__02xqa5z._.js +0 -3
  719. package/.next/server/chunks/ssr/[root-of-the-server]__02xqa5z._.js.map +0 -1
  720. package/.next/server/chunks/ssr/[root-of-the-server]__04ph1de._.js +0 -3
  721. package/.next/server/chunks/ssr/[root-of-the-server]__04ph1de._.js.map +0 -1
  722. package/.next/server/chunks/ssr/[root-of-the-server]__05wc5-z._.js +0 -3
  723. package/.next/server/chunks/ssr/[root-of-the-server]__05wc5-z._.js.map +0 -1
  724. package/.next/server/chunks/ssr/[root-of-the-server]__06-2p1a._.js +0 -33
  725. package/.next/server/chunks/ssr/[root-of-the-server]__06-2p1a._.js.map +0 -1
  726. package/.next/server/chunks/ssr/[root-of-the-server]__08qr2ji._.js.map +0 -1
  727. package/.next/server/chunks/ssr/[root-of-the-server]__09l8xaa._.js +0 -3
  728. package/.next/server/chunks/ssr/[root-of-the-server]__09l8xaa._.js.map +0 -1
  729. package/.next/server/chunks/ssr/[root-of-the-server]__09z7o2x._.js +0 -19
  730. package/.next/server/chunks/ssr/[root-of-the-server]__09z7o2x._.js.map +0 -1
  731. package/.next/server/chunks/ssr/[root-of-the-server]__0a0ffmv._.js +0 -3
  732. package/.next/server/chunks/ssr/[root-of-the-server]__0a0ffmv._.js.map +0 -1
  733. package/.next/server/chunks/ssr/[root-of-the-server]__0b7uu-_._.js +0 -3
  734. package/.next/server/chunks/ssr/[root-of-the-server]__0b7uu-_._.js.map +0 -1
  735. package/.next/server/chunks/ssr/[root-of-the-server]__0bl_wqk._.js +0 -3
  736. package/.next/server/chunks/ssr/[root-of-the-server]__0bl_wqk._.js.map +0 -1
  737. package/.next/server/chunks/ssr/[root-of-the-server]__0ft0rpu._.js +0 -3
  738. package/.next/server/chunks/ssr/[root-of-the-server]__0ft0rpu._.js.map +0 -1
  739. package/.next/server/chunks/ssr/[root-of-the-server]__0i~g-2t._.js +0 -3
  740. package/.next/server/chunks/ssr/[root-of-the-server]__0i~g-2t._.js.map +0 -1
  741. package/.next/server/chunks/ssr/[root-of-the-server]__0jl4ukn._.js +0 -3
  742. package/.next/server/chunks/ssr/[root-of-the-server]__0jl4ukn._.js.map +0 -1
  743. package/.next/server/chunks/ssr/[root-of-the-server]__0mook08._.js +0 -3
  744. package/.next/server/chunks/ssr/[root-of-the-server]__0mook08._.js.map +0 -1
  745. package/.next/server/chunks/ssr/[root-of-the-server]__0n46s~k._.js +0 -3
  746. package/.next/server/chunks/ssr/[root-of-the-server]__0n46s~k._.js.map +0 -1
  747. package/.next/server/chunks/ssr/[root-of-the-server]__0qchqb~._.js +0 -3
  748. package/.next/server/chunks/ssr/[root-of-the-server]__0qchqb~._.js.map +0 -1
  749. package/.next/server/chunks/ssr/[root-of-the-server]__0rrm~-q._.js +0 -3
  750. package/.next/server/chunks/ssr/[root-of-the-server]__0rrm~-q._.js.map +0 -1
  751. package/.next/server/chunks/ssr/[root-of-the-server]__0w2ay2h._.js +0 -3
  752. package/.next/server/chunks/ssr/[root-of-the-server]__0w2ay2h._.js.map +0 -1
  753. package/.next/server/chunks/ssr/[root-of-the-server]__0xjish~._.js +0 -3
  754. package/.next/server/chunks/ssr/[root-of-the-server]__0xjish~._.js.map +0 -1
  755. package/.next/server/chunks/ssr/[root-of-the-server]__0xm3h9x._.js +0 -3
  756. package/.next/server/chunks/ssr/[root-of-the-server]__0xm3h9x._.js.map +0 -1
  757. package/.next/server/chunks/ssr/[root-of-the-server]__0ywihy_._.js +0 -8
  758. package/.next/server/chunks/ssr/[root-of-the-server]__0ywihy_._.js.map +0 -1
  759. package/.next/server/chunks/ssr/[root-of-the-server]__12ad1n.._.js +0 -3
  760. package/.next/server/chunks/ssr/[root-of-the-server]__12ad1n.._.js.map +0 -1
  761. package/.next/server/chunks/ssr/_0nne7mz._.js +0 -3
  762. package/.next/server/chunks/ssr/_0nne7mz._.js.map +0 -1
  763. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0k77kol.js +0 -3
  764. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0eq97pa.js +0 -3
  765. package/.next/server/chunks/ssr/_next-internal_server_app_admin_page_actions_0ycnu8f.js +0 -3
  766. package/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_02kefem.js +0 -3
  767. package/.next/server/chunks/ssr/_next-internal_server_app_logs_page_actions_0rvsl~d.js +0 -3
  768. package/.next/server/chunks/ssr/_next-internal_server_app_messages_page_actions_0gsqep_.js +0 -3
  769. package/.next/server/chunks/ssr/_next-internal_server_app_node_page_actions_0wd8cgl.js +0 -3
  770. package/.next/server/chunks/ssr/_next-internal_server_app_nodes_page_actions_0-.rv67.js +0 -3
  771. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js +0 -3
  772. package/.next/server/chunks/ssr/_next-internal_server_app_server-logs_page_actions_0g1gb5c.js +0 -3
  773. package/.next/server/chunks/ssr/_next-internal_server_app_settings_networks_page_actions_09uw.sw.js +0 -3
  774. package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_0mr68ai.js +0 -3
  775. package/.next/server/chunks/ssr/_next-internal_server_app_settings_tokens_page_actions_0yi54x8.js +0 -3
  776. package/.next/server/chunks/ssr/_next-internal_server_app_tasks_[id]_page_actions_0k_hm9g.js +0 -3
  777. package/.next/server/chunks/ssr/_next-internal_server_app_tasks_page_actions_0_2o_cr.js +0 -3
  778. package/.next/server/chunks/ssr/app_0.zbtn5._.js +0 -9
  779. package/.next/server/chunks/ssr/app_0.zbtn5._.js.map +0 -1
  780. package/.next/server/chunks/ssr/app_01y-~mp._.js +0 -3
  781. package/.next/server/chunks/ssr/app_01y-~mp._.js.map +0 -1
  782. package/.next/server/chunks/ssr/app_04n78pr._.js +0 -3
  783. package/.next/server/chunks/ssr/app_04n78pr._.js.map +0 -1
  784. package/.next/server/chunks/ssr/app_0_agk0r._.js +0 -3
  785. package/.next/server/chunks/ssr/app_0_agk0r._.js.map +0 -1
  786. package/.next/server/chunks/ssr/app_0aenxef._.js +0 -3
  787. package/.next/server/chunks/ssr/app_0aenxef._.js.map +0 -1
  788. package/.next/server/chunks/ssr/app_0aum_g5._.js +0 -3
  789. package/.next/server/chunks/ssr/app_0aum_g5._.js.map +0 -1
  790. package/.next/server/chunks/ssr/app_0emvkn2._.js +0 -3
  791. package/.next/server/chunks/ssr/app_0emvkn2._.js.map +0 -1
  792. package/.next/server/chunks/ssr/app_0esuljp._.js +0 -3
  793. package/.next/server/chunks/ssr/app_0esuljp._.js.map +0 -1
  794. package/.next/server/chunks/ssr/app_0izi28j._.js +0 -3
  795. package/.next/server/chunks/ssr/app_0izi28j._.js.map +0 -1
  796. package/.next/server/chunks/ssr/app_components_08ys5y3._.js.map +0 -1
  797. package/.next/server/chunks/ssr/app_server-logs_page_tsx_0_kpp1p._.js.map +0 -1
  798. package/.next/server/chunks/ssr/app_tasks_page_tsx_0z-d6mp._.js +0 -3
  799. package/.next/server/chunks/ssr/app_tasks_page_tsx_0z-d6mp._.js.map +0 -1
  800. package/.next/server/chunks/ssr/node_modules_09w7yel._.js.map +0 -1
  801. package/.next/server/chunks/ssr/node_modules_0ck2~9g._.js +0 -3
  802. package/.next/server/chunks/ssr/node_modules_0ck2~9g._.js.map +0 -1
  803. package/.next/server/chunks/ssr/node_modules_0r_.s40._.js.map +0 -1
  804. package/.next/server/chunks/ssr/node_modules_0vtdjw7._.js +0 -3
  805. package/.next/server/chunks/ssr/node_modules_0vtdjw7._.js.map +0 -1
  806. package/.next/server/chunks/ssr/node_modules_next_0w2y7fz._.js +0 -6
  807. package/.next/server/chunks/ssr/node_modules_next_0w2y7fz._.js.map +0 -1
  808. package/.next/server/chunks/ssr/node_modules_next_dist_0e1izl_._.js +0 -6
  809. package/.next/server/chunks/ssr/node_modules_next_dist_0e1izl_._.js.map +0 -1
  810. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0inhx6q._.js +0 -3
  811. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0inhx6q._.js.map +0 -1
  812. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js +0 -3
  813. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js.map +0 -1
  814. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0lgvd_..js +0 -3
  815. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0lgvd_..js.map +0 -1
  816. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0cjv-23.js +0 -3
  817. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0cjv-23.js.map +0 -1
  818. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_002l7yi.js.map +0 -1
  819. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02suzhc.js.map +0 -1
  820. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_07uu-xq.js.map +0 -1
  821. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0d2yq5t.js.map +0 -1
  822. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0dm~kj8.js.map +0 -1
  823. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0foejvu.js.map +0 -1
  824. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0l-fh0i.js.map +0 -1
  825. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0nsg22r.js.map +0 -1
  826. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0o9vt1n.js.map +0 -1
  827. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0qm1-a1.js.map +0 -1
  828. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0uccf9z.js.map +0 -1
  829. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0uv6jyc.js.map +0 -1
  830. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_10~~o-h.js +0 -4
  831. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_10~~o-h.js.map +0 -1
  832. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13leyhk.js +0 -4
  833. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13leyhk.js.map +0 -1
  834. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13s07li.js.map +0 -1
  835. package/.next/static/chunks/0-hlcuoemhe7w.js +0 -7
  836. package/.next/static/chunks/0257pdz1-imal.js +0 -2
  837. package/.next/static/chunks/02_zpo7taex9o.js +0 -7
  838. package/.next/static/chunks/06n3d~fbbtagk.js +0 -1
  839. package/.next/static/chunks/07eba1lz2u3p4.js +0 -1
  840. package/.next/static/chunks/0av2~0.96~d~g.js +0 -1
  841. package/.next/static/chunks/0bazlsfn4c~8b.js +0 -1
  842. package/.next/static/chunks/0c1bp~g7.8ru..js +0 -1
  843. package/.next/static/chunks/0e-.zgw81gela.js +0 -31
  844. package/.next/static/chunks/0g9aof0ob_fcj.js +0 -1
  845. package/.next/static/chunks/0s8jo6jypzkx5.js +0 -1
  846. package/.next/static/chunks/0u359llqm1_01.js +0 -1
  847. package/.next/static/chunks/0ubqqhhpsaez4.js +0 -1
  848. package/.next/static/chunks/0ux36eo4a-0ry.css +0 -2
  849. package/.next/static/chunks/0yi50lip8s7cb.js +0 -1
  850. package/.next/static/chunks/0~qw9kxksr1v2.js +0 -1
  851. package/.next/static/chunks/12gprw3l0kvvf.js +0 -1
  852. package/.next/static/chunks/12yuo353giomx.js +0 -1
  853. package/.next/static/chunks/14bsg3_-taiw4.js +0 -1
  854. package/.next/static/chunks/160ungf2_xdzs.js +0 -1
  855. /package/.next/build/chunks/{[root-of-the-server]__0ubbtyl._.js.map → [root-of-the-server]__0tgc-8p._.js.map} +0 -0
  856. /package/.next/build/chunks/{[turbopack-node]_transforms_postcss_ts_06e.r3r._.js.map → [turbopack-node]_transforms_postcss_ts_0r4x5ys._.js.map} +0 -0
  857. /package/.next/server/chunks/{_next-internal_server_app_api_anet_config_route_actions_0xzy73j.js.map → 0ci9_nt-network-dashboard__next-internal_server_app_api_auth_v3_route_actions_0f5nbzr.js.map} +0 -0
  858. /package/.next/server/chunks/{_next-internal_server_app_api_auth_login_route_actions_0zukc38.js.map → 0ci9_nt-network-dashboard__next-internal_server_app_favicon_ico_route_actions_0t0eu9r.js.map} +0 -0
  859. /package/.next/server/chunks/{_next-internal_server_app_api_auth_logout_route_actions_0fm~3ij.js.map → 0ykm__next-internal_server_app_api_anet_config_route_actions_0a~v55_.js.map} +0 -0
  860. /package/.next/server/chunks/{_next-internal_server_app_api_auth_v3_route_actions_0ndzs5l.js.map → 0ykm__next-internal_server_app_api_auth_login_route_actions_0xnxfs4.js.map} +0 -0
  861. /package/.next/server/chunks/{_next-internal_server_app_api_hub_audit-log_route_actions_11k8fqt.js.map → 0ykm__next-internal_server_app_api_auth_logout_route_actions_0p8p0rn.js.map} +0 -0
  862. /package/.next/server/chunks/{_next-internal_server_app_api_hub_auth_route_actions_0gs7ttk.js.map → 0ykm__next-internal_server_app_api_hub_audit-log_route_actions_06uquwi.js.map} +0 -0
  863. /package/.next/server/chunks/{_next-internal_server_app_api_hub_broadcast_route_actions_0ads-kd.js.map → 0ykm__next-internal_server_app_api_hub_auth_route_actions_0f_y1ey.js.map} +0 -0
  864. /package/.next/server/chunks/{_next-internal_server_app_api_hub_events_route_actions_0opktby.js.map → 0ykm__next-internal_server_app_api_hub_broadcast_route_actions_0ao3j43.js.map} +0 -0
  865. /package/.next/server/chunks/{_next-internal_server_app_api_hub_health_route_actions_0tzzt~x.js.map → 0ykm__next-internal_server_app_api_hub_events_route_actions_0_5ndld.js.map} +0 -0
  866. /package/.next/server/chunks/{_next-internal_server_app_api_hub_inbox_route_actions_0xvslrg.js.map → 0ykm__next-internal_server_app_api_hub_health_route_actions_0mpzl74.js.map} +0 -0
  867. /package/.next/server/chunks/{_next-internal_server_app_api_hub_license_route_actions_0i3tlr3.js.map → 0ykm__next-internal_server_app_api_hub_inbox_route_actions_0stoyto.js.map} +0 -0
  868. /package/.next/server/chunks/{_next-internal_server_app_api_hub_messages_route_actions_08-gi-s.js.map → 0ykm__next-internal_server_app_api_hub_license_route_actions_0a4.fuh.js.map} +0 -0
  869. /package/.next/server/chunks/{_next-internal_server_app_api_hub_networks_route_actions_02vejq2.js.map → 0ykm__next-internal_server_app_api_hub_messages_route_actions_059rw1o.js.map} +0 -0
  870. /package/.next/server/chunks/{_next-internal_server_app_api_hub_nodes_route_actions_0nx8ryn.js.map → 0ykm__next-internal_server_app_api_hub_networks_route_actions_03sehpn.js.map} +0 -0
  871. /package/.next/server/chunks/{_next-internal_server_app_api_hub_register_route_actions_086wi_3.js.map → 0ykm__next-internal_server_app_api_hub_nodes_route_actions_11fbp28.js.map} +0 -0
  872. /package/.next/server/chunks/{_next-internal_server_app_api_hub_send_route_actions_0-ga_ug.js.map → 0ykm__next-internal_server_app_api_hub_register_route_actions_0l.d7~n.js.map} +0 -0
  873. /package/.next/server/chunks/{_next-internal_server_app_api_hub_server-logs_route_actions_00euexv.js.map → 0ykm__next-internal_server_app_api_hub_send_route_actions_0.p82vy.js.map} +0 -0
  874. /package/.next/server/chunks/{_next-internal_server_app_api_hub_session_route_actions_041wa62.js.map → 0ykm__next-internal_server_app_api_hub_server-logs_route_actions_05~c5lb.js.map} +0 -0
  875. /package/.next/server/chunks/{_next-internal_server_app_api_hub_stats_route_actions_1242~od.js.map → 0ykm__next-internal_server_app_api_hub_servers_route_actions_08-m-cs.js.map} +0 -0
  876. /package/.next/server/chunks/{_next-internal_server_app_api_hub_status_route_actions_0aml09a.js.map → 0ykm__next-internal_server_app_api_hub_session_route_actions_0b9ef2i.js.map} +0 -0
  877. /package/.next/server/chunks/{_next-internal_server_app_api_hub_task-events_route_actions_02v1tmm.js.map → 0ykm__next-internal_server_app_api_hub_stats_route_actions_03u65u0.js.map} +0 -0
  878. /package/.next/server/chunks/{_next-internal_server_app_api_hub_tasks_route_actions_0nl77v4.js.map → 0ykm__next-internal_server_app_api_hub_status_route_actions_0_71ear.js.map} +0 -0
  879. /package/.next/server/chunks/{_next-internal_server_app_api_hub_tmux_route_actions_0u~aaza.js.map → 0ykm__next-internal_server_app_api_hub_task-events_route_actions_07md_ee.js.map} +0 -0
  880. /package/.next/server/chunks/{_next-internal_server_app_api_hub_tokens_route_actions_09hzf_1.js.map → 0ykm__next-internal_server_app_api_hub_tasks_route_actions_0er3uvk.js.map} +0 -0
  881. /package/.next/server/chunks/{_next-internal_server_app_favicon_ico_route_actions_095lj93.js.map → 0ykm__next-internal_server_app_api_hub_tmux_route_actions_0o_1-8u.js.map} +0 -0
  882. /package/.next/server/chunks/{ssr/_next-internal_server_app__global-error_page_actions_0k77kol.js.map → 0ykm__next-internal_server_app_api_hub_tokens_route_actions_09doluz.js.map} +0 -0
  883. /package/.next/server/chunks/ssr/{_next-internal_server_app__not-found_page_actions_0eq97pa.js.map → 0dwh_ent-network-dashboard__next-internal_server_app_server-logs_page_actions_0hkk815.js.map} +0 -0
  884. /package/.next/server/chunks/ssr/{_next-internal_server_app_admin_page_actions_0ycnu8f.js.map → 0yas_gent-network-dashboard__next-internal_server_app__not-found_page_actions_0u.f-rz.js.map} +0 -0
  885. /package/.next/server/chunks/ssr/{_next-internal_server_app_login_page_actions_02kefem.js.map → 0yas_gent-network-dashboard__next-internal_server_app_tasks_[id]_page_actions_0r3~lho.js.map} +0 -0
  886. /package/.next/server/chunks/ssr/{_next-internal_server_app_logs_page_actions_0rvsl~d.js.map → 0ykm__next-internal_server_app__global-error_page_actions_100fxls.js.map} +0 -0
  887. /package/.next/server/chunks/ssr/{_next-internal_server_app_messages_page_actions_0gsqep_.js.map → 0ykm__next-internal_server_app_settings_networks_page_actions_0jgy57m.js.map} +0 -0
  888. /package/.next/server/chunks/ssr/{_next-internal_server_app_node_page_actions_0wd8cgl.js.map → 0ykm__next-internal_server_app_settings_tokens_page_actions_0l5h.k~.js.map} +0 -0
  889. /package/.next/server/chunks/ssr/{_next-internal_server_app_nodes_page_actions_0-.rv67.js.map → agent-network-dashboard__next-internal_server_app_admin_page_actions_0i~.x~j.js.map} +0 -0
  890. /package/.next/server/chunks/ssr/{_next-internal_server_app_page_actions_09-gtaw.js.map → agent-network-dashboard__next-internal_server_app_login_page_actions_0frwl15.js.map} +0 -0
  891. /package/.next/server/chunks/ssr/{_next-internal_server_app_server-logs_page_actions_0g1gb5c.js.map → agent-network-dashboard__next-internal_server_app_logs_page_actions_0xa2ox_.js.map} +0 -0
  892. /package/.next/server/chunks/ssr/{_next-internal_server_app_settings_networks_page_actions_09uw.sw.js.map → agent-network-dashboard__next-internal_server_app_messages_page_actions_10j3tg4.js.map} +0 -0
  893. /package/.next/server/chunks/ssr/{_next-internal_server_app_settings_page_actions_0mr68ai.js.map → agent-network-dashboard__next-internal_server_app_node_page_actions_0sl4ntd.js.map} +0 -0
  894. /package/.next/server/chunks/ssr/{_next-internal_server_app_settings_tokens_page_actions_0yi54x8.js.map → agent-network-dashboard__next-internal_server_app_nodes_page_actions_0cpgkfs.js.map} +0 -0
  895. /package/.next/server/chunks/ssr/{_next-internal_server_app_tasks_[id]_page_actions_0k_hm9g.js.map → agent-network-dashboard__next-internal_server_app_page_actions_08nuo36.js.map} +0 -0
  896. /package/.next/server/chunks/ssr/{_next-internal_server_app_tasks_page_actions_0_2o_cr.js.map → agent-network-dashboard__next-internal_server_app_settings_page_actions_0iv.lmk.js.map} +0 -0
  897. /package/.next/static/{dTHZkhRTLxCqMY86_0Ln9 → JHK0J7_QlNFyBKmLR_1Tt}/_buildManifest.js +0 -0
  898. /package/.next/static/{dTHZkhRTLxCqMY86_0Ln9 → JHK0J7_QlNFyBKmLR_1Tt}/_clientMiddlewareManifest.js +0 -0
  899. /package/.next/static/{dTHZkhRTLxCqMY86_0Ln9 → JHK0J7_QlNFyBKmLR_1Tt}/_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:"暖色橙紫"}],r="anet-theme";function n(e){"u">typeof document&&document.documentElement.setAttribute("data-theme",e)}e.s(["ThemeProvider",0,function({children:e}){return(0,a.useEffect)(()=>{n(localStorage.getItem(r)||"cyber")},[]),(0,t.jsx)(t.Fragment,{children:e})},"ThemeSwitcher",0,function({compact:e=!1}){let[o,l]=(0,a.useState)("cyber"),[i,c]=(0,a.useState)(!1);(0,a.useEffect)(()=>{let e=localStorage.getItem(r)||"cyber";l(e),n(e)},[]);let d=s.find(e=>e.id===o)||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;l(t=e.id),localStorage.setItem(r,t),n(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===o?"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===o&&(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),r=e.i(23910),n=e.i(12629),o=e.i(11449),l=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,p]=(0,r.useState)(!1),[u,g]=(0,r.useState)(!1),{networkId:f,setNetworkId:v}=(0,o.useNetworkId)(),{data:b}=(0,n.default)("/api/hub/networks",i,{refreshInterval:15e3,dedupingInterval:1e4}),{data:y}=(0,n.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 r;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] ${("/"===(r=a.href)?"/"===e:"/settings"===r?"/settings"===e:e.startsWith(r))?"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)(x,{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)(l.ThemeSwitcher,{compact:h}),(0,t.jsx)("button",{onClick:()=>p(!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 x({collapsed:e}){let{data:a}=(0,n.default)("/api/hub/status",m,{refreshInterval:1e4,dedupingInterval:4e3}),r=a?.sessions||[],o=r.filter(e=>e.status&&"offline"!==e.status).length,l=r.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)(p,{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)(p,{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 ${o>0?"bg-emerald-400 anet-brand-pulse":"bg-gray-600"}`,"aria-hidden":!0}),0===l?(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:o}),(0,t.jsxs)("span",{className:"text-gray-600",children:["/",l]})," online"]})]})]})]})}function p({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:o,error:l}=(0,n.default)("/api/hub/stats",u,{refreshInterval:15e3,dedupingInterval:5e3,shouldRetryOnError:!1}),{data:i,error:c}=(0,n.default)("/api/hub/health",u,{refreshInterval:15e3,dedupingInterval:5e3,shouldRetryOnError:!1}),[d,h]=(0,r.useState)(()=>"1"===sessionStorage.getItem("anet-hb-dismissed"));if(d)return null;let m=l&&c||i&&!1===i.ok,x=o?.tasks?.by_status?.find(e=>"failed"===e.status)?.count||0,p=o?.nodes?.total===0,g=null;if(m?(e="red",a="CommHub unreachable — agents may be offline",g={label:"Open Settings",href:"/settings"}):x>0?(e="amber",a=`${x} task${x>1?"s":""} failed recently`,g={label:"Review failures",href:"/tasks?status=failed"}):(p?(e="green",a="Waiting for first agent"):(e="green",a="All systems go"),g=null),"green"===e&&!o)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(),r=0,n=0,o=0,l=0,i=[];for(;r<a.length&&n<s.length;)a[r]===s[n]?(o+=2+l,l++,i.push(r),(0===r||/[\s·:_/-]/.test(a[r-1]))&&(o+=4),n++):l=0,r++;return n<s.length?{score:-1,indices:[]}:{score:o-.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),r=Array.from(e);return(0,t.jsx)(t.Fragment,{children:r.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-clear-topo-pins",title:"Clear topology filters",hint:"release pinned status + group + vendor",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-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,n]=(0,r.useState)(!1),[o,l]=(0,r.useState)(""),[i,c]=(0,r.useState)(0),d=(0,r.useRef)(null);(0,r.useEffect)(()=>{let e=e=>{if((e.metaKey||e.ctrlKey)&&"k"===e.key.toLowerCase()){e.preventDefault(),n(e=>!e);return}if("/"===e.key&&document.activeElement?.tagName!=="INPUT"&&document.activeElement?.tagName!=="TEXTAREA"&&!s){e.preventDefault(),n(!0);return}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[s]),(0,r.useEffect)(()=>{s&&(l(""),c(0),setTimeout(()=>d.current?.focus(),50))},[s]);let[h,m]=(0,r.useState)([]);(0,r.useEffect)(()=>{s&&m(v())},[s]);let[x,p]=(0,r.useState)([]);(0,r.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 r=(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)}`)})),n=(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)}`)}));p([...r,...n])}catch{}})(),()=>{e=!0}},[s]);let u=(0,r.useMemo)(()=>{let e=[...w,...x];if(!o.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,o),a=e.hint?y(e.hint,o):{score:-1,indices:[]},s=y(e.id,o);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}))},[o,h,x]);if((0,r.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:()=>n(!1),onKeyDown:t=>{if("Escape"===t.key)return void n(!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),n(!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:o,onChange:e=>{l(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 "',o,'"']}):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++,r=s===i;return(0,t.jsxs)("button",{onMouseEnter:()=>c(s),onClick:()=>{b(a.id),a.perform(e),n(!1)},className:`anet-cmdk-row w-full flex items-center gap-3 px-3 py-2 text-left text-sm ${r?"bg-cyan-500/10 text-cyan-300":"text-gray-300 hover:bg-[#1a1a2a]/50"}`,children:[(0,t.jsx)("span",{className:r?"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||[]})})]}),r&&(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)'}]}],C={o:"/",t:"/tasks",n:"/nodes",m:"/messages",w:"/settings/networks",a:"/admin",l:"/logs",s:"/settings"};function E(){let[e,s]=(0,r.useState)(!1),n=(0,a.useRouter)(),o=(0,r.useRef)(0);return((0,r.useEffect)(()=>{let t=t=>{let a=document.activeElement?.tagName,r="INPUT"===a||"TEXTAREA"===a||document.activeElement?.isContentEditable;if("?"===t.key&&!r){t.preventDefault(),s(e=>!e);return}if("Escape"===t.key&&e&&s(!1),!r&&!t.metaKey&&!t.ctrlKey&&!t.altKey){if("g"===t.key){o.current=Date.now();return}if(Date.now()-o.current<1500){let e=C[t.key.toLowerCase()];e&&(t.preventDefault(),o.current=0,n.push(e))}}};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[e,n]),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 _({pct:e,label:a}){let s=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)"},r=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(r),"%"]})]}),(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:`${r}%`,background:s.fill}})})]})}function A(){let[e,a]=(0,r.useState)(!1);(0,r.useEffect)(()=>{try{"1"===localStorage.getItem("anet-servers-drawer")&&a(!0)}catch{}},[]);let{data:s,error:o}=(0,n.default)(e?"/api/hub/servers":null,S,{refreshInterval:5e3,dedupingInterval:3e3}),l=s?.servers??[],i=s?.unavailable===!0,c=l.filter(e=>"online"===e.status).length,d=e&&!s&&!o;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:[c,"/",l.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:[d&&(0,t.jsx)("div",{className:"text-[10px] text-[var(--fg-muted)] font-mono text-center py-4",children:"loading servers…"}),o&&!s&&(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"}),i&&(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"})]}),!d&&!o&&!i&&0===l.length&&(0,t.jsx)("div",{className:"text-[10px] text-[var(--fg-muted)] font-mono text-center py-4",children:"no servers reporting yet"}),l.map(e=>{let a="offline"===e.status,s=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;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},title:e.ip?`${e.hostname} \xb7 ${e.ip}`:e.hostname,children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,t.jsxs)("div",{className:"min-w-0 flex items-baseline gap-1.5",children:[(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:"text-[10px] text-[var(--fg-muted)] font-mono tabular-nums shrink-0",children:[e.agent_count," agent",1===e.agent_count?"":"s"]})]}),!a&&null!=s&&(0,t.jsx)(_,{pct:s,label:`CPU ${e.cpu_load_1min.toFixed(2)}/${e.cpu_cores}`}),!a&&null!=r&&(0,t.jsx)(_,{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"})]},e.hostname)}),l.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 L=["/login"];e.s(["AppShell",0,function({children:e}){let s=(0,a.usePathname)();return L.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)(E,{}),(0,t.jsx)(A,{})]})}],22485)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,3479,59746,e=>{"use strict";function t(e){if(!e)return null;let t=Date.parse(e.includes("T")?e:e.replace(" ","T")+"Z");return Number.isFinite(t)?t:null}function s(e){let s=t(e);if(null===s)return null;let a=Math.floor((Date.now()-s)/1e3);return a<0?"just now":a<60?`${a}s ago`:a<3600?`${Math.floor(a/60)}m ago`:a<86400?`${Math.floor(a/3600)}h ago`:`${Math.floor(a/86400)}d ago`}e.s(["parseHubTime",0,t,"relativeAgo",0,s],59746),e.s(["formatUptime",0,function(e){let t=Math.floor(e/3600),s=Math.floor(e%3600/60);return t>0?`${t}h ${s}m`:`${s}m`},"previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){return s(e)??"--"}],3479)},46228,e=>{"use strict";var t=e.i(22381);let s=[180,200,220,270,300,330,30,90];function a(e){let t=0;for(let s=0;s<e.length;s++)t=31*t+e.charCodeAt(s)>>>0;let a=s[t%s.length];return{bg:`hsl(${a} 55% 22%)`,ring:`hsl(${a} 60% 45%)`,text:`hsl(${a} 80% 78%)`}}function r(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:s=28,className:i=""}){let n=a(e),l=Math.max(9,Math.round(.42*s));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${i}`,style:{width:s,height:s,fontSize:l,backgroundColor:n.bg,borderColor:n.ring,color:n.text},title:e,"aria-hidden":!0,children:r(e)})},"aliasAvatarColors",0,a,"aliasInitial",0,r])},76161,e=>{"use strict";var t=e.i(22381),s=e.i(23910),a=e.i(56839);let r={nodes:{title:"No agents in this network",sub:"Agent sessions will appear here once they connect to the CommHub."},tasks:{title:"No tasks yet",sub:"Tasks will appear here when agents send them via CommHub."},messages:{title:"No messages",sub:"Messages between agents will appear here."},logs:{title:"No audit logs",sub:"Events will appear here when users register, login, or perform actions."},tokens:{title:"No API tokens",sub:"Create one to authenticate CLI tools and external integrations."},networks:{title:"No networks found",sub:"Create one or sign in with V3 auth to see your networks."},generic:{title:"Nothing here yet",sub:"Data will appear here once available."}};function i({variant:e,size:s}){let a={width:s,height:s},r={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,t.jsxs)("g",{...r,children:[(0,t.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,t.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,t.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,t.jsxs)("g",{...r,children:[(0,t.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,t.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,t.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,t.jsxs)("g",{...r,children:[(0,t.jsx)("path",{d:"M14 18 h36 a3 3 0 0 1 3 3 v18 a3 3 0 0 1 -3 3 h-18 l-8 6 v-6 h-10 a3 3 0 0 1 -3 -3 v-18 a3 3 0 0 1 3 -3 z"}),(0,t.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,t.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,t.jsxs)("g",{...r,children:[(0,t.jsx)("path",{d:"M18 12 h22 l8 8 v32 a2 2 0 0 1 -2 2 h-28 a2 2 0 0 1 -2 -2 v-38 a2 2 0 0 1 2 -2 z"}),(0,t.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,t.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,t.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,t.jsxs)("g",{...r,children:[(0,t.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,t.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,t.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,t.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,t.jsxs)("g",{...r,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,t.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,t.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,t.jsxs)("g",{...r,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function n({variant:e="generic",title:s,sub:l,cta:o,compact:c=!1}){let d=r[e],x=s??d.title,h=l??d.sub;return(0,t.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)(i,{variant:e,size:c?40:56})}),(0,t.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(0,t.jsx)("p",{className:`text-gray-500 ${c?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:h}),o&&(0,t.jsx)("div",{className:"mt-4",children:o.href?(0,t.jsxs)(a.default,{href:o.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,t.jsxs)("button",{onClick:o.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}function l({children:e}){return(0,t.jsx)("div",{className:"max-w-2xl mx-auto rounded-xl border border-[#2a2a4a] bg-[#111128] shadow-lg shadow-black/20",children:e})}function o({cmd:e}){let[a,r]=(0,s.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e),r(!0),setTimeout(()=>r(!1),1800)}catch{}};return(0,t.jsxs)("div",{className:"anet-empty-cmd flex items-center gap-2 bg-[#0a0a15] border border-[#2a2a4a] rounded-lg pl-4 pr-1.5 py-1.5 text-xs sm:text-sm",children:[(0,t.jsx)("code",{className:"text-cyan-300 font-mono select-all",children:e}),(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":a?"Copied":"Copy command",className:"shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] transition-colors",children:a?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-green-400",children:[(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M20 6 9 17l-5-5"})}),"Copied"]}):(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,t.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]})}e.s(["EmptyState",0,n,"NodesEmptyState",0,function({hint:e,taskHistoryCount:s=0}){return e?.global_count?(0,t.jsx)(l,{children:(0,t.jsx)(n,{variant:"nodes",title:"No agents in this network",sub:`Server has ${e.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`})}):s>0?(0,t.jsx)(l,{children:(0,t.jsx)(n,{variant:"nodes",title:"No agents online",sub:`Every agent in this network is currently offline. ${s.toLocaleString()} task${1===s?"":"s"} in history — they may have finished their work or disconnected.`,cta:{label:"View task history",href:"/tasks"}})}):(0,t.jsx)(l,{children:(0,t.jsxs)("div",{className:"text-center py-16 px-4",role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)("svg",{viewBox:"0 0 64 64",width:56,height:56,children:(0,t.jsxs)("g",{stroke:"currentColor",strokeWidth:"1.5",fill:"none",children:[(0,t.jsx)("rect",{x:"10",y:"20",width:"44",height:"28",rx:"2"}),(0,t.jsx)("rect",{x:"20",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"32",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"44",y:"32",width:"4",height:"8",opacity:"0.5"}),(0,t.jsx)("line",{x1:"10",y1:"26",x2:"54",y2:"26",opacity:"0.4"}),(0,t.jsx)("circle",{cx:"14",cy:"23",r:"0.8",fill:"currentColor"})]})})}),(0,t.jsx)("h3",{className:"font-medium text-gray-300 text-base",children:"Spin up your first agent"}),(0,t.jsx)("p",{className:"text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed",children:"Run this in a fresh terminal to register an agent with this CommHub:"}),(0,t.jsx)("div",{className:"mt-4 inline-block",children:(0,t.jsx)(o,{cmd:"npx --yes @sleep2agi/agent-network init"})}),(0,t.jsx)("div",{className:"mt-3",children:(0,t.jsxs)("a",{href:"https://anet.sh",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300",children:["Full quickstart guide",(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})})}])},46860,e=>{"use strict";var t=e.i(22381),s=e.i(23910),a=e.i(56839),r=e.i(3479),i=e.i(11449),n=e.i(76161),l=e.i(46228);let o={register:"bg-green-500/10 text-green-300 border-green-500/20",login:"bg-blue-500/10 text-blue-300 border-blue-500/20",login_failed:"bg-red-500/10 text-red-300 border-red-500/20",create_network:"bg-purple-500/10 text-purple-300 border-purple-500/20",send_task:"bg-cyan-500/10 text-cyan-300 border-cyan-500/20"},c={register:"#4ade80",login:"#60a5fa",login_failed:"#ef4444",create_network:"#a78bfa",send_task:"#22d3ee"};e.s(["default",0,function(){let e,d,{networkId:x}=(0,i.useNetworkId)(),[h,m]=(0,s.useState)([]),[g,u]=(0,s.useState)(!0),[y,p]=(0,s.useState)(""),[j,b]=(0,s.useState)(""),f=(0,s.useCallback)(async()=>{try{let e=new URLSearchParams({limit:"100"});x&&e.set("network_id",x),j&&e.set("action",j);let t=sessionStorage.getItem("anet_v3_auth");if(t)try{let s=JSON.parse(t);s.token&&e.set("token",s.token)}catch{}let s=await fetch(`/api/hub/audit-log?${e.toString()}`);if(401===s.status)return void window.location.assign("/login");let a=await s.json();m(a.logs||[]),p(a.error&&!a.logs?.length?a.error:"")}catch(e){p(e instanceof Error?e.message:"fetch failed")}finally{u(!1)}},[j,x]);return(0,s.useEffect)(()=>{u(!0),f();let e=setInterval(f,1e4);return()=>clearInterval(e)},[f]),(0,t.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,t.jsx)("div",{className:"flex items-center gap-4 mb-6",children:(0,t.jsx)("h1",{className:"text-2xl font-bold text-white lg:ml-0 ml-10",children:"Audit Log"})}),(0,t.jsx)("div",{className:"mb-6 flex flex-wrap items-center gap-1 anet-tabstrip-wrap overflow-x-auto sm:overflow-x-visible",children:(e={},h.forEach(t=>{e[t.action]=(e[t.action]||0)+1}),[{key:"",label:"All"},{key:"login",label:"login",dot:c.login},{key:"login_failed",label:"login_failed",dot:c.login_failed},{key:"register",label:"register",dot:c.register},{key:"create_network",label:"create_network",dot:c.create_network},{key:"send_task",label:"send_task",dot:c.send_task}].map(s=>{let a=""===s.key?h.length:e[s.key]||0,r=j===s.key;return(0,t.jsxs)("button",{type:"button",onClick:()=>b(s.key),disabled:0===a&&""!==s.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 shrink-0 whitespace-nowrap ${r?"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:[s.dot&&(0,t.jsx)("span",{"aria-hidden":!0,className:"inline-block w-1.5 h-1.5 rounded-full",style:{backgroundColor:s.dot}}),(0,t.jsx)("span",{children:s.label}),(0,t.jsx)("span",{className:`text-[10px] tabular-nums ${r?"text-cyan-400":"text-gray-600"}`,children:a})]},s.key||"all")}))}),y&&(d=/unauthor|401|forbidden|403|admin/i.test(y),(0,t.jsxs)("div",{className:"anet-warn-chip bg-yellow-900/20 border border-yellow-800/40 text-yellow-300 px-4 py-3 rounded-lg mb-6 text-sm flex items-start gap-3",role:"alert",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"text-base leading-none",children:"⚠"}),(0,t.jsx)("div",{className:"flex-1",children:d?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"font-medium",children:"需要 admin 权限查看审计日志"}),(0,t.jsx)("div",{className:"text-xs opacity-80 mt-1",children:"审计日志记录用户注册 / 登录 / 网络变更等事件,需要 admin 角色。"}),(0,t.jsx)(a.default,{href:"/login",className:"inline-block mt-2 text-xs font-medium underline underline-offset-4 hover:opacity-80",children:"切到 admin 账号 →"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"font-medium",children:"加载失败"}),(0,t.jsx)("div",{className:"text-xs opacity-80 mt-1",children:"请检查 CommHub 是否在线,或稍后重试。"}),(0,t.jsx)("button",{onClick:()=>window.location.reload(),className:"inline-block mt-2 text-xs font-medium underline underline-offset-4 hover:opacity-80",children:"重新加载 →"})]})})]})),g?(0,t.jsx)("div",{className:"animate-pulse space-y-2",children:[1,2,3,4,5].map(e=>(0,t.jsx)("div",{className:"h-14 bg-gray-800/20 rounded-lg"},e))}):0===h.length?(0,t.jsx)(n.EmptyState,{variant:"logs"}):(0,t.jsx)("div",{className:"space-y-2",children:h.map(e=>{let s=e.username||e.user_id;return(0,t.jsxs)("div",{className:"relative bg-[#111128] border border-[#2a2a4a] rounded-lg pl-4 pr-4 py-3 hover:border-[#3a3a5a] transition-colors overflow-hidden",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"absolute left-0 top-0 bottom-0 w-0.5",style:{backgroundColor:c[e.action]||"transparent"}}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-1",children:[(0,t.jsx)("span",{className:`text-xs px-2 py-0.5 rounded-md border ${o[e.action]||"bg-gray-500/10 text-gray-400 border-gray-500/20"}`,children:e.action}),s&&(0,t.jsx)(l.AliasAvatar,{alias:s,size:16}),(0,t.jsx)("span",{className:"text-sm text-gray-200 font-medium",children:s}),e.target_type&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"text-xs text-gray-600",children:"→"}),(0,t.jsxs)("span",{className:"text-xs text-gray-400",children:[e.target_type,e.target_id?`:${e.target_id.slice(0,12)}`:""]})]}),(0,t.jsx)("span",{className:"text-xs text-gray-600 ml-auto",children:(0,r.timeAgo)(e.created_at)})]}),e.detail&&(0,t.jsx)("div",{className:"text-xs text-gray-500",children:e.detail}),e.ip&&"unknown"!==e.ip&&(0,t.jsxs)("div",{className:"text-[10px] text-gray-700",children:["IP: ",e.ip]})]},e.id)})})]})}])}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/0e-.zgw81gela.js","static/chunks/0pqt~8bl3ukh4.js","static/chunks/0u359llqm1_01.js","static/chunks/0257pdz1-imal.js"],runtimeModuleIds:[94553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,l=((o=l||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let i=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,l,s;null!=t?l=(o=p(this.c,t)).exports:(o=this.m,l=this.e);let u=(r=o,n=l,(s=i.get(r))||(i.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function k(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let j=Symbol("turbopack queues"),U=Symbol("turbopack exports"),C=Symbol("turbopack error");function P(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=k(),u=Object.assign(s,{[U]:r.exports,[j]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[U]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(j in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[U]:{},[j]:e=>e(t)};return e.then(e=>{r[U]=e,P(t)},e=>{r[C]=e,P(t)}),r}}return{[U]:e,[j]:()=>{}}}),r=()=>t.map(e=>{if(e[C])throw e[C];return e[U]}),{promise:l,resolve:i}=k(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[j](u)),s.queueCount?l:r()},function(e){e?i(u[C]=e):l(u[U]),P(n)}),n&&-1===n.status&&(n.status=0)};let v=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}v.prototype=URL.prototype,u.U=v,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let _=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,q(r));let o=r.included||[],l=o.map(e=>!!$.has(e)||_.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,q(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,q(r.path)),i))E.has(o)||E.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}S.l=function(e){return T(l.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),i=x.get(o);if(void 0===i){let e=x.set.bind(x,o,A);i=o.then(e).catch(e=>{let o;switch(t){case l.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case l.Parent:o=`from module ${r}`;break;case l.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let i=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw i.name="ChunkLoadError",i}),x.set(o,i)}return i}function q(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(l.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,l){let i="SharedWorker"===e.name,s=[o.map(e=>q(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(q(t),location.origin),a=JSON.stringify(s);return i?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,l?{...l,type:void 0}:void 0)};let N=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(l.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(l.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,l.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),l=o.exports;I[e]=o;let i=new s(o,l);try{n(i,o,l)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let l=e[o];for(let l=r;l<o;l++){let r=e[l],o=t.get(r);if(o){n=o;break}}let i=n??l,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(i===l&&Object.defineProperty(l,"name",{value:"module evaluation"}),s=!0),t.set(r,i))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?q(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(q("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(l.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,l.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===l.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(N.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(N.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let l=fetch(q(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(q(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/05oi25hh7b81r.js","static/chunks/0_pxg.4pebw__.js","static/chunks/039-b.v_9-_rm.js","static/chunks/0b8wnt4put-5n.js"],runtimeModuleIds:[11318]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function w(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function O(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=w,u.A=function(e){return this.r(e)(w.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=O(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=O(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),U=Symbol("turbopack exports"),v=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=j(),u=Object.assign(s,{[U]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[U]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[U]:{},[k]:e=>e(t)};return e.then(e=>{r[U]=e,C(t)},e=>{r[v]=e,C(t)}),r}}return{[U]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[v])throw e[v];return e[U]}),{promise:i,resolve:l}=j(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?i:r()},function(e){e?l(u[v]=e):i(u[U]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function _(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let R=s.prototype,S=new Map;u.M=S;let $=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],i=o.map(e=>!!S.has(e)||$.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),l))E.has(o)||E.set(o,n)}for(let e of o)$.has(e)||$.set(e,n);await n}R.l=function(e){return T(i.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=x.get(o);if(void 0===l){let e=x.set.bind(x,o,A);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:_(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(o,l)}return l}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}R.L=function(e){return M(i.Parent,this.m.id,e)},R.R=function(e){let t=this.r(e);return t?.default??t},R.P=function(e){return`/ROOT/${e??""}`},R.q=function(e,t){m.call(this,`${e}${r}`,t)},R.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let K=/\.js(?:\?[^#]*)?(?:#.*)?$/,q=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return q.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,i.Parent,t.id)};function W(e,t,r){let n=S.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:_(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,S)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(K.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(K.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(N(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":289,"timestamp":392549209248,"id":4,"parentId":1,"tags":{},"startTime":1778764035034,"traceId":"ae6f949dd9fb3914"},{"name":"load-custom-routes","duration":504,"timestamp":392549209701,"id":5,"parentId":1,"tags":{},"startTime":1778764035034,"traceId":"ae6f949dd9fb3914"},{"name":"create-dist-dir","duration":378,"timestamp":392549210252,"id":6,"parentId":1,"tags":{},"startTime":1778764035035,"traceId":"ae6f949dd9fb3914"},{"name":"clean","duration":538,"timestamp":392549211360,"id":7,"parentId":1,"tags":{},"startTime":1778764035036,"traceId":"ae6f949dd9fb3914"},{"name":"discover-routes","duration":10044,"timestamp":392549305943,"id":8,"parentId":1,"tags":{},"startTime":1778764035131,"traceId":"ae6f949dd9fb3914"},{"name":"create-root-mapping","duration":127,"timestamp":392549316080,"id":9,"parentId":1,"tags":{},"startTime":1778764035141,"traceId":"ae6f949dd9fb3914"},{"name":"generate-route-types","duration":31105,"timestamp":392549318602,"id":10,"parentId":1,"tags":{},"startTime":1778764035143,"traceId":"ae6f949dd9fb3914"},{"name":"public-dir-conflict-check","duration":106,"timestamp":392549349818,"id":11,"parentId":1,"tags":{},"startTime":1778764035175,"traceId":"ae6f949dd9fb3914"},{"name":"generate-routes-manifest","duration":5174,"timestamp":392549350071,"id":12,"parentId":1,"tags":{},"startTime":1778764035175,"traceId":"ae6f949dd9fb3914"},{"name":"run-turbopack","duration":12185352,"timestamp":392549366037,"id":14,"parentId":1,"tags":{},"startTime":1778764035191,"traceId":"ae6f949dd9fb3914"},{"name":"turbopack-build-events","duration":81,"timestamp":392549714313,"id":15,"parentId":1,"tags":{},"startTime":1778764035539,"traceId":"ae6f949dd9fb3914"},{"name":"run-typescript","duration":11125545,"timestamp":392561562173,"id":16,"parentId":1,"tags":{},"startTime":1778764047387,"traceId":"ae6f949dd9fb3914"},{"name":"generate-required-server-files","duration":2541,"timestamp":392572688703,"id":18,"parentId":1,"tags":{},"startTime":1778764058513,"traceId":"ae6f949dd9fb3914"},{"name":"check-static-error-page","duration":24136,"timestamp":392572761222,"id":20,"parentId":19,"tags":{},"startTime":1778764058586,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":344848,"timestamp":392572790794,"id":62,"parentId":22,"tags":{},"startTime":1778764058615,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":371763,"timestamp":392572763996,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778764058589,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":449255,"timestamp":392572792069,"id":64,"parentId":26,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":466482,"timestamp":392572774921,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778764058600,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":485349,"timestamp":392572792116,"id":65,"parentId":27,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":502502,"timestamp":392572775031,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778764058600,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":495948,"timestamp":392572792153,"id":66,"parentId":28,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":513061,"timestamp":392572775117,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778764058600,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":517487,"timestamp":392572792189,"id":67,"parentId":29,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":534541,"timestamp":392572775200,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778764058600,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":522297,"timestamp":392572792223,"id":68,"parentId":30,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":539190,"timestamp":392572775400,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778764058600,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":525191,"timestamp":392572792256,"id":69,"parentId":32,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":541741,"timestamp":392572775763,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778764058600,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":528769,"timestamp":392572792356,"id":70,"parentId":33,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":547780,"timestamp":392572775868,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778764058601,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":531549,"timestamp":392572792417,"id":71,"parentId":34,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":548056,"timestamp":392572775972,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778764058601,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":536358,"timestamp":392572792434,"id":72,"parentId":35,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":552773,"timestamp":392572776070,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778764058601,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":538409,"timestamp":392572792486,"id":73,"parentId":36,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":554535,"timestamp":392572776404,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778764058601,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":541788,"timestamp":392572792504,"id":74,"parentId":37,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":557826,"timestamp":392572776514,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778764058601,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":544063,"timestamp":392572791842,"id":63,"parentId":25,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":561256,"timestamp":392572774697,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778764058599,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":546850,"timestamp":392572792512,"id":75,"parentId":38,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":562798,"timestamp":392572776608,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778764058601,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":552036,"timestamp":392572792524,"id":77,"parentId":40,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":567880,"timestamp":392572776746,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778764058601,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":552251,"timestamp":392572792518,"id":76,"parentId":39,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":568108,"timestamp":392572776683,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778764058601,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":554007,"timestamp":392572792530,"id":78,"parentId":41,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":569779,"timestamp":392572776807,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778764058601,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":558020,"timestamp":392572792542,"id":80,"parentId":43,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":573678,"timestamp":392572776928,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778764058602,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":561031,"timestamp":392572792554,"id":81,"parentId":44,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":575825,"timestamp":392572777816,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778764058603,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":565225,"timestamp":392572792536,"id":79,"parentId":42,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":580941,"timestamp":392572776870,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778764058602,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":567725,"timestamp":392572792559,"id":82,"parentId":45,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":582399,"timestamp":392572777931,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778764058603,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":569411,"timestamp":392572792565,"id":83,"parentId":46,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":583990,"timestamp":392572778042,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778764058603,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":572661,"timestamp":392572792571,"id":84,"parentId":47,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":587164,"timestamp":392572778114,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778764058603,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":573317,"timestamp":392572795880,"id":86,"parentId":24,"tags":{},"startTime":1778764058621,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":604790,"timestamp":392572764450,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778764058589,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":580045,"timestamp":392572799059,"id":87,"parentId":31,"tags":{},"startTime":1778764058624,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":603649,"timestamp":392572775527,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778764058600,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":593170,"timestamp":392572792576,"id":85,"parentId":48,"tags":{},"startTime":1778764058617,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":607631,"timestamp":392572778178,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778764058603,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":631369,"timestamp":392572789963,"id":61,"parentId":21,"tags":{},"startTime":1778764058615,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":659088,"timestamp":392572762303,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778764058587,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":586963,"timestamp":392572840763,"id":88,"parentId":23,"tags":{},"startTime":1778764058665,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":663517,"timestamp":392572764265,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778764058589,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":592613,"timestamp":392572840823,"id":91,"parentId":51,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":654682,"timestamp":392572778808,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778764058604,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":600078,"timestamp":392572840829,"id":92,"parentId":52,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":661930,"timestamp":392572779040,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778764058604,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":605358,"timestamp":392572840838,"id":93,"parentId":53,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":667008,"timestamp":392572779246,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778764058604,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":611135,"timestamp":392572840846,"id":94,"parentId":55,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":672219,"timestamp":392572779976,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778764058605,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":621327,"timestamp":392572840852,"id":95,"parentId":56,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":682090,"timestamp":392572780165,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778764058605,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":626825,"timestamp":392572840860,"id":96,"parentId":58,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":682791,"timestamp":392572784952,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778764058610,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":628409,"timestamp":392572840814,"id":90,"parentId":50,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":690636,"timestamp":392572778634,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778764058603,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":641464,"timestamp":392572840870,"id":97,"parentId":59,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":697329,"timestamp":392572785079,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778764058610,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":642503,"timestamp":392572840878,"id":98,"parentId":60,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":698248,"timestamp":392572785177,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778764058610,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":647906,"timestamp":392572840889,"id":99,"parentId":54,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":709365,"timestamp":392572779484,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778764058604,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":648038,"timestamp":392572840894,"id":100,"parentId":57,"tags":{},"startTime":1778764058666,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":704465,"timestamp":392572784483,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778764058609,"traceId":"ae6f949dd9fb3914"},{"name":"is-page-static","duration":652517,"timestamp":392572840804,"id":89,"parentId":49,"tags":{},"startTime":1778764058665,"traceId":"ae6f949dd9fb3914"},{"name":"check-page","duration":714871,"timestamp":392572778500,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778764058603,"traceId":"ae6f949dd9fb3914"},{"name":"static-check","duration":733025,"timestamp":392572760380,"id":19,"parentId":1,"tags":{},"startTime":1778764058585,"traceId":"ae6f949dd9fb3914"},{"name":"write-routes-manifest","duration":442,"timestamp":392573500696,"id":102,"parentId":1,"tags":{},"startTime":1778764059325,"traceId":"ae6f949dd9fb3914"},{"name":"load-dotenv","duration":63,"timestamp":392573521258,"id":105,"parentId":104,"tags":{},"startTime":1778764059346,"traceId":"ae6f949dd9fb3914"},{"name":"run-export-path-map","duration":716,"timestamp":392573525720,"id":106,"parentId":104,"tags":{},"startTime":1778764059350,"traceId":"ae6f949dd9fb3914"},{"name":"next-export","duration":666883,"timestamp":392573518848,"id":104,"parentId":1,"tags":{},"startTime":1778764059344,"traceId":"ae6f949dd9fb3914"},{"name":"move-exported-app-not-found-","duration":670,"timestamp":392574189316,"id":107,"parentId":103,"tags":{},"startTime":1778764060014,"traceId":"ae6f949dd9fb3914"},{"name":"move-exported-app-global-error-","duration":411,"timestamp":392574190107,"id":108,"parentId":103,"tags":{},"startTime":1778764060015,"traceId":"ae6f949dd9fb3914"}]
2
- [{"name":"static-generation","duration":684775,"timestamp":392573509763,"id":103,"parentId":1,"tags":{},"startTime":1778764059334,"traceId":"ae6f949dd9fb3914"},{"name":"write-routes-manifest","duration":445,"timestamp":392574194739,"id":109,"parentId":1,"tags":{},"startTime":1778764060019,"traceId":"ae6f949dd9fb3914"},{"name":"print-tree-view","duration":3874,"timestamp":392574217736,"id":110,"parentId":1,"tags":{},"startTime":1778764060042,"traceId":"ae6f949dd9fb3914"},{"name":"write-route-bundle-stats","duration":11678,"timestamp":392574221719,"id":111,"parentId":1,"tags":{},"startTime":1778764060046,"traceId":"ae6f949dd9fb3914"},{"name":"telemetry-flush","duration":14394,"timestamp":392574233453,"id":112,"parentId":1,"tags":{},"startTime":1778764060058,"traceId":"ae6f949dd9fb3914"},{"name":"next-build","duration":25101757,"timestamp":392549146137,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778764034971,"traceId":"ae6f949dd9fb3914"}]
1
+ [{"name":"generate-buildid","duration":317,"timestamp":39152401229,"id":4,"parentId":1,"tags":{},"startTime":1778847124648,"traceId":"c64c1f741503a5a1"},{"name":"load-custom-routes","duration":688,"timestamp":39152401733,"id":5,"parentId":1,"tags":{},"startTime":1778847124648,"traceId":"c64c1f741503a5a1"},{"name":"create-dist-dir","duration":732,"timestamp":39152402476,"id":6,"parentId":1,"tags":{},"startTime":1778847124649,"traceId":"c64c1f741503a5a1"},{"name":"clean","duration":494,"timestamp":39152403872,"id":7,"parentId":1,"tags":{},"startTime":1778847124650,"traceId":"c64c1f741503a5a1"},{"name":"discover-routes","duration":9380,"timestamp":39152486681,"id":8,"parentId":1,"tags":{},"startTime":1778847124733,"traceId":"c64c1f741503a5a1"},{"name":"create-root-mapping","duration":113,"timestamp":39152496113,"id":9,"parentId":1,"tags":{},"startTime":1778847124742,"traceId":"c64c1f741503a5a1"},{"name":"generate-route-types","duration":32716,"timestamp":39152498492,"id":10,"parentId":1,"tags":{},"startTime":1778847124745,"traceId":"c64c1f741503a5a1"},{"name":"public-dir-conflict-check","duration":90,"timestamp":39152531369,"id":11,"parentId":1,"tags":{},"startTime":1778847124778,"traceId":"c64c1f741503a5a1"},{"name":"generate-routes-manifest","duration":3968,"timestamp":39152531568,"id":12,"parentId":1,"tags":{},"startTime":1778847124778,"traceId":"c64c1f741503a5a1"},{"name":"run-turbopack","duration":5532049,"timestamp":39152540508,"id":14,"parentId":1,"tags":{},"startTime":1778847124787,"traceId":"c64c1f741503a5a1"},{"name":"turbopack-build-events","duration":122,"timestamp":39152844334,"id":15,"parentId":1,"tags":{},"startTime":1778847125091,"traceId":"c64c1f741503a5a1"},{"name":"run-typescript","duration":8312979,"timestamp":39158094904,"id":16,"parentId":1,"tags":{},"startTime":1778847130341,"traceId":"c64c1f741503a5a1"},{"name":"generate-required-server-files","duration":3174,"timestamp":39166409062,"id":18,"parentId":1,"tags":{},"startTime":1778847138655,"traceId":"c64c1f741503a5a1"},{"name":"check-static-error-page","duration":15491,"timestamp":39166579178,"id":20,"parentId":19,"tags":{},"startTime":1778847138825,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":395467,"timestamp":39166597737,"id":63,"parentId":22,"tags":{},"startTime":1778847138844,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":410935,"timestamp":39166582435,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778847138829,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":497245,"timestamp":39166599048,"id":67,"parentId":28,"tags":{},"startTime":1778847138845,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":510056,"timestamp":39166586357,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778847138833,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":529262,"timestamp":39166598495,"id":64,"parentId":25,"tags":{},"startTime":1778847138845,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":541982,"timestamp":39166585862,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778847138832,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":545767,"timestamp":39166599573,"id":71,"parentId":33,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":557908,"timestamp":39166587512,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778847138834,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":546262,"timestamp":39166599335,"id":69,"parentId":30,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":558924,"timestamp":39166586714,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778847138833,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":549300,"timestamp":39166599507,"id":70,"parentId":32,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":561512,"timestamp":39166587346,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778847138834,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":551192,"timestamp":39166599653,"id":72,"parentId":34,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":563231,"timestamp":39166587660,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778847138834,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":553585,"timestamp":39166598776,"id":66,"parentId":27,"tags":{},"startTime":1778847138845,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":566208,"timestamp":39166586199,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778847138832,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":552937,"timestamp":39166599682,"id":73,"parentId":35,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":564847,"timestamp":39166587813,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778847138834,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":559884,"timestamp":39166599856,"id":77,"parentId":39,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":570945,"timestamp":39166588842,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778847138835,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":560163,"timestamp":39166599797,"id":74,"parentId":36,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":571642,"timestamp":39166588354,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778847138835,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":560515,"timestamp":39166599845,"id":76,"parentId":38,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":571686,"timestamp":39166588716,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778847138835,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":564071,"timestamp":39166598653,"id":65,"parentId":26,"tags":{},"startTime":1778847138845,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":576723,"timestamp":39166586056,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778847138832,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":563116,"timestamp":39166599830,"id":75,"parentId":37,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":574410,"timestamp":39166588568,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778847138835,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":565167,"timestamp":39166599866,"id":78,"parentId":40,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":576128,"timestamp":39166588956,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778847138835,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":567290,"timestamp":39166599907,"id":82,"parentId":44,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":577779,"timestamp":39166589454,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778847138836,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":567960,"timestamp":39166599877,"id":79,"parentId":41,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":578810,"timestamp":39166589080,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778847138835,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":570134,"timestamp":39166599917,"id":83,"parentId":45,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":580517,"timestamp":39166589575,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778847138836,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":575149,"timestamp":39166599927,"id":84,"parentId":46,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":585435,"timestamp":39166589685,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778847138836,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":574048,"timestamp":39166601434,"id":87,"parentId":49,"tags":{},"startTime":1778847138848,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":585458,"timestamp":39166590075,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778847138836,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":575768,"timestamp":39166599936,"id":85,"parentId":47,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":585913,"timestamp":39166589825,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778847138836,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":574474,"timestamp":39166601409,"id":86,"parentId":48,"tags":{},"startTime":1778847138848,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":585979,"timestamp":39166589941,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778847138836,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":577037,"timestamp":39166599198,"id":68,"parentId":29,"tags":{},"startTime":1778847138845,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":589765,"timestamp":39166586506,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778847138833,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":580091,"timestamp":39166606052,"id":89,"parentId":31,"tags":{},"startTime":1778847138852,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":599336,"timestamp":39166586857,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778847138833,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":581474,"timestamp":39166604892,"id":88,"parentId":24,"tags":{},"startTime":1778847138851,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":603399,"timestamp":39166582996,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778847138829,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":587001,"timestamp":39166599897,"id":81,"parentId":43,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":597606,"timestamp":39166589335,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778847138836,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":594780,"timestamp":39166599887,"id":80,"parentId":42,"tags":{},"startTime":1778847138846,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":605509,"timestamp":39166589207,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778847138835,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":608882,"timestamp":39166597350,"id":62,"parentId":21,"tags":{},"startTime":1778847138844,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":625508,"timestamp":39166580777,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778847138827,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":605449,"timestamp":39166608485,"id":96,"parentId":56,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":620508,"timestamp":39166593483,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778847138840,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":635701,"timestamp":39166608458,"id":94,"parentId":53,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":651764,"timestamp":39166592473,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778847138839,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":639100,"timestamp":39166608436,"id":92,"parentId":51,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":655554,"timestamp":39166592048,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778847138838,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":645235,"timestamp":39166608399,"id":90,"parentId":23,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":670977,"timestamp":39166582730,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778847138829,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":648633,"timestamp":39166608498,"id":97,"parentId":57,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":663583,"timestamp":39166593638,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778847138840,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":649174,"timestamp":39166608472,"id":95,"parentId":54,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":664996,"timestamp":39166592706,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778847138839,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":652977,"timestamp":39166608507,"id":98,"parentId":59,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":667434,"timestamp":39166594111,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778847138840,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":653448,"timestamp":39166608523,"id":99,"parentId":60,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":667785,"timestamp":39166594260,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778847138841,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":653600,"timestamp":39166608540,"id":100,"parentId":61,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":667760,"timestamp":39166594419,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778847138841,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":635357,"timestamp":39166629362,"id":102,"parentId":55,"tags":{},"startTime":1778847138876,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":671793,"timestamp":39166592961,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778847138839,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":656838,"timestamp":39166608449,"id":93,"parentId":52,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":673076,"timestamp":39166592239,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778847138839,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":652729,"timestamp":39166614257,"id":101,"parentId":58,"tags":{},"startTime":1778847138861,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":673268,"timestamp":39166593760,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778847138840,"traceId":"c64c1f741503a5a1"},{"name":"is-page-static","duration":679771,"timestamp":39166608423,"id":91,"parentId":50,"tags":{},"startTime":1778847138855,"traceId":"c64c1f741503a5a1"},{"name":"check-page","duration":696441,"timestamp":39166591816,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778847138838,"traceId":"c64c1f741503a5a1"},{"name":"static-check","duration":710237,"timestamp":39166578057,"id":19,"parentId":1,"tags":{},"startTime":1778847138824,"traceId":"c64c1f741503a5a1"},{"name":"write-routes-manifest","duration":538,"timestamp":39167295961,"id":104,"parentId":1,"tags":{},"startTime":1778847139542,"traceId":"c64c1f741503a5a1"},{"name":"load-dotenv","duration":59,"timestamp":39167308045,"id":107,"parentId":106,"tags":{},"startTime":1778847139554,"traceId":"c64c1f741503a5a1"},{"name":"run-export-path-map","duration":905,"timestamp":39167311225,"id":108,"parentId":106,"tags":{},"startTime":1778847139558,"traceId":"c64c1f741503a5a1"},{"name":"next-export","duration":648209,"timestamp":39167306787,"id":106,"parentId":1,"tags":{},"startTime":1778847139553,"traceId":"c64c1f741503a5a1"}]
2
+ [{"name":"move-exported-app-not-found-","duration":2698,"timestamp":39167958916,"id":109,"parentId":105,"tags":{},"startTime":1778847140205,"traceId":"c64c1f741503a5a1"},{"name":"move-exported-app-global-error-","duration":587,"timestamp":39167961709,"id":110,"parentId":105,"tags":{},"startTime":1778847140208,"traceId":"c64c1f741503a5a1"},{"name":"static-generation","duration":663267,"timestamp":39167300833,"id":105,"parentId":1,"tags":{},"startTime":1778847139547,"traceId":"c64c1f741503a5a1"},{"name":"write-routes-manifest","duration":390,"timestamp":39167964258,"id":111,"parentId":1,"tags":{},"startTime":1778847140211,"traceId":"c64c1f741503a5a1"},{"name":"print-tree-view","duration":4191,"timestamp":39167981762,"id":112,"parentId":1,"tags":{},"startTime":1778847140228,"traceId":"c64c1f741503a5a1"},{"name":"write-route-bundle-stats","duration":13175,"timestamp":39167985982,"id":113,"parentId":1,"tags":{},"startTime":1778847140232,"traceId":"c64c1f741503a5a1"},{"name":"telemetry-flush","duration":23354,"timestamp":39167999184,"id":114,"parentId":1,"tags":{},"startTime":1778847140245,"traceId":"c64c1f741503a5a1"},{"name":"next-build","duration":15671335,"timestamp":39152351243,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778847124598,"traceId":"c64c1f741503a5a1"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":12185352,"timestamp":392549366037,"id":14,"parentId":1,"tags":{},"startTime":1778764035191,"traceId":"ae6f949dd9fb3914"},{"name":"turbopack-build-events","duration":81,"timestamp":392549714313,"id":15,"parentId":1,"tags":{},"startTime":1778764035539,"traceId":"ae6f949dd9fb3914"},{"name":"run-typescript","duration":11125545,"timestamp":392561562173,"id":16,"parentId":1,"tags":{},"startTime":1778764047387,"traceId":"ae6f949dd9fb3914"},{"name":"static-check","duration":733025,"timestamp":392572760380,"id":19,"parentId":1,"tags":{},"startTime":1778764058585,"traceId":"ae6f949dd9fb3914"},{"name":"static-generation","duration":684775,"timestamp":392573509763,"id":103,"parentId":1,"tags":{},"startTime":1778764059334,"traceId":"ae6f949dd9fb3914"},{"name":"telemetry-flush","duration":14394,"timestamp":392574233453,"id":112,"parentId":1,"tags":{},"startTime":1778764060058,"traceId":"ae6f949dd9fb3914"},{"name":"next-build","duration":25101757,"timestamp":392549146137,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778764034971,"traceId":"ae6f949dd9fb3914"}]
1
+ [{"name":"run-turbopack","duration":5532049,"timestamp":39152540508,"id":14,"parentId":1,"tags":{},"startTime":1778847124787,"traceId":"c64c1f741503a5a1"},{"name":"turbopack-build-events","duration":122,"timestamp":39152844334,"id":15,"parentId":1,"tags":{},"startTime":1778847125091,"traceId":"c64c1f741503a5a1"},{"name":"run-typescript","duration":8312979,"timestamp":39158094904,"id":16,"parentId":1,"tags":{},"startTime":1778847130341,"traceId":"c64c1f741503a5a1"},{"name":"static-check","duration":710237,"timestamp":39166578057,"id":19,"parentId":1,"tags":{},"startTime":1778847138824,"traceId":"c64c1f741503a5a1"},{"name":"static-generation","duration":663267,"timestamp":39167300833,"id":105,"parentId":1,"tags":{},"startTime":1778847139547,"traceId":"c64c1f741503a5a1"},{"name":"telemetry-flush","duration":23354,"timestamp":39167999184,"id":114,"parentId":1,"tags":{},"startTime":1778847140245,"traceId":"c64c1f741503a5a1"},{"name":"next-build","duration":15671335,"timestamp":39152351243,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778847124598,"traceId":"c64c1f741503a5a1"}]
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/" | "/admin" | "/login" | "/logs" | "/messages" | "/node" | "/nodes" | "/server-logs" | "/settings" | "/settings/networks" | "/settings/tokens" | "/tasks" | "/tasks/[id]"
5
- type AppRouteHandlerRoutes = "/api/anet/config" | "/api/auth/login" | "/api/auth/logout" | "/api/auth/v3" | "/api/hub/audit-log" | "/api/hub/auth" | "/api/hub/broadcast" | "/api/hub/events" | "/api/hub/health" | "/api/hub/inbox" | "/api/hub/license" | "/api/hub/messages" | "/api/hub/networks" | "/api/hub/nodes" | "/api/hub/register" | "/api/hub/send" | "/api/hub/server-logs" | "/api/hub/session" | "/api/hub/stats" | "/api/hub/status" | "/api/hub/task-events" | "/api/hub/tasks" | "/api/hub/tmux" | "/api/hub/tokens"
5
+ type AppRouteHandlerRoutes = "/api/anet/config" | "/api/auth/login" | "/api/auth/logout" | "/api/auth/v3" | "/api/hub/audit-log" | "/api/hub/auth" | "/api/hub/broadcast" | "/api/hub/events" | "/api/hub/health" | "/api/hub/inbox" | "/api/hub/license" | "/api/hub/messages" | "/api/hub/networks" | "/api/hub/nodes" | "/api/hub/register" | "/api/hub/send" | "/api/hub/server-logs" | "/api/hub/servers" | "/api/hub/session" | "/api/hub/stats" | "/api/hub/status" | "/api/hub/task-events" | "/api/hub/tasks" | "/api/hub/tmux" | "/api/hub/tokens"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/"
8
8
  type RedirectRoutes = never
@@ -30,6 +30,7 @@ interface ParamMap {
30
30
  "/api/hub/register": {}
31
31
  "/api/hub/send": {}
32
32
  "/api/hub/server-logs": {}
33
+ "/api/hub/servers": {}
33
34
  "/api/hub/session": {}
34
35
  "/api/hub/stats": {}
35
36
  "/api/hub/status": {}
@@ -317,6 +317,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
317
317
  type __Unused = __Check
318
318
  }
319
319
 
320
+ // Validate ../../app/api/hub/servers/route.ts
321
+ {
322
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/hub/servers">> = Specific
323
+ const handler = {} as typeof import("../../app/api/hub/servers/route.js")
324
+ type __Check = __IsExpected<typeof handler>
325
+ // @ts-ignore
326
+ type __Unused = __Check
327
+ }
328
+
320
329
  // Validate ../../app/api/hub/session/route.ts
321
330
  {
322
331
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/hub/session">> = Specific
@@ -0,0 +1,39 @@
1
+ import { requireDashboardAuth, getV3UserToken } from '@/app/lib/dashboard-auth';
2
+
3
+ const HUB_URL = process.env.COMMHUB_URL || 'http://127.0.0.1:9200';
4
+
5
+ async function hubHeaders(): Promise<Record<string, string>> {
6
+ const userToken = await getV3UserToken();
7
+ const h: Record<string, string> = {};
8
+ if (userToken) h['Authorization'] = `Bearer ${userToken}`;
9
+ return h;
10
+ }
11
+
12
+ /**
13
+ * Proxy: GET /api/servers from CommHub. Aggregates host telemetry across
14
+ * sessions and returns one card per server (hostname, ip, cpu/mem load,
15
+ * agent_count, status). Per issue #119; lands in v0.8.1-preview.2 of the
16
+ * commhub-server (通信牛). The dashboard <ServersDrawer> mounts in
17
+ * AppShell and refreshes every 5s when expanded.
18
+ */
19
+ export async function GET() {
20
+ const authFailure = await requireDashboardAuth();
21
+ if (authFailure) return authFailure;
22
+
23
+ try {
24
+ const res = await fetch(`${HUB_URL}/api/servers`, {
25
+ headers: await hubHeaders(),
26
+ next: { revalidate: 0 },
27
+ });
28
+ if (!res.ok) {
29
+ // 404 means the upstream hub predates v0.8.1-preview.2 — surface a
30
+ // 'feature unavailable' shape so the drawer can render a friendly
31
+ // empty state instead of an angry error.
32
+ if (res.status === 404) return Response.json({ servers: [], unavailable: true });
33
+ return Response.json({ error: `hub ${res.status}` }, { status: res.status });
34
+ }
35
+ return Response.json(await res.json());
36
+ } catch (e: unknown) {
37
+ return Response.json({ error: 'hub unreachable', detail: e instanceof Error ? e.message : String(e) }, { status: 502 });
38
+ }
39
+ }
@@ -5,6 +5,7 @@ import { Sidebar } from './Sidebar';
5
5
  import { HealthBanner } from './HealthBanner';
6
6
  import { CommandPalette } from './CommandPalette';
7
7
  import { HelpOverlay } from './HelpOverlay';
8
+ import { ServersDrawer } from './ServersDrawer';
8
9
 
9
10
  const NO_SHELL_PATHS = ['/login'];
10
11
 
@@ -24,6 +25,7 @@ export function AppShell({ children }: { children: React.ReactNode }) {
24
25
  </main>
25
26
  <CommandPalette />
26
27
  <HelpOverlay />
28
+ <ServersDrawer />
27
29
  </div>
28
30
  );
29
31
  }
@@ -1,8 +1,10 @@
1
1
  'use client';
2
2
 
3
- import { useCallback, useEffect, useRef, useState } from 'react';
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { AliasAvatar } from './AliasAvatar';
5
5
  import { TaskChatPanel } from './TaskChatPanel';
6
+ import { useSessions } from '../lib/hooks';
7
+ import { relativeAgo } from '../lib/time';
6
8
 
7
9
  interface ChatPopoverProps {
8
10
  /** Node alias to chat with. Changing it switches the conversation. */
@@ -37,6 +39,16 @@ const MOBILE_BP = 640;
37
39
  * history are already solved there; this component only adds the floating
38
40
  * shell + drag/resize behaviour.
39
41
  */
42
+ /** Round 37 / Loop: surface node metadata (cwd + last-seen) inside the
43
+ * ChatPopover header. The SVG <title> tooltip (Rounds 33-34) only shows
44
+ * on hover-over-node, which is lost once the popover is open and
45
+ * potentially dragged away. Lifting cwd and last-seen into the popover
46
+ * header keeps the context where the user actually needs it.
47
+ *
48
+ * Round 38: relativeAgo factored to app/lib/time.ts so this file shares
49
+ * the same TZ-safe parser as TopoGraph (was a duplicated mirror until
50
+ * this round). */
51
+
40
52
  export function ChatPopover({ alias, onClose }: ChatPopoverProps) {
41
53
  // Position + size are resolved on mount (SSR-safe defaults here).
42
54
  const [pos, setPos] = useState({ x: 0, y: 0 });
@@ -48,6 +60,13 @@ export function ChatPopover({ alias, onClose }: ChatPopoverProps) {
48
60
  active: false, startX: 0, startY: 0, baseW: 0, baseH: 0,
49
61
  });
50
62
 
63
+ // Round 37 / Loop: pull the target session out of the SWR cache that
64
+ // TopoGraph already populates — same URL, so no extra network fetch.
65
+ const { sessions } = useSessions();
66
+ const session = useMemo(() => sessions.find(s => s.alias === alias), [sessions, alias]);
67
+ const isOnline = !!session && session.status !== 'offline';
68
+ const lastSeenLine = !isOnline ? relativeAgo(session?.last_seen_at) : null;
69
+
51
70
  const clamp = useCallback((x: number, y: number, w: number, h: number) => {
52
71
  const maxX = Math.max(MARGIN, window.innerWidth - w - MARGIN);
53
72
  const maxY = Math.max(MARGIN, window.innerHeight - h - MARGIN);
@@ -129,7 +148,7 @@ export function ChatPopover({ alias, onClose }: ChatPopoverProps) {
129
148
 
130
149
  return (
131
150
  <div
132
- className="fixed z-50 flex flex-col overflow-hidden rounded-xl border border-[#2a2a4a] bg-[#0a0a1a] shadow-2xl shadow-black/60 anet-fade-in"
151
+ 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"
133
152
  style={{ left: pos.x, top: pos.y, width: size.w, height: size.h }}
134
153
  role="dialog"
135
154
  aria-label={`Chat with ${alias}`}
@@ -140,13 +159,30 @@ export function ChatPopover({ alias, onClose }: ChatPopoverProps) {
140
159
  onPointerMove={onPointerMove}
141
160
  onPointerUp={onPointerUp}
142
161
  onPointerCancel={onPointerUp}
143
- className="flex items-center justify-between px-3 py-2.5 border-b border-[#2a2a4a] bg-[#0d0d1a] rounded-t-xl cursor-grab active:cursor-grabbing select-none touch-none"
162
+ 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"
144
163
  >
145
164
  <div className="flex items-center gap-2.5 min-w-0">
146
165
  <AliasAvatar alias={alias} size={28} />
147
166
  <div className="min-w-0">
148
- <div className="text-sm font-semibold text-white truncate">{alias}</div>
149
- <div className="text-[10px] text-gray-500">Drag to move · Esc to close</div>
167
+ <div className="text-sm font-semibold text-[var(--fg)] truncate">{alias}</div>
168
+ {/* Round 37: cwd / last-seen lines surface the same metadata
169
+ the SVG <title> tooltip carries (rounds 33-34), but inside
170
+ the popover where it stays accessible after dragging the
171
+ window away from the node. Fall back to the drag-hint
172
+ when no metadata is reported. */}
173
+ {session?.project_dir ? (
174
+ <div className="text-[10px] text-[var(--fg-muted)] truncate font-mono" title={session.project_dir} data-popover-cwd>
175
+ cwd: {session.project_dir}
176
+ </div>
177
+ ) : null}
178
+ {lastSeenLine ? (
179
+ <div className="text-[10px] text-[var(--fg-muted)] truncate" data-popover-lastseen>
180
+ last seen: {lastSeenLine}
181
+ </div>
182
+ ) : null}
183
+ {!session?.project_dir && !lastSeenLine ? (
184
+ <div className="text-[10px] text-[var(--fg-muted)]">Drag to move · Esc to close</div>
185
+ ) : null}
150
186
  </div>
151
187
  </div>
152
188
  <button
@@ -155,7 +191,7 @@ export function ChatPopover({ alias, onClose }: ChatPopoverProps) {
155
191
  // Chromium retargets the click to the header — the button never fires.
156
192
  onPointerDown={(e) => e.stopPropagation()}
157
193
  aria-label="Close chat"
158
- className="text-gray-500 hover:text-white p-1.5 rounded-lg hover:bg-[#1a1a2a] shrink-0"
194
+ className="text-[var(--fg-muted)] hover:text-[var(--fg)] p-1.5 rounded-lg hover:bg-[var(--bg-elevated)] shrink-0"
159
195
  >
160
196
  <svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={2}>
161
197
  <path strokeLinecap="round" strokeLinejoin="round" d="M6 18L18 6M6 6l12 12" />
@@ -178,7 +214,7 @@ export function ChatPopover({ alias, onClose }: ChatPopoverProps) {
178
214
  className="absolute bottom-0 right-0 w-5 h-5 cursor-nwse-resize touch-none z-10"
179
215
  style={{ touchAction: 'none' }}
180
216
  >
181
- <svg className="absolute bottom-0.5 right-0.5 w-3 h-3 text-gray-600" viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" aria-hidden>
217
+ <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>
182
218
  <path d="M11 5L5 11M11 9L9 11" />
183
219
  </svg>
184
220
  </div>