@sleep2agi/agent-network-dashboard 0.4.6-preview.281 → 0.4.6-preview.283

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 +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 +3 -3
  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/{0c_eg6lxw~36i.js → 0770ctmo-jd~3.js} +3 -3
  130. package/.next/static/chunks/{0qnfuwkukbu01.js → 12ih-cxmgr09g.js} +1 -1
  131. package/.next/static/chunks/{11ilooy_9niy-.js → 13ku0uxsx2o6i.js} +1 -1
  132. package/.next/trace +2 -2
  133. package/.next/trace-build +1 -1
  134. package/app/components/TopoGraph.tsx +42 -2
  135. package/package.json +1 -1
  136. package/scripts/topo-freshness-conditional-render-test.mjs +92 -0
  137. package/scripts/topo-orbit-particles-retired-test.mjs +91 -0
  138. package/scripts/topo-freshness-text-color-coherence-test.mjs +0 -97
  139. package/scripts/topo-orbit-busyness-test.mjs +0 -96
  140. package/scripts/topo-orbit-opacity-bucket-test.mjs +0 -124
  141. /package/.next/static/{gjUOBeB2JqesZ_cSX14ph → gPw1YGsDb6psvirUWKGfQ}/_buildManifest.js +0 -0
  142. /package/.next/static/{gjUOBeB2JqesZ_cSX14ph → gPw1YGsDb6psvirUWKGfQ}/_clientMiddlewareManifest.js +0 -0
  143. /package/.next/static/{gjUOBeB2JqesZ_cSX14ph → gPw1YGsDb6psvirUWKGfQ}/_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.4.6-preview.281"],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.4.6-preview.283"],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.4.6-preview.281"],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.4.6-preview.283"],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":293,"timestamp":102710662510,"id":4,"parentId":1,"tags":{},"startTime":1778910682909,"traceId":"5d318d8829a1732c"},{"name":"load-custom-routes","duration":479,"timestamp":102710662961,"id":5,"parentId":1,"tags":{},"startTime":1778910682909,"traceId":"5d318d8829a1732c"},{"name":"create-dist-dir","duration":703,"timestamp":102710663481,"id":6,"parentId":1,"tags":{},"startTime":1778910682910,"traceId":"5d318d8829a1732c"},{"name":"clean","duration":29333,"timestamp":102710664847,"id":7,"parentId":1,"tags":{},"startTime":1778910682911,"traceId":"5d318d8829a1732c"},{"name":"discover-routes","duration":9181,"timestamp":102710774429,"id":8,"parentId":1,"tags":{},"startTime":1778910683021,"traceId":"5d318d8829a1732c"},{"name":"create-root-mapping","duration":197,"timestamp":102710783693,"id":9,"parentId":1,"tags":{},"startTime":1778910683030,"traceId":"5d318d8829a1732c"},{"name":"generate-route-types","duration":43440,"timestamp":102710786368,"id":10,"parentId":1,"tags":{},"startTime":1778910683033,"traceId":"5d318d8829a1732c"},{"name":"public-dir-conflict-check","duration":130,"timestamp":102710829926,"id":11,"parentId":1,"tags":{},"startTime":1778910683076,"traceId":"5d318d8829a1732c"},{"name":"generate-routes-manifest","duration":5508,"timestamp":102710830186,"id":12,"parentId":1,"tags":{},"startTime":1778910683076,"traceId":"5d318d8829a1732c"},{"name":"run-turbopack","duration":5548643,"timestamp":102710842055,"id":14,"parentId":1,"tags":{},"startTime":1778910683088,"traceId":"5d318d8829a1732c"},{"name":"turbopack-build-events","duration":76,"timestamp":102711164434,"id":15,"parentId":1,"tags":{},"startTime":1778910683411,"traceId":"5d318d8829a1732c"},{"name":"run-typescript","duration":8871247,"timestamp":102716399180,"id":16,"parentId":1,"tags":{},"startTime":1778910688645,"traceId":"5d318d8829a1732c"},{"name":"generate-required-server-files","duration":3009,"timestamp":102725271766,"id":18,"parentId":1,"tags":{},"startTime":1778910697518,"traceId":"5d318d8829a1732c"},{"name":"check-static-error-page","duration":14626,"timestamp":102725451761,"id":20,"parentId":19,"tags":{},"startTime":1778910697698,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":437688,"timestamp":102725469170,"id":63,"parentId":22,"tags":{},"startTime":1778910697715,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":452167,"timestamp":102725454892,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778910697701,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":520472,"timestamp":102725470765,"id":67,"parentId":28,"tags":{},"startTime":1778910697717,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":532916,"timestamp":102725458430,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778910697705,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":533243,"timestamp":102725468753,"id":62,"parentId":21,"tags":{},"startTime":1778910697715,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":548762,"timestamp":102725453317,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778910697700,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":538365,"timestamp":102725471288,"id":70,"parentId":32,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":550568,"timestamp":102725459153,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778910697705,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":543600,"timestamp":102725470341,"id":65,"parentId":26,"tags":{},"startTime":1778910697717,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":556051,"timestamp":102725458189,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778910697704,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":548273,"timestamp":102725471094,"id":69,"parentId":30,"tags":{},"startTime":1778910697717,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":560700,"timestamp":102725458728,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778910697705,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":548282,"timestamp":102725471459,"id":73,"parentId":35,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":560295,"timestamp":102725459501,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778910697706,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":575604,"timestamp":102725471427,"id":72,"parentId":34,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":587721,"timestamp":102725459389,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778910697706,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":578763,"timestamp":102725470512,"id":66,"parentId":27,"tags":{},"startTime":1778910697717,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":591038,"timestamp":102725458316,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778910697705,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":580078,"timestamp":102725471622,"id":76,"parentId":38,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":591391,"timestamp":102725460369,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778910697707,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":593661,"timestamp":102725471605,"id":75,"parentId":37,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":605139,"timestamp":102725460196,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778910697706,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":593866,"timestamp":102725471648,"id":78,"parentId":40,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":604974,"timestamp":102725460584,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778910697707,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":594154,"timestamp":102725471577,"id":74,"parentId":36,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":605796,"timestamp":102725459978,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778910697706,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":595203,"timestamp":102725470925,"id":68,"parentId":29,"tags":{},"startTime":1778910697717,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":607591,"timestamp":102725458574,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778910697705,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":602473,"timestamp":102725469300,"id":64,"parentId":25,"tags":{},"startTime":1778910697716,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":613821,"timestamp":102725457998,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778910697704,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":600773,"timestamp":102725471692,"id":82,"parentId":44,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":611512,"timestamp":102725460994,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778910697707,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":605256,"timestamp":102725471705,"id":83,"parentId":45,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":615917,"timestamp":102725461121,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778910697707,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":606114,"timestamp":102725471670,"id":80,"parentId":42,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":617056,"timestamp":102725460771,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778910697707,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":607935,"timestamp":102725471716,"id":84,"parentId":46,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":618467,"timestamp":102725461228,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778910697708,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":611764,"timestamp":102725471740,"id":86,"parentId":48,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":620667,"timestamp":102725462888,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778910697709,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":612621,"timestamp":102725471756,"id":87,"parentId":49,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":621403,"timestamp":102725463021,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778910697709,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":615098,"timestamp":102725471683,"id":81,"parentId":43,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":625939,"timestamp":102725460885,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778910697707,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":616390,"timestamp":102725471635,"id":77,"parentId":39,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":627587,"timestamp":102725460488,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778910697707,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":618545,"timestamp":102725471657,"id":79,"parentId":41,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":629572,"timestamp":102725460676,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778910697707,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":614180,"timestamp":102725476196,"id":89,"parentId":31,"tags":{},"startTime":1778910697722,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":631565,"timestamp":102725458849,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778910697705,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":622124,"timestamp":102725475069,"id":88,"parentId":24,"tags":{},"startTime":1778910697721,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":641815,"timestamp":102725455434,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778910697702,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":635327,"timestamp":102725471731,"id":85,"parentId":47,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":645751,"timestamp":102725461357,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778910697708,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":635890,"timestamp":102725471354,"id":71,"parentId":33,"tags":{},"startTime":1778910697718,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":647991,"timestamp":102725459283,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778910697706,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":645048,"timestamp":102725478650,"id":96,"parentId":56,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":658717,"timestamp":102725465038,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778910697711,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":654309,"timestamp":102725478659,"id":97,"parentId":57,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":667799,"timestamp":102725465246,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778910697712,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":661596,"timestamp":102725478671,"id":98,"parentId":59,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":674497,"timestamp":102725465828,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778910697712,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":672425,"timestamp":102725478559,"id":90,"parentId":23,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":696589,"timestamp":102725455185,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778910697701,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":675768,"timestamp":102725478686,"id":99,"parentId":60,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":688554,"timestamp":102725465986,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778910697712,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":680742,"timestamp":102725478702,"id":100,"parentId":61,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":693353,"timestamp":102725466142,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778910697712,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":684959,"timestamp":102725478617,"id":93,"parentId":52,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":699857,"timestamp":102725463763,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778910697710,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":678837,"timestamp":102725485843,"id":101,"parentId":58,"tags":{},"startTime":1778910697732,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":699302,"timestamp":102725465418,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778910697712,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":665311,"timestamp":102725501310,"id":102,"parentId":55,"tags":{},"startTime":1778910697748,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":702206,"timestamp":102725464450,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778910697711,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":691167,"timestamp":102725478604,"id":92,"parentId":51,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":706194,"timestamp":102725463608,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778910697710,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":700169,"timestamp":102725478626,"id":94,"parentId":53,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":714854,"timestamp":102725463979,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778910697710,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":700379,"timestamp":102725478637,"id":95,"parentId":54,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":714820,"timestamp":102725464216,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778910697710,"traceId":"5d318d8829a1732c"},{"name":"is-page-static","duration":703259,"timestamp":102725478589,"id":91,"parentId":50,"tags":{},"startTime":1778910697725,"traceId":"5d318d8829a1732c"},{"name":"check-page","duration":718435,"timestamp":102725463444,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778910697710,"traceId":"5d318d8829a1732c"},{"name":"static-check","duration":731294,"timestamp":102725450621,"id":19,"parentId":1,"tags":{},"startTime":1778910697697,"traceId":"5d318d8829a1732c"},{"name":"write-routes-manifest","duration":421,"timestamp":102726188469,"id":104,"parentId":1,"tags":{},"startTime":1778910698435,"traceId":"5d318d8829a1732c"},{"name":"load-dotenv","duration":41,"timestamp":102726199811,"id":107,"parentId":106,"tags":{},"startTime":1778910698446,"traceId":"5d318d8829a1732c"},{"name":"run-export-path-map","duration":519,"timestamp":102726203128,"id":108,"parentId":106,"tags":{},"startTime":1778910698449,"traceId":"5d318d8829a1732c"},{"name":"next-export","duration":591496,"timestamp":102726198634,"id":106,"parentId":1,"tags":{},"startTime":1778910698445,"traceId":"5d318d8829a1732c"}]
2
- [{"name":"move-exported-app-not-found-","duration":2088,"timestamp":102726793709,"id":109,"parentId":105,"tags":{},"startTime":1778910699040,"traceId":"5d318d8829a1732c"},{"name":"move-exported-app-global-error-","duration":552,"timestamp":102726795888,"id":110,"parentId":105,"tags":{},"startTime":1778910699042,"traceId":"5d318d8829a1732c"},{"name":"static-generation","duration":605166,"timestamp":102726193086,"id":105,"parentId":1,"tags":{},"startTime":1778910698439,"traceId":"5d318d8829a1732c"},{"name":"write-routes-manifest","duration":409,"timestamp":102726798408,"id":111,"parentId":1,"tags":{},"startTime":1778910699045,"traceId":"5d318d8829a1732c"},{"name":"print-tree-view","duration":4687,"timestamp":102726813636,"id":112,"parentId":1,"tags":{},"startTime":1778910699060,"traceId":"5d318d8829a1732c"},{"name":"write-route-bundle-stats","duration":15856,"timestamp":102726818359,"id":113,"parentId":1,"tags":{},"startTime":1778910699065,"traceId":"5d318d8829a1732c"},{"name":"telemetry-flush","duration":27158,"timestamp":102726834242,"id":114,"parentId":1,"tags":{},"startTime":1778910699081,"traceId":"5d318d8829a1732c"},{"name":"next-build","duration":16246459,"timestamp":102710614972,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778910682861,"traceId":"5d318d8829a1732c"}]
1
+ [{"name":"generate-buildid","duration":368,"timestamp":103457171728,"id":4,"parentId":1,"tags":{},"startTime":1778911429418,"traceId":"a352f1ba0c3857a9"},{"name":"load-custom-routes","duration":522,"timestamp":103457172293,"id":5,"parentId":1,"tags":{},"startTime":1778911429419,"traceId":"a352f1ba0c3857a9"},{"name":"create-dist-dir","duration":805,"timestamp":103457172862,"id":6,"parentId":1,"tags":{},"startTime":1778911429419,"traceId":"a352f1ba0c3857a9"},{"name":"clean","duration":31761,"timestamp":103457174494,"id":7,"parentId":1,"tags":{},"startTime":1778911429421,"traceId":"a352f1ba0c3857a9"},{"name":"discover-routes","duration":9694,"timestamp":103457282085,"id":8,"parentId":1,"tags":{},"startTime":1778911429528,"traceId":"a352f1ba0c3857a9"},{"name":"create-root-mapping","duration":119,"timestamp":103457291834,"id":9,"parentId":1,"tags":{},"startTime":1778911429538,"traceId":"a352f1ba0c3857a9"},{"name":"generate-route-types","duration":42115,"timestamp":103457294307,"id":10,"parentId":1,"tags":{},"startTime":1778911429541,"traceId":"a352f1ba0c3857a9"},{"name":"public-dir-conflict-check","duration":98,"timestamp":103457336516,"id":11,"parentId":1,"tags":{},"startTime":1778911429583,"traceId":"a352f1ba0c3857a9"},{"name":"generate-routes-manifest","duration":4983,"timestamp":103457336737,"id":12,"parentId":1,"tags":{},"startTime":1778911429583,"traceId":"a352f1ba0c3857a9"},{"name":"run-turbopack","duration":5656644,"timestamp":103457347501,"id":14,"parentId":1,"tags":{},"startTime":1778911429594,"traceId":"a352f1ba0c3857a9"},{"name":"turbopack-build-events","duration":119,"timestamp":103457634819,"id":15,"parentId":1,"tags":{},"startTime":1778911429881,"traceId":"a352f1ba0c3857a9"},{"name":"run-typescript","duration":9334696,"timestamp":103463017041,"id":16,"parentId":1,"tags":{},"startTime":1778911435263,"traceId":"a352f1ba0c3857a9"},{"name":"generate-required-server-files","duration":2254,"timestamp":103472352862,"id":18,"parentId":1,"tags":{},"startTime":1778911444599,"traceId":"a352f1ba0c3857a9"},{"name":"check-static-error-page","duration":11205,"timestamp":103472537981,"id":20,"parentId":19,"tags":{},"startTime":1778911444784,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":430248,"timestamp":103472551615,"id":63,"parentId":22,"tags":{},"startTime":1778911444798,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":441646,"timestamp":103472540430,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778911444787,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":548836,"timestamp":103472552196,"id":67,"parentId":28,"tags":{},"startTime":1778911444798,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":557851,"timestamp":103472543331,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778911444790,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":551910,"timestamp":103472551255,"id":62,"parentId":21,"tags":{},"startTime":1778911444798,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":564024,"timestamp":103472539198,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778911444785,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":554025,"timestamp":103472552630,"id":70,"parentId":32,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":562828,"timestamp":103472543884,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778911444790,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":558928,"timestamp":103472552463,"id":69,"parentId":30,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":567910,"timestamp":103472543549,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778911444790,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":581047,"timestamp":103472551946,"id":66,"parentId":27,"tags":{},"startTime":1778911444798,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":589845,"timestamp":103472543245,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778911444790,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":584054,"timestamp":103472552760,"id":72,"parentId":34,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":592782,"timestamp":103472544102,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778911444790,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":588752,"timestamp":103472552884,"id":74,"parentId":36,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":597180,"timestamp":103472544514,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778911444791,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":589167,"timestamp":103472552788,"id":73,"parentId":35,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":597833,"timestamp":103472544188,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778911444790,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":596991,"timestamp":103472551736,"id":64,"parentId":25,"tags":{},"startTime":1778911444798,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":605758,"timestamp":103472543025,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778911444789,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":599373,"timestamp":103472551835,"id":65,"parentId":26,"tags":{},"startTime":1778911444798,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":608093,"timestamp":103472543162,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778911444789,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":613278,"timestamp":103472552924,"id":75,"parentId":37,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":621645,"timestamp":103472544626,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778911444791,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":614628,"timestamp":103472552947,"id":77,"parentId":39,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":622857,"timestamp":103472544775,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778911444791,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":621426,"timestamp":103472552990,"id":81,"parentId":43,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":629368,"timestamp":103472545101,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778911444791,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":621648,"timestamp":103472552981,"id":80,"parentId":42,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":629659,"timestamp":103472544997,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778911444791,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":623966,"timestamp":103472552938,"id":76,"parentId":38,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":632237,"timestamp":103472544716,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778911444791,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":624794,"timestamp":103472552341,"id":68,"parentId":29,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":633770,"timestamp":103472543406,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778911444790,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":624446,"timestamp":103472552957,"id":78,"parentId":40,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":632629,"timestamp":103472544850,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778911444791,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":626396,"timestamp":103472552999,"id":82,"parentId":44,"tags":{},"startTime":1778911444803,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":634269,"timestamp":103472545163,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778911444791,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":624836,"timestamp":103472556488,"id":83,"parentId":45,"tags":{},"startTime":1778911444803,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":636151,"timestamp":103472545228,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778911444792,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":625242,"timestamp":103472558090,"id":86,"parentId":48,"tags":{},"startTime":1778911444804,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":637936,"timestamp":103472545443,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778911444792,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":621219,"timestamp":103472565578,"id":88,"parentId":24,"tags":{},"startTime":1778911444812,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":645880,"timestamp":103472540968,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778911444787,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":623896,"timestamp":103472566731,"id":89,"parentId":31,"tags":{},"startTime":1778911444813,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":647000,"timestamp":103472543674,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778911444790,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":641474,"timestamp":103472558105,"id":87,"parentId":49,"tags":{},"startTime":1778911444804,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":654129,"timestamp":103472545508,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778911444792,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":650723,"timestamp":103472552970,"id":79,"parentId":41,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":658818,"timestamp":103472544926,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778911444791,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":647849,"timestamp":103472556511,"id":84,"parentId":46,"tags":{},"startTime":1778911444803,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":659112,"timestamp":103472545294,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778911444792,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":651850,"timestamp":103472552691,"id":71,"parentId":33,"tags":{},"startTime":1778911444799,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":660592,"timestamp":103472543983,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778911444790,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":657300,"timestamp":103472558071,"id":85,"parentId":47,"tags":{},"startTime":1778911444804,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":670049,"timestamp":103472545381,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778911444792,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":645468,"timestamp":103472570139,"id":95,"parentId":54,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":667950,"timestamp":103472547697,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778911444794,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":653303,"timestamp":103472570165,"id":97,"parentId":57,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":675122,"timestamp":103472548404,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778911444795,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":661118,"timestamp":103472570174,"id":98,"parentId":59,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":682557,"timestamp":103472548787,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778911444795,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":676918,"timestamp":103472570192,"id":99,"parentId":60,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":698304,"timestamp":103472548879,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778911444795,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":677809,"timestamp":103472570061,"id":90,"parentId":23,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":707259,"timestamp":103472540703,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778911444787,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":684382,"timestamp":103472570211,"id":100,"parentId":61,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":705667,"timestamp":103472548984,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778911444795,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":680626,"timestamp":103472575954,"id":101,"parentId":58,"tags":{},"startTime":1778911444822,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":708107,"timestamp":103472548520,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778911444795,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":688341,"timestamp":103472570102,"id":92,"parentId":51,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":711186,"timestamp":103472547313,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778911444794,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":671981,"timestamp":103472588689,"id":102,"parentId":55,"tags":{},"startTime":1778911444835,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":712852,"timestamp":103472547853,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778911444794,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":694213,"timestamp":103472570088,"id":91,"parentId":50,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":717191,"timestamp":103472547153,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778911444793,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":694312,"timestamp":103472570130,"id":94,"parentId":53,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":716911,"timestamp":103472547562,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778911444794,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":704592,"timestamp":103472570116,"id":93,"parentId":52,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":727328,"timestamp":103472547428,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778911444794,"traceId":"a352f1ba0c3857a9"},{"name":"is-page-static","duration":708152,"timestamp":103472570151,"id":96,"parentId":56,"tags":{},"startTime":1778911444816,"traceId":"a352f1ba0c3857a9"},{"name":"check-page","duration":730090,"timestamp":103472548256,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778911444795,"traceId":"a352f1ba0c3857a9"},{"name":"static-check","duration":741178,"timestamp":103472537206,"id":19,"parentId":1,"tags":{},"startTime":1778911444783,"traceId":"a352f1ba0c3857a9"},{"name":"write-routes-manifest","duration":419,"timestamp":103473286663,"id":104,"parentId":1,"tags":{},"startTime":1778911445533,"traceId":"a352f1ba0c3857a9"},{"name":"load-dotenv","duration":57,"timestamp":103473298060,"id":107,"parentId":106,"tags":{},"startTime":1778911445544,"traceId":"a352f1ba0c3857a9"},{"name":"run-export-path-map","duration":588,"timestamp":103473302291,"id":108,"parentId":106,"tags":{},"startTime":1778911445549,"traceId":"a352f1ba0c3857a9"},{"name":"next-export","duration":567937,"timestamp":103473296483,"id":106,"parentId":1,"tags":{},"startTime":1778911445543,"traceId":"a352f1ba0c3857a9"}]
2
+ [{"name":"move-exported-app-not-found-","duration":2098,"timestamp":103473868264,"id":109,"parentId":105,"tags":{},"startTime":1778911446115,"traceId":"a352f1ba0c3857a9"},{"name":"move-exported-app-global-error-","duration":486,"timestamp":103473870449,"id":110,"parentId":105,"tags":{},"startTime":1778911446117,"traceId":"a352f1ba0c3857a9"},{"name":"static-generation","duration":582127,"timestamp":103473290547,"id":105,"parentId":1,"tags":{},"startTime":1778911445537,"traceId":"a352f1ba0c3857a9"},{"name":"write-routes-manifest","duration":400,"timestamp":103473872825,"id":111,"parentId":1,"tags":{},"startTime":1778911446119,"traceId":"a352f1ba0c3857a9"},{"name":"print-tree-view","duration":4682,"timestamp":103473888725,"id":112,"parentId":1,"tags":{},"startTime":1778911446135,"traceId":"a352f1ba0c3857a9"},{"name":"write-route-bundle-stats","duration":12210,"timestamp":103473893439,"id":113,"parentId":1,"tags":{},"startTime":1778911446140,"traceId":"a352f1ba0c3857a9"},{"name":"telemetry-flush","duration":29717,"timestamp":103473905674,"id":114,"parentId":1,"tags":{},"startTime":1778911446152,"traceId":"a352f1ba0c3857a9"},{"name":"next-build","duration":16823323,"timestamp":103457112093,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778911429358,"traceId":"a352f1ba0c3857a9"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5548643,"timestamp":102710842055,"id":14,"parentId":1,"tags":{},"startTime":1778910683088,"traceId":"5d318d8829a1732c"},{"name":"turbopack-build-events","duration":76,"timestamp":102711164434,"id":15,"parentId":1,"tags":{},"startTime":1778910683411,"traceId":"5d318d8829a1732c"},{"name":"run-typescript","duration":8871247,"timestamp":102716399180,"id":16,"parentId":1,"tags":{},"startTime":1778910688645,"traceId":"5d318d8829a1732c"},{"name":"static-check","duration":731294,"timestamp":102725450621,"id":19,"parentId":1,"tags":{},"startTime":1778910697697,"traceId":"5d318d8829a1732c"},{"name":"static-generation","duration":605166,"timestamp":102726193086,"id":105,"parentId":1,"tags":{},"startTime":1778910698439,"traceId":"5d318d8829a1732c"},{"name":"telemetry-flush","duration":27158,"timestamp":102726834242,"id":114,"parentId":1,"tags":{},"startTime":1778910699081,"traceId":"5d318d8829a1732c"},{"name":"next-build","duration":16246459,"timestamp":102710614972,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778910682861,"traceId":"5d318d8829a1732c"}]
1
+ [{"name":"run-turbopack","duration":5656644,"timestamp":103457347501,"id":14,"parentId":1,"tags":{},"startTime":1778911429594,"traceId":"a352f1ba0c3857a9"},{"name":"turbopack-build-events","duration":119,"timestamp":103457634819,"id":15,"parentId":1,"tags":{},"startTime":1778911429881,"traceId":"a352f1ba0c3857a9"},{"name":"run-typescript","duration":9334696,"timestamp":103463017041,"id":16,"parentId":1,"tags":{},"startTime":1778911435263,"traceId":"a352f1ba0c3857a9"},{"name":"static-check","duration":741178,"timestamp":103472537206,"id":19,"parentId":1,"tags":{},"startTime":1778911444783,"traceId":"a352f1ba0c3857a9"},{"name":"static-generation","duration":582127,"timestamp":103473290547,"id":105,"parentId":1,"tags":{},"startTime":1778911445537,"traceId":"a352f1ba0c3857a9"},{"name":"telemetry-flush","duration":29717,"timestamp":103473905674,"id":114,"parentId":1,"tags":{},"startTime":1778911446152,"traceId":"a352f1ba0c3857a9"},{"name":"next-build","duration":16823323,"timestamp":103457112093,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778911429358,"traceId":"a352f1ba0c3857a9"}]
@@ -131,6 +131,26 @@ function FreshnessChip({ sessions }: { sessions: unknown }) {
131
131
  const colorClass = stale
132
132
  ? "bg-amber-500/10 text-amber-300 border-amber-500/20"
133
133
  : "bg-gray-500/10 text-gray-400 border-gray-500/20";
134
+ /* Round 275 / Loop: simplification per Vincent 5214/5215-5217 visual
135
+ audit (clutter cleanup for Twitter screenshot). Pre-R275 the chip
136
+ ALWAYS rendered — "live · 5s" gray-on-gray at rest, "lag · 15s"
137
+ amber when stale. The fresh state is an "everything's fine"
138
+ affirmation that's implicit elsewhere on the canvas (counts
139
+ updating, flows animating). Adding a permanent chip to the chip-
140
+ row's right end for that affirmation is added visual chrome
141
+ without proportional info value.
142
+
143
+ R275 converts the chip to a CONDITIONAL warning indicator: render
144
+ only when stale (sec > 10). Fresh state → null (chip absent). The
145
+ amber stale chip still appears as a warning when SWR lags, so
146
+ users see the problem signal; the fresh state implicitly relies
147
+ on other liveness signals (recent-signal panel rows, edge
148
+ animations, count updates).
149
+
150
+ Net effect: chip-row at rest has 1 fewer chip (cleaner Twitter
151
+ screenshot, less right-edge chrome), but signals appear on
152
+ stale-onset to direct attention. */
153
+ if (!stale) return null;
134
154
  return (
135
155
  <span
136
156
  className={`${baseClass} ${colorClass}`}
@@ -2934,8 +2954,28 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2934
2954
  simultaneously without competing. Same bucket
2935
2955
  thresholds (0 / 1-2 / 3-5 / 6+) the R84 block uses
2936
2956
  at line ~2702 so the two cadences stay in sync if
2937
- a future refactor shifts buckets. */}
2938
- {!isLight && (() => {
2957
+ a future refactor shifts buckets.
2958
+
2959
+ Round 276 / Loop: orbit particles DISABLED by default
2960
+ per Vincent 5214/5215-5217 visual-audit relay
2961
+ (clutter cleanup for Twitter screenshot). The 4
2962
+ particles encode workingCount busyness via speed
2963
+ (R131) + opacity (R216) — but that signal is
2964
+ ALREADY conveyed by:
2965
+ · hub halo opacity breath (R244, R84)
2966
+ · hub digit workingCount text (R130)
2967
+ · pressure-bar working/idle/offline ratio (R31)
2968
+ So orbit particles are info-redundant decoration:
2969
+ they don't add new signal, just add visual noise at
2970
+ the canvas outer edge. R276 gates the render block
2971
+ with `false &&` so the code stays (commented context
2972
+ + tests preserved for hypothetical rollback) but
2973
+ nothing renders. R131 busy-bucket constant + R216
2974
+ opacity-bucket constant are dead code post-R276 —
2975
+ acceptable since the family was R50/R131/R216 and
2976
+ R276 retires the family entirely. Net: 4 fewer
2977
+ moving dots on canvas. */}
2978
+ {false && !isLight && (() => {
2939
2979
  const busy = workingCount === 0 ? 0
2940
2980
  : workingCount <= 2 ? 1
2941
2981
  : workingCount <= 5 ? 2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.4.6-preview.281",
3
+ "version": "0.4.6-preview.283",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,92 @@
1
+ /* Round 275 verification: FreshnessChip converts from always-render
2
+ * to conditional render (only when stale) — chip-row simplification
3
+ * per Vincent 5214/5215-5217 visual audit ask ("乱" cleanup for
4
+ * Twitter screenshot).
5
+ *
6
+ * Pre-R275 the chip ALWAYS rendered:
7
+ * fresh: gray + "live · {sec}s" (always-present "I'm fine" chip)
8
+ * stale: amber + "lag · {sec}s" (R272 prefix swap)
9
+ *
10
+ * Post-R275:
11
+ * fresh: chip absent (null)
12
+ * stale: amber + "lag · {sec}s" (warning indicator only)
13
+ *
14
+ * Net effect: chip-row at rest has 1 fewer chip — cleaner Twitter
15
+ * screenshot, less right-edge chrome. Stale state still alerts via
16
+ * conditional appearance (amber "lag" warning chip).
17
+ *
18
+ * R272 prefix-swap intent (live↔lag) still in code; only the lag side
19
+ * is rendered now. Fresh state implicitly relies on other liveness
20
+ * signals (recent-signal panel rows, edge animations, count updates).
21
+ *
22
+ * Test scope:
23
+ * 1. At fresh state (default page load, 0s elapsed), chip element
24
+ * is NOT present in DOM. R275 simplification verified.
25
+ * 2. R273 Layout toggle Grid inactive has hover:text-cyan-300
26
+ * (regression).
27
+ * 3. R274 legend per-row count has tabular-nums (regression).
28
+ * 4. Source code regression: FreshnessChip body still contains the
29
+ * "lag" / "live" ternary — verified by reading the bundled JS
30
+ * isn't worth the effort; trust the source diff + this fresh-
31
+ * absence test as proof R275 applied.
32
+ */
33
+ import { chromium } from 'playwright';
34
+ import { readFileSync } from 'node:fs';
35
+
36
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
37
+ const browser = await chromium.launch({ headless: true });
38
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
39
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
40
+ await ctx.addInitScript(() => {
41
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
42
+ });
43
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
44
+ await ctx.route('**/api/hub/status*', async (route) => {
45
+ const r = await route.fetch();
46
+ const b = await r.json();
47
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
48
+ const mk = (alias) => ({
49
+ alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
50
+ network_id: nid, project_dir: null,
51
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
52
+ });
53
+ await route.fulfill({ response: r, json: { ...b, sessions: [
54
+ mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
55
+ ] } });
56
+ });
57
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
58
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
59
+
60
+ const page = await ctx.newPage();
61
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
62
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
63
+ await page.waitForSelector('[data-topo-chrome-layout="grid"]', { timeout: 10000 });
64
+ await page.waitForSelector('[data-legend-count="working"]', { timeout: 10000 });
65
+ // Give the page time to settle so FreshnessChip mount cycle is stable.
66
+ // Note: we are NOT waiting for [data-freshness-chip] — that selector
67
+ // should NOT match in fresh state (chip absent). Use a short fixed
68
+ // wait instead.
69
+ await page.waitForTimeout(500);
70
+
71
+ const probe = await page.evaluate(() => {
72
+ const freshnessChip = document.querySelector('[data-freshness-chip]');
73
+ const grid = document.querySelector('[data-topo-chrome-layout="grid"]');
74
+ const legendCount = document.querySelector('[data-legend-count="working"]');
75
+ return {
76
+ chipPresentAtFresh: freshnessChip !== null,
77
+ gridClasses: grid ? grid.className.toString() : null,
78
+ legendCountFVN: legendCount ? window.getComputedStyle(legendCount).fontVariantNumeric : null,
79
+ };
80
+ });
81
+ await browser.close();
82
+
83
+ const results = {
84
+ chip_absent_at_fresh: probe.chipPresentAtFresh === false,
85
+ r273_grid_has_cyan_hover_text: (probe.gridClasses || '').includes('hover:text-cyan-300'),
86
+ r274_legend_count_tabular: probe.legendCountFVN != null && probe.legendCountFVN.includes('tabular-nums'),
87
+ };
88
+ const ok = Object.values(results).every(Boolean);
89
+ console.log(`${ok ? '✅' : '❌'} freshness conditional render:`, JSON.stringify(results),
90
+ '\n chip present at fresh:', probe.chipPresentAtFresh, '(expected: false)',
91
+ '\n legend count FVN:', probe.legendCountFVN);
92
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,91 @@
1
+ /* Round 276 verification: outer-ring orbit particles retired by default.
2
+ *
3
+ * R50 introduced 4 cyan particles orbiting r=330 (outer ring edge) at
4
+ * 16s revolution. R131 added busy-bucket speed (workingCount → 16/14/
5
+ * 12/10s). R216 added busy-bucket opacity (0.5/0.7/0.85/1.0).
6
+ *
7
+ * Pre-R276 the orbit family rendered 4 <g data-topo-orbit-bucket=...>
8
+ * groups whenever the canvas was non-light theme. Each particle was a
9
+ * 2.2-2.8 px cyan circle with animateTransform rotation, opacity gated
10
+ * by busy bucket.
11
+ *
12
+ * The orbit family encoded workingCount busyness via speed + opacity,
13
+ * but that signal was ALREADY conveyed by:
14
+ * · hub halo opacity breath (R244 / R84)
15
+ * · hub digit workingCount text (R130)
16
+ * · pressure-bar working/idle/offline ratio (R31)
17
+ *
18
+ * Info-redundant decoration. For a static Twitter screenshot, 4 small
19
+ * dots at the canvas outer edge contributed to "乱" without
20
+ * proportional signal. R276 gates the render block with `false &&` so
21
+ * the code remains in place (commented context + rollback-friendly)
22
+ * but nothing renders.
23
+ *
24
+ * Test scope:
25
+ * 1. No element matches `[data-topo-orbit-bucket]` in DOM (orbit
26
+ * particles absent).
27
+ * 2. No element matches `[data-topo-orbit-opacity]` (R216 attr).
28
+ * 3. R275 freshness chip still absent at fresh state (regression —
29
+ * simplification family continues).
30
+ * 4. R273 Layout toggle Grid inactive has hover:text-cyan-300
31
+ * (regression).
32
+ */
33
+ import { chromium } from 'playwright';
34
+ import { readFileSync } from 'node:fs';
35
+
36
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
37
+ const browser = await chromium.launch({ headless: true });
38
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
39
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
40
+ await ctx.addInitScript(() => {
41
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
42
+ });
43
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
44
+ await ctx.route('**/api/hub/status*', async (route) => {
45
+ const r = await route.fetch();
46
+ const b = await r.json();
47
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
48
+ const mk = (alias) => ({
49
+ alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
50
+ network_id: nid, project_dir: null,
51
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
52
+ });
53
+ await route.fulfill({ response: r, json: { ...b, sessions: [
54
+ mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
55
+ ] } });
56
+ });
57
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
58
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
59
+
60
+ const page = await ctx.newPage();
61
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
62
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
63
+ await page.waitForSelector('[data-topo-chrome-layout="grid"]', { timeout: 10000 });
64
+ await page.waitForTimeout(500);
65
+
66
+ const probe = await page.evaluate(() => {
67
+ const orbits = document.querySelectorAll('[data-topo-orbit-bucket]');
68
+ const orbitsOpacity = document.querySelectorAll('[data-topo-orbit-opacity]');
69
+ const freshnessChip = document.querySelector('[data-freshness-chip]');
70
+ const grid = document.querySelector('[data-topo-chrome-layout="grid"]');
71
+ return {
72
+ orbitCount: orbits.length,
73
+ orbitOpacityCount: orbitsOpacity.length,
74
+ freshnessPresent: freshnessChip !== null,
75
+ gridClasses: grid ? grid.className.toString() : null,
76
+ };
77
+ });
78
+ await browser.close();
79
+
80
+ const results = {
81
+ orbit_bucket_absent: probe.orbitCount === 0,
82
+ orbit_opacity_absent: probe.orbitOpacityCount === 0,
83
+ r275_freshness_absent_at_fresh: probe.freshnessPresent === false,
84
+ r273_grid_has_cyan_hover_text: (probe.gridClasses || '').includes('hover:text-cyan-300'),
85
+ };
86
+ const ok = Object.values(results).every(Boolean);
87
+ console.log(`${ok ? '✅' : '❌'} orbit particles retired:`, JSON.stringify(results),
88
+ '\n orbit count (expect 0):', probe.orbitCount,
89
+ '\n orbit-opacity count (expect 0):', probe.orbitOpacityCount,
90
+ '\n freshness chip absent (R275):', !probe.freshnessPresent);
91
+ process.exit(ok ? 0 : 1);