@sleep2agi/agent-network-dashboard 0.5.3-preview.102 → 0.5.3-preview.104

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +5 -5
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/admin.html +1 -1
  21. package/.next/server/app/admin.rsc +1 -1
  22. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  28. package/.next/server/app/index.html +2 -2
  29. package/.next/server/app/index.rsc +2 -2
  30. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/login.html +2 -2
  37. package/.next/server/app/login.rsc +2 -2
  38. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  39. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  44. package/.next/server/app/logs.html +1 -1
  45. package/.next/server/app/logs.rsc +1 -1
  46. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  52. package/.next/server/app/messages.html +1 -1
  53. package/.next/server/app/messages.rsc +1 -1
  54. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  60. package/.next/server/app/node.html +1 -1
  61. package/.next/server/app/node.rsc +1 -1
  62. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  68. package/.next/server/app/nodes.html +1 -1
  69. package/.next/server/app/nodes.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  76. package/.next/server/app/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/server-logs.html +1 -1
  78. package/.next/server/app/server-logs.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  84. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  85. package/.next/server/app/settings/networks.html +1 -1
  86. package/.next/server/app/settings/networks.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  94. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/settings/tokens.html +1 -1
  96. package/.next/server/app/settings/tokens.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  103. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  104. package/.next/server/app/settings.html +2 -2
  105. package/.next/server/app/settings.rsc +2 -2
  106. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  110. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  111. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  112. package/.next/server/app/tasks.html +1 -1
  113. package/.next/server/app/tasks.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  120. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  121. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
  123. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  126. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  127. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  128. package/.next/server/middleware-build-manifest.js +3 -3
  129. package/.next/server/pages/404.html +1 -1
  130. package/.next/server/pages/500.html +1 -1
  131. package/.next/static/chunks/{0rr506md96-fk.js → 0.8mquhjzkk4d.js} +1 -1
  132. package/.next/static/chunks/{0-f7in~~0-3l_.js → 013h~hxw0m_e_.js} +1 -1
  133. package/.next/static/chunks/{06lg~j~dpg1x..js → 0jsmo~ixwvjev.js} +1 -1
  134. package/.next/static/chunks/{0a1f0lls6-orv.js → 0vbxhdzq47e.f.js} +1 -1
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +73 -2
  138. package/package.json +1 -1
  139. package/scripts/topo-legend-row-count-brightness-test.mjs +85 -0
  140. package/scripts/topo-recent-count-brightness-test.mjs +84 -0
  141. /package/.next/static/{Y10ijh0YgCZMzR2VUgljp → 0gXMla9eb7mz4SzlQkDya}/_buildManifest.js +0 -0
  142. /package/.next/static/{Y10ijh0YgCZMzR2VUgljp → 0gXMla9eb7mz4SzlQkDya}/_clientMiddlewareManifest.js +0 -0
  143. /package/.next/static/{Y10ijh0YgCZMzR2VUgljp → 0gXMla9eb7mz4SzlQkDya}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,59276,e=>{"use strict";var s=e.i(12629),a=e.i(11449);let t=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",t,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/health",t,r);return{health:e||null,error:a}},"useLicense",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/license",t,{refreshInterval:6e4});return{license:e?.ok?e:null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),t,r);return{messages:i?.messages||[],error:c,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:c}=(0,s.default)(n("/api/hub/status",e),t,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:c}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),t,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:c,error:d,isLoading:o}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),t,r);return{tasks:c?.tasks||[],count:c?.count??0,source:c?.source,error:d,isLoading:o}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.102"],70286)},65610,e=>{"use strict";var s=e.i(22381),a=e.i(23910),t=e.i(56839),r=e.i(59276),n=e.i(70286);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:l}=(0,r.useHealth)(),{license:i}=(0,r.useLicense)(),[c,d]=(0,a.useState)(""),[o,x]=(0,a.useState)(""),[m,h]=(0,a.useState)(""),[g,u]=(0,a.useState)(""),[p,N]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",j="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${j}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${j}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${l?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:l?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsxs)("span",{className:"text-gray-500",children:["SSE streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.uptime?`${Math.floor(l.uptime/3600)}h ${Math.floor(l.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 font-mono ${j}`,title:"From package.json @sleep2agi/agent-network-dashboard",children:n.DASHBOARD_VERSION})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",i?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===i.license.type?"text-green-300 bg-green-500/10 border-green-500/30":i.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),i.license.type,i.license.days_left?` \xb7 ${i.license.days_left}d left`:""]})]}),i?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[i.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[i.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.license.expires_at})]}),i.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!c.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})}),s=await e.json();x(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&d(""),setTimeout(()=>x(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),o&&(0,s.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!m||!g)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void N("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:m,new_password:g})}),t=await a.json();if(N(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}h(""),u("")}setTimeout(()=>N(""),5e3)},disabled:!m||!g,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),p&&(0,s.jsx)("div",{className:`mt-2 text-xs ${p.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:p})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,59276,e=>{"use strict";var s=e.i(12629),a=e.i(11449);let t=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",t,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/health",t,r);return{health:e||null,error:a}},"useLicense",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/license",t,{refreshInterval:6e4});return{license:e?.ok?e:null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),t,r);return{messages:i?.messages||[],error:c,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:c}=(0,s.default)(n("/api/hub/status",e),t,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:c}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),t,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:c,error:d,isLoading:o}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),t,r);return{tasks:c?.tasks||[],count:c?.count??0,source:c?.source,error:d,isLoading:o}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.104"],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,98025,e=>{"use strict";e.s(["SESSION_STATUS_CHIP_CLASS",0,{working:"bg-green-500/10 text-green-300 border-green-500/20",idle:"bg-blue-500/10 text-blue-300 border-blue-500/20",blocked:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",error:"bg-red-500/10 text-red-300 border-red-500/20",offline:"bg-gray-500/10 text-gray-500 border-gray-500/20"},"SESSION_STATUS_TEXT_CLASS",0,{working:"text-green-400",idle:"text-blue-400",blocked:"text-yellow-400",error:"text-red-400",offline:"text-gray-500"},"STATUS_BAR_CLASS",0,{created:"bg-gray-500",delivered:"bg-blue-500",acked:"bg-cyan-500",running:"bg-green-500",replied:"bg-purple-500",closed:"bg-gray-600",failed:"bg-red-500",cancelled:"bg-yellow-500",expired:"bg-orange-500"},"STATUS_CHIP_CLASS",0,{created:"bg-gray-500/10 text-gray-400 border-gray-500/20",delivered:"bg-blue-500/10 text-blue-300 border-blue-500/20",acked:"bg-cyan-500/10 text-cyan-300 border-cyan-500/20",running:"bg-green-500/10 text-green-300 border-green-500/20",replied:"bg-purple-500/10 text-purple-300 border-purple-500/20",closed:"bg-gray-500/10 text-gray-500 border-gray-500/20",failed:"bg-red-500/10 text-red-300 border-red-500/20",cancelled:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",expired:"bg-orange-500/10 text-orange-300 border-orange-500/20"},"STATUS_DOT_HEX",0,{created:"#9ca3af",delivered:"#60a5fa",acked:"#22d3ee",running:"#4ade80",replied:"#a78bfa",closed:"#6b7280",failed:"#f87171",cancelled:"#facc15",expired:"#fb923c"},"TASK_STATUSES",0,["created","delivered","acked","running","replied","closed","failed","cancelled","expired"]])},3479,59746,e=>{"use strict";function t(e){if(!e)return null;let t=Date.parse(e.includes("T")?e:e.replace(" ","T")+"Z");return Number.isFinite(t)?t:null}function r(e){let r=t(e);if(null===r)return null;let s=Math.floor((Date.now()-r)/1e3);return s<0?"just now":s<60?`${s}s ago`:s<3600?`${Math.floor(s/60)}m ago`:s<86400?`${Math.floor(s/3600)}h ago`:`${Math.floor(s/86400)}d ago`}e.s(["parseHubTime",0,t,"relativeAgo",0,r],59746),e.s(["formatUptime",0,function(e){let t=Math.floor(e/3600),r=Math.floor(e%3600/60);return t>0?`${t}h ${r}m`:`${r}m`},"previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){return r(e)??"--"}],3479)},46228,e=>{"use strict";var t=e.i(22381);let r=[180,200,220,270,300,330,30,90];function s(e){let t=0;for(let r=0;r<e.length;r++)t=31*t+e.charCodeAt(r)>>>0;let s=r[t%r.length];return{bg:`hsl(${s} 55% 22%)`,ring:`hsl(${s} 60% 45%)`,text:`hsl(${s} 80% 78%)`}}function n(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:r=28,className:i=""}){let a=s(e),l=Math.max(9,Math.round(.42*r));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${i}`,style:{width:r,height:r,fontSize:l,backgroundColor:a.bg,borderColor:a.ring,color:a.text},title:e,"aria-hidden":!0,children:n(e)})},"aliasAvatarColors",0,s,"aliasInitial",0,n])},76161,e=>{"use strict";var t=e.i(22381),r=e.i(23910),s=e.i(56839);let n={nodes:{title:"No agents in this network",sub:"Agent sessions will appear here once they connect to the CommHub."},tasks:{title:"No tasks yet",sub:"Tasks will appear here when agents send them via CommHub."},messages:{title:"No messages",sub:"Messages between agents will appear here."},logs:{title:"No audit logs",sub:"Events will appear here when users register, login, or perform actions."},tokens:{title:"No API tokens",sub:"Create one to authenticate CLI tools and external integrations."},networks:{title:"No networks found",sub:"Create one or sign in with V3 auth to see your networks."},generic:{title:"Nothing here yet",sub:"Data will appear here once available."}};function i({variant:e,size:r}){let s={width:r,height:r},n={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,t.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,t.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,t.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,t.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M14 18 h36 a3 3 0 0 1 3 3 v18 a3 3 0 0 1 -3 3 h-18 l-8 6 v-6 h-10 a3 3 0 0 1 -3 -3 v-18 a3 3 0 0 1 3 -3 z"}),(0,t.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,t.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M18 12 h22 l8 8 v32 a2 2 0 0 1 -2 2 h-28 a2 2 0 0 1 -2 -2 v-38 a2 2 0 0 1 2 -2 z"}),(0,t.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,t.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,t.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,t.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,t.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,t.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,t.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,t.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function a({variant:e="generic",title:r,sub:l,cta:o,compact:c=!1}){let d=n[e],x=r??d.title,h=l??d.sub;return(0,t.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)(i,{variant:e,size:c?40:56})}),(0,t.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(0,t.jsx)("p",{className:`text-gray-500 ${c?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:h}),o&&(0,t.jsx)("div",{className:"mt-4",children:o.href?(0,t.jsxs)(s.default,{href:o.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,t.jsxs)("button",{onClick:o.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}function l({children:e}){return(0,t.jsx)("div",{className:"max-w-2xl mx-auto rounded-xl border border-[#2a2a4a] bg-[#111128] shadow-lg shadow-black/20",children:e})}function o({cmd:e}){let[s,n]=(0,r.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1800)}catch{}};return(0,t.jsxs)("div",{className:"anet-empty-cmd flex items-center gap-2 bg-[#0a0a15] border border-[#2a2a4a] rounded-lg pl-4 pr-1.5 py-1.5 text-xs sm:text-sm",children:[(0,t.jsx)("code",{className:"text-cyan-300 font-mono select-all",children:e}),(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":s?"Copied":"Copy command",className:"shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] transition-colors",children:s?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-green-400",children:[(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M20 6 9 17l-5-5"})}),"Copied"]}):(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,t.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]})}e.s(["EmptyState",0,a,"NodesEmptyState",0,function({hint:e,taskHistoryCount:r=0}){return e?.global_count?(0,t.jsx)(l,{children:(0,t.jsx)(a,{variant:"nodes",title:"No agents in this network",sub:`Server has ${e.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`})}):r>0?(0,t.jsx)(l,{children:(0,t.jsx)(a,{variant:"nodes",title:"No agents online",sub:`Every agent in this network is currently offline. ${r.toLocaleString()} task${1===r?"":"s"} in history — they may have finished their work or disconnected.`,cta:{label:"View task history",href:"/tasks"}})}):(0,t.jsx)(l,{children:(0,t.jsxs)("div",{className:"text-center py-16 px-4",role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)("svg",{viewBox:"0 0 64 64",width:56,height:56,children:(0,t.jsxs)("g",{stroke:"currentColor",strokeWidth:"1.5",fill:"none",children:[(0,t.jsx)("rect",{x:"10",y:"20",width:"44",height:"28",rx:"2"}),(0,t.jsx)("rect",{x:"20",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"32",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"44",y:"32",width:"4",height:"8",opacity:"0.5"}),(0,t.jsx)("line",{x1:"10",y1:"26",x2:"54",y2:"26",opacity:"0.4"}),(0,t.jsx)("circle",{cx:"14",cy:"23",r:"0.8",fill:"currentColor"})]})})}),(0,t.jsx)("h3",{className:"font-medium text-gray-300 text-base",children:"Spin up your first agent"}),(0,t.jsx)("p",{className:"text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed",children:"Run this in a fresh terminal to register an agent with this CommHub:"}),(0,t.jsx)("div",{className:"mt-4 inline-block",children:(0,t.jsx)(o,{cmd:"npx --yes @sleep2agi/agent-network init"})}),(0,t.jsx)("div",{className:"mt-3",children:(0,t.jsxs)("a",{href:"https://anet.sh",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300",children:["Full quickstart guide",(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})})}])},59276,e=>{"use strict";var t=e.i(12629),r=e.i(11449);let s=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");return t.json()},n={refreshInterval:5e3,dedupingInterval:3e3};function i(e,t){if(!t)return e;let r=e.includes("?")?"&":"?";return`${e}${r}network_id=${encodeURIComponent(t)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,t.default)("/api/anet/config",s,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/health",s,n);return{health:e||null,error:r}},"useLicense",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/license",s,{refreshInterval:6e4});return{license:e?.ok?e:null,error:r}},"useMessages",0,function(e=100){let{networkId:a}=(0,r.useNetworkId)(),{data:l,error:o,isLoading:c}=(0,t.default)(i(`/api/hub/messages?limit=${e}`,a),s,n);return{messages:l?.messages||[],error:o,isLoading:c}},"useSessions",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l,isLoading:o}=(0,t.default)(i("/api/hub/status",e),s,n);return{sessions:a?.sessions||[],hint:a?._hint,error:l,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l}=(0,t.default)(i("/api/hub/stats",e),s,n);return{stats:a?.ok?a:null,error:l}},"useTasks",0,function(e){let{networkId:a}=(0,r.useNetworkId)(),l=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:c,isLoading:d}=(0,t.default)(i(`/api/hub/tasks?${l}`,a),s,n);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:c,isLoading:d}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.102"],70286)}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,98025,e=>{"use strict";e.s(["SESSION_STATUS_CHIP_CLASS",0,{working:"bg-green-500/10 text-green-300 border-green-500/20",idle:"bg-blue-500/10 text-blue-300 border-blue-500/20",blocked:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",error:"bg-red-500/10 text-red-300 border-red-500/20",offline:"bg-gray-500/10 text-gray-500 border-gray-500/20"},"SESSION_STATUS_TEXT_CLASS",0,{working:"text-green-400",idle:"text-blue-400",blocked:"text-yellow-400",error:"text-red-400",offline:"text-gray-500"},"STATUS_BAR_CLASS",0,{created:"bg-gray-500",delivered:"bg-blue-500",acked:"bg-cyan-500",running:"bg-green-500",replied:"bg-purple-500",closed:"bg-gray-600",failed:"bg-red-500",cancelled:"bg-yellow-500",expired:"bg-orange-500"},"STATUS_CHIP_CLASS",0,{created:"bg-gray-500/10 text-gray-400 border-gray-500/20",delivered:"bg-blue-500/10 text-blue-300 border-blue-500/20",acked:"bg-cyan-500/10 text-cyan-300 border-cyan-500/20",running:"bg-green-500/10 text-green-300 border-green-500/20",replied:"bg-purple-500/10 text-purple-300 border-purple-500/20",closed:"bg-gray-500/10 text-gray-500 border-gray-500/20",failed:"bg-red-500/10 text-red-300 border-red-500/20",cancelled:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",expired:"bg-orange-500/10 text-orange-300 border-orange-500/20"},"STATUS_DOT_HEX",0,{created:"#9ca3af",delivered:"#60a5fa",acked:"#22d3ee",running:"#4ade80",replied:"#a78bfa",closed:"#6b7280",failed:"#f87171",cancelled:"#facc15",expired:"#fb923c"},"TASK_STATUSES",0,["created","delivered","acked","running","replied","closed","failed","cancelled","expired"]])},3479,59746,e=>{"use strict";function t(e){if(!e)return null;let t=Date.parse(e.includes("T")?e:e.replace(" ","T")+"Z");return Number.isFinite(t)?t:null}function r(e){let r=t(e);if(null===r)return null;let s=Math.floor((Date.now()-r)/1e3);return s<0?"just now":s<60?`${s}s ago`:s<3600?`${Math.floor(s/60)}m ago`:s<86400?`${Math.floor(s/3600)}h ago`:`${Math.floor(s/86400)}d ago`}e.s(["parseHubTime",0,t,"relativeAgo",0,r],59746),e.s(["formatUptime",0,function(e){let t=Math.floor(e/3600),r=Math.floor(e%3600/60);return t>0?`${t}h ${r}m`:`${r}m`},"previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){return r(e)??"--"}],3479)},46228,e=>{"use strict";var t=e.i(22381);let r=[180,200,220,270,300,330,30,90];function s(e){let t=0;for(let r=0;r<e.length;r++)t=31*t+e.charCodeAt(r)>>>0;let s=r[t%r.length];return{bg:`hsl(${s} 55% 22%)`,ring:`hsl(${s} 60% 45%)`,text:`hsl(${s} 80% 78%)`}}function n(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:r=28,className:i=""}){let a=s(e),l=Math.max(9,Math.round(.42*r));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${i}`,style:{width:r,height:r,fontSize:l,backgroundColor:a.bg,borderColor:a.ring,color:a.text},title:e,"aria-hidden":!0,children:n(e)})},"aliasAvatarColors",0,s,"aliasInitial",0,n])},76161,e=>{"use strict";var t=e.i(22381),r=e.i(23910),s=e.i(56839);let n={nodes:{title:"No agents in this network",sub:"Agent sessions will appear here once they connect to the CommHub."},tasks:{title:"No tasks yet",sub:"Tasks will appear here when agents send them via CommHub."},messages:{title:"No messages",sub:"Messages between agents will appear here."},logs:{title:"No audit logs",sub:"Events will appear here when users register, login, or perform actions."},tokens:{title:"No API tokens",sub:"Create one to authenticate CLI tools and external integrations."},networks:{title:"No networks found",sub:"Create one or sign in with V3 auth to see your networks."},generic:{title:"Nothing here yet",sub:"Data will appear here once available."}};function i({variant:e,size:r}){let s={width:r,height:r},n={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,t.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,t.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,t.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,t.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M14 18 h36 a3 3 0 0 1 3 3 v18 a3 3 0 0 1 -3 3 h-18 l-8 6 v-6 h-10 a3 3 0 0 1 -3 -3 v-18 a3 3 0 0 1 3 -3 z"}),(0,t.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,t.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M18 12 h22 l8 8 v32 a2 2 0 0 1 -2 2 h-28 a2 2 0 0 1 -2 -2 v-38 a2 2 0 0 1 2 -2 z"}),(0,t.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,t.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,t.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,t.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,t.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,t.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,t.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,t.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function a({variant:e="generic",title:r,sub:l,cta:o,compact:c=!1}){let d=n[e],x=r??d.title,h=l??d.sub;return(0,t.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)(i,{variant:e,size:c?40:56})}),(0,t.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(0,t.jsx)("p",{className:`text-gray-500 ${c?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:h}),o&&(0,t.jsx)("div",{className:"mt-4",children:o.href?(0,t.jsxs)(s.default,{href:o.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,t.jsxs)("button",{onClick:o.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}function l({children:e}){return(0,t.jsx)("div",{className:"max-w-2xl mx-auto rounded-xl border border-[#2a2a4a] bg-[#111128] shadow-lg shadow-black/20",children:e})}function o({cmd:e}){let[s,n]=(0,r.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1800)}catch{}};return(0,t.jsxs)("div",{className:"anet-empty-cmd flex items-center gap-2 bg-[#0a0a15] border border-[#2a2a4a] rounded-lg pl-4 pr-1.5 py-1.5 text-xs sm:text-sm",children:[(0,t.jsx)("code",{className:"text-cyan-300 font-mono select-all",children:e}),(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":s?"Copied":"Copy command",className:"shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] transition-colors",children:s?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-green-400",children:[(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M20 6 9 17l-5-5"})}),"Copied"]}):(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,t.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]})}e.s(["EmptyState",0,a,"NodesEmptyState",0,function({hint:e,taskHistoryCount:r=0}){return e?.global_count?(0,t.jsx)(l,{children:(0,t.jsx)(a,{variant:"nodes",title:"No agents in this network",sub:`Server has ${e.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`})}):r>0?(0,t.jsx)(l,{children:(0,t.jsx)(a,{variant:"nodes",title:"No agents online",sub:`Every agent in this network is currently offline. ${r.toLocaleString()} task${1===r?"":"s"} in history — they may have finished their work or disconnected.`,cta:{label:"View task history",href:"/tasks"}})}):(0,t.jsx)(l,{children:(0,t.jsxs)("div",{className:"text-center py-16 px-4",role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)("svg",{viewBox:"0 0 64 64",width:56,height:56,children:(0,t.jsxs)("g",{stroke:"currentColor",strokeWidth:"1.5",fill:"none",children:[(0,t.jsx)("rect",{x:"10",y:"20",width:"44",height:"28",rx:"2"}),(0,t.jsx)("rect",{x:"20",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"32",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"44",y:"32",width:"4",height:"8",opacity:"0.5"}),(0,t.jsx)("line",{x1:"10",y1:"26",x2:"54",y2:"26",opacity:"0.4"}),(0,t.jsx)("circle",{cx:"14",cy:"23",r:"0.8",fill:"currentColor"})]})})}),(0,t.jsx)("h3",{className:"font-medium text-gray-300 text-base",children:"Spin up your first agent"}),(0,t.jsx)("p",{className:"text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed",children:"Run this in a fresh terminal to register an agent with this CommHub:"}),(0,t.jsx)("div",{className:"mt-4 inline-block",children:(0,t.jsx)(o,{cmd:"npx --yes @sleep2agi/agent-network init"})}),(0,t.jsx)("div",{className:"mt-3",children:(0,t.jsxs)("a",{href:"https://anet.sh",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300",children:["Full quickstart guide",(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})})}])},59276,e=>{"use strict";var t=e.i(12629),r=e.i(11449);let s=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");return t.json()},n={refreshInterval:5e3,dedupingInterval:3e3};function i(e,t){if(!t)return e;let r=e.includes("?")?"&":"?";return`${e}${r}network_id=${encodeURIComponent(t)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,t.default)("/api/anet/config",s,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/health",s,n);return{health:e||null,error:r}},"useLicense",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/license",s,{refreshInterval:6e4});return{license:e?.ok?e:null,error:r}},"useMessages",0,function(e=100){let{networkId:a}=(0,r.useNetworkId)(),{data:l,error:o,isLoading:c}=(0,t.default)(i(`/api/hub/messages?limit=${e}`,a),s,n);return{messages:l?.messages||[],error:o,isLoading:c}},"useSessions",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l,isLoading:o}=(0,t.default)(i("/api/hub/status",e),s,n);return{sessions:a?.sessions||[],hint:a?._hint,error:l,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l}=(0,t.default)(i("/api/hub/stats",e),s,n);return{stats:a?.ok?a:null,error:l}},"useTasks",0,function(e){let{networkId:a}=(0,r.useNetworkId)(),l=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:c,isLoading:d}=(0,t.default)(i(`/api/hub/tasks?${l}`,a),s,n);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:c,isLoading:d}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.104"],70286)}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":253,"timestamp":232029197070,"id":4,"parentId":1,"tags":{},"startTime":1779040001443,"traceId":"505f76e164721f8e"},{"name":"load-custom-routes","duration":638,"timestamp":232029197504,"id":5,"parentId":1,"tags":{},"startTime":1779040001444,"traceId":"505f76e164721f8e"},{"name":"create-dist-dir","duration":844,"timestamp":232029198189,"id":6,"parentId":1,"tags":{},"startTime":1779040001444,"traceId":"505f76e164721f8e"},{"name":"clean","duration":30913,"timestamp":232029199665,"id":7,"parentId":1,"tags":{},"startTime":1779040001446,"traceId":"505f76e164721f8e"},{"name":"discover-routes","duration":10140,"timestamp":232029322159,"id":8,"parentId":1,"tags":{},"startTime":1779040001568,"traceId":"505f76e164721f8e"},{"name":"create-root-mapping","duration":109,"timestamp":232029332361,"id":9,"parentId":1,"tags":{},"startTime":1779040001579,"traceId":"505f76e164721f8e"},{"name":"generate-route-types","duration":35093,"timestamp":232029335103,"id":10,"parentId":1,"tags":{},"startTime":1779040001581,"traceId":"505f76e164721f8e"},{"name":"public-dir-conflict-check","duration":124,"timestamp":232029370310,"id":11,"parentId":1,"tags":{},"startTime":1779040001617,"traceId":"505f76e164721f8e"},{"name":"generate-routes-manifest","duration":4981,"timestamp":232029370602,"id":12,"parentId":1,"tags":{},"startTime":1779040001617,"traceId":"505f76e164721f8e"},{"name":"run-turbopack","duration":5977063,"timestamp":232029381154,"id":14,"parentId":1,"tags":{},"startTime":1779040001627,"traceId":"505f76e164721f8e"},{"name":"turbopack-build-events","duration":100,"timestamp":232029704821,"id":15,"parentId":1,"tags":{},"startTime":1779040001951,"traceId":"505f76e164721f8e"},{"name":"run-typescript","duration":9692367,"timestamp":232035367495,"id":16,"parentId":1,"tags":{},"startTime":1779040007614,"traceId":"505f76e164721f8e"},{"name":"generate-required-server-files","duration":2935,"timestamp":232045060982,"id":18,"parentId":1,"tags":{},"startTime":1779040017307,"traceId":"505f76e164721f8e"},{"name":"check-static-error-page","duration":17686,"timestamp":232045261600,"id":20,"parentId":19,"tags":{},"startTime":1779040017508,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":491721,"timestamp":232045283726,"id":65,"parentId":22,"tags":{},"startTime":1779040017530,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":510563,"timestamp":232045265046,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779040017511,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":572158,"timestamp":232045284123,"id":68,"parentId":27,"tags":{},"startTime":1779040017530,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":587788,"timestamp":232045268605,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779040017515,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":589503,"timestamp":232045284696,"id":72,"parentId":32,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":603973,"timestamp":232045270314,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779040017517,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":604118,"timestamp":232045284868,"id":73,"parentId":33,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":617922,"timestamp":232045271157,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779040017517,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":613426,"timestamp":232045284635,"id":71,"parentId":30,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":628654,"timestamp":232045269483,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779040017516,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":619331,"timestamp":232045283991,"id":67,"parentId":26,"tags":{},"startTime":1779040017530,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":634911,"timestamp":232045268482,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779040017515,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":623133,"timestamp":232045284951,"id":74,"parentId":34,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":636845,"timestamp":232045271310,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779040017518,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":624003,"timestamp":232045285042,"id":77,"parentId":37,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":636918,"timestamp":232045272178,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779040017518,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":628597,"timestamp":232045283333,"id":64,"parentId":21,"tags":{},"startTime":1779040017530,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":648666,"timestamp":232045263311,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779040017510,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":628605,"timestamp":232045285060,"id":78,"parentId":38,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":641391,"timestamp":232045272314,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779040017519,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":633450,"timestamp":232045285088,"id":80,"parentId":40,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":646078,"timestamp":232045272501,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779040017519,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":643418,"timestamp":232045284219,"id":69,"parentId":28,"tags":{},"startTime":1779040017530,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":658955,"timestamp":232045268728,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779040017515,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":648753,"timestamp":232045284982,"id":75,"parentId":35,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":662330,"timestamp":232045271451,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779040017518,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":649636,"timestamp":232045284480,"id":70,"parentId":29,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":665195,"timestamp":232045268963,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779040017515,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":649862,"timestamp":232045285101,"id":81,"parentId":42,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":662148,"timestamp":232045272885,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779040017519,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":654905,"timestamp":232045284998,"id":76,"parentId":36,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":667965,"timestamp":232045271979,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779040017518,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":654946,"timestamp":232045285148,"id":85,"parentId":47,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":666214,"timestamp":232045273915,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779040017520,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":660840,"timestamp":232045283882,"id":66,"parentId":25,"tags":{},"startTime":1779040017530,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":676464,"timestamp":232045268313,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779040017515,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":661784,"timestamp":232045285158,"id":86,"parentId":48,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":672932,"timestamp":232045274051,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779040017520,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":664632,"timestamp":232045285184,"id":88,"parentId":50,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":674042,"timestamp":232045275835,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779040017522,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":664923,"timestamp":232045285123,"id":83,"parentId":45,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":676482,"timestamp":232045273600,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779040017520,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":667900,"timestamp":232045285170,"id":87,"parentId":49,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":677427,"timestamp":232045275689,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779040017522,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":664652,"timestamp":232045290290,"id":91,"parentId":31,"tags":{},"startTime":1779040017537,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":685040,"timestamp":232045269945,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779040017516,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":672832,"timestamp":232045285111,"id":82,"parentId":44,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":684569,"timestamp":232045273412,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779040017520,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":668153,"timestamp":232045291174,"id":92,"parentId":41,"tags":{},"startTime":1779040017537,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":686788,"timestamp":232045272579,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779040017519,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":667012,"timestamp":232045292472,"id":93,"parentId":43,"tags":{},"startTime":1779040017539,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":686413,"timestamp":232045273096,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779040017519,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":676995,"timestamp":232045285192,"id":89,"parentId":51,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":686270,"timestamp":232045275960,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779040017522,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":677118,"timestamp":232045289115,"id":90,"parentId":24,"tags":{},"startTime":1779040017535,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":700668,"timestamp":232045265603,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779040017512,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":692021,"timestamp":232045285135,"id":84,"parentId":46,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":703525,"timestamp":232045273676,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779040017520,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":723654,"timestamp":232045285071,"id":79,"parentId":39,"tags":{},"startTime":1779040017531,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":736389,"timestamp":232045272421,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779040017519,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":716124,"timestamp":232045302031,"id":97,"parentId":54,"tags":{},"startTime":1779040017548,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":741505,"timestamp":232045276729,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779040017523,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":721673,"timestamp":232045302187,"id":101,"parentId":59,"tags":{},"startTime":1779040017548,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":745668,"timestamp":232045278251,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779040017525,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":726153,"timestamp":232045301984,"id":95,"parentId":52,"tags":{},"startTime":1779040017548,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":751844,"timestamp":232045276369,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779040017523,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":726369,"timestamp":232045302015,"id":96,"parentId":53,"tags":{},"startTime":1779040017548,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":751869,"timestamp":232045276549,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779040017523,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":728449,"timestamp":232045302205,"id":102,"parentId":61,"tags":{},"startTime":1779040017548,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":752012,"timestamp":232045278704,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779040017525,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":731775,"timestamp":232045302067,"id":100,"parentId":58,"tags":{},"startTime":1779040017548,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":755869,"timestamp":232045278038,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779040017524,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":733838,"timestamp":232045302234,"id":104,"parentId":63,"tags":{},"startTime":1779040017549,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":757076,"timestamp":232045279036,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779040017525,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":716266,"timestamp":232045321228,"id":105,"parentId":57,"tags":{},"startTime":1779040017568,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":760086,"timestamp":232045277443,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779040017524,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":737875,"timestamp":232045302219,"id":103,"parentId":62,"tags":{},"startTime":1779040017548,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":761262,"timestamp":232045278863,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779040017525,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":711275,"timestamp":232045330324,"id":106,"parentId":60,"tags":{},"startTime":1779040017577,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":763234,"timestamp":232045278393,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779040017525,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":741346,"timestamp":232045301956,"id":94,"parentId":23,"tags":{},"startTime":1779040017548,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":777993,"timestamp":232045265337,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779040017512,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":753176,"timestamp":232045302054,"id":99,"parentId":56,"tags":{},"startTime":1779040017548,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":778079,"timestamp":232045277191,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779040017523,"traceId":"505f76e164721f8e"},{"name":"is-page-static","duration":767882,"timestamp":232045302041,"id":98,"parentId":55,"tags":{},"startTime":1779040017548,"traceId":"505f76e164721f8e"},{"name":"check-page","duration":793002,"timestamp":232045276963,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779040017523,"traceId":"505f76e164721f8e"},{"name":"static-check","duration":810104,"timestamp":232045259928,"id":19,"parentId":1,"tags":{},"startTime":1779040017506,"traceId":"505f76e164721f8e"}]
2
- [{"name":"write-routes-manifest","duration":580,"timestamp":232046082104,"id":108,"parentId":1,"tags":{},"startTime":1779040018328,"traceId":"505f76e164721f8e"},{"name":"load-dotenv","duration":60,"timestamp":232046096319,"id":111,"parentId":110,"tags":{},"startTime":1779040018343,"traceId":"505f76e164721f8e"},{"name":"run-export-path-map","duration":1099,"timestamp":232046099656,"id":112,"parentId":110,"tags":{},"startTime":1779040018346,"traceId":"505f76e164721f8e"},{"name":"next-export","duration":565793,"timestamp":232046094465,"id":110,"parentId":1,"tags":{},"startTime":1779040018341,"traceId":"505f76e164721f8e"},{"name":"move-exported-app-not-found-","duration":545,"timestamp":232046663367,"id":113,"parentId":109,"tags":{},"startTime":1779040018910,"traceId":"505f76e164721f8e"},{"name":"move-exported-app-global-error-","duration":415,"timestamp":232046664040,"id":114,"parentId":109,"tags":{},"startTime":1779040018910,"traceId":"505f76e164721f8e"},{"name":"static-generation","duration":579968,"timestamp":232046086544,"id":109,"parentId":1,"tags":{},"startTime":1779040018333,"traceId":"505f76e164721f8e"},{"name":"write-routes-manifest","duration":604,"timestamp":232046666738,"id":115,"parentId":1,"tags":{},"startTime":1779040018913,"traceId":"505f76e164721f8e"},{"name":"print-tree-view","duration":3761,"timestamp":232046687768,"id":116,"parentId":1,"tags":{},"startTime":1779040018934,"traceId":"505f76e164721f8e"},{"name":"write-route-bundle-stats","duration":11098,"timestamp":232046691560,"id":117,"parentId":1,"tags":{},"startTime":1779040018938,"traceId":"505f76e164721f8e"},{"name":"telemetry-flush","duration":26921,"timestamp":232046702684,"id":118,"parentId":1,"tags":{},"startTime":1779040018949,"traceId":"505f76e164721f8e"},{"name":"next-build","duration":17583827,"timestamp":232029145806,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779040001392,"traceId":"505f76e164721f8e"}]
1
+ [{"name":"generate-buildid","duration":262,"timestamp":232579066567,"id":4,"parentId":1,"tags":{},"startTime":1779040551313,"traceId":"b17f07472ec2cfb7"},{"name":"load-custom-routes","duration":603,"timestamp":232579067026,"id":5,"parentId":1,"tags":{},"startTime":1779040551313,"traceId":"b17f07472ec2cfb7"},{"name":"create-dist-dir","duration":903,"timestamp":232579067691,"id":6,"parentId":1,"tags":{},"startTime":1779040551314,"traceId":"b17f07472ec2cfb7"},{"name":"clean","duration":34866,"timestamp":232579069496,"id":7,"parentId":1,"tags":{},"startTime":1779040551316,"traceId":"b17f07472ec2cfb7"},{"name":"discover-routes","duration":15318,"timestamp":232579187043,"id":8,"parentId":1,"tags":{},"startTime":1779040551433,"traceId":"b17f07472ec2cfb7"},{"name":"create-root-mapping","duration":154,"timestamp":232579202435,"id":9,"parentId":1,"tags":{},"startTime":1779040551449,"traceId":"b17f07472ec2cfb7"},{"name":"generate-route-types","duration":34682,"timestamp":232579205582,"id":10,"parentId":1,"tags":{},"startTime":1779040551452,"traceId":"b17f07472ec2cfb7"},{"name":"public-dir-conflict-check","duration":103,"timestamp":232579240355,"id":11,"parentId":1,"tags":{},"startTime":1779040551487,"traceId":"b17f07472ec2cfb7"},{"name":"generate-routes-manifest","duration":5464,"timestamp":232579240567,"id":12,"parentId":1,"tags":{},"startTime":1779040551487,"traceId":"b17f07472ec2cfb7"},{"name":"run-turbopack","duration":6087335,"timestamp":232579252303,"id":14,"parentId":1,"tags":{},"startTime":1779040551499,"traceId":"b17f07472ec2cfb7"},{"name":"turbopack-build-events","duration":73,"timestamp":232579551311,"id":15,"parentId":1,"tags":{},"startTime":1779040551798,"traceId":"b17f07472ec2cfb7"},{"name":"run-typescript","duration":9675616,"timestamp":232585347864,"id":16,"parentId":1,"tags":{},"startTime":1779040557594,"traceId":"b17f07472ec2cfb7"},{"name":"generate-required-server-files","duration":2322,"timestamp":232595024822,"id":18,"parentId":1,"tags":{},"startTime":1779040567271,"traceId":"b17f07472ec2cfb7"},{"name":"check-static-error-page","duration":16803,"timestamp":232595201974,"id":20,"parentId":19,"tags":{},"startTime":1779040567448,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":422927,"timestamp":232595221995,"id":65,"parentId":22,"tags":{},"startTime":1779040567468,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":439697,"timestamp":232595205430,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779040567452,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":518432,"timestamp":232595222350,"id":69,"parentId":28,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":533516,"timestamp":232595209213,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779040567455,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":526960,"timestamp":232595222795,"id":72,"parentId":32,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":539836,"timestamp":232595209991,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779040567456,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":561103,"timestamp":232595222725,"id":71,"parentId":30,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":574400,"timestamp":232595209530,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779040567456,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":569592,"timestamp":232595222982,"id":73,"parentId":33,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":582494,"timestamp":232595210162,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779040567456,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":573211,"timestamp":232595222144,"id":66,"parentId":25,"tags":{},"startTime":1779040567468,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":586716,"timestamp":232595208706,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779040567455,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":584989,"timestamp":232595223082,"id":74,"parentId":34,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":597674,"timestamp":232595210480,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779040567457,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":585236,"timestamp":232595223120,"id":75,"parentId":35,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":597749,"timestamp":232595210652,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779040567457,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":591277,"timestamp":232595222283,"id":68,"parentId":27,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":604561,"timestamp":232595209061,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779040567455,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":596436,"timestamp":232595222214,"id":67,"parentId":26,"tags":{},"startTime":1779040567468,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":609810,"timestamp":232595208898,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779040567455,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":595709,"timestamp":232595223200,"id":79,"parentId":39,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":607285,"timestamp":232595211663,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779040567458,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":599138,"timestamp":232595223185,"id":78,"parentId":38,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":610815,"timestamp":232595211550,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779040567458,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":605394,"timestamp":232595223234,"id":82,"parentId":44,"tags":{},"startTime":1779040567470,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":615995,"timestamp":232595212676,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779040567459,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":607084,"timestamp":232595223142,"id":76,"parentId":36,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":619062,"timestamp":232595211204,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779040567457,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":607177,"timestamp":232595223213,"id":80,"parentId":40,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":618632,"timestamp":232595211784,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779040567458,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":610748,"timestamp":232595223248,"id":83,"parentId":45,"tags":{},"startTime":1779040567470,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":621232,"timestamp":232595212823,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779040567459,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":611578,"timestamp":232595223171,"id":77,"parentId":37,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":623406,"timestamp":232595211398,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779040567458,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":614444,"timestamp":232595223287,"id":86,"parentId":48,"tags":{},"startTime":1779040567470,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":623175,"timestamp":232595214598,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779040567461,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":631341,"timestamp":232595221690,"id":64,"parentId":21,"tags":{},"startTime":1779040567468,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":649331,"timestamp":232595203765,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779040567450,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":630004,"timestamp":232595223302,"id":87,"parentId":49,"tags":{},"startTime":1779040567470,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":638648,"timestamp":232595214701,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779040567461,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":630216,"timestamp":232595223264,"id":84,"parentId":46,"tags":{},"startTime":1779040567470,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":640538,"timestamp":232595212972,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779040567459,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":631073,"timestamp":232595222567,"id":70,"parentId":29,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":644312,"timestamp":232595209357,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779040567456,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":630713,"timestamp":232595223273,"id":85,"parentId":47,"tags":{},"startTime":1779040567470,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":639567,"timestamp":232595214469,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779040567461,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":633450,"timestamp":232595228642,"id":91,"parentId":31,"tags":{},"startTime":1779040567475,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":652463,"timestamp":232595209672,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779040567456,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":639406,"timestamp":232595223222,"id":81,"parentId":42,"tags":{},"startTime":1779040567469,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":650493,"timestamp":232595212193,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779040567458,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":632185,"timestamp":232595230929,"id":93,"parentId":43,"tags":{},"startTime":1779040567477,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":650805,"timestamp":232595212352,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779040567459,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":638032,"timestamp":232595227450,"id":90,"parentId":24,"tags":{},"startTime":1779040567474,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":659471,"timestamp":232595206048,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779040567452,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":645215,"timestamp":232595223311,"id":88,"parentId":50,"tags":{},"startTime":1779040567470,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":653796,"timestamp":232595214774,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779040567461,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":651047,"timestamp":232595229523,"id":92,"parentId":41,"tags":{},"startTime":1779040567476,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":668706,"timestamp":232595211918,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779040567458,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":707855,"timestamp":232595223325,"id":89,"parentId":51,"tags":{},"startTime":1779040567470,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":716402,"timestamp":232595214874,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779040567461,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":702907,"timestamp":232595233689,"id":98,"parentId":55,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":720767,"timestamp":232595215891,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779040567462,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":705568,"timestamp":232595233716,"id":100,"parentId":58,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":722304,"timestamp":232595217025,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779040567463,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":713229,"timestamp":232595233612,"id":94,"parentId":23,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":741186,"timestamp":232595205746,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779040567452,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":713285,"timestamp":232595233861,"id":101,"parentId":59,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":729939,"timestamp":232595217247,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779040567464,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":713675,"timestamp":232595233661,"id":96,"parentId":53,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":731892,"timestamp":232595215480,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779040567462,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":714829,"timestamp":232595233643,"id":95,"parentId":52,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":733220,"timestamp":232595215293,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779040567462,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":715052,"timestamp":232595233885,"id":102,"parentId":61,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":730908,"timestamp":232595218069,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779040567464,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":718430,"timestamp":232595233704,"id":99,"parentId":56,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":736021,"timestamp":232595216154,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779040567462,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":720356,"timestamp":232595233673,"id":97,"parentId":54,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":738418,"timestamp":232595215653,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779040567462,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":712889,"timestamp":232595241568,"id":105,"parentId":60,"tags":{},"startTime":1779040567488,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":737043,"timestamp":232595217447,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779040567464,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":701534,"timestamp":232595253711,"id":106,"parentId":57,"tags":{},"startTime":1779040567500,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":738847,"timestamp":232595216423,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779040567463,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":721413,"timestamp":232595233911,"id":104,"parentId":63,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":736831,"timestamp":232595218509,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779040567465,"traceId":"b17f07472ec2cfb7"},{"name":"is-page-static","duration":727586,"timestamp":232595233900,"id":103,"parentId":62,"tags":{},"startTime":1779040567480,"traceId":"b17f07472ec2cfb7"},{"name":"check-page","duration":743177,"timestamp":232595218342,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779040567465,"traceId":"b17f07472ec2cfb7"},{"name":"static-check","duration":760756,"timestamp":232595200798,"id":19,"parentId":1,"tags":{},"startTime":1779040567447,"traceId":"b17f07472ec2cfb7"}]
2
+ [{"name":"write-routes-manifest","duration":570,"timestamp":232595971697,"id":108,"parentId":1,"tags":{},"startTime":1779040568218,"traceId":"b17f07472ec2cfb7"},{"name":"load-dotenv","duration":50,"timestamp":232595983710,"id":111,"parentId":110,"tags":{},"startTime":1779040568230,"traceId":"b17f07472ec2cfb7"},{"name":"run-export-path-map","duration":506,"timestamp":232595987155,"id":112,"parentId":110,"tags":{},"startTime":1779040568233,"traceId":"b17f07472ec2cfb7"},{"name":"next-export","duration":577190,"timestamp":232595982466,"id":110,"parentId":1,"tags":{},"startTime":1779040568229,"traceId":"b17f07472ec2cfb7"},{"name":"move-exported-app-not-found-","duration":503,"timestamp":232596562950,"id":113,"parentId":109,"tags":{},"startTime":1779040568809,"traceId":"b17f07472ec2cfb7"},{"name":"move-exported-app-global-error-","duration":406,"timestamp":232596563541,"id":114,"parentId":109,"tags":{},"startTime":1779040568810,"traceId":"b17f07472ec2cfb7"},{"name":"static-generation","duration":589799,"timestamp":232595976334,"id":109,"parentId":1,"tags":{},"startTime":1779040568223,"traceId":"b17f07472ec2cfb7"},{"name":"write-routes-manifest","duration":364,"timestamp":232596566378,"id":115,"parentId":1,"tags":{},"startTime":1779040568813,"traceId":"b17f07472ec2cfb7"},{"name":"print-tree-view","duration":3916,"timestamp":232596575254,"id":116,"parentId":1,"tags":{},"startTime":1779040568822,"traceId":"b17f07472ec2cfb7"},{"name":"write-route-bundle-stats","duration":17259,"timestamp":232596579206,"id":117,"parentId":1,"tags":{},"startTime":1779040568825,"traceId":"b17f07472ec2cfb7"},{"name":"telemetry-flush","duration":31331,"timestamp":232596596492,"id":118,"parentId":1,"tags":{},"startTime":1779040568843,"traceId":"b17f07472ec2cfb7"},{"name":"next-build","duration":17613621,"timestamp":232579014257,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779040551261,"traceId":"b17f07472ec2cfb7"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5977063,"timestamp":232029381154,"id":14,"parentId":1,"tags":{},"startTime":1779040001627,"traceId":"505f76e164721f8e"},{"name":"turbopack-build-events","duration":100,"timestamp":232029704821,"id":15,"parentId":1,"tags":{},"startTime":1779040001951,"traceId":"505f76e164721f8e"},{"name":"run-typescript","duration":9692367,"timestamp":232035367495,"id":16,"parentId":1,"tags":{},"startTime":1779040007614,"traceId":"505f76e164721f8e"},{"name":"static-check","duration":810104,"timestamp":232045259928,"id":19,"parentId":1,"tags":{},"startTime":1779040017506,"traceId":"505f76e164721f8e"},{"name":"static-generation","duration":579968,"timestamp":232046086544,"id":109,"parentId":1,"tags":{},"startTime":1779040018333,"traceId":"505f76e164721f8e"},{"name":"telemetry-flush","duration":26921,"timestamp":232046702684,"id":118,"parentId":1,"tags":{},"startTime":1779040018949,"traceId":"505f76e164721f8e"},{"name":"next-build","duration":17583827,"timestamp":232029145806,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779040001392,"traceId":"505f76e164721f8e"}]
1
+ [{"name":"run-turbopack","duration":6087335,"timestamp":232579252303,"id":14,"parentId":1,"tags":{},"startTime":1779040551499,"traceId":"b17f07472ec2cfb7"},{"name":"turbopack-build-events","duration":73,"timestamp":232579551311,"id":15,"parentId":1,"tags":{},"startTime":1779040551798,"traceId":"b17f07472ec2cfb7"},{"name":"run-typescript","duration":9675616,"timestamp":232585347864,"id":16,"parentId":1,"tags":{},"startTime":1779040557594,"traceId":"b17f07472ec2cfb7"},{"name":"static-check","duration":760756,"timestamp":232595200798,"id":19,"parentId":1,"tags":{},"startTime":1779040567447,"traceId":"b17f07472ec2cfb7"},{"name":"static-generation","duration":589799,"timestamp":232595976334,"id":109,"parentId":1,"tags":{},"startTime":1779040568223,"traceId":"b17f07472ec2cfb7"},{"name":"telemetry-flush","duration":31331,"timestamp":232596596492,"id":118,"parentId":1,"tags":{},"startTime":1779040568843,"traceId":"b17f07472ec2cfb7"},{"name":"next-build","duration":17613621,"timestamp":232579014257,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779040551261,"traceId":"b17f07472ec2cfb7"}]
@@ -10622,7 +10622,47 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
10622
10622
  below closes the panel-pair symmetry. */
10623
10623
  letterSpacing={hoveredPanel === 'recent' ? '0.4' : '0.2'}
10624
10624
  data-recent-panel-count-letter-spacing={hoveredPanel === 'recent' ? '0.4' : '0.2'}
10625
- style={{ transition: 'letter-spacing 200ms ease-out' }}
10625
+ data-recent-panel-count-brightness={hoveredPanel === 'recent' ? '1.15' : '1'}
10626
+ style={{
10627
+ /* R589 — recent-signal panel count <text> root gains
10628
+ brightness(1.15) on hoveredPanel === 'recent'.
10629
+ 28th anchor in per-element brightness family.
10630
+ Sibling to R588 at the legend panel; closes
10631
+ panel-pair brightness symmetry at the header-
10632
+ count scope.
10633
+
10634
+ Panel-pair title↔count brightness parity now
10635
+ complete:
10636
+ legend title pinnedStatus gate (R571 family)
10637
+ legend count hoveredPanel gate (R588)
10638
+ recent title activeEdgeKey gate (R571 family)
10639
+ recent count hoveredPanel gate (R589) ← this round
10640
+
10641
+ All 4 panel-header text elements respond on the
10642
+ brightness axis — full symmetric closure.
10643
+
10644
+ Recent-signal panel count hover signature now
10645
+ 3 axes (mirrors R588 legend count closure):
10646
+ R311/R424 fontWeight 600 → 700
10647
+ R349/R566 letter-spacing 0.2 → 0.4
10648
+ R589 brightness 1 → 1.15 ← this round
10649
+
10650
+ Filter applied at <text> root (the parent here);
10651
+ the nested fw-changing tspan inherits the lift
10652
+ via SVG inheritance — unlike applying to tspan
10653
+ directly, which is unreliable cross-browser.
10654
+
10655
+ The R162 freshness-tinted fill (cyan/teal alpha
10656
+ 1.0 → 0.30 by ageSec) gets the +15% multiplied
10657
+ in — fresh data (alpha=1) reads dramatically
10658
+ brighter on hover; stale data (alpha=0.30) gets
10659
+ a proportionally smaller absolute lift. Hover
10660
+ brightness is freshness-amplifying at this
10661
+ surface — coherent with the panel's "freshness
10662
+ is the primary signal" semantic. */
10663
+ filter: hoveredPanel === 'recent' ? 'brightness(1.15)' : undefined,
10664
+ transition: 'letter-spacing 200ms ease-out, filter 200ms ease-out',
10665
+ }}
10626
10666
  >
10627
10667
  {/* Round 225 / Loop: tabular-nums on the panel-header
10628
10668
  flow-count tspan. The "{N} flows" string lives in
@@ -12724,9 +12764,40 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
12724
12764
  resolved value for tests. */
12725
12765
  data-legend-count-letter-spacing={isPinned ? '0.5px' : hoveredStatus === row.key ? '0.25px' : '0px'}
12726
12766
  data-legend-count-transition="200ms"
12767
+ /* R590 — legend-row count gains filter brightness(1.15)
12768
+ on hover/pin. 29th anchor in per-element brightness
12769
+ family. Closes legend-row label↔count brightness
12770
+ parity within each row:
12771
+ legend label (R572, 10th anchor — stacks w/ DS)
12772
+ legend count (R590 ← this round, plain brightness)
12773
+ Plain brightness (no DS stack) because the count
12774
+ has its own multi-axis hover signature already
12775
+ (opacity 0.65 → 1.0, fill neutral → row.fill tier
12776
+ color, fw 600 → 700 on pin, letter-spacing 3-tier)
12777
+ — adding brightness amplifies the tier-color fill
12778
+ to its hover-locked brightest possible.
12779
+ Triple multiplicative interaction: opacity 1.0 ×
12780
+ tier-color fill × brightness(1.15) — the count
12781
+ reads as confidently "this is the active tier".
12782
+ Existing transition list extends with 'filter
12783
+ 200ms ease-out' matching the existing 200ms
12784
+ cadence across opacity / fill / fw / letter-
12785
+ spacing.
12786
+ Legend-row scope now has parity with recent-row:
12787
+ both row text and count surfaces brighten +15%
12788
+ on row inspection. Recent-row count INHERITS its
12789
+ brightness via the parent <text>'s R572 filter
12790
+ (single ancestor filter covers all child tspans);
12791
+ legend-row count is a sibling <text> so it needs
12792
+ its OWN filter — R590 supplies that.
12793
+ data-legend-count-brightness attr exposes gate. */
12794
+ data-legend-count-brightness={(hoveredStatus === row.key || isPinned) ? '1.15' : '1'}
12727
12795
  style={{
12728
12796
  pointerEvents: 'none',
12729
- transition: 'opacity 200ms ease-out, fill 200ms ease-out, font-weight 200ms ease-out, letter-spacing 200ms ease-out',
12797
+ filter: (hoveredStatus === row.key || isPinned)
12798
+ ? 'brightness(1.15)'
12799
+ : undefined,
12800
+ transition: 'opacity 200ms ease-out, fill 200ms ease-out, font-weight 200ms ease-out, letter-spacing 200ms ease-out, filter 200ms ease-out',
12730
12801
  fontVariantNumeric: 'tabular-nums',
12731
12802
  letterSpacing: isPinned ? '0.5px' :
12732
12803
  hoveredStatus === row.key ? '0.25px' : '0px',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.102",
3
+ "version": "0.5.3-preview.104",
4
4
  "description": "Agent Network Dashboard \u2014 Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,85 @@
1
+ /* Round 590 verification: legend-row count <text> gains
2
+ * filter brightness(1.15) on (hoveredStatus===row.key ||
3
+ * isPinned). 29th anchor in per-element brightness family.
4
+ * Closes legend-row label↔count brightness parity.
5
+ *
6
+ * Test phases:
7
+ * 1. mock nodes → legend rows render (working/idle/offline)
8
+ * 2. rest: filter='none', brightness-attr='1'
9
+ * 3. transition-property contains 'filter'
10
+ * 4. source: filter conditional + data-attr + transition extension
11
+ */
12
+ import { chromium } from 'playwright';
13
+ import { readFileSync } from 'node:fs';
14
+
15
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
16
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
17
+
18
+ const browser = await chromium.launch({ headless: true });
19
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
20
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
21
+ await ctx.addInitScript(() => {
22
+ try {
23
+ localStorage.setItem('anet-theme', 'cyber');
24
+ localStorage.setItem('anet-topo-layout', 'ring');
25
+ sessionStorage.setItem('anet_v3_auth', '1');
26
+ } catch {}
27
+ });
28
+ await ctx.route('**/api/hub/status*', async (route) => {
29
+ const r = await route.fetch();
30
+ const b = await r.json();
31
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
32
+ const mk = (alias) => ({
33
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
34
+ network_id: nid, project_dir: null,
35
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
36
+ });
37
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
38
+ });
39
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
40
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
41
+ const page = await ctx.newPage();
42
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
43
+ await page.waitForSelector('[data-legend-count-brightness]', { timeout: 15000, state: 'attached' });
44
+ await page.waitForTimeout(500);
45
+
46
+ const rest = await page.evaluate(() => {
47
+ const els = document.querySelectorAll('[data-legend-count-brightness]');
48
+ if (!els.length) return null;
49
+ const el = els[0];
50
+ const cs = getComputedStyle(el);
51
+ return {
52
+ count: els.length,
53
+ filter: cs.filter,
54
+ transitionProperty: cs.transitionProperty,
55
+ brightnessAttr: el.getAttribute('data-legend-count-brightness'),
56
+ pinnedAttr: el.getAttribute('data-legend-count-pinned'),
57
+ fillAttr: el.getAttribute('data-legend-count-fill'),
58
+ textContent: el.textContent,
59
+ };
60
+ });
61
+
62
+ await browser.close();
63
+
64
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
65
+ const sourceFilter = /filter: \(hoveredStatus === row\.key \|\| isPinned\)\s*\?\s*'brightness\(1\.15\)'\s*:\s*undefined/.test(src);
66
+ const sourceAttr = /data-legend-count-brightness=\{\(hoveredStatus === row\.key \|\| isPinned\) \? '1\.15' : '1'\}/.test(src);
67
+ const sourceTransition = /transition: 'opacity 200ms ease-out, fill 200ms ease-out, font-weight 200ms ease-out, letter-spacing 200ms ease-out, filter 200ms ease-out'/.test(src);
68
+
69
+ const results = {
70
+ count_present: !!rest,
71
+ count_ge_3: (rest?.count ?? 0) >= 3, // working/idle/offline rows
72
+ rest_filter_none: rest?.filter === 'none',
73
+ rest_brightness_1: rest?.brightnessAttr === '1',
74
+ rest_pinned_false: rest?.pinnedAttr === 'false',
75
+ rest_fill_neutral: rest?.fillAttr === 'neutral',
76
+ transition_has_filter: /filter/.test(rest?.transitionProperty || ''),
77
+ source_filter: sourceFilter,
78
+ source_attr: sourceAttr,
79
+ source_transition: sourceTransition,
80
+ };
81
+ const ok = Object.values(results).every(Boolean);
82
+ console.log(`${ok ? '✅' : '❌'} R590 legend-row-count brightness (29th anchor, legend-row label↔count parity):`,
83
+ JSON.stringify(results, null, 2),
84
+ `\n rest: ${JSON.stringify(rest)}`);
85
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,84 @@
1
+ /* Round 589 verification: recent-signal panel count <text>
2
+ * root gains filter brightness(1.15) on hoveredPanel ===
3
+ * 'recent'. 28th anchor in per-element brightness family.
4
+ * Sibling to R588 at legend panel — closes panel-pair
5
+ * brightness symmetry at the header-count scope.
6
+ *
7
+ * Test phases:
8
+ * 1. mock 1 flow message → recent-signal panel renders count
9
+ * 2. rest (no panel hover): filter='none', brightness-attr='1'
10
+ * 3. transition-property contains 'filter'
11
+ * 4. source: filter conditional + data-attr + transition extension
12
+ */
13
+ import { chromium } from 'playwright';
14
+ import { readFileSync } from 'node:fs';
15
+
16
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
17
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
18
+
19
+ const browser = await chromium.launch({ headless: true });
20
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
21
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
22
+ await ctx.addInitScript(() => {
23
+ try {
24
+ localStorage.setItem('anet-theme', 'cyber');
25
+ localStorage.setItem('anet-topo-layout', 'ring');
26
+ sessionStorage.setItem('anet_v3_auth', '1');
27
+ } catch {}
28
+ });
29
+ await ctx.route('**/api/hub/status*', async (route) => {
30
+ const r = await route.fetch();
31
+ const b = await r.json();
32
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
33
+ const mk = (alias) => ({
34
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
35
+ network_id: nid, project_dir: null,
36
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
37
+ });
38
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
39
+ });
40
+ // recent-signal panel renders only when flowLinks.length > 0
41
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [
42
+ { from_alias: 'a·1', to_alias: 'a·2', content: 'hi', created_at: fresh },
43
+ ] } }));
44
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
45
+ const page = await ctx.newPage();
46
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
47
+ await page.waitForSelector('[data-recent-panel-count-brightness]', { timeout: 15000, state: 'attached' });
48
+ await page.waitForTimeout(500);
49
+
50
+ const rest = await page.evaluate(() => {
51
+ const el = document.querySelector('[data-recent-panel-count-brightness]');
52
+ if (!el) return null;
53
+ const cs = getComputedStyle(el);
54
+ return {
55
+ filter: cs.filter,
56
+ transitionProperty: cs.transitionProperty,
57
+ brightnessAttr: el.getAttribute('data-recent-panel-count-brightness'),
58
+ letterSpacingAttr: el.getAttribute('data-recent-panel-count-letter-spacing'),
59
+ textContent: el.textContent,
60
+ };
61
+ });
62
+
63
+ await browser.close();
64
+
65
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
66
+ const sourceFilter = /filter: hoveredPanel === 'recent' \? 'brightness\(1\.15\)' : undefined/.test(src);
67
+ const sourceAttr = /data-recent-panel-count-brightness=\{hoveredPanel === 'recent' \? '1\.15' : '1'\}/.test(src);
68
+ const sourceTransition = /transition: 'letter-spacing 200ms ease-out, filter 200ms ease-out'/.test(src);
69
+
70
+ const results = {
71
+ count_present: !!rest,
72
+ rest_filter_none: rest?.filter === 'none',
73
+ rest_brightness_1: rest?.brightnessAttr === '1',
74
+ rest_letter_spacing: rest?.letterSpacingAttr === '0.2',
75
+ transition_has_filter: /filter/.test(rest?.transitionProperty || ''),
76
+ source_filter: sourceFilter,
77
+ source_attr: sourceAttr,
78
+ source_transition: sourceTransition,
79
+ };
80
+ const ok = Object.values(results).every(Boolean);
81
+ console.log(`${ok ? '✅' : '❌'} R589 recent-panel-count brightness (28th anchor, panel-pair symmetry closure):`,
82
+ JSON.stringify(results, null, 2),
83
+ `\n rest: ${JSON.stringify(rest)}`);
84
+ process.exit(ok ? 0 : 1);