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

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/{0-dtvojz9-gsa.js → 06vyer1tqqx.j.js} +1 -1
  132. package/.next/static/chunks/{0wqkrak2kvtfy.js → 0g0x--w-5..e7.js} +2 -2
  133. package/.next/static/chunks/{0u84lvj2d~wc1.js → 0n81v61d_4oc7.js} +1 -1
  134. package/.next/static/chunks/{0iumpndh3ydsx.js → 12a8.iez7d6-s.js} +1 -1
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +91 -3
  138. package/package.json +1 -1
  139. package/scripts/topo-orphan-label-opacity-test.mjs +98 -0
  140. package/scripts/topo-panel-title-glow-test.mjs +111 -0
  141. /package/.next/static/{Vlju3sXMYTardVKfQ4o3v → caJGDEJfdQAgCYpZJXaQB}/_buildManifest.js +0 -0
  142. /package/.next/static/{Vlju3sXMYTardVKfQ4o3v → caJGDEJfdQAgCYpZJXaQB}/_clientMiddlewareManifest.js +0 -0
  143. /package/.next/static/{Vlju3sXMYTardVKfQ4o3v → caJGDEJfdQAgCYpZJXaQB}/_ssgManifest.js +0 -0
@@ -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.63"],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.65"],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 +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.63"],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.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]})]})]})]})}])}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":258,"timestamp":218945661026,"id":4,"parentId":1,"tags":{},"startTime":1779026917907,"traceId":"abde27f57174a42e"},{"name":"load-custom-routes","duration":468,"timestamp":218945661448,"id":5,"parentId":1,"tags":{},"startTime":1779026917908,"traceId":"abde27f57174a42e"},{"name":"create-dist-dir","duration":6021,"timestamp":218945662063,"id":6,"parentId":1,"tags":{},"startTime":1779026917908,"traceId":"abde27f57174a42e"},{"name":"clean","duration":36759,"timestamp":218945668878,"id":7,"parentId":1,"tags":{},"startTime":1779026917915,"traceId":"abde27f57174a42e"},{"name":"discover-routes","duration":26007,"timestamp":218945794691,"id":8,"parentId":1,"tags":{},"startTime":1779026918041,"traceId":"abde27f57174a42e"},{"name":"create-root-mapping","duration":145,"timestamp":218945820766,"id":9,"parentId":1,"tags":{},"startTime":1779026918067,"traceId":"abde27f57174a42e"},{"name":"generate-route-types","duration":20504,"timestamp":218945823666,"id":10,"parentId":1,"tags":{},"startTime":1779026918070,"traceId":"abde27f57174a42e"},{"name":"public-dir-conflict-check","duration":99,"timestamp":218945844259,"id":11,"parentId":1,"tags":{},"startTime":1779026918091,"traceId":"abde27f57174a42e"},{"name":"generate-routes-manifest","duration":5470,"timestamp":218945844478,"id":12,"parentId":1,"tags":{},"startTime":1779026918091,"traceId":"abde27f57174a42e"},{"name":"run-turbopack","duration":5888634,"timestamp":218945862404,"id":14,"parentId":1,"tags":{},"startTime":1779026918109,"traceId":"abde27f57174a42e"},{"name":"turbopack-build-events","duration":104,"timestamp":218946166498,"id":15,"parentId":1,"tags":{},"startTime":1779026918413,"traceId":"abde27f57174a42e"},{"name":"run-typescript","duration":9459453,"timestamp":218951759885,"id":16,"parentId":1,"tags":{},"startTime":1779026924006,"traceId":"abde27f57174a42e"},{"name":"generate-required-server-files","duration":2372,"timestamp":218961220436,"id":18,"parentId":1,"tags":{},"startTime":1779026933467,"traceId":"abde27f57174a42e"},{"name":"check-static-error-page","duration":12517,"timestamp":218961371171,"id":20,"parentId":19,"tags":{},"startTime":1779026933617,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":598495,"timestamp":218961386390,"id":65,"parentId":22,"tags":{},"startTime":1779026933633,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":611694,"timestamp":218961373587,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779026933620,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":640069,"timestamp":218961386622,"id":68,"parentId":27,"tags":{},"startTime":1779026933633,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":650091,"timestamp":218961376707,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779026933623,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":654156,"timestamp":218961386555,"id":67,"parentId":26,"tags":{},"startTime":1779026933633,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":664208,"timestamp":218961376586,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779026933623,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":659691,"timestamp":218961387806,"id":70,"parentId":29,"tags":{},"startTime":1779026933634,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":670577,"timestamp":218961376986,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779026933623,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":661828,"timestamp":218961386705,"id":69,"parentId":28,"tags":{},"startTime":1779026933633,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":671765,"timestamp":218961376835,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779026933623,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":668015,"timestamp":218961386485,"id":66,"parentId":25,"tags":{},"startTime":1779026933633,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":678139,"timestamp":218961376415,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779026933623,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":674453,"timestamp":218961386120,"id":64,"parentId":21,"tags":{},"startTime":1779026933632,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":688153,"timestamp":218961372476,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779026933619,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":672403,"timestamp":218961388412,"id":76,"parentId":36,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":682701,"timestamp":218961378169,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779026933624,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":674851,"timestamp":218961388349,"id":74,"parentId":34,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":685547,"timestamp":218961377705,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779026933624,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":677205,"timestamp":218961388106,"id":72,"parentId":32,"tags":{},"startTime":1779026933634,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":687812,"timestamp":218961377539,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779026933624,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":702906,"timestamp":218961388270,"id":73,"parentId":33,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":714599,"timestamp":218961377628,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779026933624,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":704273,"timestamp":218961388384,"id":75,"parentId":35,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":714917,"timestamp":218961377784,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779026933624,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":708489,"timestamp":218961388471,"id":79,"parentId":39,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":718557,"timestamp":218961378463,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779026933625,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":708724,"timestamp":218961388485,"id":80,"parentId":40,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":718708,"timestamp":218961378530,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779026933625,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":731294,"timestamp":218961388456,"id":78,"parentId":38,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":741413,"timestamp":218961378401,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779026933625,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":734382,"timestamp":218961388019,"id":71,"parentId":30,"tags":{},"startTime":1779026933634,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":745273,"timestamp":218961377178,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779026933623,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":736264,"timestamp":218961388535,"id":84,"parentId":46,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":745502,"timestamp":218961379373,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779026933626,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":736571,"timestamp":218961388508,"id":82,"parentId":44,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":745956,"timestamp":218961379163,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779026933625,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":763390,"timestamp":218961388495,"id":81,"parentId":42,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":773180,"timestamp":218961378782,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779026933625,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":763575,"timestamp":218961388570,"id":87,"parentId":49,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":772517,"timestamp":218961379669,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779026933626,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":763756,"timestamp":218961388580,"id":88,"parentId":50,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":772616,"timestamp":218961379756,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779026933626,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":763953,"timestamp":218961388543,"id":85,"parentId":47,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":773056,"timestamp":218961379468,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779026933626,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":764433,"timestamp":218961388521,"id":83,"parentId":45,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":773712,"timestamp":218961379284,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779026933626,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":764617,"timestamp":218961388557,"id":86,"parentId":48,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":773650,"timestamp":218961379555,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779026933626,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":768630,"timestamp":218961391866,"id":90,"parentId":24,"tags":{},"startTime":1779026933638,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":786561,"timestamp":218961373977,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779026933620,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":766916,"timestamp":218961395306,"id":93,"parentId":43,"tags":{},"startTime":1779026933642,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":783374,"timestamp":218961378891,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779026933625,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":773863,"timestamp":218961388597,"id":89,"parentId":51,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":782663,"timestamp":218961379840,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779026933626,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":770956,"timestamp":218961393079,"id":91,"parentId":31,"tags":{},"startTime":1779026933639,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":786751,"timestamp":218961377326,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779026933624,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":776293,"timestamp":218961388443,"id":77,"parentId":37,"tags":{},"startTime":1779026933635,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":786463,"timestamp":218961378308,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779026933625,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":772433,"timestamp":218961393922,"id":92,"parentId":41,"tags":{},"startTime":1779026933640,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":787802,"timestamp":218961378592,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779026933625,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":779461,"timestamp":218961397688,"id":99,"parentId":56,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":796096,"timestamp":218961381108,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779026933627,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":784531,"timestamp":218961397822,"id":101,"parentId":59,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":800039,"timestamp":218961382363,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779026933629,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":793566,"timestamp":218961397843,"id":102,"parentId":61,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":808424,"timestamp":218961383054,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779026933629,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":811750,"timestamp":218961397870,"id":103,"parentId":62,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":826461,"timestamp":218961383228,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779026933630,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":817310,"timestamp":218961397605,"id":94,"parentId":23,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":841183,"timestamp":218961373786,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779026933620,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":817248,"timestamp":218961397880,"id":104,"parentId":63,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":831766,"timestamp":218961383403,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779026933630,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":822350,"timestamp":218961397674,"id":98,"parentId":55,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":839229,"timestamp":218961380844,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779026933627,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":819710,"timestamp":218961403543,"id":105,"parentId":60,"tags":{},"startTime":1779026933650,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":840732,"timestamp":218961382570,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779026933629,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":812028,"timestamp":218961412491,"id":106,"parentId":57,"tags":{},"startTime":1779026933659,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":843022,"timestamp":218961381526,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779026933628,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":830672,"timestamp":218961397635,"id":95,"parentId":52,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":848068,"timestamp":218961380274,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779026933627,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":831919,"timestamp":218961397661,"id":97,"parentId":54,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":848978,"timestamp":218961380622,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779026933627,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":834726,"timestamp":218961397698,"id":100,"parentId":58,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":850337,"timestamp":218961382121,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779026933628,"traceId":"abde27f57174a42e"},{"name":"is-page-static","duration":835960,"timestamp":218961397650,"id":96,"parentId":53,"tags":{},"startTime":1779026933644,"traceId":"abde27f57174a42e"},{"name":"check-page","duration":853178,"timestamp":218961380454,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779026933627,"traceId":"abde27f57174a42e"},{"name":"static-check","duration":863506,"timestamp":218961370167,"id":19,"parentId":1,"tags":{},"startTime":1779026933616,"traceId":"abde27f57174a42e"}]
2
- [{"name":"write-routes-manifest","duration":454,"timestamp":218962242222,"id":108,"parentId":1,"tags":{},"startTime":1779026934489,"traceId":"abde27f57174a42e"},{"name":"load-dotenv","duration":64,"timestamp":218962255700,"id":111,"parentId":110,"tags":{},"startTime":1779026934502,"traceId":"abde27f57174a42e"},{"name":"run-export-path-map","duration":801,"timestamp":218962258762,"id":112,"parentId":110,"tags":{},"startTime":1779026934505,"traceId":"abde27f57174a42e"},{"name":"next-export","duration":598614,"timestamp":218962253910,"id":110,"parentId":1,"tags":{},"startTime":1779026934500,"traceId":"abde27f57174a42e"},{"name":"move-exported-app-not-found-","duration":597,"timestamp":218962856970,"id":113,"parentId":109,"tags":{},"startTime":1779026935103,"traceId":"abde27f57174a42e"},{"name":"move-exported-app-global-error-","duration":417,"timestamp":218962857669,"id":114,"parentId":109,"tags":{},"startTime":1779026935104,"traceId":"abde27f57174a42e"},{"name":"static-generation","duration":612887,"timestamp":218962247297,"id":109,"parentId":1,"tags":{},"startTime":1779026934494,"traceId":"abde27f57174a42e"},{"name":"write-routes-manifest","duration":428,"timestamp":218962860426,"id":115,"parentId":1,"tags":{},"startTime":1779026935107,"traceId":"abde27f57174a42e"},{"name":"print-tree-view","duration":4676,"timestamp":218962881095,"id":116,"parentId":1,"tags":{},"startTime":1779026935127,"traceId":"abde27f57174a42e"},{"name":"write-route-bundle-stats","duration":13189,"timestamp":218962885802,"id":117,"parentId":1,"tags":{},"startTime":1779026935132,"traceId":"abde27f57174a42e"},{"name":"telemetry-flush","duration":21909,"timestamp":218962899041,"id":118,"parentId":1,"tags":{},"startTime":1779026935145,"traceId":"abde27f57174a42e"},{"name":"next-build","duration":17324178,"timestamp":218945596805,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779026917843,"traceId":"abde27f57174a42e"}]
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"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5888634,"timestamp":218945862404,"id":14,"parentId":1,"tags":{},"startTime":1779026918109,"traceId":"abde27f57174a42e"},{"name":"turbopack-build-events","duration":104,"timestamp":218946166498,"id":15,"parentId":1,"tags":{},"startTime":1779026918413,"traceId":"abde27f57174a42e"},{"name":"run-typescript","duration":9459453,"timestamp":218951759885,"id":16,"parentId":1,"tags":{},"startTime":1779026924006,"traceId":"abde27f57174a42e"},{"name":"static-check","duration":863506,"timestamp":218961370167,"id":19,"parentId":1,"tags":{},"startTime":1779026933616,"traceId":"abde27f57174a42e"},{"name":"static-generation","duration":612887,"timestamp":218962247297,"id":109,"parentId":1,"tags":{},"startTime":1779026934494,"traceId":"abde27f57174a42e"},{"name":"telemetry-flush","duration":21909,"timestamp":218962899041,"id":118,"parentId":1,"tags":{},"startTime":1779026935145,"traceId":"abde27f57174a42e"},{"name":"next-build","duration":17324178,"timestamp":218945596805,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779026917843,"traceId":"abde27f57174a42e"}]
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"}]
@@ -5533,7 +5533,44 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5533
5533
  fontSize="9"
5534
5534
  fontFamily="monospace"
5535
5535
  fontWeight={isPinned ? '800' : '700'}
5536
- opacity={isPinned || isHovered ? 1 : 0.55}
5536
+ /* Round 551 / Loop category-differentiation family
5537
+ 4th anchor. Orphan band ("其他" catchall) rest-state
5538
+ LABEL opacity drops 0.55 → 0.4 (~27% relative dim),
5539
+ mirroring R506's rect fillOpacity drop pattern at
5540
+ the label-paint tier. Adds a 4th independent
5541
+ channel to the orphan visual signature at rest:
5542
+ R499 fontStyle italic (typography style)
5543
+ R503 '3 6' dash pattern (rect stroke)
5544
+ R506 lower rect fill-opacity (rect fill)
5545
+ R551 lower label opacity (label paint) ← this round
5546
+ Four independent channels (typography style +
5547
+ stroke pattern + rect fill density + label paint
5548
+ density) collectively encode the catchall semantic
5549
+ at rest — orphan band reads as "misc bucket, less
5550
+ attention-deserving" through every available paint
5551
+ channel, no chrome / color / geometry change.
5552
+ Pin and hover branches UNCHANGED — orphan label
5553
+ restores to full opacity 1 on inspection, same as
5554
+ prefix groups. The differentiation lives ONLY in
5555
+ the unsolicited rest state. The ~27% drop (0.55 →
5556
+ 0.4) is dimmer than R506's ~40% (rect could
5557
+ tolerate it; small 9px text needs more residual
5558
+ paint to stay legible) — orphan label stays
5559
+ readable when scanning, just clearly quieter.
5560
+ Pure paint axis; bbox unchanged; R51 SVG sentinel
5561
+ safety untouched (overlap-test gates to g[data-
5562
+ node], this group-label is invisible to it).
5563
+ transition list (R55/R432/R457/R479: fill, ls,
5564
+ fw, filter all 200ms) already eases opacity since
5565
+ `opacity 300ms ease-out` lives in the parent <text>
5566
+ CSS — wait, only filter/ls/fw/fill 200ms are
5567
+ listed. Need to add 'opacity 200ms ease-out' for
5568
+ smooth orphan opacity flip on pin/hover transitions
5569
+ (currently opacity 0.55 → 1 was snapping).
5570
+ data-group-label-opacity attr exposes the resolved
5571
+ value for tests. */
5572
+ opacity={isPinned || isHovered ? 1 : box.isOrphan ? 0.4 : 0.55}
5573
+ data-group-label-opacity={isPinned || isHovered ? 1 : box.isOrphan ? 0.4 : 0.55}
5537
5574
  data-group-label-hovered={isHovered && !isPinned ? 'true' : 'false'}
5538
5575
  data-group-label-font-weight={isPinned ? '800' : '700'}
5539
5576
  /* Round 479 / Loop — extend drop-shadow visual-polish
@@ -9689,7 +9726,48 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9689
9726
  200ms ease-out' alongside R345's ls + R55's fill
9690
9727
  200ms. data-recent-panel-title-fw exposes the
9691
9728
  resolved weight for tests. */}
9692
- <text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight={activeEdgeKey ? '800' : '700'} letterSpacing={hoveredPanel === 'recent' ? '0.4' : '0.3'} style={{ transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out' }} data-recent-panel-title data-recent-panel-title-fw={activeEdgeKey ? '800' : '700'} data-recent-panel-title-active={activeEdgeKey ? 'true' : 'false'}>recent signal</text>
9729
+ {/* Round 550 / Loop drop-shadow visual-polish family
9730
+ extends to a 14th anchor: the recent-panel header
9731
+ title gains a soft pal.legendAccent glow when the
9732
+ panel has an active row (activeEdgeKey). Pre-R550
9733
+ the title's state-flip on active was 2-axis (R482
9734
+ fw 700→800 + R345 ls 0.3→0.4 when panel-hovered);
9735
+ R550 adds the paint axis so the title brightens
9736
+ paint-wise alongside the typographic tightening when
9737
+ a row inside its panel is locked.
9738
+
9739
+ Hue: pal.legendAccent + hex alpha '80' (~50%) — same
9740
+ strength as R479 group-label pin-glow at the parent
9741
+ panel-title scope. 2px blur reads soft; cyan accent
9742
+ ties the title visually to the active row's pin
9743
+ colour (cyber: cyan-300 / light: teal-600). Hex+alpha
9744
+ concat safe — pal.legendAccent is '#67e8f9' (cyber)
9745
+ or '#0d9488' (light), both 6-digit hex (banked R541:
9746
+ hex sources use hex+alpha; only hsl/color()/dynamic
9747
+ sources need color-mix).
9748
+
9749
+ Drop-shadow visual-polish family extension (14
9750
+ anchors now):
9751
+ R476 hub digit hover-gated emerald
9752
+ R477 legend pin-ring pin-gated row.fill
9753
+ R478 recent-row pip freshness cyan
9754
+ R479 group-label text pin-gated cyan
9755
+ R532-R536 hub-cluster glow QUINTET
9756
+ R537 legend swatch hover/pin row.fill
9757
+ R538 group-label hover-precedence
9758
+ R540 edge-badge text pin-gated cyan
9759
+ R543-R546 pin-active pill 4-variant arc
9760
+ R550 recent-panel title pin-gated cyan ← this round
9761
+ R550 legend-panel title pin-gated cyan ← sibling (next text below)
9762
+
9763
+ filter is paint-only; bbox unchanged; overlap-test
9764
+ invariants hold. transition list extends to include
9765
+ 'filter 200ms ease-out' alongside R345 ls + R482 fw
9766
+ + R55 fill 200ms — one motion-coherent 3-axis active-
9767
+ state lift.
9768
+ data-recent-panel-title-glow attr exposes the gate
9769
+ state for tests. */}
9770
+ <text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight={activeEdgeKey ? '800' : '700'} letterSpacing={hoveredPanel === 'recent' ? '0.4' : '0.3'} style={{ transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out, filter 200ms ease-out', filter: activeEdgeKey ? `drop-shadow(0 0 2px ${pal.legendAccent}80)` : undefined }} data-recent-panel-title data-recent-panel-title-fw={activeEdgeKey ? '800' : '700'} data-recent-panel-title-active={activeEdgeKey ? 'true' : 'false'} data-recent-panel-title-glow={activeEdgeKey ? 'true' : 'false'}>recent signal</text>
9693
9771
  {/* R96: header count now matches what the rows show. Pre-R96
9694
9772
  this read "X msgs" off the raw messages array, but the
9695
9773
  rows below render DEDUPED flowLinks — so a fleet with 10
@@ -11028,7 +11106,17 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
11028
11106
  data-legend-panel-title-fw + -active exposed for tests. */}
11029
11107
  {/* R345 sibling — legend panel title same hover letter-
11030
11108
  spacing tween 0.3 → 0.4 on panel hover. */}
11031
- <text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight={pinnedStatus ? '800' : '700'} letterSpacing={hoveredPanel === 'legend' ? '0.4' : '0.3'} style={{ transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out' }} data-legend-panel-title data-legend-panel-title-fw={pinnedStatus ? '800' : '700'} data-legend-panel-title-active={pinnedStatus ? 'true' : 'false'}>legend</text>
11109
+ {/* Round 550 sibling legend-panel header title mirrors
11110
+ the recent-panel title above: drop-shadow glow on
11111
+ pin-gated active state (pinnedStatus). Same hue
11112
+ (pal.legendAccent + hex alpha 80), same 2px blur,
11113
+ same 200ms ease-out cadence. Family lifts to 15
11114
+ anchors with this sibling (counted as R550-sibling
11115
+ for accounting parity with R532-R536 hub-cluster
11116
+ glow quintet pattern — two co-shipping anchors
11117
+ under a single round number).
11118
+ data-legend-panel-title-glow attr added. */}
11119
+ <text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight={pinnedStatus ? '800' : '700'} letterSpacing={hoveredPanel === 'legend' ? '0.4' : '0.3'} style={{ transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out, filter 200ms ease-out', filter: pinnedStatus ? `drop-shadow(0 0 2px ${pal.legendAccent}80)` : undefined }} data-legend-panel-title data-legend-panel-title-fw={pinnedStatus ? '800' : '700'} data-legend-panel-title-active={pinnedStatus ? 'true' : 'false'} data-legend-panel-title-glow={pinnedStatus ? 'true' : 'false'}>legend</text>
11032
11120
  {/* Round 257 / Loop: legend panel header count picks up the
11033
11121
  symmetric 13L/13R inner-padding pattern from the recent-
11034
11122
  signal panel. Pre-R257 the legend header was 13px from
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.63",
3
+ "version": "0.5.3-preview.65",
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,98 @@
1
+ /* Round 551 verification: orphan band ("其他") rest-state LABEL opacity
2
+ * drops 0.55 → 0.4. 4th channel in the category-differentiation family
3
+ * (R499 italic, R503 dash, R506 rect fill, R551 label paint).
4
+ *
5
+ * Needs an orphan group to exist. The cluster-by-prefix logic creates
6
+ * an orphan band whenever there are sessions without a recognizable
7
+ * prefix (alias with no separator). Mock with a mix: 6 sessions with
8
+ * "alpha-" prefix (groups together) + 2 sessions with no separator
9
+ * (orphan).
10
+ *
11
+ * Test phases:
12
+ * 1. confirm grid layout active
13
+ * 2. locate orphan group-label vs prefix group-label
14
+ * 3. orphan rest opacity = 0.4, opacity attr surfaces value
15
+ * 4. prefix-group rest opacity = 0.55 (unchanged)
16
+ * 5. source-side regex confirms wiring
17
+ */
18
+ import { chromium } from 'playwright';
19
+ import { readFileSync } from 'node:fs';
20
+
21
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
22
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
23
+
24
+ const browser = await chromium.launch({ headless: true });
25
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
26
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
27
+ await ctx.addInitScript(() => {
28
+ try {
29
+ localStorage.setItem('anet-theme', 'cyber');
30
+ localStorage.setItem('anet-topo-layout', 'grid');
31
+ sessionStorage.setItem('anet_v3_auth', '1');
32
+ } catch {}
33
+ });
34
+ // Mock: 6 alpha-prefix sessions (prefix group) + 3 standalone (orphan band).
35
+ await ctx.route('**/api/hub/status*', async (route) => {
36
+ const r = await route.fetch();
37
+ const b = await r.json();
38
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
39
+ const mk = (alias, status = 'idle') => ({
40
+ alias, status, model: 'claude-opus-4', runtime: 'claude-code-cli',
41
+ network_id: nid, project_dir: null,
42
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
43
+ });
44
+ await route.fulfill({ response: r, json: { ...b, sessions: [
45
+ mk('alpha·1'), mk('alpha·2'), mk('alpha·3'),
46
+ mk('alpha·4'), mk('alpha·5'), mk('alpha·6'),
47
+ mk('foo'), mk('bar'), mk('baz'),
48
+ ] } });
49
+ });
50
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
51
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
52
+ const page = await ctx.newPage();
53
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
54
+ await page.waitForSelector('[data-group-label]', { timeout: 15000 });
55
+ await page.waitForTimeout(500);
56
+
57
+ const groups = await page.evaluate(() => {
58
+ const els = Array.from(document.querySelectorAll('[data-group-label]'));
59
+ return els.map(el => ({
60
+ key: el.getAttribute('data-group-label'),
61
+ orphan: el.getAttribute('data-group-label-orphan') === 'true',
62
+ opacityAttr: el.getAttribute('data-group-label-opacity'),
63
+ computedOpacity: getComputedStyle(el).opacity,
64
+ pinned: el.getAttribute('data-group-label-pinned') === 'true',
65
+ hovered: el.getAttribute('data-group-label-hovered') === 'true',
66
+ }));
67
+ });
68
+
69
+ await browser.close();
70
+
71
+ const orphan = groups.find(g => g.orphan);
72
+ const prefix = groups.find(g => !g.orphan);
73
+
74
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
75
+ const sourceWired =
76
+ /opacity=\{isPinned \|\| isHovered \? 1 : box\.isOrphan \? 0\.4 : 0\.55\}/.test(src);
77
+ const sourceAttrWired =
78
+ /data-group-label-opacity=\{isPinned \|\| isHovered \? 1 : box\.isOrphan \? 0\.4 : 0\.55\}/.test(src);
79
+
80
+ const results = {
81
+ orphan_present: !!orphan,
82
+ prefix_present: !!prefix,
83
+ orphan_attr_0_4: orphan?.opacityAttr === '0.4',
84
+ orphan_computed_0_4: orphan ? Math.abs(parseFloat(orphan.computedOpacity) - 0.4) < 0.001 : false,
85
+ prefix_attr_0_55: prefix?.opacityAttr === '0.55',
86
+ prefix_computed_0_55: prefix ? Math.abs(parseFloat(prefix.computedOpacity) - 0.55) < 0.001 : false,
87
+ orphan_rest_state: orphan ? !orphan.pinned && !orphan.hovered : false,
88
+ prefix_rest_state: prefix ? !prefix.pinned && !prefix.hovered : false,
89
+ source_wired: sourceWired,
90
+ source_attr_wired: sourceAttrWired,
91
+ };
92
+ const ok = Object.values(results).every(Boolean);
93
+ console.log(`${ok ? '✅' : '❌'} R551 orphan label opacity 0.55→0.4 (category-differentiation 4th channel):`,
94
+ JSON.stringify(results, null, 2),
95
+ '\n orphan:', JSON.stringify(orphan),
96
+ '\n prefix:', JSON.stringify(prefix),
97
+ '\n all groups:', JSON.stringify(groups, null, 2));
98
+ process.exit(ok ? 0 : 1);