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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) 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 +4 -4
  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/agent-network-dashboard_09kk21a._.js +2 -2
  121. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  123. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  126. package/.next/server/middleware-build-manifest.js +3 -3
  127. package/.next/server/pages/404.html +1 -1
  128. package/.next/server/pages/500.html +1 -1
  129. package/.next/static/chunks/{0ml.avu6isv88.js → 042v848ro1s8e.js} +1 -1
  130. package/.next/static/chunks/{0yyhrzn_pc~-q.js → 0gz6ty6cvvj3s.js} +2 -2
  131. package/.next/static/chunks/{0ol.8d~ydog6v.js → 0hncxk.pt5o8l.js} +1 -1
  132. package/.next/trace +2 -2
  133. package/.next/trace-build +1 -1
  134. package/app/components/TopoGraph.tsx +48 -20
  135. package/package.json +1 -1
  136. package/scripts/topo-edge-freshness-floor-test.mjs +99 -0
  137. package/scripts/topo-hub-halo-light-trough-test.mjs +88 -0
  138. /package/.next/static/{x6JL9Xw5E9WSyZFGUoJi7 → _DJSnavVGatfQSESa8itc}/_buildManifest.js +0 -0
  139. /package/.next/static/{x6JL9Xw5E9WSyZFGUoJi7 → _DJSnavVGatfQSESa8itc}/_clientMiddlewareManifest.js +0 -0
  140. /package/.next/static/{x6JL9Xw5E9WSyZFGUoJi7 → _DJSnavVGatfQSESa8itc}/_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.1-preview.64"],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.1-preview.66"],70286)},65610,e=>{"use strict";var s=e.i(22381),a=e.i(23910),t=e.i(56839),r=e.i(59276),n=e.i(70286);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:l}=(0,r.useHealth)(),{license:i}=(0,r.useLicense)(),[c,d]=(0,a.useState)(""),[o,x]=(0,a.useState)(""),[m,h]=(0,a.useState)(""),[g,u]=(0,a.useState)(""),[p,N]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",j="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${j}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${j}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${l?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:l?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsxs)("span",{className:"text-gray-500",children:["SSE streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.uptime?`${Math.floor(l.uptime/3600)}h ${Math.floor(l.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 font-mono ${j}`,title:"From package.json @sleep2agi/agent-network-dashboard",children:n.DASHBOARD_VERSION})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",i?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===i.license.type?"text-green-300 bg-green-500/10 border-green-500/30":i.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),i.license.type,i.license.days_left?` \xb7 ${i.license.days_left}d left`:""]})]}),i?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[i.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[i.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.license.expires_at})]}),i.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!c.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})}),s=await e.json();x(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&d(""),setTimeout(()=>x(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),o&&(0,s.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!m||!g)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void N("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:m,new_password:g})}),t=await a.json();if(N(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}h(""),u("")}setTimeout(()=>N(""),5e3)},disabled:!m||!g,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),p&&(0,s.jsx)("div",{className:`mt-2 text-xs ${p.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:p})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":370,"timestamp":150912912750,"id":4,"parentId":1,"tags":{},"startTime":1778958885159,"traceId":"e7b0c9a8d26bddf0"},{"name":"load-custom-routes","duration":646,"timestamp":150912913315,"id":5,"parentId":1,"tags":{},"startTime":1778958885160,"traceId":"e7b0c9a8d26bddf0"},{"name":"create-dist-dir","duration":981,"timestamp":150912914041,"id":6,"parentId":1,"tags":{},"startTime":1778958885160,"traceId":"e7b0c9a8d26bddf0"},{"name":"clean","duration":36912,"timestamp":150912915739,"id":7,"parentId":1,"tags":{},"startTime":1778958885162,"traceId":"e7b0c9a8d26bddf0"},{"name":"discover-routes","duration":25360,"timestamp":150913038717,"id":8,"parentId":1,"tags":{},"startTime":1778958885285,"traceId":"e7b0c9a8d26bddf0"},{"name":"create-root-mapping","duration":142,"timestamp":150913064141,"id":9,"parentId":1,"tags":{},"startTime":1778958885310,"traceId":"e7b0c9a8d26bddf0"},{"name":"generate-route-types","duration":20628,"timestamp":150913066687,"id":10,"parentId":1,"tags":{},"startTime":1778958885313,"traceId":"e7b0c9a8d26bddf0"},{"name":"public-dir-conflict-check","duration":100,"timestamp":150913087392,"id":11,"parentId":1,"tags":{},"startTime":1778958885334,"traceId":"e7b0c9a8d26bddf0"},{"name":"generate-routes-manifest","duration":4778,"timestamp":150913087606,"id":12,"parentId":1,"tags":{},"startTime":1778958885334,"traceId":"e7b0c9a8d26bddf0"},{"name":"run-turbopack","duration":6024413,"timestamp":150913097796,"id":14,"parentId":1,"tags":{},"startTime":1778958885344,"traceId":"e7b0c9a8d26bddf0"},{"name":"turbopack-build-events","duration":73,"timestamp":150913384490,"id":15,"parentId":1,"tags":{},"startTime":1778958885631,"traceId":"e7b0c9a8d26bddf0"},{"name":"run-typescript","duration":9334008,"timestamp":150919134175,"id":16,"parentId":1,"tags":{},"startTime":1778958891380,"traceId":"e7b0c9a8d26bddf0"},{"name":"generate-required-server-files","duration":2276,"timestamp":150928469241,"id":18,"parentId":1,"tags":{},"startTime":1778958900716,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-static-error-page","duration":14709,"timestamp":150928637217,"id":20,"parentId":19,"tags":{},"startTime":1778958900883,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":486448,"timestamp":150928654551,"id":65,"parentId":22,"tags":{},"startTime":1778958900901,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":500713,"timestamp":150928640469,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778958900887,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":600234,"timestamp":150928654653,"id":66,"parentId":25,"tags":{},"startTime":1778958900901,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":611398,"timestamp":150928643623,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778958900890,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":647577,"timestamp":150928654881,"id":69,"parentId":28,"tags":{},"startTime":1778958900901,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":658450,"timestamp":150928644098,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778958900890,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":659331,"timestamp":150928655360,"id":72,"parentId":32,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":671528,"timestamp":150928644883,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778958900891,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":661825,"timestamp":150928655114,"id":70,"parentId":29,"tags":{},"startTime":1778958900901,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":672770,"timestamp":150928644227,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778958900890,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":662534,"timestamp":150928654723,"id":67,"parentId":26,"tags":{},"startTime":1778958900901,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":673495,"timestamp":150928643809,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778958900890,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":686368,"timestamp":150928655610,"id":74,"parentId":34,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":696875,"timestamp":150928645209,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778958900891,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":691903,"timestamp":150928655704,"id":77,"parentId":37,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":701592,"timestamp":150928646084,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778958900892,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":695225,"timestamp":150928655282,"id":71,"parentId":30,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":706190,"timestamp":150928644394,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778958900891,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":697408,"timestamp":150928655719,"id":78,"parentId":38,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":706938,"timestamp":150928646244,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778958900893,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":703236,"timestamp":150928654810,"id":68,"parentId":27,"tags":{},"startTime":1778958900901,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":714185,"timestamp":150928643951,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778958900890,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":702890,"timestamp":150928655745,"id":80,"parentId":40,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":712223,"timestamp":150928646495,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778958900893,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":709277,"timestamp":150928655666,"id":76,"parentId":36,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":719156,"timestamp":150928645871,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778958900892,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":709815,"timestamp":150928655528,"id":73,"parentId":33,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":720340,"timestamp":150928645060,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778958900891,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":715319,"timestamp":150928655754,"id":81,"parentId":42,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":724290,"timestamp":150928646896,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1778958900893,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":717477,"timestamp":150928655767,"id":82,"parentId":44,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":725905,"timestamp":150928647392,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778958900894,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":719505,"timestamp":150928655644,"id":75,"parentId":35,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":729864,"timestamp":150928645349,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778958900892,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":720920,"timestamp":150928655835,"id":86,"parentId":48,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":728873,"timestamp":150928647944,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778958900894,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":724789,"timestamp":150928655732,"id":79,"parentId":39,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":734200,"timestamp":150928646368,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778958900893,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":731713,"timestamp":150928655857,"id":88,"parentId":50,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":739377,"timestamp":150928648257,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778958900895,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":732260,"timestamp":150928655781,"id":83,"parentId":45,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":740550,"timestamp":150928647544,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778958900894,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":732470,"timestamp":150928655810,"id":84,"parentId":46,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":740647,"timestamp":150928647670,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778958900894,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":736915,"timestamp":150928655848,"id":87,"parentId":49,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":744703,"timestamp":150928648122,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778958900894,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":735595,"timestamp":150928662562,"id":93,"parentId":43,"tags":{},"startTime":1778958900909,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":751125,"timestamp":150928647077,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778958900893,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":739190,"timestamp":150928659186,"id":90,"parentId":24,"tags":{},"startTime":1778958900905,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":757367,"timestamp":150928641071,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778958900887,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":740846,"timestamp":150928660357,"id":91,"parentId":31,"tags":{},"startTime":1778958900907,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":756756,"timestamp":150928644543,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778958900891,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":745156,"timestamp":150928661214,"id":92,"parentId":41,"tags":{},"startTime":1778958900907,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":759814,"timestamp":150928646613,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1778958900893,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":760297,"timestamp":150928655820,"id":85,"parentId":47,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":768367,"timestamp":150928647817,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778958900894,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":760524,"timestamp":150928655870,"id":89,"parentId":51,"tags":{},"startTime":1778958900902,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":768063,"timestamp":150928648376,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778958900895,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":799050,"timestamp":150928654277,"id":64,"parentId":21,"tags":{},"startTime":1778958900901,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":814571,"timestamp":150928638834,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778958900885,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":790175,"timestamp":150928666940,"id":94,"parentId":23,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":816418,"timestamp":150928640766,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778958900887,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":801069,"timestamp":150928666969,"id":95,"parentId":52,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":819240,"timestamp":150928648866,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1778958900895,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":801076,"timestamp":150928667173,"id":101,"parentId":59,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":817568,"timestamp":150928650730,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778958900897,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":814774,"timestamp":150928667043,"id":99,"parentId":56,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":832129,"timestamp":150928649865,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778958900896,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":815340,"timestamp":150928667193,"id":102,"parentId":61,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":831334,"timestamp":150928651249,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778958900898,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":825521,"timestamp":150928666984,"id":96,"parentId":53,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":843459,"timestamp":150928649103,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1778958900895,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":825462,"timestamp":150928667206,"id":103,"parentId":62,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":841276,"timestamp":150928651416,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778958900898,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":825760,"timestamp":150928666995,"id":97,"parentId":54,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":843452,"timestamp":150928649323,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1778958900896,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":815566,"timestamp":150928677625,"id":105,"parentId":60,"tags":{},"startTime":1778958900924,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":842348,"timestamp":150928650890,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1778958900897,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":826150,"timestamp":150928667216,"id":104,"parentId":63,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":841805,"timestamp":150928651597,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778958900898,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":826821,"timestamp":150928667025,"id":98,"parentId":55,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":844276,"timestamp":150928649600,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1778958900896,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":811813,"timestamp":150928686534,"id":106,"parentId":57,"tags":{},"startTime":1778958900933,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":848266,"timestamp":150928650124,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1778958900896,"traceId":"e7b0c9a8d26bddf0"},{"name":"is-page-static","duration":833591,"timestamp":150928667053,"id":100,"parentId":58,"tags":{},"startTime":1778958900913,"traceId":"e7b0c9a8d26bddf0"},{"name":"check-page","duration":850131,"timestamp":150928650555,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778958900897,"traceId":"e7b0c9a8d26bddf0"},{"name":"static-check","duration":864541,"timestamp":150928636200,"id":19,"parentId":1,"tags":{},"startTime":1778958900882,"traceId":"e7b0c9a8d26bddf0"}]
2
- [{"name":"write-routes-manifest","duration":522,"timestamp":150929509526,"id":108,"parentId":1,"tags":{},"startTime":1778958901756,"traceId":"e7b0c9a8d26bddf0"},{"name":"load-dotenv","duration":50,"timestamp":150929521798,"id":111,"parentId":110,"tags":{},"startTime":1778958901768,"traceId":"e7b0c9a8d26bddf0"},{"name":"run-export-path-map","duration":527,"timestamp":150929524337,"id":112,"parentId":110,"tags":{},"startTime":1778958901771,"traceId":"e7b0c9a8d26bddf0"},{"name":"next-export","duration":593770,"timestamp":150929520520,"id":110,"parentId":1,"tags":{},"startTime":1778958901767,"traceId":"e7b0c9a8d26bddf0"},{"name":"move-exported-app-not-found-","duration":579,"timestamp":150930117567,"id":113,"parentId":109,"tags":{},"startTime":1778958902364,"traceId":"e7b0c9a8d26bddf0"},{"name":"move-exported-app-global-error-","duration":444,"timestamp":150930118238,"id":114,"parentId":109,"tags":{},"startTime":1778958902365,"traceId":"e7b0c9a8d26bddf0"},{"name":"static-generation","duration":606696,"timestamp":150929513778,"id":109,"parentId":1,"tags":{},"startTime":1778958901760,"traceId":"e7b0c9a8d26bddf0"},{"name":"write-routes-manifest","duration":381,"timestamp":150930120685,"id":115,"parentId":1,"tags":{},"startTime":1778958902367,"traceId":"e7b0c9a8d26bddf0"},{"name":"print-tree-view","duration":4691,"timestamp":150930133337,"id":116,"parentId":1,"tags":{},"startTime":1778958902380,"traceId":"e7b0c9a8d26bddf0"},{"name":"write-route-bundle-stats","duration":13705,"timestamp":150930138063,"id":117,"parentId":1,"tags":{},"startTime":1778958902384,"traceId":"e7b0c9a8d26bddf0"},{"name":"telemetry-flush","duration":20341,"timestamp":150930151805,"id":118,"parentId":1,"tags":{},"startTime":1778958902398,"traceId":"e7b0c9a8d26bddf0"},{"name":"next-build","duration":17311349,"timestamp":150912860826,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778958885107,"traceId":"e7b0c9a8d26bddf0"}]
1
+ [{"name":"generate-buildid","duration":253,"timestamp":151456924341,"id":4,"parentId":1,"tags":{},"startTime":1778959429171,"traceId":"13f4a53e4d0cbd1c"},{"name":"load-custom-routes","duration":545,"timestamp":151456924732,"id":5,"parentId":1,"tags":{},"startTime":1778959429171,"traceId":"13f4a53e4d0cbd1c"},{"name":"create-dist-dir","duration":726,"timestamp":151456925322,"id":6,"parentId":1,"tags":{},"startTime":1778959429172,"traceId":"13f4a53e4d0cbd1c"},{"name":"clean","duration":31076,"timestamp":151456926704,"id":7,"parentId":1,"tags":{},"startTime":1778959429173,"traceId":"13f4a53e4d0cbd1c"},{"name":"discover-routes","duration":24082,"timestamp":151457044866,"id":8,"parentId":1,"tags":{},"startTime":1778959429291,"traceId":"13f4a53e4d0cbd1c"},{"name":"create-root-mapping","duration":125,"timestamp":151457069035,"id":9,"parentId":1,"tags":{},"startTime":1778959429315,"traceId":"13f4a53e4d0cbd1c"},{"name":"generate-route-types","duration":20299,"timestamp":151457071505,"id":10,"parentId":1,"tags":{},"startTime":1778959429318,"traceId":"13f4a53e4d0cbd1c"},{"name":"public-dir-conflict-check","duration":147,"timestamp":151457091904,"id":11,"parentId":1,"tags":{},"startTime":1778959429338,"traceId":"13f4a53e4d0cbd1c"},{"name":"generate-routes-manifest","duration":5955,"timestamp":151457092237,"id":12,"parentId":1,"tags":{},"startTime":1778959429339,"traceId":"13f4a53e4d0cbd1c"},{"name":"run-turbopack","duration":5902622,"timestamp":151457104111,"id":14,"parentId":1,"tags":{},"startTime":1778959429350,"traceId":"13f4a53e4d0cbd1c"},{"name":"turbopack-build-events","duration":81,"timestamp":151457409630,"id":15,"parentId":1,"tags":{},"startTime":1778959429656,"traceId":"13f4a53e4d0cbd1c"},{"name":"run-typescript","duration":9622216,"timestamp":151463015739,"id":16,"parentId":1,"tags":{},"startTime":1778959435262,"traceId":"13f4a53e4d0cbd1c"},{"name":"generate-required-server-files","duration":3365,"timestamp":151472639248,"id":18,"parentId":1,"tags":{},"startTime":1778959444886,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-static-error-page","duration":20163,"timestamp":151472896401,"id":20,"parentId":19,"tags":{},"startTime":1778959445143,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":730137,"timestamp":151472920265,"id":67,"parentId":26,"tags":{},"startTime":1778959445167,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":746617,"timestamp":151472903976,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778959445150,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":735549,"timestamp":151472920877,"id":71,"parentId":30,"tags":{},"startTime":1778959445167,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":751928,"timestamp":151472904580,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778959445151,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":756263,"timestamp":151472920087,"id":65,"parentId":22,"tags":{},"startTime":1778959445166,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":776683,"timestamp":151472899753,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778959445146,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":786603,"timestamp":151472920946,"id":72,"parentId":32,"tags":{},"startTime":1778959445167,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":802543,"timestamp":151472905067,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778959445151,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":788970,"timestamp":151472920364,"id":68,"parentId":27,"tags":{},"startTime":1778959445167,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":805273,"timestamp":151472904132,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778959445150,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":791248,"timestamp":151472921235,"id":74,"parentId":34,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":807164,"timestamp":151472905371,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778959445152,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":798077,"timestamp":151472921268,"id":75,"parentId":35,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":813877,"timestamp":151472905523,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778959445152,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":798906,"timestamp":151472921288,"id":76,"parentId":36,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":814141,"timestamp":151472906097,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778959445152,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":812073,"timestamp":151472921333,"id":78,"parentId":38,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":827020,"timestamp":151472906439,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778959445153,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":812313,"timestamp":151472921312,"id":77,"parentId":37,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":827366,"timestamp":151472906290,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778959445153,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":818449,"timestamp":151472920181,"id":66,"parentId":25,"tags":{},"startTime":1778959445166,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":834880,"timestamp":151472903798,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778959445150,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":817920,"timestamp":151472921361,"id":80,"parentId":40,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":832800,"timestamp":151472906678,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778959445153,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":824287,"timestamp":151472921385,"id":82,"parentId":44,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":838151,"timestamp":151472907567,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778959445154,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":824577,"timestamp":151472921348,"id":79,"parentId":39,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":839395,"timestamp":151472906564,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778959445153,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":826391,"timestamp":151472919757,"id":64,"parentId":21,"tags":{},"startTime":1778959445166,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":848101,"timestamp":151472898078,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778959445144,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":830092,"timestamp":151472921399,"id":83,"parentId":45,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":843824,"timestamp":151472907713,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778959445154,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":830408,"timestamp":151472921409,"id":84,"parentId":46,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":844017,"timestamp":151472907858,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778959445154,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":835334,"timestamp":151472921372,"id":81,"parentId":42,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":849655,"timestamp":151472907109,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1778959445153,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":835964,"timestamp":151472921449,"id":87,"parentId":49,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":847056,"timestamp":151472910401,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778959445157,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":840124,"timestamp":151472921471,"id":89,"parentId":51,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":851029,"timestamp":151472910612,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778959445157,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":835371,"timestamp":151472931936,"id":90,"parentId":24,"tags":{},"startTime":1778959445178,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":867001,"timestamp":151472900347,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778959445147,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":850407,"timestamp":151472921436,"id":86,"parentId":48,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":861618,"timestamp":151472910267,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778959445157,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":831788,"timestamp":151472941408,"id":91,"parentId":31,"tags":{},"startTime":1778959445188,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":868515,"timestamp":151472904727,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778959445151,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":834345,"timestamp":151472945948,"id":93,"parentId":43,"tags":{},"startTime":1778959445192,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":873062,"timestamp":151472907268,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778959445154,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":843750,"timestamp":151472942316,"id":92,"parentId":41,"tags":{},"startTime":1778959445189,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":879308,"timestamp":151472906810,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1778959445153,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":871847,"timestamp":151472920712,"id":70,"parentId":29,"tags":{},"startTime":1778959445167,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":888206,"timestamp":151472904401,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778959445151,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":907564,"timestamp":151472921458,"id":88,"parentId":50,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":918597,"timestamp":151472910509,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778959445157,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":919614,"timestamp":151472921423,"id":85,"parentId":47,"tags":{},"startTime":1778959445168,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":930989,"timestamp":151472910128,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778959445156,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":824964,"timestamp":151473016355,"id":94,"parentId":23,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":941284,"timestamp":151472900072,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778959445146,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":920374,"timestamp":151472921150,"id":73,"parentId":33,"tags":{},"startTime":1778959445167,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":936339,"timestamp":151472905228,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778959445152,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":829488,"timestamp":151473016412,"id":95,"parentId":52,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":934920,"timestamp":151472911035,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1778959445157,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":837333,"timestamp":151473016501,"id":101,"parentId":59,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":941036,"timestamp":151472912850,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778959445159,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":839125,"timestamp":151473016472,"id":99,"parentId":56,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":943872,"timestamp":151472911789,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778959445158,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":847610,"timestamp":151473016458,"id":98,"parentId":55,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":952564,"timestamp":151472911550,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1778959445158,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":848058,"timestamp":151473016524,"id":102,"parentId":61,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":951130,"timestamp":151472913508,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778959445160,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":948583,"timestamp":151472920460,"id":69,"parentId":28,"tags":{},"startTime":1778959445167,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":964825,"timestamp":151472904265,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778959445151,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":855482,"timestamp":151473016547,"id":104,"parentId":63,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":958227,"timestamp":151472913842,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778959445160,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":855593,"timestamp":151473016560,"id":105,"parentId":60,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":959111,"timestamp":151472913067,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1778959445159,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":856086,"timestamp":151473016534,"id":103,"parentId":62,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":958998,"timestamp":151472913659,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778959445160,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":871801,"timestamp":151473016428,"id":96,"parentId":53,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":977087,"timestamp":151472911201,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1778959445157,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":874746,"timestamp":151473016443,"id":97,"parentId":54,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":979886,"timestamp":151472911349,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1778959445158,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":880806,"timestamp":151473016482,"id":100,"parentId":58,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":984771,"timestamp":151472912569,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778959445159,"traceId":"13f4a53e4d0cbd1c"},{"name":"is-page-static","duration":908676,"timestamp":151473016568,"id":106,"parentId":57,"tags":{},"startTime":1778959445263,"traceId":"13f4a53e4d0cbd1c"},{"name":"check-page","duration":1013229,"timestamp":151472912071,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1778959445158,"traceId":"13f4a53e4d0cbd1c"},{"name":"static-check","duration":1030160,"timestamp":151472895176,"id":19,"parentId":1,"tags":{},"startTime":1778959445141,"traceId":"13f4a53e4d0cbd1c"}]
2
+ [{"name":"write-routes-manifest","duration":504,"timestamp":151473935358,"id":108,"parentId":1,"tags":{},"startTime":1778959446182,"traceId":"13f4a53e4d0cbd1c"},{"name":"load-dotenv","duration":64,"timestamp":151473948126,"id":111,"parentId":110,"tags":{},"startTime":1778959446194,"traceId":"13f4a53e4d0cbd1c"},{"name":"run-export-path-map","duration":786,"timestamp":151473951262,"id":112,"parentId":110,"tags":{},"startTime":1778959446198,"traceId":"13f4a53e4d0cbd1c"},{"name":"next-export","duration":634746,"timestamp":151473946319,"id":110,"parentId":1,"tags":{},"startTime":1778959446193,"traceId":"13f4a53e4d0cbd1c"},{"name":"move-exported-app-not-found-","duration":759,"timestamp":151474584612,"id":113,"parentId":109,"tags":{},"startTime":1778959446831,"traceId":"13f4a53e4d0cbd1c"},{"name":"move-exported-app-global-error-","duration":549,"timestamp":151474585525,"id":114,"parentId":109,"tags":{},"startTime":1778959446832,"traceId":"13f4a53e4d0cbd1c"},{"name":"static-generation","duration":649015,"timestamp":151473940043,"id":109,"parentId":1,"tags":{},"startTime":1778959446186,"traceId":"13f4a53e4d0cbd1c"},{"name":"write-routes-manifest","duration":463,"timestamp":151474589364,"id":115,"parentId":1,"tags":{},"startTime":1778959446836,"traceId":"13f4a53e4d0cbd1c"},{"name":"print-tree-view","duration":5052,"timestamp":151474605203,"id":116,"parentId":1,"tags":{},"startTime":1778959446851,"traceId":"13f4a53e4d0cbd1c"},{"name":"write-route-bundle-stats","duration":14162,"timestamp":151474610286,"id":117,"parentId":1,"tags":{},"startTime":1778959446857,"traceId":"13f4a53e4d0cbd1c"},{"name":"telemetry-flush","duration":29968,"timestamp":151474624482,"id":118,"parentId":1,"tags":{},"startTime":1778959446871,"traceId":"13f4a53e4d0cbd1c"},{"name":"next-build","duration":17785583,"timestamp":151456868901,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778959429115,"traceId":"13f4a53e4d0cbd1c"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6024413,"timestamp":150913097796,"id":14,"parentId":1,"tags":{},"startTime":1778958885344,"traceId":"e7b0c9a8d26bddf0"},{"name":"turbopack-build-events","duration":73,"timestamp":150913384490,"id":15,"parentId":1,"tags":{},"startTime":1778958885631,"traceId":"e7b0c9a8d26bddf0"},{"name":"run-typescript","duration":9334008,"timestamp":150919134175,"id":16,"parentId":1,"tags":{},"startTime":1778958891380,"traceId":"e7b0c9a8d26bddf0"},{"name":"static-check","duration":864541,"timestamp":150928636200,"id":19,"parentId":1,"tags":{},"startTime":1778958900882,"traceId":"e7b0c9a8d26bddf0"},{"name":"static-generation","duration":606696,"timestamp":150929513778,"id":109,"parentId":1,"tags":{},"startTime":1778958901760,"traceId":"e7b0c9a8d26bddf0"},{"name":"telemetry-flush","duration":20341,"timestamp":150930151805,"id":118,"parentId":1,"tags":{},"startTime":1778958902398,"traceId":"e7b0c9a8d26bddf0"},{"name":"next-build","duration":17311349,"timestamp":150912860826,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778958885107,"traceId":"e7b0c9a8d26bddf0"}]
1
+ [{"name":"run-turbopack","duration":5902622,"timestamp":151457104111,"id":14,"parentId":1,"tags":{},"startTime":1778959429350,"traceId":"13f4a53e4d0cbd1c"},{"name":"turbopack-build-events","duration":81,"timestamp":151457409630,"id":15,"parentId":1,"tags":{},"startTime":1778959429656,"traceId":"13f4a53e4d0cbd1c"},{"name":"run-typescript","duration":9622216,"timestamp":151463015739,"id":16,"parentId":1,"tags":{},"startTime":1778959435262,"traceId":"13f4a53e4d0cbd1c"},{"name":"static-check","duration":1030160,"timestamp":151472895176,"id":19,"parentId":1,"tags":{},"startTime":1778959445141,"traceId":"13f4a53e4d0cbd1c"},{"name":"static-generation","duration":649015,"timestamp":151473940043,"id":109,"parentId":1,"tags":{},"startTime":1778959446186,"traceId":"13f4a53e4d0cbd1c"},{"name":"telemetry-flush","duration":29968,"timestamp":151474624482,"id":118,"parentId":1,"tags":{},"startTime":1778959446871,"traceId":"13f4a53e4d0cbd1c"},{"name":"next-build","duration":17785583,"timestamp":151456868901,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778959429115,"traceId":"13f4a53e4d0cbd1c"}]
@@ -4471,13 +4471,34 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
4471
4471
  // synchronised per-edge animation set.
4472
4472
  const stagger = (index * 0.37) % duration;
4473
4473
  // Round 10 / Loop: freshness fade. An edge that fired ≤30s ago
4474
- // stays at full intensity; over 5 minutes it decays to ~35%.
4475
- // Surfaces "what's happening now" vs background chatter without
4476
- // hiding old flow entirely (some context still useful). `now`
4477
- // captured at useMemo-recompute time (every 5s message refresh)
4478
- // — accuracy is within the poll interval, plenty.
4474
+ // stays at full intensity; over 5 minutes it decays to a
4475
+ // floor. Surfaces "what's happening now" vs background
4476
+ // chatter without hiding old flow entirely (some context
4477
+ // still useful). `now` captured at useMemo-recompute time
4478
+ // (every 5s message refresh) — accuracy is within the poll
4479
+ // interval, plenty.
4480
+ //
4481
+ // Round 406 / Loop: edge freshness fade floor 0.35 → 0.40.
4482
+ // Stale-state legibility lift family (6th anchor) — pre-
4483
+ // R406 edges older than 5 minutes faded to α=0.35 (a 65 %
4484
+ // dim against full intensity). The decay rate is the same
4485
+ // 1 - ageMs/300s curve; only the FLOOR shifts. Sibling
4486
+ // treatment to:
4487
+ // R317 subordinate-text gray-500 → gray-400
4488
+ // R358 freshness ramp floor 0.25 → 0.30
4489
+ // R372 minimap offline-dot opacity 0.5 → 0.6
4490
+ // R404 hub-halo cyber trough 0.08 → 0.10
4491
+ // R405 hub-halo light trough 0.32 → 0.34
4492
+ // R406 edge freshness floor 0.35 → 0.40 (this round)
4493
+ // Edges past 5min now sit at 40% intensity instead of 35%
4494
+ // — they still recede against fresh edges but read
4495
+ // legibly enough to convey "this conversation existed".
4496
+ // ageMs threshold for the 5-minute decay unchanged; the
4497
+ // decay curve shape (linear) unchanged. The visual delta
4498
+ // is most pronounced on edges between 5-60 minutes old —
4499
+ // where the floor was binding pre-R406.
4479
4500
  const ageMs = link.last_at ? Math.max(0, Date.now() - Date.parse(link.last_at)) : 0;
4480
- const fresh = Math.max(0.35, 1 - ageMs / (5 * 60 * 1000));
4501
+ const fresh = Math.max(0.40, 1 - ageMs / (5 * 60 * 1000));
4481
4502
  // Round 16 arrow-tier binning — keep `topo-arrow` as the
4482
4503
  // medium tier id so the legend swatch picks it up unchanged.
4483
4504
  const arrowId = link.count <= 2 ? 'topo-arrow-s'
@@ -5374,28 +5395,35 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5374
5395
  // Round 404 / Loop: hub-halo cyber trough opacity 0.08 →
5375
5396
  // 0.10. Pre-R404 the breath's low-point sat at α=0.08
5376
5397
  // cyber (per R84 family tuning) — the halo nearly faded
5377
- // out at trough on the dark canvas. The breath's
5378
- // visibility floor felt like "almost gone" rather than
5379
- // "alive at rest". R404 lifts cyber trough to 0.10 so
5380
- // the resting visibility reads more confidently as a
5381
- // present-but-quiet anchor while the per-bucket peak
5382
- // amplitudes [0.16/0.20/0.26/0.32] stay exactly tuned.
5383
- // Result: breath envelope rises from 0.08→peak to
5384
- // 0.10→peak same dramatic motion, slightly elevated
5385
- // baseline. Light theme trough stays at 0.32 (already
5386
- // at the strong end on the bright canvas backdrop).
5387
- // Stale-state legibility lift family (4 anchors now):
5398
+ // out at trough on the dark canvas. R404 lifts cyber
5399
+ // trough to 0.10. Per-bucket peak amplitudes [0.16/0.20/
5400
+ // 0.26/0.32] stay exactly tuned.
5401
+ //
5402
+ // Round 405 / Loop: hub-halo LIGHT trough 0.32 → 0.34 —
5403
+ // symmetric +0.02 lift to mirror R404's cyber treatment
5404
+ // across both themes. Pre-R405 only cyber got the lift
5405
+ // (R404 docstring noted "light already at the strong
5406
+ // end" as deliberate); but the cyber/light delta in
5407
+ // R404 was an inconsistency in the family pattern.
5408
+ // R405 closes the symmetry both themes get +0.02
5409
+ // baseline lift, so the breath low-point reads with
5410
+ // matching confidence regardless of theme. Light peak
5411
+ // array [0.52/0.58/0.65/0.72] stays tuned.
5412
+ //
5413
+ // Stale-state legibility lift family (5 anchors now):
5388
5414
  // R317 subordinate-text gray-500 → gray-400
5389
5415
  // R358 freshness floor 0.25 → 0.30
5390
5416
  // R372 minimap offline-dot opacity 0.5 → 0.6
5391
- // R404 hub-halo cyber trough 0.08 → 0.10 (this round)
5417
+ // R404 hub-halo cyber trough 0.08 → 0.10
5418
+ // R405 hub-halo light trough 0.32 → 0.34 (this round)
5419
+ //
5392
5420
  // R84 per-bucket peak/dur + R245 ease-in-out spline
5393
5421
  // keySplines all preserved. Test fixture probes the
5394
5422
  // SMIL <animate> values via data-topo-hub-halo-trough
5395
- // attr.
5423
+ // attr (now exposes both light + cyber resolved values).
5396
5424
  const peakLight = [0.52, 0.58, 0.65, 0.72][busy];
5397
5425
  const peakDark = [0.16, 0.20, 0.26, 0.32][busy];
5398
- const troughLight = 0.32;
5426
+ const troughLight = 0.34;
5399
5427
  const troughDark = 0.10;
5400
5428
  const dur = [4.0, 3.2, 2.7, 2.4][busy];
5401
5429
  const valuesLight = `${troughLight};${peakLight};${troughLight}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.1-preview.65",
3
+ "version": "0.5.1-preview.67",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,99 @@
1
+ /* Round 406 verification: edge freshness fade floor 0.35 → 0.40.
2
+ * Stale-state legibility lift family (6th anchor) — stale edges
3
+ * (>5min) now sit at 40% intensity instead of 35%. The decay
4
+ * curve shape (linear 1 - ageMs/300s) unchanged.
5
+ *
6
+ * Contract:
7
+ * - Source-file verification of `Math.max(0.40, 1 - ageMs / (5 * 60 * 1000))`
8
+ * - DOM probe: seed a STALE edge (ageMs > 5min) so fresh hits the
9
+ * floor; assert the visible flow path's opacity reflects the
10
+ * lifted floor (computed as 0.40 × edge_opacity_mul × base).
11
+ * - Compare against pre-R406 expectation (0.35 floor): the lifted
12
+ * floor produces ~14.3 % higher edge opacity on stale edges.
13
+ */
14
+ import { chromium } from 'playwright';
15
+ import { readFileSync } from 'node:fs';
16
+
17
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
18
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
19
+ // 10 minutes ago — well past the 5-min decay window; freshness hits floor.
20
+ const stale = new Date(Date.now() - 10 * 60 * 1000).toISOString();
21
+
22
+ const browser = await chromium.launch({ headless: true });
23
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
24
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
25
+ await ctx.addInitScript(() => {
26
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
27
+ });
28
+ await ctx.route('**/api/hub/status*', async (route) => {
29
+ const r = await route.fetch();
30
+ const b = await r.json();
31
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
32
+ const mk = (alias) => ({
33
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
34
+ network_id: nid, project_dir: null,
35
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
36
+ });
37
+ await route.fulfill({ response: r, json: { ...b, sessions: [ mk('alpha'), mk('beta'), mk('gamma') ] } });
38
+ });
39
+ // Seed a stale flow link 10 minutes ago — past the 5-min decay so floor binds.
40
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({
41
+ json: { messages: [
42
+ { id: 'm1', from_alias: 'alpha', to_alias: 'beta', content: 'old', created_at: stale, network_id: 'default' },
43
+ ] },
44
+ }));
45
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
46
+
47
+ const page = await ctx.newPage();
48
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
49
+ await page.waitForSelector('[data-edge-visible]', { timeout: 15000 });
50
+ await page.waitForTimeout(600);
51
+
52
+ const probe = await page.evaluate(() => {
53
+ const edge = document.querySelector('[data-edge-visible]');
54
+ if (!edge) return null;
55
+ return {
56
+ opacityAttr: edge.getAttribute('opacity'),
57
+ edgeKey: edge.getAttribute('data-edge-visible'),
58
+ };
59
+ });
60
+
61
+ const fileText = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
62
+ const sourceHasFloor040 = /Math\.max\(0\.40, 1 - ageMs/.test(fileText);
63
+ const sourceLacksFloor035 = !/Math\.max\(0\.35, 1 - ageMs/.test(fileText);
64
+
65
+ await browser.close();
66
+
67
+ // Pre-R406 expected: (0.28 cyber base) × 0.35 floor × 1 mul = 0.098
68
+ // Post-R406 expected: (0.28 cyber base) × 0.40 floor × 1 mul = 0.112
69
+ // On the visible flow path the wire is:
70
+ // opacity = Math.min(1, (isLight ? 0.22 : 0.28) * fresh * edgeOpacityMul)
71
+ // For an unhovered edge in a fresh sessions context (no other hover/active):
72
+ // edgeOpacityMul = !hoveredAlias && !activeGroup ? (hoveredActiveLinks ? 1.5 : 1) : 0.35
73
+ // = 1 in this probe → opacity ≈ 0.112 post-R406
74
+ // Browser may serialize this as "0.112" or "0.11" — accept either with
75
+ // a tolerance probe.
76
+ const opacityNum = probe ? parseFloat(probe.opacityAttr || '0') : 0;
77
+ const expectedPost = 0.28 * 0.40 * 1; // 0.112
78
+ const expectedPre = 0.28 * 0.35 * 1; // 0.098
79
+ const distToPost = Math.abs(opacityNum - expectedPost);
80
+ const distToPre = Math.abs(opacityNum - expectedPre);
81
+
82
+ const results = {
83
+ // Edge mounted from seeded stale flow
84
+ edge_mounted: !!probe,
85
+ edge_key_present: !!probe?.edgeKey,
86
+ // Post-R406 opacity is CLOSER to 0.112 than 0.098
87
+ opacity_close_to_post_r406: distToPost < 0.01,
88
+ // Opacity is FURTHER from the pre-R406 0.098 baseline
89
+ opacity_not_pre_r406: distToPre > distToPost,
90
+ // Source-file canonical wire
91
+ source_floor_040: sourceHasFloor040,
92
+ source_no_floor_035: sourceLacksFloor035,
93
+ };
94
+ const ok = Object.values(results).every(Boolean);
95
+ console.log(`${ok ? '✅' : '❌'} edge freshness floor 0.35 → 0.40:`, JSON.stringify(results),
96
+ '\n probe:', probe,
97
+ '\n opacityNum:', opacityNum, '/ expectedPost:', expectedPost, '/ distToPost:', distToPost.toFixed(4),
98
+ '\n expectedPre:', expectedPre, '/ distToPre:', distToPre.toFixed(4));
99
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,88 @@
1
+ /* Round 405 verification: hub-halo LIGHT trough 0.32 → 0.34 —
2
+ * symmetrizes R404 cyber treatment across both themes. Probes
3
+ * both cyber and light theme states via two browser contexts.
4
+ *
5
+ * Contract:
6
+ * - Idle fixture (workingCount=0, bucket=0):
7
+ * * cyber: data-topo-hub-halo-trough === '0.1' (R404 invariant)
8
+ * * light: data-topo-hub-halo-trough === '0.34' (R405 lift)
9
+ * * both: data-hub-busyness === '0'
10
+ * * both: data-topo-hub-halo-peak per-theme invariant
11
+ * (cyber 0.16, light 0.52)
12
+ * - Source-file verification:
13
+ * * const troughLight = 0.34;
14
+ * * const troughDark = 0.10;
15
+ */
16
+ import { chromium } from 'playwright';
17
+ import { readFileSync } from 'node:fs';
18
+
19
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
20
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
21
+
22
+ async function probeTheme(theme) {
23
+ const browser = await chromium.launch({ headless: true });
24
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
25
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
26
+ await ctx.addInitScript((t) => {
27
+ try { localStorage.setItem('anet-theme', t); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
28
+ }, theme);
29
+ await ctx.route('**/api/hub/status*', async (route) => {
30
+ const r = await route.fetch();
31
+ const b = await r.json();
32
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
33
+ const mk = (alias) => ({
34
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
35
+ network_id: nid, project_dir: null,
36
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
37
+ });
38
+ await route.fulfill({ response: r, json: { ...b, sessions: [ mk('alpha'), mk('beta') ] } });
39
+ });
40
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
41
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
42
+ const page = await ctx.newPage();
43
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
44
+ await page.waitForSelector('[data-hub-busyness]', { timeout: 15000 });
45
+ await page.waitForTimeout(400);
46
+ const probe = await page.evaluate(() => {
47
+ const halo = document.querySelector('[data-hub-busyness]');
48
+ if (!halo) return null;
49
+ return {
50
+ busyness: halo.getAttribute('data-hub-busyness'),
51
+ trough: halo.getAttribute('data-topo-hub-halo-trough'),
52
+ peak: halo.getAttribute('data-topo-hub-halo-peak'),
53
+ fill: halo.getAttribute('fill'),
54
+ };
55
+ });
56
+ await browser.close();
57
+ return probe;
58
+ }
59
+
60
+ const cyber = await probeTheme('cyber');
61
+ const light = await probeTheme('light');
62
+
63
+ const fileText = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
64
+ const sourceLight034 = /const troughLight\s*=\s*0\.34;/.test(fileText);
65
+ const sourceDark010 = /const troughDark\s*=\s*0\.10;/.test(fileText);
66
+ const sourceLightPeak = /const peakLight\s*=\s*\[0\.52, 0\.58, 0\.65, 0\.72\]\[busy\];/.test(fileText);
67
+
68
+ const results = {
69
+ // Cyber R404 invariant
70
+ cyber_busy_0: cyber?.busyness === '0',
71
+ cyber_trough_0_1: cyber?.trough === '0.1',
72
+ cyber_peak_0_16: cyber?.peak === '0.16',
73
+ cyber_fill_dark: cyber?.fill === '#10b981',
74
+ // Light R405 lift
75
+ light_busy_0: light?.busyness === '0',
76
+ light_trough_0_34: light?.trough === '0.34',
77
+ light_peak_0_52: light?.peak === '0.52',
78
+ light_fill_light: light?.fill === '#d1fae5',
79
+ // Source-file canonical wire
80
+ source_light_034: sourceLight034,
81
+ source_dark_010: sourceDark010,
82
+ source_light_peak: sourceLightPeak,
83
+ };
84
+ const ok = Object.values(results).every(Boolean);
85
+ console.log(`${ok ? '✅' : '❌'} hub-halo light trough 0.32 → 0.34:`, JSON.stringify(results),
86
+ '\n cyber:', cyber,
87
+ '\n light:', light);
88
+ process.exit(ok ? 0 : 1);