@sleep2agi/agent-network-dashboard 0.5.3-preview.65 → 0.5.3-preview.67

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 (156) 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/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +2 -2
  14. package/.next/server/app/_not-found.rsc +2 -2
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/admin.html +2 -2
  23. package/.next/server/app/admin.rsc +2 -2
  24. package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
  25. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  27. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  29. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  30. package/.next/server/app/index.html +2 -2
  31. package/.next/server/app/index.rsc +3 -3
  32. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  33. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  34. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  35. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  36. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  37. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/login.html +2 -2
  39. package/.next/server/app/login.rsc +3 -3
  40. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  41. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  45. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  46. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/logs.html +2 -2
  48. package/.next/server/app/logs.rsc +2 -2
  49. package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
  50. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  52. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  53. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  54. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  55. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/messages.html +2 -2
  57. package/.next/server/app/messages.rsc +2 -2
  58. package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
  59. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  60. package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
  61. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  62. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  63. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  64. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/node.html +2 -2
  66. package/.next/server/app/node.rsc +2 -2
  67. package/.next/server/app/node.segments/_full.segment.rsc +2 -2
  68. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  69. package/.next/server/app/node.segments/_index.segment.rsc +2 -2
  70. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  71. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  72. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  73. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/nodes.html +2 -2
  75. package/.next/server/app/nodes.rsc +2 -2
  76. package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
  77. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  78. package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
  79. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  80. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  81. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  82. package/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/server-logs.html +2 -2
  85. package/.next/server/app/server-logs.rsc +2 -2
  86. package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
  87. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  88. package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
  89. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  90. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  91. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  93. package/.next/server/app/settings/networks.html +2 -2
  94. package/.next/server/app/settings/networks.rsc +2 -2
  95. package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
  96. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  97. package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
  98. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  99. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  100. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  101. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  102. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/settings/tokens.html +2 -2
  105. package/.next/server/app/settings/tokens.rsc +2 -2
  106. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
  109. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  110. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  111. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  112. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  113. package/.next/server/app/settings.html +2 -2
  114. package/.next/server/app/settings.rsc +3 -3
  115. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  116. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  117. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  118. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  119. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  120. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  121. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/tasks.html +2 -2
  124. package/.next/server/app/tasks.rsc +2 -2
  125. package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
  126. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  127. package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
  128. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  129. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  130. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  131. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  132. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  133. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
  134. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  135. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  136. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  137. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  138. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  139. package/.next/server/middleware-build-manifest.js +3 -3
  140. package/.next/server/pages/404.html +2 -2
  141. package/.next/server/pages/500.html +1 -1
  142. package/.next/static/chunks/{09goheht8rdsk.css → 07wsx5omf2jjb.css} +1 -1
  143. package/.next/static/chunks/{0n81v61d_4oc7.js → 0b.3ygtdh5z1m.js} +1 -1
  144. package/.next/static/chunks/{06vyer1tqqx.j.js → 0hiui3tg10sqb.js} +1 -1
  145. package/.next/static/chunks/{0g0x--w-5..e7.js → 0kt5yqm~xp3ta.js} +2 -2
  146. package/.next/static/chunks/{12a8.iez7d6-s.js → 107~_mj9x0mv6.js} +1 -1
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +56 -5
  150. package/app/globals.css +26 -0
  151. package/package.json +1 -1
  152. package/scripts/topo-active-chrome-hover-text-test.mjs +107 -0
  153. package/scripts/topo-brand-logo-breath-test.mjs +102 -0
  154. /package/.next/static/{caJGDEJfdQAgCYpZJXaQB → selbkr8is7_Jb_i2DT8FG}/_buildManifest.js +0 -0
  155. /package/.next/static/{caJGDEJfdQAgCYpZJXaQB → selbkr8is7_Jb_i2DT8FG}/_clientMiddlewareManifest.js +0 -0
  156. /package/.next/static/{caJGDEJfdQAgCYpZJXaQB → selbkr8is7_Jb_i2DT8FG}/_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.65"],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.67"],70286)},48941,e=>{"use strict";var t=e.i(22381),r=e.i(23910),a=e.i(70286);e.s(["default",0,function(){let[e,s]=(0,r.useState)("login"),[n,o]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(!1),[x,g]=(0,r.useState)(""),[h,m]=(0,r.useState)(!1),u=async t=>{t.preventDefault(),m(!0),g("");try{let t=await fetch("/api/auth/v3",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,username:n,password:i})}),r=await t.json();if(r.ok){r.token&&sessionStorage.setItem("anet_v3_auth",JSON.stringify({user:r.user,token:r.token,networks:r.networks||[],currentNetwork:r.network_id||r.networks?.[0]?.network_id||""})),window.location.assign("/");return}g(r.error||"Login failed")}catch{g("Connection failed")}m(!1)};return(0,t.jsxs)("main",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 font-mono flex items-center justify-center relative overflow-hidden px-4 py-10 sm:py-16",children:[(0,t.jsx)("div",{className:"absolute inset-0 pointer-events-none anet-login-bg","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-sm",children:[(0,t.jsxs)("div",{className:"text-center mb-7",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-4 rounded-2xl bg-[#111128] border border-[#2a2a4a] anet-login-mark",children:(0,t.jsxs)("svg",{className:"w-9 h-9",viewBox:"0 0 32 32","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.25",className:"text-cyan-400 anet-login-mark-ring"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"3",fill:"currentColor",className:"text-cyan-400 anet-login-mark-node-a"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"3",fill:"currentColor",className:"text-green-400 anet-login-mark-node-b"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"3",fill:"currentColor",className:"text-violet-400 anet-login-mark-node-c"})]})}),(0,t.jsx)("h1",{className:"text-[22px] sm:text-2xl font-semibold text-white tracking-tight",children:"Agent Network"}),(0,t.jsx)("p",{className:"text-[13px] text-gray-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Free preview · no credit card"})]})})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 mb-4",children:["login","register"].map(r=>(0,t.jsx)("button",{type:"button",onClick:()=>{s(r),g("")},className:`flex-1 rounded-md px-3 py-2 text-sm transition-colors ${e===r?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"login"===r?"Sign in":"Register"},r))}),(0,t.jsxs)("form",{onSubmit:u,className:"border border-[#2a2a4a] bg-[#111128]/80 backdrop-blur-sm rounded-xl p-6 shadow-2xl shadow-black/30",children:[(0,t.jsx)("label",{htmlFor:"username",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Username"}),(0,t.jsx)("input",{id:"username",type:"text",value:n,onChange:e=>o(e.target.value),autoFocus:!0,placeholder:"Enter username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all mb-4"}),(0,t.jsx)("label",{htmlFor:"password",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{id:"password",type:c?"text":"password",value:i,onChange:e=>l(e.target.value),placeholder:"Enter password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 pr-11 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all"}),(0,t.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":c?"Hide password":"Show password",className:"absolute inset-y-0 right-0 flex items-center px-3 text-gray-600 hover:text-gray-300 transition-colors",children:c?(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),(0,t.jsx)("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]}),x&&(0,t.jsx)("div",{className:"mt-3 text-sm text-red-300 bg-red-500/5 border border-red-500/10 rounded-lg px-3 py-2",children:x}),(0,t.jsxs)("button",{type:"submit",disabled:h||!i||!n.trim(),className:"mt-5 w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-lg transition-all shadow-lg shadow-cyan-500/10 hover:shadow-cyan-500/20 disabled:shadow-none",children:[h&&(0,t.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,t.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,t.jsx)("span",{children:h?"login"===e?"Signing in…":"Registering…":"login"===e?"Sign in":"Create account"})]})]}),(0,t.jsxs)("p",{className:"text-center text-[11px] text-gray-700 mt-6",children:["Sleep2AGI · Apache-2.0 · ",(0,t.jsx)("a",{href:"https://anet.sh",className:"hover:text-gray-500 transition-colors",children:"anet.sh"}),(0,t.jsx)("span",{className:"mx-1 text-gray-800",children:"·"}),(0,t.jsxs)("span",{className:"font-mono",title:"@sleep2agi/agent-network-dashboard",children:["v",a.DASHBOARD_VERSION]})]})]})]})}])}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":275,"timestamp":219647790876,"id":4,"parentId":1,"tags":{},"startTime":1779027620037,"traceId":"d895f6a46563fde5"},{"name":"load-custom-routes","duration":522,"timestamp":219647791289,"id":5,"parentId":1,"tags":{},"startTime":1779027620038,"traceId":"d895f6a46563fde5"},{"name":"create-dist-dir","duration":818,"timestamp":219647791870,"id":6,"parentId":1,"tags":{},"startTime":1779027620038,"traceId":"d895f6a46563fde5"},{"name":"clean","duration":33786,"timestamp":219647793454,"id":7,"parentId":1,"tags":{},"startTime":1779027620040,"traceId":"d895f6a46563fde5"},{"name":"discover-routes","duration":12707,"timestamp":219647916727,"id":8,"parentId":1,"tags":{},"startTime":1779027620163,"traceId":"d895f6a46563fde5"},{"name":"create-root-mapping","duration":128,"timestamp":219647929499,"id":9,"parentId":1,"tags":{},"startTime":1779027620176,"traceId":"d895f6a46563fde5"},{"name":"generate-route-types","duration":33888,"timestamp":219647932173,"id":10,"parentId":1,"tags":{},"startTime":1779027620178,"traceId":"d895f6a46563fde5"},{"name":"public-dir-conflict-check","duration":99,"timestamp":219647966143,"id":11,"parentId":1,"tags":{},"startTime":1779027620212,"traceId":"d895f6a46563fde5"},{"name":"generate-routes-manifest","duration":5060,"timestamp":219647966358,"id":12,"parentId":1,"tags":{},"startTime":1779027620213,"traceId":"d895f6a46563fde5"},{"name":"run-turbopack","duration":6538233,"timestamp":219647977138,"id":14,"parentId":1,"tags":{},"startTime":1779027620223,"traceId":"d895f6a46563fde5"},{"name":"turbopack-build-events","duration":91,"timestamp":219648297187,"id":15,"parentId":1,"tags":{},"startTime":1779027620543,"traceId":"d895f6a46563fde5"},{"name":"run-typescript","duration":10026086,"timestamp":219654540931,"id":16,"parentId":1,"tags":{},"startTime":1779027626787,"traceId":"d895f6a46563fde5"},{"name":"generate-required-server-files","duration":2799,"timestamp":219664568312,"id":18,"parentId":1,"tags":{},"startTime":1779027636815,"traceId":"d895f6a46563fde5"},{"name":"check-static-error-page","duration":19812,"timestamp":219664736274,"id":20,"parentId":19,"tags":{},"startTime":1779027636983,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":559234,"timestamp":219664759922,"id":65,"parentId":22,"tags":{},"startTime":1779027637006,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":579876,"timestamp":219664739445,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779027636986,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":583234,"timestamp":219664760324,"id":68,"parentId":27,"tags":{},"startTime":1779027637007,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":599412,"timestamp":219664744253,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779027636991,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":611650,"timestamp":219664760934,"id":72,"parentId":32,"tags":{},"startTime":1779027637007,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":626591,"timestamp":219664746085,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779027636992,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":618321,"timestamp":219664761116,"id":73,"parentId":33,"tags":{},"startTime":1779027637007,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":633154,"timestamp":219664746348,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779027636993,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":621354,"timestamp":219664760436,"id":69,"parentId":28,"tags":{},"startTime":1779027637007,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":637318,"timestamp":219664744551,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779027636991,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":627886,"timestamp":219664761198,"id":74,"parentId":34,"tags":{},"startTime":1779027637007,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":642521,"timestamp":219664746622,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779027636993,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":628755,"timestamp":219664760699,"id":70,"parentId":29,"tags":{},"startTime":1779027637007,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":644667,"timestamp":219664744831,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779027636991,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":630260,"timestamp":219664761226,"id":75,"parentId":35,"tags":{},"startTime":1779027637007,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":644560,"timestamp":219664746969,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779027636993,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":636881,"timestamp":219664759615,"id":64,"parentId":21,"tags":{},"startTime":1779027637006,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":658713,"timestamp":219664737833,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779027636984,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":635514,"timestamp":219664761240,"id":76,"parentId":36,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":648718,"timestamp":219664748077,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779027636994,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":650787,"timestamp":219664761306,"id":80,"parentId":40,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":663180,"timestamp":219664748978,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779027636995,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":661933,"timestamp":219664761283,"id":78,"parentId":38,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":674565,"timestamp":219664748705,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779027636995,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":668223,"timestamp":219664761319,"id":81,"parentId":42,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":680228,"timestamp":219664749392,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779027636996,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":669116,"timestamp":219664761266,"id":77,"parentId":37,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":682020,"timestamp":219664748411,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779027636995,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":673458,"timestamp":219664761341,"id":83,"parentId":45,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":684806,"timestamp":219664750058,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779027636996,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":675221,"timestamp":219664760864,"id":71,"parentId":30,"tags":{},"startTime":1779027637007,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":690902,"timestamp":219664745224,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779027636991,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":683433,"timestamp":219664761332,"id":82,"parentId":44,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":694938,"timestamp":219664749890,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779027636996,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":684850,"timestamp":219664760200,"id":67,"parentId":26,"tags":{},"startTime":1779027637006,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":701123,"timestamp":219664743968,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779027636990,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":683884,"timestamp":219664761354,"id":84,"parentId":46,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":695079,"timestamp":219664750193,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779027636996,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":684027,"timestamp":219664761371,"id":85,"parentId":47,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":693543,"timestamp":219664751885,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779027636998,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":690091,"timestamp":219664761392,"id":87,"parentId":49,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":699312,"timestamp":219664752216,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779027636998,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":684359,"timestamp":219664767785,"id":90,"parentId":24,"tags":{},"startTime":1779027637014,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":712154,"timestamp":219664740032,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779027636986,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":691248,"timestamp":219664761418,"id":89,"parentId":51,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":700281,"timestamp":219664752429,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779027636999,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":684755,"timestamp":219664772924,"id":91,"parentId":31,"tags":{},"startTime":1779027637019,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":712199,"timestamp":219664745526,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779027636992,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":696522,"timestamp":219664761379,"id":86,"parentId":48,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":705872,"timestamp":219664752066,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779027636998,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":698050,"timestamp":219664760087,"id":66,"parentId":25,"tags":{},"startTime":1779027637006,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":714537,"timestamp":219664743638,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779027636990,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":683147,"timestamp":219664775169,"id":93,"parentId":43,"tags":{},"startTime":1779027637021,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":708785,"timestamp":219664749565,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779027636996,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":695302,"timestamp":219664773814,"id":92,"parentId":41,"tags":{},"startTime":1779027637020,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":720054,"timestamp":219664749112,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779027636995,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":708956,"timestamp":219664761404,"id":88,"parentId":50,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":718073,"timestamp":219664752327,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779027636999,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":749600,"timestamp":219664761292,"id":79,"parentId":39,"tags":{},"startTime":1779027637008,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":762295,"timestamp":219664748852,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779027636995,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":735261,"timestamp":219664779521,"id":94,"parentId":23,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":775112,"timestamp":219664739738,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779027636986,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":745945,"timestamp":219664779619,"id":100,"parentId":58,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":771060,"timestamp":219664754564,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779027637001,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":749249,"timestamp":219664779750,"id":101,"parentId":59,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":774299,"timestamp":219664754784,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779027637001,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":753293,"timestamp":219664779769,"id":102,"parentId":61,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":777643,"timestamp":219664755472,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779027637002,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":760627,"timestamp":219664779581,"id":97,"parentId":54,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":787065,"timestamp":219664753208,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779027636999,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":760980,"timestamp":219664779591,"id":98,"parentId":55,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":787184,"timestamp":219664753429,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779027637000,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":761061,"timestamp":219664779798,"id":104,"parentId":63,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":785103,"timestamp":219664755792,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779027637002,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":764480,"timestamp":219664779784,"id":103,"parentId":62,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":788676,"timestamp":219664755630,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779027637002,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":755436,"timestamp":219664789606,"id":105,"parentId":60,"tags":{},"startTime":1779027637036,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":790056,"timestamp":219664755022,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779027637001,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":765617,"timestamp":219664779551,"id":95,"parentId":52,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":792393,"timestamp":219664752811,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779027636999,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":767506,"timestamp":219664779607,"id":99,"parentId":56,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":793493,"timestamp":219664753653,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779027637000,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":740880,"timestamp":219664807424,"id":106,"parentId":57,"tags":{},"startTime":1779027637054,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":794406,"timestamp":219664753923,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779027637000,"traceId":"d895f6a46563fde5"},{"name":"is-page-static","duration":785134,"timestamp":219664779567,"id":96,"parentId":53,"tags":{},"startTime":1779027637026,"traceId":"d895f6a46563fde5"},{"name":"check-page","duration":811723,"timestamp":219664753026,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779027636999,"traceId":"d895f6a46563fde5"},{"name":"static-check","duration":829677,"timestamp":219664735126,"id":19,"parentId":1,"tags":{},"startTime":1779027636981,"traceId":"d895f6a46563fde5"}]
2
- [{"name":"write-routes-manifest","duration":501,"timestamp":219665575852,"id":108,"parentId":1,"tags":{},"startTime":1779027637822,"traceId":"d895f6a46563fde5"},{"name":"load-dotenv","duration":46,"timestamp":219665587374,"id":111,"parentId":110,"tags":{},"startTime":1779027637834,"traceId":"d895f6a46563fde5"},{"name":"run-export-path-map","duration":781,"timestamp":219665590857,"id":112,"parentId":110,"tags":{},"startTime":1779027637837,"traceId":"d895f6a46563fde5"},{"name":"next-export","duration":611096,"timestamp":219665586183,"id":110,"parentId":1,"tags":{},"startTime":1779027637832,"traceId":"d895f6a46563fde5"},{"name":"move-exported-app-not-found-","duration":562,"timestamp":219666200765,"id":113,"parentId":109,"tags":{},"startTime":1779027638447,"traceId":"d895f6a46563fde5"},{"name":"move-exported-app-global-error-","duration":536,"timestamp":219666201437,"id":114,"parentId":109,"tags":{},"startTime":1779027638448,"traceId":"d895f6a46563fde5"},{"name":"static-generation","duration":623757,"timestamp":219665580353,"id":109,"parentId":1,"tags":{},"startTime":1779027637827,"traceId":"d895f6a46563fde5"},{"name":"write-routes-manifest","duration":459,"timestamp":219666204338,"id":115,"parentId":1,"tags":{},"startTime":1779027638451,"traceId":"d895f6a46563fde5"},{"name":"print-tree-view","duration":4846,"timestamp":219666213774,"id":116,"parentId":1,"tags":{},"startTime":1779027638460,"traceId":"d895f6a46563fde5"},{"name":"write-route-bundle-stats","duration":15727,"timestamp":219666218654,"id":117,"parentId":1,"tags":{},"startTime":1779027638465,"traceId":"d895f6a46563fde5"},{"name":"telemetry-flush","duration":23060,"timestamp":219666234409,"id":118,"parentId":1,"tags":{},"startTime":1779027638481,"traceId":"d895f6a46563fde5"},{"name":"next-build","duration":18517306,"timestamp":219647740195,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779027619986,"traceId":"d895f6a46563fde5"}]
1
+ [{"name":"generate-buildid","duration":292,"timestamp":220243030294,"id":4,"parentId":1,"tags":{},"startTime":1779028215277,"traceId":"a39e23515b8171db"},{"name":"load-custom-routes","duration":502,"timestamp":220243030746,"id":5,"parentId":1,"tags":{},"startTime":1779028215277,"traceId":"a39e23515b8171db"},{"name":"create-dist-dir","duration":781,"timestamp":220243031295,"id":6,"parentId":1,"tags":{},"startTime":1779028215278,"traceId":"a39e23515b8171db"},{"name":"clean","duration":36913,"timestamp":220243032793,"id":7,"parentId":1,"tags":{},"startTime":1779028215279,"traceId":"a39e23515b8171db"},{"name":"discover-routes","duration":29689,"timestamp":220243165346,"id":8,"parentId":1,"tags":{},"startTime":1779028215412,"traceId":"a39e23515b8171db"},{"name":"create-root-mapping","duration":204,"timestamp":220243195127,"id":9,"parentId":1,"tags":{},"startTime":1779028215441,"traceId":"a39e23515b8171db"},{"name":"generate-route-types","duration":27929,"timestamp":220243198941,"id":10,"parentId":1,"tags":{},"startTime":1779028215445,"traceId":"a39e23515b8171db"},{"name":"public-dir-conflict-check","duration":158,"timestamp":220243226988,"id":11,"parentId":1,"tags":{},"startTime":1779028215473,"traceId":"a39e23515b8171db"},{"name":"generate-routes-manifest","duration":5980,"timestamp":220243227372,"id":12,"parentId":1,"tags":{},"startTime":1779028215474,"traceId":"a39e23515b8171db"},{"name":"run-turbopack","duration":6372150,"timestamp":220243246778,"id":14,"parentId":1,"tags":{},"startTime":1779028215493,"traceId":"a39e23515b8171db"},{"name":"turbopack-build-events","duration":96,"timestamp":220243558126,"id":15,"parentId":1,"tags":{},"startTime":1779028215804,"traceId":"a39e23515b8171db"},{"name":"run-typescript","duration":10231533,"timestamp":220249672909,"id":16,"parentId":1,"tags":{},"startTime":1779028221919,"traceId":"a39e23515b8171db"},{"name":"generate-required-server-files","duration":2603,"timestamp":220259905542,"id":18,"parentId":1,"tags":{},"startTime":1779028232152,"traceId":"a39e23515b8171db"},{"name":"check-static-error-page","duration":15933,"timestamp":220260052127,"id":20,"parentId":19,"tags":{},"startTime":1779028232298,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":450152,"timestamp":220260072592,"id":65,"parentId":22,"tags":{},"startTime":1779028232319,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":467637,"timestamp":220260055320,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779028232302,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":551097,"timestamp":220260073121,"id":69,"parentId":28,"tags":{},"startTime":1779028232319,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":565225,"timestamp":220260059096,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779028232305,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":564459,"timestamp":220260073602,"id":72,"parentId":32,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":578397,"timestamp":220260059763,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779028232306,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":569219,"timestamp":220260073767,"id":73,"parentId":33,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":583177,"timestamp":220260059903,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779028232306,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":572323,"timestamp":220260072761,"id":66,"parentId":25,"tags":{},"startTime":1779028232319,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":586539,"timestamp":220260058607,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779028232305,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":573127,"timestamp":220260072193,"id":64,"parentId":21,"tags":{},"startTime":1779028232318,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":591767,"timestamp":220260053695,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779028232300,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":578345,"timestamp":220260073886,"id":75,"parentId":35,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":592145,"timestamp":220260060153,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779028232306,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":579267,"timestamp":220260073855,"id":74,"parentId":34,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":593139,"timestamp":220260060034,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779028232306,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":584512,"timestamp":220260073948,"id":78,"parentId":38,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":597492,"timestamp":220260061024,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779028232307,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":599811,"timestamp":220260073962,"id":79,"parentId":39,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":612697,"timestamp":220260061155,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779028232307,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":610140,"timestamp":220260073978,"id":80,"parentId":40,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":622896,"timestamp":220260061285,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779028232308,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":616778,"timestamp":220260073539,"id":71,"parentId":30,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":630999,"timestamp":220260059373,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779028232306,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":616576,"timestamp":220260073988,"id":81,"parentId":42,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":628964,"timestamp":220260061652,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779028232308,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":618206,"timestamp":220260072995,"id":68,"parentId":27,"tags":{},"startTime":1779028232319,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":632308,"timestamp":220260058948,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779028232305,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":619266,"timestamp":220260073935,"id":77,"parentId":37,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":632392,"timestamp":220260060860,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779028232307,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":615116,"timestamp":220260080945,"id":83,"parentId":45,"tags":{},"startTime":1779028232327,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":632347,"timestamp":220260063758,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779028232310,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":615678,"timestamp":220260080963,"id":84,"parentId":46,"tags":{},"startTime":1779028232327,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":632795,"timestamp":220260063896,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779028232310,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":616895,"timestamp":220260080974,"id":85,"parentId":47,"tags":{},"startTime":1779028232327,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":633877,"timestamp":220260064037,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779028232310,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":618479,"timestamp":220260080895,"id":82,"parentId":44,"tags":{},"startTime":1779028232327,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":637267,"timestamp":220260062148,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779028232308,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":621200,"timestamp":220260080989,"id":86,"parentId":48,"tags":{},"startTime":1779028232327,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":638092,"timestamp":220260064140,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779028232310,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":627036,"timestamp":220260081029,"id":88,"parentId":50,"tags":{},"startTime":1779028232327,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":643827,"timestamp":220260064332,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779028232311,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":623959,"timestamp":220260084547,"id":90,"parentId":24,"tags":{},"startTime":1779028232331,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":652719,"timestamp":220260055832,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779028232302,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":624377,"timestamp":220260085822,"id":91,"parentId":31,"tags":{},"startTime":1779028232332,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":650751,"timestamp":220260059491,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779028232306,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":627692,"timestamp":220260086648,"id":92,"parentId":41,"tags":{},"startTime":1779028232333,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":652995,"timestamp":220260061392,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779028232308,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":642088,"timestamp":220260072889,"id":67,"parentId":26,"tags":{},"startTime":1779028232319,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":656249,"timestamp":220260058795,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779028232305,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":637580,"timestamp":220260081042,"id":89,"parentId":51,"tags":{},"startTime":1779028232327,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":654261,"timestamp":220260064409,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779028232311,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":641858,"timestamp":220260087882,"id":93,"parentId":43,"tags":{},"startTime":1779028232334,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":667999,"timestamp":220260061798,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779028232308,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":654603,"timestamp":220260081018,"id":87,"parentId":49,"tags":{},"startTime":1779028232327,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":671421,"timestamp":220260064249,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779028232311,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":687071,"timestamp":220260073395,"id":70,"parentId":29,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":701312,"timestamp":220260059227,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779028232305,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":702979,"timestamp":220260073906,"id":76,"parentId":36,"tags":{},"startTime":1779028232320,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":716343,"timestamp":220260060627,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779028232307,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":687955,"timestamp":220260097707,"id":100,"parentId":58,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":719277,"timestamp":220260066448,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779028232313,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":689183,"timestamp":220260097614,"id":94,"parentId":23,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":731273,"timestamp":220260055595,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779028232302,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":701850,"timestamp":220260097851,"id":102,"parentId":61,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":732474,"timestamp":220260067313,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779028232314,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":705623,"timestamp":220260097658,"id":96,"parentId":53,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":738367,"timestamp":220260064971,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779028232311,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":706646,"timestamp":220260097675,"id":97,"parentId":54,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":739217,"timestamp":220260065162,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779028232311,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":707728,"timestamp":220260097819,"id":101,"parentId":59,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":738946,"timestamp":220260066657,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779028232313,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":716703,"timestamp":220260097875,"id":104,"parentId":63,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":746842,"timestamp":220260067789,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779028232314,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":703595,"timestamp":220260111204,"id":106,"parentId":57,"tags":{},"startTime":1779028232357,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":749014,"timestamp":220260065818,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779028232312,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":723173,"timestamp":220260097863,"id":103,"parentId":62,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":753448,"timestamp":220260067638,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779028232314,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":723712,"timestamp":220260097884,"id":105,"parentId":60,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":754790,"timestamp":220260066858,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779028232313,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":738025,"timestamp":220260097643,"id":95,"parentId":52,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":770918,"timestamp":220260064799,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779028232311,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":751069,"timestamp":220260097683,"id":98,"parentId":55,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":783425,"timestamp":220260065372,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779028232312,"traceId":"a39e23515b8171db"},{"name":"is-page-static","duration":780619,"timestamp":220260097695,"id":99,"parentId":56,"tags":{},"startTime":1779028232344,"traceId":"a39e23515b8171db"},{"name":"check-page","duration":812823,"timestamp":220260065572,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779028232312,"traceId":"a39e23515b8171db"},{"name":"static-check","duration":827726,"timestamp":220260050717,"id":19,"parentId":1,"tags":{},"startTime":1779028232297,"traceId":"a39e23515b8171db"}]
2
+ [{"name":"write-routes-manifest","duration":819,"timestamp":220260902798,"id":108,"parentId":1,"tags":{},"startTime":1779028233149,"traceId":"a39e23515b8171db"},{"name":"load-dotenv","duration":87,"timestamp":220260919899,"id":111,"parentId":110,"tags":{},"startTime":1779028233166,"traceId":"a39e23515b8171db"},{"name":"run-export-path-map","duration":558,"timestamp":220260923171,"id":112,"parentId":110,"tags":{},"startTime":1779028233169,"traceId":"a39e23515b8171db"},{"name":"next-export","duration":609168,"timestamp":220260917693,"id":110,"parentId":1,"tags":{},"startTime":1779028233164,"traceId":"a39e23515b8171db"},{"name":"move-exported-app-not-found-","duration":529,"timestamp":220261531051,"id":113,"parentId":109,"tags":{},"startTime":1779028233777,"traceId":"a39e23515b8171db"},{"name":"move-exported-app-global-error-","duration":558,"timestamp":220261531685,"id":114,"parentId":109,"tags":{},"startTime":1779028233778,"traceId":"a39e23515b8171db"},{"name":"static-generation","duration":626501,"timestamp":220260908164,"id":109,"parentId":1,"tags":{},"startTime":1779028233154,"traceId":"a39e23515b8171db"},{"name":"write-routes-manifest","duration":492,"timestamp":220261534929,"id":115,"parentId":1,"tags":{},"startTime":1779028233781,"traceId":"a39e23515b8171db"},{"name":"print-tree-view","duration":4909,"timestamp":220261552552,"id":116,"parentId":1,"tags":{},"startTime":1779028233799,"traceId":"a39e23515b8171db"},{"name":"write-route-bundle-stats","duration":15086,"timestamp":220261557496,"id":117,"parentId":1,"tags":{},"startTime":1779028233804,"traceId":"a39e23515b8171db"},{"name":"telemetry-flush","duration":28959,"timestamp":220261572622,"id":118,"parentId":1,"tags":{},"startTime":1779028233819,"traceId":"a39e23515b8171db"},{"name":"next-build","duration":18627012,"timestamp":220242974613,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779028215221,"traceId":"a39e23515b8171db"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6538233,"timestamp":219647977138,"id":14,"parentId":1,"tags":{},"startTime":1779027620223,"traceId":"d895f6a46563fde5"},{"name":"turbopack-build-events","duration":91,"timestamp":219648297187,"id":15,"parentId":1,"tags":{},"startTime":1779027620543,"traceId":"d895f6a46563fde5"},{"name":"run-typescript","duration":10026086,"timestamp":219654540931,"id":16,"parentId":1,"tags":{},"startTime":1779027626787,"traceId":"d895f6a46563fde5"},{"name":"static-check","duration":829677,"timestamp":219664735126,"id":19,"parentId":1,"tags":{},"startTime":1779027636981,"traceId":"d895f6a46563fde5"},{"name":"static-generation","duration":623757,"timestamp":219665580353,"id":109,"parentId":1,"tags":{},"startTime":1779027637827,"traceId":"d895f6a46563fde5"},{"name":"telemetry-flush","duration":23060,"timestamp":219666234409,"id":118,"parentId":1,"tags":{},"startTime":1779027638481,"traceId":"d895f6a46563fde5"},{"name":"next-build","duration":18517306,"timestamp":219647740195,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779027619986,"traceId":"d895f6a46563fde5"}]
1
+ [{"name":"run-turbopack","duration":6372150,"timestamp":220243246778,"id":14,"parentId":1,"tags":{},"startTime":1779028215493,"traceId":"a39e23515b8171db"},{"name":"turbopack-build-events","duration":96,"timestamp":220243558126,"id":15,"parentId":1,"tags":{},"startTime":1779028215804,"traceId":"a39e23515b8171db"},{"name":"run-typescript","duration":10231533,"timestamp":220249672909,"id":16,"parentId":1,"tags":{},"startTime":1779028221919,"traceId":"a39e23515b8171db"},{"name":"static-check","duration":827726,"timestamp":220260050717,"id":19,"parentId":1,"tags":{},"startTime":1779028232297,"traceId":"a39e23515b8171db"},{"name":"static-generation","duration":626501,"timestamp":220260908164,"id":109,"parentId":1,"tags":{},"startTime":1779028233154,"traceId":"a39e23515b8171db"},{"name":"telemetry-flush","duration":28959,"timestamp":220261572622,"id":118,"parentId":1,"tags":{},"startTime":1779028233819,"traceId":"a39e23515b8171db"},{"name":"next-build","duration":18627012,"timestamp":220242974613,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779028215221,"traceId":"a39e23515b8171db"}]
@@ -1802,12 +1802,36 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
1802
1802
  landing rotation for tests. Pair with R548's
1803
1803
  data-topo-brand-logo-hover-scale attr — both attrs
1804
1804
  advertise the dual-axis hover signature. */}
1805
+ {/* Round 553 / Loop — title-block brand logo gains subtle
1806
+ idle opacity breath (~0.92 ↔ 1, 5s ease-in-out cycle).
1807
+ 5th anchor in the 呼吸感 breath family, slotting into
1808
+ the ascending cadence ladder between hub idle (4s) and
1809
+ watermark (6s):
1810
+ row hot 3s
1811
+ hub idle 4s
1812
+ brand logo 5s ← this round
1813
+ watermark 6s
1814
+ crescent 7s
1815
+ Composes cleanly with R548 hover:scale-105 + R549
1816
+ hover:rotate-6 — opacity, scale, and rotate are
1817
+ independent CSS properties; the moon keeps breathing
1818
+ as it scales and rotates on hover. Layered effect
1819
+ reads as "this brand mark is alive even before you
1820
+ touch it, and lights up further on hover".
1821
+ Reduced-motion gate: component-side `!reducedMotion`
1822
+ toggles the className (canonical TopoGraph breath
1823
+ pattern); R29 globals.css blanket provides a
1824
+ defense-in-depth fallback (animation-duration →
1825
+ 0.001ms under prefers-reduced-motion: reduce).
1826
+ data-topo-brand-logo-breath attr exposes the gate
1827
+ state for tests. */}
1805
1828
  <svg
1806
1829
  width="40" height="40" viewBox="0 0 32 32" aria-hidden
1807
- className="shrink-0 transition-transform duration-200 ease-out hover:scale-105 hover:rotate-6 transform-gpu"
1830
+ className={`shrink-0 transition-transform duration-200 ease-out hover:scale-105 hover:rotate-6 transform-gpu${!reducedMotion ? ' anet-topo-brand-logo-breath' : ''}`}
1808
1831
  data-topo-brand-logo
1809
1832
  data-topo-brand-logo-hover-scale="1.05"
1810
1833
  data-topo-brand-logo-hover-rotate="6deg"
1834
+ data-topo-brand-logo-breath={!reducedMotion ? 'true' : 'false'}
1811
1835
  style={{
1812
1836
  color: isLight ? '#0d9488' : '#67e8f9',
1813
1837
  cursor: 'default',
@@ -2066,7 +2090,34 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2066
2090
  fw preview on its inactive variant.
2067
2091
  data-topo-chrome-layout-hover-preview-fw="500" attr
2068
2092
  on inactive button exposes the polish for tests. */
2069
- className={`px-2.5 py-1 focus:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset hover:tracking-wide active:scale-95 transform-gpu ${layout === 'ring' ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'text-gray-400 hover:text-cyan-300 hover:bg-cyan-500/5 active:bg-cyan-500/15 hover:font-medium'} ${chromePopping === 'layout-ring' ? ' anet-chrome-pop' : ''}`}
2093
+ /* Round 552 / Loop chrome active-variant gains hover:
2094
+ text-cyan-200, lifting text one brightness tier alongside
2095
+ the existing hover:bg-cyan-500/20 bg deepen. Coordinated
2096
+ 4-anchor edit (replace_all touched 4 sibling lines sharing
2097
+ the identical active-variant className substring):
2098
+ Ring (this line) layout === 'ring'
2099
+ Grid (line ~2097) layout === 'grid'
2100
+ S/M/L (line ~12635) nodeScale === v
2101
+ Fscrn (line ~13030) isFullscreen
2102
+ Pre-R552 the active variant's hover state only deepened bg
2103
+ (cyan-500/15 → /20); text stayed planted at cyan-300. The
2104
+ inactive variant already lifts text on hover (text-gray-400
2105
+ → text-cyan-300). R552 brings parity: active variant lifts
2106
+ text one tier brighter (cyan-300 → cyan-200) on hover,
2107
+ mirroring the inactive variant's "text brightens on hover"
2108
+ gesture at the next brightness step.
2109
+ Brightness ladder snapshot (cyan):
2110
+ cyan-400 brand chrome focus ring
2111
+ cyan-300 active-variant rest ←─┐
2112
+ │ +1 tier on hover
2113
+ cyan-200 active-variant hover ←─┘ (this round)
2114
+ Pure paint axis (text color); bbox/geometry unchanged.
2115
+ transition-colors already in the class list so the cyan-
2116
+ 300 → cyan-200 swap eases at the existing 200ms cadence.
2117
+ hover-color brighten family extension at the chrome strip
2118
+ active-variant scope; sibling to the inactive variant's
2119
+ R163/R178/R179/R270 hover:text-cyan-300 idiom. */
2120
+ className={`px-2.5 py-1 focus:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset hover:tracking-wide active:scale-95 transform-gpu ${layout === 'ring' ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 hover:text-cyan-200 active:bg-cyan-500/25' : 'text-gray-400 hover:text-cyan-300 hover:bg-cyan-500/5 active:bg-cyan-500/15 hover:font-medium'} ${chromePopping === 'layout-ring' ? ' anet-chrome-pop' : ''}`}
2070
2121
  data-topo-chrome-layout-hover-preview-fw={layout === 'ring' ? null : '500'}
2071
2122
  style={{ transition: 'background-color 150ms ease, color 150ms ease, letter-spacing 200ms ease-out, transform 150ms ease-out, font-weight 150ms ease' }}
2072
2123
  >
@@ -2094,7 +2145,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2094
2145
  inactive variant gains `hover:font-medium` typography
2095
2146
  preview + font-weight 150ms in inline transition list.
2096
2147
  Same idiom, same family (R522 chrome layout). */
2097
- className={`px-2.5 py-1 border-l focus:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset hover:tracking-wide active:scale-95 transform-gpu ${layout === 'grid' ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'text-gray-400 hover:text-cyan-300 hover:bg-cyan-500/5 active:bg-cyan-500/15 hover:font-medium'} ${chromePopping === 'layout-grid' ? ' anet-chrome-pop' : ''}`}
2148
+ className={`px-2.5 py-1 border-l focus:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset hover:tracking-wide active:scale-95 transform-gpu ${layout === 'grid' ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 hover:text-cyan-200 active:bg-cyan-500/25' : 'text-gray-400 hover:text-cyan-300 hover:bg-cyan-500/5 active:bg-cyan-500/15 hover:font-medium'} ${chromePopping === 'layout-grid' ? ' anet-chrome-pop' : ''}`}
2098
2149
  data-topo-chrome-layout-hover-preview-fw={layout === 'grid' ? null : '500'}
2099
2150
  /* Round 268 / Loop: Grid button's left border (the
2100
2151
  internal divider between Ring and Grid) picks up
@@ -12632,7 +12683,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
12632
12683
  rest at fw 400, inactive hover preview at fw 500).
12633
12684
  data-topo-chrome-nodesize-hover-preview-fw="500" attr
12634
12685
  exposes the polish for tests. */
12635
- className={`px-2 py-1 transition-colors transition-transform transition-[font-weight] duration-200 ease-out transform-gpu active:scale-95 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${idx > 0 ? 'border-l' : ''} ${nodeScale === v ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'hover:bg-cyan-500/5 active:bg-cyan-500/15 hover:font-medium'}${chromePopping === popKey ? ' anet-chrome-pop' : ''}`}
12686
+ className={`px-2 py-1 transition-colors transition-transform transition-[font-weight] duration-200 ease-out transform-gpu active:scale-95 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${idx > 0 ? 'border-l' : ''} ${nodeScale === v ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 hover:text-cyan-200 active:bg-cyan-500/25' : 'hover:bg-cyan-500/5 active:bg-cyan-500/15 hover:font-medium'}${chromePopping === popKey ? ' anet-chrome-pop' : ''}`}
12636
12687
  data-topo-chrome-nodesize-hover-preview-fw={nodeScale === v ? null : '500'}
12637
12688
  style={{ color: nodeScale === v ? undefined : pal.legendText, borderColor: pal.containerBorder }}
12638
12689
  >
@@ -13027,7 +13078,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
13027
13078
  // reset above: lift-and-compress compound transform on press).
13028
13079
  className={`group p-1.5 rounded-md border hover:-translate-y-px active:scale-95 transition-colors transition-transform duration-200 ease-out transform-gpu focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 ${
13029
13080
  isFullscreen
13030
- ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25'
13081
+ ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 hover:text-cyan-200 active:bg-cyan-500/25'
13031
13082
  : 'hover:bg-cyan-500/5 active:bg-cyan-500/15'
13032
13083
  }${chromePopping === 'fullscreen' ? ' anet-chrome-pop' : ''}`}
13033
13084
  data-topo-chrome-fullscreen-hover-lift="true"
package/app/globals.css CHANGED
@@ -1074,6 +1074,32 @@ body {
1074
1074
  animation-iteration-count: infinite;
1075
1075
  }
1076
1076
 
1077
+ /* Round 553 — title-block brand logo subtle idle breath.
1078
+ 5th anchor in the 呼吸感 breath family — cadence ladder:
1079
+ row hot 3s
1080
+ hub idle 4s
1081
+ brand logo 5s ← this round
1082
+ watermark 6s
1083
+ crescent 7s
1084
+ Pure opacity breath (0.92 ↔ 1, ~8% delta) on the title-block
1085
+ crescent SVG so the brand mark reads as a "living mark" at
1086
+ rest. Composes cleanly with R548 hover:scale-105 +
1087
+ R549 hover:rotate-6 (independent properties: opacity vs
1088
+ scale/rotate; the moon keeps breathing as it lifts on hover).
1089
+ prefers-reduced-motion handled by R29 blanket override —
1090
+ animation-duration → 0.001ms neutralises the keyframe without
1091
+ killing the static opacity baseline. Component-side gate also
1092
+ applied (`!reducedMotion` toggles the className) as canonical
1093
+ TopoGraph breath pattern (sibling to R130 hub idle / R519
1094
+ watermark / R326 crescent breath gates). */
1095
+ @keyframes anet-topo-brand-logo-breath-kf {
1096
+ 0%, 100% { opacity: 1; }
1097
+ 50% { opacity: 0.92; }
1098
+ }
1099
+ .anet-topo-brand-logo-breath {
1100
+ animation: anet-topo-brand-logo-breath-kf 5s ease-in-out infinite;
1101
+ }
1102
+
1077
1103
  /* ─────────────────────────────────────────────────────────────────────
1078
1104
  Round 29 — prefers-reduced-motion a11y sweep
1079
1105
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.65",
3
+ "version": "0.5.3-preview.67",
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,107 @@
1
+ /* Round 552 verification: chrome active-variant buttons gain
2
+ * hover:text-cyan-200 lift. Coordinated 4-anchor edit:
3
+ * Ring | Grid | S/M/L | Fullscreen
4
+ *
5
+ * Test phases:
6
+ * 1. Pick an active button (Ring is active by default in ring layout)
7
+ * 2. Read rest text color (cyan-300 = rgb(103, 232, 249))
8
+ * 3. Hover → text color = cyan-200 (rgb(165, 243, 252))
9
+ * 4. Verify bg also deepened (cyan-500/20)
10
+ * 5. Source-side regex: 4 occurrences of the new className substring
11
+ */
12
+ import { chromium } from 'playwright';
13
+ import { readFileSync } from 'node:fs';
14
+
15
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
16
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
17
+
18
+ const browser = await chromium.launch({ headless: true });
19
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
20
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
21
+ await ctx.addInitScript(() => {
22
+ try {
23
+ localStorage.setItem('anet-theme', 'cyber');
24
+ localStorage.setItem('anet-topo-layout', 'ring');
25
+ sessionStorage.setItem('anet_v3_auth', '1');
26
+ } catch {}
27
+ });
28
+ await ctx.route('**/api/hub/status*', async (route) => {
29
+ const r = await route.fetch();
30
+ const b = await r.json();
31
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
32
+ const mk = (alias) => ({
33
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
34
+ network_id: nid, project_dir: null,
35
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
36
+ });
37
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1')] } });
38
+ });
39
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
40
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
41
+ const page = await ctx.newPage();
42
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
43
+ await page.waitForSelector('[data-topo-chrome-layout="ring"]', { timeout: 15000 });
44
+ await page.waitForTimeout(500);
45
+
46
+ // Ring is active in ring layout
47
+ const sel = '[data-topo-chrome-layout="ring"]';
48
+ const rest = await page.evaluate((s) => {
49
+ const el = document.querySelector(s);
50
+ if (!el) return null;
51
+ const cs = getComputedStyle(el);
52
+ return {
53
+ color: cs.color,
54
+ bg: cs.backgroundColor,
55
+ activeAttr: el.getAttribute('data-topo-chrome-layout-active'),
56
+ };
57
+ }, sel);
58
+
59
+ await page.hover(sel);
60
+ await page.waitForTimeout(400);
61
+ const hover = await page.evaluate((s) => {
62
+ const el = document.querySelector(s);
63
+ if (!el) return null;
64
+ const cs = getComputedStyle(el);
65
+ return { color: cs.color, bg: cs.backgroundColor };
66
+ }, sel);
67
+
68
+ await browser.close();
69
+
70
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
71
+ // New active-variant substring must appear 4× (Ring, Grid, S/M/L, Fullscreen)
72
+ const occurrences = (src.match(/bg-cyan-500\/15 text-cyan-300 font-medium hover:bg-cyan-500\/20 hover:text-cyan-200 active:bg-cyan-500\/25/g) || []).length;
73
+
74
+ // Tailwind v4 emits cyan-300 / cyan-200 in lab() / oklab() color
75
+ // space, not legacy rgb(). Parse the L (lightness) component and
76
+ // verify hover L > rest L (cyan-200 is lighter than cyan-300).
77
+ // Bg uses oklab with alpha; rest alpha = 0.15 (cyan-500/15), hover
78
+ // alpha = 0.2 (cyan-500/20).
79
+ const parseLab = (s) => {
80
+ const m = (s || '').match(/lab\(([0-9.]+)\s/) || (s || '').match(/oklab\(([0-9.]+)\s/);
81
+ return m ? parseFloat(m[1]) : NaN;
82
+ };
83
+ const parseAlpha = (s) => {
84
+ const m = (s || '').match(/\/\s*([0-9.]+)\)/);
85
+ return m ? parseFloat(m[1]) : NaN;
86
+ };
87
+ const restL = parseLab(rest?.color);
88
+ const hoverL = parseLab(hover?.color);
89
+ const restBgA = parseAlpha(rest?.bg);
90
+ const hoverBgA = parseAlpha(hover?.bg);
91
+
92
+ const results = {
93
+ active_attr: rest?.activeAttr === 'true',
94
+ rest_text_parsed: !Number.isNaN(restL),
95
+ hover_text_parsed: !Number.isNaN(hoverL),
96
+ hover_text_lighter_than_rest: hoverL > restL + 3, // cyan-200 L≈91 > cyan-300 L≈85
97
+ rest_bg_alpha_0_15: Math.abs(restBgA - 0.15) < 0.01,
98
+ hover_bg_alpha_0_20: Math.abs(hoverBgA - 0.20) < 0.01,
99
+ source_4_occurrences: occurrences === 4,
100
+ };
101
+ const ok = Object.values(results).every(Boolean);
102
+ console.log(`${ok ? '✅' : '❌'} R552 chrome active-variant hover:text-cyan-200 (4 anchors):`,
103
+ JSON.stringify(results, null, 2),
104
+ '\n rest:', JSON.stringify(rest),
105
+ '\n hover:', JSON.stringify(hover),
106
+ '\n source occurrences:', occurrences);
107
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,102 @@
1
+ /* Round 553 verification: title-block brand logo gains subtle idle
2
+ * opacity breath (0.92 ↔ 1, 5s cycle). 5th anchor in the 呼吸感
3
+ * breath family.
4
+ *
5
+ * Test phases:
6
+ * 1. brand-logo className contains 'anet-topo-brand-logo-breath'
7
+ * 2. data-topo-brand-logo-breath="true" attr present
8
+ * 3. computed animation-name === 'anet-topo-brand-logo-breath-kf'
9
+ * (paused or running)
10
+ * 4. computed animation-duration === '5s'
11
+ * 5. source-side regex confirms keyframe + class + componentJSX
12
+ */
13
+ import { chromium } from 'playwright';
14
+ import { readFileSync } from 'node:fs';
15
+
16
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
17
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
18
+
19
+ const browser = await chromium.launch({ headless: true });
20
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
21
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
22
+ await ctx.addInitScript(() => {
23
+ try {
24
+ localStorage.setItem('anet-theme', 'cyber');
25
+ localStorage.setItem('anet-topo-layout', 'ring');
26
+ sessionStorage.setItem('anet_v3_auth', '1');
27
+ } catch {}
28
+ });
29
+ await ctx.route('**/api/hub/status*', async (route) => {
30
+ const r = await route.fetch();
31
+ const b = await r.json();
32
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
33
+ const mk = (alias) => ({
34
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
35
+ network_id: nid, project_dir: null,
36
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
37
+ });
38
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1')] } });
39
+ });
40
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
41
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
42
+ const page = await ctx.newPage();
43
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
44
+ await page.waitForSelector('[data-topo-brand-logo]', { timeout: 15000 });
45
+ await page.waitForTimeout(500);
46
+
47
+ const sel = '[data-topo-brand-logo]';
48
+ const probe = await page.evaluate((s) => {
49
+ const el = document.querySelector(s);
50
+ if (!el) return null;
51
+ const cs = getComputedStyle(el);
52
+ return {
53
+ breathAttr: el.getAttribute('data-topo-brand-logo-breath'),
54
+ hasBreathClass: el.classList.contains('anet-topo-brand-logo-breath'),
55
+ animationName: cs.animationName,
56
+ animationDuration: cs.animationDuration,
57
+ animationIterationCount: cs.animationIterationCount,
58
+ animationTimingFunction: cs.animationTimingFunction,
59
+ // Sample opacity twice across ~1.5s to confirm it's actually changing
60
+ opacityNow: parseFloat(cs.opacity),
61
+ };
62
+ }, sel);
63
+
64
+ // Sample opacity at 3 timepoints across the 5s breath cycle
65
+ await page.waitForTimeout(500);
66
+ const opacity_t1 = await page.evaluate((s) => parseFloat(getComputedStyle(document.querySelector(s)).opacity), sel);
67
+ await page.waitForTimeout(900);
68
+ const opacity_t2 = await page.evaluate((s) => parseFloat(getComputedStyle(document.querySelector(s)).opacity), sel);
69
+ await page.waitForTimeout(900);
70
+ const opacity_t3 = await page.evaluate((s) => parseFloat(getComputedStyle(document.querySelector(s)).opacity), sel);
71
+
72
+ await browser.close();
73
+
74
+ const css = readFileSync('/home/vansin/agent-network-dashboard/app/globals.css', 'utf8');
75
+ const tsx = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
76
+ const sourceKeyframe = /@keyframes anet-topo-brand-logo-breath-kf/.test(css);
77
+ const sourceClass = /\.anet-topo-brand-logo-breath\s*\{[^}]*animation: anet-topo-brand-logo-breath-kf 5s ease-in-out infinite/.test(css);
78
+ const sourceComponent = /\!reducedMotion \? ' anet-topo-brand-logo-breath' : ''/.test(tsx);
79
+ const sourceAttr = /data-topo-brand-logo-breath=\{!reducedMotion \? 'true' : 'false'\}/.test(tsx);
80
+
81
+ // Opacity should oscillate; not all 3 samples identical
82
+ const opacityVaries = new Set([opacity_t1, opacity_t2, opacity_t3].map(o => o.toFixed(3))).size > 1;
83
+
84
+ const results = {
85
+ breath_attr: probe?.breathAttr === 'true',
86
+ has_breath_class: probe?.hasBreathClass === true,
87
+ animation_name_match: probe?.animationName === 'anet-topo-brand-logo-breath-kf',
88
+ animation_duration_5s: probe?.animationDuration === '5s',
89
+ animation_iteration_infinite: probe?.animationIterationCount === 'infinite',
90
+ animation_timing_ease_in_out: probe?.animationTimingFunction === 'ease-in-out',
91
+ opacity_varies_over_time: opacityVaries,
92
+ source_keyframe: sourceKeyframe,
93
+ source_class: sourceClass,
94
+ source_component: sourceComponent,
95
+ source_attr: sourceAttr,
96
+ };
97
+ const ok = Object.values(results).every(Boolean);
98
+ console.log(`${ok ? '✅' : '❌'} R553 brand-logo idle breath (5th anchor in 呼吸感 family):`,
99
+ JSON.stringify(results, null, 2),
100
+ '\n probe:', JSON.stringify(probe),
101
+ `\n opacity samples: ${opacity_t1.toFixed(3)} → ${opacity_t2.toFixed(3)} → ${opacity_t3.toFixed(3)}`);
102
+ process.exit(ok ? 0 : 1);