@sleep2agi/agent-network-dashboard 0.5.3-preview.247 → 0.5.3-preview.249

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 (144) 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 +5 -5
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/admin.html +1 -1
  21. package/.next/server/app/admin.rsc +1 -1
  22. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  28. package/.next/server/app/index.html +2 -2
  29. package/.next/server/app/index.rsc +2 -2
  30. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/login.html +2 -2
  37. package/.next/server/app/login.rsc +2 -2
  38. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  39. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  44. package/.next/server/app/logs.html +1 -1
  45. package/.next/server/app/logs.rsc +1 -1
  46. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  52. package/.next/server/app/messages.html +1 -1
  53. package/.next/server/app/messages.rsc +1 -1
  54. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  60. package/.next/server/app/node.html +1 -1
  61. package/.next/server/app/node.rsc +1 -1
  62. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  68. package/.next/server/app/nodes.html +1 -1
  69. package/.next/server/app/nodes.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  76. package/.next/server/app/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/server-logs.html +1 -1
  78. package/.next/server/app/server-logs.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  84. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  85. package/.next/server/app/settings/networks.html +1 -1
  86. package/.next/server/app/settings/networks.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  94. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/settings/tokens.html +1 -1
  96. package/.next/server/app/settings/tokens.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  103. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  104. package/.next/server/app/settings.html +2 -2
  105. package/.next/server/app/settings.rsc +2 -2
  106. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  110. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  111. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  112. package/.next/server/app/tasks.html +1 -1
  113. package/.next/server/app/tasks.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  120. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  121. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
  123. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  126. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  127. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  128. package/.next/server/middleware-build-manifest.js +3 -3
  129. package/.next/server/pages/404.html +1 -1
  130. package/.next/server/pages/500.html +1 -1
  131. package/.next/static/chunks/{02ab-jg9m66mw.js → 0.w20n414dt1w.js} +1 -1
  132. package/.next/static/chunks/{0~al3t1j07or2.js → 06wiclye-apdf.js} +1 -1
  133. package/.next/static/chunks/{13lawt81n6oih.js → 099eai9qkfdz~.js} +1 -1
  134. package/.next/static/chunks/{08a20vgoh73ik.js → 0smee.q5ag8f0.js} +1 -1
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +61 -0
  138. package/package.json +1 -1
  139. package/scripts/topo-a11y-titles-catalog-test.mjs +2 -2
  140. package/scripts/topo-canvas-desc-a11y-test.mjs +87 -0
  141. package/scripts/topo-canvas-scan-beam-test.mjs +109 -0
  142. /package/.next/static/{ziwYFRj4qnnG9ecx9IHIR → zXhc40uO3T0MFGWUMXf_f}/_buildManifest.js +0 -0
  143. /package/.next/static/{ziwYFRj4qnnG9ecx9IHIR → zXhc40uO3T0MFGWUMXf_f}/_clientMiddlewareManifest.js +0 -0
  144. /package/.next/static/{ziwYFRj4qnnG9ecx9IHIR → zXhc40uO3T0MFGWUMXf_f}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,98025,e=>{"use strict";e.s(["SESSION_STATUS_CHIP_CLASS",0,{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"},"SESSION_STATUS_TEXT_CLASS",0,{working:"text-green-400",idle:"text-blue-400",blocked:"text-yellow-400",error:"text-red-400",offline:"text-gray-500"},"STATUS_BAR_CLASS",0,{created:"bg-gray-500",delivered:"bg-blue-500",acked:"bg-cyan-500",running:"bg-green-500",replied:"bg-purple-500",closed:"bg-gray-600",failed:"bg-red-500",cancelled:"bg-yellow-500",expired:"bg-orange-500"},"STATUS_CHIP_CLASS",0,{created:"bg-gray-500/10 text-gray-400 border-gray-500/20",delivered:"bg-blue-500/10 text-blue-300 border-blue-500/20",acked:"bg-cyan-500/10 text-cyan-300 border-cyan-500/20",running:"bg-green-500/10 text-green-300 border-green-500/20",replied:"bg-purple-500/10 text-purple-300 border-purple-500/20",closed:"bg-gray-500/10 text-gray-500 border-gray-500/20",failed:"bg-red-500/10 text-red-300 border-red-500/20",cancelled:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",expired:"bg-orange-500/10 text-orange-300 border-orange-500/20"},"STATUS_DOT_HEX",0,{created:"#9ca3af",delivered:"#60a5fa",acked:"#22d3ee",running:"#4ade80",replied:"#a78bfa",closed:"#6b7280",failed:"#f87171",cancelled:"#facc15",expired:"#fb923c"},"TASK_STATUSES",0,["created","delivered","acked","running","replied","closed","failed","cancelled","expired"]])},3479,59746,e=>{"use strict";function t(e){if(!e)return null;let t=Date.parse(e.includes("T")?e:e.replace(" ","T")+"Z");return Number.isFinite(t)?t:null}function r(e){let r=t(e);if(null===r)return null;let s=Math.floor((Date.now()-r)/1e3);return s<0?"just now":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`}e.s(["parseHubTime",0,t,"relativeAgo",0,r],59746),e.s(["formatUptime",0,function(e){let t=Math.floor(e/3600),r=Math.floor(e%3600/60);return t>0?`${t}h ${r}m`:`${r}m`},"previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){return r(e)??"--"}],3479)},46228,e=>{"use strict";var t=e.i(22381);let r=[180,200,220,270,300,330,30,90];function s(e){let t=0;for(let r=0;r<e.length;r++)t=31*t+e.charCodeAt(r)>>>0;let s=r[t%r.length];return{bg:`hsl(${s} 55% 22%)`,ring:`hsl(${s} 60% 45%)`,text:`hsl(${s} 80% 78%)`}}function n(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:r=28,className:i=""}){let a=s(e),l=Math.max(9,Math.round(.42*r));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${i}`,style:{width:r,height:r,fontSize:l,backgroundColor:a.bg,borderColor:a.ring,color:a.text},title:e,"aria-hidden":!0,children:n(e)})},"aliasAvatarColors",0,s,"aliasInitial",0,n])},76161,e=>{"use strict";var t=e.i(22381),r=e.i(23910),s=e.i(56839);let n={nodes:{title:"No agents in this network",sub:"Agent sessions will appear here once they connect to the CommHub."},tasks:{title:"No tasks yet",sub:"Tasks will appear here when agents send them via CommHub."},messages:{title:"No messages",sub:"Messages between agents will appear here."},logs:{title:"No audit logs",sub:"Events will appear here when users register, login, or perform actions."},tokens:{title:"No API tokens",sub:"Create one to authenticate CLI tools and external integrations."},networks:{title:"No networks found",sub:"Create one or sign in with V3 auth to see your networks."},generic:{title:"Nothing here yet",sub:"Data will appear here once available."}};function i({variant:e,size:r}){let s={width:r,height:r},n={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,t.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,t.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,t.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,t.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M14 18 h36 a3 3 0 0 1 3 3 v18 a3 3 0 0 1 -3 3 h-18 l-8 6 v-6 h-10 a3 3 0 0 1 -3 -3 v-18 a3 3 0 0 1 3 -3 z"}),(0,t.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,t.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M18 12 h22 l8 8 v32 a2 2 0 0 1 -2 2 h-28 a2 2 0 0 1 -2 -2 v-38 a2 2 0 0 1 2 -2 z"}),(0,t.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,t.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,t.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,t.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,t.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,t.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,t.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,t.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function a({variant:e="generic",title:r,sub:l,cta:o,compact:c=!1}){let d=n[e],x=r??d.title,h=l??d.sub;return(0,t.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)(i,{variant:e,size:c?40:56})}),(0,t.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(0,t.jsx)("p",{className:`text-gray-500 ${c?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:h}),o&&(0,t.jsx)("div",{className:"mt-4",children:o.href?(0,t.jsxs)(s.default,{href:o.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,t.jsxs)("button",{onClick:o.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}function l({children:e}){return(0,t.jsx)("div",{className:"max-w-2xl mx-auto rounded-xl border border-[#2a2a4a] bg-[#111128] shadow-lg shadow-black/20",children:e})}function o({cmd:e}){let[s,n]=(0,r.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1800)}catch{}};return(0,t.jsxs)("div",{className:"anet-empty-cmd flex items-center gap-2 bg-[#0a0a15] border border-[#2a2a4a] rounded-lg pl-4 pr-1.5 py-1.5 text-xs sm:text-sm",children:[(0,t.jsx)("code",{className:"text-cyan-300 font-mono select-all",children:e}),(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":s?"Copied":"Copy command",className:"shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] transition-colors",children:s?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-green-400",children:[(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M20 6 9 17l-5-5"})}),"Copied"]}):(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,t.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]})}e.s(["EmptyState",0,a,"NodesEmptyState",0,function({hint:e,taskHistoryCount:r=0}){return e?.global_count?(0,t.jsx)(l,{children:(0,t.jsx)(a,{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.`})}):r>0?(0,t.jsx)(l,{children:(0,t.jsx)(a,{variant:"nodes",title:"No agents online",sub:`Every agent in this network is currently offline. ${r.toLocaleString()} task${1===r?"":"s"} in history — they may have finished their work or disconnected.`,cta:{label:"View task history",href:"/tasks"}})}):(0,t.jsx)(l,{children:(0,t.jsxs)("div",{className:"text-center py-16 px-4",role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)("svg",{viewBox:"0 0 64 64",width:56,height:56,children:(0,t.jsxs)("g",{stroke:"currentColor",strokeWidth:"1.5",fill:"none",children:[(0,t.jsx)("rect",{x:"10",y:"20",width:"44",height:"28",rx:"2"}),(0,t.jsx)("rect",{x:"20",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"32",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"44",y:"32",width:"4",height:"8",opacity:"0.5"}),(0,t.jsx)("line",{x1:"10",y1:"26",x2:"54",y2:"26",opacity:"0.4"}),(0,t.jsx)("circle",{cx:"14",cy:"23",r:"0.8",fill:"currentColor"})]})})}),(0,t.jsx)("h3",{className:"font-medium text-gray-300 text-base",children:"Spin up your first agent"}),(0,t.jsx)("p",{className:"text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed",children:"Run this in a fresh terminal to register an agent with this CommHub:"}),(0,t.jsx)("div",{className:"mt-4 inline-block",children:(0,t.jsx)(o,{cmd:"npx --yes @sleep2agi/agent-network init"})}),(0,t.jsx)("div",{className:"mt-3",children:(0,t.jsxs)("a",{href:"https://anet.sh",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300",children:["Full quickstart guide",(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})})}])},59276,e=>{"use strict";var t=e.i(12629),r=e.i(11449);let s=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");return t.json()},n={refreshInterval:5e3,dedupingInterval:3e3};function i(e,t){if(!t)return e;let r=e.includes("?")?"&":"?";return`${e}${r}network_id=${encodeURIComponent(t)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,t.default)("/api/anet/config",s,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/health",s,n);return{health:e||null,error:r}},"useLicense",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/license",s,{refreshInterval:6e4});return{license:e?.ok?e:null,error:r}},"useMessages",0,function(e=100){let{networkId:a}=(0,r.useNetworkId)(),{data:l,error:o,isLoading:c}=(0,t.default)(i(`/api/hub/messages?limit=${e}`,a),s,n);return{messages:l?.messages||[],error:o,isLoading:c}},"useSessions",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l,isLoading:o}=(0,t.default)(i("/api/hub/status",e),s,n);return{sessions:a?.sessions||[],hint:a?._hint,error:l,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l}=(0,t.default)(i("/api/hub/stats",e),s,n);return{stats:a?.ok?a:null,error:l}},"useTasks",0,function(e){let{networkId:a}=(0,r.useNetworkId)(),l=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:c,isLoading:d}=(0,t.default)(i(`/api/hub/tasks?${l}`,a),s,n);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:c,isLoading:d}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.246"],70286)}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,98025,e=>{"use strict";e.s(["SESSION_STATUS_CHIP_CLASS",0,{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"},"SESSION_STATUS_TEXT_CLASS",0,{working:"text-green-400",idle:"text-blue-400",blocked:"text-yellow-400",error:"text-red-400",offline:"text-gray-500"},"STATUS_BAR_CLASS",0,{created:"bg-gray-500",delivered:"bg-blue-500",acked:"bg-cyan-500",running:"bg-green-500",replied:"bg-purple-500",closed:"bg-gray-600",failed:"bg-red-500",cancelled:"bg-yellow-500",expired:"bg-orange-500"},"STATUS_CHIP_CLASS",0,{created:"bg-gray-500/10 text-gray-400 border-gray-500/20",delivered:"bg-blue-500/10 text-blue-300 border-blue-500/20",acked:"bg-cyan-500/10 text-cyan-300 border-cyan-500/20",running:"bg-green-500/10 text-green-300 border-green-500/20",replied:"bg-purple-500/10 text-purple-300 border-purple-500/20",closed:"bg-gray-500/10 text-gray-500 border-gray-500/20",failed:"bg-red-500/10 text-red-300 border-red-500/20",cancelled:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",expired:"bg-orange-500/10 text-orange-300 border-orange-500/20"},"STATUS_DOT_HEX",0,{created:"#9ca3af",delivered:"#60a5fa",acked:"#22d3ee",running:"#4ade80",replied:"#a78bfa",closed:"#6b7280",failed:"#f87171",cancelled:"#facc15",expired:"#fb923c"},"TASK_STATUSES",0,["created","delivered","acked","running","replied","closed","failed","cancelled","expired"]])},3479,59746,e=>{"use strict";function t(e){if(!e)return null;let t=Date.parse(e.includes("T")?e:e.replace(" ","T")+"Z");return Number.isFinite(t)?t:null}function r(e){let r=t(e);if(null===r)return null;let s=Math.floor((Date.now()-r)/1e3);return s<0?"just now":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`}e.s(["parseHubTime",0,t,"relativeAgo",0,r],59746),e.s(["formatUptime",0,function(e){let t=Math.floor(e/3600),r=Math.floor(e%3600/60);return t>0?`${t}h ${r}m`:`${r}m`},"previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){return r(e)??"--"}],3479)},46228,e=>{"use strict";var t=e.i(22381);let r=[180,200,220,270,300,330,30,90];function s(e){let t=0;for(let r=0;r<e.length;r++)t=31*t+e.charCodeAt(r)>>>0;let s=r[t%r.length];return{bg:`hsl(${s} 55% 22%)`,ring:`hsl(${s} 60% 45%)`,text:`hsl(${s} 80% 78%)`}}function n(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:r=28,className:i=""}){let a=s(e),l=Math.max(9,Math.round(.42*r));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${i}`,style:{width:r,height:r,fontSize:l,backgroundColor:a.bg,borderColor:a.ring,color:a.text},title:e,"aria-hidden":!0,children:n(e)})},"aliasAvatarColors",0,s,"aliasInitial",0,n])},76161,e=>{"use strict";var t=e.i(22381),r=e.i(23910),s=e.i(56839);let n={nodes:{title:"No agents in this network",sub:"Agent sessions will appear here once they connect to the CommHub."},tasks:{title:"No tasks yet",sub:"Tasks will appear here when agents send them via CommHub."},messages:{title:"No messages",sub:"Messages between agents will appear here."},logs:{title:"No audit logs",sub:"Events will appear here when users register, login, or perform actions."},tokens:{title:"No API tokens",sub:"Create one to authenticate CLI tools and external integrations."},networks:{title:"No networks found",sub:"Create one or sign in with V3 auth to see your networks."},generic:{title:"Nothing here yet",sub:"Data will appear here once available."}};function i({variant:e,size:r}){let s={width:r,height:r},n={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,t.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,t.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,t.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,t.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M14 18 h36 a3 3 0 0 1 3 3 v18 a3 3 0 0 1 -3 3 h-18 l-8 6 v-6 h-10 a3 3 0 0 1 -3 -3 v-18 a3 3 0 0 1 3 -3 z"}),(0,t.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,t.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M18 12 h22 l8 8 v32 a2 2 0 0 1 -2 2 h-28 a2 2 0 0 1 -2 -2 v-38 a2 2 0 0 1 2 -2 z"}),(0,t.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,t.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,t.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,t.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,t.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,t.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,t.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,t.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function a({variant:e="generic",title:r,sub:l,cta:o,compact:c=!1}){let d=n[e],x=r??d.title,h=l??d.sub;return(0,t.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)(i,{variant:e,size:c?40:56})}),(0,t.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(0,t.jsx)("p",{className:`text-gray-500 ${c?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:h}),o&&(0,t.jsx)("div",{className:"mt-4",children:o.href?(0,t.jsxs)(s.default,{href:o.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,t.jsxs)("button",{onClick:o.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}function l({children:e}){return(0,t.jsx)("div",{className:"max-w-2xl mx-auto rounded-xl border border-[#2a2a4a] bg-[#111128] shadow-lg shadow-black/20",children:e})}function o({cmd:e}){let[s,n]=(0,r.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1800)}catch{}};return(0,t.jsxs)("div",{className:"anet-empty-cmd flex items-center gap-2 bg-[#0a0a15] border border-[#2a2a4a] rounded-lg pl-4 pr-1.5 py-1.5 text-xs sm:text-sm",children:[(0,t.jsx)("code",{className:"text-cyan-300 font-mono select-all",children:e}),(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":s?"Copied":"Copy command",className:"shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] transition-colors",children:s?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-green-400",children:[(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M20 6 9 17l-5-5"})}),"Copied"]}):(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,t.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]})}e.s(["EmptyState",0,a,"NodesEmptyState",0,function({hint:e,taskHistoryCount:r=0}){return e?.global_count?(0,t.jsx)(l,{children:(0,t.jsx)(a,{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.`})}):r>0?(0,t.jsx)(l,{children:(0,t.jsx)(a,{variant:"nodes",title:"No agents online",sub:`Every agent in this network is currently offline. ${r.toLocaleString()} task${1===r?"":"s"} in history — they may have finished their work or disconnected.`,cta:{label:"View task history",href:"/tasks"}})}):(0,t.jsx)(l,{children:(0,t.jsxs)("div",{className:"text-center py-16 px-4",role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)("svg",{viewBox:"0 0 64 64",width:56,height:56,children:(0,t.jsxs)("g",{stroke:"currentColor",strokeWidth:"1.5",fill:"none",children:[(0,t.jsx)("rect",{x:"10",y:"20",width:"44",height:"28",rx:"2"}),(0,t.jsx)("rect",{x:"20",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"32",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"44",y:"32",width:"4",height:"8",opacity:"0.5"}),(0,t.jsx)("line",{x1:"10",y1:"26",x2:"54",y2:"26",opacity:"0.4"}),(0,t.jsx)("circle",{cx:"14",cy:"23",r:"0.8",fill:"currentColor"})]})})}),(0,t.jsx)("h3",{className:"font-medium text-gray-300 text-base",children:"Spin up your first agent"}),(0,t.jsx)("p",{className:"text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed",children:"Run this in a fresh terminal to register an agent with this CommHub:"}),(0,t.jsx)("div",{className:"mt-4 inline-block",children:(0,t.jsx)(o,{cmd:"npx --yes @sleep2agi/agent-network init"})}),(0,t.jsx)("div",{className:"mt-3",children:(0,t.jsxs)("a",{href:"https://anet.sh",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300",children:["Full quickstart guide",(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})})}])},59276,e=>{"use strict";var t=e.i(12629),r=e.i(11449);let s=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");return t.json()},n={refreshInterval:5e3,dedupingInterval:3e3};function i(e,t){if(!t)return e;let r=e.includes("?")?"&":"?";return`${e}${r}network_id=${encodeURIComponent(t)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,t.default)("/api/anet/config",s,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/health",s,n);return{health:e||null,error:r}},"useLicense",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/license",s,{refreshInterval:6e4});return{license:e?.ok?e:null,error:r}},"useMessages",0,function(e=100){let{networkId:a}=(0,r.useNetworkId)(),{data:l,error:o,isLoading:c}=(0,t.default)(i(`/api/hub/messages?limit=${e}`,a),s,n);return{messages:l?.messages||[],error:o,isLoading:c}},"useSessions",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l,isLoading:o}=(0,t.default)(i("/api/hub/status",e),s,n);return{sessions:a?.sessions||[],hint:a?._hint,error:l,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l}=(0,t.default)(i("/api/hub/stats",e),s,n);return{stats:a?.ok?a:null,error:l}},"useTasks",0,function(e){let{networkId:a}=(0,r.useNetworkId)(),l=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:c,isLoading:d}=(0,t.default)(i(`/api/hub/tasks?${l}`,a),s,n);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:c,isLoading:d}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.248"],70286)}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.246"],70286)},48941,e=>{"use strict";var t=e.i(22381),r=e.i(23910),a=e.i(70286);e.s(["default",0,function(){let[e,s]=(0,r.useState)("login"),[n,o]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(!1),[x,g]=(0,r.useState)(""),[h,m]=(0,r.useState)(!1),u=async t=>{t.preventDefault(),m(!0),g("");try{let t=await fetch("/api/auth/v3",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,username:n,password:i})}),r=await t.json();if(r.ok){r.token&&sessionStorage.setItem("anet_v3_auth",JSON.stringify({user:r.user,token:r.token,networks:r.networks||[],currentNetwork:r.network_id||r.networks?.[0]?.network_id||""})),window.location.assign("/");return}g(r.error||"Login failed")}catch{g("Connection failed")}m(!1)};return(0,t.jsxs)("main",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 font-mono flex items-center justify-center relative overflow-hidden px-4 py-10 sm:py-16",children:[(0,t.jsx)("div",{className:"absolute inset-0 pointer-events-none anet-login-bg","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-sm",children:[(0,t.jsxs)("div",{className:"text-center mb-7",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-4 rounded-2xl bg-[#111128] border border-[#2a2a4a] anet-login-mark",children:(0,t.jsxs)("svg",{className:"w-9 h-9",viewBox:"0 0 32 32","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.25",className:"text-cyan-400 anet-login-mark-ring"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"3",fill:"currentColor",className:"text-cyan-400 anet-login-mark-node-a"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"3",fill:"currentColor",className:"text-green-400 anet-login-mark-node-b"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"3",fill:"currentColor",className:"text-violet-400 anet-login-mark-node-c"})]})}),(0,t.jsx)("h1",{className:"text-[22px] sm:text-2xl font-semibold text-white tracking-tight",children:"Agent Network"}),(0,t.jsx)("p",{className:"text-[13px] text-gray-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Free preview · no credit card"})]})})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 mb-4",children:["login","register"].map(r=>(0,t.jsx)("button",{type:"button",onClick:()=>{s(r),g("")},className:`flex-1 rounded-md px-3 py-2 text-sm transition-colors ${e===r?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"login"===r?"Sign in":"Register"},r))}),(0,t.jsxs)("form",{onSubmit:u,className:"border border-[#2a2a4a] bg-[#111128]/80 backdrop-blur-sm rounded-xl p-6 shadow-2xl shadow-black/30",children:[(0,t.jsx)("label",{htmlFor:"username",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Username"}),(0,t.jsx)("input",{id:"username",type:"text",value:n,onChange:e=>o(e.target.value),autoFocus:!0,placeholder:"Enter username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all mb-4"}),(0,t.jsx)("label",{htmlFor:"password",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{id:"password",type:c?"text":"password",value:i,onChange:e=>l(e.target.value),placeholder:"Enter password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 pr-11 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all"}),(0,t.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":c?"Hide password":"Show password",className:"absolute inset-y-0 right-0 flex items-center px-3 text-gray-600 hover:text-gray-300 transition-colors",children:c?(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),(0,t.jsx)("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]}),x&&(0,t.jsx)("div",{className:"mt-3 text-sm text-red-300 bg-red-500/5 border border-red-500/10 rounded-lg px-3 py-2",children:x}),(0,t.jsxs)("button",{type:"submit",disabled:h||!i||!n.trim(),className:"mt-5 w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-lg transition-all shadow-lg shadow-cyan-500/10 hover:shadow-cyan-500/20 disabled:shadow-none",children:[h&&(0,t.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,t.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,t.jsx)("span",{children:h?"login"===e?"Signing in…":"Registering…":"login"===e?"Sign in":"Create account"})]})]}),(0,t.jsxs)("p",{className:"text-center text-[11px] text-gray-700 mt-6",children:["Sleep2AGI · Apache-2.0 · ",(0,t.jsx)("a",{href:"https://anet.sh",className:"hover:text-gray-500 transition-colors",children:"anet.sh"}),(0,t.jsx)("span",{className:"mx-1 text-gray-800",children:"·"}),(0,t.jsxs)("span",{className:"font-mono",title:"@sleep2agi/agent-network-dashboard",children:["v",a.DASHBOARD_VERSION]})]})]})]})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.248"],70286)},48941,e=>{"use strict";var t=e.i(22381),r=e.i(23910),a=e.i(70286);e.s(["default",0,function(){let[e,s]=(0,r.useState)("login"),[n,o]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(!1),[x,g]=(0,r.useState)(""),[h,m]=(0,r.useState)(!1),u=async t=>{t.preventDefault(),m(!0),g("");try{let t=await fetch("/api/auth/v3",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,username:n,password:i})}),r=await t.json();if(r.ok){r.token&&sessionStorage.setItem("anet_v3_auth",JSON.stringify({user:r.user,token:r.token,networks:r.networks||[],currentNetwork:r.network_id||r.networks?.[0]?.network_id||""})),window.location.assign("/");return}g(r.error||"Login failed")}catch{g("Connection failed")}m(!1)};return(0,t.jsxs)("main",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 font-mono flex items-center justify-center relative overflow-hidden px-4 py-10 sm:py-16",children:[(0,t.jsx)("div",{className:"absolute inset-0 pointer-events-none anet-login-bg","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-sm",children:[(0,t.jsxs)("div",{className:"text-center mb-7",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-4 rounded-2xl bg-[#111128] border border-[#2a2a4a] anet-login-mark",children:(0,t.jsxs)("svg",{className:"w-9 h-9",viewBox:"0 0 32 32","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.25",className:"text-cyan-400 anet-login-mark-ring"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"3",fill:"currentColor",className:"text-cyan-400 anet-login-mark-node-a"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"3",fill:"currentColor",className:"text-green-400 anet-login-mark-node-b"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"3",fill:"currentColor",className:"text-violet-400 anet-login-mark-node-c"})]})}),(0,t.jsx)("h1",{className:"text-[22px] sm:text-2xl font-semibold text-white tracking-tight",children:"Agent Network"}),(0,t.jsx)("p",{className:"text-[13px] text-gray-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Free preview · no credit card"})]})})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 mb-4",children:["login","register"].map(r=>(0,t.jsx)("button",{type:"button",onClick:()=>{s(r),g("")},className:`flex-1 rounded-md px-3 py-2 text-sm transition-colors ${e===r?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"login"===r?"Sign in":"Register"},r))}),(0,t.jsxs)("form",{onSubmit:u,className:"border border-[#2a2a4a] bg-[#111128]/80 backdrop-blur-sm rounded-xl p-6 shadow-2xl shadow-black/30",children:[(0,t.jsx)("label",{htmlFor:"username",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Username"}),(0,t.jsx)("input",{id:"username",type:"text",value:n,onChange:e=>o(e.target.value),autoFocus:!0,placeholder:"Enter username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all mb-4"}),(0,t.jsx)("label",{htmlFor:"password",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{id:"password",type:c?"text":"password",value:i,onChange:e=>l(e.target.value),placeholder:"Enter password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 pr-11 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all"}),(0,t.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":c?"Hide password":"Show password",className:"absolute inset-y-0 right-0 flex items-center px-3 text-gray-600 hover:text-gray-300 transition-colors",children:c?(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),(0,t.jsx)("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]}),x&&(0,t.jsx)("div",{className:"mt-3 text-sm text-red-300 bg-red-500/5 border border-red-500/10 rounded-lg px-3 py-2",children:x}),(0,t.jsxs)("button",{type:"submit",disabled:h||!i||!n.trim(),className:"mt-5 w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-lg transition-all shadow-lg shadow-cyan-500/10 hover:shadow-cyan-500/20 disabled:shadow-none",children:[h&&(0,t.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,t.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,t.jsx)("span",{children:h?"login"===e?"Signing in…":"Registering…":"login"===e?"Sign in":"Create account"})]})]}),(0,t.jsxs)("p",{className:"text-center text-[11px] text-gray-700 mt-6",children:["Sleep2AGI · Apache-2.0 · ",(0,t.jsx)("a",{href:"https://anet.sh",className:"hover:text-gray-500 transition-colors",children:"anet.sh"}),(0,t.jsx)("span",{className:"mx-1 text-gray-800",children:"·"}),(0,t.jsxs)("span",{className:"font-mono",title:"@sleep2agi/agent-network-dashboard",children:["v",a.DASHBOARD_VERSION]})]})]})]})}])}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":407,"timestamp":414930515428,"id":4,"parentId":1,"tags":{},"startTime":1779222902762,"traceId":"31b3db6ebb1b96cb"},{"name":"load-custom-routes","duration":671,"timestamp":414930516064,"id":5,"parentId":1,"tags":{},"startTime":1779222902762,"traceId":"31b3db6ebb1b96cb"},{"name":"create-dist-dir","duration":1014,"timestamp":414930516805,"id":6,"parentId":1,"tags":{},"startTime":1779222902763,"traceId":"31b3db6ebb1b96cb"},{"name":"clean","duration":36253,"timestamp":414930518672,"id":7,"parentId":1,"tags":{},"startTime":1779222902765,"traceId":"31b3db6ebb1b96cb"},{"name":"discover-routes","duration":30732,"timestamp":414930640814,"id":8,"parentId":1,"tags":{},"startTime":1779222902887,"traceId":"31b3db6ebb1b96cb"},{"name":"create-root-mapping","duration":137,"timestamp":414930671612,"id":9,"parentId":1,"tags":{},"startTime":1779222902918,"traceId":"31b3db6ebb1b96cb"},{"name":"generate-route-types","duration":26243,"timestamp":414930674366,"id":10,"parentId":1,"tags":{},"startTime":1779222902921,"traceId":"31b3db6ebb1b96cb"},{"name":"public-dir-conflict-check","duration":147,"timestamp":414930700739,"id":11,"parentId":1,"tags":{},"startTime":1779222902947,"traceId":"31b3db6ebb1b96cb"},{"name":"generate-routes-manifest","duration":7792,"timestamp":414930701113,"id":12,"parentId":1,"tags":{},"startTime":1779222902947,"traceId":"31b3db6ebb1b96cb"},{"name":"run-turbopack","duration":7022470,"timestamp":414930725829,"id":14,"parentId":1,"tags":{},"startTime":1779222902972,"traceId":"31b3db6ebb1b96cb"},{"name":"turbopack-build-events","duration":75,"timestamp":414931045901,"id":15,"parentId":1,"tags":{},"startTime":1779222903292,"traceId":"31b3db6ebb1b96cb"},{"name":"run-typescript","duration":10740067,"timestamp":414937760858,"id":16,"parentId":1,"tags":{},"startTime":1779222910007,"traceId":"31b3db6ebb1b96cb"},{"name":"generate-required-server-files","duration":2884,"timestamp":414948502283,"id":18,"parentId":1,"tags":{},"startTime":1779222920749,"traceId":"31b3db6ebb1b96cb"},{"name":"check-static-error-page","duration":15755,"timestamp":414948711340,"id":20,"parentId":19,"tags":{},"startTime":1779222920958,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":619050,"timestamp":414948730839,"id":65,"parentId":22,"tags":{},"startTime":1779222920977,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":635495,"timestamp":414948714584,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779222920961,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":650750,"timestamp":414948731674,"id":70,"parentId":29,"tags":{},"startTime":1779222920978,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":663681,"timestamp":414948718844,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779222920965,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":692147,"timestamp":414948730481,"id":64,"parentId":21,"tags":{},"startTime":1779222920977,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":709764,"timestamp":414948712952,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779222920959,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":691049,"timestamp":414948731896,"id":72,"parentId":32,"tags":{},"startTime":1779222920978,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":704603,"timestamp":414948719432,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779222920966,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":696956,"timestamp":414948732153,"id":74,"parentId":34,"tags":{},"startTime":1779222920978,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":709475,"timestamp":414948719708,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779222920966,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":700271,"timestamp":414948732188,"id":75,"parentId":35,"tags":{},"startTime":1779222920978,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":712680,"timestamp":414948719843,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779222920966,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":704950,"timestamp":414948732204,"id":76,"parentId":36,"tags":{},"startTime":1779222920978,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":716809,"timestamp":414948720405,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779222920967,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":709705,"timestamp":414948732246,"id":77,"parentId":37,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":721420,"timestamp":414948720598,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779222920967,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":713445,"timestamp":414948730992,"id":66,"parentId":25,"tags":{},"startTime":1779222920977,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":726246,"timestamp":414948718244,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779222920965,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":719330,"timestamp":414948732266,"id":78,"parentId":38,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":730896,"timestamp":414948720747,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779222920967,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":720746,"timestamp":414948731400,"id":69,"parentId":28,"tags":{},"startTime":1779222920978,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":733477,"timestamp":414948718721,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779222920965,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":727489,"timestamp":414948732288,"id":80,"parentId":40,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":738899,"timestamp":414948720925,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779222920967,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":734768,"timestamp":414948732313,"id":82,"parentId":44,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":745606,"timestamp":414948721522,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779222920968,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":739832,"timestamp":414948732321,"id":83,"parentId":45,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":750591,"timestamp":414948721608,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779222920968,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":746703,"timestamp":414948732275,"id":79,"parentId":39,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":758196,"timestamp":414948720850,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779222920967,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":748495,"timestamp":414948732335,"id":84,"parentId":46,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":759167,"timestamp":414948721707,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779222920968,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":753358,"timestamp":414948732370,"id":86,"parentId":48,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":762416,"timestamp":414948723373,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779222920970,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":757946,"timestamp":414948732383,"id":87,"parentId":49,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":766878,"timestamp":414948723506,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779222920970,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":764872,"timestamp":414948732396,"id":88,"parentId":50,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":773739,"timestamp":414948723575,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779222920970,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":766154,"timestamp":414948732408,"id":89,"parentId":51,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":774953,"timestamp":414948723655,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779222920970,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":766680,"timestamp":414948732362,"id":85,"parentId":47,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":775859,"timestamp":414948723227,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779222920970,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":759707,"timestamp":414948743976,"id":91,"parentId":31,"tags":{},"startTime":1779222920990,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":784590,"timestamp":414948719138,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779222920965,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":761554,"timestamp":414948742810,"id":90,"parentId":24,"tags":{},"startTime":1779222920989,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":789201,"timestamp":414948715206,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779222920961,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":774231,"timestamp":414948731828,"id":71,"parentId":30,"tags":{},"startTime":1779222920978,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":787112,"timestamp":414948718989,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779222920965,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":756051,"timestamp":414948752629,"id":93,"parentId":43,"tags":{},"startTime":1779222920999,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":787407,"timestamp":414948721312,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779222920968,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":776572,"timestamp":414948732300,"id":81,"parentId":42,"tags":{},"startTime":1779222920979,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":787700,"timestamp":414948721215,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779222920967,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":781365,"timestamp":414948731272,"id":68,"parentId":27,"tags":{},"startTime":1779222920978,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":794086,"timestamp":414948718596,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779222920965,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":781452,"timestamp":414948732071,"id":73,"parentId":33,"tags":{},"startTime":1779222920978,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":793997,"timestamp":414948719577,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779222920966,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":764503,"timestamp":414948751408,"id":92,"parentId":41,"tags":{},"startTime":1779222920998,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":794970,"timestamp":414948720991,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779222920967,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":787053,"timestamp":414948731147,"id":67,"parentId":26,"tags":{},"startTime":1779222920977,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":799790,"timestamp":414948718467,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779222920965,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":766503,"timestamp":414948754890,"id":98,"parentId":55,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":796777,"timestamp":414948724654,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779222920971,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":773820,"timestamp":414948755057,"id":101,"parentId":59,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":803033,"timestamp":414948725895,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779222920972,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":784994,"timestamp":414948755079,"id":102,"parentId":61,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":813618,"timestamp":414948726532,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779222920973,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":796227,"timestamp":414948755092,"id":103,"parentId":62,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":824701,"timestamp":414948726683,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779222920973,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":804076,"timestamp":414948755106,"id":104,"parentId":63,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":832403,"timestamp":414948726830,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779222920973,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":808083,"timestamp":414948754818,"id":94,"parentId":23,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":848024,"timestamp":414948714928,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779222920961,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":802623,"timestamp":414948764793,"id":105,"parentId":60,"tags":{},"startTime":1779222921011,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":841363,"timestamp":414948726096,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779222920972,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":791553,"timestamp":414948778541,"id":106,"parentId":57,"tags":{},"startTime":1779222921025,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":844974,"timestamp":414948725157,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779222920971,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":828932,"timestamp":414948754904,"id":99,"parentId":56,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":859018,"timestamp":414948724880,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779222920971,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":832209,"timestamp":414948754865,"id":96,"parentId":53,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":862862,"timestamp":414948724266,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779222920971,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":833276,"timestamp":414948754850,"id":95,"parentId":52,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":864078,"timestamp":414948724091,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779222920970,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":854610,"timestamp":414948754879,"id":97,"parentId":54,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":885113,"timestamp":414948724439,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779222920971,"traceId":"31b3db6ebb1b96cb"},{"name":"is-page-static","duration":868531,"timestamp":414948754917,"id":100,"parentId":58,"tags":{},"startTime":1779222921001,"traceId":"31b3db6ebb1b96cb"},{"name":"check-page","duration":897831,"timestamp":414948725687,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779222920972,"traceId":"31b3db6ebb1b96cb"},{"name":"static-check","duration":913433,"timestamp":414948710139,"id":19,"parentId":1,"tags":{},"startTime":1779222920956,"traceId":"31b3db6ebb1b96cb"}]
2
- [{"name":"write-routes-manifest","duration":475,"timestamp":414949632990,"id":108,"parentId":1,"tags":{},"startTime":1779222921879,"traceId":"31b3db6ebb1b96cb"},{"name":"load-dotenv","duration":56,"timestamp":414949645780,"id":111,"parentId":110,"tags":{},"startTime":1779222921892,"traceId":"31b3db6ebb1b96cb"},{"name":"run-export-path-map","duration":838,"timestamp":414949648849,"id":112,"parentId":110,"tags":{},"startTime":1779222921895,"traceId":"31b3db6ebb1b96cb"},{"name":"next-export","duration":699608,"timestamp":414949644135,"id":110,"parentId":1,"tags":{},"startTime":1779222921890,"traceId":"31b3db6ebb1b96cb"},{"name":"move-exported-app-not-found-","duration":621,"timestamp":414950347456,"id":113,"parentId":109,"tags":{},"startTime":1779222922594,"traceId":"31b3db6ebb1b96cb"},{"name":"move-exported-app-global-error-","duration":410,"timestamp":414950348186,"id":114,"parentId":109,"tags":{},"startTime":1779222922594,"traceId":"31b3db6ebb1b96cb"},{"name":"static-generation","duration":713411,"timestamp":414949637259,"id":109,"parentId":1,"tags":{},"startTime":1779222921884,"traceId":"31b3db6ebb1b96cb"},{"name":"write-routes-manifest","duration":594,"timestamp":414950350978,"id":115,"parentId":1,"tags":{},"startTime":1779222922597,"traceId":"31b3db6ebb1b96cb"},{"name":"print-tree-view","duration":4516,"timestamp":414950366222,"id":116,"parentId":1,"tags":{},"startTime":1779222922612,"traceId":"31b3db6ebb1b96cb"},{"name":"write-route-bundle-stats","duration":13921,"timestamp":414950370772,"id":117,"parentId":1,"tags":{},"startTime":1779222922617,"traceId":"31b3db6ebb1b96cb"},{"name":"telemetry-flush","duration":20141,"timestamp":414950384733,"id":118,"parentId":1,"tags":{},"startTime":1779222922631,"traceId":"31b3db6ebb1b96cb"},{"name":"next-build","duration":19953693,"timestamp":414930451211,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779222902697,"traceId":"31b3db6ebb1b96cb"}]
1
+ [{"name":"generate-buildid","duration":419,"timestamp":415582967542,"id":4,"parentId":1,"tags":{},"startTime":1779223555214,"traceId":"548b60aada584816"},{"name":"load-custom-routes","duration":681,"timestamp":415582968202,"id":5,"parentId":1,"tags":{},"startTime":1779223555214,"traceId":"548b60aada584816"},{"name":"create-dist-dir","duration":990,"timestamp":415582968955,"id":6,"parentId":1,"tags":{},"startTime":1779223555215,"traceId":"548b60aada584816"},{"name":"clean","duration":37645,"timestamp":415582970804,"id":7,"parentId":1,"tags":{},"startTime":1779223555217,"traceId":"548b60aada584816"},{"name":"discover-routes","duration":29317,"timestamp":415583102936,"id":8,"parentId":1,"tags":{},"startTime":1779223555349,"traceId":"548b60aada584816"},{"name":"create-root-mapping","duration":143,"timestamp":415583132330,"id":9,"parentId":1,"tags":{},"startTime":1779223555379,"traceId":"548b60aada584816"},{"name":"generate-route-types","duration":21923,"timestamp":415583135582,"id":10,"parentId":1,"tags":{},"startTime":1779223555382,"traceId":"548b60aada584816"},{"name":"public-dir-conflict-check","duration":106,"timestamp":415583157596,"id":11,"parentId":1,"tags":{},"startTime":1779223555404,"traceId":"548b60aada584816"},{"name":"generate-routes-manifest","duration":6746,"timestamp":415583157820,"id":12,"parentId":1,"tags":{},"startTime":1779223555404,"traceId":"548b60aada584816"},{"name":"run-turbopack","duration":6131959,"timestamp":415583179576,"id":14,"parentId":1,"tags":{},"startTime":1779223555426,"traceId":"548b60aada584816"},{"name":"turbopack-build-events","duration":104,"timestamp":415583499394,"id":15,"parentId":1,"tags":{},"startTime":1779223555746,"traceId":"548b60aada584816"},{"name":"run-typescript","duration":9956006,"timestamp":415589324435,"id":16,"parentId":1,"tags":{},"startTime":1779223561571,"traceId":"548b60aada584816"},{"name":"generate-required-server-files","duration":2638,"timestamp":415599281891,"id":18,"parentId":1,"tags":{},"startTime":1779223571528,"traceId":"548b60aada584816"},{"name":"check-static-error-page","duration":67767,"timestamp":415599573568,"id":20,"parentId":19,"tags":{},"startTime":1779223571820,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":585249,"timestamp":415599647247,"id":65,"parentId":22,"tags":{},"startTime":1779223571894,"traceId":"548b60aada584816"},{"name":"check-page","duration":655426,"timestamp":415599577268,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779223571824,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":614391,"timestamp":415599654475,"id":67,"parentId":26,"tags":{},"startTime":1779223571901,"traceId":"548b60aada584816"},{"name":"check-page","duration":688524,"timestamp":415599580611,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779223571827,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":619310,"timestamp":415599655485,"id":72,"parentId":32,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":693382,"timestamp":415599581485,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779223571828,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":634122,"timestamp":415599654680,"id":68,"parentId":27,"tags":{},"startTime":1779223571901,"traceId":"548b60aada584816"},{"name":"check-page","duration":708168,"timestamp":415599580717,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779223571827,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":634940,"timestamp":415599655687,"id":73,"parentId":33,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":709087,"timestamp":415599581609,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779223571828,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":638551,"timestamp":415599655785,"id":74,"parentId":34,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":712707,"timestamp":415599581717,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779223571828,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":642045,"timestamp":415599655826,"id":75,"parentId":35,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":716100,"timestamp":415599581837,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779223571828,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":648140,"timestamp":415599655882,"id":77,"parentId":37,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":721593,"timestamp":415599582491,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779223571829,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":655436,"timestamp":415599655904,"id":78,"parentId":38,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":728817,"timestamp":415599582614,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779223571829,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":661304,"timestamp":415599655916,"id":79,"parentId":39,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":734555,"timestamp":415599582723,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779223571829,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":667775,"timestamp":415599655932,"id":80,"parentId":40,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":740954,"timestamp":415599582816,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779223571829,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":685298,"timestamp":415599655846,"id":76,"parentId":36,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":758922,"timestamp":415599582297,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779223571829,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":702398,"timestamp":415599647397,"id":66,"parentId":25,"tags":{},"startTime":1779223571894,"traceId":"548b60aada584816"},{"name":"check-page","duration":769409,"timestamp":415599580453,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779223571827,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":698464,"timestamp":415599655949,"id":81,"parentId":42,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":771298,"timestamp":415599583198,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779223571829,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":702174,"timestamp":415599655965,"id":82,"parentId":44,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":774579,"timestamp":415599583621,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779223571830,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":704234,"timestamp":415599655992,"id":84,"parentId":46,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":776434,"timestamp":415599583849,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779223571830,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":708821,"timestamp":415599656029,"id":85,"parentId":47,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":780939,"timestamp":415599583964,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779223571830,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":709204,"timestamp":415599656047,"id":86,"parentId":48,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":781221,"timestamp":415599584089,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779223571830,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":712217,"timestamp":415599655410,"id":71,"parentId":30,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":786587,"timestamp":415599581091,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779223571827,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":713608,"timestamp":415599656059,"id":87,"parentId":49,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":785521,"timestamp":415599584238,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779223571831,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":714791,"timestamp":415599656075,"id":88,"parentId":50,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":758459,"timestamp":415599612449,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779223571859,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":653071,"timestamp":415599722606,"id":90,"parentId":24,"tags":{},"startTime":1779223571969,"traceId":"548b60aada584816"},{"name":"check-page","duration":797781,"timestamp":415599577937,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779223571824,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":645945,"timestamp":415599731229,"id":91,"parentId":41,"tags":{},"startTime":1779223571978,"traceId":"548b60aada584816"},{"name":"check-page","duration":794327,"timestamp":415599582902,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779223571829,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":631268,"timestamp":415599750809,"id":92,"parentId":43,"tags":{},"startTime":1779223571997,"traceId":"548b60aada584816"},{"name":"check-page","duration":798794,"timestamp":415599583332,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779223571830,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":728626,"timestamp":415599655977,"id":83,"parentId":45,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":800901,"timestamp":415599583747,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779223571830,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":632506,"timestamp":415599752287,"id":93,"parentId":31,"tags":{},"startTime":1779223571999,"traceId":"548b60aada584816"},{"name":"check-page","duration":803627,"timestamp":415599581203,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779223571827,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":729699,"timestamp":415599656090,"id":89,"parentId":51,"tags":{},"startTime":1779223571902,"traceId":"548b60aada584816"},{"name":"check-page","duration":773232,"timestamp":415599612623,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779223571859,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":745301,"timestamp":415599646759,"id":64,"parentId":21,"tags":{},"startTime":1779223571893,"traceId":"548b60aada584816"},{"name":"check-page","duration":816437,"timestamp":415599575673,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779223571822,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":571599,"timestamp":415599828137,"id":98,"parentId":55,"tags":{},"startTime":1779223572074,"traceId":"548b60aada584816"},{"name":"check-page","duration":786094,"timestamp":415599613688,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779223571860,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":763261,"timestamp":415599655175,"id":70,"parentId":29,"tags":{},"startTime":1779223571901,"traceId":"548b60aada584816"},{"name":"check-page","duration":837578,"timestamp":415599580934,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779223571827,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":621795,"timestamp":415599821461,"id":94,"parentId":23,"tags":{},"startTime":1779223572068,"traceId":"548b60aada584816"},{"name":"check-page","duration":865623,"timestamp":415599577702,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779223571824,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":623460,"timestamp":415599828290,"id":101,"parentId":59,"tags":{},"startTime":1779223572075,"traceId":"548b60aada584816"},{"name":"check-page","duration":830468,"timestamp":415599621345,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779223571868,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":632974,"timestamp":415599828125,"id":97,"parentId":54,"tags":{},"startTime":1779223572074,"traceId":"548b60aada584816"},{"name":"check-page","duration":847722,"timestamp":415599613465,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779223571860,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":633266,"timestamp":415599828150,"id":99,"parentId":56,"tags":{},"startTime":1779223572074,"traceId":"548b60aada584816"},{"name":"check-page","duration":841309,"timestamp":415599620154,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779223571866,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":633599,"timestamp":415599828039,"id":96,"parentId":53,"tags":{},"startTime":1779223572074,"traceId":"548b60aada584816"},{"name":"check-page","duration":848383,"timestamp":415599613294,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779223571860,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":633528,"timestamp":415599828305,"id":102,"parentId":61,"tags":{},"startTime":1779223572075,"traceId":"548b60aada584816"},{"name":"check-page","duration":821296,"timestamp":415599640574,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779223571887,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":640463,"timestamp":415599821511,"id":95,"parentId":52,"tags":{},"startTime":1779223572068,"traceId":"548b60aada584816"},{"name":"check-page","duration":848956,"timestamp":415599613078,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779223571859,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":810953,"timestamp":415599654782,"id":69,"parentId":28,"tags":{},"startTime":1779223571901,"traceId":"548b60aada584816"},{"name":"check-page","duration":884966,"timestamp":415599580825,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779223571827,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":643926,"timestamp":415599828317,"id":103,"parentId":62,"tags":{},"startTime":1779223572075,"traceId":"548b60aada584816"},{"name":"check-page","duration":831416,"timestamp":415599640871,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779223571887,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":645923,"timestamp":415599828339,"id":105,"parentId":57,"tags":{},"startTime":1779223572075,"traceId":"548b60aada584816"},{"name":"check-page","duration":853839,"timestamp":415599620470,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779223571867,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":637099,"timestamp":415599838467,"id":106,"parentId":60,"tags":{},"startTime":1779223572085,"traceId":"548b60aada584816"},{"name":"check-page","duration":854082,"timestamp":415599621531,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779223571868,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":655794,"timestamp":415599828330,"id":104,"parentId":63,"tags":{},"startTime":1779223572075,"traceId":"548b60aada584816"},{"name":"check-page","duration":843110,"timestamp":415599641064,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779223571887,"traceId":"548b60aada584816"},{"name":"is-page-static","duration":681434,"timestamp":415599828163,"id":100,"parentId":58,"tags":{},"startTime":1779223572074,"traceId":"548b60aada584816"},{"name":"check-page","duration":888532,"timestamp":415599621138,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779223571867,"traceId":"548b60aada584816"},{"name":"static-check","duration":937314,"timestamp":415599572407,"id":19,"parentId":1,"tags":{},"startTime":1779223571819,"traceId":"548b60aada584816"}]
2
+ [{"name":"write-routes-manifest","duration":628,"timestamp":415600520945,"id":108,"parentId":1,"tags":{},"startTime":1779223572767,"traceId":"548b60aada584816"},{"name":"load-dotenv","duration":78,"timestamp":415600535129,"id":111,"parentId":110,"tags":{},"startTime":1779223572781,"traceId":"548b60aada584816"},{"name":"run-export-path-map","duration":827,"timestamp":415600538483,"id":112,"parentId":110,"tags":{},"startTime":1779223572785,"traceId":"548b60aada584816"},{"name":"next-export","duration":621134,"timestamp":415600533768,"id":110,"parentId":1,"tags":{},"startTime":1779223572780,"traceId":"548b60aada584816"},{"name":"move-exported-app-not-found-","duration":608,"timestamp":415601159282,"id":113,"parentId":109,"tags":{},"startTime":1779223573406,"traceId":"548b60aada584816"},{"name":"move-exported-app-global-error-","duration":433,"timestamp":415601160055,"id":114,"parentId":109,"tags":{},"startTime":1779223573406,"traceId":"548b60aada584816"},{"name":"static-generation","duration":635768,"timestamp":415600526993,"id":109,"parentId":1,"tags":{},"startTime":1779223572773,"traceId":"548b60aada584816"},{"name":"write-routes-manifest","duration":436,"timestamp":415601163144,"id":115,"parentId":1,"tags":{},"startTime":1779223573409,"traceId":"548b60aada584816"},{"name":"print-tree-view","duration":4452,"timestamp":415601180615,"id":116,"parentId":1,"tags":{},"startTime":1779223573427,"traceId":"548b60aada584816"},{"name":"write-route-bundle-stats","duration":16179,"timestamp":415601185098,"id":117,"parentId":1,"tags":{},"startTime":1779223573431,"traceId":"548b60aada584816"},{"name":"telemetry-flush","duration":14016,"timestamp":415601201314,"id":118,"parentId":1,"tags":{},"startTime":1779223573448,"traceId":"548b60aada584816"},{"name":"next-build","duration":18302027,"timestamp":415582913353,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779223555160,"traceId":"548b60aada584816"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":7022470,"timestamp":414930725829,"id":14,"parentId":1,"tags":{},"startTime":1779222902972,"traceId":"31b3db6ebb1b96cb"},{"name":"turbopack-build-events","duration":75,"timestamp":414931045901,"id":15,"parentId":1,"tags":{},"startTime":1779222903292,"traceId":"31b3db6ebb1b96cb"},{"name":"run-typescript","duration":10740067,"timestamp":414937760858,"id":16,"parentId":1,"tags":{},"startTime":1779222910007,"traceId":"31b3db6ebb1b96cb"},{"name":"static-check","duration":913433,"timestamp":414948710139,"id":19,"parentId":1,"tags":{},"startTime":1779222920956,"traceId":"31b3db6ebb1b96cb"},{"name":"static-generation","duration":713411,"timestamp":414949637259,"id":109,"parentId":1,"tags":{},"startTime":1779222921884,"traceId":"31b3db6ebb1b96cb"},{"name":"telemetry-flush","duration":20141,"timestamp":414950384733,"id":118,"parentId":1,"tags":{},"startTime":1779222922631,"traceId":"31b3db6ebb1b96cb"},{"name":"next-build","duration":19953693,"timestamp":414930451211,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779222902697,"traceId":"31b3db6ebb1b96cb"}]
1
+ [{"name":"run-turbopack","duration":6131959,"timestamp":415583179576,"id":14,"parentId":1,"tags":{},"startTime":1779223555426,"traceId":"548b60aada584816"},{"name":"turbopack-build-events","duration":104,"timestamp":415583499394,"id":15,"parentId":1,"tags":{},"startTime":1779223555746,"traceId":"548b60aada584816"},{"name":"run-typescript","duration":9956006,"timestamp":415589324435,"id":16,"parentId":1,"tags":{},"startTime":1779223561571,"traceId":"548b60aada584816"},{"name":"static-check","duration":937314,"timestamp":415599572407,"id":19,"parentId":1,"tags":{},"startTime":1779223571819,"traceId":"548b60aada584816"},{"name":"static-generation","duration":635768,"timestamp":415600526993,"id":109,"parentId":1,"tags":{},"startTime":1779223572773,"traceId":"548b60aada584816"},{"name":"telemetry-flush","duration":14016,"timestamp":415601201314,"id":118,"parentId":1,"tags":{},"startTime":1779223573448,"traceId":"548b60aada584816"},{"name":"next-build","duration":18302027,"timestamp":415582913353,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779223555160,"traceId":"548b60aada584816"}]
@@ -4609,6 +4609,17 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
4609
4609
  parts.push(`${flows} active link${flows === 1 ? '' : 's'}`);
4610
4610
  return `Agent network topology — ${parts.join(' · ')}. Tab to navigate nodes, double-click canvas to reset view.`;
4611
4611
  })()}
4612
+ /* Round 734 / Loop — aria-describedby points at the <desc>
4613
+ child added below. The existing aria-label (R7/R469) is
4614
+ DYNAMIC — encodes live counts. The <desc> is STABLE —
4615
+ encodes the structural vocabulary of the canvas. Together
4616
+ they form the WAI-ARIA name + description pair: SR
4617
+ announces the accessible name (label) first, then
4618
+ optionally reads the description on follow-up. Distinct
4619
+ a11y mechanism from R730-R733's <title> a11y children
4620
+ (which are accessible NAMES on individual decorative
4621
+ elements; this is a DESCRIPTION on the root canvas). */
4622
+ aria-describedby="anet-topo-canvas-desc"
4612
4623
  data-topo-canvas-aria
4613
4624
  /* Round 469 / Loop — fleet-split numeric attrs on the root
4614
4625
  svg. The aria-label already encodes online/working/offline
@@ -5181,6 +5192,10 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5181
5192
  The R733 test handles this by relaxing the canonical-format
5182
5193
  regex to `[^·]+( · [^·]+)+` (≥2 parts). */
5183
5194
  { surface: "hub-highlight disc", selector: "[data-topo-hub-highlight]", accessible_name: "hub · network center · idle indicator" },
5195
+ /* R735 — canvas scan beam ambient animation gains a11y <title>.
5196
+ First non-static (animated) titled surface; 3-part canonical
5197
+ form with cadence as state context. */
5198
+ { surface: "canvas scan beam", selector: "[data-topo-canvas-scan-beam]", accessible_name: "canvas scan beam · ambient sweep · 30s cycle" },
5184
5199
  ])}
5185
5200
  data-topo-pinned-aspect={(() => {
5186
5201
  const aspects: string[] = [];
@@ -5284,6 +5299,16 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5284
5299
  }}
5285
5300
  style={{ cursor: isPanning ? 'grabbing' : 'grab', touchAction: 'none' }}
5286
5301
  >
5302
+ {/* Round 734 / Loop — SVG <desc> stable structural description
5303
+ targeted by aria-describedby on the root <svg>. Complements
5304
+ the dynamic aria-label (R7/R469 live-state counts) with
5305
+ stable structural vocabulary. WAI-ARIA name + description
5306
+ pair: SR reads aria-label first (current state), then
5307
+ optionally reads this desc on follow-up for structural
5308
+ context. Distinct mechanism from R730-R733 SVG <title>
5309
+ children (those are NAMES on decorative elements; this is
5310
+ a DESCRIPTION on the canvas root). */}
5311
+ <desc id="anet-topo-canvas-desc">{'Live agent network topology canvas. Hub at center surrounded by per-agent node circles arranged in a ring (or grid prefix-cluster layout). Flow links between nodes animate during inter-agent activity. Recent-signal panel top-left, legend top-right, chrome strip bottom-right. Tab to focus nodes, double-click empty canvas to reset zoom and pan, l to toggle ring/grid layout.'}</desc>
5287
5312
  <defs>
5288
5313
  <linearGradient id="topo-panel" x1="0" x2="1" y1="0" y2="1">
5289
5314
  <stop offset="0%" stopColor={pal.panelStops[0]} />
@@ -5366,6 +5391,42 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5366
5391
  {/* panel backdrop stays fixed — panning never reveals empty canvas */}
5367
5392
  <rect width="1000" height="680" fill="url(#topo-panel)" />
5368
5393
 
5394
+ {/* Round 735 / Loop — SVG scan beam: ambient living-system
5395
+ signal sweeping the canvas every 30 s. Pivot round: first
5396
+ new VISIBLE animation outside the breath / a11y / meta-doc
5397
+ threads since R720. Pure paint:
5398
+ - 1 px tall horizontal cyan stripe
5399
+ - y animates -2 → 680 over 30 s (full canvas sweep)
5400
+ - opacity 0 → 0.08 → 0.08 → 0 at keyTimes 0/0.05/0.95/1
5401
+ - pointer-events: none, no business logic touch
5402
+ Renders directly after the panel backdrop and BEFORE all
5403
+ nodes/panels — sits in the background layer; nodes paint
5404
+ over it. The overlap-test selectors (g[data-node],
5405
+ g[data-group], specific panel translate prefixes) don't
5406
+ match this <rect>, so the zero-overlap invariant stays
5407
+ green by selector exclusion.
5408
+ Gated by !reducedMotion at JSX level — when the user
5409
+ prefers reduced motion the <animate> children don't
5410
+ mount; opacity stays at the static "0" baseline, beam
5411
+ remains invisible. data-topo-canvas-scan-beam attr
5412
+ exposes the mount state for tests. */}
5413
+ <rect
5414
+ x="0" y="-2" width="1000" height="1"
5415
+ fill={pal.legendAccent}
5416
+ opacity="0"
5417
+ data-topo-canvas-scan-beam
5418
+ data-topo-canvas-scan-beam-active={!reducedMotion ? 'true' : 'false'}
5419
+ style={{ pointerEvents: 'none' }}
5420
+ >
5421
+ {!reducedMotion && (
5422
+ <animate attributeName="y" values="-2;680;-2" dur="30s" repeatCount="indefinite" />
5423
+ )}
5424
+ {!reducedMotion && (
5425
+ <animate attributeName="opacity" values="0;0.08;0.08;0" keyTimes="0;0.05;0.95;1" dur="30s" repeatCount="indefinite" />
5426
+ )}
5427
+ <title>canvas scan beam · ambient sweep · 30s cycle</title>
5428
+ </rect>
5429
+
5369
5430
  {/* Round 103 (issue #81): everything inside this <g> zooms + pans
5370
5431
  together. transform order = translate then scale.
5371
5432
  Round 168 / Loop: smoothView arms a one-shot transition on
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.247",
3
+ "version": "0.5.3-preview.249",
4
4
  "description": "Agent Network Dashboard \u2014 Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -108,7 +108,7 @@ const validShape = Array.isArray(catalog) && catalog.every(e =>
108
108
  const canonicalFormat = (s) => typeof s === 'string' && /^[^·]+( · [^·]+)+$/.test(s);
109
109
  const allCanonical = Array.isArray(catalog) && catalog.every(e => canonicalFormat(e.accessible_name));
110
110
 
111
- const expectedSurfaces = ['canvas-corner crescent', 'hub-highlight disc', 'legend panel title', 'recent panel title', 'title-block brand logo', 'watermark text'];
111
+ const expectedSurfaces = ['canvas scan beam', 'canvas-corner crescent', 'hub-highlight disc', 'legend panel title', 'recent panel title', 'title-block brand logo', 'watermark text'];
112
112
  const actualSurfaces = Array.isArray(catalog) ? catalog.map(e => e.surface).sort() : [];
113
113
  const surfacesMatch = JSON.stringify(actualSurfaces) === JSON.stringify(expectedSurfaces);
114
114
 
@@ -118,7 +118,7 @@ const results = {
118
118
  attr_present: !!result.catalogAttr,
119
119
  json_parses: catalog !== null,
120
120
  is_array: Array.isArray(catalog),
121
- has_6_entries: Array.isArray(catalog) && catalog.length === 6,
121
+ has_7_entries: Array.isArray(catalog) && catalog.length === 7,
122
122
  shape_valid: validShape,
123
123
  all_accessible_names_canonical: allCanonical,
124
124
  surfaces_match_expected_set: surfacesMatch,
@@ -0,0 +1,87 @@
1
+ /* Round 734 — SVG <desc> stable structural description on root canvas
2
+ * + aria-describedby linkage. Different a11y mechanism from R730-R733:
3
+ * R730-R733 add <title> children as accessible NAMES on individual
4
+ * decorative elements (watermark, brand logo, hub, etc.)
5
+ * R734 adds <desc> as a stable DESCRIPTION on the canvas root,
6
+ * complementing the existing dynamic aria-label (R7/R469).
7
+ *
8
+ * WAI-ARIA name + description pair: SR announces the accessible name
9
+ * (label) first, then optionally reads the description on follow-up.
10
+ *
11
+ * Assertions:
12
+ * - Root <svg> has aria-describedby="anet-topo-canvas-desc"
13
+ * - <desc id="anet-topo-canvas-desc"> exists as a child of root <svg>
14
+ * - desc content mentions key structural surfaces: hub, ring/grid,
15
+ * recent-signal, legend, chrome strip
16
+ * - desc content mentions key interactions: Tab, double-click, l-key
17
+ * - aria-label (R7/R469 dynamic) still present and not replaced
18
+ * - aria-roledescription (R-original) still present
19
+ */
20
+ import { chromium } from 'playwright';
21
+ import { readFileSync } from 'node:fs';
22
+
23
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
24
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
25
+
26
+ const browser = await chromium.launch({ headless: true });
27
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
28
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
29
+ await ctx.addInitScript(() => {
30
+ try {
31
+ localStorage.setItem('anet-theme', 'cyber');
32
+ localStorage.setItem('anet-topo-layout', 'ring');
33
+ sessionStorage.setItem('anet_v3_auth', '1');
34
+ } catch {}
35
+ });
36
+ await ctx.route('**/api/hub/status*', async (route) => {
37
+ const r = await route.fetch();
38
+ const b = await r.json();
39
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
40
+ const mk = (alias) => ({
41
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
42
+ network_id: nid, project_dir: null,
43
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
44
+ });
45
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
46
+ });
47
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
48
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
49
+ const page = await ctx.newPage();
50
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
51
+ await page.waitForSelector('[data-topo-canvas-aria]', { timeout: 15000, state: 'attached' });
52
+ await page.waitForTimeout(300);
53
+
54
+ const state = await page.evaluate(() => {
55
+ const svg = document.querySelector('[data-topo-canvas-aria]');
56
+ const desc = document.getElementById('anet-topo-canvas-desc');
57
+ return {
58
+ aria_describedby: svg?.getAttribute('aria-describedby') ?? null,
59
+ aria_label: svg?.getAttribute('aria-label') ?? null,
60
+ aria_roledescr: svg?.getAttribute('aria-roledescription') ?? null,
61
+ desc_present: !!desc,
62
+ desc_text: desc?.textContent ?? null,
63
+ desc_is_child_of_svg: desc?.parentElement === svg,
64
+ };
65
+ });
66
+
67
+ await browser.close();
68
+
69
+ const text = state.desc_text ?? '';
70
+ const textLower = text.toLowerCase();
71
+ const mentionsStructural = ['hub', 'ring', 'grid', 'recent-signal', 'legend', 'chrome strip'].every(k => textLower.includes(k));
72
+ const mentionsInteractions = ['Tab', 'double-click', 'l '].every(k => text.includes(k));
73
+
74
+ const results = {
75
+ aria_describedby_correct: state.aria_describedby === 'anet-topo-canvas-desc',
76
+ desc_element_present: state.desc_present === true,
77
+ desc_is_direct_child: state.desc_is_child_of_svg === true,
78
+ desc_mentions_structural: mentionsStructural,
79
+ desc_mentions_interactions: mentionsInteractions,
80
+ aria_label_preserved: typeof state.aria_label === 'string' && state.aria_label.includes('Agent network topology'),
81
+ aria_roledescription_kept: state.aria_roledescr === 'agent network topology',
82
+ };
83
+ const ok = Object.values(results).every(Boolean);
84
+ console.log(`${ok ? '✅' : '❌'} R734 SVG <desc> + aria-describedby on root canvas (WAI-ARIA name + description pair):`,
85
+ JSON.stringify(results, null, 2),
86
+ `\n state: ${JSON.stringify(state)}`);
87
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,109 @@
1
+ /* Round 735 — SVG scan beam: ambient living-system sweep across the
2
+ * canvas every 30 s. Pivot round: first genuinely new VISIBLE
3
+ * animation outside the breath / a11y / meta-doc threads since R720.
4
+ *
5
+ * Spec:
6
+ * - 1 px tall horizontal cyan stripe (pal.legendAccent)
7
+ * - y animates -2 → 680 → -2 over 30 s repeatCount=indefinite
8
+ * - opacity animates 0 → 0.08 → 0.08 → 0 at keyTimes 0/0.05/0.95/1
9
+ * - pointer-events: none, no business logic
10
+ * - rendered AFTER panel backdrop, BEFORE all other canvas content
11
+ * (background layer; nodes paint over it)
12
+ * - gated by !reducedMotion at JSX level
13
+ * - SVG <title> child for a11y ("canvas scan beam · ambient sweep · 30s cycle")
14
+ *
15
+ * Assertions:
16
+ * - <rect data-topo-canvas-scan-beam> exists
17
+ * - Two <animate> children: attributeName="y" and attributeName="opacity"
18
+ * - y animate has values "-2;680;-2" and dur "30s"
19
+ * - opacity animate has values "0;0.08;0.08;0" and dur "30s"
20
+ * - <title> child has the expected accessible name
21
+ * - data-topo-canvas-scan-beam-active="true" (reducedMotion off in test)
22
+ * - Beam is rendered BEFORE nodes (background-layer z-order)
23
+ * - R732 a11y-titles catalog has the scan-beam entry (7 total)
24
+ * - Overlap-test selectors don't match the rect (no data-node /
25
+ * data-group, no matching translate prefix) — verified indirectly
26
+ * by overlap test still passing
27
+ */
28
+ import { chromium } from 'playwright';
29
+ import { readFileSync } from 'node:fs';
30
+
31
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
32
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
33
+
34
+ const browser = await chromium.launch({ headless: true });
35
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
36
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
37
+ await ctx.addInitScript(() => {
38
+ try {
39
+ localStorage.setItem('anet-theme', 'cyber');
40
+ localStorage.setItem('anet-topo-layout', 'ring');
41
+ sessionStorage.setItem('anet_v3_auth', '1');
42
+ } catch {}
43
+ });
44
+ await ctx.route('**/api/hub/status*', async (route) => {
45
+ const r = await route.fetch();
46
+ const b = await r.json();
47
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
48
+ const mk = (alias) => ({
49
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
50
+ network_id: nid, project_dir: null,
51
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
52
+ });
53
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
54
+ });
55
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
56
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
57
+ const page = await ctx.newPage();
58
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
59
+ await page.waitForSelector('[data-topo-canvas-scan-beam]', { timeout: 15000, state: 'attached' });
60
+ await page.waitForTimeout(300);
61
+
62
+ const state = await page.evaluate(() => {
63
+ const beam = document.querySelector('[data-topo-canvas-scan-beam]');
64
+ if (!beam) return null;
65
+ const yAnim = beam.querySelector('animate[attributeName="y"]');
66
+ const opAnim = beam.querySelector('animate[attributeName="opacity"]');
67
+ const titleEl = beam.querySelector(':scope > title');
68
+ const svg = document.querySelector('[data-topo-canvas-aria]');
69
+ const firstNode = svg?.querySelector('g[data-node]');
70
+ const beamBeforeNodes = beam && firstNode
71
+ ? (beam.compareDocumentPosition(firstNode) & Node.DOCUMENT_POSITION_FOLLOWING) !== 0
72
+ : null;
73
+ const catalogAttr = svg?.getAttribute('data-topo-a11y-titles') ?? null;
74
+ return {
75
+ beam_present: !!beam,
76
+ beam_active_attr: beam?.getAttribute('data-topo-canvas-scan-beam-active') ?? null,
77
+ beam_width: beam?.getAttribute('width') ?? null,
78
+ beam_height: beam?.getAttribute('height') ?? null,
79
+ y_anim_present: !!yAnim,
80
+ y_anim_values: yAnim?.getAttribute('values') ?? null,
81
+ y_anim_dur: yAnim?.getAttribute('dur') ?? null,
82
+ y_anim_repeat: yAnim?.getAttribute('repeatCount') ?? null,
83
+ op_anim_present: !!opAnim,
84
+ op_anim_values: opAnim?.getAttribute('values') ?? null,
85
+ op_anim_dur: opAnim?.getAttribute('dur') ?? null,
86
+ op_anim_keytimes: opAnim?.getAttribute('keyTimes') ?? null,
87
+ title_text: titleEl?.textContent ?? null,
88
+ beam_before_nodes: beamBeforeNodes,
89
+ catalog_has_entry: typeof catalogAttr === 'string' && catalogAttr.includes('canvas scan beam'),
90
+ };
91
+ });
92
+
93
+ await browser.close();
94
+
95
+ const results = {
96
+ beam_rect_present: state?.beam_present === true,
97
+ beam_active_true: state?.beam_active_attr === 'true',
98
+ beam_full_width_1px: state?.beam_width === '1000' && state?.beam_height === '1',
99
+ y_anim_full_sweep: state?.y_anim_present === true && state?.y_anim_values === '-2;680;-2' && state?.y_anim_dur === '30s' && state?.y_anim_repeat === 'indefinite',
100
+ opacity_anim_ramped: state?.op_anim_present === true && state?.op_anim_values === '0;0.08;0.08;0' && state?.op_anim_dur === '30s' && state?.op_anim_keytimes === '0;0.05;0.95;1',
101
+ a11y_title_present: state?.title_text === 'canvas scan beam · ambient sweep · 30s cycle',
102
+ beam_in_background_layer: state?.beam_before_nodes === true,
103
+ r732_catalog_includes_beam: state?.catalog_has_entry === true,
104
+ };
105
+ const ok = Object.values(results).every(Boolean);
106
+ console.log(`${ok ? '✅' : '❌'} R735 SVG canvas scan beam (ambient 30s sweep, first non-introspection visible animation since R720):`,
107
+ JSON.stringify(results, null, 2),
108
+ `\n state: ${JSON.stringify(state)}`);
109
+ process.exit(ok ? 0 : 1);