@sleep2agi/agent-network-dashboard 0.5.3-preview.11 → 0.5.3-preview.13

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 (144) 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 +3 -3
  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/{09t2h9c0b1xjg.js → 0-eqn.ga3bcnl.js} +1 -1
  132. package/.next/static/chunks/0tl3h11hxa7oe.js +4 -0
  133. package/.next/static/chunks/{0x3fl360u~cjf.js → 0zwxl-vr5q45i.js} +1 -1
  134. package/.next/static/chunks/{06kqj2vd..gul.js → 11iqwh145jvo5.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-alias-glow-test.mjs +121 -0
  140. package/scripts/topo-orphan-label-italic-test.mjs +90 -0
  141. package/.next/static/chunks/03tmeg87bxqs3.js +0 -4
  142. /package/.next/static/{hbG6dNDvul_c04Di9Ydwt → U6pY8Ja-T2ME4lRhun26w}/_buildManifest.js +0 -0
  143. /package/.next/static/{hbG6dNDvul_c04Di9Ydwt → U6pY8Ja-T2ME4lRhun26w}/_clientMiddlewareManifest.js +0 -0
  144. /package/.next/static/{hbG6dNDvul_c04Di9Ydwt → U6pY8Ja-T2ME4lRhun26w}/_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.11"],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.13"],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.11"],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.13"],70286)}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":351,"timestamp":190944136168,"id":4,"parentId":1,"tags":{},"startTime":1778998916382,"traceId":"d4c36e946465961e"},{"name":"load-custom-routes","duration":832,"timestamp":190944136721,"id":5,"parentId":1,"tags":{},"startTime":1778998916383,"traceId":"d4c36e946465961e"},{"name":"create-dist-dir","duration":1056,"timestamp":190944137614,"id":6,"parentId":1,"tags":{},"startTime":1778998916384,"traceId":"d4c36e946465961e"},{"name":"clean","duration":33334,"timestamp":190944139770,"id":7,"parentId":1,"tags":{},"startTime":1778998916386,"traceId":"d4c36e946465961e"},{"name":"discover-routes","duration":10930,"timestamp":190944259998,"id":8,"parentId":1,"tags":{},"startTime":1778998916506,"traceId":"d4c36e946465961e"},{"name":"create-root-mapping","duration":146,"timestamp":190944270987,"id":9,"parentId":1,"tags":{},"startTime":1778998916517,"traceId":"d4c36e946465961e"},{"name":"generate-route-types","duration":34013,"timestamp":190944273743,"id":10,"parentId":1,"tags":{},"startTime":1778998916520,"traceId":"d4c36e946465961e"},{"name":"public-dir-conflict-check","duration":168,"timestamp":190944307868,"id":11,"parentId":1,"tags":{},"startTime":1778998916554,"traceId":"d4c36e946465961e"},{"name":"generate-routes-manifest","duration":4625,"timestamp":190944308211,"id":12,"parentId":1,"tags":{},"startTime":1778998916554,"traceId":"d4c36e946465961e"},{"name":"run-turbopack","duration":6335295,"timestamp":190944318388,"id":14,"parentId":1,"tags":{},"startTime":1778998916565,"traceId":"d4c36e946465961e"},{"name":"turbopack-build-events","duration":124,"timestamp":190944611908,"id":15,"parentId":1,"tags":{},"startTime":1778998916858,"traceId":"d4c36e946465961e"},{"name":"run-typescript","duration":10309833,"timestamp":190950669778,"id":16,"parentId":1,"tags":{},"startTime":1778998922916,"traceId":"d4c36e946465961e"},{"name":"generate-required-server-files","duration":3301,"timestamp":190960981135,"id":18,"parentId":1,"tags":{},"startTime":1778998933227,"traceId":"d4c36e946465961e"},{"name":"check-static-error-page","duration":15081,"timestamp":190961228701,"id":20,"parentId":19,"tags":{},"startTime":1778998933475,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":652704,"timestamp":190961248539,"id":69,"parentId":28,"tags":{},"startTime":1778998933495,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":665897,"timestamp":190961235534,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778998933482,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":658186,"timestamp":190961249281,"id":71,"parentId":30,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":671834,"timestamp":190961235714,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778998933482,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":664320,"timestamp":190961248430,"id":68,"parentId":27,"tags":{},"startTime":1778998933495,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":677398,"timestamp":190961235445,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778998933482,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":668572,"timestamp":190961249501,"id":73,"parentId":33,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":681953,"timestamp":190961236190,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778998933482,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":679922,"timestamp":190961248059,"id":65,"parentId":22,"tags":{},"startTime":1778998933494,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":696102,"timestamp":190961231970,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778998933478,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":710090,"timestamp":190961248329,"id":67,"parentId":26,"tags":{},"startTime":1778998933495,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":723203,"timestamp":190961235332,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778998933482,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":712365,"timestamp":190961249344,"id":72,"parentId":32,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":725712,"timestamp":190961236069,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778998933482,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":723711,"timestamp":190961249569,"id":74,"parentId":34,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":737046,"timestamp":190961236297,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778998933483,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":730419,"timestamp":190961249637,"id":77,"parentId":37,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":744119,"timestamp":190961237053,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778998933483,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":736058,"timestamp":190961249062,"id":70,"parentId":29,"tags":{},"startTime":1778998933495,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":749564,"timestamp":190961235611,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778998933482,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":737196,"timestamp":190961249659,"id":79,"parentId":39,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":749688,"timestamp":190961237225,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778998933483,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":744900,"timestamp":190961249671,"id":80,"parentId":40,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":757341,"timestamp":190961237289,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778998933484,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":751679,"timestamp":190961249647,"id":78,"parentId":38,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":764217,"timestamp":190961237159,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778998933483,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":752025,"timestamp":190961249679,"id":81,"parentId":42,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":764190,"timestamp":190961237576,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1778998933484,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":764128,"timestamp":190961249702,"id":83,"parentId":45,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":775908,"timestamp":190961237984,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778998933484,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":764371,"timestamp":190961249714,"id":84,"parentId":46,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":776047,"timestamp":190961238083,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778998933484,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":764680,"timestamp":190961249613,"id":76,"parentId":36,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":777447,"timestamp":190961236884,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778998933483,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":775186,"timestamp":190961249723,"id":85,"parentId":47,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":785116,"timestamp":190961239859,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778998933486,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":775409,"timestamp":190961249738,"id":86,"parentId":48,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":785141,"timestamp":190961240039,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778998933486,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":780194,"timestamp":190961249757,"id":88,"parentId":50,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":789728,"timestamp":190961240269,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778998933487,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":782871,"timestamp":190961252825,"id":90,"parentId":24,"tags":{},"startTime":1778998933499,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":803248,"timestamp":190961232500,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778998933479,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":789649,"timestamp":190961249691,"id":82,"parentId":44,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":801489,"timestamp":190961237896,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778998933484,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":787770,"timestamp":190961253877,"id":91,"parentId":31,"tags":{},"startTime":1778998933500,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":805909,"timestamp":190961235790,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778998933482,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":791139,"timestamp":190961255836,"id":93,"parentId":43,"tags":{},"startTime":1778998933502,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":809377,"timestamp":190961237673,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778998933484,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":800669,"timestamp":190961248205,"id":66,"parentId":25,"tags":{},"startTime":1778998933494,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":813783,"timestamp":190961235134,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778998933481,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":807654,"timestamp":190961249768,"id":89,"parentId":51,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":817128,"timestamp":190961240346,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778998933487,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":811819,"timestamp":190961249749,"id":87,"parentId":49,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":821433,"timestamp":190961240179,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778998933486,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":814431,"timestamp":190961254602,"id":92,"parentId":41,"tags":{},"startTime":1778998933501,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":831734,"timestamp":190961237350,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1778998933484,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":838115,"timestamp":190961247617,"id":64,"parentId":21,"tags":{},"startTime":1778998933494,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":855471,"timestamp":190961230320,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778998933477,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":835570,"timestamp":190961258479,"id":99,"parentId":56,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":852606,"timestamp":190961241511,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778998933488,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":864736,"timestamp":190961249595,"id":75,"parentId":35,"tags":{},"startTime":1778998933496,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":877984,"timestamp":190961236415,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778998933483,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":870703,"timestamp":190961258399,"id":94,"parentId":23,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":896907,"timestamp":190961232260,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778998933479,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":878210,"timestamp":190961258630,"id":102,"parentId":61,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":893730,"timestamp":190961243182,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778998933489,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":879747,"timestamp":190961258440,"id":96,"parentId":53,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":897308,"timestamp":190961240927,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1778998933487,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":886749,"timestamp":190961258467,"id":98,"parentId":55,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":903966,"timestamp":190961241310,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1778998933488,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":887278,"timestamp":190961258652,"id":104,"parentId":63,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":902441,"timestamp":190961243529,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778998933490,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":887681,"timestamp":190961258428,"id":95,"parentId":52,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":905404,"timestamp":190961240737,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1778998933487,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":891058,"timestamp":190961258488,"id":100,"parentId":58,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":907313,"timestamp":190961242270,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778998933489,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":892943,"timestamp":190961258639,"id":103,"parentId":62,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":908252,"timestamp":190961243369,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778998933490,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":874612,"timestamp":190961278440,"id":106,"parentId":57,"tags":{},"startTime":1778998933525,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":911360,"timestamp":190961241730,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1778998933488,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":894715,"timestamp":190961258453,"id":97,"parentId":54,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":912094,"timestamp":190961241098,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1778998933487,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":896427,"timestamp":190961266217,"id":105,"parentId":60,"tags":{},"startTime":1778998933512,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":920072,"timestamp":190961242608,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1778998933489,"traceId":"d4c36e946465961e"},{"name":"is-page-static","duration":916779,"timestamp":190961258608,"id":101,"parentId":59,"tags":{},"startTime":1778998933505,"traceId":"d4c36e946465961e"},{"name":"check-page","duration":932973,"timestamp":190961242455,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778998933489,"traceId":"d4c36e946465961e"},{"name":"static-check","duration":947941,"timestamp":190961227529,"id":19,"parentId":1,"tags":{},"startTime":1778998933474,"traceId":"d4c36e946465961e"}]
2
- [{"name":"write-routes-manifest","duration":758,"timestamp":190962188519,"id":108,"parentId":1,"tags":{},"startTime":1778998934435,"traceId":"d4c36e946465961e"},{"name":"load-dotenv","duration":48,"timestamp":190962201626,"id":111,"parentId":110,"tags":{},"startTime":1778998934448,"traceId":"d4c36e946465961e"},{"name":"run-export-path-map","duration":548,"timestamp":190962204292,"id":112,"parentId":110,"tags":{},"startTime":1778998934451,"traceId":"d4c36e946465961e"},{"name":"next-export","duration":794926,"timestamp":190962200306,"id":110,"parentId":1,"tags":{},"startTime":1778998934447,"traceId":"d4c36e946465961e"},{"name":"move-exported-app-not-found-","duration":587,"timestamp":190962998697,"id":113,"parentId":109,"tags":{},"startTime":1778998935245,"traceId":"d4c36e946465961e"},{"name":"move-exported-app-global-error-","duration":357,"timestamp":190962999389,"id":114,"parentId":109,"tags":{},"startTime":1778998935246,"traceId":"d4c36e946465961e"},{"name":"static-generation","duration":808254,"timestamp":190962193395,"id":109,"parentId":1,"tags":{},"startTime":1778998934440,"traceId":"d4c36e946465961e"},{"name":"write-routes-manifest","duration":561,"timestamp":190963001898,"id":115,"parentId":1,"tags":{},"startTime":1778998935248,"traceId":"d4c36e946465961e"},{"name":"print-tree-view","duration":5311,"timestamp":190963025882,"id":116,"parentId":1,"tags":{},"startTime":1778998935272,"traceId":"d4c36e946465961e"},{"name":"write-route-bundle-stats","duration":18515,"timestamp":190963031239,"id":117,"parentId":1,"tags":{},"startTime":1778998935278,"traceId":"d4c36e946465961e"},{"name":"telemetry-flush","duration":15806,"timestamp":190963049795,"id":118,"parentId":1,"tags":{},"startTime":1778998935296,"traceId":"d4c36e946465961e"},{"name":"next-build","duration":18989589,"timestamp":190944076051,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778998916322,"traceId":"d4c36e946465961e"}]
1
+ [{"name":"generate-buildid","duration":289,"timestamp":192171991306,"id":4,"parentId":1,"tags":{},"startTime":1779000144238,"traceId":"b96147e76ae7b9fa"},{"name":"load-custom-routes","duration":494,"timestamp":192171991733,"id":5,"parentId":1,"tags":{},"startTime":1779000144238,"traceId":"b96147e76ae7b9fa"},{"name":"create-dist-dir","duration":652,"timestamp":192171992268,"id":6,"parentId":1,"tags":{},"startTime":1779000144239,"traceId":"b96147e76ae7b9fa"},{"name":"clean","duration":33097,"timestamp":192171993572,"id":7,"parentId":1,"tags":{},"startTime":1779000144240,"traceId":"b96147e76ae7b9fa"},{"name":"discover-routes","duration":26339,"timestamp":192172121907,"id":8,"parentId":1,"tags":{},"startTime":1779000144368,"traceId":"b96147e76ae7b9fa"},{"name":"create-root-mapping","duration":110,"timestamp":192172148308,"id":9,"parentId":1,"tags":{},"startTime":1779000144395,"traceId":"b96147e76ae7b9fa"},{"name":"generate-route-types","duration":20000,"timestamp":192172151182,"id":10,"parentId":1,"tags":{},"startTime":1779000144397,"traceId":"b96147e76ae7b9fa"},{"name":"public-dir-conflict-check","duration":152,"timestamp":192172171295,"id":11,"parentId":1,"tags":{},"startTime":1779000144418,"traceId":"b96147e76ae7b9fa"},{"name":"generate-routes-manifest","duration":5540,"timestamp":192172171636,"id":12,"parentId":1,"tags":{},"startTime":1779000144418,"traceId":"b96147e76ae7b9fa"},{"name":"run-turbopack","duration":7292930,"timestamp":192172184471,"id":14,"parentId":1,"tags":{},"startTime":1779000144431,"traceId":"b96147e76ae7b9fa"},{"name":"turbopack-build-events","duration":101,"timestamp":192172509208,"id":15,"parentId":1,"tags":{},"startTime":1779000144755,"traceId":"b96147e76ae7b9fa"},{"name":"run-typescript","duration":10535915,"timestamp":192179487349,"id":16,"parentId":1,"tags":{},"startTime":1779000151734,"traceId":"b96147e76ae7b9fa"},{"name":"generate-required-server-files","duration":2291,"timestamp":192190024431,"id":18,"parentId":1,"tags":{},"startTime":1779000162271,"traceId":"b96147e76ae7b9fa"},{"name":"check-static-error-page","duration":14546,"timestamp":192190205368,"id":20,"parentId":19,"tags":{},"startTime":1779000162452,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":608875,"timestamp":192190224199,"id":68,"parentId":27,"tags":{},"startTime":1779000162470,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":621257,"timestamp":192190211988,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779000162458,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":613661,"timestamp":192190223809,"id":65,"parentId":22,"tags":{},"startTime":1779000162470,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":628970,"timestamp":192190208588,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779000162455,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":610473,"timestamp":192190228206,"id":71,"parentId":30,"tags":{},"startTime":1779000162474,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":626322,"timestamp":192190212413,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779000162459,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":638575,"timestamp":192190228418,"id":73,"parentId":33,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":654132,"timestamp":192190212961,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779000162459,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":650713,"timestamp":192190228483,"id":74,"parentId":34,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":666198,"timestamp":192190213098,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779000162459,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":660952,"timestamp":192190228509,"id":75,"parentId":35,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":676322,"timestamp":192190213223,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779000162459,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":682586,"timestamp":192190228524,"id":76,"parentId":36,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":697526,"timestamp":192190213671,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779000162460,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":690592,"timestamp":192190228548,"id":77,"parentId":37,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":705356,"timestamp":192190213866,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779000162460,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":700526,"timestamp":192190228567,"id":78,"parentId":38,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":715180,"timestamp":192190213993,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779000162460,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":704886,"timestamp":192190224572,"id":70,"parentId":29,"tags":{},"startTime":1779000162471,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":717245,"timestamp":192190212260,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779000162459,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":702934,"timestamp":192190228580,"id":79,"parentId":39,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":717458,"timestamp":192190214107,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779000162460,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":714149,"timestamp":192190228600,"id":81,"parentId":42,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":728292,"timestamp":192190214547,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779000162461,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":720019,"timestamp":192190228612,"id":82,"parentId":44,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":733715,"timestamp":192190214973,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779000162461,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":726402,"timestamp":192190228621,"id":83,"parentId":45,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":739977,"timestamp":192190215107,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779000162461,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":728687,"timestamp":192190228588,"id":80,"parentId":40,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":743114,"timestamp":192190214213,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779000162460,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":736225,"timestamp":192190224309,"id":69,"parentId":28,"tags":{},"startTime":1779000162471,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":748440,"timestamp":192190212143,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779000162458,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":732592,"timestamp":192190228634,"id":84,"parentId":46,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":746087,"timestamp":192190215202,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779000162461,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":736543,"timestamp":192190228647,"id":85,"parentId":47,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":749931,"timestamp":192190215308,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779000162462,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":737956,"timestamp":192190228659,"id":86,"parentId":48,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":749804,"timestamp":192190216856,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779000162463,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":739870,"timestamp":192190228668,"id":87,"parentId":49,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":751588,"timestamp":192190216999,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779000162463,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":756293,"timestamp":192190223953,"id":66,"parentId":25,"tags":{},"startTime":1779000162470,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":768644,"timestamp":192190211659,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779000162458,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":748389,"timestamp":192190232087,"id":90,"parentId":24,"tags":{},"startTime":1779000162478,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":771379,"timestamp":192190209134,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779000162455,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":758070,"timestamp":192190234163,"id":92,"parentId":41,"tags":{},"startTime":1779000162480,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":777990,"timestamp":192190214299,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779000162461,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":759164,"timestamp":192190233278,"id":91,"parentId":31,"tags":{},"startTime":1779000162480,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":779935,"timestamp":192190212538,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779000162459,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":765821,"timestamp":192190228680,"id":88,"parentId":50,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":777424,"timestamp":192190217124,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779000162463,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":761879,"timestamp":192190235496,"id":93,"parentId":43,"tags":{},"startTime":1779000162482,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":782743,"timestamp":192190214677,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779000162461,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":786795,"timestamp":192190228693,"id":89,"parentId":51,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":798380,"timestamp":192190217184,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779000162463,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":795383,"timestamp":192190228273,"id":72,"parentId":32,"tags":{},"startTime":1779000162475,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":810900,"timestamp":192190212819,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779000162459,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":850301,"timestamp":192190223460,"id":64,"parentId":21,"tags":{},"startTime":1779000162470,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":866888,"timestamp":192190206965,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779000162453,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":841728,"timestamp":192190237750,"id":95,"parentId":52,"tags":{},"startTime":1779000162484,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":862086,"timestamp":192190217461,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779000162464,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":843662,"timestamp":192190237782,"id":97,"parentId":54,"tags":{},"startTime":1779000162484,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":863789,"timestamp":192190217714,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779000162464,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":846124,"timestamp":192190237824,"id":99,"parentId":56,"tags":{},"startTime":1779000162484,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":865897,"timestamp":192190218125,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779000162464,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":855277,"timestamp":192190237836,"id":100,"parentId":58,"tags":{},"startTime":1779000162484,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":874271,"timestamp":192190218916,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779000162465,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":858216,"timestamp":192190237963,"id":101,"parentId":59,"tags":{},"startTime":1779000162484,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":877117,"timestamp":192190219106,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779000162465,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":860761,"timestamp":192190237767,"id":96,"parentId":53,"tags":{},"startTime":1779000162484,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":881013,"timestamp":192190217569,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779000162464,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":858826,"timestamp":192190246894,"id":105,"parentId":60,"tags":{},"startTime":1779000162493,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":886525,"timestamp":192190219234,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779000162466,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":853379,"timestamp":192190260643,"id":106,"parentId":57,"tags":{},"startTime":1779000162507,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":895697,"timestamp":192190218364,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779000162465,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":876234,"timestamp":192190238295,"id":104,"parentId":63,"tags":{},"startTime":1779000162485,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":894858,"timestamp":192190219712,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779000162466,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":881160,"timestamp":192190237724,"id":94,"parentId":23,"tags":{},"startTime":1779000162484,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":910054,"timestamp":192190208869,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779000162455,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":896958,"timestamp":192190224088,"id":67,"parentId":26,"tags":{},"startTime":1779000162470,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":909243,"timestamp":192190211850,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779000162458,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":883666,"timestamp":192190237981,"id":102,"parentId":61,"tags":{},"startTime":1779000162484,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":902173,"timestamp":192190219517,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779000162466,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":883774,"timestamp":192190237996,"id":103,"parentId":62,"tags":{},"startTime":1779000162484,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":902191,"timestamp":192190219620,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779000162466,"traceId":"b96147e76ae7b9fa"},{"name":"is-page-static","duration":911942,"timestamp":192190237806,"id":98,"parentId":55,"tags":{},"startTime":1779000162484,"traceId":"b96147e76ae7b9fa"},{"name":"check-page","duration":931901,"timestamp":192190217916,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779000162464,"traceId":"b96147e76ae7b9fa"},{"name":"static-check","duration":945630,"timestamp":192190204225,"id":19,"parentId":1,"tags":{},"startTime":1779000162451,"traceId":"b96147e76ae7b9fa"}]
2
+ [{"name":"write-routes-manifest","duration":530,"timestamp":192191159437,"id":108,"parentId":1,"tags":{},"startTime":1779000163406,"traceId":"b96147e76ae7b9fa"},{"name":"load-dotenv","duration":64,"timestamp":192191172274,"id":111,"parentId":110,"tags":{},"startTime":1779000163419,"traceId":"b96147e76ae7b9fa"},{"name":"run-export-path-map","duration":785,"timestamp":192191175236,"id":112,"parentId":110,"tags":{},"startTime":1779000163422,"traceId":"b96147e76ae7b9fa"},{"name":"next-export","duration":661910,"timestamp":192191170237,"id":110,"parentId":1,"tags":{},"startTime":1779000163417,"traceId":"b96147e76ae7b9fa"},{"name":"move-exported-app-not-found-","duration":513,"timestamp":192191835528,"id":113,"parentId":109,"tags":{},"startTime":1779000164082,"traceId":"b96147e76ae7b9fa"},{"name":"move-exported-app-global-error-","duration":347,"timestamp":192191836137,"id":114,"parentId":109,"tags":{},"startTime":1779000164082,"traceId":"b96147e76ae7b9fa"},{"name":"static-generation","duration":674314,"timestamp":192191163985,"id":109,"parentId":1,"tags":{},"startTime":1779000163410,"traceId":"b96147e76ae7b9fa"},{"name":"write-routes-manifest","duration":416,"timestamp":192191838537,"id":115,"parentId":1,"tags":{},"startTime":1779000164085,"traceId":"b96147e76ae7b9fa"},{"name":"print-tree-view","duration":6824,"timestamp":192191848919,"id":116,"parentId":1,"tags":{},"startTime":1779000164095,"traceId":"b96147e76ae7b9fa"},{"name":"write-route-bundle-stats","duration":18476,"timestamp":192191855781,"id":117,"parentId":1,"tags":{},"startTime":1779000164102,"traceId":"b96147e76ae7b9fa"},{"name":"telemetry-flush","duration":18274,"timestamp":192191874290,"id":118,"parentId":1,"tags":{},"startTime":1779000164121,"traceId":"b96147e76ae7b9fa"},{"name":"next-build","duration":19954036,"timestamp":192171938569,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779000144185,"traceId":"b96147e76ae7b9fa"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6335295,"timestamp":190944318388,"id":14,"parentId":1,"tags":{},"startTime":1778998916565,"traceId":"d4c36e946465961e"},{"name":"turbopack-build-events","duration":124,"timestamp":190944611908,"id":15,"parentId":1,"tags":{},"startTime":1778998916858,"traceId":"d4c36e946465961e"},{"name":"run-typescript","duration":10309833,"timestamp":190950669778,"id":16,"parentId":1,"tags":{},"startTime":1778998922916,"traceId":"d4c36e946465961e"},{"name":"static-check","duration":947941,"timestamp":190961227529,"id":19,"parentId":1,"tags":{},"startTime":1778998933474,"traceId":"d4c36e946465961e"},{"name":"static-generation","duration":808254,"timestamp":190962193395,"id":109,"parentId":1,"tags":{},"startTime":1778998934440,"traceId":"d4c36e946465961e"},{"name":"telemetry-flush","duration":15806,"timestamp":190963049795,"id":118,"parentId":1,"tags":{},"startTime":1778998935296,"traceId":"d4c36e946465961e"},{"name":"next-build","duration":18989589,"timestamp":190944076051,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778998916322,"traceId":"d4c36e946465961e"}]
1
+ [{"name":"run-turbopack","duration":7292930,"timestamp":192172184471,"id":14,"parentId":1,"tags":{},"startTime":1779000144431,"traceId":"b96147e76ae7b9fa"},{"name":"turbopack-build-events","duration":101,"timestamp":192172509208,"id":15,"parentId":1,"tags":{},"startTime":1779000144755,"traceId":"b96147e76ae7b9fa"},{"name":"run-typescript","duration":10535915,"timestamp":192179487349,"id":16,"parentId":1,"tags":{},"startTime":1779000151734,"traceId":"b96147e76ae7b9fa"},{"name":"static-check","duration":945630,"timestamp":192190204225,"id":19,"parentId":1,"tags":{},"startTime":1779000162451,"traceId":"b96147e76ae7b9fa"},{"name":"static-generation","duration":674314,"timestamp":192191163985,"id":109,"parentId":1,"tags":{},"startTime":1779000163410,"traceId":"b96147e76ae7b9fa"},{"name":"telemetry-flush","duration":18274,"timestamp":192191874290,"id":118,"parentId":1,"tags":{},"startTime":1779000164121,"traceId":"b96147e76ae7b9fa"},{"name":"next-build","duration":19954036,"timestamp":192171938569,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779000144185,"traceId":"b96147e76ae7b9fa"}]
@@ -867,12 +867,19 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
867
867
  // R63 label render + R86 hover-pin keying + #99 tooltip
868
868
  // member listing, so all the existing group-box machinery
869
869
  // applies uniformly to the orphan bucket too.
870
+ // Round 499 / Loop — surface `isOrphan` flag on the box
871
+ // shape so downstream renderers (label text, future polish)
872
+ // can apply orphan-specific typography (italic) without
873
+ // re-deriving the flag from key === '其他' (key matching
874
+ // would also catch a legitimate "其他" prefix-group, this
875
+ // flag is canonical from the band assignment pass).
870
876
  return {
871
877
  key: band.isOrphan
872
878
  ? '其他'
873
879
  : band.members.length
874
880
  ? groupKeys[band.members[0].alias]
875
881
  : '',
882
+ isOrphan: !!band.isOrphan,
876
883
  count: band.members.length,
877
884
  statuses: { working: w, idle: i, offline: o },
878
885
  x: minX - GROUP_PAD,
@@ -977,7 +984,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
977
984
  groupKeys,
978
985
  // #111: group boxes are a grid-layout feature only — radially scattered
979
986
  // ring nodes can't be cleanly boxed. Ring keeps the #83 prefix hue.
980
- groupBoxes: [] as { key: string; count: number; statuses: { working: number; idle: number; offline: number }; x: number; y: number; w: number; h: number }[],
987
+ groupBoxes: [] as { key: string; isOrphan?: boolean; count: number; statuses: { working: number; idle: number; offline: number }; x: number; y: number; w: number; h: number }[],
981
988
  // ring fits within VIEWBOX_H by construction (offlineRadius=325 + centre at y=330)
982
989
  gridContentBottom: 0,
983
990
  };
@@ -4906,16 +4913,39 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
4906
4913
  ease-out' alongside the existing fill/ls/fw/opacity
4907
4914
  200ms tweens. */
4908
4915
  data-group-label-glow={isPinned ? 'true' : 'false'}
4916
+ /* Round 499 / Loop — orphan band "其他" label gets
4917
+ fontStyle: italic to visually distinguish the
4918
+ catchall from real prefix-group bands. Pre-R499
4919
+ the orphan box label rendered identically to
4920
+ prefix-group labels (Hero D fontSize=9, fw=700,
4921
+ opacity 0.55 rest), so users had to read the
4922
+ literal text "其他" to identify the catchall. R499
4923
+ adds a pure-typography differentiation: italic
4924
+ signals "this is the misc bucket, not a real
4925
+ named group" while preserving full opacity
4926
+ affordance on hover/pin — the orphan box stays
4927
+ equally inspectable, just typographically marked
4928
+ as a different category. No geometry change
4929
+ (italic shifts glyph slant within the same bbox),
4930
+ no opacity loss, no behavior change. Sibling to
4931
+ R432 letter-spacing 3-tier + R457 pin fw-lift +
4932
+ R479 pin drop-shadow at the group-label scope.
4933
+ Falls under 配色 / 节点视觉 themes per the prompt;
4934
+ advances the "信息密度" axis by encoding
4935
+ category-distinction into a single typography
4936
+ channel without adding visual chrome. */
4909
4937
  style={{
4910
4938
  transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out, opacity 200ms ease-out, filter 200ms ease-out',
4911
4939
  letterSpacing: isPinned ? '0.5px' :
4912
4940
  isHovered ? '0.25px' : '0px',
4941
+ fontStyle: box.isOrphan ? 'italic' : undefined,
4913
4942
  filter: isPinned
4914
4943
  ? `drop-shadow(0 0 3px ${pal.legendAccent}80)`
4915
4944
  : undefined,
4916
4945
  }}
4917
4946
  data-group-label={box.key}
4918
4947
  data-group-label-pinned={isPinned ? 'true' : 'false'}
4948
+ data-group-label-orphan={box.isOrphan ? 'true' : 'false'}
4919
4949
  >
4920
4950
  {box.key}
4921
4951
  {/* Round 19 / Loop: member-count chip. Inline tspan stays
@@ -8044,6 +8074,43 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8044
8074
  R211 fill 300ms + R305 letter-spacing 200ms
8045
8075
  transition list preserved; only the
8046
8076
  conditional gets a middle case. */}
8077
+ {/* Round 500 / Loop — milestone round, opens
8078
+ per-node alias drop-shadow polish. Extends the
8079
+ R476-R481 drop-shadow visual-polish family to a
8080
+ 7th anchor: hovered alias text gains a soft
8081
+ status-coloured text-glow. Pre-R500 hover on
8082
+ a node triggered card-lift (R26 translateY) +
8083
+ card-stroke (R242 tint) + alias letter-spacing
8084
+ (R427 0.3px tier) but the alias TEXT itself had
8085
+ no paint-axis cue beyond fill (R211). R500 adds
8086
+ a drop-shadow on the text glyph itself, so the
8087
+ identity glyph itself lights up under attention
8088
+ — matching the R476 idiom (hub-digit emerald
8089
+ glow on hover) at the per-node identity scope.
8090
+ 2px blur radius at 50% alpha — subtler than the
8091
+ R476 hub-digit (3px at 60%) because the alias
8092
+ text is smaller and more numerous (1 per node)
8093
+ so an aggressive glow would multiply into
8094
+ visual noise. Status-coloured (status.text) so
8095
+ the glow inherits the node's working/idle/
8096
+ offline palette — green/cyan/gray respectively.
8097
+ Drop-shadow visual-polish family — 7 anchors:
8098
+ R476 hub digit hover-gated emerald
8099
+ R477 legend pin-ring pin-gated row.fill
8100
+ R478 recent-row pip fresh-gated cyan
8101
+ R479 group-label text pin-gated cyan
8102
+ R480 hot-lane edge hot-gated amber
8103
+ R481 zoom-state minimap zoom-gated cyan
8104
+ R500 node alias text hover-gated status.text ← this round
8105
+ Filter is paint-only; bbox unchanged; overlap-
8106
+ test invariants hold (R51 selector gated to
8107
+ g[data-node] descendants with strokeWidth
8108
+ sentinels; text element doesn't carry stroke).
8109
+ transition list extends to include 'filter
8110
+ 200ms ease-out' alongside the existing fill
8111
+ 300ms + letter-spacing 200ms tweens.
8112
+ data-node-alias-glow attr surfaces the hover
8113
+ gate for tests. */}
8047
8114
  <text
8048
8115
  x="0" y="1" textAnchor="middle"
8049
8116
  fill={status.text}
@@ -8051,11 +8118,15 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8051
8118
  data-node-alias-text={session.alias}
8052
8119
  data-node-alias-chat-target={chatAlias === session.alias ? 'true' : 'false'}
8053
8120
  data-node-alias-hovered={hoveredAlias === session.alias ? 'true' : 'false'}
8121
+ data-node-alias-glow={!reducedMotion && hoveredAlias === session.alias ? 'true' : 'false'}
8054
8122
  style={{
8055
- transition: 'fill 300ms ease-out, letter-spacing 200ms ease-out',
8123
+ transition: 'fill 300ms ease-out, letter-spacing 200ms ease-out, filter 200ms ease-out',
8056
8124
  letterSpacing:
8057
8125
  chatAlias === session.alias ? '0.5px' :
8058
8126
  hoveredAlias === session.alias ? '0.3px' : '0px',
8127
+ filter: !reducedMotion && hoveredAlias === session.alias
8128
+ ? `drop-shadow(0 0 2px ${status.text}80)`
8129
+ : undefined,
8059
8130
  }}
8060
8131
  >
8061
8132
  {truncate(session.alias, fullMax)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.11",
3
+ "version": "0.5.3-preview.13",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,121 @@
1
+ /* Round 500 verification: node alias text gains a status-coloured
2
+ * drop-shadow on hover (extends R476-R481 drop-shadow visual-polish
3
+ * family to 7th anchor). Pre-R500 hover triggered card-lift + alias
4
+ * letter-spacing; post-R500 the alias glyph itself glows.
5
+ *
6
+ * Test scenarios:
7
+ * 1. Rest state — no hover: data-node-alias-glow='false', no filter
8
+ * 2. Hover state — after synthetic pointerenter dispatch on g[data-node]
9
+ * descendant: glow attr 'true', computed filter contains drop-shadow
10
+ * 3. reducedMotion: glow attr 'false' regardless of hover (a11y)
11
+ * 4. Source-side regex confirms wiring
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
+ async function probe({ reducedMotion }) {
20
+ const browser = await chromium.launch({ headless: true });
21
+ const ctx = await browser.newContext({
22
+ viewport: { width: 1500, height: 1200 },
23
+ reducedMotion: reducedMotion ? 'reduce' : 'no-preference',
24
+ });
25
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
26
+ await ctx.addInitScript(() => {
27
+ try {
28
+ localStorage.setItem('anet-theme', 'cyber');
29
+ localStorage.setItem('anet-topo-layout', 'ring');
30
+ sessionStorage.setItem('anet_v3_auth', '1');
31
+ } catch {}
32
+ });
33
+ await ctx.route('**/api/hub/status*', async (route) => {
34
+ const r = await route.fetch();
35
+ const b = await r.json();
36
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
37
+ const mk = (alias, status) => ({
38
+ alias, status, model: 'claude-opus-4', runtime: 'claude-code-cli',
39
+ network_id: nid, project_dir: null,
40
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
41
+ });
42
+ await route.fulfill({ response: r, json: { ...b, sessions: [
43
+ mk('alpha·a1', 'working'),
44
+ mk('alpha·a2', 'idle'),
45
+ ] } });
46
+ });
47
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
48
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
49
+ const page = await ctx.newPage();
50
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
51
+ await page.waitForSelector('g[data-node]', { timeout: 15000 });
52
+ await page.waitForTimeout(1500);
53
+
54
+ // Phase 1: rest state
55
+ const rest = await page.evaluate(() => {
56
+ const text = document.querySelector('[data-node-alias-text]');
57
+ if (!text) return null;
58
+ return {
59
+ glow_attr: text.getAttribute('data-node-alias-glow'),
60
+ computed_filter: window.getComputedStyle(text).filter,
61
+ };
62
+ });
63
+
64
+ // Phase 2: hover state — synthetic pointerenter (R488 banked recipe)
65
+ const aliasAfterHover = await page.evaluate(() => {
66
+ const g = document.querySelector('g[data-node]');
67
+ if (!g) return null;
68
+ const alias = g.getAttribute('data-node');
69
+ const target = g.querySelector('circle, image, rect') || g;
70
+ ['pointerenter', 'pointerover', 'mouseenter', 'mouseover'].forEach((t) => {
71
+ target.dispatchEvent(new Event(t, { bubbles: true, cancelable: true }));
72
+ });
73
+ return alias;
74
+ });
75
+ await page.waitForTimeout(400);
76
+ const hover = await page.evaluate(() => {
77
+ const text = document.querySelector('[data-node-alias-text]');
78
+ if (!text) return null;
79
+ return {
80
+ glow_attr: text.getAttribute('data-node-alias-glow'),
81
+ computed_filter: window.getComputedStyle(text).filter,
82
+ hovered_attr: text.getAttribute('data-node-alias-hovered'),
83
+ };
84
+ });
85
+
86
+ await browser.close();
87
+ return { rest, hover, alias: aliasAfterHover };
88
+ }
89
+
90
+ const motion = await probe({ reducedMotion: false });
91
+ const a11y = await probe({ reducedMotion: true });
92
+
93
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
94
+ const sourceFilter = /filter: !reducedMotion && hoveredAlias === session\.alias\s*\?\s*`drop-shadow\(0 0 2px \$\{status\.text\}80\)`\s*:\s*undefined/.test(src);
95
+ const sourceAttr = /data-node-alias-glow=\{!reducedMotion && hoveredAlias === session\.alias \? 'true' : 'false'\}/.test(src);
96
+ const sourceTransition = /transition: 'fill 300ms ease-out, letter-spacing 200ms ease-out, filter 200ms ease-out'/.test(src);
97
+
98
+ const results = {
99
+ // Motion fixture, rest: attr='false', filter='none'
100
+ motion_rest_attr_false: motion.rest && motion.rest.glow_attr === 'false',
101
+ motion_rest_filter_none: motion.rest && motion.rest.computed_filter === 'none',
102
+ // Motion fixture, hover: attr='true', filter contains drop-shadow
103
+ motion_alias_resolved: !!motion.alias,
104
+ motion_hover_attr_true: motion.hover && motion.hover.glow_attr === 'true',
105
+ motion_hover_filter_drop:motion.hover && /drop-shadow/.test(motion.hover.computed_filter || ''),
106
+ // a11y fixture: attr='false' even after hover (component-side gate)
107
+ a11y_rest_attr_false: a11y.rest && a11y.rest.glow_attr === 'false',
108
+ a11y_hover_attr_false: a11y.hover && a11y.hover.glow_attr === 'false',
109
+ a11y_hover_filter_none: a11y.hover && a11y.hover.computed_filter === 'none',
110
+ // Source
111
+ source_filter_wired: sourceFilter,
112
+ source_attr_wired: sourceAttr,
113
+ source_transition_wired: sourceTransition,
114
+ };
115
+ const ok = Object.values(results).every(Boolean);
116
+ console.log(`${ok ? '✅' : '❌'} R500 node alias glow:`, JSON.stringify(results),
117
+ '\n motion rest :', JSON.stringify(motion.rest),
118
+ '\n motion hover:', JSON.stringify(motion.hover),
119
+ '\n a11y rest :', JSON.stringify(a11y.rest),
120
+ '\n a11y hover:', JSON.stringify(a11y.hover));
121
+ process.exit(ok ? 0 : 1);