@sleep2agi/agent-network-dashboard 0.4.5-preview.16 → 0.4.5-preview.17

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 (177) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +7 -7
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/_not-found.html +2 -2
  15. package/.next/server/app/_not-found.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/admin.html +2 -2
  24. package/.next/server/app/admin.rsc +2 -2
  25. package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
  26. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  28. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  29. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  30. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  31. package/.next/server/app/index.html +2 -2
  32. package/.next/server/app/index.rsc +3 -3
  33. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  34. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  35. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  36. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  37. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  38. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/login.html +2 -2
  40. package/.next/server/app/login.rsc +2 -2
  41. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  42. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  43. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  45. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  46. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  47. package/.next/server/app/logs/page.js.nft.json +1 -1
  48. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/logs.html +2 -2
  50. package/.next/server/app/logs.rsc +3 -3
  51. package/.next/server/app/logs.segments/_full.segment.rsc +3 -3
  52. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  53. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  54. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  55. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +2 -2
  56. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  57. package/.next/server/app/messages/page.js.nft.json +1 -1
  58. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/messages.html +2 -2
  60. package/.next/server/app/messages.rsc +3 -3
  61. package/.next/server/app/messages.segments/_full.segment.rsc +3 -3
  62. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  63. package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
  64. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  65. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +2 -2
  66. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  67. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  68. package/.next/server/app/node.html +2 -2
  69. package/.next/server/app/node.rsc +2 -2
  70. package/.next/server/app/node.segments/_full.segment.rsc +2 -2
  71. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/node.segments/_index.segment.rsc +2 -2
  73. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  74. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  76. package/.next/server/app/nodes/page.js.nft.json +1 -1
  77. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  78. package/.next/server/app/nodes.html +2 -2
  79. package/.next/server/app/nodes.rsc +3 -3
  80. package/.next/server/app/nodes.segments/_full.segment.rsc +3 -3
  81. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  82. package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
  83. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  84. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +2 -2
  85. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  86. package/.next/server/app/page.js.nft.json +1 -1
  87. package/.next/server/app/page_client-reference-manifest.js +1 -1
  88. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  89. package/.next/server/app/server-logs.html +2 -2
  90. package/.next/server/app/server-logs.rsc +2 -2
  91. package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
  92. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  93. package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
  94. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  95. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  96. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  97. package/.next/server/app/settings/networks/page.js.nft.json +1 -1
  98. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  99. package/.next/server/app/settings/networks.html +2 -2
  100. package/.next/server/app/settings/networks.rsc +3 -3
  101. package/.next/server/app/settings/networks.segments/_full.segment.rsc +3 -3
  102. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  103. package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
  104. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  105. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +2 -2
  106. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  107. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  108. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  109. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  110. package/.next/server/app/settings/tokens.html +2 -2
  111. package/.next/server/app/settings/tokens.rsc +2 -2
  112. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
  113. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  114. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
  115. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  116. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  117. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  118. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  119. package/.next/server/app/settings.html +2 -2
  120. package/.next/server/app/settings.rsc +2 -2
  121. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  122. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  123. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  124. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  125. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  126. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  127. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  128. package/.next/server/app/tasks/page.js.nft.json +1 -1
  129. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  130. package/.next/server/app/tasks.html +2 -2
  131. package/.next/server/app/tasks.rsc +3 -3
  132. package/.next/server/app/tasks.segments/_full.segment.rsc +3 -3
  133. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  134. package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
  135. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  136. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +2 -2
  137. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  138. package/.next/server/chunks/ssr/[root-of-the-server]__04e5_8f._.js +3 -0
  139. package/.next/server/chunks/ssr/[root-of-the-server]__04e5_8f._.js.map +1 -0
  140. package/.next/server/chunks/ssr/{[root-of-the-server]__0~wm-j6._.js → [root-of-the-server]__0o8yj3c._.js} +2 -2
  141. package/.next/server/chunks/ssr/[root-of-the-server]__0o8yj3c._.js.map +1 -0
  142. package/.next/server/chunks/ssr/{_13_v7-3._.js → _0kdizff._.js} +2 -2
  143. package/.next/server/chunks/ssr/_0kdizff._.js.map +1 -0
  144. package/.next/server/chunks/ssr/{app_10b5blc._.js → app_0.zbtn5._.js} +2 -2
  145. package/.next/server/chunks/ssr/app_0.zbtn5._.js.map +1 -0
  146. package/.next/server/chunks/ssr/{app_11rum9b._.js → app_04n78pr._.js} +2 -2
  147. package/.next/server/chunks/ssr/app_04n78pr._.js.map +1 -0
  148. package/.next/server/chunks/ssr/app_0_agk0r._.js +3 -0
  149. package/.next/server/chunks/ssr/app_0_agk0r._.js.map +1 -0
  150. package/.next/server/middleware-build-manifest.js +3 -3
  151. package/.next/server/pages/404.html +2 -2
  152. package/.next/server/pages/500.html +1 -1
  153. package/.next/server/server-reference-manifest.js +1 -1
  154. package/.next/server/server-reference-manifest.json +1 -1
  155. package/.next/static/chunks/{0h.ajsk_uxigl.js → 0elnqam.~nrl2.js} +1 -1
  156. package/.next/static/chunks/{05f.bm74.tg7p.js → 0l3gf0ickq445.js} +1 -1
  157. package/.next/static/chunks/{163g5zdashl0u.js → 0lb13~qih~i61.js} +1 -1
  158. package/.next/static/chunks/{0xdken69.ao36.css → 0lv.yycx.sypc.css} +1 -1
  159. package/.next/static/chunks/10-ka4k4ni9u2.js +1 -0
  160. package/.next/static/chunks/{12dcb86elsl-e.js → 169v~dd1tdxdm.js} +1 -1
  161. package/.next/static/chunks/{0phmkvpddvjsy.js → 17uwnuk~0zoo3.js} +1 -1
  162. package/.next/trace +2 -2
  163. package/.next/trace-build +1 -1
  164. package/app/logs/page.tsx +28 -4
  165. package/package.json +1 -1
  166. package/.next/server/chunks/ssr/[root-of-the-server]__0byvz32._.js +0 -3
  167. package/.next/server/chunks/ssr/[root-of-the-server]__0byvz32._.js.map +0 -1
  168. package/.next/server/chunks/ssr/[root-of-the-server]__0~wm-j6._.js.map +0 -1
  169. package/.next/server/chunks/ssr/_13_v7-3._.js.map +0 -1
  170. package/.next/server/chunks/ssr/app_0et5yua._.js +0 -3
  171. package/.next/server/chunks/ssr/app_0et5yua._.js.map +0 -1
  172. package/.next/server/chunks/ssr/app_10b5blc._.js.map +0 -1
  173. package/.next/server/chunks/ssr/app_11rum9b._.js.map +0 -1
  174. package/.next/static/chunks/0e7c40p~wq665.js +0 -1
  175. /package/.next/static/{qUnnW9GrnCg67RPEEOYpO → 9vSDWewK_Acg2OEuBE1nE}/_buildManifest.js +0 -0
  176. /package/.next/static/{qUnnW9GrnCg67RPEEOYpO → 9vSDWewK_Acg2OEuBE1nE}/_clientMiddlewareManifest.js +0 -0
  177. /package/.next/static/{qUnnW9GrnCg67RPEEOYpO → 9vSDWewK_Acg2OEuBE1nE}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,65822,e=>{"use strict";var s=e.i(83599),t=e.i(58963);let a=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let t=e.includes("?")?"&":"?";return`${e}${t}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",a,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:t}=(0,s.default)("/api/hub/health",a,r);return{health:e||null,error:t}},"useLicense",0,function(){let{data:e,error:t}=(0,s.default)("/api/hub/license",a,{refreshInterval:6e4});return{license:e?.ok?e:null,error:t}},"useMessages",0,function(e=100){let{networkId:l}=(0,t.useNetworkId)(),{data:i,error:o,isLoading:c}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),a,r);return{messages:i?.messages||[],error:o,isLoading:c}},"useSessions",0,function(){let{networkId:e}=(0,t.useNetworkId)(),{data:l,error:i,isLoading:o}=(0,s.default)(n("/api/hub/status",e),a,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,t.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),a,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,t.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),a,r);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:c,isLoading:d}}])},18150,e=>{"use strict";e.s(["formatUptime",0,function(e){let s=Math.floor(e/3600),t=Math.floor(e%3600/60);return s>0?`${s}h ${t}m`:`${t}m`},"timeAgo",0,function(e){if(!e)return"--";let s=Math.floor((Date.now()-new Date(e.replace(" ","T")+"Z").getTime())/1e3);return s<60?`${s}s ago`:s<3600?`${Math.floor(s/60)}m ago`:s<86400?`${Math.floor(s/3600)}h ago`:`${Math.floor(s/86400)}d ago`}])},95356,e=>{"use strict";var s=e.i(18050),t=e.i(22016);let a={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 r({variant:e,size:t}){let a={width:t,height:t},n={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,s.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,s.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,s.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,s.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,s.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,s.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,s.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.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,s.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,s.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.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,s.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,s.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,s.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,s.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,s.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,s.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,s.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,s.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,s.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,s.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,s.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function n({variant:e="generic",title:l,sub:i,cta:o,compact:c=!1}){let d=a[e],x=l??d.title,h=i??d.sub;return(0,s.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,s.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,s.jsx)(r,{variant:e,size:c?40:56})}),(0,s.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(0,s.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,s.jsx)("div",{className:"mt-4",children:o.href?(0,s.jsxs)(t.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,s.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,s.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,s.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}e.s(["EmptyState",0,n,"NodesEmptyState",0,function({hint:e}){return e?.global_count?(0,s.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.`}):(0,s.jsx)(n,{variant:"nodes",cta:{label:"Run anet quickstart",href:"https://anet.sh"}})}])},69874,e=>{"use strict";var s=e.i(18050);let t=[180,200,220,270,300,330,30,90];e.s(["AliasAvatar",0,function({alias:e,size:a=28,className:r=""}){let n=function(e){let s=0;for(let t=0;t<e.length;t++)s=31*s+e.charCodeAt(t)>>>0;let a=t[s%t.length];return{bg:`hsl(${a} 55% 22%)`,ring:`hsl(${a} 60% 45%)`,text:`hsl(${a} 80% 78%)`}}(e),l=Math.max(9,Math.round(.42*a));return(0,s.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${r}`,style:{width:a,height:a,fontSize:l,backgroundColor:n.bg,borderColor:n.ring,color:n.text},title:e,"aria-hidden":!0,children:e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"})}])},86688,e=>{"use strict";var s=e.i(18050),t=e.i(71645),a=e.i(22016),r=e.i(18150),n=e.i(65822),l=e.i(58442),i=e.i(95356),o=e.i(69874);let c={working:"bg-green-500/10 text-green-300 border-green-500/20",idle:"bg-blue-500/10 text-blue-300 border-blue-500/20",blocked:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",error:"bg-red-500/10 text-red-300 border-red-500/20",offline:"bg-gray-500/10 text-gray-500 border-gray-500/20"};e.s(["default",0,function(){let e,d,x,h,{sessions:u,isLoading:g}=(0,n.useSessions)(),{health:p}=(0,n.useHealth)(),m=p?.sse_sessions||{},y=e=>(e.network_id?m[`${e.network_id}:${e.alias}`]:void 0)??m[e.alias],[b,j]=(0,t.useState)(""),[f,v]=(0,t.useState)(""),[N,w]=(0,t.useState)("list"),[k,C]=(0,t.useState)({}),[$,S]=(0,t.useState)(null),[A,T]=(0,t.useState)({}),[_,I]=(0,t.useState)(null),M=u.map(e=>({...e,online:!!y(e)})).filter(e=>"online"===b?e.online:"offline"===b?!e.online:!b||b===e.status).filter(e=>!f||e.alias.toLowerCase().includes(f.toLowerCase())||(e.agent||"").toLowerCase().includes(f.toLowerCase())).sort((e,s)=>!!s.online-!!e.online||("working"===s.status)-("working"===e.status)),L=u.filter(e=>y(e)).length,B=e=>{S(s=>s===e?null:e),T(s=>({...s,[e]:{}}))},E=(e,s)=>{C(t=>({...t,[e]:s}))},U=async e=>{let s=k[e]?.trim()||"";if(s){T(s=>({...s,[e]:{sending:!0}}));try{let t=await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:e,task:s})}),a=await t.json();if(!t.ok||a?.ok===!1)throw Error(a?.error||"Send failed");C(s=>({...s,[e]:""})),T(s=>({...s,[e]:{success:"Task sent"}})),S(null)}catch(s){T(t=>({...t,[e]:{error:s instanceof Error?s.message:"Send failed"}}))}}};return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsxs)("div",{className:"flex items-center gap-4 mb-6",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white lg:ml-0 ml-10",children:"Nodes"}),(0,s.jsxs)("span",{className:"text-xs bg-green-900/30 text-green-400 px-2 py-0.5 rounded-full border border-green-800/30",children:[L," online"]}),(0,s.jsxs)("span",{className:"text-xs bg-gray-900/30 text-gray-400 px-2 py-0.5 rounded-full border border-gray-800/30",children:[u.length," total"]})]}),u.length>0&&(e=M.filter(e=>e.online&&"working"===e.status).length,d=M.filter(e=>e.online&&"idle"===e.status).length,x=M.filter(e=>!e.online).length,h=M.length||1,(0,s.jsxs)("div",{className:"mb-6",children:[(0,s.jsxs)("div",{className:"flex h-2 rounded-full overflow-hidden bg-gray-800",children:[e>0&&(0,s.jsx)("div",{className:"bg-green-500",style:{width:`${e/h*100}%`}}),d>0&&(0,s.jsx)("div",{className:"bg-cyan-500",style:{width:`${d/h*100}%`}}),x>0&&(0,s.jsx)("div",{className:"bg-gray-600",style:{width:`${x/h*100}%`}})]}),(0,s.jsxs)("div",{className:"flex gap-4 mt-1.5 text-[10px] text-gray-500",children:[e>0&&(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-green-500 mr-1"}),e," working"]}),d>0&&(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-cyan-500 mr-1"}),d," idle"]}),x>0&&(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-gray-600 mr-1"}),x," offline"]})]})]})),(0,s.jsxs)("div",{className:"flex flex-wrap gap-3 mb-6",children:[(0,s.jsx)("input",{type:"text",value:f,onChange:e=>v(e.target.value),placeholder:"Search nodes...",className:"bg-[#111128] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-blue-500/50 focus:outline-none w-48"}),(0,s.jsxs)("select",{value:b,onChange:e=>j(e.target.value),className:"bg-[#111128] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white focus:border-blue-500/50 focus:outline-none",children:[(0,s.jsx)("option",{value:"",children:"All"}),(0,s.jsx)("option",{value:"online",children:"Online"}),(0,s.jsx)("option",{value:"offline",children:"Offline"}),(0,s.jsx)("option",{value:"working",children:"Working"}),(0,s.jsx)("option",{value:"idle",children:"Idle"}),(0,s.jsx)("option",{value:"blocked",children:"Blocked"}),(0,s.jsx)("option",{value:"error",children:"Error"})]}),(0,s.jsx)("div",{className:"ml-auto flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 text-sm",children:["list","grid"].map(e=>(0,s.jsx)("button",{type:"button",onClick:()=>w(e),className:`rounded-md px-3 py-1.5 transition-colors ${N===e?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"list"===e?"List":"Grid"},e))})]}),g?(0,s.jsx)("div",{className:"animate-pulse space-y-2",children:[1,2,3,4].map(e=>(0,s.jsx)("div",{className:"h-16 bg-gray-800/20 rounded-lg"},e))}):0===M.length?(0,s.jsx)(i.EmptyState,{variant:"nodes",title:"No nodes match your filters",sub:"Try clearing search or status filters, or wait for an agent to register."}):"grid"===N?(0,s.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4",children:M.map(e=>{let t=e.online?e.status:"offline",n=A[e.alias]||{},l="number"==typeof e.progress?e.progress:0;return(0,s.jsxs)("div",{className:`relative overflow-hidden rounded-xl border border-[#2a2a4a] bg-[#111128] p-4 transition-colors ${!e.online?"opacity-60":""}`,children:[!e.online&&(0,s.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:(0,s.jsx)("span",{className:"rotate-[-20deg] rounded-xl border border-white/10 bg-black/20 px-5 py-2 text-xl font-bold uppercase tracking-[0.35em] text-white/10",children:"Offline"})}),(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)(o.AliasAvatar,{alias:e.alias,size:36}),(0,s.jsxs)(a.default,{href:`/node?alias=${encodeURIComponent(e.alias)}`,className:"min-w-0 flex-1 hover:text-cyan-300",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"truncate text-base font-semibold text-white",children:e.alias}),(0,s.jsx)("span",{className:`shrink-0 rounded-md border px-2 py-0.5 text-[10px] uppercase tracking-wide ${c[t]||c.offline}`,children:t})]}),(0,s.jsxs)("div",{className:"mt-0.5 truncate text-xs text-gray-500",children:[e.agent||"—",(0,s.jsx)("span",{className:"text-gray-700 mx-1.5",children:"·"}),e.server||"—"]})]}),(0,s.jsxs)("div",{className:"flex gap-1.5 shrink-0",children:[(0,s.jsx)("button",{type:"button",onClick:()=>I(e.alias),className:"rounded-lg border border-green-500/20 bg-green-500/10 px-3 py-1.5 text-xs text-green-300 transition-colors hover:bg-green-500/20",children:"Chat"}),(0,s.jsx)("button",{type:"button",onClick:()=>B(e.alias),className:"rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-3 py-1.5 text-xs text-cyan-300 transition-colors hover:bg-cyan-500/20",children:"Task"})]})]}),(0,s.jsxs)("div",{className:"mt-3 rounded-lg border border-[#1a1a2a] bg-[#0a0a15] px-3 py-2 text-xs",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,s.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-gray-600",children:"Current task"}),(0,s.jsx)("span",{className:"text-[10px] text-gray-600",children:(0,r.timeAgo)(e.last_seen_at||e.updated_at)})]}),(0,s.jsx)("div",{className:`mt-1 line-clamp-2 ${e.task?"text-gray-300":"text-gray-600 italic"}`,children:e.task||"No current task"})]}),l>0&&l<100&&(0,s.jsx)("div",{className:"mt-3 h-1.5 overflow-hidden rounded-full bg-gray-800",children:(0,s.jsx)("div",{className:"h-1.5 rounded-full bg-cyan-400 transition-all",style:{width:`${l}%`}})}),$===e.alias&&(0,s.jsxs)("div",{className:"mt-4 space-y-2 rounded-lg border border-[#2a2a4a] bg-[#0a0a15] p-3",children:[(0,s.jsx)("input",{type:"text",value:k[e.alias]||"",onChange:s=>E(e.alias,s.target.value),onKeyDown:s=>"Enter"===s.key&&U(e.alias),placeholder:`Send task to ${e.alias}...`,className:"w-full rounded-lg border border-[#2a2a4a] bg-[#050510] px-3 py-2 text-xs text-white placeholder-gray-600 focus:border-cyan-500 focus:outline-none"}),(0,s.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>S(null),className:"rounded-lg border border-gray-700 px-3 py-1.5 text-xs text-gray-400 hover:text-gray-200",children:"Cancel"}),(0,s.jsx)("button",{type:"button",onClick:()=>U(e.alias),disabled:n.sending||!(k[e.alias]||"").trim(),className:"rounded-lg bg-cyan-600 px-3 py-1.5 text-xs text-white hover:bg-cyan-500 disabled:cursor-not-allowed disabled:bg-gray-700",children:n.sending?"Sending...":"Send"})]})]}),n.error&&(0,s.jsx)("div",{className:"mt-2 text-xs text-red-400",children:n.error}),n.success&&$!==e.alias&&(0,s.jsx)("div",{className:"mt-2 text-xs text-green-400",children:n.success})]},e.alias)})}):(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"hidden sm:grid sm:grid-cols-12 gap-2 px-4 py-2 text-xs text-gray-600 uppercase",children:[(0,s.jsx)("div",{className:"col-span-1",children:"Status"}),(0,s.jsx)("div",{className:"col-span-2",children:"Alias"}),(0,s.jsx)("div",{className:"col-span-2",children:"Agent"}),(0,s.jsx)("div",{className:"col-span-2",children:"Server"}),(0,s.jsx)("div",{className:"col-span-2",children:"Current Task"}),(0,s.jsx)("div",{className:"col-span-1",children:"Updated"}),(0,s.jsx)("div",{className:"col-span-2 text-right",children:"Actions"})]}),M.map(e=>{let t=e.online?e.status:"offline",n=A[e.alias]||{};return(0,s.jsxs)("div",{className:`rounded-lg border border-[#2a2a4a] bg-[#111128] px-4 py-3 transition-colors hover:border-[#3a3a5a] ${!e.online?"opacity-50":""}`,children:[(0,s.jsxs)("div",{className:"hidden sm:grid sm:grid-cols-12 gap-2 items-center",children:[(0,s.jsx)("div",{className:"col-span-1",children:(0,s.jsx)("span",{className:`text-xs px-2 py-0.5 rounded-md border ${c[t]||c.offline}`,children:t})}),(0,s.jsx)("div",{className:"col-span-2 min-w-0",children:(0,s.jsxs)(a.default,{href:`/node?alias=${encodeURIComponent(e.alias)}`,className:"flex items-center gap-2 min-w-0 hover:text-cyan-300",children:[(0,s.jsx)(o.AliasAvatar,{alias:e.alias,size:20}),(0,s.jsx)("span",{className:"truncate text-sm font-medium text-white",children:e.alias})]})}),(0,s.jsx)("div",{className:"col-span-2 truncate text-xs text-gray-400",children:e.agent||"--"}),(0,s.jsx)("div",{className:"col-span-2 truncate text-xs text-gray-400",children:e.server||"--"}),(0,s.jsx)("div",{className:"col-span-2 truncate text-xs text-gray-500",children:e.task||"--"}),(0,s.jsx)("div",{className:"col-span-1 text-xs text-gray-500",children:(0,r.timeAgo)(e.last_seen_at||e.updated_at)}),(0,s.jsxs)("div",{className:"col-span-2 flex justify-end gap-1.5",children:[(0,s.jsx)("button",{type:"button",onClick:()=>I(e.alias),className:"rounded-lg border border-green-500/20 bg-green-500/10 px-2 py-1 text-xs text-green-300 hover:bg-green-500/20",children:"Chat"}),(0,s.jsx)("button",{type:"button",onClick:()=>B(e.alias),className:"rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-2 py-1 text-xs text-cyan-300 hover:bg-cyan-500/20",children:"Task"})]})]}),(0,s.jsxs)("div",{className:"sm:hidden space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,s.jsx)(o.AliasAvatar,{alias:e.alias,size:28}),(0,s.jsxs)(a.default,{href:`/node?alias=${encodeURIComponent(e.alias)}`,className:"min-w-0 flex-1 hover:text-cyan-300",children:[(0,s.jsx)("div",{className:"truncate text-sm font-medium text-white",children:e.alias}),(0,s.jsxs)("div",{className:"truncate text-[10px] text-gray-500",children:[e.agent||"—"," · ",(0,r.timeAgo)(e.last_seen_at||e.updated_at)]})]}),(0,s.jsx)("span",{className:`shrink-0 text-xs px-2 py-0.5 rounded-md border ${c[t]||c.offline}`,children:t})]}),e.task&&(0,s.jsx)("div",{className:"truncate text-xs text-gray-500",children:e.task}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>I(e.alias),className:"flex-1 rounded-lg border border-green-500/20 bg-green-500/10 px-3 py-2 text-xs text-green-300 hover:bg-green-500/20",children:"Chat"}),(0,s.jsx)("button",{type:"button",onClick:()=>B(e.alias),className:"flex-1 rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-3 py-2 text-xs text-cyan-300 hover:bg-cyan-500/20",children:"Send Task"})]})]}),$===e.alias&&(0,s.jsxs)("div",{className:"mt-3 space-y-2 border-t border-[#2a2a4a] pt-3",children:[(0,s.jsx)("input",{type:"text",value:k[e.alias]||"",onChange:s=>E(e.alias,s.target.value),onKeyDown:s=>"Enter"===s.key&&U(e.alias),placeholder:`Send task to ${e.alias}...`,className:"w-full rounded-lg border border-[#2a2a4a] bg-[#0a0a15] px-3 py-2 text-xs text-white placeholder-gray-600 focus:border-cyan-500 focus:outline-none"}),(0,s.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>S(null),className:"rounded-lg border border-gray-700 px-3 py-1.5 text-xs text-gray-400 hover:text-gray-200",children:"Cancel"}),(0,s.jsx)("button",{type:"button",onClick:()=>U(e.alias),disabled:n.sending||!(k[e.alias]||"").trim(),className:"rounded-lg bg-cyan-600 px-3 py-1.5 text-xs text-white hover:bg-cyan-500 disabled:cursor-not-allowed disabled:bg-gray-700",children:n.sending?"Sending...":"Send"})]})]}),n.error&&(0,s.jsx)("div",{className:"mt-2 text-xs text-red-400",children:n.error}),n.success&&$!==e.alias&&(0,s.jsx)("div",{className:"mt-2 text-xs text-green-400",children:n.success})]},e.alias)})]}),_&&(0,s.jsx)(l.TaskChatPanel,{alias:_,onClose:()=>I(null)})]})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18150,e=>{"use strict";e.s(["formatUptime",0,function(e){let s=Math.floor(e/3600),t=Math.floor(e%3600/60);return s>0?`${s}h ${t}m`:`${t}m`},"timeAgo",0,function(e){if(!e)return"--";let s=Math.floor((Date.now()-new Date(e.replace(" ","T")+"Z").getTime())/1e3);return s<60?`${s}s ago`:s<3600?`${Math.floor(s/60)}m ago`:s<86400?`${Math.floor(s/3600)}h ago`:`${Math.floor(s/86400)}d ago`}])},69874,e=>{"use strict";var s=e.i(18050);let t=[180,200,220,270,300,330,30,90];e.s(["AliasAvatar",0,function({alias:e,size:a=28,className:r=""}){let n=function(e){let s=0;for(let t=0;t<e.length;t++)s=31*s+e.charCodeAt(t)>>>0;let a=t[s%t.length];return{bg:`hsl(${a} 55% 22%)`,ring:`hsl(${a} 60% 45%)`,text:`hsl(${a} 80% 78%)`}}(e),l=Math.max(9,Math.round(.42*a));return(0,s.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${r}`,style:{width:a,height:a,fontSize:l,backgroundColor:n.bg,borderColor:n.ring,color:n.text},title:e,"aria-hidden":!0,children:e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"})}])},95356,e=>{"use strict";var s=e.i(18050),t=e.i(22016);let a={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 r({variant:e,size:t}){let a={width:t,height:t},n={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,s.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,s.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,s.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,s.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,s.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,s.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,s.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.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,s.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,s.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.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,s.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,s.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,s.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,s.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,s.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,s.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,s.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,s.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,s.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,s.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,s.jsx)("svg",{viewBox:"0 0 64 64",...a,children:(0,s.jsxs)("g",{...n,children:[(0,s.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,s.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function n({variant:e="generic",title:l,sub:i,cta:o,compact:c=!1}){let d=a[e],x=l??d.title,h=i??d.sub;return(0,s.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,s.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,s.jsx)(r,{variant:e,size:c?40:56})}),(0,s.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(0,s.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,s.jsx)("div",{className:"mt-4",children:o.href?(0,s.jsxs)(t.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,s.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,s.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,s.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}e.s(["EmptyState",0,n,"NodesEmptyState",0,function({hint:e}){return e?.global_count?(0,s.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.`}):(0,s.jsx)(n,{variant:"nodes",cta:{label:"Run anet quickstart",href:"https://anet.sh"}})}])},65822,e=>{"use strict";var s=e.i(83599),t=e.i(58963);let a=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let t=e.includes("?")?"&":"?";return`${e}${t}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",a,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:t}=(0,s.default)("/api/hub/health",a,r);return{health:e||null,error:t}},"useLicense",0,function(){let{data:e,error:t}=(0,s.default)("/api/hub/license",a,{refreshInterval:6e4});return{license:e?.ok?e:null,error:t}},"useMessages",0,function(e=100){let{networkId:l}=(0,t.useNetworkId)(),{data:i,error:o,isLoading:c}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),a,r);return{messages:i?.messages||[],error:o,isLoading:c}},"useSessions",0,function(){let{networkId:e}=(0,t.useNetworkId)(),{data:l,error:i,isLoading:o}=(0,s.default)(n("/api/hub/status",e),a,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,t.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),a,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,t.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),a,r);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:c,isLoading:d}}])},86688,e=>{"use strict";var s=e.i(18050),t=e.i(71645),a=e.i(22016),r=e.i(18150),n=e.i(65822),l=e.i(58442),i=e.i(95356),o=e.i(69874);let c={working:"bg-green-500/10 text-green-300 border-green-500/20",idle:"bg-blue-500/10 text-blue-300 border-blue-500/20",blocked:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",error:"bg-red-500/10 text-red-300 border-red-500/20",offline:"bg-gray-500/10 text-gray-500 border-gray-500/20"};e.s(["default",0,function(){let e,d,x,h,{sessions:u,isLoading:g}=(0,n.useSessions)(),{health:p}=(0,n.useHealth)(),m=p?.sse_sessions||{},y=e=>(e.network_id?m[`${e.network_id}:${e.alias}`]:void 0)??m[e.alias],[b,j]=(0,t.useState)(""),[f,v]=(0,t.useState)(""),[N,w]=(0,t.useState)("list"),[k,C]=(0,t.useState)({}),[$,S]=(0,t.useState)(null),[A,T]=(0,t.useState)({}),[_,I]=(0,t.useState)(null),M=u.map(e=>({...e,online:!!y(e)})).filter(e=>"online"===b?e.online:"offline"===b?!e.online:!b||b===e.status).filter(e=>!f||e.alias.toLowerCase().includes(f.toLowerCase())||(e.agent||"").toLowerCase().includes(f.toLowerCase())).sort((e,s)=>!!s.online-!!e.online||("working"===s.status)-("working"===e.status)),L=u.filter(e=>y(e)).length,B=e=>{S(s=>s===e?null:e),T(s=>({...s,[e]:{}}))},E=(e,s)=>{C(t=>({...t,[e]:s}))},U=async e=>{let s=k[e]?.trim()||"";if(s){T(s=>({...s,[e]:{sending:!0}}));try{let t=await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:e,task:s})}),a=await t.json();if(!t.ok||a?.ok===!1)throw Error(a?.error||"Send failed");C(s=>({...s,[e]:""})),T(s=>({...s,[e]:{success:"Task sent"}})),S(null)}catch(s){T(t=>({...t,[e]:{error:s instanceof Error?s.message:"Send failed"}}))}}};return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsxs)("div",{className:"flex items-center gap-4 mb-6",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white lg:ml-0 ml-10",children:"Nodes"}),(0,s.jsxs)("span",{className:"text-xs bg-green-900/30 text-green-400 px-2 py-0.5 rounded-full border border-green-800/30",children:[L," online"]}),(0,s.jsxs)("span",{className:"text-xs bg-gray-900/30 text-gray-400 px-2 py-0.5 rounded-full border border-gray-800/30",children:[u.length," total"]})]}),u.length>0&&(e=M.filter(e=>e.online&&"working"===e.status).length,d=M.filter(e=>e.online&&"idle"===e.status).length,x=M.filter(e=>!e.online).length,h=M.length||1,(0,s.jsxs)("div",{className:"mb-6",children:[(0,s.jsxs)("div",{className:"flex h-2 rounded-full overflow-hidden bg-gray-800",children:[e>0&&(0,s.jsx)("div",{className:"bg-green-500",style:{width:`${e/h*100}%`}}),d>0&&(0,s.jsx)("div",{className:"bg-cyan-500",style:{width:`${d/h*100}%`}}),x>0&&(0,s.jsx)("div",{className:"bg-gray-600",style:{width:`${x/h*100}%`}})]}),(0,s.jsxs)("div",{className:"flex gap-4 mt-1.5 text-[10px] text-gray-500",children:[e>0&&(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-green-500 mr-1"}),e," working"]}),d>0&&(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-cyan-500 mr-1"}),d," idle"]}),x>0&&(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-gray-600 mr-1"}),x," offline"]})]})]})),(0,s.jsxs)("div",{className:"flex flex-wrap gap-3 mb-6",children:[(0,s.jsx)("input",{type:"text",value:f,onChange:e=>v(e.target.value),placeholder:"Search nodes...",className:"bg-[#111128] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-blue-500/50 focus:outline-none w-48"}),(0,s.jsxs)("select",{value:b,onChange:e=>j(e.target.value),className:"bg-[#111128] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white focus:border-blue-500/50 focus:outline-none",children:[(0,s.jsx)("option",{value:"",children:"All"}),(0,s.jsx)("option",{value:"online",children:"Online"}),(0,s.jsx)("option",{value:"offline",children:"Offline"}),(0,s.jsx)("option",{value:"working",children:"Working"}),(0,s.jsx)("option",{value:"idle",children:"Idle"}),(0,s.jsx)("option",{value:"blocked",children:"Blocked"}),(0,s.jsx)("option",{value:"error",children:"Error"})]}),(0,s.jsx)("div",{className:"ml-auto flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 text-sm",children:["list","grid"].map(e=>(0,s.jsx)("button",{type:"button",onClick:()=>w(e),className:`rounded-md px-3 py-1.5 transition-colors ${N===e?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"list"===e?"List":"Grid"},e))})]}),g?(0,s.jsx)("div",{className:"animate-pulse space-y-2",children:[1,2,3,4].map(e=>(0,s.jsx)("div",{className:"h-16 bg-gray-800/20 rounded-lg"},e))}):0===M.length?(0,s.jsx)(i.EmptyState,{variant:"nodes",title:"No nodes match your filters",sub:"Try clearing search or status filters, or wait for an agent to register."}):"grid"===N?(0,s.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4",children:M.map(e=>{let t=e.online?e.status:"offline",n=A[e.alias]||{},l="number"==typeof e.progress?e.progress:0;return(0,s.jsxs)("div",{className:`relative overflow-hidden rounded-xl border border-[#2a2a4a] bg-[#111128] p-4 transition-colors ${!e.online?"opacity-60":""}`,children:[!e.online&&(0,s.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:(0,s.jsx)("span",{className:"rotate-[-20deg] rounded-xl border border-white/10 bg-black/20 px-5 py-2 text-xl font-bold uppercase tracking-[0.35em] text-white/10",children:"Offline"})}),(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)(o.AliasAvatar,{alias:e.alias,size:36}),(0,s.jsxs)(a.default,{href:`/node?alias=${encodeURIComponent(e.alias)}`,className:"min-w-0 flex-1 hover:text-cyan-300",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"truncate text-base font-semibold text-white",children:e.alias}),(0,s.jsx)("span",{className:`shrink-0 rounded-md border px-2 py-0.5 text-[10px] uppercase tracking-wide ${c[t]||c.offline}`,children:t})]}),(0,s.jsxs)("div",{className:"mt-0.5 truncate text-xs text-gray-500",children:[e.agent||"—",(0,s.jsx)("span",{className:"text-gray-700 mx-1.5",children:"·"}),e.server||"—"]})]}),(0,s.jsxs)("div",{className:"flex gap-1.5 shrink-0",children:[(0,s.jsx)("button",{type:"button",onClick:()=>I(e.alias),className:"rounded-lg border border-green-500/20 bg-green-500/10 px-3 py-1.5 text-xs text-green-300 transition-colors hover:bg-green-500/20",children:"Chat"}),(0,s.jsx)("button",{type:"button",onClick:()=>B(e.alias),className:"rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-3 py-1.5 text-xs text-cyan-300 transition-colors hover:bg-cyan-500/20",children:"Task"})]})]}),(0,s.jsxs)("div",{className:"mt-3 rounded-lg border border-[#1a1a2a] bg-[#0a0a15] px-3 py-2 text-xs",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,s.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-gray-600",children:"Current task"}),(0,s.jsx)("span",{className:"text-[10px] text-gray-600",children:(0,r.timeAgo)(e.last_seen_at||e.updated_at)})]}),(0,s.jsx)("div",{className:`mt-1 line-clamp-2 ${e.task?"text-gray-300":"text-gray-600 italic"}`,children:e.task||"No current task"})]}),l>0&&l<100&&(0,s.jsx)("div",{className:"mt-3 h-1.5 overflow-hidden rounded-full bg-gray-800",children:(0,s.jsx)("div",{className:"h-1.5 rounded-full bg-cyan-400 transition-all",style:{width:`${l}%`}})}),$===e.alias&&(0,s.jsxs)("div",{className:"mt-4 space-y-2 rounded-lg border border-[#2a2a4a] bg-[#0a0a15] p-3",children:[(0,s.jsx)("input",{type:"text",value:k[e.alias]||"",onChange:s=>E(e.alias,s.target.value),onKeyDown:s=>"Enter"===s.key&&U(e.alias),placeholder:`Send task to ${e.alias}...`,className:"w-full rounded-lg border border-[#2a2a4a] bg-[#050510] px-3 py-2 text-xs text-white placeholder-gray-600 focus:border-cyan-500 focus:outline-none"}),(0,s.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>S(null),className:"rounded-lg border border-gray-700 px-3 py-1.5 text-xs text-gray-400 hover:text-gray-200",children:"Cancel"}),(0,s.jsx)("button",{type:"button",onClick:()=>U(e.alias),disabled:n.sending||!(k[e.alias]||"").trim(),className:"rounded-lg bg-cyan-600 px-3 py-1.5 text-xs text-white hover:bg-cyan-500 disabled:cursor-not-allowed disabled:bg-gray-700",children:n.sending?"Sending...":"Send"})]})]}),n.error&&(0,s.jsx)("div",{className:"mt-2 text-xs text-red-400",children:n.error}),n.success&&$!==e.alias&&(0,s.jsx)("div",{className:"mt-2 text-xs text-green-400",children:n.success})]},e.alias)})}):(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"hidden sm:grid sm:grid-cols-12 gap-2 px-4 py-2 text-xs text-gray-600 uppercase",children:[(0,s.jsx)("div",{className:"col-span-1",children:"Status"}),(0,s.jsx)("div",{className:"col-span-2",children:"Alias"}),(0,s.jsx)("div",{className:"col-span-2",children:"Agent"}),(0,s.jsx)("div",{className:"col-span-2",children:"Server"}),(0,s.jsx)("div",{className:"col-span-2",children:"Current Task"}),(0,s.jsx)("div",{className:"col-span-1",children:"Updated"}),(0,s.jsx)("div",{className:"col-span-2 text-right",children:"Actions"})]}),M.map(e=>{let t=e.online?e.status:"offline",n=A[e.alias]||{};return(0,s.jsxs)("div",{className:`rounded-lg border border-[#2a2a4a] bg-[#111128] px-4 py-3 transition-colors hover:border-[#3a3a5a] ${!e.online?"opacity-50":""}`,children:[(0,s.jsxs)("div",{className:"hidden sm:grid sm:grid-cols-12 gap-2 items-center",children:[(0,s.jsx)("div",{className:"col-span-1",children:(0,s.jsx)("span",{className:`text-xs px-2 py-0.5 rounded-md border ${c[t]||c.offline}`,children:t})}),(0,s.jsx)("div",{className:"col-span-2 min-w-0",children:(0,s.jsxs)(a.default,{href:`/node?alias=${encodeURIComponent(e.alias)}`,className:"flex items-center gap-2 min-w-0 hover:text-cyan-300",children:[(0,s.jsx)(o.AliasAvatar,{alias:e.alias,size:20}),(0,s.jsx)("span",{className:"truncate text-sm font-medium text-white",children:e.alias})]})}),(0,s.jsx)("div",{className:"col-span-2 truncate text-xs text-gray-400",children:e.agent||"--"}),(0,s.jsx)("div",{className:"col-span-2 truncate text-xs text-gray-400",children:e.server||"--"}),(0,s.jsx)("div",{className:"col-span-2 truncate text-xs text-gray-500",children:e.task||"--"}),(0,s.jsx)("div",{className:"col-span-1 text-xs text-gray-500",children:(0,r.timeAgo)(e.last_seen_at||e.updated_at)}),(0,s.jsxs)("div",{className:"col-span-2 flex justify-end gap-1.5",children:[(0,s.jsx)("button",{type:"button",onClick:()=>I(e.alias),className:"rounded-lg border border-green-500/20 bg-green-500/10 px-2 py-1 text-xs text-green-300 hover:bg-green-500/20",children:"Chat"}),(0,s.jsx)("button",{type:"button",onClick:()=>B(e.alias),className:"rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-2 py-1 text-xs text-cyan-300 hover:bg-cyan-500/20",children:"Task"})]})]}),(0,s.jsxs)("div",{className:"sm:hidden space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,s.jsx)(o.AliasAvatar,{alias:e.alias,size:28}),(0,s.jsxs)(a.default,{href:`/node?alias=${encodeURIComponent(e.alias)}`,className:"min-w-0 flex-1 hover:text-cyan-300",children:[(0,s.jsx)("div",{className:"truncate text-sm font-medium text-white",children:e.alias}),(0,s.jsxs)("div",{className:"truncate text-[10px] text-gray-500",children:[e.agent||"—"," · ",(0,r.timeAgo)(e.last_seen_at||e.updated_at)]})]}),(0,s.jsx)("span",{className:`shrink-0 text-xs px-2 py-0.5 rounded-md border ${c[t]||c.offline}`,children:t})]}),e.task&&(0,s.jsx)("div",{className:"truncate text-xs text-gray-500",children:e.task}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>I(e.alias),className:"flex-1 rounded-lg border border-green-500/20 bg-green-500/10 px-3 py-2 text-xs text-green-300 hover:bg-green-500/20",children:"Chat"}),(0,s.jsx)("button",{type:"button",onClick:()=>B(e.alias),className:"flex-1 rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-3 py-2 text-xs text-cyan-300 hover:bg-cyan-500/20",children:"Send Task"})]})]}),$===e.alias&&(0,s.jsxs)("div",{className:"mt-3 space-y-2 border-t border-[#2a2a4a] pt-3",children:[(0,s.jsx)("input",{type:"text",value:k[e.alias]||"",onChange:s=>E(e.alias,s.target.value),onKeyDown:s=>"Enter"===s.key&&U(e.alias),placeholder:`Send task to ${e.alias}...`,className:"w-full rounded-lg border border-[#2a2a4a] bg-[#0a0a15] px-3 py-2 text-xs text-white placeholder-gray-600 focus:border-cyan-500 focus:outline-none"}),(0,s.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>S(null),className:"rounded-lg border border-gray-700 px-3 py-1.5 text-xs text-gray-400 hover:text-gray-200",children:"Cancel"}),(0,s.jsx)("button",{type:"button",onClick:()=>U(e.alias),disabled:n.sending||!(k[e.alias]||"").trim(),className:"rounded-lg bg-cyan-600 px-3 py-1.5 text-xs text-white hover:bg-cyan-500 disabled:cursor-not-allowed disabled:bg-gray-700",children:n.sending?"Sending...":"Send"})]})]}),n.error&&(0,s.jsx)("div",{className:"mt-2 text-xs text-red-400",children:n.error}),n.success&&$!==e.alias&&(0,s.jsx)("div",{className:"mt-2 text-xs text-green-400",children:n.success})]},e.alias)})]}),_&&(0,s.jsx)(l.TaskChatPanel,{alias:_,onClose:()=>I(null)})]})}])}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":340,"timestamp":193047259111,"id":4,"parentId":1,"tags":{},"startTime":1778564533084,"traceId":"e5935599772cdd6b"},{"name":"load-custom-routes","duration":512,"timestamp":193047259614,"id":5,"parentId":1,"tags":{},"startTime":1778564533084,"traceId":"e5935599772cdd6b"},{"name":"create-dist-dir","duration":366,"timestamp":193047260174,"id":6,"parentId":1,"tags":{},"startTime":1778564533085,"traceId":"e5935599772cdd6b"},{"name":"clean","duration":547,"timestamp":193047261226,"id":7,"parentId":1,"tags":{},"startTime":1778564533086,"traceId":"e5935599772cdd6b"},{"name":"discover-routes","duration":8900,"timestamp":193047347812,"id":8,"parentId":1,"tags":{},"startTime":1778564533173,"traceId":"e5935599772cdd6b"},{"name":"create-root-mapping","duration":109,"timestamp":193047356778,"id":9,"parentId":1,"tags":{},"startTime":1778564533181,"traceId":"e5935599772cdd6b"},{"name":"generate-route-types","duration":30487,"timestamp":193047359105,"id":10,"parentId":1,"tags":{},"startTime":1778564533184,"traceId":"e5935599772cdd6b"},{"name":"public-dir-conflict-check","duration":109,"timestamp":193047389689,"id":11,"parentId":1,"tags":{},"startTime":1778564533214,"traceId":"e5935599772cdd6b"},{"name":"generate-routes-manifest","duration":4254,"timestamp":193047389915,"id":12,"parentId":1,"tags":{},"startTime":1778564533215,"traceId":"e5935599772cdd6b"},{"name":"run-turbopack","duration":7605712,"timestamp":193047407611,"id":14,"parentId":1,"tags":{},"startTime":1778564533232,"traceId":"e5935599772cdd6b"},{"name":"turbopack-build-events","duration":77,"timestamp":193047692465,"id":15,"parentId":1,"tags":{},"startTime":1778564533517,"traceId":"e5935599772cdd6b"},{"name":"run-typescript","duration":7268943,"timestamp":193055020542,"id":16,"parentId":1,"tags":{},"startTime":1778564540845,"traceId":"e5935599772cdd6b"},{"name":"generate-required-server-files","duration":3095,"timestamp":193062290823,"id":18,"parentId":1,"tags":{},"startTime":1778564548116,"traceId":"e5935599772cdd6b"},{"name":"check-static-error-page","duration":17167,"timestamp":193062384205,"id":20,"parentId":19,"tags":{},"startTime":1778564548209,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":437441,"timestamp":193062405330,"id":62,"parentId":22,"tags":{},"startTime":1778564548230,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":455690,"timestamp":193062387249,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778564548212,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":526014,"timestamp":193062405453,"id":63,"parentId":25,"tags":{},"startTime":1778564548230,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":541041,"timestamp":193062390531,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778564548215,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":527591,"timestamp":193062404879,"id":61,"parentId":21,"tags":{},"startTime":1778564548230,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":546892,"timestamp":193062385640,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778564548210,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":560386,"timestamp":193062405733,"id":65,"parentId":27,"tags":{},"startTime":1778564548230,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":573783,"timestamp":193062392420,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778564548217,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":583333,"timestamp":193062405846,"id":67,"parentId":29,"tags":{},"startTime":1778564548231,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":596500,"timestamp":193062392768,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778564548217,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":588326,"timestamp":193062405895,"id":68,"parentId":30,"tags":{},"startTime":1778564548231,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":601156,"timestamp":193062393149,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778564548218,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":591072,"timestamp":193062405665,"id":64,"parentId":26,"tags":{},"startTime":1778564548230,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":604576,"timestamp":193062392242,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778564548217,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":592494,"timestamp":193062405950,"id":69,"parentId":32,"tags":{},"startTime":1778564548231,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":604964,"timestamp":193062393550,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778564548218,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":596818,"timestamp":193062407239,"id":71,"parentId":34,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":610304,"timestamp":193062393843,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778564548219,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":598549,"timestamp":193062405790,"id":66,"parentId":28,"tags":{},"startTime":1778564548230,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":611784,"timestamp":193062392590,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778564548217,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":600819,"timestamp":193062407259,"id":72,"parentId":35,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":614122,"timestamp":193062394018,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778564548219,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":601747,"timestamp":193062407317,"id":73,"parentId":36,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":614580,"timestamp":193062394536,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778564548219,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":606477,"timestamp":193062407336,"id":74,"parentId":37,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":619180,"timestamp":193062394692,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778564548219,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":606909,"timestamp":193062407345,"id":75,"parentId":38,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":619493,"timestamp":193062394800,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778564548219,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":610732,"timestamp":193062407351,"id":76,"parentId":39,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":623263,"timestamp":193062394875,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778564548220,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":611394,"timestamp":193062407357,"id":77,"parentId":40,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":623842,"timestamp":193062394951,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778564548220,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":614456,"timestamp":193062407362,"id":78,"parentId":41,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":626815,"timestamp":193062395078,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778564548220,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":615763,"timestamp":193062407368,"id":79,"parentId":42,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":627971,"timestamp":193062395206,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778564548220,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":619043,"timestamp":193062407373,"id":80,"parentId":43,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":631151,"timestamp":193062395314,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778564548220,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":622291,"timestamp":193062407378,"id":81,"parentId":44,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":634311,"timestamp":193062395424,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778564548220,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":623399,"timestamp":193062407382,"id":82,"parentId":45,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":635299,"timestamp":193062395539,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778564548220,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":624437,"timestamp":193062407168,"id":70,"parentId":33,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":637943,"timestamp":193062393712,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778564548218,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":624517,"timestamp":193062407387,"id":83,"parentId":46,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":636294,"timestamp":193062395681,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778564548220,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":628162,"timestamp":193062407392,"id":84,"parentId":47,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":639838,"timestamp":193062395783,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778564548220,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":628150,"timestamp":193062410146,"id":86,"parentId":24,"tags":{},"startTime":1778564548235,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":650601,"timestamp":193062387752,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778564548212,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":629204,"timestamp":193062411240,"id":87,"parentId":31,"tags":{},"startTime":1778564548236,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":647201,"timestamp":193062393297,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778564548218,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":637891,"timestamp":193062407397,"id":85,"parentId":48,"tags":{},"startTime":1778564548232,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":649465,"timestamp":193062395896,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778564548221,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":622150,"timestamp":193062424471,"id":88,"parentId":23,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":659120,"timestamp":193062387554,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778564548212,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":630483,"timestamp":193062424547,"id":91,"parentId":51,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":658486,"timestamp":193062396642,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778564548221,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":638555,"timestamp":193062424563,"id":92,"parentId":52,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":666329,"timestamp":193062396855,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778564548222,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":648721,"timestamp":193062424573,"id":93,"parentId":53,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":676280,"timestamp":193062397092,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778564548222,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":654302,"timestamp":193062424588,"id":94,"parentId":55,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":681185,"timestamp":193062397790,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778564548222,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":664218,"timestamp":193062424602,"id":95,"parentId":56,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":690860,"timestamp":193062398050,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778564548223,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":676294,"timestamp":193062424610,"id":96,"parentId":58,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":700260,"timestamp":193062400735,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778564548225,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":678569,"timestamp":193062424532,"id":90,"parentId":50,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":706669,"timestamp":193062396489,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778564548221,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":681219,"timestamp":193062424521,"id":89,"parentId":49,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":709474,"timestamp":193062396316,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778564548221,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":688547,"timestamp":193062424664,"id":98,"parentId":60,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":712178,"timestamp":193062401095,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778564548226,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":688693,"timestamp":193062424679,"id":99,"parentId":54,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":716077,"timestamp":193062397322,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778564548222,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":692036,"timestamp":193062424623,"id":97,"parentId":59,"tags":{},"startTime":1778564548249,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":715816,"timestamp":193062400910,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778564548226,"traceId":"e5935599772cdd6b"},{"name":"is-page-static","duration":687207,"timestamp":193062433983,"id":100,"parentId":57,"tags":{},"startTime":1778564548259,"traceId":"e5935599772cdd6b"},{"name":"check-page","duration":722950,"timestamp":193062398297,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778564548223,"traceId":"e5935599772cdd6b"},{"name":"static-check","duration":738418,"timestamp":193062382867,"id":19,"parentId":1,"tags":{},"startTime":1778564548208,"traceId":"e5935599772cdd6b"},{"name":"write-routes-manifest","duration":527,"timestamp":193063129247,"id":102,"parentId":1,"tags":{},"startTime":1778564548954,"traceId":"e5935599772cdd6b"},{"name":"load-dotenv","duration":49,"timestamp":193063143429,"id":105,"parentId":104,"tags":{},"startTime":1778564548968,"traceId":"e5935599772cdd6b"},{"name":"run-export-path-map","duration":720,"timestamp":193063146160,"id":106,"parentId":104,"tags":{},"startTime":1778564548971,"traceId":"e5935599772cdd6b"},{"name":"next-export","duration":533554,"timestamp":193063142193,"id":104,"parentId":1,"tags":{},"startTime":1778564548967,"traceId":"e5935599772cdd6b"},{"name":"move-exported-app-not-found-","duration":1699,"timestamp":193063679168,"id":107,"parentId":103,"tags":{},"startTime":1778564549504,"traceId":"e5935599772cdd6b"},{"name":"move-exported-app-global-error-","duration":489,"timestamp":193063681027,"id":108,"parentId":103,"tags":{},"startTime":1778564549506,"traceId":"e5935599772cdd6b"}]
2
- [{"name":"static-generation","duration":550782,"timestamp":193063134992,"id":103,"parentId":1,"tags":{},"startTime":1778564548960,"traceId":"e5935599772cdd6b"},{"name":"write-routes-manifest","duration":447,"timestamp":193063685941,"id":109,"parentId":1,"tags":{},"startTime":1778564549511,"traceId":"e5935599772cdd6b"},{"name":"print-tree-view","duration":3832,"timestamp":193063694081,"id":110,"parentId":1,"tags":{},"startTime":1778564549519,"traceId":"e5935599772cdd6b"},{"name":"write-route-bundle-stats","duration":13346,"timestamp":193063697948,"id":111,"parentId":1,"tags":{},"startTime":1778564549523,"traceId":"e5935599772cdd6b"},{"name":"telemetry-flush","duration":27053,"timestamp":193063711329,"id":112,"parentId":1,"tags":{},"startTime":1778564549536,"traceId":"e5935599772cdd6b"},{"name":"next-build","duration":16528834,"timestamp":193047209584,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778564533034,"traceId":"e5935599772cdd6b"}]
1
+ [{"name":"generate-buildid","duration":302,"timestamp":193534867126,"id":4,"parentId":1,"tags":{},"startTime":1778565020692,"traceId":"b953c42af2628d1a"},{"name":"load-custom-routes","duration":538,"timestamp":193534867573,"id":5,"parentId":1,"tags":{},"startTime":1778565020692,"traceId":"b953c42af2628d1a"},{"name":"create-dist-dir","duration":567,"timestamp":193534868367,"id":6,"parentId":1,"tags":{},"startTime":1778565020693,"traceId":"b953c42af2628d1a"},{"name":"clean","duration":645,"timestamp":193534869959,"id":7,"parentId":1,"tags":{},"startTime":1778565020695,"traceId":"b953c42af2628d1a"},{"name":"discover-routes","duration":12284,"timestamp":193535003563,"id":8,"parentId":1,"tags":{},"startTime":1778565020828,"traceId":"b953c42af2628d1a"},{"name":"create-root-mapping","duration":131,"timestamp":193535015930,"id":9,"parentId":1,"tags":{},"startTime":1778565020841,"traceId":"b953c42af2628d1a"},{"name":"generate-route-types","duration":38758,"timestamp":193535018381,"id":10,"parentId":1,"tags":{},"startTime":1778565020843,"traceId":"b953c42af2628d1a"},{"name":"public-dir-conflict-check","duration":98,"timestamp":193535057308,"id":11,"parentId":1,"tags":{},"startTime":1778565020882,"traceId":"b953c42af2628d1a"},{"name":"generate-routes-manifest","duration":4244,"timestamp":193535057583,"id":12,"parentId":1,"tags":{},"startTime":1778565020882,"traceId":"b953c42af2628d1a"},{"name":"run-turbopack","duration":12417567,"timestamp":193535070193,"id":14,"parentId":1,"tags":{},"startTime":1778565020895,"traceId":"b953c42af2628d1a"},{"name":"turbopack-build-events","duration":77,"timestamp":193535491437,"id":15,"parentId":1,"tags":{},"startTime":1778565021316,"traceId":"b953c42af2628d1a"},{"name":"run-typescript","duration":9856766,"timestamp":193547496313,"id":16,"parentId":1,"tags":{},"startTime":1778565033321,"traceId":"b953c42af2628d1a"},{"name":"generate-required-server-files","duration":2658,"timestamp":193557354238,"id":18,"parentId":1,"tags":{},"startTime":1778565043179,"traceId":"b953c42af2628d1a"},{"name":"check-static-error-page","duration":21266,"timestamp":193557450777,"id":20,"parentId":19,"tags":{},"startTime":1778565043275,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":472277,"timestamp":193557474312,"id":62,"parentId":22,"tags":{},"startTime":1778565043299,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":492733,"timestamp":193557453978,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778565043279,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":528018,"timestamp":193557473981,"id":61,"parentId":21,"tags":{},"startTime":1778565043299,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":550196,"timestamp":193557451900,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778565043277,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":644957,"timestamp":193557474397,"id":63,"parentId":25,"tags":{},"startTime":1778565043299,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":662762,"timestamp":193557456667,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778565043281,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":651983,"timestamp":193557474578,"id":65,"parentId":27,"tags":{},"startTime":1778565043299,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":669583,"timestamp":193557457050,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778565043282,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":659977,"timestamp":193557474537,"id":64,"parentId":26,"tags":{},"startTime":1778565043299,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":677703,"timestamp":193557456879,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778565043282,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":671051,"timestamp":193557474657,"id":67,"parentId":29,"tags":{},"startTime":1778565043299,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":688430,"timestamp":193557457348,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778565043282,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":671346,"timestamp":193557474612,"id":66,"parentId":28,"tags":{},"startTime":1778565043299,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":688788,"timestamp":193557457201,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778565043282,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":684662,"timestamp":193557474727,"id":69,"parentId":32,"tags":{},"startTime":1778565043299,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":700333,"timestamp":193557459179,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778565043284,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":691487,"timestamp":193557474876,"id":71,"parentId":34,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":706207,"timestamp":193557460222,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778565043285,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":704957,"timestamp":193557474831,"id":70,"parentId":33,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":719856,"timestamp":193557459993,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778565043285,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":722021,"timestamp":193557474896,"id":72,"parentId":35,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":736619,"timestamp":193557460376,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778565043285,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":741469,"timestamp":193557474692,"id":68,"parentId":30,"tags":{},"startTime":1778565043299,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":758545,"timestamp":193557457680,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778565043282,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":743614,"timestamp":193557474983,"id":74,"parentId":37,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":757766,"timestamp":193557460884,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778565043286,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":746276,"timestamp":193557474963,"id":73,"parentId":36,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":760543,"timestamp":193557460747,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778565043285,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":751707,"timestamp":193557474996,"id":76,"parentId":39,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":765652,"timestamp":193557461107,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778565043286,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":754190,"timestamp":193557475015,"id":77,"parentId":40,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":768065,"timestamp":193557461188,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778565043286,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":759384,"timestamp":193557475021,"id":78,"parentId":41,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":773134,"timestamp":193557461335,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778565043286,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":761330,"timestamp":193557475027,"id":79,"parentId":42,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":774974,"timestamp":193557461438,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778565043286,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":769848,"timestamp":193557474991,"id":75,"parentId":38,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":783884,"timestamp":193557461021,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778565043286,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":770049,"timestamp":193557475033,"id":80,"parentId":43,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":783600,"timestamp":193557461513,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778565043286,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":771391,"timestamp":193557475038,"id":81,"parentId":44,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":784878,"timestamp":193557461596,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778565043286,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":782787,"timestamp":193557475044,"id":82,"parentId":45,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":796212,"timestamp":193557461675,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778565043286,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":784021,"timestamp":193557475050,"id":83,"parentId":46,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":797347,"timestamp":193557461775,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778565043286,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":784216,"timestamp":193557475056,"id":84,"parentId":47,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":797435,"timestamp":193557461856,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778565043287,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":789128,"timestamp":193557477228,"id":86,"parentId":24,"tags":{},"startTime":1778565043302,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":812077,"timestamp":193557454364,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778565043279,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":775570,"timestamp":193557490987,"id":87,"parentId":31,"tags":{},"startTime":1778565043316,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":808730,"timestamp":193557457847,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778565043283,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":791611,"timestamp":193557475061,"id":85,"parentId":48,"tags":{},"startTime":1778565043300,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":804766,"timestamp":193557461929,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778565043287,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":730840,"timestamp":193557553657,"id":88,"parentId":23,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":830325,"timestamp":193557454226,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778565043279,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":746106,"timestamp":193557553713,"id":91,"parentId":51,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":837347,"timestamp":193557462536,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778565043287,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":759983,"timestamp":193557553719,"id":92,"parentId":52,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":851045,"timestamp":193557462709,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778565043287,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":777029,"timestamp":193557553727,"id":93,"parentId":53,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":867938,"timestamp":193557462876,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778565043288,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":788549,"timestamp":193557553736,"id":94,"parentId":55,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":877296,"timestamp":193557465047,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778565043290,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":808449,"timestamp":193557553694,"id":89,"parentId":49,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":899928,"timestamp":193557462290,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778565043287,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":816441,"timestamp":193557553741,"id":95,"parentId":56,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":904967,"timestamp":193557465271,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778565043290,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":822347,"timestamp":193557553749,"id":96,"parentId":58,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":904645,"timestamp":193557471514,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778565043296,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":822607,"timestamp":193557553704,"id":90,"parentId":50,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":913916,"timestamp":193557462415,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778565043287,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":826636,"timestamp":193557553770,"id":98,"parentId":60,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":908642,"timestamp":193557471815,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778565043297,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":834882,"timestamp":193557553788,"id":100,"parentId":57,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":920904,"timestamp":193557467819,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778565043293,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":835917,"timestamp":193557553757,"id":97,"parentId":59,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":918034,"timestamp":193557471694,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778565043296,"traceId":"b953c42af2628d1a"},{"name":"is-page-static","duration":837077,"timestamp":193557553780,"id":99,"parentId":54,"tags":{},"startTime":1778565043378,"traceId":"b953c42af2628d1a"},{"name":"check-page","duration":927817,"timestamp":193557463081,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778565043288,"traceId":"b953c42af2628d1a"},{"name":"static-check","duration":941639,"timestamp":193557449293,"id":19,"parentId":1,"tags":{},"startTime":1778565043274,"traceId":"b953c42af2628d1a"},{"name":"write-routes-manifest","duration":407,"timestamp":193558397645,"id":102,"parentId":1,"tags":{},"startTime":1778565044222,"traceId":"b953c42af2628d1a"},{"name":"load-dotenv","duration":49,"timestamp":193558410523,"id":105,"parentId":104,"tags":{},"startTime":1778565044235,"traceId":"b953c42af2628d1a"},{"name":"run-export-path-map","duration":1047,"timestamp":193558413112,"id":106,"parentId":104,"tags":{},"startTime":1778565044238,"traceId":"b953c42af2628d1a"},{"name":"next-export","duration":640918,"timestamp":193558409267,"id":104,"parentId":1,"tags":{},"startTime":1778565044234,"traceId":"b953c42af2628d1a"},{"name":"move-exported-app-not-found-","duration":1670,"timestamp":193559053763,"id":107,"parentId":103,"tags":{},"startTime":1778565044878,"traceId":"b953c42af2628d1a"},{"name":"move-exported-app-global-error-","duration":495,"timestamp":193559055539,"id":108,"parentId":103,"tags":{},"startTime":1778565044880,"traceId":"b953c42af2628d1a"}]
2
+ [{"name":"static-generation","duration":658421,"timestamp":193558401857,"id":103,"parentId":1,"tags":{},"startTime":1778565044227,"traceId":"b953c42af2628d1a"},{"name":"write-routes-manifest","duration":375,"timestamp":193559060483,"id":109,"parentId":1,"tags":{},"startTime":1778565044885,"traceId":"b953c42af2628d1a"},{"name":"print-tree-view","duration":3703,"timestamp":193559067231,"id":110,"parentId":1,"tags":{},"startTime":1778565044892,"traceId":"b953c42af2628d1a"},{"name":"write-route-bundle-stats","duration":14684,"timestamp":193559070981,"id":111,"parentId":1,"tags":{},"startTime":1778565044896,"traceId":"b953c42af2628d1a"},{"name":"telemetry-flush","duration":222631,"timestamp":193559085704,"id":112,"parentId":1,"tags":{},"startTime":1778565044910,"traceId":"b953c42af2628d1a"},{"name":"next-build","duration":24498249,"timestamp":193534810127,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778565020635,"traceId":"b953c42af2628d1a"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":7605712,"timestamp":193047407611,"id":14,"parentId":1,"tags":{},"startTime":1778564533232,"traceId":"e5935599772cdd6b"},{"name":"turbopack-build-events","duration":77,"timestamp":193047692465,"id":15,"parentId":1,"tags":{},"startTime":1778564533517,"traceId":"e5935599772cdd6b"},{"name":"run-typescript","duration":7268943,"timestamp":193055020542,"id":16,"parentId":1,"tags":{},"startTime":1778564540845,"traceId":"e5935599772cdd6b"},{"name":"static-check","duration":738418,"timestamp":193062382867,"id":19,"parentId":1,"tags":{},"startTime":1778564548208,"traceId":"e5935599772cdd6b"},{"name":"static-generation","duration":550782,"timestamp":193063134992,"id":103,"parentId":1,"tags":{},"startTime":1778564548960,"traceId":"e5935599772cdd6b"},{"name":"telemetry-flush","duration":27053,"timestamp":193063711329,"id":112,"parentId":1,"tags":{},"startTime":1778564549536,"traceId":"e5935599772cdd6b"},{"name":"next-build","duration":16528834,"timestamp":193047209584,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778564533034,"traceId":"e5935599772cdd6b"}]
1
+ [{"name":"run-turbopack","duration":12417567,"timestamp":193535070193,"id":14,"parentId":1,"tags":{},"startTime":1778565020895,"traceId":"b953c42af2628d1a"},{"name":"turbopack-build-events","duration":77,"timestamp":193535491437,"id":15,"parentId":1,"tags":{},"startTime":1778565021316,"traceId":"b953c42af2628d1a"},{"name":"run-typescript","duration":9856766,"timestamp":193547496313,"id":16,"parentId":1,"tags":{},"startTime":1778565033321,"traceId":"b953c42af2628d1a"},{"name":"static-check","duration":941639,"timestamp":193557449293,"id":19,"parentId":1,"tags":{},"startTime":1778565043274,"traceId":"b953c42af2628d1a"},{"name":"static-generation","duration":658421,"timestamp":193558401857,"id":103,"parentId":1,"tags":{},"startTime":1778565044227,"traceId":"b953c42af2628d1a"},{"name":"telemetry-flush","duration":222631,"timestamp":193559085704,"id":112,"parentId":1,"tags":{},"startTime":1778565044910,"traceId":"b953c42af2628d1a"},{"name":"next-build","duration":24498249,"timestamp":193534810127,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778565020635,"traceId":"b953c42af2628d1a"}]
package/app/logs/page.tsx CHANGED
@@ -5,6 +5,7 @@ import Link from 'next/link';
5
5
  import { timeAgo } from '../components/utils';
6
6
  import { useNetworkId } from '../lib/network-context';
7
7
  import { EmptyState } from '../components/EmptyState';
8
+ import { AliasAvatar } from '../components/AliasAvatar';
8
9
 
9
10
  interface AuditLog {
10
11
  id: string;
@@ -26,6 +27,18 @@ const ACTION_COLORS: Record<string, string> = {
26
27
  send_task: 'bg-cyan-500/10 text-cyan-300 border-cyan-500/20',
27
28
  };
28
29
 
30
+ /** 2px left-rail stripe color per audit action — reuses the r32 server-logs
31
+ * pattern so failed logins / token rotations spike out of a wall of
32
+ * registers and logins without users reading every chip. Inline hex
33
+ * prevents Tailwind v4 from purging dynamic class names. */
34
+ const ACTION_STRIPE: Record<string, string> = {
35
+ register: '#4ade80',
36
+ login: '#60a5fa',
37
+ login_failed: '#ef4444',
38
+ create_network: '#a78bfa',
39
+ send_task: '#22d3ee',
40
+ };
41
+
29
42
  export default function LogsPage() {
30
43
  const { networkId } = useNetworkId();
31
44
  const [logs, setLogs] = useState<AuditLog[]>([]);
@@ -125,13 +138,23 @@ export default function LogsPage() {
125
138
  <EmptyState variant="logs" />
126
139
  ) : (
127
140
  <div className="space-y-2">
128
- {logs.map(log => (
129
- <div key={log.id} className="bg-[#111128] border border-[#2a2a4a] rounded-lg px-4 py-3 hover:border-[#3a3a5a] transition-colors">
141
+ {logs.map(log => {
142
+ const userName = log.username || log.user_id;
143
+ return (
144
+ <div key={log.id} className="relative bg-[#111128] border border-[#2a2a4a] rounded-lg pl-4 pr-4 py-3 hover:border-[#3a3a5a] transition-colors overflow-hidden">
145
+ {/* 2px left rail per action (round 33) — failed logins, token
146
+ rotations spike out of a wall of register/login rows. */}
147
+ <span
148
+ aria-hidden
149
+ className="absolute left-0 top-0 bottom-0 w-0.5"
150
+ style={{ backgroundColor: ACTION_STRIPE[log.action] || 'transparent' }}
151
+ />
130
152
  <div className="flex flex-wrap items-center gap-2 mb-1">
131
153
  <span className={`text-xs px-2 py-0.5 rounded-md border ${ACTION_COLORS[log.action] || 'bg-gray-500/10 text-gray-400 border-gray-500/20'}`}>
132
154
  {log.action}
133
155
  </span>
134
- <span className="text-sm text-blue-400 font-medium">{log.username || log.user_id}</span>
156
+ {userName && <AliasAvatar alias={userName} size={16} />}
157
+ <span className="text-sm text-gray-200 font-medium">{userName}</span>
135
158
  {log.target_type && (
136
159
  <>
137
160
  <span className="text-xs text-gray-600">&rarr;</span>
@@ -143,7 +166,8 @@ export default function LogsPage() {
143
166
  {log.detail && <div className="text-xs text-gray-500">{log.detail}</div>}
144
167
  {log.ip && log.ip !== 'unknown' && <div className="text-[10px] text-gray-700">IP: {log.ip}</div>}
145
168
  </div>
146
- ))}
169
+ );
170
+ })}
147
171
  </div>
148
172
  )}
149
173
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.4.5-preview.16",
3
+ "version": "0.4.5-preview.17",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -1,3 +0,0 @@
1
- module.exports=[50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},44332,a=>{"use strict";var b=a.i(72596),c=a.i(22397);let d=async a=>{let b=await fetch(a);if(401===b.status)throw window.location.assign("/login"),Error("unauthorized");return b.json()},e={refreshInterval:5e3,dedupingInterval:3e3};function f(a,b){if(!b)return a;let c=a.includes("?")?"&":"?";return`${a}${c}network_id=${encodeURIComponent(b)}`}a.s(["useAnetConfig",0,function(){let{data:a}=(0,b.default)("/api/anet/config",d,{refreshInterval:3e4});return{config:a||null}},"useHealth",0,function(){let{data:a,error:c}=(0,b.default)("/api/hub/health",d,e);return{health:a||null,error:c}},"useLicense",0,function(){let{data:a,error:c}=(0,b.default)("/api/hub/license",d,{refreshInterval:6e4});return{license:a?.ok?a:null,error:c}},"useMessages",0,function(a=100){let{networkId:g}=(0,c.useNetworkId)(),{data:h,error:i,isLoading:j}=(0,b.default)(f(`/api/hub/messages?limit=${a}`,g),d,e);return{messages:h?.messages||[],error:i,isLoading:j}},"useSessions",0,function(){let{networkId:a}=(0,c.useNetworkId)(),{data:g,error:h,isLoading:i}=(0,b.default)(f("/api/hub/status",a),d,e);return{sessions:g?.sessions||[],hint:g?._hint,error:h,isLoading:i}},"useStats",0,function(){let{networkId:a}=(0,c.useNetworkId)(),{data:g,error:h}=(0,b.default)(f("/api/hub/stats",a),d,e);return{stats:g?.ok?g:null,error:h}},"useTasks",0,function(a){let{networkId:g}=(0,c.useNetworkId)(),h=new URLSearchParams({limit:"100",...a}).toString(),{data:i,error:j,isLoading:k}=(0,b.default)(f(`/api/hub/tasks?${h}`,g),d,e);return{tasks:i?.tasks||[],count:i?.count??0,source:i?.source,error:j,isLoading:k}}])},43515,a=>{"use strict";a.s(["formatUptime",0,function(a){let b=Math.floor(a/3600),c=Math.floor(a%3600/60);return b>0?`${b}h ${c}m`:`${c}m`},"timeAgo",0,function(a){if(!a)return"--";let b=Math.floor((Date.now()-new Date(a.replace(" ","T")+"Z").getTime())/1e3);return b<60?`${b}s ago`:b<3600?`${Math.floor(b/60)}m ago`:b<86400?`${Math.floor(b/3600)}h ago`:`${Math.floor(b/86400)}d ago`}])},53142,a=>{"use strict";var b=a.i(87924),c=a.i(38246);let d={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 e({variant:a,size:c}){let d={width:c,height:c},f={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(a){case"nodes":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,b.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,b.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,b.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,b.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,b.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,b.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,b.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.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,b.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,b.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.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,b.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,b.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,b.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,b.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,b.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,b.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,b.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,b.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,b.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,b.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,b.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function f({variant:a="generic",title:g,sub:h,cta:i,compact:j=!1}){let k=d[a],l=g??k.title,m=h??k.sub;return(0,b.jsxs)("div",{className:`text-center ${j?"py-8":"py-16"} px-4`,role:"status",children:[(0,b.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,b.jsx)(e,{variant:a,size:j?40:56})}),(0,b.jsx)("h3",{className:`font-medium text-gray-300 ${j?"text-sm":"text-base"}`,children:l}),m&&(0,b.jsx)("p",{className:`text-gray-500 ${j?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:m}),i&&(0,b.jsx)("div",{className:"mt-4",children:i.href?(0,b.jsxs)(c.default,{href:i.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[i.label,(0,b.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,b.jsxs)("button",{onClick:i.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[i.label,(0,b.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}a.s(["EmptyState",0,f,"NodesEmptyState",0,function({hint:a}){return a?.global_count?(0,b.jsx)(f,{variant:"nodes",title:"No agents in this network",sub:`Server has ${a.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`}):(0,b.jsx)(f,{variant:"nodes",cta:{label:"Run anet quickstart",href:"https://anet.sh"}})}])},1720,a=>{"use strict";var b=a.i(87924);let c=[180,200,220,270,300,330,30,90];a.s(["AliasAvatar",0,function({alias:a,size:d=28,className:e=""}){let f=function(a){let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)>>>0;let d=c[b%c.length];return{bg:`hsl(${d} 55% 22%)`,ring:`hsl(${d} 60% 45%)`,text:`hsl(${d} 80% 78%)`}}(a),g=Math.max(9,Math.round(.42*d));return(0,b.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${e}`,style:{width:d,height:d,fontSize:g,backgroundColor:f.bg,borderColor:f.ring,color:f.text},title:a,"aria-hidden":!0,children:a?(a.trim().match(/[\p{L}\p{N}]/u)?.[0]||a.trim()[0]||"·").toUpperCase():"·"})}])},54826,(a,b,c)=>{},15299,(a,b,c)=>{a.r(54826);var d=a.r(72131),e=d&&"object"==typeof d&&"default"in d?d:{default:d},f="u">typeof process&&process.env&&!0,g=function(a){return"[object String]"===Object.prototype.toString.call(a)},h=function(){function a(a){var b=void 0===a?{}:a,c=b.name,d=void 0===c?"stylesheet":c,e=b.optimizeForSpeed,h=void 0===e?f:e;i(g(d),"`name` must be a string"),this._name=d,this._deletedRulePlaceholder="#"+d+"-deleted-rule____{}",i("boolean"==typeof h,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=h,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0,this._nonce=null}var b,c=a.prototype;return c.setOptimizeForSpeed=function(a){i("boolean"==typeof a,"`setOptimizeForSpeed` accepts a boolean"),i(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=a,this.inject()},c.isOptimizeForSpeed=function(){return this._optimizeForSpeed},c.inject=function(){var a=this;i(!this._injected,"sheet already injected"),this._injected=!0,this._serverSheet={cssRules:[],insertRule:function(b,c){return"number"==typeof c?a._serverSheet.cssRules[c]={cssText:b}:a._serverSheet.cssRules.push({cssText:b}),c},deleteRule:function(b){a._serverSheet.cssRules[b]=null}}},c.getSheetForTag=function(a){if(a.sheet)return a.sheet;for(var b=0;b<document.styleSheets.length;b++)if(document.styleSheets[b].ownerNode===a)return document.styleSheets[b]},c.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},c.insertRule=function(a,b){return i(g(a),"`insertRule` accepts only strings"),"number"!=typeof b&&(b=this._serverSheet.cssRules.length),this._serverSheet.insertRule(a,b),this._rulesCount++},c.replaceRule=function(a,b){this._optimizeForSpeed;var c=this._serverSheet;if(b.trim()||(b=this._deletedRulePlaceholder),!c.cssRules[a])return a;c.deleteRule(a);try{c.insertRule(b,a)}catch(d){f||console.warn("StyleSheet: illegal rule: \n\n"+b+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),c.insertRule(this._deletedRulePlaceholder,a)}return a},c.deleteRule=function(a){this._serverSheet.deleteRule(a)},c.flush=function(){this._injected=!1,this._rulesCount=0,this._serverSheet.cssRules=[]},c.cssRules=function(){return this._serverSheet.cssRules},c.makeStyleTag=function(a,b,c){b&&i(g(b),"makeStyleTag accepts only strings as second parameter");var d=document.createElement("style");this._nonce&&d.setAttribute("nonce",this._nonce),d.type="text/css",d.setAttribute("data-"+a,""),b&&d.appendChild(document.createTextNode(b));var e=document.head||document.getElementsByTagName("head")[0];return c?e.insertBefore(d,c):e.appendChild(d),d},b=[{key:"length",get:function(){return this._rulesCount}}],function(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}(a.prototype,b),a}();function i(a,b){if(!a)throw Error("StyleSheet: "+b+".")}var j=function(a){for(var b=5381,c=a.length;c;)b=33*b^a.charCodeAt(--c);return b>>>0},k={};function l(a,b){if(!b)return"jsx-"+a;var c=String(b),d=a+c;return k[d]||(k[d]="jsx-"+j(a+"-"+c)),k[d]}function m(a,b){var c=a+(b=b.replace(/\/style/gi,"\\/style"));return k[c]||(k[c]=b.replace(/__jsx-style-dynamic-selector/g,a)),k[c]}var n=function(){function a(a){var b=void 0===a?{}:a,c=b.styleSheet,d=void 0===c?null:c,e=b.optimizeForSpeed,f=void 0!==e&&e;this._sheet=d||new h({name:"styled-jsx",optimizeForSpeed:f}),this._sheet.inject(),d&&"boolean"==typeof f&&(this._sheet.setOptimizeForSpeed(f),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var b=a.prototype;return b.add=function(a){var b=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(a.children),this._sheet.setOptimizeForSpeed(this._optimizeForSpeed),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed());var c=this.getIdAndRules(a),d=c.styleId,e=c.rules;if(d in this._instancesCounts){this._instancesCounts[d]+=1;return}var f=e.map(function(a){return b._sheet.insertRule(a)}).filter(function(a){return -1!==a});this._indices[d]=f,this._instancesCounts[d]=1},b.remove=function(a){var b=this,c=this.getIdAndRules(a).styleId;if(function(a,b){if(!a)throw Error("StyleSheetRegistry: "+b+".")}(c in this._instancesCounts,"styleId: `"+c+"` not found"),this._instancesCounts[c]-=1,this._instancesCounts[c]<1){var d=this._fromServer&&this._fromServer[c];d?(d.parentNode.removeChild(d),delete this._fromServer[c]):(this._indices[c].forEach(function(a){return b._sheet.deleteRule(a)}),delete this._indices[c]),delete this._instancesCounts[c]}},b.update=function(a,b){this.add(b),this.remove(a)},b.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},b.cssRules=function(){var a=this,b=this._fromServer?Object.keys(this._fromServer).map(function(b){return[b,a._fromServer[b]]}):[],c=this._sheet.cssRules();return b.concat(Object.keys(this._indices).map(function(b){return[b,a._indices[b].map(function(a){return c[a].cssText}).join(a._optimizeForSpeed?"":"\n")]}).filter(function(a){return!!a[1]}))},b.styles=function(a){var b,c;return b=this.cssRules(),void 0===(c=a)&&(c={}),b.map(function(a){var b=a[0],d=a[1];return e.default.createElement("style",{id:"__"+b,key:"__"+b,nonce:c.nonce?c.nonce:void 0,dangerouslySetInnerHTML:{__html:d}})})},b.getIdAndRules=function(a){var b=a.children,c=a.dynamic,d=a.id;if(c){var e=l(d,c);return{styleId:e,rules:Array.isArray(b)?b.map(function(a){return m(e,a)}):[m(e,b)]}}return{styleId:l(d),rules:Array.isArray(b)?b:[b]}},b.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(a,b){return a[b.id.slice(2)]=b,a},{})},a}(),o=d.createContext(null);function p(){return new n}function q(){return d.useContext(o)}function r(a){var b=q();return b&&b.add(a),null}o.displayName="StyleSheetContext",e.default.useInsertionEffect||e.default.useLayoutEffect,r.dynamic=function(a){return a.map(function(a){return l(a[0],a[1])}).join(" ")},c.StyleRegistry=function(a){var b=a.registry,c=a.children,f=d.useContext(o),g=d.useState(function(){return f||b||p()})[0];return e.default.createElement(o.Provider,{value:g},c)},c.createStyleRegistry=p,c.style=r,c.useStyleRegistry=q},31626,(a,b,c)=>{b.exports=a.r(15299).style}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0byvz32._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../app/lib/hooks.ts","../../../../app/components/utils.ts","../../../../app/components/EmptyState.tsx","../../../../app/components/AliasAvatar.tsx","../../../../node_modules/styled-jsx/dist/index/index.js","../../../../node_modules/styled-jsx/style.js"],"sourcesContent":["import useSWR from 'swr';\nimport { Session, Health, AnetConfig } from '../components/types';\nimport { useNetworkId } from './network-context';\n\nconst fetcher = async (url: string) => {\n const res = await fetch(url);\n if (res.status === 401) {\n window.location.assign('/login');\n throw new Error('unauthorized');\n }\n return res.json();\n};\n\nconst SWR_OPTIONS = { refreshInterval: 5000, dedupingInterval: 3000 };\n\n/** Append network_id to URL if set */\nfunction withNetwork(url: string, networkId: string): string {\n if (!networkId) return url;\n const sep = url.includes('?') ? '&' : '?';\n return `${url}${sep}network_id=${encodeURIComponent(networkId)}`;\n}\n\nexport function useSessions() {\n const { networkId } = useNetworkId();\n const { data, error, isLoading } = useSWR<{ sessions: Session[]; _hint?: { global_count?: number; filtered_network?: string } }>(\n withNetwork('/api/hub/status', networkId),\n fetcher,\n SWR_OPTIONS,\n );\n return { sessions: data?.sessions || [], hint: data?._hint, error, isLoading };\n}\n\nexport function useHealth() {\n const { data, error } = useSWR<Health>('/api/hub/health', fetcher, SWR_OPTIONS);\n return { health: data || null, error };\n}\n\nexport function useAnetConfig() {\n const { data } = useSWR<AnetConfig>('/api/anet/config', fetcher, { refreshInterval: 30000 });\n return { config: data || null };\n}\n\nexport function useTasks(params?: Record<string, string>) {\n const { networkId } = useNetworkId();\n const query = new URLSearchParams({ limit: '100', ...params }).toString();\n const { data, error, isLoading } = useSWR(\n withNetwork(`/api/hub/tasks?${query}`, networkId),\n fetcher,\n SWR_OPTIONS,\n );\n return {\n tasks: data?.tasks || [],\n count: data?.count ?? 0,\n source: data?.source,\n error,\n isLoading,\n };\n}\n\nexport function useStats() {\n const { networkId } = useNetworkId();\n const { data, error } = useSWR(withNetwork('/api/hub/stats', networkId), fetcher, SWR_OPTIONS);\n return { stats: data?.ok ? data : null, error };\n}\n\nexport function useLicense() {\n const { data, error } = useSWR('/api/hub/license', fetcher, { refreshInterval: 60000 });\n return { license: data?.ok ? data : null, error };\n}\n\nexport function useMessages(limit = 100) {\n const { networkId } = useNetworkId();\n const { data, error, isLoading } = useSWR(\n withNetwork(`/api/hub/messages?limit=${limit}`, networkId),\n fetcher,\n SWR_OPTIONS,\n );\n return { messages: data?.messages || [], error, isLoading };\n}\n\nexport function useNodeSession(alias: string) {\n const { data, error, isLoading } = useSWR(\n alias ? `/api/hub/session?alias=${encodeURIComponent(alias)}` : null,\n fetcher,\n SWR_OPTIONS,\n );\n return {\n session: data?.session || null,\n inbox: data?.inbox || [],\n sse: data?.sse || 0,\n error,\n isLoading,\n };\n}\n","export function timeAgo(dateStr: string): string {\n if (!dateStr) return '--';\n const diff = Date.now() - new Date(dateStr.replace(' ', 'T') + 'Z').getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return `${s}s ago`;\n if (s < 3600) return `${Math.floor(s / 60)}m ago`;\n if (s < 86400) return `${Math.floor(s / 3600)}h ago`;\n return `${Math.floor(s / 86400)}d ago`;\n}\n\nexport function statusColor(status: string, hasSse: boolean): string {\n if (hasSse && status === 'working') return 'bg-green-500';\n if (hasSse && status === 'idle') return 'bg-emerald-400';\n if (hasSse) return 'bg-blue-400';\n if (status === 'offline') return 'bg-gray-500';\n return 'bg-yellow-400';\n}\n\nexport function formatUptime(seconds: number): string {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n if (h > 0) return `${h}h ${m}m`;\n return `${m}m`;\n}\n","'use client';\n\nimport Link from 'next/link';\n\nexport type EmptyVariant = 'nodes' | 'tasks' | 'messages' | 'logs' | 'tokens' | 'networks' | 'generic';\n\ninterface EmptyStateProps {\n /** Picks the icon glyph and default copy if title/sub omitted. */\n variant?: EmptyVariant;\n /** Optional override headline. */\n title?: string;\n /** Optional override sub-copy. */\n sub?: string;\n /** Optional CTA: text + href (internal) or onClick. */\n cta?: { label: string; href?: string; onClick?: () => void };\n /** Compact mode for in-card empty states (smaller padding). */\n compact?: boolean;\n}\n\nconst DEFAULTS: Record<EmptyVariant, { title: string; sub: string }> = {\n nodes: { title: 'No agents in this network', sub: 'Agent sessions will appear here once they connect to the CommHub.' },\n tasks: { title: 'No tasks yet', sub: 'Tasks will appear here when agents send them via CommHub.' },\n messages: { title: 'No messages', sub: 'Messages between agents will appear here.' },\n logs: { title: 'No audit logs', sub: 'Events will appear here when users register, login, or perform actions.' },\n tokens: { title: 'No API tokens', sub: 'Create one to authenticate CLI tools and external integrations.' },\n networks: { title: 'No networks found', sub: 'Create one or sign in with V3 auth to see your networks.' },\n generic: { title: 'Nothing here yet', sub: 'Data will appear here once available.' },\n};\n\n/**\n * Minimal monochrome SVG glyphs per variant. No filled shapes, no gradients,\n * no AI-decoration — just thin-stroke line art that fades into the page.\n * 64×64 viewBox; rendered at 56×56 (compact 40×40).\n */\nfunction Glyph({ variant, size }: { variant: EmptyVariant; size: number }) {\n const s = { width: size, height: size };\n const baseProps = {\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 1.25,\n strokeLinecap: 'round' as const,\n strokeLinejoin: 'round' as const,\n };\n\n switch (variant) {\n case 'nodes':\n // Mesh with dashed edges = \"nodes will land here\"\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <circle cx=\"32\" cy=\"14\" r=\"4\" />\n <circle cx=\"14\" cy=\"44\" r=\"4\" />\n <circle cx=\"50\" cy=\"44\" r=\"4\" />\n <line x1=\"32\" y1=\"18\" x2=\"14\" y2=\"40\" strokeDasharray=\"3 3\" opacity=\"0.6\" />\n <line x1=\"32\" y1=\"18\" x2=\"50\" y2=\"40\" strokeDasharray=\"3 3\" opacity=\"0.6\" />\n <line x1=\"18\" y1=\"44\" x2=\"46\" y2=\"44\" strokeDasharray=\"3 3\" opacity=\"0.6\" />\n </g>\n </svg>\n );\n case 'tasks':\n // Empty checkbox list\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <rect x=\"14\" y=\"14\" width=\"36\" height=\"6\" rx=\"1.5\" />\n <rect x=\"14\" y=\"26\" width=\"36\" height=\"6\" rx=\"1.5\" opacity=\"0.6\" />\n <rect x=\"14\" y=\"38\" width=\"36\" height=\"6\" rx=\"1.5\" opacity=\"0.35\" />\n </g>\n </svg>\n );\n case 'messages':\n // Speech bubble outline\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <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\" />\n <line x1=\"22\" y1=\"28\" x2=\"42\" y2=\"28\" opacity=\"0.5\" />\n <line x1=\"22\" y1=\"34\" x2=\"36\" y2=\"34\" opacity=\"0.5\" />\n </g>\n </svg>\n );\n case 'logs':\n // Document with lines\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <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\" />\n <path d=\"M40 12 v8 h8\" opacity=\"0.6\" />\n <line x1=\"24\" y1=\"32\" x2=\"40\" y2=\"32\" opacity=\"0.55\" />\n <line x1=\"24\" y1=\"38\" x2=\"40\" y2=\"38\" opacity=\"0.4\" />\n <line x1=\"24\" y1=\"44\" x2=\"34\" y2=\"44\" opacity=\"0.25\" />\n </g>\n </svg>\n );\n case 'tokens':\n // Key outline\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <circle cx=\"22\" cy=\"32\" r=\"8\" />\n <line x1=\"30\" y1=\"32\" x2=\"54\" y2=\"32\" />\n <line x1=\"44\" y1=\"32\" x2=\"44\" y2=\"38\" />\n <line x1=\"50\" y1=\"32\" x2=\"50\" y2=\"40\" />\n </g>\n </svg>\n );\n case 'networks':\n // Globe-ish concentric ovals\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <circle cx=\"32\" cy=\"32\" r=\"18\" />\n <ellipse cx=\"32\" cy=\"32\" rx=\"18\" ry=\"9\" opacity=\"0.55\" />\n <line x1=\"14\" y1=\"32\" x2=\"50\" y2=\"32\" opacity=\"0.55\" />\n <line x1=\"32\" y1=\"14\" x2=\"32\" y2=\"50\" opacity=\"0.55\" />\n </g>\n </svg>\n );\n case 'generic':\n default:\n // Soft sparkle outline\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <circle cx=\"32\" cy=\"32\" r=\"14\" strokeDasharray=\"3 3\" opacity=\"0.6\" />\n <circle cx=\"32\" cy=\"32\" r=\"3\" />\n </g>\n </svg>\n );\n }\n}\n\nexport function EmptyState({ variant = 'generic', title, sub, cta, compact = false }: EmptyStateProps) {\n const d = DEFAULTS[variant];\n const headline = title ?? d.title;\n const subcopy = sub ?? d.sub;\n const iconSize = compact ? 40 : 56;\n\n return (\n <div className={`text-center ${compact ? 'py-8' : 'py-16'} px-4`} role=\"status\">\n <div className=\"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500\" aria-hidden>\n <Glyph variant={variant} size={iconSize} />\n </div>\n <h3 className={`font-medium text-gray-300 ${compact ? 'text-sm' : 'text-base'}`}>{headline}</h3>\n {subcopy && (\n <p className={`text-gray-500 ${compact ? 'text-xs mt-1.5' : 'text-sm mt-2'} max-w-md mx-auto leading-relaxed`}>\n {subcopy}\n </p>\n )}\n {cta && (\n <div className=\"mt-4\">\n {cta.href ? (\n <Link href={cta.href} className=\"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300\">\n {cta.label}\n <span aria-hidden>→</span>\n </Link>\n ) : (\n <button onClick={cta.onClick} className=\"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300\">\n {cta.label}\n <span aria-hidden>→</span>\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n\n/**\n * Overview-specific variant with a hint about cross-network global count.\n * Kept here so /app/page.tsx can drop in without ceremony.\n */\nexport function NodesEmptyState({ hint }: { hint?: { global_count?: number; filtered_network?: string } }) {\n if (hint?.global_count) {\n return (\n <EmptyState\n variant=\"nodes\"\n title=\"No agents in this network\"\n sub={`Server has ${hint.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`}\n />\n );\n }\n return (\n <EmptyState\n variant=\"nodes\"\n cta={{ label: 'Run anet quickstart', href: 'https://anet.sh' }}\n />\n );\n}\n","/** Hue-hashed avatar pill for agent aliases. Same alias → same color across\n * every page (Messages, Nodes, TopoGraph). Use the `size` prop for inline\n * pills (16/20) vs card headers (28). Round 21 introduced the palette;\n * round 22 promotes it from app/messages to a shared component. */\n\nconst AVATAR_HUES = [180, 200, 220, 270, 300, 330, 30, 90];\n\nexport function aliasAvatarColors(alias: string): { bg: string; ring: string; text: string } {\n let h = 0;\n for (let i = 0; i < alias.length; i++) h = (h * 31 + alias.charCodeAt(i)) >>> 0;\n const hue = AVATAR_HUES[h % AVATAR_HUES.length];\n return {\n bg: `hsl(${hue} 55% 22%)`,\n ring: `hsl(${hue} 60% 45%)`,\n text: `hsl(${hue} 80% 78%)`,\n };\n}\n\nexport function aliasInitial(alias?: string): string {\n if (!alias) return '·';\n const ch = alias.trim().match(/[\\p{L}\\p{N}]/u)?.[0] || alias.trim()[0] || '·';\n return ch.toUpperCase();\n}\n\ninterface AliasAvatarProps {\n alias: string;\n size?: number;\n className?: string;\n}\n\nexport function AliasAvatar({ alias, size = 28, className = '' }: AliasAvatarProps) {\n const c = aliasAvatarColors(alias);\n const fs = Math.max(9, Math.round(size * 0.42));\n return (\n <span\n className={`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${className}`}\n style={{\n width: size,\n height: size,\n fontSize: fs,\n backgroundColor: c.bg,\n borderColor: c.ring,\n color: c.text,\n }}\n title={alias}\n aria-hidden\n >\n {aliasInitial(alias)}\n </span>\n );\n}\n","require('client-only');\nvar React = require('react');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n\n/*\nBased on Glamor's sheet\nhttps://github.com/threepointone/glamor/blob/667b480d31b3721a905021b26e1290ce92ca2879/src/sheet.js\n*/ function _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nvar isProd = typeof process !== \"undefined\" && process.env && process.env.NODE_ENV === \"production\";\nvar isString = function(o) {\n return Object.prototype.toString.call(o) === \"[object String]\";\n};\nvar StyleSheet = /*#__PURE__*/ function() {\n function StyleSheet(param) {\n var ref = param === void 0 ? {} : param, _name = ref.name, name = _name === void 0 ? \"stylesheet\" : _name, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? isProd : _optimizeForSpeed;\n invariant$1(isString(name), \"`name` must be a string\");\n this._name = name;\n this._deletedRulePlaceholder = \"#\" + name + \"-deleted-rule____{}\";\n invariant$1(typeof optimizeForSpeed === \"boolean\", \"`optimizeForSpeed` must be a boolean\");\n this._optimizeForSpeed = optimizeForSpeed;\n this._serverSheet = undefined;\n this._tags = [];\n this._injected = false;\n this._rulesCount = 0;\n var node = typeof window !== \"undefined\" && document.querySelector('meta[property=\"csp-nonce\"]');\n this._nonce = node ? node.getAttribute(\"content\") : null;\n }\n var _proto = StyleSheet.prototype;\n _proto.setOptimizeForSpeed = function setOptimizeForSpeed(bool) {\n invariant$1(typeof bool === \"boolean\", \"`setOptimizeForSpeed` accepts a boolean\");\n invariant$1(this._rulesCount === 0, \"optimizeForSpeed cannot be when rules have already been inserted\");\n this.flush();\n this._optimizeForSpeed = bool;\n this.inject();\n };\n _proto.isOptimizeForSpeed = function isOptimizeForSpeed() {\n return this._optimizeForSpeed;\n };\n _proto.inject = function inject() {\n var _this = this;\n invariant$1(!this._injected, \"sheet already injected\");\n this._injected = true;\n if (typeof window !== \"undefined\" && this._optimizeForSpeed) {\n this._tags[0] = this.makeStyleTag(this._name);\n this._optimizeForSpeed = \"insertRule\" in this.getSheet();\n if (!this._optimizeForSpeed) {\n if (!isProd) {\n console.warn(\"StyleSheet: optimizeForSpeed mode not supported falling back to standard mode.\");\n }\n this.flush();\n this._injected = true;\n }\n return;\n }\n this._serverSheet = {\n cssRules: [],\n insertRule: function(rule, index) {\n if (typeof index === \"number\") {\n _this._serverSheet.cssRules[index] = {\n cssText: rule\n };\n } else {\n _this._serverSheet.cssRules.push({\n cssText: rule\n });\n }\n return index;\n },\n deleteRule: function(index) {\n _this._serverSheet.cssRules[index] = null;\n }\n };\n };\n _proto.getSheetForTag = function getSheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n }\n // this weirdness brought to you by firefox\n for(var i = 0; i < document.styleSheets.length; i++){\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n }\n };\n _proto.getSheet = function getSheet() {\n return this.getSheetForTag(this._tags[this._tags.length - 1]);\n };\n _proto.insertRule = function insertRule(rule, index) {\n invariant$1(isString(rule), \"`insertRule` accepts only strings\");\n if (typeof window === \"undefined\") {\n if (typeof index !== \"number\") {\n index = this._serverSheet.cssRules.length;\n }\n this._serverSheet.insertRule(rule, index);\n return this._rulesCount++;\n }\n if (this._optimizeForSpeed) {\n var sheet = this.getSheet();\n if (typeof index !== \"number\") {\n index = sheet.cssRules.length;\n }\n // this weirdness for perf, and chrome's weird bug\n // https://stackoverflow.com/questions/20007992/chrome-suddenly-stopped-accepting-insertrule\n try {\n sheet.insertRule(rule, index);\n } catch (error) {\n if (!isProd) {\n console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n }\n return -1;\n }\n } else {\n var insertionPoint = this._tags[index];\n this._tags.push(this.makeStyleTag(this._name, rule, insertionPoint));\n }\n return this._rulesCount++;\n };\n _proto.replaceRule = function replaceRule(index, rule) {\n if (this._optimizeForSpeed || typeof window === \"undefined\") {\n var sheet = typeof window !== \"undefined\" ? this.getSheet() : this._serverSheet;\n if (!rule.trim()) {\n rule = this._deletedRulePlaceholder;\n }\n if (!sheet.cssRules[index]) {\n // @TBD Should we throw an error?\n return index;\n }\n sheet.deleteRule(index);\n try {\n sheet.insertRule(rule, index);\n } catch (error) {\n if (!isProd) {\n console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n }\n // In order to preserve the indices we insert a deleteRulePlaceholder\n sheet.insertRule(this._deletedRulePlaceholder, index);\n }\n } else {\n var tag = this._tags[index];\n invariant$1(tag, \"old rule at index `\" + index + \"` not found\");\n tag.textContent = rule;\n }\n return index;\n };\n _proto.deleteRule = function deleteRule(index) {\n if (typeof window === \"undefined\") {\n this._serverSheet.deleteRule(index);\n return;\n }\n if (this._optimizeForSpeed) {\n this.replaceRule(index, \"\");\n } else {\n var tag = this._tags[index];\n invariant$1(tag, \"rule at index `\" + index + \"` not found\");\n tag.parentNode.removeChild(tag);\n this._tags[index] = null;\n }\n };\n _proto.flush = function flush() {\n this._injected = false;\n this._rulesCount = 0;\n if (typeof window !== \"undefined\") {\n this._tags.forEach(function(tag) {\n return tag && tag.parentNode.removeChild(tag);\n });\n this._tags = [];\n } else {\n // simpler on server\n this._serverSheet.cssRules = [];\n }\n };\n _proto.cssRules = function cssRules() {\n var _this = this;\n if (typeof window === \"undefined\") {\n return this._serverSheet.cssRules;\n }\n return this._tags.reduce(function(rules, tag) {\n if (tag) {\n rules = rules.concat(Array.prototype.map.call(_this.getSheetForTag(tag).cssRules, function(rule) {\n return rule.cssText === _this._deletedRulePlaceholder ? null : rule;\n }));\n } else {\n rules.push(null);\n }\n return rules;\n }, []);\n };\n _proto.makeStyleTag = function makeStyleTag(name, cssString, relativeToTag) {\n if (cssString) {\n invariant$1(isString(cssString), \"makeStyleTag accepts only strings as second parameter\");\n }\n var tag = document.createElement(\"style\");\n if (this._nonce) tag.setAttribute(\"nonce\", this._nonce);\n tag.type = \"text/css\";\n tag.setAttribute(\"data-\" + name, \"\");\n if (cssString) {\n tag.appendChild(document.createTextNode(cssString));\n }\n var head = document.head || document.getElementsByTagName(\"head\")[0];\n if (relativeToTag) {\n head.insertBefore(tag, relativeToTag);\n } else {\n head.appendChild(tag);\n }\n return tag;\n };\n _createClass(StyleSheet, [\n {\n key: \"length\",\n get: function get() {\n return this._rulesCount;\n }\n }\n ]);\n return StyleSheet;\n}();\nfunction invariant$1(condition, message) {\n if (!condition) {\n throw new Error(\"StyleSheet: \" + message + \".\");\n }\n}\n\nfunction hash(str) {\n var _$hash = 5381, i = str.length;\n while(i){\n _$hash = _$hash * 33 ^ str.charCodeAt(--i);\n }\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n * integers. Since we want the results to be always positive, convert the\n * signed int to an unsigned by doing an unsigned bitshift. */ return _$hash >>> 0;\n}\nvar stringHash = hash;\n\nvar sanitize = function(rule) {\n return rule.replace(/\\/style/gi, \"\\\\/style\");\n};\nvar cache = {};\n/**\n * computeId\n *\n * Compute and memoize a jsx id from a basedId and optionally props.\n */ function computeId(baseId, props) {\n if (!props) {\n return \"jsx-\" + baseId;\n }\n var propsToString = String(props);\n var key = baseId + propsToString;\n if (!cache[key]) {\n cache[key] = \"jsx-\" + stringHash(baseId + \"-\" + propsToString);\n }\n return cache[key];\n}\n/**\n * computeSelector\n *\n * Compute and memoize dynamic selectors.\n */ function computeSelector(id, css) {\n var selectoPlaceholderRegexp = /__jsx-style-dynamic-selector/g;\n // Sanitize SSR-ed CSS.\n // Client side code doesn't need to be sanitized since we use\n // document.createTextNode (dev) and the CSSOM api sheet.insertRule (prod).\n if (typeof window === \"undefined\") {\n css = sanitize(css);\n }\n var idcss = id + css;\n if (!cache[idcss]) {\n cache[idcss] = css.replace(selectoPlaceholderRegexp, id);\n }\n return cache[idcss];\n}\n\nfunction mapRulesToStyle(cssRules, options) {\n if (options === void 0) options = {};\n return cssRules.map(function(args) {\n var id = args[0];\n var css = args[1];\n return /*#__PURE__*/ React__default[\"default\"].createElement(\"style\", {\n id: \"__\" + id,\n // Avoid warnings upon render with a key\n key: \"__\" + id,\n nonce: options.nonce ? options.nonce : undefined,\n dangerouslySetInnerHTML: {\n __html: css\n }\n });\n });\n}\nvar StyleSheetRegistry = /*#__PURE__*/ function() {\n function StyleSheetRegistry(param) {\n var ref = param === void 0 ? {} : param, _styleSheet = ref.styleSheet, styleSheet = _styleSheet === void 0 ? null : _styleSheet, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? false : _optimizeForSpeed;\n this._sheet = styleSheet || new StyleSheet({\n name: \"styled-jsx\",\n optimizeForSpeed: optimizeForSpeed\n });\n this._sheet.inject();\n if (styleSheet && typeof optimizeForSpeed === \"boolean\") {\n this._sheet.setOptimizeForSpeed(optimizeForSpeed);\n this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n }\n this._fromServer = undefined;\n this._indices = {};\n this._instancesCounts = {};\n }\n var _proto = StyleSheetRegistry.prototype;\n _proto.add = function add(props) {\n var _this = this;\n if (undefined === this._optimizeForSpeed) {\n this._optimizeForSpeed = Array.isArray(props.children);\n this._sheet.setOptimizeForSpeed(this._optimizeForSpeed);\n this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n }\n if (typeof window !== \"undefined\" && !this._fromServer) {\n this._fromServer = this.selectFromServer();\n this._instancesCounts = Object.keys(this._fromServer).reduce(function(acc, tagName) {\n acc[tagName] = 0;\n return acc;\n }, {});\n }\n var ref = this.getIdAndRules(props), styleId = ref.styleId, rules = ref.rules;\n // Deduping: just increase the instances count.\n if (styleId in this._instancesCounts) {\n this._instancesCounts[styleId] += 1;\n return;\n }\n var indices = rules.map(function(rule) {\n return _this._sheet.insertRule(rule);\n })// Filter out invalid rules\n .filter(function(index) {\n return index !== -1;\n });\n this._indices[styleId] = indices;\n this._instancesCounts[styleId] = 1;\n };\n _proto.remove = function remove(props) {\n var _this = this;\n var styleId = this.getIdAndRules(props).styleId;\n invariant(styleId in this._instancesCounts, \"styleId: `\" + styleId + \"` not found\");\n this._instancesCounts[styleId] -= 1;\n if (this._instancesCounts[styleId] < 1) {\n var tagFromServer = this._fromServer && this._fromServer[styleId];\n if (tagFromServer) {\n tagFromServer.parentNode.removeChild(tagFromServer);\n delete this._fromServer[styleId];\n } else {\n this._indices[styleId].forEach(function(index) {\n return _this._sheet.deleteRule(index);\n });\n delete this._indices[styleId];\n }\n delete this._instancesCounts[styleId];\n }\n };\n _proto.update = function update(props, nextProps) {\n this.add(nextProps);\n this.remove(props);\n };\n _proto.flush = function flush() {\n this._sheet.flush();\n this._sheet.inject();\n this._fromServer = undefined;\n this._indices = {};\n this._instancesCounts = {};\n };\n _proto.cssRules = function cssRules() {\n var _this = this;\n var fromServer = this._fromServer ? Object.keys(this._fromServer).map(function(styleId) {\n return [\n styleId,\n _this._fromServer[styleId]\n ];\n }) : [];\n var cssRules = this._sheet.cssRules();\n return fromServer.concat(Object.keys(this._indices).map(function(styleId) {\n return [\n styleId,\n _this._indices[styleId].map(function(index) {\n return cssRules[index].cssText;\n }).join(_this._optimizeForSpeed ? \"\" : \"\\n\")\n ];\n })// filter out empty rules\n .filter(function(rule) {\n return Boolean(rule[1]);\n }));\n };\n _proto.styles = function styles(options) {\n return mapRulesToStyle(this.cssRules(), options);\n };\n _proto.getIdAndRules = function getIdAndRules(props) {\n var css = props.children, dynamic = props.dynamic, id = props.id;\n if (dynamic) {\n var styleId = computeId(id, dynamic);\n return {\n styleId: styleId,\n rules: Array.isArray(css) ? css.map(function(rule) {\n return computeSelector(styleId, rule);\n }) : [\n computeSelector(styleId, css)\n ]\n };\n }\n return {\n styleId: computeId(id),\n rules: Array.isArray(css) ? css : [\n css\n ]\n };\n };\n /**\n * selectFromServer\n *\n * Collects style tags from the document with id __jsx-XXX\n */ _proto.selectFromServer = function selectFromServer() {\n var elements = Array.prototype.slice.call(document.querySelectorAll('[id^=\"__jsx-\"]'));\n return elements.reduce(function(acc, element) {\n var id = element.id.slice(2);\n acc[id] = element;\n return acc;\n }, {});\n };\n return StyleSheetRegistry;\n}();\nfunction invariant(condition, message) {\n if (!condition) {\n throw new Error(\"StyleSheetRegistry: \" + message + \".\");\n }\n}\nvar StyleSheetContext = /*#__PURE__*/ React.createContext(null);\nStyleSheetContext.displayName = \"StyleSheetContext\";\nfunction createStyleRegistry() {\n return new StyleSheetRegistry();\n}\nfunction StyleRegistry(param) {\n var configuredRegistry = param.registry, children = param.children;\n var rootRegistry = React.useContext(StyleSheetContext);\n var ref = React.useState(function() {\n return rootRegistry || configuredRegistry || createStyleRegistry();\n }), registry = ref[0];\n return /*#__PURE__*/ React__default[\"default\"].createElement(StyleSheetContext.Provider, {\n value: registry\n }, children);\n}\nfunction useStyleRegistry() {\n return React.useContext(StyleSheetContext);\n}\n\n// Opt-into the new `useInsertionEffect` API in React 18, fallback to `useLayoutEffect`.\n// https://github.com/reactwg/react-18/discussions/110\nvar useInsertionEffect = React__default[\"default\"].useInsertionEffect || React__default[\"default\"].useLayoutEffect;\nvar defaultRegistry = typeof window !== \"undefined\" ? createStyleRegistry() : undefined;\nfunction JSXStyle(props) {\n var registry = defaultRegistry ? defaultRegistry : useStyleRegistry();\n // If `registry` does not exist, we do nothing here.\n if (!registry) {\n return null;\n }\n if (typeof window === \"undefined\") {\n registry.add(props);\n return null;\n }\n useInsertionEffect(function() {\n registry.add(props);\n return function() {\n registry.remove(props);\n };\n // props.children can be string[], will be striped since id is identical\n }, [\n props.id,\n String(props.dynamic)\n ]);\n return null;\n}\nJSXStyle.dynamic = function(info) {\n return info.map(function(tagInfo) {\n var baseId = tagInfo[0];\n var props = tagInfo[1];\n return computeId(baseId, props);\n }).join(\" \");\n};\n\nexports.StyleRegistry = StyleRegistry;\nexports.createStyleRegistry = createStyleRegistry;\nexports.style = JSXStyle;\nexports.useStyleRegistry = useStyleRegistry;\n","module.exports = require('./dist/index').style\n"],"names":["fetcher","url","res","fetch","status","window","location","assign","Error","json","SWR_OPTIONS","refreshInterval","dedupingInterval","withNetwork","networkId","sep","includes","encodeURIComponent","useSessions","data","error","isLoading","sessions","hint","_hint","useHealth","health","useAnetConfig","config","useTasks","params","query","URLSearchParams","limit","toString","tasks","count","source","useStats","stats","ok","useLicense","license","useMessages","messages","useNodeSession","alias","session","inbox","sse","timeAgo","dateStr","diff","Date","now","replace","getTime","s","Math","floor","statusColor","hasSse","formatUptime","seconds","h","m","DEFAULTS","nodes","title","sub","logs","tokens","networks","generic","Glyph","variant","size","width","height","baseProps","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","viewBox","cx","cy","r","x1","y1","x2","y2","strokeDasharray","opacity","x","y","rx","d","ry","EmptyState","cta","compact","headline","subcopy","iconSize","className","role","href","label","onClick","NodesEmptyState","global_count","AVATAR_HUES","aliasAvatarColors","i","length","charCodeAt","hue","bg","ring","text","aliasInitial","ch","trim","match","toUpperCase","AliasAvatar","c","fs","max","round","style","fontSize","backgroundColor","borderColor","color","React","_interopDefaultLegacy","e","React__default","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","isProd","process","env","isString","o","call","StyleSheet","param","ref","_name","name","_optimizeForSpeed","optimizeForSpeed","invariant$1","_deletedRulePlaceholder","_serverSheet","undefined","_tags","_injected","_rulesCount","node","document","querySelector","_nonce","_proto","setOptimizeForSpeed","bool","flush","inject","isOptimizeForSpeed","_this","cssRules","insertRule","rule","index","cssText","push","deleteRule","getSheetForTag","tag","sheet","styleSheets","ownerNode","getSheet","insertionPoint","replaceRule","console","warn","makeStyleTag","cssString","relativeToTag","createElement","setAttribute","type","appendChild","createTextNode","head","getElementsByTagName","insertBefore","get","condition","message","hash","str","_$hash","stringHash","sanitize","cache","computeId","baseId","propsToString","String","computeSelector","id","css","selectoPlaceholderRegexp","idcss","mapRulesToStyle","options","map","args","nonce","dangerouslySetInnerHTML","__html","StyleSheetRegistry","_styleSheet","styleSheet","_sheet","_fromServer","_indices","_instancesCounts","add","Array","isArray","children","getIdAndRules","styleId","rules","indices","filter","remove","invariant","tagFromServer","parentNode","removeChild","forEach","update","nextProps","fromServer","keys","concat","join","Boolean","styles","dynamic","selectFromServer","elements","slice","querySelectorAll","reduce","acc","element","StyleSheetContext","createContext","displayName","createStyleRegistry","StyleRegistry","configuredRegistry","registry","rootRegistry","useContext","useState","Provider","value","useStyleRegistry","useInsertionEffect","useLayoutEffect","defaultRegistry","JSXStyle","info","tagInfo","exports","module"],"mappings":"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","ignoreList":[4,5]}