@sleep2agi/agent-network-dashboard 0.5.3-preview.246 → 0.5.3-preview.248

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 (145) 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 +2 -2
  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/{0d7szy1lomzn2.js → 0adnbw9pxq48g.js} +1 -1
  132. package/.next/static/chunks/0t0t4r1u_qyma.js +4 -0
  133. package/.next/static/chunks/{0u-0t5fzlf2-2.js → 13vxyg9~ykurt.js} +1 -1
  134. package/.next/static/chunks/{1352xrbdg9w3k.js → 14lnrrg05z73_.js} +1 -1
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +38 -0
  138. package/package.json +1 -1
  139. package/scripts/topo-a11y-titles-catalog-test.mjs +6 -3
  140. package/scripts/topo-canvas-desc-a11y-test.mjs +87 -0
  141. package/scripts/topo-hub-a11y-title-test.mjs +95 -0
  142. package/.next/static/chunks/09lus9cds1wwz.js +0 -4
  143. /package/.next/static/{k0qtZQ0AG3AV37iVoujsy → H3NkUl5CCgWLQJefNFcti}/_buildManifest.js +0 -0
  144. /package/.next/static/{k0qtZQ0AG3AV37iVoujsy → H3NkUl5CCgWLQJefNFcti}/_clientMiddlewareManifest.js +0 -0
  145. /package/.next/static/{k0qtZQ0AG3AV37iVoujsy → H3NkUl5CCgWLQJefNFcti}/_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.245"],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.247"],70286)}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":439,"timestamp":414598925849,"id":4,"parentId":1,"tags":{},"startTime":1779222571172,"traceId":"5ff6924e11ae954c"},{"name":"load-custom-routes","duration":718,"timestamp":414598926520,"id":5,"parentId":1,"tags":{},"startTime":1779222571173,"traceId":"5ff6924e11ae954c"},{"name":"create-dist-dir","duration":1100,"timestamp":414598927301,"id":6,"parentId":1,"tags":{},"startTime":1779222571174,"traceId":"5ff6924e11ae954c"},{"name":"clean","duration":35297,"timestamp":414598929363,"id":7,"parentId":1,"tags":{},"startTime":1779222571176,"traceId":"5ff6924e11ae954c"},{"name":"discover-routes","duration":10333,"timestamp":414599053798,"id":8,"parentId":1,"tags":{},"startTime":1779222571300,"traceId":"5ff6924e11ae954c"},{"name":"create-root-mapping","duration":131,"timestamp":414599064203,"id":9,"parentId":1,"tags":{},"startTime":1779222571310,"traceId":"5ff6924e11ae954c"},{"name":"generate-route-types","duration":44051,"timestamp":414599067138,"id":10,"parentId":1,"tags":{},"startTime":1779222571313,"traceId":"5ff6924e11ae954c"},{"name":"public-dir-conflict-check","duration":165,"timestamp":414599111336,"id":11,"parentId":1,"tags":{},"startTime":1779222571358,"traceId":"5ff6924e11ae954c"},{"name":"generate-routes-manifest","duration":7330,"timestamp":414599111725,"id":12,"parentId":1,"tags":{},"startTime":1779222571358,"traceId":"5ff6924e11ae954c"},{"name":"run-turbopack","duration":7247298,"timestamp":414599136146,"id":14,"parentId":1,"tags":{},"startTime":1779222571382,"traceId":"5ff6924e11ae954c"},{"name":"turbopack-build-events","duration":105,"timestamp":414599446120,"id":15,"parentId":1,"tags":{},"startTime":1779222571692,"traceId":"5ff6924e11ae954c"},{"name":"run-typescript","duration":10776744,"timestamp":414606398091,"id":16,"parentId":1,"tags":{},"startTime":1779222578644,"traceId":"5ff6924e11ae954c"},{"name":"generate-required-server-files","duration":3267,"timestamp":414617176286,"id":18,"parentId":1,"tags":{},"startTime":1779222589423,"traceId":"5ff6924e11ae954c"},{"name":"check-static-error-page","duration":16400,"timestamp":414617395788,"id":20,"parentId":19,"tags":{},"startTime":1779222589642,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":473923,"timestamp":414617417251,"id":65,"parentId":22,"tags":{},"startTime":1779222589664,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":492275,"timestamp":414617399095,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779222589645,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":590193,"timestamp":414617420115,"id":71,"parentId":30,"tags":{},"startTime":1779222589666,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":607362,"timestamp":414617403060,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779222589649,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":628215,"timestamp":414617420200,"id":72,"parentId":32,"tags":{},"startTime":1779222589666,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":645000,"timestamp":414617403501,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779222589650,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":644140,"timestamp":414617417710,"id":69,"parentId":28,"tags":{},"startTime":1779222589664,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":659368,"timestamp":414617402764,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779222589649,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":648693,"timestamp":414617417614,"id":68,"parentId":27,"tags":{},"startTime":1779222589664,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":663799,"timestamp":414617402618,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779222589649,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":648221,"timestamp":414617420468,"id":74,"parentId":34,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":665195,"timestamp":414617403765,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779222589650,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":650355,"timestamp":414617420389,"id":73,"parentId":33,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":667351,"timestamp":414617403645,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779222589650,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":654077,"timestamp":414617417403,"id":66,"parentId":25,"tags":{},"startTime":1779222589664,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":669278,"timestamp":414617402256,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779222589649,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":654112,"timestamp":414617420493,"id":75,"parentId":35,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":670777,"timestamp":414617403881,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779222589650,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":654922,"timestamp":414617420541,"id":77,"parentId":37,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":670944,"timestamp":414617404573,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779222589651,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":659646,"timestamp":414617420584,"id":80,"parentId":40,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":675384,"timestamp":414617404906,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779222589651,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":673315,"timestamp":414617420596,"id":81,"parentId":42,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":688453,"timestamp":414617405540,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779222589652,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":682502,"timestamp":414617420605,"id":82,"parentId":44,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":697044,"timestamp":414617406146,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779222589652,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":684027,"timestamp":414617420617,"id":83,"parentId":45,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":698395,"timestamp":414617406303,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779222589653,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":691534,"timestamp":414617417970,"id":70,"parentId":29,"tags":{},"startTime":1779222589664,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":706664,"timestamp":414617402897,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779222589649,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":692825,"timestamp":414617420629,"id":84,"parentId":46,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":707068,"timestamp":414617406440,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779222589653,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":694320,"timestamp":414617420641,"id":85,"parentId":47,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":708481,"timestamp":414617406564,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779222589653,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":698967,"timestamp":414617420558,"id":78,"parentId":38,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":714871,"timestamp":414617404705,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779222589651,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":708508,"timestamp":414617420651,"id":86,"parentId":48,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":720837,"timestamp":414617408375,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779222589655,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":715140,"timestamp":414617420567,"id":79,"parentId":39,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":730959,"timestamp":414617404808,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779222589651,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":719096,"timestamp":414617416829,"id":64,"parentId":21,"tags":{},"startTime":1779222589663,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":738494,"timestamp":414617397459,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779222589644,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":732091,"timestamp":414617420676,"id":88,"parentId":50,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":744181,"timestamp":414617408664,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779222589655,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":732805,"timestamp":414617420513,"id":76,"parentId":36,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":748995,"timestamp":414617404393,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779222589651,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":731348,"timestamp":414617424116,"id":90,"parentId":24,"tags":{},"startTime":1779222589670,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":755868,"timestamp":414617399645,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779222589646,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":737744,"timestamp":414617420685,"id":89,"parentId":51,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":749724,"timestamp":414617408755,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779222589655,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":740638,"timestamp":414617420664,"id":87,"parentId":49,"tags":{},"startTime":1779222589667,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":752785,"timestamp":414617408563,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779222589655,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":743377,"timestamp":414617425997,"id":92,"parentId":41,"tags":{},"startTime":1779222589672,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":764196,"timestamp":414617405238,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779222589652,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":748655,"timestamp":414617427154,"id":93,"parentId":43,"tags":{},"startTime":1779222589673,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":770172,"timestamp":414617405689,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779222589652,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":794437,"timestamp":414617429140,"id":95,"parentId":52,"tags":{},"startTime":1779222589675,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":814488,"timestamp":414617409174,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779222589655,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":802445,"timestamp":414617425231,"id":91,"parentId":31,"tags":{},"startTime":1779222589672,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":824538,"timestamp":414617403204,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779222589649,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":807891,"timestamp":414617429187,"id":99,"parentId":56,"tags":{},"startTime":1779222589675,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":827242,"timestamp":414617409915,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779222589656,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":808260,"timestamp":414617429112,"id":94,"parentId":23,"tags":{},"startTime":1779222589675,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":838024,"timestamp":414617399391,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779222589646,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":808366,"timestamp":414617429199,"id":100,"parentId":58,"tags":{},"startTime":1779222589675,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":826842,"timestamp":414617410777,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779222589657,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":808773,"timestamp":414617429175,"id":98,"parentId":55,"tags":{},"startTime":1779222589675,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":828273,"timestamp":414617409713,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779222589656,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":814263,"timestamp":414617429155,"id":96,"parentId":53,"tags":{},"startTime":1779222589675,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":834140,"timestamp":414617409334,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779222589656,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":827192,"timestamp":414617429340,"id":101,"parentId":59,"tags":{},"startTime":1779222589676,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":845611,"timestamp":414617410984,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779222589657,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":827304,"timestamp":414617429396,"id":104,"parentId":63,"tags":{},"startTime":1779222589676,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":844823,"timestamp":414617411922,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779222589658,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":827446,"timestamp":414617429375,"id":102,"parentId":61,"tags":{},"startTime":1779222589676,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":845218,"timestamp":414617411628,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779222589658,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":827517,"timestamp":414617429388,"id":103,"parentId":62,"tags":{},"startTime":1779222589676,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":845147,"timestamp":414617411779,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779222589658,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":819570,"timestamp":414617437413,"id":105,"parentId":60,"tags":{},"startTime":1779222589684,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":845855,"timestamp":414617411185,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779222589657,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":839876,"timestamp":414617417511,"id":67,"parentId":26,"tags":{},"startTime":1779222589664,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":854976,"timestamp":414617402456,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779222589649,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":814506,"timestamp":414617450538,"id":106,"parentId":57,"tags":{},"startTime":1779222589697,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":854905,"timestamp":414617410188,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779222589656,"traceId":"5ff6924e11ae954c"},{"name":"is-page-static","duration":840774,"timestamp":414617429163,"id":97,"parentId":54,"tags":{},"startTime":1779222589675,"traceId":"5ff6924e11ae954c"},{"name":"check-page","duration":860478,"timestamp":414617409507,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779222589656,"traceId":"5ff6924e11ae954c"},{"name":"static-check","duration":875418,"timestamp":414617394629,"id":19,"parentId":1,"tags":{},"startTime":1779222589641,"traceId":"5ff6924e11ae954c"}]
2
- [{"name":"write-routes-manifest","duration":399,"timestamp":414618282320,"id":108,"parentId":1,"tags":{},"startTime":1779222590529,"traceId":"5ff6924e11ae954c"},{"name":"load-dotenv","duration":51,"timestamp":414618294282,"id":111,"parentId":110,"tags":{},"startTime":1779222590541,"traceId":"5ff6924e11ae954c"},{"name":"run-export-path-map","duration":748,"timestamp":414618297545,"id":112,"parentId":110,"tags":{},"startTime":1779222590544,"traceId":"5ff6924e11ae954c"},{"name":"next-export","duration":669484,"timestamp":414618292924,"id":110,"parentId":1,"tags":{},"startTime":1779222590539,"traceId":"5ff6924e11ae954c"},{"name":"move-exported-app-not-found-","duration":583,"timestamp":414618966407,"id":113,"parentId":109,"tags":{},"startTime":1779222591213,"traceId":"5ff6924e11ae954c"},{"name":"move-exported-app-global-error-","duration":453,"timestamp":414618967148,"id":114,"parentId":109,"tags":{},"startTime":1779222591213,"traceId":"5ff6924e11ae954c"},{"name":"static-generation","duration":682955,"timestamp":414618286742,"id":109,"parentId":1,"tags":{},"startTime":1779222590533,"traceId":"5ff6924e11ae954c"},{"name":"write-routes-manifest","duration":495,"timestamp":414618969928,"id":115,"parentId":1,"tags":{},"startTime":1779222591216,"traceId":"5ff6924e11ae954c"},{"name":"print-tree-view","duration":4851,"timestamp":414618987897,"id":116,"parentId":1,"tags":{},"startTime":1779222591234,"traceId":"5ff6924e11ae954c"},{"name":"write-route-bundle-stats","duration":19104,"timestamp":414618992793,"id":117,"parentId":1,"tags":{},"startTime":1779222591239,"traceId":"5ff6924e11ae954c"},{"name":"telemetry-flush","duration":16426,"timestamp":414619011943,"id":118,"parentId":1,"tags":{},"startTime":1779222591258,"traceId":"5ff6924e11ae954c"},{"name":"next-build","duration":20170154,"timestamp":414598858259,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779222571105,"traceId":"5ff6924e11ae954c"}]
1
+ [{"name":"generate-buildid","duration":344,"timestamp":415249569329,"id":4,"parentId":1,"tags":{},"startTime":1779223221816,"traceId":"a812cc422b85a022"},{"name":"load-custom-routes","duration":682,"timestamp":415249569869,"id":5,"parentId":1,"tags":{},"startTime":1779223221816,"traceId":"a812cc422b85a022"},{"name":"create-dist-dir","duration":828,"timestamp":415249570599,"id":6,"parentId":1,"tags":{},"startTime":1779223221817,"traceId":"a812cc422b85a022"},{"name":"clean","duration":33373,"timestamp":415249572237,"id":7,"parentId":1,"tags":{},"startTime":1779223221819,"traceId":"a812cc422b85a022"},{"name":"discover-routes","duration":32493,"timestamp":415249695922,"id":8,"parentId":1,"tags":{},"startTime":1779223221942,"traceId":"a812cc422b85a022"},{"name":"create-root-mapping","duration":122,"timestamp":415249728491,"id":9,"parentId":1,"tags":{},"startTime":1779223221975,"traceId":"a812cc422b85a022"},{"name":"generate-route-types","duration":26214,"timestamp":415249731835,"id":10,"parentId":1,"tags":{},"startTime":1779223221978,"traceId":"a812cc422b85a022"},{"name":"public-dir-conflict-check","duration":108,"timestamp":415249758156,"id":11,"parentId":1,"tags":{},"startTime":1779223222004,"traceId":"a812cc422b85a022"},{"name":"generate-routes-manifest","duration":4559,"timestamp":415249758406,"id":12,"parentId":1,"tags":{},"startTime":1779223222005,"traceId":"a812cc422b85a022"},{"name":"run-turbopack","duration":6590231,"timestamp":415249768093,"id":14,"parentId":1,"tags":{},"startTime":1779223222014,"traceId":"a812cc422b85a022"},{"name":"turbopack-build-events","duration":81,"timestamp":415250095746,"id":15,"parentId":1,"tags":{},"startTime":1779223222342,"traceId":"a812cc422b85a022"},{"name":"run-typescript","duration":10224688,"timestamp":415256381728,"id":16,"parentId":1,"tags":{},"startTime":1779223228628,"traceId":"a812cc422b85a022"},{"name":"generate-required-server-files","duration":2507,"timestamp":415266607767,"id":18,"parentId":1,"tags":{},"startTime":1779223238854,"traceId":"a812cc422b85a022"},{"name":"check-static-error-page","duration":13577,"timestamp":415266814331,"id":20,"parentId":19,"tags":{},"startTime":1779223239061,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":524494,"timestamp":415266832068,"id":65,"parentId":22,"tags":{},"startTime":1779223239078,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":539367,"timestamp":415266817364,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779223239064,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":561458,"timestamp":415266832577,"id":69,"parentId":28,"tags":{},"startTime":1779223239079,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":573546,"timestamp":415266820608,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779223239067,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":568265,"timestamp":415266833066,"id":72,"parentId":32,"tags":{},"startTime":1779223239079,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":580322,"timestamp":415266821111,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779223239067,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":593847,"timestamp":415266832335,"id":67,"parentId":26,"tags":{},"startTime":1779223239079,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":605927,"timestamp":415266820340,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779223239067,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":593235,"timestamp":415266833231,"id":73,"parentId":33,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":605268,"timestamp":415266821248,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779223239068,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":618698,"timestamp":415266833333,"id":75,"parentId":35,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":630734,"timestamp":415266821528,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779223239068,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":619236,"timestamp":415266833307,"id":74,"parentId":34,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":631210,"timestamp":415266821388,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779223239068,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":625906,"timestamp":415266833398,"id":77,"parentId":37,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":637167,"timestamp":415266822212,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779223239068,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":632288,"timestamp":415266833410,"id":78,"parentId":38,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":643462,"timestamp":415266822311,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779223239069,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":637407,"timestamp":415266833367,"id":76,"parentId":36,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":648777,"timestamp":415266822048,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779223239068,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":648724,"timestamp":415266833520,"id":80,"parentId":40,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":659865,"timestamp":415266822453,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779223239069,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":649851,"timestamp":415266832838,"id":70,"parentId":29,"tags":{},"startTime":1779223239079,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":662032,"timestamp":415266820698,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779223239067,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":649919,"timestamp":415266832988,"id":71,"parentId":30,"tags":{},"startTime":1779223239079,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":662144,"timestamp":415266820795,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779223239067,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":653747,"timestamp":415266832219,"id":66,"parentId":25,"tags":{},"startTime":1779223239078,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":665859,"timestamp":415266820170,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779223239066,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":654723,"timestamp":415266833503,"id":79,"parentId":39,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":665883,"timestamp":415266822388,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779223239069,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":658460,"timestamp":415266833569,"id":84,"parentId":46,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":667526,"timestamp":415266824552,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779223239071,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":659403,"timestamp":415266833578,"id":85,"parentId":47,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":668367,"timestamp":415266824686,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779223239071,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":667508,"timestamp":415266833603,"id":87,"parentId":49,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":676317,"timestamp":415266824844,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779223239071,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":667745,"timestamp":415266833556,"id":83,"parentId":45,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":678183,"timestamp":415266823144,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779223239069,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":670363,"timestamp":415266833617,"id":88,"parentId":50,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":679138,"timestamp":415266824905,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779223239071,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":673107,"timestamp":415266831636,"id":64,"parentId":21,"tags":{},"startTime":1779223239078,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":688713,"timestamp":415266816069,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779223239062,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":668274,"timestamp":415266842608,"id":90,"parentId":24,"tags":{},"startTime":1779223239089,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":693112,"timestamp":415266817814,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779223239064,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":686967,"timestamp":415266833532,"id":81,"parentId":42,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":697869,"timestamp":415266822704,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779223239069,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":687162,"timestamp":415266833590,"id":86,"parentId":48,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":696024,"timestamp":415266824759,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779223239071,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":688130,"timestamp":415266833541,"id":82,"parentId":44,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":698700,"timestamp":415266823011,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779223239069,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":682862,"timestamp":415266846208,"id":92,"parentId":41,"tags":{},"startTime":1779223239092,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":706606,"timestamp":415266822514,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779223239069,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":695648,"timestamp":415266833626,"id":89,"parentId":51,"tags":{},"startTime":1779223239080,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":704327,"timestamp":415266824981,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779223239071,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":682040,"timestamp":415266847397,"id":93,"parentId":43,"tags":{},"startTime":1779223239094,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":706668,"timestamp":415266822796,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779223239069,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":717036,"timestamp":415266832462,"id":68,"parentId":27,"tags":{},"startTime":1779223239079,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":729095,"timestamp":415266820480,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779223239067,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":697660,"timestamp":415266890418,"id":96,"parentId":53,"tags":{},"startTime":1779223239137,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":762697,"timestamp":415266825457,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779223239072,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":744847,"timestamp":415266845330,"id":91,"parentId":31,"tags":{},"startTime":1779223239092,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":769367,"timestamp":415266820878,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779223239067,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":705165,"timestamp":415266890403,"id":95,"parentId":52,"tags":{},"startTime":1779223239137,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":770295,"timestamp":415266825330,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779223239072,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":706232,"timestamp":415266890467,"id":100,"parentId":58,"tags":{},"startTime":1779223239137,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":770237,"timestamp":415266826528,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779223239073,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":707015,"timestamp":415266890427,"id":97,"parentId":54,"tags":{},"startTime":1779223239137,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":771923,"timestamp":415266825560,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779223239072,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":709625,"timestamp":415266890440,"id":98,"parentId":55,"tags":{},"startTime":1779223239137,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":774424,"timestamp":415266825693,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779223239072,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":710770,"timestamp":415266892931,"id":102,"parentId":61,"tags":{},"startTime":1779223239139,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":776609,"timestamp":415266827134,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779223239073,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":712729,"timestamp":415266892953,"id":104,"parentId":63,"tags":{},"startTime":1779223239139,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":778407,"timestamp":415266827447,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779223239074,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":717844,"timestamp":415266890337,"id":94,"parentId":23,"tags":{},"startTime":1779223239137,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":790610,"timestamp":415266817610,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779223239064,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":715470,"timestamp":415266892944,"id":103,"parentId":62,"tags":{},"startTime":1779223239139,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":781182,"timestamp":415266827272,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779223239074,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":715681,"timestamp":415266892967,"id":105,"parentId":57,"tags":{},"startTime":1779223239139,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":782699,"timestamp":415266825986,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779223239072,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":704015,"timestamp":415266906956,"id":106,"parentId":60,"tags":{},"startTime":1779223239153,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":784264,"timestamp":415266826826,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779223239073,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":720967,"timestamp":415266892880,"id":101,"parentId":59,"tags":{},"startTime":1779223239139,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":787176,"timestamp":415266826701,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779223239073,"traceId":"a812cc422b85a022"},{"name":"is-page-static","duration":743248,"timestamp":415266890454,"id":99,"parentId":56,"tags":{},"startTime":1779223239137,"traceId":"a812cc422b85a022"},{"name":"check-page","duration":807914,"timestamp":415266825829,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779223239072,"traceId":"a812cc422b85a022"},{"name":"static-check","duration":820501,"timestamp":415266813287,"id":19,"parentId":1,"tags":{},"startTime":1779223239060,"traceId":"a812cc422b85a022"}]
2
+ [{"name":"write-routes-manifest","duration":507,"timestamp":415267643615,"id":108,"parentId":1,"tags":{},"startTime":1779223239890,"traceId":"a812cc422b85a022"},{"name":"load-dotenv","duration":49,"timestamp":415267655562,"id":111,"parentId":110,"tags":{},"startTime":1779223239902,"traceId":"a812cc422b85a022"},{"name":"run-export-path-map","duration":505,"timestamp":415267658458,"id":112,"parentId":110,"tags":{},"startTime":1779223239905,"traceId":"a812cc422b85a022"},{"name":"next-export","duration":668173,"timestamp":415267654362,"id":110,"parentId":1,"tags":{},"startTime":1779223239901,"traceId":"a812cc422b85a022"},{"name":"move-exported-app-not-found-","duration":578,"timestamp":415268327231,"id":113,"parentId":109,"tags":{},"startTime":1779223240574,"traceId":"a812cc422b85a022"},{"name":"move-exported-app-global-error-","duration":476,"timestamp":415268327905,"id":114,"parentId":109,"tags":{},"startTime":1779223240574,"traceId":"a812cc422b85a022"},{"name":"static-generation","duration":682692,"timestamp":415267647955,"id":109,"parentId":1,"tags":{},"startTime":1779223239894,"traceId":"a812cc422b85a022"},{"name":"write-routes-manifest","duration":512,"timestamp":415268330950,"id":115,"parentId":1,"tags":{},"startTime":1779223240577,"traceId":"a812cc422b85a022"},{"name":"print-tree-view","duration":3704,"timestamp":415268349681,"id":116,"parentId":1,"tags":{},"startTime":1779223240596,"traceId":"a812cc422b85a022"},{"name":"write-route-bundle-stats","duration":13003,"timestamp":415268353419,"id":117,"parentId":1,"tags":{},"startTime":1779223240600,"traceId":"a812cc422b85a022"},{"name":"telemetry-flush","duration":33778,"timestamp":415268366454,"id":118,"parentId":1,"tags":{},"startTime":1779223240613,"traceId":"a812cc422b85a022"},{"name":"next-build","duration":18883552,"timestamp":415249516713,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779223221763,"traceId":"a812cc422b85a022"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":7247298,"timestamp":414599136146,"id":14,"parentId":1,"tags":{},"startTime":1779222571382,"traceId":"5ff6924e11ae954c"},{"name":"turbopack-build-events","duration":105,"timestamp":414599446120,"id":15,"parentId":1,"tags":{},"startTime":1779222571692,"traceId":"5ff6924e11ae954c"},{"name":"run-typescript","duration":10776744,"timestamp":414606398091,"id":16,"parentId":1,"tags":{},"startTime":1779222578644,"traceId":"5ff6924e11ae954c"},{"name":"static-check","duration":875418,"timestamp":414617394629,"id":19,"parentId":1,"tags":{},"startTime":1779222589641,"traceId":"5ff6924e11ae954c"},{"name":"static-generation","duration":682955,"timestamp":414618286742,"id":109,"parentId":1,"tags":{},"startTime":1779222590533,"traceId":"5ff6924e11ae954c"},{"name":"telemetry-flush","duration":16426,"timestamp":414619011943,"id":118,"parentId":1,"tags":{},"startTime":1779222591258,"traceId":"5ff6924e11ae954c"},{"name":"next-build","duration":20170154,"timestamp":414598858259,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779222571105,"traceId":"5ff6924e11ae954c"}]
1
+ [{"name":"run-turbopack","duration":6590231,"timestamp":415249768093,"id":14,"parentId":1,"tags":{},"startTime":1779223222014,"traceId":"a812cc422b85a022"},{"name":"turbopack-build-events","duration":81,"timestamp":415250095746,"id":15,"parentId":1,"tags":{},"startTime":1779223222342,"traceId":"a812cc422b85a022"},{"name":"run-typescript","duration":10224688,"timestamp":415256381728,"id":16,"parentId":1,"tags":{},"startTime":1779223228628,"traceId":"a812cc422b85a022"},{"name":"static-check","duration":820501,"timestamp":415266813287,"id":19,"parentId":1,"tags":{},"startTime":1779223239060,"traceId":"a812cc422b85a022"},{"name":"static-generation","duration":682692,"timestamp":415267647955,"id":109,"parentId":1,"tags":{},"startTime":1779223239894,"traceId":"a812cc422b85a022"},{"name":"telemetry-flush","duration":33778,"timestamp":415268366454,"id":118,"parentId":1,"tags":{},"startTime":1779223240613,"traceId":"a812cc422b85a022"},{"name":"next-build","duration":18883552,"timestamp":415249516713,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779223221763,"traceId":"a812cc422b85a022"}]
@@ -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
@@ -5174,6 +5185,13 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5174
5185
  { surface: "legend panel title", selector: "[data-legend-panel-title]", accessible_name: "legend · status / vendor / runtime swatch panel" },
5175
5186
  { surface: "title-block brand logo", selector: "[data-topo-brand-logo]", accessible_name: "sleep2agi · brand logo" },
5176
5187
  { surface: "canvas-corner crescent", selector: "[data-topo-brand-canvas-mark]", accessible_name: "sleep2agi · canvas-corner brand mark" },
5188
+ /* R733 — hub-highlight added; first non-brand a11y surface.
5189
+ Note the 3-part accessible_name: "<name> · <role> · <state>".
5190
+ The R732 canonical-format regex matches /^[^·]+ · [^·]+$/
5191
+ (exactly 2 parts) — R733 hub uses an extended 3-part form.
5192
+ The R733 test handles this by relaxing the canonical-format
5193
+ regex to `[^·]+( · [^·]+)+` (≥2 parts). */
5194
+ { surface: "hub-highlight disc", selector: "[data-topo-hub-highlight]", accessible_name: "hub · network center · idle indicator" },
5177
5195
  ])}
5178
5196
  data-topo-pinned-aspect={(() => {
5179
5197
  const aspects: string[] = [];
@@ -5277,6 +5295,16 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5277
5295
  }}
5278
5296
  style={{ cursor: isPanning ? 'grabbing' : 'grab', touchAction: 'none' }}
5279
5297
  >
5298
+ {/* Round 734 / Loop — SVG <desc> stable structural description
5299
+ targeted by aria-describedby on the root <svg>. Complements
5300
+ the dynamic aria-label (R7/R469 live-state counts) with
5301
+ stable structural vocabulary. WAI-ARIA name + description
5302
+ pair: SR reads aria-label first (current state), then
5303
+ optionally reads this desc on follow-up for structural
5304
+ context. Distinct mechanism from R730-R733 SVG <title>
5305
+ children (those are NAMES on decorative elements; this is
5306
+ a DESCRIPTION on the canvas root). */}
5307
+ <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>
5280
5308
  <defs>
5281
5309
  <linearGradient id="topo-panel" x1="0" x2="1" y1="0" y2="1">
5282
5310
  <stop offset="0%" stopColor={pal.panelStops[0]} />
@@ -9552,6 +9580,16 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9552
9580
  transition: 'opacity 300ms ease-out, fill 200ms ease-out, r 200ms ease-out, filter 200ms ease-out',
9553
9581
  } as React.CSSProperties}
9554
9582
  >
9583
+ {/* Round 733 / Loop — SVG <title> a11y child for the hub-
9584
+ highlight disc, the most prominent focal element on
9585
+ the canvas (network center). Sibling treatment to R730/
9586
+ R731 brand-surface a11y sweep. The hub-highlight is
9587
+ visibility-gated (only shows when workingCount === 0)
9588
+ but its <title> stays in DOM regardless — screen
9589
+ readers can identify it at all times. Canonical
9590
+ format "<name> · <role>": "hub" is the network-center
9591
+ name; "network center · idle indicator" is the role
9592
+ expanded to reflect both spatial and state semantics. */}<title>hub · network center · idle indicator</title>
9555
9593
  {/* Round 497 / Loop — idle-state breath (呼吸感 theme pivot
9556
9594
  from the R492-R496 press-family arc). Pre-R497 the hub
9557
9595
  idle highlight read as a static dim disc — present but
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.246",
3
+ "version": "0.5.3-preview.248",
4
4
  "description": "Agent Network Dashboard \u2014 Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -102,10 +102,13 @@ const validShape = Array.isArray(catalog) && catalog.every(e =>
102
102
  && typeof e?.accessible_name === 'string' && e.accessible_name.length > 0
103
103
  );
104
104
 
105
- const canonicalFormat = (s) => typeof s === 'string' && /^[^·]+ · [^·]+$/.test(s);
105
+ /* R733 relaxed canonical-format from "exactly 2 parts" to ">=2 parts"
106
+ * to admit the new hub-highlight entry's 3-part name ("hub · network
107
+ * center · idle indicator"). All earlier entries still match. */
108
+ const canonicalFormat = (s) => typeof s === 'string' && /^[^·]+( · [^·]+)+$/.test(s);
106
109
  const allCanonical = Array.isArray(catalog) && catalog.every(e => canonicalFormat(e.accessible_name));
107
110
 
108
- const expectedSurfaces = ['canvas-corner crescent', 'legend panel title', 'recent panel title', 'title-block brand logo', 'watermark text'];
111
+ const expectedSurfaces = ['canvas-corner crescent', 'hub-highlight disc', 'legend panel title', 'recent panel title', 'title-block brand logo', 'watermark text'];
109
112
  const actualSurfaces = Array.isArray(catalog) ? catalog.map(e => e.surface).sort() : [];
110
113
  const surfacesMatch = JSON.stringify(actualSurfaces) === JSON.stringify(expectedSurfaces);
111
114
 
@@ -115,7 +118,7 @@ const results = {
115
118
  attr_present: !!result.catalogAttr,
116
119
  json_parses: catalog !== null,
117
120
  is_array: Array.isArray(catalog),
118
- has_5_entries: Array.isArray(catalog) && catalog.length === 5,
121
+ has_6_entries: Array.isArray(catalog) && catalog.length === 6,
119
122
  shape_valid: validShape,
120
123
  all_accessible_names_canonical: allCanonical,
121
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,95 @@
1
+ /* Round 733 — extend SVG <title> a11y to the hub-highlight disc, the
2
+ * most prominent focal element on the canvas (network center). 6th
3
+ * surface in the R730-family a11y sweep, first non-brand a11y surface.
4
+ *
5
+ * Uses an extended 3-part accessible_name format:
6
+ * "hub · network center · idle indicator"
7
+ * name (hub) · spatial role (network center) · state role (idle indicator)
8
+ * R732 catalog's canonical-format regex was widened to `[^·]+( · [^·]+)+`
9
+ * (≥2 parts) to admit this entry.
10
+ *
11
+ * Assertions:
12
+ * - Hub-highlight <circle> has a direct <title> child with expected text
13
+ * - The accessible name has exactly 3 parts (3-part canonical form)
14
+ * - R732 catalog has 6 entries (was 5 pre-R733)
15
+ * - R732 catalog includes hub-highlight disc entry
16
+ * - Existing R497 SMIL opacity breath child preserved on hub-highlight
17
+ * (regression — the <title> is a sibling, not replacing)
18
+ */
19
+ import { chromium } from 'playwright';
20
+ import { readFileSync } from 'node:fs';
21
+
22
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
23
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
24
+
25
+ const browser = await chromium.launch({ headless: true });
26
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
27
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
28
+ await ctx.addInitScript(() => {
29
+ try {
30
+ localStorage.setItem('anet-theme', 'cyber');
31
+ localStorage.setItem('anet-topo-layout', 'ring');
32
+ sessionStorage.setItem('anet_v3_auth', '1');
33
+ } catch {}
34
+ });
35
+ await ctx.route('**/api/hub/status*', async (route) => {
36
+ const r = await route.fetch();
37
+ const b = await r.json();
38
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
39
+ const mk = (alias) => ({
40
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
41
+ network_id: nid, project_dir: null,
42
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
43
+ });
44
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
45
+ });
46
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
47
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
48
+ const page = await ctx.newPage();
49
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
50
+ await page.waitForSelector('[data-topo-canvas-aria]', { timeout: 15000, state: 'attached' });
51
+ await page.waitForTimeout(300);
52
+
53
+ const state = await page.evaluate(() => {
54
+ const hub = document.querySelector('[data-topo-hub-highlight]');
55
+ const svg = document.querySelector('[data-topo-canvas-aria]');
56
+ const directTitleText = (el) => {
57
+ if (!el) return null;
58
+ for (const child of el.children) {
59
+ if (child.tagName.toLowerCase() === 'title') return child.textContent;
60
+ }
61
+ return null;
62
+ };
63
+ return {
64
+ hub_present: !!hub,
65
+ hub_title_text: directTitleText(hub),
66
+ hub_smil_animate: hub?.querySelector('animate[attributeName="opacity"]') !== null,
67
+ hub_smil_dur: hub?.querySelector('animate[attributeName="opacity"]')?.getAttribute('dur') ?? null,
68
+ catalog_attr: svg?.getAttribute('data-topo-a11y-titles') ?? null,
69
+ };
70
+ });
71
+
72
+ await browser.close();
73
+
74
+ let catalog = null;
75
+ try { catalog = JSON.parse(state.catalog_attr ?? ''); } catch {}
76
+
77
+ const hubEntry = Array.isArray(catalog) ? catalog.find(e => e.surface === 'hub-highlight disc') : null;
78
+ const partCount = typeof state.hub_title_text === 'string' ? state.hub_title_text.split(' · ').length : 0;
79
+
80
+ const results = {
81
+ /* Hub-highlight is conditionally visible (workingCount === 0) but
82
+ * the <circle> with <title> is always mounted; treat as pass if
83
+ * element renders, conservative SR-coverage check otherwise. */
84
+ hub_title_present_when_rendered: !state.hub_present || state.hub_title_text === 'hub · network center · idle indicator',
85
+ three_part_canonical_form: !state.hub_present || partCount === 3,
86
+ smil_opacity_breath_preserved: !state.hub_present || (state.hub_smil_animate && state.hub_smil_dur === '4s'),
87
+ r732_catalog_has_6_entries: Array.isArray(catalog) && catalog.length === 6,
88
+ r732_catalog_has_hub_entry: !!hubEntry && hubEntry.accessible_name === 'hub · network center · idle indicator',
89
+ };
90
+ const ok = Object.values(results).every(Boolean);
91
+ console.log(`${ok ? '✅' : '❌'} R733 hub-highlight SVG <title> a11y (6th titled surface, first non-brand):`,
92
+ JSON.stringify(results, null, 2),
93
+ `\n state: ${JSON.stringify(state)}`,
94
+ `\n hub entry: ${JSON.stringify(hubEntry)}`);
95
+ process.exit(ok ? 0 : 1);