@sleep2agi/agent-network-dashboard 0.5.3-preview.103 → 0.5.3-preview.105

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 (143) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +5 -5
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/admin.html +1 -1
  21. package/.next/server/app/admin.rsc +1 -1
  22. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  28. package/.next/server/app/index.html +2 -2
  29. package/.next/server/app/index.rsc +2 -2
  30. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/login.html +2 -2
  37. package/.next/server/app/login.rsc +2 -2
  38. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  39. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  44. package/.next/server/app/logs.html +1 -1
  45. package/.next/server/app/logs.rsc +1 -1
  46. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  52. package/.next/server/app/messages.html +1 -1
  53. package/.next/server/app/messages.rsc +1 -1
  54. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  60. package/.next/server/app/node.html +1 -1
  61. package/.next/server/app/node.rsc +1 -1
  62. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  68. package/.next/server/app/nodes.html +1 -1
  69. package/.next/server/app/nodes.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  76. package/.next/server/app/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/server-logs.html +1 -1
  78. package/.next/server/app/server-logs.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  84. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  85. package/.next/server/app/settings/networks.html +1 -1
  86. package/.next/server/app/settings/networks.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  94. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/settings/tokens.html +1 -1
  96. package/.next/server/app/settings/tokens.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  103. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  104. package/.next/server/app/settings.html +2 -2
  105. package/.next/server/app/settings.rsc +2 -2
  106. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  110. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  111. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  112. package/.next/server/app/tasks.html +1 -1
  113. package/.next/server/app/tasks.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  120. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  121. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
  123. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  126. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  127. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  128. package/.next/server/middleware-build-manifest.js +3 -3
  129. package/.next/server/pages/404.html +1 -1
  130. package/.next/server/pages/500.html +1 -1
  131. package/.next/static/chunks/{0to2mvk10-.1w.js → 0.07mdyjndi.7.js} +1 -1
  132. package/.next/static/chunks/{023npf6.2obr1.js → 06hcqip-0tx-z.js} +1 -1
  133. package/.next/static/chunks/{0pqmqv78zy0nf.js → 0l45fut19gjg4.js} +1 -1
  134. package/.next/static/chunks/{078u01~k7hs.4.js → 0zqy.jasgjund.js} +1 -1
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +75 -2
  138. package/package.json +1 -1
  139. package/scripts/topo-legend-row-count-brightness-test.mjs +85 -0
  140. package/scripts/topo-recent-ts-brightness-test.mjs +86 -0
  141. /package/.next/static/{V05IAc6LDcyAb_1LZccxI → 8VfbbtD2QPQgN2GGR1WOi}/_buildManifest.js +0 -0
  142. /package/.next/static/{V05IAc6LDcyAb_1LZccxI → 8VfbbtD2QPQgN2GGR1WOi}/_clientMiddlewareManifest.js +0 -0
  143. /package/.next/static/{V05IAc6LDcyAb_1LZccxI → 8VfbbtD2QPQgN2GGR1WOi}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.103"],70286)},48941,e=>{"use strict";var t=e.i(22381),r=e.i(23910),a=e.i(70286);e.s(["default",0,function(){let[e,s]=(0,r.useState)("login"),[n,o]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(!1),[x,g]=(0,r.useState)(""),[h,m]=(0,r.useState)(!1),u=async t=>{t.preventDefault(),m(!0),g("");try{let t=await fetch("/api/auth/v3",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,username:n,password:i})}),r=await t.json();if(r.ok){r.token&&sessionStorage.setItem("anet_v3_auth",JSON.stringify({user:r.user,token:r.token,networks:r.networks||[],currentNetwork:r.network_id||r.networks?.[0]?.network_id||""})),window.location.assign("/");return}g(r.error||"Login failed")}catch{g("Connection failed")}m(!1)};return(0,t.jsxs)("main",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 font-mono flex items-center justify-center relative overflow-hidden px-4 py-10 sm:py-16",children:[(0,t.jsx)("div",{className:"absolute inset-0 pointer-events-none anet-login-bg","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-sm",children:[(0,t.jsxs)("div",{className:"text-center mb-7",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-4 rounded-2xl bg-[#111128] border border-[#2a2a4a] anet-login-mark",children:(0,t.jsxs)("svg",{className:"w-9 h-9",viewBox:"0 0 32 32","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.25",className:"text-cyan-400 anet-login-mark-ring"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"3",fill:"currentColor",className:"text-cyan-400 anet-login-mark-node-a"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"3",fill:"currentColor",className:"text-green-400 anet-login-mark-node-b"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"3",fill:"currentColor",className:"text-violet-400 anet-login-mark-node-c"})]})}),(0,t.jsx)("h1",{className:"text-[22px] sm:text-2xl font-semibold text-white tracking-tight",children:"Agent Network"}),(0,t.jsx)("p",{className:"text-[13px] text-gray-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Free preview · no credit card"})]})})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 mb-4",children:["login","register"].map(r=>(0,t.jsx)("button",{type:"button",onClick:()=>{s(r),g("")},className:`flex-1 rounded-md px-3 py-2 text-sm transition-colors ${e===r?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"login"===r?"Sign in":"Register"},r))}),(0,t.jsxs)("form",{onSubmit:u,className:"border border-[#2a2a4a] bg-[#111128]/80 backdrop-blur-sm rounded-xl p-6 shadow-2xl shadow-black/30",children:[(0,t.jsx)("label",{htmlFor:"username",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Username"}),(0,t.jsx)("input",{id:"username",type:"text",value:n,onChange:e=>o(e.target.value),autoFocus:!0,placeholder:"Enter username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all mb-4"}),(0,t.jsx)("label",{htmlFor:"password",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{id:"password",type:c?"text":"password",value:i,onChange:e=>l(e.target.value),placeholder:"Enter password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 pr-11 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all"}),(0,t.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":c?"Hide password":"Show password",className:"absolute inset-y-0 right-0 flex items-center px-3 text-gray-600 hover:text-gray-300 transition-colors",children:c?(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),(0,t.jsx)("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]}),x&&(0,t.jsx)("div",{className:"mt-3 text-sm text-red-300 bg-red-500/5 border border-red-500/10 rounded-lg px-3 py-2",children:x}),(0,t.jsxs)("button",{type:"submit",disabled:h||!i||!n.trim(),className:"mt-5 w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-lg transition-all shadow-lg shadow-cyan-500/10 hover:shadow-cyan-500/20 disabled:shadow-none",children:[h&&(0,t.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,t.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,t.jsx)("span",{children:h?"login"===e?"Signing in…":"Registering…":"login"===e?"Sign in":"Create account"})]})]}),(0,t.jsxs)("p",{className:"text-center text-[11px] text-gray-700 mt-6",children:["Sleep2AGI · Apache-2.0 · ",(0,t.jsx)("a",{href:"https://anet.sh",className:"hover:text-gray-500 transition-colors",children:"anet.sh"}),(0,t.jsx)("span",{className:"mx-1 text-gray-800",children:"·"}),(0,t.jsxs)("span",{className:"font-mono",title:"@sleep2agi/agent-network-dashboard",children:["v",a.DASHBOARD_VERSION]})]})]})]})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.105"],70286)},48941,e=>{"use strict";var t=e.i(22381),r=e.i(23910),a=e.i(70286);e.s(["default",0,function(){let[e,s]=(0,r.useState)("login"),[n,o]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(!1),[x,g]=(0,r.useState)(""),[h,m]=(0,r.useState)(!1),u=async t=>{t.preventDefault(),m(!0),g("");try{let t=await fetch("/api/auth/v3",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,username:n,password:i})}),r=await t.json();if(r.ok){r.token&&sessionStorage.setItem("anet_v3_auth",JSON.stringify({user:r.user,token:r.token,networks:r.networks||[],currentNetwork:r.network_id||r.networks?.[0]?.network_id||""})),window.location.assign("/");return}g(r.error||"Login failed")}catch{g("Connection failed")}m(!1)};return(0,t.jsxs)("main",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 font-mono flex items-center justify-center relative overflow-hidden px-4 py-10 sm:py-16",children:[(0,t.jsx)("div",{className:"absolute inset-0 pointer-events-none anet-login-bg","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-sm",children:[(0,t.jsxs)("div",{className:"text-center mb-7",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-4 rounded-2xl bg-[#111128] border border-[#2a2a4a] anet-login-mark",children:(0,t.jsxs)("svg",{className:"w-9 h-9",viewBox:"0 0 32 32","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.25",className:"text-cyan-400 anet-login-mark-ring"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"3",fill:"currentColor",className:"text-cyan-400 anet-login-mark-node-a"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"3",fill:"currentColor",className:"text-green-400 anet-login-mark-node-b"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"3",fill:"currentColor",className:"text-violet-400 anet-login-mark-node-c"})]})}),(0,t.jsx)("h1",{className:"text-[22px] sm:text-2xl font-semibold text-white tracking-tight",children:"Agent Network"}),(0,t.jsx)("p",{className:"text-[13px] text-gray-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Free preview · no credit card"})]})})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 mb-4",children:["login","register"].map(r=>(0,t.jsx)("button",{type:"button",onClick:()=>{s(r),g("")},className:`flex-1 rounded-md px-3 py-2 text-sm transition-colors ${e===r?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"login"===r?"Sign in":"Register"},r))}),(0,t.jsxs)("form",{onSubmit:u,className:"border border-[#2a2a4a] bg-[#111128]/80 backdrop-blur-sm rounded-xl p-6 shadow-2xl shadow-black/30",children:[(0,t.jsx)("label",{htmlFor:"username",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Username"}),(0,t.jsx)("input",{id:"username",type:"text",value:n,onChange:e=>o(e.target.value),autoFocus:!0,placeholder:"Enter username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all mb-4"}),(0,t.jsx)("label",{htmlFor:"password",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{id:"password",type:c?"text":"password",value:i,onChange:e=>l(e.target.value),placeholder:"Enter password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 pr-11 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all"}),(0,t.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":c?"Hide password":"Show password",className:"absolute inset-y-0 right-0 flex items-center px-3 text-gray-600 hover:text-gray-300 transition-colors",children:c?(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),(0,t.jsx)("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]}),x&&(0,t.jsx)("div",{className:"mt-3 text-sm text-red-300 bg-red-500/5 border border-red-500/10 rounded-lg px-3 py-2",children:x}),(0,t.jsxs)("button",{type:"submit",disabled:h||!i||!n.trim(),className:"mt-5 w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-lg transition-all shadow-lg shadow-cyan-500/10 hover:shadow-cyan-500/20 disabled:shadow-none",children:[h&&(0,t.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,t.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,t.jsx)("span",{children:h?"login"===e?"Signing in…":"Registering…":"login"===e?"Sign in":"Create account"})]})]}),(0,t.jsxs)("p",{className:"text-center text-[11px] text-gray-700 mt-6",children:["Sleep2AGI · Apache-2.0 · ",(0,t.jsx)("a",{href:"https://anet.sh",className:"hover:text-gray-500 transition-colors",children:"anet.sh"}),(0,t.jsx)("span",{className:"mx-1 text-gray-800",children:"·"}),(0,t.jsxs)("span",{className:"font-mono",title:"@sleep2agi/agent-network-dashboard",children:["v",a.DASHBOARD_VERSION]})]})]})]})}])}]);
@@ -1 +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.103"],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.105"],70286)}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":352,"timestamp":232255897230,"id":4,"parentId":1,"tags":{},"startTime":1779040228144,"traceId":"e7d4a8813714e314"},{"name":"load-custom-routes","duration":504,"timestamp":232255897745,"id":5,"parentId":1,"tags":{},"startTime":1779040228144,"traceId":"e7d4a8813714e314"},{"name":"create-dist-dir","duration":739,"timestamp":232255898294,"id":6,"parentId":1,"tags":{},"startTime":1779040228145,"traceId":"e7d4a8813714e314"},{"name":"clean","duration":36695,"timestamp":232255899680,"id":7,"parentId":1,"tags":{},"startTime":1779040228146,"traceId":"e7d4a8813714e314"},{"name":"discover-routes","duration":30014,"timestamp":232256018531,"id":8,"parentId":1,"tags":{},"startTime":1779040228265,"traceId":"e7d4a8813714e314"},{"name":"create-root-mapping","duration":180,"timestamp":232256048632,"id":9,"parentId":1,"tags":{},"startTime":1779040228295,"traceId":"e7d4a8813714e314"},{"name":"generate-route-types","duration":20049,"timestamp":232256052317,"id":10,"parentId":1,"tags":{},"startTime":1779040228299,"traceId":"e7d4a8813714e314"},{"name":"public-dir-conflict-check","duration":101,"timestamp":232256072452,"id":11,"parentId":1,"tags":{},"startTime":1779040228319,"traceId":"e7d4a8813714e314"},{"name":"generate-routes-manifest","duration":6474,"timestamp":232256072676,"id":12,"parentId":1,"tags":{},"startTime":1779040228319,"traceId":"e7d4a8813714e314"},{"name":"run-turbopack","duration":5703523,"timestamp":232256084671,"id":14,"parentId":1,"tags":{},"startTime":1779040228331,"traceId":"e7d4a8813714e314"},{"name":"turbopack-build-events","duration":74,"timestamp":232256374400,"id":15,"parentId":1,"tags":{},"startTime":1779040228621,"traceId":"e7d4a8813714e314"},{"name":"run-typescript","duration":9422572,"timestamp":232261799842,"id":16,"parentId":1,"tags":{},"startTime":1779040234046,"traceId":"e7d4a8813714e314"},{"name":"generate-required-server-files","duration":3136,"timestamp":232271223479,"id":18,"parentId":1,"tags":{},"startTime":1779040243470,"traceId":"e7d4a8813714e314"},{"name":"check-static-error-page","duration":16713,"timestamp":232271394182,"id":20,"parentId":19,"tags":{},"startTime":1779040243640,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":429248,"timestamp":232271414182,"id":65,"parentId":22,"tags":{},"startTime":1779040243660,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":446261,"timestamp":232271397332,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779040243644,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":550444,"timestamp":232271415195,"id":71,"parentId":30,"tags":{},"startTime":1779040243661,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":564409,"timestamp":232271401337,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779040243648,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":558739,"timestamp":232271414474,"id":67,"parentId":26,"tags":{},"startTime":1779040243661,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":572579,"timestamp":232271400705,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779040243647,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":561239,"timestamp":232271414606,"id":68,"parentId":27,"tags":{},"startTime":1779040243661,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":575078,"timestamp":232271400845,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779040243647,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":564302,"timestamp":232271415424,"id":73,"parentId":33,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":577830,"timestamp":232271401944,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779040243648,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":567089,"timestamp":232271414719,"id":69,"parentId":28,"tags":{},"startTime":1779040243661,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":580980,"timestamp":232271401017,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779040243647,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":572923,"timestamp":232271415545,"id":76,"parentId":36,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":585740,"timestamp":232271402784,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779040243649,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":574918,"timestamp":232271413819,"id":64,"parentId":21,"tags":{},"startTime":1779040243660,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":593035,"timestamp":232271395744,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779040243642,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":578479,"timestamp":232271415028,"id":70,"parentId":29,"tags":{},"startTime":1779040243661,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":592401,"timestamp":232271401161,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779040243647,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":584908,"timestamp":232271415267,"id":72,"parentId":32,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":598435,"timestamp":232271401785,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779040243648,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":584946,"timestamp":232271415609,"id":79,"parentId":39,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":597305,"timestamp":232271403289,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779040243650,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":587871,"timestamp":232271415530,"id":75,"parentId":35,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":601174,"timestamp":232271402269,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779040243649,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":589884,"timestamp":232271414337,"id":66,"parentId":25,"tags":{},"startTime":1779040243661,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":603726,"timestamp":232271400535,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779040243647,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":593579,"timestamp":232271415645,"id":82,"parentId":44,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":604953,"timestamp":232271404310,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779040243651,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":597771,"timestamp":232271415655,"id":83,"parentId":45,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":609011,"timestamp":232271404453,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779040243651,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":604481,"timestamp":232271415576,"id":77,"parentId":37,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":617117,"timestamp":232271402987,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779040243649,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":604771,"timestamp":232271415502,"id":74,"parentId":34,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":618212,"timestamp":232271402110,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779040243648,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":604806,"timestamp":232271415665,"id":84,"parentId":46,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":615931,"timestamp":232271404573,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779040243651,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":618437,"timestamp":232271415713,"id":88,"parentId":50,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":627315,"timestamp":232271406888,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779040243653,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":622624,"timestamp":232271415700,"id":87,"parentId":49,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":631703,"timestamp":232271406702,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779040243653,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":622931,"timestamp":232271415725,"id":89,"parentId":51,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":631713,"timestamp":232271407021,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779040243653,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":629208,"timestamp":232271415618,"id":80,"parentId":40,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":641472,"timestamp":232271403412,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779040243650,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":629565,"timestamp":232271415678,"id":85,"parentId":47,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":640582,"timestamp":232271404704,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779040243651,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":628085,"timestamp":232271419264,"id":90,"parentId":24,"tags":{},"startTime":1779040243666,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":649503,"timestamp":232271397886,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779040243644,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":627466,"timestamp":232271420506,"id":91,"parentId":31,"tags":{},"startTime":1779040243667,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":646540,"timestamp":232271401485,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779040243648,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":627726,"timestamp":232271422705,"id":93,"parentId":43,"tags":{},"startTime":1779040243669,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":646504,"timestamp":232271403972,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779040243650,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":636534,"timestamp":232271415691,"id":86,"parentId":48,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":647443,"timestamp":232271404826,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779040243651,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":641353,"timestamp":232271415632,"id":81,"parentId":42,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":653257,"timestamp":232271403803,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779040243650,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":636749,"timestamp":232271421358,"id":92,"parentId":41,"tags":{},"startTime":1779040243668,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":654619,"timestamp":232271403525,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779040243650,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":671737,"timestamp":232271415596,"id":78,"parentId":38,"tags":{},"startTime":1779040243662,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":684244,"timestamp":232271403158,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779040243649,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":675930,"timestamp":232271425027,"id":100,"parentId":58,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":691823,"timestamp":232271409209,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779040243655,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":689174,"timestamp":232271424911,"id":94,"parentId":23,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":716542,"timestamp":232271397615,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779040243644,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":689203,"timestamp":232271425145,"id":101,"parentId":59,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":704960,"timestamp":232271409452,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779040243656,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":694909,"timestamp":232271425161,"id":102,"parentId":61,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":709842,"timestamp":232271410276,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779040243657,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":695688,"timestamp":232271424936,"id":95,"parentId":52,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":713189,"timestamp":232271407488,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779040243654,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":696658,"timestamp":232271424966,"id":97,"parentId":54,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":713838,"timestamp":232271407838,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779040243654,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":701772,"timestamp":232271425187,"id":104,"parentId":63,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":716397,"timestamp":232271410614,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779040243657,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":685099,"timestamp":232271445447,"id":106,"parentId":57,"tags":{},"startTime":1779040243692,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":722000,"timestamp":232271408591,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779040243655,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":708424,"timestamp":232271425174,"id":103,"parentId":62,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":723193,"timestamp":232271410445,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779040243657,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":709467,"timestamp":232271424975,"id":98,"parentId":55,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":726432,"timestamp":232271408092,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779040243654,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":701117,"timestamp":232271433496,"id":105,"parentId":60,"tags":{},"startTime":1779040243680,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":724858,"timestamp":232271409778,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779040243656,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":714120,"timestamp":232271424951,"id":96,"parentId":53,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":731440,"timestamp":232271407669,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779040243654,"traceId":"e7d4a8813714e314"},{"name":"is-page-static","duration":715030,"timestamp":232271424996,"id":99,"parentId":56,"tags":{},"startTime":1779040243671,"traceId":"e7d4a8813714e314"},{"name":"check-page","duration":731737,"timestamp":232271408327,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779040243655,"traceId":"e7d4a8813714e314"},{"name":"static-check","duration":747082,"timestamp":232271393028,"id":19,"parentId":1,"tags":{},"startTime":1779040243639,"traceId":"e7d4a8813714e314"}]
2
- [{"name":"write-routes-manifest","duration":568,"timestamp":232272151637,"id":108,"parentId":1,"tags":{},"startTime":1779040244398,"traceId":"e7d4a8813714e314"},{"name":"load-dotenv","duration":62,"timestamp":232272163117,"id":111,"parentId":110,"tags":{},"startTime":1779040244409,"traceId":"e7d4a8813714e314"},{"name":"run-export-path-map","duration":773,"timestamp":232272167249,"id":112,"parentId":110,"tags":{},"startTime":1779040244414,"traceId":"e7d4a8813714e314"},{"name":"next-export","duration":594222,"timestamp":232272161312,"id":110,"parentId":1,"tags":{},"startTime":1779040244408,"traceId":"e7d4a8813714e314"},{"name":"move-exported-app-not-found-","duration":633,"timestamp":232272759474,"id":113,"parentId":109,"tags":{},"startTime":1779040245006,"traceId":"e7d4a8813714e314"},{"name":"move-exported-app-global-error-","duration":470,"timestamp":232272760236,"id":114,"parentId":109,"tags":{},"startTime":1779040245007,"traceId":"e7d4a8813714e314"},{"name":"static-generation","duration":607253,"timestamp":232272155645,"id":109,"parentId":1,"tags":{},"startTime":1779040244402,"traceId":"e7d4a8813714e314"},{"name":"write-routes-manifest","duration":458,"timestamp":232272763189,"id":115,"parentId":1,"tags":{},"startTime":1779040245009,"traceId":"e7d4a8813714e314"},{"name":"print-tree-view","duration":4883,"timestamp":232272783823,"id":116,"parentId":1,"tags":{},"startTime":1779040245030,"traceId":"e7d4a8813714e314"},{"name":"write-route-bundle-stats","duration":12142,"timestamp":232272788737,"id":117,"parentId":1,"tags":{},"startTime":1779040245035,"traceId":"e7d4a8813714e314"},{"name":"telemetry-flush","duration":22154,"timestamp":232272800918,"id":118,"parentId":1,"tags":{},"startTime":1779040245047,"traceId":"e7d4a8813714e314"},{"name":"next-build","duration":16980629,"timestamp":232255842472,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779040228089,"traceId":"e7d4a8813714e314"}]
1
+ [{"name":"generate-buildid","duration":261,"timestamp":232823065521,"id":4,"parentId":1,"tags":{},"startTime":1779040795312,"traceId":"85e54838de029e2b"},{"name":"load-custom-routes","duration":558,"timestamp":232823065932,"id":5,"parentId":1,"tags":{},"startTime":1779040795312,"traceId":"85e54838de029e2b"},{"name":"create-dist-dir","duration":713,"timestamp":232823066540,"id":6,"parentId":1,"tags":{},"startTime":1779040795313,"traceId":"85e54838de029e2b"},{"name":"clean","duration":39552,"timestamp":232823067909,"id":7,"parentId":1,"tags":{},"startTime":1779040795314,"traceId":"85e54838de029e2b"},{"name":"discover-routes","duration":14171,"timestamp":232823198895,"id":8,"parentId":1,"tags":{},"startTime":1779040795445,"traceId":"85e54838de029e2b"},{"name":"create-root-mapping","duration":137,"timestamp":232823213143,"id":9,"parentId":1,"tags":{},"startTime":1779040795459,"traceId":"85e54838de029e2b"},{"name":"generate-route-types","duration":39759,"timestamp":232823216358,"id":10,"parentId":1,"tags":{},"startTime":1779040795463,"traceId":"85e54838de029e2b"},{"name":"public-dir-conflict-check","duration":144,"timestamp":232823256219,"id":11,"parentId":1,"tags":{},"startTime":1779040795503,"traceId":"85e54838de029e2b"},{"name":"generate-routes-manifest","duration":5811,"timestamp":232823256533,"id":12,"parentId":1,"tags":{},"startTime":1779040795503,"traceId":"85e54838de029e2b"},{"name":"run-turbopack","duration":6248396,"timestamp":232823269361,"id":14,"parentId":1,"tags":{},"startTime":1779040795516,"traceId":"85e54838de029e2b"},{"name":"turbopack-build-events","duration":100,"timestamp":232823575293,"id":15,"parentId":1,"tags":{},"startTime":1779040795822,"traceId":"85e54838de029e2b"},{"name":"run-typescript","duration":10025828,"timestamp":232829531789,"id":16,"parentId":1,"tags":{},"startTime":1779040801778,"traceId":"85e54838de029e2b"},{"name":"generate-required-server-files","duration":2668,"timestamp":232839559212,"id":18,"parentId":1,"tags":{},"startTime":1779040811805,"traceId":"85e54838de029e2b"},{"name":"check-static-error-page","duration":19339,"timestamp":232839763991,"id":20,"parentId":19,"tags":{},"startTime":1779040812010,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":579859,"timestamp":232839787645,"id":65,"parentId":22,"tags":{},"startTime":1779040812034,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":600244,"timestamp":232839767437,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779040812014,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":664999,"timestamp":232839788080,"id":68,"parentId":27,"tags":{},"startTime":1779040812034,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":681862,"timestamp":232839771329,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779040812018,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":678878,"timestamp":232839787941,"id":67,"parentId":26,"tags":{},"startTime":1779040812034,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":695764,"timestamp":232839771157,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779040812017,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":684883,"timestamp":232839787224,"id":64,"parentId":21,"tags":{},"startTime":1779040812034,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":706572,"timestamp":232839765601,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779040812012,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":689069,"timestamp":232839789018,"id":73,"parentId":33,"tags":{},"startTime":1779040812035,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":705892,"timestamp":232839772268,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779040812019,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":692144,"timestamp":232839788523,"id":70,"parentId":29,"tags":{},"startTime":1779040812035,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":709119,"timestamp":232839771594,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779040812018,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":697798,"timestamp":232839789178,"id":76,"parentId":36,"tags":{},"startTime":1779040812035,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":712688,"timestamp":232839774361,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779040812021,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":698527,"timestamp":232839788714,"id":71,"parentId":30,"tags":{},"startTime":1779040812035,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":715531,"timestamp":232839771742,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779040812018,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":699647,"timestamp":232839787802,"id":66,"parentId":25,"tags":{},"startTime":1779040812034,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":716929,"timestamp":232839770549,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779040812017,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":705424,"timestamp":232839788794,"id":72,"parentId":32,"tags":{},"startTime":1779040812035,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":722121,"timestamp":232839772137,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779040812018,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":705239,"timestamp":232839789153,"id":75,"parentId":35,"tags":{},"startTime":1779040812035,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":720614,"timestamp":232839773803,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779040812020,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":717616,"timestamp":232839789277,"id":81,"parentId":42,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":731698,"timestamp":232839775268,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779040812022,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":731650,"timestamp":232839789261,"id":80,"parentId":40,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":746055,"timestamp":232839774911,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779040812021,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":733681,"timestamp":232839789247,"id":79,"parentId":39,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":748177,"timestamp":232839774795,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779040812021,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":736737,"timestamp":232839789230,"id":78,"parentId":38,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":751324,"timestamp":232839774704,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779040812021,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":736867,"timestamp":232839789309,"id":83,"parentId":45,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":750368,"timestamp":232839775842,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779040812022,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":739166,"timestamp":232839789320,"id":84,"parentId":46,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":752569,"timestamp":232839775969,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779040812022,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":741226,"timestamp":232839789353,"id":86,"parentId":48,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":752867,"timestamp":232839777753,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779040812024,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":745897,"timestamp":232839789293,"id":82,"parentId":44,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":759528,"timestamp":232839775704,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779040812022,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":747216,"timestamp":232839788193,"id":69,"parentId":28,"tags":{},"startTime":1779040812034,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":763976,"timestamp":232839771472,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779040812018,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":746378,"timestamp":232839789209,"id":77,"parentId":37,"tags":{},"startTime":1779040812035,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":761059,"timestamp":232839774565,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779040812021,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":748958,"timestamp":232839789381,"id":88,"parentId":50,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":760402,"timestamp":232839777977,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779040812024,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":758811,"timestamp":232839789365,"id":87,"parentId":49,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":770319,"timestamp":232839777910,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779040812024,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":748833,"timestamp":232839802429,"id":92,"parentId":41,"tags":{},"startTime":1779040812049,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":776275,"timestamp":232839775038,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779040812021,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":763203,"timestamp":232839789399,"id":89,"parentId":51,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":774567,"timestamp":232839778079,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779040812024,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":749048,"timestamp":232839803739,"id":93,"parentId":43,"tags":{},"startTime":1779040812050,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":777406,"timestamp":232839775408,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779040812022,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":767813,"timestamp":232839789337,"id":85,"parentId":47,"tags":{},"startTime":1779040812036,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":781082,"timestamp":232839776113,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779040812022,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":764961,"timestamp":232839801522,"id":91,"parentId":24,"tags":{},"startTime":1779040812048,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":798639,"timestamp":232839767965,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779040812014,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":766284,"timestamp":232839800458,"id":90,"parentId":31,"tags":{},"startTime":1779040812047,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":794905,"timestamp":232839771864,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779040812018,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":806723,"timestamp":232839789119,"id":74,"parentId":34,"tags":{},"startTime":1779040812035,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":822293,"timestamp":232839773646,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779040812020,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":785312,"timestamp":232839819038,"id":100,"parentId":58,"tags":{},"startTime":1779040812065,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":822555,"timestamp":232839781862,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779040812028,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":797980,"timestamp":232839819182,"id":101,"parentId":59,"tags":{},"startTime":1779040812065,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":835141,"timestamp":232839782096,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779040812028,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":803003,"timestamp":232839819201,"id":102,"parentId":61,"tags":{},"startTime":1779040812065,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":839539,"timestamp":232839782743,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779040812029,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":803465,"timestamp":232839818977,"id":97,"parentId":54,"tags":{},"startTime":1779040812065,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":843847,"timestamp":232839778627,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779040812025,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":803987,"timestamp":232839818943,"id":95,"parentId":52,"tags":{},"startTime":1779040812065,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":844588,"timestamp":232839778400,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779040812025,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":808325,"timestamp":232839818994,"id":98,"parentId":55,"tags":{},"startTime":1779040812065,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":848600,"timestamp":232839778761,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779040812025,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":811408,"timestamp":232839819249,"id":105,"parentId":60,"tags":{},"startTime":1779040812066,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":848410,"timestamp":232839782289,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779040812029,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":811803,"timestamp":232839819232,"id":104,"parentId":63,"tags":{},"startTime":1779040812066,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":848002,"timestamp":232839783079,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779040812029,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":815066,"timestamp":232839818961,"id":96,"parentId":53,"tags":{},"startTime":1779040812065,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":855546,"timestamp":232839778523,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779040812025,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":801887,"timestamp":232839834039,"id":106,"parentId":57,"tags":{},"startTime":1779040812080,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":856866,"timestamp":232839779102,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779040812025,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":817230,"timestamp":232839819217,"id":103,"parentId":62,"tags":{},"startTime":1779040812065,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":853570,"timestamp":232839782916,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779040812029,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":827716,"timestamp":232839819022,"id":99,"parentId":56,"tags":{},"startTime":1779040812065,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":867866,"timestamp":232839778916,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779040812025,"traceId":"85e54838de029e2b"},{"name":"is-page-static","duration":830578,"timestamp":232839818907,"id":94,"parentId":23,"tags":{},"startTime":1779040812065,"traceId":"85e54838de029e2b"},{"name":"check-page","duration":881809,"timestamp":232839767716,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779040812014,"traceId":"85e54838de029e2b"},{"name":"static-check","duration":886727,"timestamp":232839762845,"id":19,"parentId":1,"tags":{},"startTime":1779040812009,"traceId":"85e54838de029e2b"}]
2
+ [{"name":"write-routes-manifest","duration":530,"timestamp":232840660745,"id":108,"parentId":1,"tags":{},"startTime":1779040812907,"traceId":"85e54838de029e2b"},{"name":"load-dotenv","duration":55,"timestamp":232840672417,"id":111,"parentId":110,"tags":{},"startTime":1779040812919,"traceId":"85e54838de029e2b"},{"name":"run-export-path-map","duration":564,"timestamp":232840674983,"id":112,"parentId":110,"tags":{},"startTime":1779040812921,"traceId":"85e54838de029e2b"},{"name":"next-export","duration":635239,"timestamp":232840671179,"id":110,"parentId":1,"tags":{},"startTime":1779040812917,"traceId":"85e54838de029e2b"},{"name":"move-exported-app-not-found-","duration":547,"timestamp":232841310041,"id":113,"parentId":109,"tags":{},"startTime":1779040813556,"traceId":"85e54838de029e2b"},{"name":"move-exported-app-global-error-","duration":542,"timestamp":232841310734,"id":114,"parentId":109,"tags":{},"startTime":1779040813557,"traceId":"85e54838de029e2b"},{"name":"static-generation","duration":648325,"timestamp":232840664860,"id":109,"parentId":1,"tags":{},"startTime":1779040812911,"traceId":"85e54838de029e2b"},{"name":"write-routes-manifest","duration":390,"timestamp":232841313431,"id":115,"parentId":1,"tags":{},"startTime":1779040813560,"traceId":"85e54838de029e2b"},{"name":"print-tree-view","duration":4336,"timestamp":232841324988,"id":116,"parentId":1,"tags":{},"startTime":1779040813571,"traceId":"85e54838de029e2b"},{"name":"write-route-bundle-stats","duration":15300,"timestamp":232841329350,"id":117,"parentId":1,"tags":{},"startTime":1779040813576,"traceId":"85e54838de029e2b"},{"name":"telemetry-flush","duration":31114,"timestamp":232841344675,"id":118,"parentId":1,"tags":{},"startTime":1779040813591,"traceId":"85e54838de029e2b"},{"name":"next-build","duration":18363532,"timestamp":232823012287,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779040795259,"traceId":"85e54838de029e2b"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5703523,"timestamp":232256084671,"id":14,"parentId":1,"tags":{},"startTime":1779040228331,"traceId":"e7d4a8813714e314"},{"name":"turbopack-build-events","duration":74,"timestamp":232256374400,"id":15,"parentId":1,"tags":{},"startTime":1779040228621,"traceId":"e7d4a8813714e314"},{"name":"run-typescript","duration":9422572,"timestamp":232261799842,"id":16,"parentId":1,"tags":{},"startTime":1779040234046,"traceId":"e7d4a8813714e314"},{"name":"static-check","duration":747082,"timestamp":232271393028,"id":19,"parentId":1,"tags":{},"startTime":1779040243639,"traceId":"e7d4a8813714e314"},{"name":"static-generation","duration":607253,"timestamp":232272155645,"id":109,"parentId":1,"tags":{},"startTime":1779040244402,"traceId":"e7d4a8813714e314"},{"name":"telemetry-flush","duration":22154,"timestamp":232272800918,"id":118,"parentId":1,"tags":{},"startTime":1779040245047,"traceId":"e7d4a8813714e314"},{"name":"next-build","duration":16980629,"timestamp":232255842472,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779040228089,"traceId":"e7d4a8813714e314"}]
1
+ [{"name":"run-turbopack","duration":6248396,"timestamp":232823269361,"id":14,"parentId":1,"tags":{},"startTime":1779040795516,"traceId":"85e54838de029e2b"},{"name":"turbopack-build-events","duration":100,"timestamp":232823575293,"id":15,"parentId":1,"tags":{},"startTime":1779040795822,"traceId":"85e54838de029e2b"},{"name":"run-typescript","duration":10025828,"timestamp":232829531789,"id":16,"parentId":1,"tags":{},"startTime":1779040801778,"traceId":"85e54838de029e2b"},{"name":"static-check","duration":886727,"timestamp":232839762845,"id":19,"parentId":1,"tags":{},"startTime":1779040812009,"traceId":"85e54838de029e2b"},{"name":"static-generation","duration":648325,"timestamp":232840664860,"id":109,"parentId":1,"tags":{},"startTime":1779040812911,"traceId":"85e54838de029e2b"},{"name":"telemetry-flush","duration":31114,"timestamp":232841344675,"id":118,"parentId":1,"tags":{},"startTime":1779040813591,"traceId":"85e54838de029e2b"},{"name":"next-build","duration":18363532,"timestamp":232823012287,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779040795259,"traceId":"85e54838de029e2b"}]
@@ -11619,9 +11619,51 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
11619
11619
  data-recent-row-ts={link.key}
11620
11620
  data-recent-row-ts-alpha={tsAlpha.toFixed(2)}
11621
11621
  data-recent-row-ts-lifted={(isRowHovered || isRowPinned) ? 'true' : 'false'}
11622
+ data-recent-row-ts-brightness={(isRowHovered || isRowPinned) ? '1.15' : '1'}
11622
11623
  style={{
11623
11624
  pointerEvents: 'none',
11624
- transition: 'opacity 200ms ease-out',
11625
+ /* R591 recent-row timestamp gains filter
11626
+ brightness(1.15) on row hover/pin. 30th
11627
+ anchor in per-element brightness family.
11628
+ Closes recent-row 3-element brightness
11629
+ coverage:
11630
+ recent-row text (R572, parent <text>
11631
+ filter — count tspan
11632
+ inherits)
11633
+ recent-row ts (R591, sibling <text>
11634
+ — its own filter) ← this round
11635
+
11636
+ Symmetric with the legend-row R590 closure
11637
+ pattern: when a sibling text element can't
11638
+ inherit the row's brightness via ancestor
11639
+ filter, it needs its own filter. R590
11640
+ solved this for legend-count; R591 does
11641
+ the same for recent-ts.
11642
+
11643
+ Triple multiplicative interaction at this
11644
+ surface:
11645
+ opacity: tsAlpha (R191 freshness 1.0 →
11646
+ 0.25 by ageSec) → 1.0 on hover/pin
11647
+ (R484)
11648
+ fill: pal.legendText (neutral gray)
11649
+ brightness: 1.0 → 1.15 on hover/pin
11650
+
11651
+ Stale-data hover semantic: a stale row's
11652
+ timestamp at tsAlpha=0.25 gets opacity 0.25
11653
+ × brightness 1.0 at rest, but jumps to
11654
+ opacity 1.0 × brightness 1.15 on hover —
11655
+ revealing the dim metadata at maximum
11656
+ legibility under attention. Hover brightness
11657
+ is freshness-overriding at this surface,
11658
+ same as R589's freshness-amplifying behavior
11659
+ at the recent-panel count above.
11660
+
11661
+ data-recent-row-ts-brightness attr exposes
11662
+ the gate for tests. */
11663
+ filter: (isRowHovered || isRowPinned)
11664
+ ? 'brightness(1.15)'
11665
+ : undefined,
11666
+ transition: 'opacity 200ms ease-out, filter 200ms ease-out',
11625
11667
  fontVariantNumeric: 'tabular-nums',
11626
11668
  }}
11627
11669
  >
@@ -12764,9 +12806,40 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
12764
12806
  resolved value for tests. */
12765
12807
  data-legend-count-letter-spacing={isPinned ? '0.5px' : hoveredStatus === row.key ? '0.25px' : '0px'}
12766
12808
  data-legend-count-transition="200ms"
12809
+ /* R590 — legend-row count gains filter brightness(1.15)
12810
+ on hover/pin. 29th anchor in per-element brightness
12811
+ family. Closes legend-row label↔count brightness
12812
+ parity within each row:
12813
+ legend label (R572, 10th anchor — stacks w/ DS)
12814
+ legend count (R590 ← this round, plain brightness)
12815
+ Plain brightness (no DS stack) because the count
12816
+ has its own multi-axis hover signature already
12817
+ (opacity 0.65 → 1.0, fill neutral → row.fill tier
12818
+ color, fw 600 → 700 on pin, letter-spacing 3-tier)
12819
+ — adding brightness amplifies the tier-color fill
12820
+ to its hover-locked brightest possible.
12821
+ Triple multiplicative interaction: opacity 1.0 ×
12822
+ tier-color fill × brightness(1.15) — the count
12823
+ reads as confidently "this is the active tier".
12824
+ Existing transition list extends with 'filter
12825
+ 200ms ease-out' matching the existing 200ms
12826
+ cadence across opacity / fill / fw / letter-
12827
+ spacing.
12828
+ Legend-row scope now has parity with recent-row:
12829
+ both row text and count surfaces brighten +15%
12830
+ on row inspection. Recent-row count INHERITS its
12831
+ brightness via the parent <text>'s R572 filter
12832
+ (single ancestor filter covers all child tspans);
12833
+ legend-row count is a sibling <text> so it needs
12834
+ its OWN filter — R590 supplies that.
12835
+ data-legend-count-brightness attr exposes gate. */
12836
+ data-legend-count-brightness={(hoveredStatus === row.key || isPinned) ? '1.15' : '1'}
12767
12837
  style={{
12768
12838
  pointerEvents: 'none',
12769
- transition: 'opacity 200ms ease-out, fill 200ms ease-out, font-weight 200ms ease-out, letter-spacing 200ms ease-out',
12839
+ filter: (hoveredStatus === row.key || isPinned)
12840
+ ? 'brightness(1.15)'
12841
+ : undefined,
12842
+ transition: 'opacity 200ms ease-out, fill 200ms ease-out, font-weight 200ms ease-out, letter-spacing 200ms ease-out, filter 200ms ease-out',
12770
12843
  fontVariantNumeric: 'tabular-nums',
12771
12844
  letterSpacing: isPinned ? '0.5px' :
12772
12845
  hoveredStatus === row.key ? '0.25px' : '0px',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.103",
3
+ "version": "0.5.3-preview.105",
4
4
  "description": "Agent Network Dashboard \u2014 Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,85 @@
1
+ /* Round 590 verification: legend-row count <text> gains
2
+ * filter brightness(1.15) on (hoveredStatus===row.key ||
3
+ * isPinned). 29th anchor in per-element brightness family.
4
+ * Closes legend-row label↔count brightness parity.
5
+ *
6
+ * Test phases:
7
+ * 1. mock nodes → legend rows render (working/idle/offline)
8
+ * 2. rest: filter='none', brightness-attr='1'
9
+ * 3. transition-property contains 'filter'
10
+ * 4. source: filter conditional + data-attr + transition extension
11
+ */
12
+ import { chromium } from 'playwright';
13
+ import { readFileSync } from 'node:fs';
14
+
15
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
16
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
17
+
18
+ const browser = await chromium.launch({ headless: true });
19
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
20
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
21
+ await ctx.addInitScript(() => {
22
+ try {
23
+ localStorage.setItem('anet-theme', 'cyber');
24
+ localStorage.setItem('anet-topo-layout', 'ring');
25
+ sessionStorage.setItem('anet_v3_auth', '1');
26
+ } catch {}
27
+ });
28
+ await ctx.route('**/api/hub/status*', async (route) => {
29
+ const r = await route.fetch();
30
+ const b = await r.json();
31
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
32
+ const mk = (alias) => ({
33
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
34
+ network_id: nid, project_dir: null,
35
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
36
+ });
37
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
38
+ });
39
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
40
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
41
+ const page = await ctx.newPage();
42
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
43
+ await page.waitForSelector('[data-legend-count-brightness]', { timeout: 15000, state: 'attached' });
44
+ await page.waitForTimeout(500);
45
+
46
+ const rest = await page.evaluate(() => {
47
+ const els = document.querySelectorAll('[data-legend-count-brightness]');
48
+ if (!els.length) return null;
49
+ const el = els[0];
50
+ const cs = getComputedStyle(el);
51
+ return {
52
+ count: els.length,
53
+ filter: cs.filter,
54
+ transitionProperty: cs.transitionProperty,
55
+ brightnessAttr: el.getAttribute('data-legend-count-brightness'),
56
+ pinnedAttr: el.getAttribute('data-legend-count-pinned'),
57
+ fillAttr: el.getAttribute('data-legend-count-fill'),
58
+ textContent: el.textContent,
59
+ };
60
+ });
61
+
62
+ await browser.close();
63
+
64
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
65
+ const sourceFilter = /filter: \(hoveredStatus === row\.key \|\| isPinned\)\s*\?\s*'brightness\(1\.15\)'\s*:\s*undefined/.test(src);
66
+ const sourceAttr = /data-legend-count-brightness=\{\(hoveredStatus === row\.key \|\| isPinned\) \? '1\.15' : '1'\}/.test(src);
67
+ const sourceTransition = /transition: 'opacity 200ms ease-out, fill 200ms ease-out, font-weight 200ms ease-out, letter-spacing 200ms ease-out, filter 200ms ease-out'/.test(src);
68
+
69
+ const results = {
70
+ count_present: !!rest,
71
+ count_ge_3: (rest?.count ?? 0) >= 3, // working/idle/offline rows
72
+ rest_filter_none: rest?.filter === 'none',
73
+ rest_brightness_1: rest?.brightnessAttr === '1',
74
+ rest_pinned_false: rest?.pinnedAttr === 'false',
75
+ rest_fill_neutral: rest?.fillAttr === 'neutral',
76
+ transition_has_filter: /filter/.test(rest?.transitionProperty || ''),
77
+ source_filter: sourceFilter,
78
+ source_attr: sourceAttr,
79
+ source_transition: sourceTransition,
80
+ };
81
+ const ok = Object.values(results).every(Boolean);
82
+ console.log(`${ok ? '✅' : '❌'} R590 legend-row-count brightness (29th anchor, legend-row label↔count parity):`,
83
+ JSON.stringify(results, null, 2),
84
+ `\n rest: ${JSON.stringify(rest)}`);
85
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,86 @@
1
+ /* Round 591 verification: recent-row timestamp <text> gains
2
+ * filter brightness(1.15) on (isRowHovered || isRowPinned).
3
+ * 30th anchor in per-element brightness family. Closes
4
+ * recent-row 3-element brightness coverage (text via parent
5
+ * inheritance + count via tspan-inheritance + ts via own filter).
6
+ *
7
+ * Test phases:
8
+ * 1. mock 1 flow message → recent-row + timestamp render
9
+ * 2. rest: filter='none', brightness-attr='1', lifted='false'
10
+ * 3. transition-property contains 'filter'
11
+ * 4. source: filter conditional + data-attr + transition extension
12
+ */
13
+ import { chromium } from 'playwright';
14
+ import { readFileSync } from 'node:fs';
15
+
16
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
17
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
18
+
19
+ const browser = await chromium.launch({ headless: true });
20
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
21
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
22
+ await ctx.addInitScript(() => {
23
+ try {
24
+ localStorage.setItem('anet-theme', 'cyber');
25
+ localStorage.setItem('anet-topo-layout', 'ring');
26
+ sessionStorage.setItem('anet_v3_auth', '1');
27
+ } catch {}
28
+ });
29
+ await ctx.route('**/api/hub/status*', async (route) => {
30
+ const r = await route.fetch();
31
+ const b = await r.json();
32
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
33
+ const mk = (alias) => ({
34
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
35
+ network_id: nid, project_dir: null,
36
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
37
+ });
38
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
39
+ });
40
+ // recent-row + ts only render when flowLinks.length > 0 AND link.last_at present
41
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [
42
+ { from_alias: 'a·1', to_alias: 'a·2', content: 'hi', created_at: fresh },
43
+ ] } }));
44
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
45
+ const page = await ctx.newPage();
46
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
47
+ await page.waitForSelector('[data-recent-row-ts-brightness]', { timeout: 15000, state: 'attached' });
48
+ await page.waitForTimeout(500);
49
+
50
+ const rest = await page.evaluate(() => {
51
+ const el = document.querySelector('[data-recent-row-ts-brightness]');
52
+ if (!el) return null;
53
+ const cs = getComputedStyle(el);
54
+ return {
55
+ filter: cs.filter,
56
+ transitionProperty: cs.transitionProperty,
57
+ brightnessAttr: el.getAttribute('data-recent-row-ts-brightness'),
58
+ liftedAttr: el.getAttribute('data-recent-row-ts-lifted'),
59
+ alphaAttr: el.getAttribute('data-recent-row-ts-alpha'),
60
+ textContent: el.textContent,
61
+ };
62
+ });
63
+
64
+ await browser.close();
65
+
66
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
67
+ const sourceFilter = /filter: \(isRowHovered \|\| isRowPinned\)\s*\?\s*'brightness\(1\.15\)'\s*:\s*undefined/.test(src);
68
+ const sourceAttr = /data-recent-row-ts-brightness=\{\(isRowHovered \|\| isRowPinned\) \? '1\.15' : '1'\}/.test(src);
69
+ const sourceTransition = /transition: 'opacity 200ms ease-out, filter 200ms ease-out'/.test(src);
70
+
71
+ const results = {
72
+ ts_present: !!rest,
73
+ rest_filter_none: rest?.filter === 'none',
74
+ rest_brightness_1: rest?.brightnessAttr === '1',
75
+ rest_lifted_false: rest?.liftedAttr === 'false',
76
+ has_alpha: !!rest?.alphaAttr,
77
+ transition_has_filter: /filter/.test(rest?.transitionProperty || ''),
78
+ source_filter: sourceFilter,
79
+ source_attr: sourceAttr,
80
+ source_transition: sourceTransition,
81
+ };
82
+ const ok = Object.values(results).every(Boolean);
83
+ console.log(`${ok ? '✅' : '❌'} R591 recent-row-ts brightness (30th anchor, recent-row 3-element closure):`,
84
+ JSON.stringify(results, null, 2),
85
+ `\n rest: ${JSON.stringify(rest)}`);
86
+ process.exit(ok ? 0 : 1);