@sleep2agi/agent-network-dashboard 0.5.3-preview.50 → 0.5.3-preview.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +5 -5
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/admin.html +1 -1
  21. package/.next/server/app/admin.rsc +1 -1
  22. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  28. package/.next/server/app/index.html +2 -2
  29. package/.next/server/app/index.rsc +2 -2
  30. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/login.html +2 -2
  37. package/.next/server/app/login.rsc +2 -2
  38. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  39. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  44. package/.next/server/app/logs.html +1 -1
  45. package/.next/server/app/logs.rsc +1 -1
  46. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  52. package/.next/server/app/messages.html +1 -1
  53. package/.next/server/app/messages.rsc +1 -1
  54. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  60. package/.next/server/app/node.html +1 -1
  61. package/.next/server/app/node.rsc +1 -1
  62. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  68. package/.next/server/app/nodes.html +1 -1
  69. package/.next/server/app/nodes.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  76. package/.next/server/app/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/server-logs.html +1 -1
  78. package/.next/server/app/server-logs.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  84. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  85. package/.next/server/app/settings/networks.html +1 -1
  86. package/.next/server/app/settings/networks.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  94. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/settings/tokens.html +1 -1
  96. package/.next/server/app/settings/tokens.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  103. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  104. package/.next/server/app/settings.html +2 -2
  105. package/.next/server/app/settings.rsc +2 -2
  106. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  110. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  111. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  112. package/.next/server/app/tasks.html +1 -1
  113. package/.next/server/app/tasks.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  120. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  121. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
  123. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  126. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  127. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  128. package/.next/server/middleware-build-manifest.js +3 -3
  129. package/.next/server/pages/404.html +1 -1
  130. package/.next/server/pages/500.html +1 -1
  131. package/.next/static/chunks/{0ouzi411y-4rz.js → 00yey.qq0qvr5.js} +1 -1
  132. package/.next/static/chunks/{0i52vrjouk_iz.js → 029fvt.lfg0~g.js} +2 -2
  133. package/.next/static/chunks/{13-4ew5p22q1s.js → 05q74_cayt4s5.js} +1 -1
  134. package/.next/static/chunks/{13~7.4euxuws0.js → 16hn-.ajrf95z.js} +1 -1
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +53 -3
  138. package/package.json +1 -1
  139. package/scripts/topo-group-label-hover-glow-test.mjs +86 -0
  140. package/scripts/topo-legend-swatch-glow-test.mjs +109 -0
  141. /package/.next/static/{dvI1EprNBiXLc0bYYb50p → NvfEuEQKYcmBCxfnu9h55}/_buildManifest.js +0 -0
  142. /package/.next/static/{dvI1EprNBiXLc0bYYb50p → NvfEuEQKYcmBCxfnu9h55}/_clientMiddlewareManifest.js +0 -0
  143. /package/.next/static/{dvI1EprNBiXLc0bYYb50p → NvfEuEQKYcmBCxfnu9h55}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.50"],70286)},48941,e=>{"use strict";var t=e.i(22381),r=e.i(23910),a=e.i(70286);e.s(["default",0,function(){let[e,s]=(0,r.useState)("login"),[n,o]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(!1),[x,g]=(0,r.useState)(""),[h,m]=(0,r.useState)(!1),u=async t=>{t.preventDefault(),m(!0),g("");try{let t=await fetch("/api/auth/v3",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,username:n,password:i})}),r=await t.json();if(r.ok){r.token&&sessionStorage.setItem("anet_v3_auth",JSON.stringify({user:r.user,token:r.token,networks:r.networks||[],currentNetwork:r.network_id||r.networks?.[0]?.network_id||""})),window.location.assign("/");return}g(r.error||"Login failed")}catch{g("Connection failed")}m(!1)};return(0,t.jsxs)("main",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 font-mono flex items-center justify-center relative overflow-hidden px-4 py-10 sm:py-16",children:[(0,t.jsx)("div",{className:"absolute inset-0 pointer-events-none anet-login-bg","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-sm",children:[(0,t.jsxs)("div",{className:"text-center mb-7",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-4 rounded-2xl bg-[#111128] border border-[#2a2a4a] anet-login-mark",children:(0,t.jsxs)("svg",{className:"w-9 h-9",viewBox:"0 0 32 32","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.25",className:"text-cyan-400 anet-login-mark-ring"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"3",fill:"currentColor",className:"text-cyan-400 anet-login-mark-node-a"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"3",fill:"currentColor",className:"text-green-400 anet-login-mark-node-b"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"3",fill:"currentColor",className:"text-violet-400 anet-login-mark-node-c"})]})}),(0,t.jsx)("h1",{className:"text-[22px] sm:text-2xl font-semibold text-white tracking-tight",children:"Agent Network"}),(0,t.jsx)("p",{className:"text-[13px] text-gray-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Free preview · no credit card"})]})})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 mb-4",children:["login","register"].map(r=>(0,t.jsx)("button",{type:"button",onClick:()=>{s(r),g("")},className:`flex-1 rounded-md px-3 py-2 text-sm transition-colors ${e===r?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"login"===r?"Sign in":"Register"},r))}),(0,t.jsxs)("form",{onSubmit:u,className:"border border-[#2a2a4a] bg-[#111128]/80 backdrop-blur-sm rounded-xl p-6 shadow-2xl shadow-black/30",children:[(0,t.jsx)("label",{htmlFor:"username",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Username"}),(0,t.jsx)("input",{id:"username",type:"text",value:n,onChange:e=>o(e.target.value),autoFocus:!0,placeholder:"Enter username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all mb-4"}),(0,t.jsx)("label",{htmlFor:"password",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{id:"password",type:c?"text":"password",value:i,onChange:e=>l(e.target.value),placeholder:"Enter password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 pr-11 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all"}),(0,t.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":c?"Hide password":"Show password",className:"absolute inset-y-0 right-0 flex items-center px-3 text-gray-600 hover:text-gray-300 transition-colors",children:c?(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),(0,t.jsx)("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]}),x&&(0,t.jsx)("div",{className:"mt-3 text-sm text-red-300 bg-red-500/5 border border-red-500/10 rounded-lg px-3 py-2",children:x}),(0,t.jsxs)("button",{type:"submit",disabled:h||!i||!n.trim(),className:"mt-5 w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-lg transition-all shadow-lg shadow-cyan-500/10 hover:shadow-cyan-500/20 disabled:shadow-none",children:[h&&(0,t.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,t.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,t.jsx)("span",{children:h?"login"===e?"Signing in…":"Registering…":"login"===e?"Sign in":"Create account"})]})]}),(0,t.jsxs)("p",{className:"text-center text-[11px] text-gray-700 mt-6",children:["Sleep2AGI · Apache-2.0 · ",(0,t.jsx)("a",{href:"https://anet.sh",className:"hover:text-gray-500 transition-colors",children:"anet.sh"}),(0,t.jsx)("span",{className:"mx-1 text-gray-800",children:"·"}),(0,t.jsxs)("span",{className:"font-mono",title:"@sleep2agi/agent-network-dashboard",children:["v",a.DASHBOARD_VERSION]})]})]})]})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.52"],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,59276,e=>{"use strict";var s=e.i(12629),a=e.i(11449);let t=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",t,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/health",t,r);return{health:e||null,error:a}},"useLicense",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/license",t,{refreshInterval:6e4});return{license:e?.ok?e:null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),t,r);return{messages:i?.messages||[],error:c,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:c}=(0,s.default)(n("/api/hub/status",e),t,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:c}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),t,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:c,error:d,isLoading:o}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),t,r);return{tasks:c?.tasks||[],count:c?.count??0,source:c?.source,error:d,isLoading:o}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.50"],70286)},65610,e=>{"use strict";var s=e.i(22381),a=e.i(23910),t=e.i(56839),r=e.i(59276),n=e.i(70286);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:l}=(0,r.useHealth)(),{license:i}=(0,r.useLicense)(),[c,d]=(0,a.useState)(""),[o,x]=(0,a.useState)(""),[m,h]=(0,a.useState)(""),[g,u]=(0,a.useState)(""),[p,N]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",j="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${j}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${j}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${l?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:l?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsxs)("span",{className:"text-gray-500",children:["SSE streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.uptime?`${Math.floor(l.uptime/3600)}h ${Math.floor(l.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 font-mono ${j}`,title:"From package.json @sleep2agi/agent-network-dashboard",children:n.DASHBOARD_VERSION})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",i?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===i.license.type?"text-green-300 bg-green-500/10 border-green-500/30":i.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),i.license.type,i.license.days_left?` \xb7 ${i.license.days_left}d left`:""]})]}),i?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[i.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[i.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.license.expires_at})]}),i.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!c.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})}),s=await e.json();x(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&d(""),setTimeout(()=>x(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),o&&(0,s.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!m||!g)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void N("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:m,new_password:g})}),t=await a.json();if(N(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}h(""),u("")}setTimeout(()=>N(""),5e3)},disabled:!m||!g,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),p&&(0,s.jsx)("div",{className:`mt-2 text-xs ${p.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:p})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,59276,e=>{"use strict";var s=e.i(12629),a=e.i(11449);let t=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",t,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/health",t,r);return{health:e||null,error:a}},"useLicense",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/license",t,{refreshInterval:6e4});return{license:e?.ok?e:null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),t,r);return{messages:i?.messages||[],error:c,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:c}=(0,s.default)(n("/api/hub/status",e),t,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:c}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),t,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:c,error:d,isLoading:o}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),t,r);return{tasks:c?.tasks||[],count:c?.count??0,source:c?.source,error:d,isLoading:o}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.52"],70286)},65610,e=>{"use strict";var s=e.i(22381),a=e.i(23910),t=e.i(56839),r=e.i(59276),n=e.i(70286);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:l}=(0,r.useHealth)(),{license:i}=(0,r.useLicense)(),[c,d]=(0,a.useState)(""),[o,x]=(0,a.useState)(""),[m,h]=(0,a.useState)(""),[g,u]=(0,a.useState)(""),[p,N]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",j="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${j}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${j}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${l?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:l?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsxs)("span",{className:"text-gray-500",children:["SSE streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.uptime?`${Math.floor(l.uptime/3600)}h ${Math.floor(l.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 font-mono ${j}`,title:"From package.json @sleep2agi/agent-network-dashboard",children:n.DASHBOARD_VERSION})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",i?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===i.license.type?"text-green-300 bg-green-500/10 border-green-500/30":i.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),i.license.type,i.license.days_left?` \xb7 ${i.license.days_left}d left`:""]})]}),i?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[i.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[i.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.license.expires_at})]}),i.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!c.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})}),s=await e.json();x(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&d(""),setTimeout(()=>x(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),o&&(0,s.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!m||!g)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void N("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:m,new_password:g})}),t=await a.json();if(N(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}h(""),u("")}setTimeout(()=>N(""),5e3)},disabled:!m||!g,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),p&&(0,s.jsx)("div",{className:`mt-2 text-xs ${p.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:p})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":280,"timestamp":213784848178,"id":4,"parentId":1,"tags":{},"startTime":1779021757094,"traceId":"76b7aab9e0216cc7"},{"name":"load-custom-routes","duration":500,"timestamp":213784848600,"id":5,"parentId":1,"tags":{},"startTime":1779021757095,"traceId":"76b7aab9e0216cc7"},{"name":"create-dist-dir","duration":721,"timestamp":213784849145,"id":6,"parentId":1,"tags":{},"startTime":1779021757095,"traceId":"76b7aab9e0216cc7"},{"name":"clean","duration":36628,"timestamp":213784850724,"id":7,"parentId":1,"tags":{},"startTime":1779021757097,"traceId":"76b7aab9e0216cc7"},{"name":"discover-routes","duration":26333,"timestamp":213784973282,"id":8,"parentId":1,"tags":{},"startTime":1779021757220,"traceId":"76b7aab9e0216cc7"},{"name":"create-root-mapping","duration":111,"timestamp":213784999675,"id":9,"parentId":1,"tags":{},"startTime":1779021757246,"traceId":"76b7aab9e0216cc7"},{"name":"generate-route-types","duration":23793,"timestamp":213785002314,"id":10,"parentId":1,"tags":{},"startTime":1779021757249,"traceId":"76b7aab9e0216cc7"},{"name":"public-dir-conflict-check","duration":128,"timestamp":213785026205,"id":11,"parentId":1,"tags":{},"startTime":1779021757272,"traceId":"76b7aab9e0216cc7"},{"name":"generate-routes-manifest","duration":5726,"timestamp":213785026469,"id":12,"parentId":1,"tags":{},"startTime":1779021757273,"traceId":"76b7aab9e0216cc7"},{"name":"run-turbopack","duration":6676783,"timestamp":213785038357,"id":14,"parentId":1,"tags":{},"startTime":1779021757285,"traceId":"76b7aab9e0216cc7"},{"name":"turbopack-build-events","duration":101,"timestamp":213785346631,"id":15,"parentId":1,"tags":{},"startTime":1779021757593,"traceId":"76b7aab9e0216cc7"},{"name":"run-typescript","duration":10044831,"timestamp":213791726485,"id":16,"parentId":1,"tags":{},"startTime":1779021763973,"traceId":"76b7aab9e0216cc7"},{"name":"generate-required-server-files","duration":3082,"timestamp":213801772709,"id":18,"parentId":1,"tags":{},"startTime":1779021774019,"traceId":"76b7aab9e0216cc7"},{"name":"check-static-error-page","duration":15717,"timestamp":213801991881,"id":20,"parentId":19,"tags":{},"startTime":1779021774238,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":528243,"timestamp":213802012726,"id":65,"parentId":22,"tags":{},"startTime":1779021774259,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":546068,"timestamp":213801995077,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779021774241,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":598145,"timestamp":213802012324,"id":64,"parentId":21,"tags":{},"startTime":1779021774259,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":617077,"timestamp":213801993486,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779021774240,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":636880,"timestamp":213802012983,"id":67,"parentId":26,"tags":{},"startTime":1779021774259,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":651482,"timestamp":213801998475,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779021774245,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":643081,"timestamp":213802013853,"id":73,"parentId":33,"tags":{},"startTime":1779021774260,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":657301,"timestamp":213801999738,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779021774246,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":645671,"timestamp":213802013608,"id":71,"parentId":30,"tags":{},"startTime":1779021774260,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":660340,"timestamp":213801999025,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779021774245,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":649768,"timestamp":213802013473,"id":70,"parentId":29,"tags":{},"startTime":1779021774260,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":664441,"timestamp":213801998861,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779021774245,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":664494,"timestamp":213802013966,"id":75,"parentId":35,"tags":{},"startTime":1779021774260,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":678553,"timestamp":213801999985,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779021774246,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":677093,"timestamp":213802012879,"id":66,"parentId":25,"tags":{},"startTime":1779021774259,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":693770,"timestamp":213801998302,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779021774245,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":678766,"timestamp":213802013672,"id":72,"parentId":32,"tags":{},"startTime":1779021774260,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":692885,"timestamp":213801999605,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779021774246,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":682476,"timestamp":213802015793,"id":78,"parentId":38,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":697468,"timestamp":213802000847,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779021774247,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":685406,"timestamp":213802013990,"id":76,"parentId":36,"tags":{},"startTime":1779021774260,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":698933,"timestamp":213802000502,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779021774247,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":687239,"timestamp":213802013936,"id":74,"parentId":34,"tags":{},"startTime":1779021774260,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":701350,"timestamp":213801999865,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779021774246,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":688454,"timestamp":213802015818,"id":79,"parentId":39,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":703365,"timestamp":213802000947,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779021774247,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":698086,"timestamp":213802013108,"id":68,"parentId":27,"tags":{},"startTime":1779021774259,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":712632,"timestamp":213801998605,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779021774245,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":695889,"timestamp":213802015838,"id":81,"parentId":42,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":710371,"timestamp":213802001412,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779021774248,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":698485,"timestamp":213802015756,"id":77,"parentId":37,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":713591,"timestamp":213802000688,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779021774247,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":698539,"timestamp":213802015861,"id":83,"parentId":45,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":712451,"timestamp":213802001988,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779021774248,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":698705,"timestamp":213802015849,"id":82,"parentId":44,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":712732,"timestamp":213802001852,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779021774248,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":708464,"timestamp":213802013210,"id":69,"parentId":28,"tags":{},"startTime":1779021774259,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":722990,"timestamp":213801998728,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779021774245,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":715113,"timestamp":213802015881,"id":85,"parentId":47,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":728836,"timestamp":213802002221,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779021774248,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":715982,"timestamp":213802015869,"id":84,"parentId":46,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":729786,"timestamp":213802002106,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779021774248,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":721543,"timestamp":213802015902,"id":87,"parentId":49,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":733536,"timestamp":213802003953,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779021774250,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":719100,"timestamp":213802019054,"id":90,"parentId":24,"tags":{},"startTime":1779021774265,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":742613,"timestamp":213801995586,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779021774242,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":718902,"timestamp":213802024614,"id":93,"parentId":43,"tags":{},"startTime":1779021774271,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":742003,"timestamp":213802001559,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779021774248,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":727773,"timestamp":213802015914,"id":88,"parentId":50,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":739634,"timestamp":213802004081,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779021774250,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":730031,"timestamp":213802015894,"id":86,"parentId":48,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":742228,"timestamp":213802003743,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779021774250,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":730251,"timestamp":213802020179,"id":91,"parentId":31,"tags":{},"startTime":1779021774266,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":751318,"timestamp":213801999155,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779021774245,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":742946,"timestamp":213802015826,"id":80,"parentId":40,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":757783,"timestamp":213802001058,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779021774247,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":738721,"timestamp":213802020965,"id":92,"parentId":41,"tags":{},"startTime":1779021774267,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":758574,"timestamp":213802001156,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779021774247,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":741196,"timestamp":213802026935,"id":99,"parentId":56,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":762777,"timestamp":213802005399,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779021774252,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":752744,"timestamp":213802026947,"id":100,"parentId":58,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":773500,"timestamp":213802006238,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779021774253,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":763798,"timestamp":213802027074,"id":101,"parentId":59,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":784471,"timestamp":213802006447,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779021774253,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":771864,"timestamp":213802027089,"id":102,"parentId":61,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":791983,"timestamp":213802007064,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779021774253,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":794371,"timestamp":213802015929,"id":89,"parentId":51,"tags":{},"startTime":1779021774262,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":806173,"timestamp":213802004191,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779021774250,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":783667,"timestamp":213802026863,"id":94,"parentId":23,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":815236,"timestamp":213801995351,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779021774242,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":787829,"timestamp":213802027101,"id":103,"parentId":62,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":807767,"timestamp":213802007208,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779021774253,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":793153,"timestamp":213802026886,"id":95,"parentId":52,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":815452,"timestamp":213802004628,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779021774251,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":785163,"timestamp":213802036377,"id":105,"parentId":60,"tags":{},"startTime":1779021774283,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":814955,"timestamp":213802006625,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779021774253,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":794770,"timestamp":213802026900,"id":96,"parentId":53,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":816905,"timestamp":213802004794,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779021774251,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":795714,"timestamp":213802026914,"id":97,"parentId":54,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":817704,"timestamp":213802004964,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779021774251,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":773155,"timestamp":213802052563,"id":106,"parentId":57,"tags":{},"startTime":1779021774299,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":820118,"timestamp":213802005641,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779021774252,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":812287,"timestamp":213802026926,"id":98,"parentId":55,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":834077,"timestamp":213802005182,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779021774251,"traceId":"76b7aab9e0216cc7"},{"name":"is-page-static","duration":829867,"timestamp":213802027114,"id":104,"parentId":63,"tags":{},"startTime":1779021774273,"traceId":"76b7aab9e0216cc7"},{"name":"check-page","duration":849711,"timestamp":213802007344,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779021774254,"traceId":"76b7aab9e0216cc7"},{"name":"static-check","duration":866393,"timestamp":213801990705,"id":19,"parentId":1,"tags":{},"startTime":1779021774237,"traceId":"76b7aab9e0216cc7"}]
2
- [{"name":"write-routes-manifest","duration":458,"timestamp":213802869332,"id":108,"parentId":1,"tags":{},"startTime":1779021775116,"traceId":"76b7aab9e0216cc7"},{"name":"load-dotenv","duration":51,"timestamp":213802880656,"id":111,"parentId":110,"tags":{},"startTime":1779021775127,"traceId":"76b7aab9e0216cc7"},{"name":"run-export-path-map","duration":793,"timestamp":213802883664,"id":112,"parentId":110,"tags":{},"startTime":1779021775130,"traceId":"76b7aab9e0216cc7"},{"name":"next-export","duration":655622,"timestamp":213802879433,"id":110,"parentId":1,"tags":{},"startTime":1779021775126,"traceId":"76b7aab9e0216cc7"},{"name":"move-exported-app-not-found-","duration":517,"timestamp":213803538316,"id":113,"parentId":109,"tags":{},"startTime":1779021775785,"traceId":"76b7aab9e0216cc7"},{"name":"move-exported-app-global-error-","duration":512,"timestamp":213803538917,"id":114,"parentId":109,"tags":{},"startTime":1779021775785,"traceId":"76b7aab9e0216cc7"},{"name":"static-generation","duration":668173,"timestamp":213802873763,"id":109,"parentId":1,"tags":{},"startTime":1779021775120,"traceId":"76b7aab9e0216cc7"},{"name":"write-routes-manifest","duration":398,"timestamp":213803542223,"id":115,"parentId":1,"tags":{},"startTime":1779021775788,"traceId":"76b7aab9e0216cc7"},{"name":"print-tree-view","duration":6584,"timestamp":213803555322,"id":116,"parentId":1,"tags":{},"startTime":1779021775802,"traceId":"76b7aab9e0216cc7"},{"name":"write-route-bundle-stats","duration":19168,"timestamp":213803561994,"id":117,"parentId":1,"tags":{},"startTime":1779021775808,"traceId":"76b7aab9e0216cc7"},{"name":"telemetry-flush","duration":24934,"timestamp":213803581207,"id":118,"parentId":1,"tags":{},"startTime":1779021775827,"traceId":"76b7aab9e0216cc7"},{"name":"next-build","duration":18809082,"timestamp":213784797101,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779021757043,"traceId":"76b7aab9e0216cc7"}]
1
+ [{"name":"generate-buildid","duration":356,"timestamp":214472754814,"id":4,"parentId":1,"tags":{},"startTime":1779022445001,"traceId":"944aa5696cd62082"},{"name":"load-custom-routes","duration":615,"timestamp":214472755357,"id":5,"parentId":1,"tags":{},"startTime":1779022445002,"traceId":"944aa5696cd62082"},{"name":"create-dist-dir","duration":1037,"timestamp":214472756044,"id":6,"parentId":1,"tags":{},"startTime":1779022445002,"traceId":"944aa5696cd62082"},{"name":"clean","duration":38314,"timestamp":214472758092,"id":7,"parentId":1,"tags":{},"startTime":1779022445004,"traceId":"944aa5696cd62082"},{"name":"discover-routes","duration":12158,"timestamp":214472880328,"id":8,"parentId":1,"tags":{},"startTime":1779022445127,"traceId":"944aa5696cd62082"},{"name":"create-root-mapping","duration":120,"timestamp":214472892552,"id":9,"parentId":1,"tags":{},"startTime":1779022445139,"traceId":"944aa5696cd62082"},{"name":"generate-route-types","duration":36214,"timestamp":214472895299,"id":10,"parentId":1,"tags":{},"startTime":1779022445142,"traceId":"944aa5696cd62082"},{"name":"public-dir-conflict-check","duration":111,"timestamp":214472931606,"id":11,"parentId":1,"tags":{},"startTime":1779022445178,"traceId":"944aa5696cd62082"},{"name":"generate-routes-manifest","duration":5071,"timestamp":214472931859,"id":12,"parentId":1,"tags":{},"startTime":1779022445178,"traceId":"944aa5696cd62082"},{"name":"run-turbopack","duration":6393248,"timestamp":214472943918,"id":14,"parentId":1,"tags":{},"startTime":1779022445190,"traceId":"944aa5696cd62082"},{"name":"turbopack-build-events","duration":102,"timestamp":214473296398,"id":15,"parentId":1,"tags":{},"startTime":1779022445543,"traceId":"944aa5696cd62082"},{"name":"run-typescript","duration":9501866,"timestamp":214479347496,"id":16,"parentId":1,"tags":{},"startTime":1779022451594,"traceId":"944aa5696cd62082"},{"name":"generate-required-server-files","duration":3292,"timestamp":214488851118,"id":18,"parentId":1,"tags":{},"startTime":1779022461097,"traceId":"944aa5696cd62082"},{"name":"check-static-error-page","duration":19309,"timestamp":214489081080,"id":20,"parentId":19,"tags":{},"startTime":1779022461327,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":457239,"timestamp":214489104923,"id":65,"parentId":22,"tags":{},"startTime":1779022461351,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":478322,"timestamp":214489084106,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779022461330,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":572878,"timestamp":214489105259,"id":66,"parentId":25,"tags":{},"startTime":1779022461352,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":591051,"timestamp":214489087187,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779022461333,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":575425,"timestamp":214489104547,"id":64,"parentId":21,"tags":{},"startTime":1779022461351,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":597463,"timestamp":214489082579,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779022461329,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":576586,"timestamp":214489107482,"id":68,"parentId":27,"tags":{},"startTime":1779022461354,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":596672,"timestamp":214489087446,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":577412,"timestamp":214489108138,"id":71,"parentId":30,"tags":{},"startTime":1779022461354,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":597825,"timestamp":214489087786,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":585823,"timestamp":214489108501,"id":75,"parentId":35,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":605882,"timestamp":214489088500,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779022461335,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":617115,"timestamp":214489108214,"id":72,"parentId":32,"tags":{},"startTime":1779022461354,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":637230,"timestamp":214489088177,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":617106,"timestamp":214489108463,"id":74,"parentId":34,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":637202,"timestamp":214489088399,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779022461335,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":617233,"timestamp":214489108523,"id":76,"parentId":36,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":635776,"timestamp":214489090022,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779022461336,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":618159,"timestamp":214489107956,"id":70,"parentId":29,"tags":{},"startTime":1779022461354,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":638503,"timestamp":214489087658,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":630413,"timestamp":214489108569,"id":78,"parentId":38,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":648500,"timestamp":214489090558,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":639611,"timestamp":214489108584,"id":79,"parentId":39,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":657596,"timestamp":214489090658,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":639911,"timestamp":214489108550,"id":77,"parentId":37,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":658095,"timestamp":214489090407,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":642462,"timestamp":214489108607,"id":81,"parentId":42,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":660002,"timestamp":214489091135,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":643558,"timestamp":214489108619,"id":82,"parentId":44,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":660318,"timestamp":214489091905,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779022461338,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":645982,"timestamp":214489107630,"id":69,"parentId":28,"tags":{},"startTime":1779022461354,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":666100,"timestamp":214489087553,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":649247,"timestamp":214489105410,"id":67,"parentId":26,"tags":{},"startTime":1779022461352,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":667367,"timestamp":214489087341,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":646698,"timestamp":214489108641,"id":84,"parentId":46,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":661447,"timestamp":214489093942,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779022461340,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":646899,"timestamp":214489108631,"id":83,"parentId":45,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":662268,"timestamp":214489093292,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779022461340,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":650377,"timestamp":214489108654,"id":85,"parentId":47,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":662500,"timestamp":214489096581,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779022461343,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":651567,"timestamp":214489108675,"id":87,"parentId":49,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":663400,"timestamp":214489096891,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779022461343,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":654123,"timestamp":214489108698,"id":89,"parentId":51,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":665774,"timestamp":214489097110,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779022461343,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":655807,"timestamp":214489108687,"id":88,"parentId":50,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":667566,"timestamp":214489096982,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779022461343,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":652281,"timestamp":214489112448,"id":90,"parentId":24,"tags":{},"startTime":1779022461359,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":680061,"timestamp":214489084703,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779022461331,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":656245,"timestamp":214489108665,"id":86,"parentId":48,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":668202,"timestamp":214489096742,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779022461343,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":658719,"timestamp":214489113632,"id":91,"parentId":31,"tags":{},"startTime":1779022461360,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":684499,"timestamp":214489087902,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":669913,"timestamp":214489108377,"id":73,"parentId":33,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":690052,"timestamp":214489088293,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779022461335,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":664696,"timestamp":214489116036,"id":93,"parentId":41,"tags":{},"startTime":1779022461362,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":689902,"timestamp":214489090876,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":665836,"timestamp":214489115076,"id":92,"parentId":43,"tags":{},"startTime":1779022461361,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":689691,"timestamp":214489091252,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779022461338,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":674294,"timestamp":214489108593,"id":80,"parentId":40,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":692170,"timestamp":214489090759,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":669600,"timestamp":214489118727,"id":97,"parentId":54,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":690559,"timestamp":214489097810,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779022461344,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":678281,"timestamp":214489118905,"id":101,"parentId":59,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":698100,"timestamp":214489099132,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779022461345,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":686062,"timestamp":214489118921,"id":102,"parentId":61,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":705361,"timestamp":214489099779,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779022461346,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":701795,"timestamp":214489118935,"id":103,"parentId":62,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":720836,"timestamp":214489099955,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779022461346,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":709597,"timestamp":214489118947,"id":104,"parentId":63,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":728483,"timestamp":214489100125,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779022461346,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":706544,"timestamp":214489130364,"id":105,"parentId":60,"tags":{},"startTime":1779022461377,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":741719,"timestamp":214489099312,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779022461346,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":702705,"timestamp":214489143042,"id":106,"parentId":57,"tags":{},"startTime":1779022461389,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":747353,"timestamp":214489098443,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779022461345,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":739491,"timestamp":214489118712,"id":96,"parentId":53,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":760596,"timestamp":214489097658,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779022461344,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":743762,"timestamp":214489118673,"id":94,"parentId":23,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":777978,"timestamp":214489084509,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779022461331,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":744919,"timestamp":214489118749,"id":99,"parentId":56,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":765498,"timestamp":214489098227,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779022461345,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":745190,"timestamp":214489118764,"id":100,"parentId":58,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":765063,"timestamp":214489098934,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779022461345,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":747854,"timestamp":214489118740,"id":98,"parentId":55,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":768631,"timestamp":214489097999,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779022461344,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":772075,"timestamp":214489118697,"id":95,"parentId":52,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":793321,"timestamp":214489097502,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779022461344,"traceId":"944aa5696cd62082"},{"name":"static-check","duration":810898,"timestamp":214489079985,"id":19,"parentId":1,"tags":{},"startTime":1779022461326,"traceId":"944aa5696cd62082"}]
2
+ [{"name":"write-routes-manifest","duration":449,"timestamp":214489900454,"id":108,"parentId":1,"tags":{},"startTime":1779022462147,"traceId":"944aa5696cd62082"},{"name":"load-dotenv","duration":55,"timestamp":214489911824,"id":111,"parentId":110,"tags":{},"startTime":1779022462158,"traceId":"944aa5696cd62082"},{"name":"run-export-path-map","duration":875,"timestamp":214489914721,"id":112,"parentId":110,"tags":{},"startTime":1779022462161,"traceId":"944aa5696cd62082"},{"name":"next-export","duration":611978,"timestamp":214489910610,"id":110,"parentId":1,"tags":{},"startTime":1779022462157,"traceId":"944aa5696cd62082"},{"name":"move-exported-app-not-found-","duration":538,"timestamp":214490526792,"id":113,"parentId":109,"tags":{},"startTime":1779022462773,"traceId":"944aa5696cd62082"},{"name":"move-exported-app-global-error-","duration":397,"timestamp":214490527426,"id":114,"parentId":109,"tags":{},"startTime":1779022462774,"traceId":"944aa5696cd62082"},{"name":"static-generation","duration":625704,"timestamp":214489904345,"id":109,"parentId":1,"tags":{},"startTime":1779022462151,"traceId":"944aa5696cd62082"},{"name":"write-routes-manifest","duration":440,"timestamp":214490530313,"id":115,"parentId":1,"tags":{},"startTime":1779022462777,"traceId":"944aa5696cd62082"},{"name":"print-tree-view","duration":5612,"timestamp":214490551917,"id":116,"parentId":1,"tags":{},"startTime":1779022462798,"traceId":"944aa5696cd62082"},{"name":"write-route-bundle-stats","duration":12739,"timestamp":214490557566,"id":117,"parentId":1,"tags":{},"startTime":1779022462804,"traceId":"944aa5696cd62082"},{"name":"telemetry-flush","duration":32046,"timestamp":214490570349,"id":118,"parentId":1,"tags":{},"startTime":1779022462817,"traceId":"944aa5696cd62082"},{"name":"next-build","duration":17902498,"timestamp":214472699934,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779022444946,"traceId":"944aa5696cd62082"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6676783,"timestamp":213785038357,"id":14,"parentId":1,"tags":{},"startTime":1779021757285,"traceId":"76b7aab9e0216cc7"},{"name":"turbopack-build-events","duration":101,"timestamp":213785346631,"id":15,"parentId":1,"tags":{},"startTime":1779021757593,"traceId":"76b7aab9e0216cc7"},{"name":"run-typescript","duration":10044831,"timestamp":213791726485,"id":16,"parentId":1,"tags":{},"startTime":1779021763973,"traceId":"76b7aab9e0216cc7"},{"name":"static-check","duration":866393,"timestamp":213801990705,"id":19,"parentId":1,"tags":{},"startTime":1779021774237,"traceId":"76b7aab9e0216cc7"},{"name":"static-generation","duration":668173,"timestamp":213802873763,"id":109,"parentId":1,"tags":{},"startTime":1779021775120,"traceId":"76b7aab9e0216cc7"},{"name":"telemetry-flush","duration":24934,"timestamp":213803581207,"id":118,"parentId":1,"tags":{},"startTime":1779021775827,"traceId":"76b7aab9e0216cc7"},{"name":"next-build","duration":18809082,"timestamp":213784797101,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779021757043,"traceId":"76b7aab9e0216cc7"}]
1
+ [{"name":"run-turbopack","duration":6393248,"timestamp":214472943918,"id":14,"parentId":1,"tags":{},"startTime":1779022445190,"traceId":"944aa5696cd62082"},{"name":"turbopack-build-events","duration":102,"timestamp":214473296398,"id":15,"parentId":1,"tags":{},"startTime":1779022445543,"traceId":"944aa5696cd62082"},{"name":"run-typescript","duration":9501866,"timestamp":214479347496,"id":16,"parentId":1,"tags":{},"startTime":1779022451594,"traceId":"944aa5696cd62082"},{"name":"static-check","duration":810898,"timestamp":214489079985,"id":19,"parentId":1,"tags":{},"startTime":1779022461326,"traceId":"944aa5696cd62082"},{"name":"static-generation","duration":625704,"timestamp":214489904345,"id":109,"parentId":1,"tags":{},"startTime":1779022462151,"traceId":"944aa5696cd62082"},{"name":"telemetry-flush","duration":32046,"timestamp":214490570349,"id":118,"parentId":1,"tags":{},"startTime":1779022462817,"traceId":"944aa5696cd62082"},{"name":"next-build","duration":17902498,"timestamp":214472699934,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779022444946,"traceId":"944aa5696cd62082"}]
@@ -5234,7 +5234,28 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5234
5234
  transition list extends to include 'filter 200ms
5235
5235
  ease-out' alongside the existing fill/ls/fw/opacity
5236
5236
  200ms tweens. */
5237
- data-group-label-glow={isPinned ? 'true' : 'false'}
5237
+ /* Round 538 / Loop — extends R479 group-label drop-
5238
+ shadow from pin-only to ALSO fire on hover, with
5239
+ a 2-tier alpha ladder matching the R432 letter-
5240
+ spacing 3-tier (hover at 0.25px / pin at 0.5px)
5241
+ pattern. Pre-R538 the paint axis was binary (lit
5242
+ on pin, dark on hover); R538 adds a softer hover
5243
+ glow that distinguishes from the stronger pin
5244
+ glow without losing the "active state lights up"
5245
+ gesture.
5246
+ 2-tier alpha ladder:
5247
+ pin (committed) cyan 80 hex (~50% alpha)
5248
+ hover (preview) cyan 4d hex (~30% alpha)
5249
+ rest none
5250
+ Pin signature stays distinctively brighter, but
5251
+ hover now telegraphs paint-axis attention too.
5252
+ Sibling to R534 edge-badge hover-precedence
5253
+ extension at the drop-shadow family. R479 hue
5254
+ (pal.legendAccent) preserved across both tiers.
5255
+ data-group-label-glow attr upgraded from binary
5256
+ ('true'/'false') to 3-value ('pin' | 'hover' |
5257
+ 'false') so tests can distinguish gate cause. */
5258
+ data-group-label-glow={isPinned ? 'pin' : isHovered ? 'hover' : 'false'}
5238
5259
  /* Round 499 / Loop — orphan band "其他" label gets
5239
5260
  fontStyle: italic to visually distinguish the
5240
5261
  catchall from real prefix-group bands. Pre-R499
@@ -5263,7 +5284,9 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5263
5284
  fontStyle: box.isOrphan ? 'italic' : undefined,
5264
5285
  filter: isPinned
5265
5286
  ? `drop-shadow(0 0 3px ${pal.legendAccent}80)`
5266
- : undefined,
5287
+ : isHovered
5288
+ ? `drop-shadow(0 0 3px ${pal.legendAccent}4d)`
5289
+ : undefined,
5267
5290
  }}
5268
5291
  data-group-label={box.key}
5269
5292
  data-group-label-pinned={isPinned ? 'true' : 'false'}
@@ -10971,15 +10994,42 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
10971
10994
  R181 pin ring (6 + 0 stroke vs 8 - 0.75 inner
10972
10995
  ≈ 7.25). data-legend-swatch is unchanged so
10973
10996
  R197 / R55 / R61 tests probe the same handle. */}
10997
+ {/* Round 537 / Loop — extends drop-shadow visual-polish
10998
+ family (12 anchors after R536) to a 13th anchor: the
10999
+ legend swatch gains drop-shadow glow on hover/pin
11000
+ using its OWN row fill color (working green / idle
11001
+ teal / offline slate). Pre-R537 the swatch lifted
11002
+ only r (R197/R295 6 → 7) on attention — geometry
11003
+ axis only, no paint glow. R537 adds the paint axis,
11004
+ composing with R181/R402 pin-ring (separate concen-
11005
+ tric circle in the same row.fill color) so on
11006
+ hover/pin the SWATCH AND its pin-ring both contri-
11007
+ bute to a unified tier-coloured glow signature.
11008
+ Hue: row.fill (status hex) concatenated with `99`
11009
+ hex alpha (~60%). Working green / idle teal /
11010
+ offline slate each glow in their OWN tier color
11011
+ — the legend acts as a color-keyed status mirror.
11012
+ 3px blur reads soft; 60% alpha legible without
11013
+ overwhelming the swatch's own paint.
11014
+ Drop-shadow visual-polish family extension (13
11015
+ anchors). filter is paint-only; bbox unchanged.
11016
+ transition list extends to include 'filter 150ms
11017
+ ease-out', matching the existing R197 r 150ms
11018
+ cadence at this swatch. data-legend-swatch-glow
11019
+ attr exposes the gate state for tests. */}
10974
11020
  <circle
10975
11021
  cx="16" cy={row.y0}
10976
11022
  r="6"
10977
11023
  fill={row.fill}
10978
11024
  data-legend-swatch={row.key}
10979
11025
  data-legend-swatch-state={isPinned ? 'pinned' : isRowHovered ? 'hover' : 'idle'}
11026
+ data-legend-swatch-glow={(isRowHovered || isPinned) ? 'true' : 'false'}
10980
11027
  style={{
10981
11028
  r: isRowHovered || isPinned ? '7px' : '6px',
10982
- transition: 'r 150ms ease-out',
11029
+ filter: (isRowHovered || isPinned)
11030
+ ? `drop-shadow(0 0 3px ${row.fill}99)`
11031
+ : undefined,
11032
+ transition: 'r 150ms ease-out, filter 150ms ease-out',
10983
11033
  } as React.CSSProperties}
10984
11034
  />
10985
11035
  {/* R61 pinned-state ring — concentric stroke at r=8 in
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.50",
3
+ "version": "0.5.3-preview.52",
4
4
  "description": "Agent Network Dashboard \u2014 Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,86 @@
1
+ /* Round 538 verification: group label drop-shadow extends from pin-only
2
+ * (R479) to ALSO fire on hover, with 2-tier alpha ladder (pin: 80 hex /
3
+ * hover: 4d hex).
4
+ *
5
+ * Test strategy: source-canonical (group labels only render in grid
6
+ * layout AND group hover via Playwright is impractical for the same
7
+ * SVG-deep reasons as edge-hover R534). Rest probe + source regex
8
+ * covers the wiring.
9
+ *
10
+ * Test phases:
11
+ * 1. rest grid (group label visible): glow attr='false', filter='none'
12
+ * 2. source-side regex confirms:
13
+ * - filter ternary: pin > hover > undefined with 80/4d alpha
14
+ * - 3-value attr ('pin' | 'hover' | 'false')
15
+ */
16
+ import { chromium } from 'playwright';
17
+ import { readFileSync } from 'node:fs';
18
+
19
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
20
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
21
+
22
+ const browser = await chromium.launch({ headless: true });
23
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
24
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
25
+ await ctx.addInitScript(() => {
26
+ try {
27
+ localStorage.setItem('anet-theme', 'cyber');
28
+ localStorage.setItem('anet-topo-layout', 'grid'); // grid for group labels
29
+ sessionStorage.setItem('anet_v3_auth', '1');
30
+ } catch {}
31
+ });
32
+ await ctx.route('**/api/hub/status*', async (route) => {
33
+ const r = await route.fetch();
34
+ const b = await r.json();
35
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
36
+ const mk = (alias, status) => ({
37
+ alias, status, model: 'claude-opus-4', runtime: 'claude-code-cli',
38
+ network_id: nid, project_dir: null,
39
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
40
+ });
41
+ // Two prefix-groups so groupBoxes render
42
+ await route.fulfill({ response: r, json: { ...b, sessions: [
43
+ mk('alpha·1', 'working'), mk('alpha·2', 'working'),
44
+ mk('beta·1', 'idle'), mk('beta·2', 'idle'),
45
+ ] } });
46
+ });
47
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
48
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
49
+ const page = await ctx.newPage();
50
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
51
+ await page.waitForSelector('[data-group-label-glow]', { timeout: 15000 });
52
+ await page.waitForTimeout(800);
53
+
54
+ const rest = await page.evaluate(() => {
55
+ const el = document.querySelector('[data-group-label-glow]');
56
+ if (!el) return null;
57
+ const cs = getComputedStyle(el);
58
+ return {
59
+ glowAttr: el.getAttribute('data-group-label-glow'),
60
+ pinnedAttr: el.getAttribute('data-group-label-pinned'),
61
+ filter: cs.filter,
62
+ transition: cs.transition,
63
+ };
64
+ });
65
+
66
+ await browser.close();
67
+
68
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
69
+ const sourceFilterTernary =
70
+ /filter: isPinned\s+\? `drop-shadow\(0 0 3px \$\{pal\.legendAccent\}80\)`\s+: isHovered\s+\? `drop-shadow\(0 0 3px \$\{pal\.legendAccent\}4d\)`\s+: undefined,/.test(src);
71
+ const sourceAttrTernary =
72
+ /data-group-label-glow=\{isPinned \? 'pin' : isHovered \? 'hover' : 'false'\}/.test(src);
73
+
74
+ const results = {
75
+ rest_glow_false: rest?.glowAttr === 'false',
76
+ rest_pinned_false: rest?.pinnedAttr === 'false',
77
+ rest_filter_none: rest?.filter === 'none' || rest?.filter === '',
78
+ rest_transition_has_filter: /\bfilter\b/.test(rest?.transition || ''),
79
+ source_filter_ternary: sourceFilterTernary,
80
+ source_attr_ternary: sourceAttrTernary,
81
+ };
82
+ const ok = Object.values(results).every(Boolean);
83
+ console.log(`${ok ? '✅' : '❌'} R538 group-label hover-glow (source-canonical):`,
84
+ JSON.stringify(results, null, 2),
85
+ '\n rest:', JSON.stringify(rest));
86
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,109 @@
1
+ /* Round 537 verification: legend swatch gains drop-shadow glow on
2
+ * hover/pin using its own row.fill color — drop-shadow family 13th
3
+ * anchor.
4
+ *
5
+ * Test phases:
6
+ * 1. rest: data-legend-swatch-glow='false', filter='none'
7
+ * 2. hover legend 'idle' row label (banked R518 path): swatch's glow
8
+ * attr='true', filter matches drop-shadow with the idle row fill
9
+ * (cyber #2dd4bf teal-400)
10
+ * 3. mouseleave: returns to 'false'/'none'
11
+ * 4. source-side regex confirms filter ternary + transition wiring
12
+ */
13
+ import { chromium } from 'playwright';
14
+ import { readFileSync } from 'node:fs';
15
+
16
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
17
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
18
+
19
+ const browser = await chromium.launch({ headless: true });
20
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
21
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
22
+ await ctx.addInitScript(() => {
23
+ try {
24
+ localStorage.setItem('anet-theme', 'cyber');
25
+ localStorage.setItem('anet-topo-layout', 'ring');
26
+ sessionStorage.setItem('anet_v3_auth', '1');
27
+ } catch {}
28
+ });
29
+ await ctx.route('**/api/hub/status*', async (route) => {
30
+ const r = await route.fetch();
31
+ const b = await r.json();
32
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
33
+ const mk = (alias, status) => ({
34
+ alias, status, model: 'claude-opus-4', runtime: 'claude-code-cli',
35
+ network_id: nid, project_dir: null,
36
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
37
+ });
38
+ await route.fulfill({ response: r, json: { ...b, sessions: [
39
+ mk('a·1', 'idle'), mk('a·2', 'idle'), mk('a·3', 'working'),
40
+ ] } });
41
+ });
42
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
43
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
44
+ const page = await ctx.newPage();
45
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
46
+ await page.waitForSelector('[data-legend-swatch="idle"]', { timeout: 15000 });
47
+ await page.waitForTimeout(800);
48
+
49
+ const sel = '[data-legend-swatch="idle"]';
50
+
51
+ const restRead = async () => page.evaluate((sel) => {
52
+ const el = document.querySelector(sel);
53
+ if (!el) return null;
54
+ const cs = getComputedStyle(el);
55
+ return {
56
+ glowAttr: el.getAttribute('data-legend-swatch-glow'),
57
+ state: el.getAttribute('data-legend-swatch-state'),
58
+ filter: cs.filter,
59
+ transition: cs.transition,
60
+ };
61
+ }, sel);
62
+
63
+ // Phase 1: rest
64
+ const rest = await restRead();
65
+
66
+ // Phase 2: hover the legend 'idle' row label — sibling row hover sets
67
+ // hoveredStatus='idle' which is the same gate as the swatch's hover.
68
+ await page.hover('[data-legend-row-label="idle"]');
69
+ await page.waitForTimeout(400);
70
+ const hover = await restRead();
71
+
72
+ // Phase 3: mouseleave
73
+ await page.mouse.move(50, 50);
74
+ await page.waitForTimeout(400);
75
+ const leave = await restRead();
76
+
77
+ await browser.close();
78
+
79
+ // Source regex
80
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
81
+ const sourceFilterTernary =
82
+ /filter: \(isRowHovered \|\| isPinned\)\s+\? `drop-shadow\(0 0 3px \$\{row\.fill\}99\)`\s+: undefined,/.test(src);
83
+ const sourceAttrWired =
84
+ /data-legend-swatch-glow=\{\(isRowHovered \|\| isPinned\) \? 'true' : 'false'\}/.test(src);
85
+ const sourceTransitionExt =
86
+ /transition: 'r 150ms ease-out, filter 150ms ease-out',/.test(src);
87
+
88
+ const results = {
89
+ rest_glow_false: rest?.glowAttr === 'false',
90
+ rest_state_idle: rest?.state === 'idle',
91
+ rest_filter_none: rest?.filter === 'none' || rest?.filter === '',
92
+ rest_transition_has_filter: /\bfilter\b/.test(rest?.transition || ''),
93
+ hover_glow_true: hover?.glowAttr === 'true',
94
+ hover_state_hover: hover?.state === 'hover',
95
+ hover_filter_drop_shadow: /drop-shadow/.test(hover?.filter || ''),
96
+ hover_filter_has_teal: /rgba?\(45,?\s*212,?\s*191/.test(hover?.filter || ''), // cyber idle teal-400 #2dd4bf (computed as rgba(...))
97
+ leave_glow_false: leave?.glowAttr === 'false',
98
+ leave_filter_none: leave?.filter === 'none' || leave?.filter === '',
99
+ source_filter_ternary: sourceFilterTernary,
100
+ source_attr_wired: sourceAttrWired,
101
+ source_transition_ext: sourceTransitionExt,
102
+ };
103
+ const ok = Object.values(results).every(Boolean);
104
+ console.log(`${ok ? '✅' : '❌'} R537 legend-swatch glow:`,
105
+ JSON.stringify(results, null, 2),
106
+ '\n rest:', JSON.stringify(rest),
107
+ '\n hover:', JSON.stringify(hover),
108
+ '\n leave:', JSON.stringify(leave));
109
+ process.exit(ok ? 0 : 1);