@sleep2agi/agent-network-dashboard 0.5.2-preview.14 → 0.5.2-preview.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +5 -5
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/admin.html +1 -1
  21. package/.next/server/app/admin.rsc +1 -1
  22. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  28. package/.next/server/app/index.html +2 -2
  29. package/.next/server/app/index.rsc +2 -2
  30. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/login.html +2 -2
  37. package/.next/server/app/login.rsc +2 -2
  38. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  39. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  44. package/.next/server/app/logs.html +1 -1
  45. package/.next/server/app/logs.rsc +1 -1
  46. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  52. package/.next/server/app/messages.html +1 -1
  53. package/.next/server/app/messages.rsc +1 -1
  54. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  60. package/.next/server/app/node.html +1 -1
  61. package/.next/server/app/node.rsc +1 -1
  62. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  68. package/.next/server/app/nodes.html +1 -1
  69. package/.next/server/app/nodes.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  76. package/.next/server/app/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/server-logs.html +1 -1
  78. package/.next/server/app/server-logs.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  84. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  85. package/.next/server/app/settings/networks.html +1 -1
  86. package/.next/server/app/settings/networks.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  94. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/settings/tokens.html +1 -1
  96. package/.next/server/app/settings/tokens.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  103. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  104. package/.next/server/app/settings.html +2 -2
  105. package/.next/server/app/settings.rsc +2 -2
  106. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  110. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  111. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  112. package/.next/server/app/tasks.html +1 -1
  113. package/.next/server/app/tasks.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  120. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  121. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
  123. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  126. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  127. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  128. package/.next/server/middleware-build-manifest.js +3 -3
  129. package/.next/server/pages/404.html +1 -1
  130. package/.next/server/pages/500.html +1 -1
  131. package/.next/static/chunks/0.s7a_e8xj5g2.js +4 -0
  132. package/.next/static/chunks/{04b_12c5885b5.js → 0alv0vgv6uzu8.js} +1 -1
  133. package/.next/static/chunks/{14o4hd7id72r~.js → 0b4iqudmfuhkn.js} +1 -1
  134. package/.next/static/chunks/{0zjtpsmuy1i.c.js → 10llf~zujd0d2.js} +1 -1
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +37 -2
  138. package/package.json +1 -1
  139. package/scripts/topo-edge-particle-opacity-lift-test.mjs +109 -0
  140. package/scripts/topo-recent-row-ts-lift-test.mjs +97 -0
  141. package/.next/static/chunks/17d_7.3jb6rdy.js +0 -4
  142. /package/.next/static/{ElkJkOVP5cKRdjvx4gS_q → 8Iu6xQSB0egn9u8NLSkeP}/_buildManifest.js +0 -0
  143. /package/.next/static/{ElkJkOVP5cKRdjvx4gS_q → 8Iu6xQSB0egn9u8NLSkeP}/_clientMiddlewareManifest.js +0 -0
  144. /package/.next/static/{ElkJkOVP5cKRdjvx4gS_q → 8Iu6xQSB0egn9u8NLSkeP}/_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.2-preview.14"],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.2-preview.16"],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.2-preview.14"],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.2-preview.16"],70286)}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":276,"timestamp":181968327341,"id":4,"parentId":1,"tags":{},"startTime":1778989940574,"traceId":"7afff46fa3e136fa"},{"name":"load-custom-routes","duration":512,"timestamp":181968327779,"id":5,"parentId":1,"tags":{},"startTime":1778989940574,"traceId":"7afff46fa3e136fa"},{"name":"create-dist-dir","duration":754,"timestamp":181968328336,"id":6,"parentId":1,"tags":{},"startTime":1778989940575,"traceId":"7afff46fa3e136fa"},{"name":"clean","duration":32841,"timestamp":181968329809,"id":7,"parentId":1,"tags":{},"startTime":1778989940576,"traceId":"7afff46fa3e136fa"},{"name":"discover-routes","duration":10550,"timestamp":181968454851,"id":8,"parentId":1,"tags":{},"startTime":1778989940701,"traceId":"7afff46fa3e136fa"},{"name":"create-root-mapping","duration":128,"timestamp":181968465464,"id":9,"parentId":1,"tags":{},"startTime":1778989940712,"traceId":"7afff46fa3e136fa"},{"name":"generate-route-types","duration":35522,"timestamp":181968468261,"id":10,"parentId":1,"tags":{},"startTime":1778989940715,"traceId":"7afff46fa3e136fa"},{"name":"public-dir-conflict-check","duration":136,"timestamp":181968503909,"id":11,"parentId":1,"tags":{},"startTime":1778989940750,"traceId":"7afff46fa3e136fa"},{"name":"generate-routes-manifest","duration":5435,"timestamp":181968504230,"id":12,"parentId":1,"tags":{},"startTime":1778989940751,"traceId":"7afff46fa3e136fa"},{"name":"run-turbopack","duration":5949898,"timestamp":181968515055,"id":14,"parentId":1,"tags":{},"startTime":1778989940761,"traceId":"7afff46fa3e136fa"},{"name":"turbopack-build-events","duration":103,"timestamp":181968852272,"id":15,"parentId":1,"tags":{},"startTime":1778989941099,"traceId":"7afff46fa3e136fa"},{"name":"run-typescript","duration":9472695,"timestamp":181974489916,"id":16,"parentId":1,"tags":{},"startTime":1778989946736,"traceId":"7afff46fa3e136fa"},{"name":"generate-required-server-files","duration":2203,"timestamp":181983963546,"id":18,"parentId":1,"tags":{},"startTime":1778989956210,"traceId":"7afff46fa3e136fa"},{"name":"check-static-error-page","duration":13144,"timestamp":181984167449,"id":20,"parentId":19,"tags":{},"startTime":1778989956414,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":444356,"timestamp":181984183576,"id":65,"parentId":22,"tags":{},"startTime":1778989956430,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":458255,"timestamp":181984169866,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778989956416,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":558731,"timestamp":181984184481,"id":68,"parentId":27,"tags":{},"startTime":1778989956431,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":570141,"timestamp":181984173167,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778989956419,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":564529,"timestamp":181984185122,"id":71,"parentId":30,"tags":{},"startTime":1778989956431,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":576168,"timestamp":181984173562,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778989956420,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":581137,"timestamp":181984185198,"id":72,"parentId":32,"tags":{},"startTime":1778989956431,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":592435,"timestamp":181984173975,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778989956420,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":583229,"timestamp":181984183691,"id":66,"parentId":25,"tags":{},"startTime":1778989956430,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":594148,"timestamp":181984172829,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778989956419,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":587084,"timestamp":181984185480,"id":75,"parentId":35,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":598342,"timestamp":181984174287,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778989956421,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":589019,"timestamp":181984183810,"id":67,"parentId":26,"tags":{},"startTime":1778989956430,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":599838,"timestamp":181984173028,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778989956419,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":595875,"timestamp":181984185446,"id":74,"parentId":34,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":607174,"timestamp":181984174207,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778989956420,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":601252,"timestamp":181984184629,"id":69,"parentId":28,"tags":{},"startTime":1778989956431,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":612637,"timestamp":181984173295,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778989956420,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":603392,"timestamp":181984185549,"id":78,"parentId":38,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":613886,"timestamp":181984175097,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778989956421,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":605642,"timestamp":181984185568,"id":79,"parentId":39,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":616067,"timestamp":181984175229,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778989956422,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":609158,"timestamp":181984185586,"id":80,"parentId":40,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":619454,"timestamp":181984175332,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778989956422,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":613802,"timestamp":181984184912,"id":70,"parentId":29,"tags":{},"startTime":1778989956431,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":625340,"timestamp":181984173414,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778989956420,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":619353,"timestamp":181984185621,"id":83,"parentId":45,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":628730,"timestamp":181984176301,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778989956423,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":620241,"timestamp":181984185530,"id":77,"parentId":37,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":630911,"timestamp":181984174914,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778989956421,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":628520,"timestamp":181984185609,"id":82,"parentId":44,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":638016,"timestamp":181984176157,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778989956422,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":633428,"timestamp":181984185656,"id":86,"parentId":48,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":642514,"timestamp":181984176630,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778989956423,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":633922,"timestamp":181984185367,"id":73,"parentId":33,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":645199,"timestamp":181984174114,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778989956420,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":638229,"timestamp":181984185642,"id":85,"parentId":47,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":647613,"timestamp":181984176528,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778989956423,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":638801,"timestamp":181984185668,"id":87,"parentId":49,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":647738,"timestamp":181984176769,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778989956423,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":640253,"timestamp":181984185633,"id":84,"parentId":46,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":649505,"timestamp":181984176419,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778989956423,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":645453,"timestamp":181984183285,"id":64,"parentId":21,"tags":{},"startTime":1778989956430,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":660096,"timestamp":181984168681,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778989956415,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":626954,"timestamp":181984204412,"id":91,"parentId":31,"tags":{},"startTime":1778989956451,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":657718,"timestamp":181984173695,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778989956420,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":633847,"timestamp":181984209086,"id":93,"parentId":43,"tags":{},"startTime":1778989956455,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":667138,"timestamp":181984175842,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778989956422,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":660076,"timestamp":181984185692,"id":89,"parentId":51,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":668841,"timestamp":181984176991,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778989956423,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":662022,"timestamp":181984185501,"id":76,"parentId":36,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":672843,"timestamp":181984174720,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778989956421,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":651962,"timestamp":181984200278,"id":90,"parentId":24,"tags":{},"startTime":1778989956447,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":681997,"timestamp":181984170290,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778989956417,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":673774,"timestamp":181984185678,"id":88,"parentId":50,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":683072,"timestamp":181984176881,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778989956423,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":693176,"timestamp":181984185596,"id":81,"parentId":42,"tags":{},"startTime":1778989956432,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":703161,"timestamp":181984175691,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1778989956422,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":704786,"timestamp":181984219766,"id":97,"parentId":54,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":746804,"timestamp":181984177813,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1778989956424,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":709109,"timestamp":181984219738,"id":96,"parentId":53,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":751260,"timestamp":181984177645,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1778989956424,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":726580,"timestamp":181984219979,"id":101,"parentId":59,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":767472,"timestamp":181984179151,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778989956425,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":726921,"timestamp":181984219837,"id":100,"parentId":58,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":767930,"timestamp":181984178879,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778989956425,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":727404,"timestamp":181984219532,"id":94,"parentId":23,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":776869,"timestamp":181984170095,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778989956416,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":738810,"timestamp":181984219783,"id":98,"parentId":55,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":780657,"timestamp":181984177989,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1778989956424,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":751497,"timestamp":181984207332,"id":92,"parentId":41,"tags":{},"startTime":1778989956454,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":783434,"timestamp":181984175441,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1778989956422,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":738786,"timestamp":181984220157,"id":104,"parentId":63,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":778684,"timestamp":181984180278,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778989956427,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":741593,"timestamp":181984219567,"id":95,"parentId":52,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":783749,"timestamp":181984177455,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1778989956424,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":743080,"timestamp":181984220109,"id":102,"parentId":61,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":783351,"timestamp":181984179881,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778989956426,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":731978,"timestamp":181984233869,"id":106,"parentId":57,"tags":{},"startTime":1778989956480,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":787446,"timestamp":181984178439,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1778989956425,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":746555,"timestamp":181984220172,"id":105,"parentId":60,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":787361,"timestamp":181984179386,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1778989956426,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":749860,"timestamp":181984220138,"id":103,"parentId":62,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":789959,"timestamp":181984180085,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778989956426,"traceId":"7afff46fa3e136fa"},{"name":"is-page-static","duration":766198,"timestamp":181984219818,"id":99,"parentId":56,"tags":{},"startTime":1778989956466,"traceId":"7afff46fa3e136fa"},{"name":"check-page","duration":807851,"timestamp":181984178219,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778989956424,"traceId":"7afff46fa3e136fa"},{"name":"static-check","duration":819457,"timestamp":181984166680,"id":19,"parentId":1,"tags":{},"startTime":1778989956413,"traceId":"7afff46fa3e136fa"}]
2
- [{"name":"write-routes-manifest","duration":609,"timestamp":181984998021,"id":108,"parentId":1,"tags":{},"startTime":1778989957244,"traceId":"7afff46fa3e136fa"},{"name":"load-dotenv","duration":60,"timestamp":181985014027,"id":111,"parentId":110,"tags":{},"startTime":1778989957260,"traceId":"7afff46fa3e136fa"},{"name":"run-export-path-map","duration":722,"timestamp":181985016708,"id":112,"parentId":110,"tags":{},"startTime":1778989957263,"traceId":"7afff46fa3e136fa"},{"name":"next-export","duration":598929,"timestamp":181985012395,"id":110,"parentId":1,"tags":{},"startTime":1778989957259,"traceId":"7afff46fa3e136fa"},{"name":"move-exported-app-not-found-","duration":756,"timestamp":181985614546,"id":113,"parentId":109,"tags":{},"startTime":1778989957861,"traceId":"7afff46fa3e136fa"},{"name":"move-exported-app-global-error-","duration":671,"timestamp":181985615416,"id":114,"parentId":109,"tags":{},"startTime":1778989957862,"traceId":"7afff46fa3e136fa"},{"name":"static-generation","duration":613646,"timestamp":181985004342,"id":109,"parentId":1,"tags":{},"startTime":1778989957251,"traceId":"7afff46fa3e136fa"},{"name":"write-routes-manifest","duration":437,"timestamp":181985618218,"id":115,"parentId":1,"tags":{},"startTime":1778989957864,"traceId":"7afff46fa3e136fa"},{"name":"print-tree-view","duration":4255,"timestamp":181985636249,"id":116,"parentId":1,"tags":{},"startTime":1778989957883,"traceId":"7afff46fa3e136fa"},{"name":"write-route-bundle-stats","duration":13247,"timestamp":181985640539,"id":117,"parentId":1,"tags":{},"startTime":1778989957887,"traceId":"7afff46fa3e136fa"},{"name":"telemetry-flush","duration":23871,"timestamp":181985653830,"id":118,"parentId":1,"tags":{},"startTime":1778989957900,"traceId":"7afff46fa3e136fa"},{"name":"next-build","duration":17402453,"timestamp":181968275289,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778989940522,"traceId":"7afff46fa3e136fa"}]
1
+ [{"name":"generate-buildid","duration":293,"timestamp":182870862645,"id":4,"parentId":1,"tags":{},"startTime":1778990843109,"traceId":"de7ccb772bfe4cfe"},{"name":"load-custom-routes","duration":446,"timestamp":182870863095,"id":5,"parentId":1,"tags":{},"startTime":1778990843109,"traceId":"de7ccb772bfe4cfe"},{"name":"create-dist-dir","duration":880,"timestamp":182870863580,"id":6,"parentId":1,"tags":{},"startTime":1778990843110,"traceId":"de7ccb772bfe4cfe"},{"name":"clean","duration":33510,"timestamp":182870865213,"id":7,"parentId":1,"tags":{},"startTime":1778990843111,"traceId":"de7ccb772bfe4cfe"},{"name":"discover-routes","duration":23539,"timestamp":182870980156,"id":8,"parentId":1,"tags":{},"startTime":1778990843226,"traceId":"de7ccb772bfe4cfe"},{"name":"create-root-mapping","duration":199,"timestamp":182871003772,"id":9,"parentId":1,"tags":{},"startTime":1778990843250,"traceId":"de7ccb772bfe4cfe"},{"name":"generate-route-types","duration":20828,"timestamp":182871007355,"id":10,"parentId":1,"tags":{},"startTime":1778990843254,"traceId":"de7ccb772bfe4cfe"},{"name":"public-dir-conflict-check","duration":134,"timestamp":182871028304,"id":11,"parentId":1,"tags":{},"startTime":1778990843275,"traceId":"de7ccb772bfe4cfe"},{"name":"generate-routes-manifest","duration":6385,"timestamp":182871028628,"id":12,"parentId":1,"tags":{},"startTime":1778990843275,"traceId":"de7ccb772bfe4cfe"},{"name":"run-turbopack","duration":6217018,"timestamp":182871041581,"id":14,"parentId":1,"tags":{},"startTime":1778990843288,"traceId":"de7ccb772bfe4cfe"},{"name":"turbopack-build-events","duration":104,"timestamp":182871339381,"id":15,"parentId":1,"tags":{},"startTime":1778990843586,"traceId":"de7ccb772bfe4cfe"},{"name":"run-typescript","duration":10190878,"timestamp":182877266892,"id":16,"parentId":1,"tags":{},"startTime":1778990849513,"traceId":"de7ccb772bfe4cfe"},{"name":"generate-required-server-files","duration":2591,"timestamp":182887459041,"id":18,"parentId":1,"tags":{},"startTime":1778990859705,"traceId":"de7ccb772bfe4cfe"},{"name":"check-static-error-page","duration":18126,"timestamp":182887690587,"id":20,"parentId":19,"tags":{},"startTime":1778990859937,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":542001,"timestamp":182887712746,"id":65,"parentId":22,"tags":{},"startTime":1778990859959,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":561964,"timestamp":182887692976,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778990859939,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":622644,"timestamp":182887713226,"id":68,"parentId":27,"tags":{},"startTime":1778990859959,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":639710,"timestamp":182887696268,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778990859943,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":644983,"timestamp":182887712419,"id":64,"parentId":21,"tags":{},"startTime":1778990859959,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":665658,"timestamp":182887691833,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778990859938,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":643773,"timestamp":182887713931,"id":72,"parentId":32,"tags":{},"startTime":1778990859960,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":659953,"timestamp":182887697800,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778990859944,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":660951,"timestamp":182887714230,"id":74,"parentId":34,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":677158,"timestamp":182887698107,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778990859944,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":666741,"timestamp":182887713664,"id":70,"parentId":29,"tags":{},"startTime":1778990859960,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":683369,"timestamp":182887697105,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778990859943,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":671419,"timestamp":182887714283,"id":76,"parentId":36,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":687070,"timestamp":182887698693,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778990859945,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":679819,"timestamp":182887714261,"id":75,"parentId":35,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":695918,"timestamp":182887698224,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778990859944,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":684597,"timestamp":182887714329,"id":78,"parentId":38,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":699959,"timestamp":182887699037,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778990859945,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":689774,"timestamp":182887714348,"id":79,"parentId":39,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":705050,"timestamp":182887699131,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778990859945,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":695869,"timestamp":182887714310,"id":77,"parentId":37,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":711346,"timestamp":182887698888,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778990859945,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":695758,"timestamp":182887714668,"id":80,"parentId":40,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":711233,"timestamp":182887699232,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778990859946,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":699078,"timestamp":182887712916,"id":66,"parentId":25,"tags":{},"startTime":1778990859959,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":716161,"timestamp":182887695907,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778990859942,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":700311,"timestamp":182887714732,"id":82,"parentId":44,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":714226,"timestamp":182887700875,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778990859947,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":704920,"timestamp":182887714750,"id":83,"parentId":45,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":718693,"timestamp":182887701029,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778990859947,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":705107,"timestamp":182887714762,"id":84,"parentId":46,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":718770,"timestamp":182887701135,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778990859947,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":711109,"timestamp":182887714806,"id":86,"parentId":48,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":722419,"timestamp":182887703571,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778990859950,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":720670,"timestamp":182887713860,"id":71,"parentId":30,"tags":{},"startTime":1778990859960,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":737241,"timestamp":182887697336,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778990859944,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":719921,"timestamp":182887714818,"id":87,"parentId":49,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":731009,"timestamp":182887703764,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778990859950,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":720814,"timestamp":182887714140,"id":73,"parentId":33,"tags":{},"startTime":1778990859960,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":737040,"timestamp":182887697949,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778990859944,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":724386,"timestamp":182887714848,"id":89,"parentId":51,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":735187,"timestamp":182887704095,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778990859950,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":728639,"timestamp":182887714715,"id":81,"parentId":42,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":743022,"timestamp":182887700391,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1778990859947,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":725636,"timestamp":182887718491,"id":90,"parentId":24,"tags":{},"startTime":1778990859965,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":750779,"timestamp":182887693396,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778990859940,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":732022,"timestamp":182887713081,"id":67,"parentId":26,"tags":{},"startTime":1778990859959,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":749033,"timestamp":182887696111,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778990859942,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":727881,"timestamp":182887723050,"id":93,"parentId":43,"tags":{},"startTime":1778990859969,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":750407,"timestamp":182887700563,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778990859947,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":735593,"timestamp":182887719478,"id":91,"parentId":41,"tags":{},"startTime":1778990859966,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":755798,"timestamp":182887699325,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1778990859946,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":725738,"timestamp":182887735499,"id":95,"parentId":52,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":756822,"timestamp":182887704459,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1778990859951,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":741510,"timestamp":182887721513,"id":92,"parentId":31,"tags":{},"startTime":1778990859968,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":765579,"timestamp":182887697486,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778990859944,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":751473,"timestamp":182887714777,"id":85,"parentId":47,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":765027,"timestamp":182887701274,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778990859948,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":732994,"timestamp":182887735537,"id":97,"parentId":54,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":763837,"timestamp":182887704739,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1778990859951,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":740298,"timestamp":182887735581,"id":100,"parentId":58,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":770101,"timestamp":182887705826,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778990859952,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":765024,"timestamp":182887714833,"id":88,"parentId":50,"tags":{},"startTime":1778990859961,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":775943,"timestamp":182887703955,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778990859950,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":748222,"timestamp":182887735719,"id":101,"parentId":59,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":777985,"timestamp":182887706033,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778990859952,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":763697,"timestamp":182887735753,"id":103,"parentId":62,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":791208,"timestamp":182887708297,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778990859955,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":772852,"timestamp":182887735768,"id":104,"parentId":63,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":800222,"timestamp":182887708454,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778990859955,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":780385,"timestamp":182887735783,"id":105,"parentId":60,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":810041,"timestamp":182887706194,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1778990859952,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":776314,"timestamp":182887750944,"id":106,"parentId":57,"tags":{},"startTime":1778990859997,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":821971,"timestamp":182887705336,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1778990859952,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":802618,"timestamp":182887735521,"id":96,"parentId":53,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":833596,"timestamp":182887704607,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1778990859951,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":810856,"timestamp":182887735554,"id":98,"parentId":55,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":841543,"timestamp":182887704926,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1778990859951,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":834712,"timestamp":182887713344,"id":69,"parentId":28,"tags":{},"startTime":1778990859960,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":851711,"timestamp":182887696404,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778990859943,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":814669,"timestamp":182887735566,"id":99,"parentId":56,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":845160,"timestamp":182887705125,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778990859951,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":817486,"timestamp":182887735461,"id":94,"parentId":23,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":859771,"timestamp":182887693215,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778990859939,"traceId":"de7ccb772bfe4cfe"},{"name":"is-page-static","duration":824221,"timestamp":182887735738,"id":102,"parentId":61,"tags":{},"startTime":1778990859982,"traceId":"de7ccb772bfe4cfe"},{"name":"check-page","duration":851922,"timestamp":182887708095,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778990859954,"traceId":"de7ccb772bfe4cfe"},{"name":"static-check","duration":871408,"timestamp":182887688657,"id":19,"parentId":1,"tags":{},"startTime":1778990859935,"traceId":"de7ccb772bfe4cfe"}]
2
+ [{"name":"write-routes-manifest","duration":470,"timestamp":182888571197,"id":108,"parentId":1,"tags":{},"startTime":1778990860817,"traceId":"de7ccb772bfe4cfe"},{"name":"load-dotenv","duration":48,"timestamp":182888581945,"id":111,"parentId":110,"tags":{},"startTime":1778990860828,"traceId":"de7ccb772bfe4cfe"},{"name":"run-export-path-map","duration":642,"timestamp":182888584840,"id":112,"parentId":110,"tags":{},"startTime":1778990860831,"traceId":"de7ccb772bfe4cfe"},{"name":"next-export","duration":614868,"timestamp":182888580725,"id":110,"parentId":1,"tags":{},"startTime":1778990860827,"traceId":"de7ccb772bfe4cfe"},{"name":"move-exported-app-not-found-","duration":709,"timestamp":182889200201,"id":113,"parentId":109,"tags":{},"startTime":1778990861446,"traceId":"de7ccb772bfe4cfe"},{"name":"move-exported-app-global-error-","duration":451,"timestamp":182889201066,"id":114,"parentId":109,"tags":{},"startTime":1778990861447,"traceId":"de7ccb772bfe4cfe"},{"name":"static-generation","duration":629105,"timestamp":182888575220,"id":109,"parentId":1,"tags":{},"startTime":1778990860821,"traceId":"de7ccb772bfe4cfe"},{"name":"write-routes-manifest","duration":710,"timestamp":182889204670,"id":115,"parentId":1,"tags":{},"startTime":1778990861451,"traceId":"de7ccb772bfe4cfe"},{"name":"print-tree-view","duration":4830,"timestamp":182889217901,"id":116,"parentId":1,"tags":{},"startTime":1778990861464,"traceId":"de7ccb772bfe4cfe"},{"name":"write-route-bundle-stats","duration":15310,"timestamp":182889222774,"id":117,"parentId":1,"tags":{},"startTime":1778990861469,"traceId":"de7ccb772bfe4cfe"},{"name":"telemetry-flush","duration":33043,"timestamp":182889238120,"id":118,"parentId":1,"tags":{},"startTime":1778990861484,"traceId":"de7ccb772bfe4cfe"},{"name":"next-build","duration":18458778,"timestamp":182870812425,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778990843059,"traceId":"de7ccb772bfe4cfe"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5949898,"timestamp":181968515055,"id":14,"parentId":1,"tags":{},"startTime":1778989940761,"traceId":"7afff46fa3e136fa"},{"name":"turbopack-build-events","duration":103,"timestamp":181968852272,"id":15,"parentId":1,"tags":{},"startTime":1778989941099,"traceId":"7afff46fa3e136fa"},{"name":"run-typescript","duration":9472695,"timestamp":181974489916,"id":16,"parentId":1,"tags":{},"startTime":1778989946736,"traceId":"7afff46fa3e136fa"},{"name":"static-check","duration":819457,"timestamp":181984166680,"id":19,"parentId":1,"tags":{},"startTime":1778989956413,"traceId":"7afff46fa3e136fa"},{"name":"static-generation","duration":613646,"timestamp":181985004342,"id":109,"parentId":1,"tags":{},"startTime":1778989957251,"traceId":"7afff46fa3e136fa"},{"name":"telemetry-flush","duration":23871,"timestamp":181985653830,"id":118,"parentId":1,"tags":{},"startTime":1778989957900,"traceId":"7afff46fa3e136fa"},{"name":"next-build","duration":17402453,"timestamp":181968275289,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778989940522,"traceId":"7afff46fa3e136fa"}]
1
+ [{"name":"run-turbopack","duration":6217018,"timestamp":182871041581,"id":14,"parentId":1,"tags":{},"startTime":1778990843288,"traceId":"de7ccb772bfe4cfe"},{"name":"turbopack-build-events","duration":104,"timestamp":182871339381,"id":15,"parentId":1,"tags":{},"startTime":1778990843586,"traceId":"de7ccb772bfe4cfe"},{"name":"run-typescript","duration":10190878,"timestamp":182877266892,"id":16,"parentId":1,"tags":{},"startTime":1778990849513,"traceId":"de7ccb772bfe4cfe"},{"name":"static-check","duration":871408,"timestamp":182887688657,"id":19,"parentId":1,"tags":{},"startTime":1778990859935,"traceId":"de7ccb772bfe4cfe"},{"name":"static-generation","duration":629105,"timestamp":182888575220,"id":109,"parentId":1,"tags":{},"startTime":1778990860821,"traceId":"de7ccb772bfe4cfe"},{"name":"telemetry-flush","duration":33043,"timestamp":182889238120,"id":118,"parentId":1,"tags":{},"startTime":1778990861484,"traceId":"de7ccb772bfe4cfe"},{"name":"next-build","duration":18458778,"timestamp":182870812425,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778990843059,"traceId":"de7ccb772bfe4cfe"}]
@@ -5363,10 +5363,32 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5363
5363
  r={(isHoveredEdge || isEndpointHoveredEdge) ? 5.5 : 4.5}
5364
5364
  fill={pal.flowParticle}
5365
5365
  filter={isLight ? undefined : 'url(#topo-glow)'}
5366
- opacity={Math.min(1, fresh * edgeOpacityMul)}
5366
+ /* Round 485 / Loop — extends R484's "inspection
5367
+ overrides encoding" pattern to a 2nd anchor:
5368
+ edge particle opacity lifts to 1.0 on
5369
+ isHoveredEdge OR isEndpointHoveredEdge (user
5370
+ hovering the edge directly OR hovering one
5371
+ of its endpoint nodes). Pre-R485 the particle
5372
+ inherited freshness × edgeOpacityMul decay
5373
+ so a stale edge's particle painted near the
5374
+ 0.30 floor even when the operator was
5375
+ inspecting it; R485 lifts to 1.0 on attention.
5376
+ data-recent-row-ts-alpha-attribute analog —
5377
+ freshness encoding preserved on rest tier,
5378
+ opacity override engages only on inspection.
5379
+ Sibling lift family — inspection-overrides-
5380
+ encoding pattern, now 2 anchors:
5381
+ R484 recent-row timestamp freshness → 1.0
5382
+ R485 edge particle freshness → 1.0 (this)
5383
+ data-edge-particle-opacity-lifted attr exposes
5384
+ the override gate; data-edge-particle-opacity-
5385
+ rest preserves the freshness reading. */
5386
+ opacity={(isHoveredEdge || isEndpointHoveredEdge) ? 1 : Math.min(1, fresh * edgeOpacityMul)}
5367
5387
  data-edge-particle={link.key}
5368
5388
  data-edge-particle-radius={(isHoveredEdge || isEndpointHoveredEdge) ? 5.5 : 4.5}
5369
5389
  data-edge-particle-lifted={(isHoveredEdge || isEndpointHoveredEdge) ? 'true' : 'false'}
5390
+ data-edge-particle-opacity-rest={Math.min(1, fresh * edgeOpacityMul).toFixed(2)}
5391
+ data-edge-particle-opacity-lifted={(isHoveredEdge || isEndpointHoveredEdge) ? 'true' : 'false'}
5370
5392
  style={{ transition: 'fill 200ms ease-out, opacity 200ms ease-out, r 200ms ease-out' }}
5371
5393
  >
5372
5394
  <animateMotion
@@ -9319,6 +9341,18 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9319
9341
  {' · '}
9320
9342
  <tspan opacity="0.7" data-recent-row-content-tspan>{truncate(link.content, 8)}</tspan>
9321
9343
  </text>
9344
+ {/* Round 484 / Loop — recent-row timestamp opacity
9345
+ lifts to 1.0 when isRowHovered || isRowPinned,
9346
+ regardless of freshness alpha. R191 origin
9347
+ decays tsAlpha along with the row's freshness;
9348
+ pre-R484 hovering/pinning the row left the
9349
+ timestamp dim — user inspecting stale data
9350
+ fought the freshness encoding. R484 lifts to
9351
+ 1.0 on attention. Sibling to R472/R474 in the
9352
+ recent-row state-flip family. data-recent-row-
9353
+ ts-lifted attr exposes the gate; original
9354
+ data-recent-row-ts-alpha preserved as R191
9355
+ freshness reading. */}
9322
9356
  {lastAt ? (
9323
9357
  /* Round 321 / Loop: lastAt freshness timestamp picks
9324
9358
  up fontVariantNumeric tabular-nums. The string
@@ -9342,9 +9376,10 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9342
9376
  fill={pal.legendText}
9343
9377
  fontSize="8"
9344
9378
  fontFamily="monospace"
9345
- opacity={tsAlpha}
9379
+ opacity={(isRowHovered || isRowPinned) ? 1 : tsAlpha}
9346
9380
  data-recent-row-ts={link.key}
9347
9381
  data-recent-row-ts-alpha={tsAlpha.toFixed(2)}
9382
+ data-recent-row-ts-lifted={(isRowHovered || isRowPinned) ? 'true' : 'false'}
9348
9383
  style={{
9349
9384
  pointerEvents: 'none',
9350
9385
  transition: 'opacity 200ms ease-out',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.2-preview.14",
3
+ "version": "0.5.2-preview.16",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,109 @@
1
+ /* Round 485 verification: edge particle opacity lifts to 1.0 on
2
+ * isHoveredEdge OR isEndpointHoveredEdge (user hovering edge OR
3
+ * one of its endpoint nodes). Extends R484's "inspection overrides
4
+ * encoding" pattern to a 2nd anchor at the edge-particle scope.
5
+ *
6
+ * Contract:
7
+ * - rest stale edge: opacity matches freshness × edgeOpacityMul,
8
+ * data-edge-particle-opacity-lifted='false'
9
+ * - hover one of the endpoint nodes: that edge's particle
10
+ * opacity lifts to '1', lifted='true', rest-opacity attr
11
+ * preserved (encoding intact)
12
+ * - source-file conditional wired
13
+ */
14
+ import { chromium } from 'playwright';
15
+ import { readFileSync } from 'node:fs';
16
+
17
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
18
+ const sessionFresh = new Date(Date.now() - 60 * 1000).toISOString();
19
+ const fiveMinAgo = new Date(Date.now() - 5 * 60 * 1000).toISOString();
20
+
21
+ const browser = await chromium.launch({ headless: true });
22
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
23
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
24
+ await ctx.addInitScript(() => {
25
+ try {
26
+ localStorage.setItem('anet-theme', 'cyber');
27
+ localStorage.setItem('anet-topo-layout', 'ring');
28
+ sessionStorage.setItem('anet_v3_auth', '1');
29
+ } catch {}
30
+ });
31
+ await ctx.route('**/api/hub/status*', async (route) => {
32
+ const r = await route.fetch();
33
+ const b = await r.json();
34
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
35
+ const mk = (alias, status) => ({
36
+ alias, status, model: 'claude-opus-4', runtime: 'claude-code-cli',
37
+ network_id: nid, project_dir: null,
38
+ created_at: sessionFresh, updated_at: sessionFresh, last_seen_at: sessionFresh,
39
+ });
40
+ await route.fulfill({ response: r, json: { ...b, sessions: [
41
+ mk('a·1', 'working'), mk('a·2', 'idle'),
42
+ ] } });
43
+ });
44
+ // Stale message — freshness alpha decays to ~0.30 floor
45
+ await ctx.route('**/api/hub/messages*', (route) => route.fulfill({ json: {
46
+ messages: [
47
+ { id: 'm1', from_alias: 'a·1', to_alias: 'a·2', content: 'old', created_at: fiveMinAgo },
48
+ ],
49
+ } }));
50
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
51
+
52
+ const page = await ctx.newPage();
53
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
54
+ await page.waitForSelector('[data-edge-particle]', { timeout: 15000 });
55
+ await page.waitForTimeout(500);
56
+
57
+ const readParticle = () => page.evaluate(() => {
58
+ const p = document.querySelector('[data-edge-particle]');
59
+ if (!p) return null;
60
+ return {
61
+ key: p.getAttribute('data-edge-particle'),
62
+ lifted: p.getAttribute('data-edge-particle-opacity-lifted'),
63
+ restOp: p.getAttribute('data-edge-particle-opacity-rest'),
64
+ opacity: p.getAttribute('opacity'),
65
+ };
66
+ });
67
+
68
+ const rest = await readParticle();
69
+ // Hover the source node (a·1) to trigger isEndpointHoveredEdge
70
+ const sourceNode = await page.$('g[data-node="a·1"]');
71
+ let hovered = null;
72
+ if (sourceNode) {
73
+ await sourceNode.hover();
74
+ await page.waitForTimeout(400);
75
+ hovered = await readParticle();
76
+ }
77
+
78
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
79
+ const sourceLiftConditional = /opacity=\{\(isHoveredEdge \|\| isEndpointHoveredEdge\) \? 1 : Math\.min\(1, fresh \* edgeOpacityMul\)\}/.test(src);
80
+ const sourceLiftedAttr = /data-edge-particle-opacity-lifted=/.test(src);
81
+ const sourceRestAttr = /data-edge-particle-opacity-rest=/.test(src);
82
+
83
+ await browser.close();
84
+
85
+ const restOpacityNum = parseFloat(rest?.opacity || '0');
86
+ const hoverRestOpacityNum = parseFloat(hovered?.restOp || '0');
87
+ // Encoding preservation: in BOTH states the rest-opacity attr stays
88
+ // below 1.0 (freshness decay still encoded) — even though it may
89
+ // shift between states due to R56 edgeOpacityMul hover boost.
90
+ // The point: on hover, the LIVE opacity reads as 1 (override active)
91
+ // while the underlying decay encoding is still present in the attr.
92
+ const encodingPreservedOnHover = hoverRestOpacityNum < 1.0;
93
+
94
+ const results = {
95
+ particle_present: !!rest,
96
+ rest_lifted_false: rest?.lifted === 'false',
97
+ rest_opacity_decayed: restOpacityNum < 0.7,
98
+ hover_lifted_true: hovered?.lifted === 'true',
99
+ hover_opacity_is_1: hovered?.opacity === '1',
100
+ encoding_preserved_on_hover: encodingPreservedOnHover,
101
+ source_lift_conditional: sourceLiftConditional,
102
+ source_lifted_attr: sourceLiftedAttr,
103
+ source_rest_attr: sourceRestAttr,
104
+ };
105
+ const ok = Object.values(results).every(Boolean);
106
+ console.log(`${ok ? '✅' : '❌'} edge particle opacity lift on inspect:`, JSON.stringify(results),
107
+ '\n rest:', JSON.stringify(rest),
108
+ '\n hovered:', JSON.stringify(hovered));
109
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,97 @@
1
+ /* Round 484 verification: recent-row timestamp opacity lifts to
2
+ * 1.0 when isRowHovered || isRowPinned, overriding the R191
3
+ * freshness-decay tsAlpha. Inspection state shows full freshness
4
+ * regardless of decay.
5
+ *
6
+ * Contract:
7
+ * - stale row (5min ago): tsAlpha ≈ 0.30, ts-lifted='false',
8
+ * live opacity matches tsAlpha
9
+ * - click stale row to pin: ts-lifted='true', live opacity='1'
10
+ * - source-file conditional wired
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 sessionFresh = new Date(Date.now() - 60 * 1000).toISOString();
17
+ const fiveMinAgo = new Date(Date.now() - 5 * 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, status) => ({
34
+ alias, status, model: 'claude-opus-4', runtime: 'claude-code-cli',
35
+ network_id: nid, project_dir: null,
36
+ created_at: sessionFresh, updated_at: sessionFresh, last_seen_at: sessionFresh,
37
+ });
38
+ await route.fulfill({ response: r, json: { ...b, sessions: [
39
+ mk('a·1', 'working'), mk('a·2', 'idle'),
40
+ ] } });
41
+ });
42
+ // One stale message — its freshness alpha decays to ~0.30 at 5min
43
+ await ctx.route('**/api/hub/messages*', (route) => route.fulfill({ json: {
44
+ messages: [
45
+ { id: 'm1', from_alias: 'a·1', to_alias: 'a·2', content: 'old', created_at: fiveMinAgo },
46
+ ],
47
+ } }));
48
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
49
+
50
+ const page = await ctx.newPage();
51
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
52
+ await page.waitForSelector('[data-recent-row-ts]', { timeout: 15000 });
53
+ await page.waitForTimeout(500);
54
+
55
+ const readTs = () => page.evaluate(() => {
56
+ const t = document.querySelector('[data-recent-row-ts]');
57
+ if (!t) return null;
58
+ return {
59
+ alpha: parseFloat(t.getAttribute('data-recent-row-ts-alpha') || '0'),
60
+ lifted: t.getAttribute('data-recent-row-ts-lifted'),
61
+ opacity: t.getAttribute('opacity'),
62
+ };
63
+ });
64
+
65
+ const rest = await readTs();
66
+ // Click recent-row to pin
67
+ await page.click('[data-recent-row]');
68
+ await page.waitForTimeout(400);
69
+ const pinned = await readTs();
70
+
71
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
72
+ const sourceLiftConditional = /opacity=\{\(isRowHovered \|\| isRowPinned\) \? 1 : tsAlpha\}/.test(src);
73
+ const sourceLiftedAttr = /data-recent-row-ts-lifted=/.test(src);
74
+
75
+ await browser.close();
76
+
77
+ // Rest: alpha < 0.7 (stale) + lifted='false' + opacity matches alpha
78
+ const restValid = rest?.lifted === 'false' && rest?.alpha < 0.7 &&
79
+ Math.abs(parseFloat(rest?.opacity || '0') - rest?.alpha) < 0.01;
80
+ // Pinned: lifted='true' + opacity=1 (overrides stale alpha)
81
+ const pinValid = pinned?.lifted === 'true' && pinned?.opacity === '1';
82
+
83
+ const results = {
84
+ ts_present: !!rest,
85
+ rest_lifted_false: rest?.lifted === 'false',
86
+ rest_alpha_stale: rest?.alpha < 0.7,
87
+ rest_opacity_matches_alpha: restValid,
88
+ pin_lifted_true: pinned?.lifted === 'true',
89
+ pin_opacity_is_1: pinned?.opacity === '1',
90
+ source_lift_conditional: sourceLiftConditional,
91
+ source_lifted_attr: sourceLiftedAttr,
92
+ };
93
+ const ok = Object.values(results).every(Boolean);
94
+ console.log(`${ok ? '✅' : '❌'} recent-row ts opacity lift on active:`, JSON.stringify(results),
95
+ '\n rest:', JSON.stringify(rest),
96
+ '\n pinned:', JSON.stringify(pinned));
97
+ process.exit(ok ? 0 : 1);