@sleep2agi/agent-network-dashboard 0.5.3-preview.112 → 0.5.3-preview.114

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +5 -5
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/admin.html +1 -1
  21. package/.next/server/app/admin.rsc +1 -1
  22. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  28. package/.next/server/app/index.html +2 -2
  29. package/.next/server/app/index.rsc +2 -2
  30. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/login.html +2 -2
  37. package/.next/server/app/login.rsc +2 -2
  38. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  39. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  44. package/.next/server/app/logs.html +1 -1
  45. package/.next/server/app/logs.rsc +1 -1
  46. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  52. package/.next/server/app/messages.html +1 -1
  53. package/.next/server/app/messages.rsc +1 -1
  54. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  60. package/.next/server/app/node.html +1 -1
  61. package/.next/server/app/node.rsc +1 -1
  62. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  68. package/.next/server/app/nodes.html +1 -1
  69. package/.next/server/app/nodes.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  76. package/.next/server/app/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/server-logs.html +1 -1
  78. package/.next/server/app/server-logs.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  84. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  85. package/.next/server/app/settings/networks.html +1 -1
  86. package/.next/server/app/settings/networks.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  94. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/settings/tokens.html +1 -1
  96. package/.next/server/app/settings/tokens.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  103. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  104. package/.next/server/app/settings.html +2 -2
  105. package/.next/server/app/settings.rsc +2 -2
  106. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  110. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  111. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  112. package/.next/server/app/tasks.html +1 -1
  113. package/.next/server/app/tasks.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  120. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  121. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
  123. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  126. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  127. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  128. package/.next/server/middleware-build-manifest.js +3 -3
  129. package/.next/server/pages/404.html +1 -1
  130. package/.next/server/pages/500.html +1 -1
  131. package/.next/static/chunks/{0pp_-sk6m0nds.js → 04j0wahul-80n.js} +1 -1
  132. package/.next/static/chunks/{00ow1mvponabk.js → 0e7a9uxe5~g4s.js} +1 -1
  133. package/.next/static/chunks/{0eah4iev4g_cy.js → 0fr0t.9kbulan.js} +1 -1
  134. package/.next/static/chunks/{0ikp-z.zv4mnr.js → 0p27q.qb3n3eb.js} +1 -1
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +82 -2
  138. package/package.json +1 -1
  139. package/scripts/topo-avatar-rotate-test.mjs +85 -0
  140. package/scripts/topo-runtime-badge-rotate-test.mjs +85 -0
  141. /package/.next/static/{94wwUM8Eetp2M7t0gbbpt → IW0qB7Eo5lOPk-AQFaUZF}/_buildManifest.js +0 -0
  142. /package/.next/static/{94wwUM8Eetp2M7t0gbbpt → IW0qB7Eo5lOPk-AQFaUZF}/_clientMiddlewareManifest.js +0 -0
  143. /package/.next/static/{94wwUM8Eetp2M7t0gbbpt → IW0qB7Eo5lOPk-AQFaUZF}/_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.112"],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.114"],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.112"],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.114"],70286)}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":389,"timestamp":234835395778,"id":4,"parentId":1,"tags":{},"startTime":1779042807642,"traceId":"e388260564b17d48"},{"name":"load-custom-routes","duration":461,"timestamp":234835396369,"id":5,"parentId":1,"tags":{},"startTime":1779042807643,"traceId":"e388260564b17d48"},{"name":"create-dist-dir","duration":725,"timestamp":234835396872,"id":6,"parentId":1,"tags":{},"startTime":1779042807643,"traceId":"e388260564b17d48"},{"name":"clean","duration":30989,"timestamp":234835398480,"id":7,"parentId":1,"tags":{},"startTime":1779042807645,"traceId":"e388260564b17d48"},{"name":"discover-routes","duration":12088,"timestamp":234835507844,"id":8,"parentId":1,"tags":{},"startTime":1779042807754,"traceId":"e388260564b17d48"},{"name":"create-root-mapping","duration":124,"timestamp":234835519989,"id":9,"parentId":1,"tags":{},"startTime":1779042807766,"traceId":"e388260564b17d48"},{"name":"generate-route-types","duration":19341,"timestamp":234835522464,"id":10,"parentId":1,"tags":{},"startTime":1779042807769,"traceId":"e388260564b17d48"},{"name":"public-dir-conflict-check","duration":127,"timestamp":234835541910,"id":11,"parentId":1,"tags":{},"startTime":1779042807788,"traceId":"e388260564b17d48"},{"name":"generate-routes-manifest","duration":4368,"timestamp":234835542160,"id":12,"parentId":1,"tags":{},"startTime":1779042807788,"traceId":"e388260564b17d48"},{"name":"run-turbopack","duration":5788913,"timestamp":234835565060,"id":14,"parentId":1,"tags":{},"startTime":1779042807811,"traceId":"e388260564b17d48"},{"name":"turbopack-build-events","duration":109,"timestamp":234835848327,"id":15,"parentId":1,"tags":{},"startTime":1779042808095,"traceId":"e388260564b17d48"},{"name":"run-typescript","duration":9356086,"timestamp":234841374376,"id":16,"parentId":1,"tags":{},"startTime":1779042813621,"traceId":"e388260564b17d48"},{"name":"generate-required-server-files","duration":2289,"timestamp":234850731544,"id":18,"parentId":1,"tags":{},"startTime":1779042822978,"traceId":"e388260564b17d48"},{"name":"check-static-error-page","duration":15806,"timestamp":234850925412,"id":20,"parentId":19,"tags":{},"startTime":1779042823172,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":428185,"timestamp":234850945438,"id":65,"parentId":22,"tags":{},"startTime":1779042823192,"traceId":"e388260564b17d48"},{"name":"check-page","duration":445101,"timestamp":234850928678,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779042823175,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":544300,"timestamp":234850945881,"id":69,"parentId":28,"tags":{},"startTime":1779042823192,"traceId":"e388260564b17d48"},{"name":"check-page","duration":557986,"timestamp":234850932306,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779042823179,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":544855,"timestamp":234850945664,"id":67,"parentId":26,"tags":{},"startTime":1779042823192,"traceId":"e388260564b17d48"},{"name":"check-page","duration":558526,"timestamp":234850932045,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779042823178,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":563220,"timestamp":234850945768,"id":68,"parentId":27,"tags":{},"startTime":1779042823192,"traceId":"e388260564b17d48"},{"name":"check-page","duration":576906,"timestamp":234850932178,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779042823178,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":564747,"timestamp":234850946327,"id":71,"parentId":30,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":578560,"timestamp":234850932578,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779042823179,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":570614,"timestamp":234850946655,"id":75,"parentId":35,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":583985,"timestamp":234850933347,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779042823180,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":575264,"timestamp":234850946387,"id":72,"parentId":32,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":588724,"timestamp":234850932976,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779042823179,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":575338,"timestamp":234850946671,"id":76,"parentId":36,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":588250,"timestamp":234850933795,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779042823180,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":579530,"timestamp":234850946718,"id":78,"parentId":38,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":592142,"timestamp":234850934151,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779042823180,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":584086,"timestamp":234850946728,"id":79,"parentId":39,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":596609,"timestamp":234850934255,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779042823181,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":600601,"timestamp":234850946545,"id":73,"parentId":33,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":614081,"timestamp":234850933122,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779042823179,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":600708,"timestamp":234850946627,"id":74,"parentId":34,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":614132,"timestamp":234850933236,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779042823180,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":600899,"timestamp":234850946741,"id":80,"parentId":40,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":613321,"timestamp":234850934354,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779042823181,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":607950,"timestamp":234850946700,"id":77,"parentId":37,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":620714,"timestamp":234850933987,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779042823180,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":608107,"timestamp":234850946781,"id":83,"parentId":45,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":619658,"timestamp":234850935320,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779042823182,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":609615,"timestamp":234850945565,"id":66,"parentId":25,"tags":{},"startTime":1779042823192,"traceId":"e388260564b17d48"},{"name":"check-page","duration":623375,"timestamp":234850931842,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779042823178,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":611339,"timestamp":234850946755,"id":81,"parentId":42,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":623450,"timestamp":234850934716,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779042823181,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":611554,"timestamp":234850946772,"id":82,"parentId":44,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":623191,"timestamp":234850935171,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779042823181,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":616403,"timestamp":234850946794,"id":84,"parentId":46,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":627819,"timestamp":234850935420,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779042823182,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":616548,"timestamp":234850946811,"id":85,"parentId":47,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":627821,"timestamp":234850935571,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779042823182,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":616693,"timestamp":234850946834,"id":87,"parentId":49,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":626269,"timestamp":234850937291,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779042823184,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":618099,"timestamp":234850946883,"id":88,"parentId":50,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":627640,"timestamp":234850937398,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779042823184,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":621919,"timestamp":234850945051,"id":64,"parentId":21,"tags":{},"startTime":1779042823191,"traceId":"e388260564b17d48"},{"name":"check-page","duration":639924,"timestamp":234850927104,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779042823173,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":627772,"timestamp":234850946168,"id":70,"parentId":29,"tags":{},"startTime":1779042823192,"traceId":"e388260564b17d48"},{"name":"check-page","duration":641553,"timestamp":234850932435,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779042823179,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":626227,"timestamp":234850951527,"id":91,"parentId":31,"tags":{},"startTime":1779042823198,"traceId":"e388260564b17d48"},{"name":"check-page","duration":645103,"timestamp":234850932694,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779042823179,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":627582,"timestamp":234850950369,"id":90,"parentId":24,"tags":{},"startTime":1779042823197,"traceId":"e388260564b17d48"},{"name":"check-page","duration":648744,"timestamp":234850929241,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779042823176,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":629233,"timestamp":234850952409,"id":92,"parentId":41,"tags":{},"startTime":1779042823199,"traceId":"e388260564b17d48"},{"name":"check-page","duration":647228,"timestamp":234850934455,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779042823181,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":636064,"timestamp":234850946821,"id":86,"parentId":48,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":645825,"timestamp":234850937117,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779042823183,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":666313,"timestamp":234850946908,"id":89,"parentId":51,"tags":{},"startTime":1779042823193,"traceId":"e388260564b17d48"},{"name":"check-page","duration":675819,"timestamp":234850937479,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779042823184,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":705226,"timestamp":234850956077,"id":95,"parentId":52,"tags":{},"startTime":1779042823202,"traceId":"e388260564b17d48"},{"name":"check-page","duration":723449,"timestamp":234850937936,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779042823184,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":706695,"timestamp":234850956118,"id":98,"parentId":55,"tags":{},"startTime":1779042823202,"traceId":"e388260564b17d48"},{"name":"check-page","duration":724380,"timestamp":234850938496,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779042823185,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":708439,"timestamp":234850956094,"id":96,"parentId":53,"tags":{},"startTime":1779042823202,"traceId":"e388260564b17d48"},{"name":"check-page","duration":726458,"timestamp":234850938131,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779042823184,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":712460,"timestamp":234850956104,"id":97,"parentId":54,"tags":{},"startTime":1779042823202,"traceId":"e388260564b17d48"},{"name":"check-page","duration":730330,"timestamp":234850938301,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779042823185,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":714461,"timestamp":234850956272,"id":102,"parentId":61,"tags":{},"startTime":1779042823203,"traceId":"e388260564b17d48"},{"name":"check-page","duration":730258,"timestamp":234850940516,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779042823187,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":716463,"timestamp":234850956145,"id":100,"parentId":58,"tags":{},"startTime":1779042823202,"traceId":"e388260564b17d48"},{"name":"check-page","duration":733123,"timestamp":234850939541,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779042823186,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":717584,"timestamp":234850956250,"id":101,"parentId":59,"tags":{},"startTime":1779042823203,"traceId":"e388260564b17d48"},{"name":"check-page","duration":734129,"timestamp":234850939746,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779042823186,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":721645,"timestamp":234850956295,"id":104,"parentId":63,"tags":{},"startTime":1779042823203,"traceId":"e388260564b17d48"},{"name":"check-page","duration":737056,"timestamp":234850940925,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779042823187,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":722012,"timestamp":234850956286,"id":103,"parentId":62,"tags":{},"startTime":1779042823203,"traceId":"e388260564b17d48"},{"name":"check-page","duration":737643,"timestamp":234850940741,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779042823187,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":723080,"timestamp":234850956132,"id":99,"parentId":56,"tags":{},"startTime":1779042823202,"traceId":"e388260564b17d48"},{"name":"check-page","duration":740550,"timestamp":234850938702,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779042823185,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":706174,"timestamp":234850974073,"id":105,"parentId":57,"tags":{},"startTime":1779042823220,"traceId":"e388260564b17d48"},{"name":"check-page","duration":741334,"timestamp":234850938955,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779042823185,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":724381,"timestamp":234850956048,"id":94,"parentId":23,"tags":{},"startTime":1779042823202,"traceId":"e388260564b17d48"},{"name":"check-page","duration":751500,"timestamp":234850928962,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779042823175,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":696965,"timestamp":234850983577,"id":106,"parentId":60,"tags":{},"startTime":1779042823230,"traceId":"e388260564b17d48"},{"name":"check-page","duration":740630,"timestamp":234850939936,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779042823186,"traceId":"e388260564b17d48"},{"name":"is-page-static","duration":728968,"timestamp":234850953742,"id":93,"parentId":43,"tags":{},"startTime":1779042823200,"traceId":"e388260564b17d48"},{"name":"check-page","duration":747908,"timestamp":234850934852,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779042823181,"traceId":"e388260564b17d48"},{"name":"static-check","duration":758539,"timestamp":234850924268,"id":19,"parentId":1,"tags":{},"startTime":1779042823171,"traceId":"e388260564b17d48"}]
2
- [{"name":"write-routes-manifest","duration":499,"timestamp":234851692485,"id":108,"parentId":1,"tags":{},"startTime":1779042823939,"traceId":"e388260564b17d48"},{"name":"load-dotenv","duration":42,"timestamp":234851702942,"id":111,"parentId":110,"tags":{},"startTime":1779042823949,"traceId":"e388260564b17d48"},{"name":"run-export-path-map","duration":549,"timestamp":234851705491,"id":112,"parentId":110,"tags":{},"startTime":1779042823952,"traceId":"e388260564b17d48"},{"name":"next-export","duration":597522,"timestamp":234851701757,"id":110,"parentId":1,"tags":{},"startTime":1779042823948,"traceId":"e388260564b17d48"},{"name":"move-exported-app-not-found-","duration":750,"timestamp":234852303434,"id":113,"parentId":109,"tags":{},"startTime":1779042824550,"traceId":"e388260564b17d48"},{"name":"move-exported-app-global-error-","duration":478,"timestamp":234852304310,"id":114,"parentId":109,"tags":{},"startTime":1779042824551,"traceId":"e388260564b17d48"},{"name":"static-generation","duration":610763,"timestamp":234851696418,"id":109,"parentId":1,"tags":{},"startTime":1779042823943,"traceId":"e388260564b17d48"},{"name":"write-routes-manifest","duration":502,"timestamp":234852307493,"id":115,"parentId":1,"tags":{},"startTime":1779042824554,"traceId":"e388260564b17d48"},{"name":"print-tree-view","duration":4071,"timestamp":234852328657,"id":116,"parentId":1,"tags":{},"startTime":1779042824575,"traceId":"e388260564b17d48"},{"name":"write-route-bundle-stats","duration":12155,"timestamp":234852332757,"id":117,"parentId":1,"tags":{},"startTime":1779042824579,"traceId":"e388260564b17d48"},{"name":"telemetry-flush","duration":29427,"timestamp":234852344943,"id":118,"parentId":1,"tags":{},"startTime":1779042824591,"traceId":"e388260564b17d48"},{"name":"next-build","duration":17030066,"timestamp":234835344333,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779042807591,"traceId":"e388260564b17d48"}]
1
+ [{"name":"generate-buildid","duration":247,"timestamp":235477043401,"id":4,"parentId":1,"tags":{},"startTime":1779043449290,"traceId":"95bee9dacbaff574"},{"name":"load-custom-routes","duration":490,"timestamp":235477043787,"id":5,"parentId":1,"tags":{},"startTime":1779043449290,"traceId":"95bee9dacbaff574"},{"name":"create-dist-dir","duration":702,"timestamp":235477044319,"id":6,"parentId":1,"tags":{},"startTime":1779043449291,"traceId":"95bee9dacbaff574"},{"name":"clean","duration":34680,"timestamp":235477045666,"id":7,"parentId":1,"tags":{},"startTime":1779043449292,"traceId":"95bee9dacbaff574"},{"name":"discover-routes","duration":13276,"timestamp":235477166523,"id":8,"parentId":1,"tags":{},"startTime":1779043449413,"traceId":"95bee9dacbaff574"},{"name":"create-root-mapping","duration":243,"timestamp":235477179870,"id":9,"parentId":1,"tags":{},"startTime":1779043449426,"traceId":"95bee9dacbaff574"},{"name":"generate-route-types","duration":35457,"timestamp":235477183347,"id":10,"parentId":1,"tags":{},"startTime":1779043449430,"traceId":"95bee9dacbaff574"},{"name":"public-dir-conflict-check","duration":160,"timestamp":235477218927,"id":11,"parentId":1,"tags":{},"startTime":1779043449465,"traceId":"95bee9dacbaff574"},{"name":"generate-routes-manifest","duration":4849,"timestamp":235477219248,"id":12,"parentId":1,"tags":{},"startTime":1779043449466,"traceId":"95bee9dacbaff574"},{"name":"run-turbopack","duration":6044437,"timestamp":235477230414,"id":14,"parentId":1,"tags":{},"startTime":1779043449477,"traceId":"95bee9dacbaff574"},{"name":"turbopack-build-events","duration":78,"timestamp":235477543668,"id":15,"parentId":1,"tags":{},"startTime":1779043449790,"traceId":"95bee9dacbaff574"},{"name":"run-typescript","duration":9753804,"timestamp":235483283925,"id":16,"parentId":1,"tags":{},"startTime":1779043455530,"traceId":"95bee9dacbaff574"},{"name":"generate-required-server-files","duration":2926,"timestamp":235493039028,"id":18,"parentId":1,"tags":{},"startTime":1779043465285,"traceId":"95bee9dacbaff574"},{"name":"check-static-error-page","duration":15872,"timestamp":235493235966,"id":20,"parentId":19,"tags":{},"startTime":1779043465482,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":486810,"timestamp":235493256428,"id":65,"parentId":22,"tags":{},"startTime":1779043465503,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":505100,"timestamp":235493238331,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779043465485,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":607518,"timestamp":235493257147,"id":70,"parentId":29,"tags":{},"startTime":1779043465503,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":622506,"timestamp":235493242270,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779043465489,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":616845,"timestamp":235493256865,"id":69,"parentId":28,"tags":{},"startTime":1779043465503,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":631595,"timestamp":235493242191,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779043465488,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":636414,"timestamp":235493260990,"id":73,"parentId":33,"tags":{},"startTime":1779043465507,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":654741,"timestamp":235493242733,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779043465489,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":643092,"timestamp":235493254557,"id":64,"parentId":21,"tags":{},"startTime":1779043465501,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":660506,"timestamp":235493237190,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779043465483,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":643511,"timestamp":235493256571,"id":66,"parentId":25,"tags":{},"startTime":1779043465503,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":659398,"timestamp":235493240998,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779043465488,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":640285,"timestamp":235493260805,"id":72,"parentId":32,"tags":{},"startTime":1779043465507,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":658503,"timestamp":235493242642,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779043465489,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":643119,"timestamp":235493261085,"id":74,"parentId":34,"tags":{},"startTime":1779043465507,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":661443,"timestamp":235493242806,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779043465489,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":649009,"timestamp":235493261203,"id":78,"parentId":38,"tags":{},"startTime":1779043465507,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":666763,"timestamp":235493243498,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779043465490,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":654588,"timestamp":235493256668,"id":67,"parentId":26,"tags":{},"startTime":1779043465503,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":669324,"timestamp":235493241977,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779043465488,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":650574,"timestamp":235493261161,"id":77,"parentId":37,"tags":{},"startTime":1779043465507,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":668369,"timestamp":235493243408,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779043465490,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":652831,"timestamp":235493261133,"id":76,"parentId":36,"tags":{},"startTime":1779043465507,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":670744,"timestamp":235493243274,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779043465490,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":659951,"timestamp":235493261320,"id":82,"parentId":44,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":676966,"timestamp":235493244350,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779043465491,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":663823,"timestamp":235493261272,"id":80,"parentId":40,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":681507,"timestamp":235493243637,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779043465490,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":666485,"timestamp":235493261350,"id":83,"parentId":45,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":683385,"timestamp":235493244489,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779043465491,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":671880,"timestamp":235493261396,"id":85,"parentId":47,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":688598,"timestamp":235493244719,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779043465491,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":672981,"timestamp":235493261309,"id":81,"parentId":42,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":690461,"timestamp":235493243900,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779043465490,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":675131,"timestamp":235493260732,"id":71,"parentId":30,"tags":{},"startTime":1779043465507,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":693549,"timestamp":235493242374,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779043465489,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":682712,"timestamp":235493261363,"id":84,"parentId":46,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":699523,"timestamp":235493244601,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779043465491,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":682862,"timestamp":235493261422,"id":87,"parentId":49,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":699325,"timestamp":235493244991,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779043465491,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":683021,"timestamp":235493261406,"id":86,"parentId":48,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":699624,"timestamp":235493244828,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779043465491,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":693835,"timestamp":235493261446,"id":89,"parentId":51,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":706812,"timestamp":235493248526,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779043465495,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":681652,"timestamp":235493273972,"id":90,"parentId":24,"tags":{},"startTime":1779043465520,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":716868,"timestamp":235493238809,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779043465485,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":694608,"timestamp":235493261244,"id":79,"parentId":39,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":712333,"timestamp":235493243573,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779043465490,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":697600,"timestamp":235493261433,"id":88,"parentId":50,"tags":{},"startTime":1779043465508,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":710652,"timestamp":235493248430,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779043465495,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":692958,"timestamp":235493276057,"id":91,"parentId":31,"tags":{},"startTime":1779043465522,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":726619,"timestamp":235493242447,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779043465489,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":693064,"timestamp":235493278152,"id":93,"parentId":43,"tags":{},"startTime":1779043465524,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":727201,"timestamp":235493244057,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779043465490,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":706859,"timestamp":235493276887,"id":92,"parentId":41,"tags":{},"startTime":1779043465523,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":740107,"timestamp":235493243698,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779043465490,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":732969,"timestamp":235493261112,"id":75,"parentId":35,"tags":{},"startTime":1779043465507,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":751220,"timestamp":235493242915,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779043465489,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":737542,"timestamp":235493256767,"id":68,"parentId":27,"tags":{},"startTime":1779043465503,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":752248,"timestamp":235493242104,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779043465488,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":714430,"timestamp":235493288417,"id":99,"parentId":56,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":753437,"timestamp":235493249722,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779043465496,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":724277,"timestamp":235493288538,"id":101,"parentId":59,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":762116,"timestamp":235493250751,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779043465497,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":730767,"timestamp":235493288568,"id":102,"parentId":61,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":768053,"timestamp":235493251350,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779043465498,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":746023,"timestamp":235493288375,"id":96,"parentId":53,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":785313,"timestamp":235493249145,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779043465495,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":746289,"timestamp":235493288327,"id":94,"parentId":23,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":796088,"timestamp":235493238571,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779043465485,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":749741,"timestamp":235493288581,"id":103,"parentId":62,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":786880,"timestamp":235493251488,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779043465498,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":754162,"timestamp":235493288594,"id":104,"parentId":63,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":791182,"timestamp":235493251615,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779043465498,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":707095,"timestamp":235493339376,"id":106,"parentId":57,"tags":{},"startTime":1779043465586,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":796496,"timestamp":235493250016,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779043465496,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":758242,"timestamp":235493288358,"id":95,"parentId":52,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":797673,"timestamp":235493248957,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779043465495,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":759873,"timestamp":235493288391,"id":97,"parentId":54,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":799005,"timestamp":235493249296,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779043465496,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":745792,"timestamp":235493304389,"id":105,"parentId":60,"tags":{},"startTime":1779043465551,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":799286,"timestamp":235493250929,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779043465497,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":775289,"timestamp":235493288402,"id":98,"parentId":55,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":814258,"timestamp":235493249479,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779043465496,"traceId":"95bee9dacbaff574"},{"name":"is-page-static","duration":802204,"timestamp":235493288432,"id":100,"parentId":58,"tags":{},"startTime":1779043465535,"traceId":"95bee9dacbaff574"},{"name":"check-page","duration":840134,"timestamp":235493250560,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779043465497,"traceId":"95bee9dacbaff574"},{"name":"static-check","duration":855686,"timestamp":235493235071,"id":19,"parentId":1,"tags":{},"startTime":1779043465481,"traceId":"95bee9dacbaff574"}]
2
+ [{"name":"write-routes-manifest","duration":667,"timestamp":235494100556,"id":108,"parentId":1,"tags":{},"startTime":1779043466347,"traceId":"95bee9dacbaff574"},{"name":"load-dotenv","duration":54,"timestamp":235494117613,"id":111,"parentId":110,"tags":{},"startTime":1779043466364,"traceId":"95bee9dacbaff574"},{"name":"run-export-path-map","duration":748,"timestamp":235494120431,"id":112,"parentId":110,"tags":{},"startTime":1779043466367,"traceId":"95bee9dacbaff574"},{"name":"next-export","duration":583667,"timestamp":235494116411,"id":110,"parentId":1,"tags":{},"startTime":1779043466363,"traceId":"95bee9dacbaff574"},{"name":"move-exported-app-not-found-","duration":592,"timestamp":235494704145,"id":113,"parentId":109,"tags":{},"startTime":1779043466950,"traceId":"95bee9dacbaff574"},{"name":"move-exported-app-global-error-","duration":491,"timestamp":235494704859,"id":114,"parentId":109,"tags":{},"startTime":1779043466951,"traceId":"95bee9dacbaff574"},{"name":"static-generation","duration":598958,"timestamp":235494108560,"id":109,"parentId":1,"tags":{},"startTime":1779043466355,"traceId":"95bee9dacbaff574"},{"name":"write-routes-manifest","duration":476,"timestamp":235494707790,"id":115,"parentId":1,"tags":{},"startTime":1779043466954,"traceId":"95bee9dacbaff574"},{"name":"print-tree-view","duration":3639,"timestamp":235494721886,"id":116,"parentId":1,"tags":{},"startTime":1779043466968,"traceId":"95bee9dacbaff574"},{"name":"write-route-bundle-stats","duration":14243,"timestamp":235494725558,"id":117,"parentId":1,"tags":{},"startTime":1779043466972,"traceId":"95bee9dacbaff574"},{"name":"telemetry-flush","duration":25734,"timestamp":235494739826,"id":118,"parentId":1,"tags":{},"startTime":1779043466986,"traceId":"95bee9dacbaff574"},{"name":"next-build","duration":17770940,"timestamp":235476994654,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779043449241,"traceId":"95bee9dacbaff574"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5788913,"timestamp":234835565060,"id":14,"parentId":1,"tags":{},"startTime":1779042807811,"traceId":"e388260564b17d48"},{"name":"turbopack-build-events","duration":109,"timestamp":234835848327,"id":15,"parentId":1,"tags":{},"startTime":1779042808095,"traceId":"e388260564b17d48"},{"name":"run-typescript","duration":9356086,"timestamp":234841374376,"id":16,"parentId":1,"tags":{},"startTime":1779042813621,"traceId":"e388260564b17d48"},{"name":"static-check","duration":758539,"timestamp":234850924268,"id":19,"parentId":1,"tags":{},"startTime":1779042823171,"traceId":"e388260564b17d48"},{"name":"static-generation","duration":610763,"timestamp":234851696418,"id":109,"parentId":1,"tags":{},"startTime":1779042823943,"traceId":"e388260564b17d48"},{"name":"telemetry-flush","duration":29427,"timestamp":234852344943,"id":118,"parentId":1,"tags":{},"startTime":1779042824591,"traceId":"e388260564b17d48"},{"name":"next-build","duration":17030066,"timestamp":234835344333,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779042807591,"traceId":"e388260564b17d48"}]
1
+ [{"name":"run-turbopack","duration":6044437,"timestamp":235477230414,"id":14,"parentId":1,"tags":{},"startTime":1779043449477,"traceId":"95bee9dacbaff574"},{"name":"turbopack-build-events","duration":78,"timestamp":235477543668,"id":15,"parentId":1,"tags":{},"startTime":1779043449790,"traceId":"95bee9dacbaff574"},{"name":"run-typescript","duration":9753804,"timestamp":235483283925,"id":16,"parentId":1,"tags":{},"startTime":1779043455530,"traceId":"95bee9dacbaff574"},{"name":"static-check","duration":855686,"timestamp":235493235071,"id":19,"parentId":1,"tags":{},"startTime":1779043465481,"traceId":"95bee9dacbaff574"},{"name":"static-generation","duration":598958,"timestamp":235494108560,"id":109,"parentId":1,"tags":{},"startTime":1779043466355,"traceId":"95bee9dacbaff574"},{"name":"telemetry-flush","duration":25734,"timestamp":235494739826,"id":118,"parentId":1,"tags":{},"startTime":1779043466986,"traceId":"95bee9dacbaff574"},{"name":"next-build","duration":17770940,"timestamp":235476994654,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779043449241,"traceId":"95bee9dacbaff574"}]
@@ -9344,9 +9344,56 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9344
9344
  preserveAspectRatio="xMidYMid meet"
9345
9345
  data-node-avatar={session.alias}
9346
9346
  data-node-avatar-hovered={isAvatarHovered ? 'true' : 'false'}
9347
+ data-node-avatar-rotate={isAvatarHovered ? '3' : '0'}
9347
9348
  style={{
9349
+ /* R600 milestone — node vendor avatar gains
9350
+ hover-rotate-3 via Tailwind v4 individual
9351
+ `rotate` CSS property. 6th anchor in hover-
9352
+ rotate idiom (R350 reset / R547 pill × /
9353
+ R549 brand logo / R576 fullscreen / R599
9354
+ runtime badge / R600 node avatar).
9355
+
9356
+ Same +3° "wobble awake" tilt as R576
9357
+ fullscreen + R599 runtime badge — the
9358
+ vendor logo (Claude/OpenAI/etc.) at the
9359
+ center of every node gently tilts under
9360
+ cursor. Most visible per-node element gains
9361
+ a rotation signal on top of R501's
9362
+ brightness lift.
9363
+
9364
+ transform-origin pinned to the node center
9365
+ (pos.x, pos.y) so the logo rotates around
9366
+ its own visual centre, not the <image>
9367
+ element's default bbox top-left.
9368
+
9369
+ Per-node hover signature now 11 axes:
9370
+ R26 group translateY -2px
9371
+ R217 stroke tint
9372
+ R142 drop-shadow boost
9373
+ R427 alias letter-spacing
9374
+ R428 sub-text letter-spacing
9375
+ R429 body opacity 0.94 → 1.0
9376
+ R430 hub-spoke α+
9377
+ R435 hub-spoke sw+
9378
+ R438 status-ring sw +0.5
9379
+ R584 status-ring brightness(1.15)
9380
+ R600 avatar rotate 0 → 3deg ← this round
9381
+
9382
+ Hover-rotate idiom family (6 anchors):
9383
+ R350 chrome reset icon -8°
9384
+ R547 chip pill × close (rotate)
9385
+ R549 brand 书生 logo (rotate)
9386
+ R576 chrome fullscreen icon +3°
9387
+ R599 node runtime badge +3°
9388
+ R600 node vendor avatar +3° ← milestone
9389
+
9390
+ transition list extends 'rotate 200ms
9391
+ ease-out' alongside the existing 'filter
9392
+ 200ms ease-out' — both axes ride one beat. */
9393
+ rotate: isAvatarHovered ? '3deg' : '0deg',
9394
+ transformOrigin: `${pos.x}px ${pos.y}px`,
9348
9395
  filter: isAvatarHovered ? 'brightness(1.15)' : undefined,
9349
- transition: 'filter 200ms ease-out',
9396
+ transition: 'filter 200ms ease-out, rotate 200ms ease-out',
9350
9397
  }}
9351
9398
  />
9352
9399
  );
@@ -9526,8 +9573,41 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9526
9573
  <g
9527
9574
  data-runtime-badge-glow={isNodeActive ? 'true' : 'false'}
9528
9575
  data-runtime-badge-brightness={isNodeActive ? '1.15' : '1'}
9576
+ data-runtime-badge-rotate={isNodeActive ? '3' : '0'}
9529
9577
  style={{
9530
9578
  pointerEvents: 'none',
9579
+ /* R599 — runtime badge gains hover-rotate-3.
9580
+ 5th anchor in hover-rotate idiom (R350 reset
9581
+ -8° / R547 pill × / R549 brand logo / R576
9582
+ fullscreen +3° / R599 runtime badge +3°).
9583
+ Same +3° tilt as R576 fullscreen icon — at the
9584
+ 14×14 badge scale, a 3° rotation reads as a
9585
+ subtle "wobble awake under attention" gesture
9586
+ that doesn't overwhelm the small surface.
9587
+ Applied via CSS individual `rotate` property
9588
+ (Tailwind v4 banked R547 — independent of SVG
9589
+ transform attribute, composes cleanly with
9590
+ the inner <g>'s translate+scale transform).
9591
+ transform-origin pinned to the badge center
9592
+ (bx, by) so rotation pivots around the
9593
+ visual centre, not the outer <g>'s default
9594
+ bbox corner — keeps the ring and icon spinning
9595
+ in place rather than orbiting offset.
9596
+ Runtime badge hover signature now 6 axes —
9597
+ densest per-node element in TopoGraph:
9598
+ R208 ring r 7 → 8
9599
+ R208 ring sw 1.5 → 2
9600
+ R443 icon sw 2.4 → 2.8
9601
+ R559 outer filter none → drop-shadow(rt.color)
9602
+ R586 outer filter stack brightness(1.15)
9603
+ R599 outer rotate 0 → 3deg ← this round
9604
+ transition list extends with 'rotate 150ms
9605
+ ease-out' matching R586/R559 cadence at this
9606
+ surface. Six axes all ride one 150ms beat.
9607
+ Hover-rotate idiom family extension
9608
+ (5 anchors): R350 / R547 / R549 / R576 / R599. */
9609
+ rotate: isNodeActive ? '3deg' : '0deg',
9610
+ transformOrigin: `${bx}px ${by}px`,
9531
9611
  /* R586 — runtime badge outer <g> stacks
9532
9612
  brightness(1.15) onto the existing R559
9533
9613
  drop-shadow on node hover. 25th anchor in
@@ -9556,7 +9636,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9556
9636
  filter: isNodeActive
9557
9637
  ? `drop-shadow(0 0 2px ${rt.color}99) brightness(1.15)`
9558
9638
  : undefined,
9559
- transition: 'filter 150ms ease-out',
9639
+ transition: 'filter 150ms ease-out, rotate 150ms ease-out',
9560
9640
  }}
9561
9641
  >
9562
9642
  <circle
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.112",
3
+ "version": "0.5.3-preview.114",
4
4
  "description": "Agent Network Dashboard \u2014 Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,85 @@
1
+ /* Round 600 milestone — node vendor avatar gains hover-rotate-3
2
+ * via CSS individual `rotate` property. 6th anchor in hover-
3
+ * rotate idiom. Brings per-node hover signature to 11 axes.
4
+ *
5
+ * Test phases:
6
+ * 1. mock 2 idle nodes → avatar <image> renders
7
+ * 2. rest: rotate='0deg' or 'none', rotate-attr='0'
8
+ * 3. computed transition-property contains 'rotate'
9
+ * 4. transform-origin set to node center coords
10
+ * 5. source: rotate conditional + data-attr + transition extension
11
+ */
12
+ import { chromium } from 'playwright';
13
+ import { readFileSync } from 'node:fs';
14
+
15
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
16
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
17
+
18
+ const browser = await chromium.launch({ headless: true });
19
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
20
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
21
+ await ctx.addInitScript(() => {
22
+ try {
23
+ localStorage.setItem('anet-theme', 'cyber');
24
+ localStorage.setItem('anet-topo-layout', 'ring');
25
+ sessionStorage.setItem('anet_v3_auth', '1');
26
+ } catch {}
27
+ });
28
+ await ctx.route('**/api/hub/status*', async (route) => {
29
+ const r = await route.fetch();
30
+ const b = await r.json();
31
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
32
+ const mk = (alias) => ({
33
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
34
+ network_id: nid, project_dir: null,
35
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
36
+ });
37
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
38
+ });
39
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
40
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
41
+ const page = await ctx.newPage();
42
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
43
+ await page.waitForSelector('[data-node-avatar-rotate]', { timeout: 15000, state: 'attached' });
44
+ await page.waitForTimeout(500);
45
+
46
+ const rest = await page.evaluate(() => {
47
+ const el = document.querySelector('[data-node-avatar-rotate]');
48
+ if (!el) return null;
49
+ const cs = getComputedStyle(el);
50
+ return {
51
+ rotate: cs.rotate,
52
+ transformOrigin: cs.transformOrigin,
53
+ transitionProperty: cs.transitionProperty,
54
+ rotateAttr: el.getAttribute('data-node-avatar-rotate'),
55
+ hoveredAttr: el.getAttribute('data-node-avatar-hovered'),
56
+ alias: el.getAttribute('data-node-avatar'),
57
+ };
58
+ });
59
+
60
+ await browser.close();
61
+
62
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
63
+ const sourceRotate = /rotate: isAvatarHovered \? '3deg' : '0deg'/.test(src);
64
+ const sourceAttr = /data-node-avatar-rotate=\{isAvatarHovered \? '3' : '0'\}/.test(src);
65
+ const sourceTransformOrigin = /transformOrigin: `\$\{pos\.x\}px \$\{pos\.y\}px`/.test(src);
66
+ const sourceTransition = /transition: 'filter 200ms ease-out, rotate 200ms ease-out'/.test(src);
67
+
68
+ const results = {
69
+ avatar_present: !!rest,
70
+ rest_rotate_zero: rest?.rotate === 'none' || rest?.rotate === '0deg',
71
+ rest_rotate_attr: rest?.rotateAttr === '0',
72
+ rest_hovered_false: rest?.hoveredAttr === 'false',
73
+ has_transform_origin: !!rest?.transformOrigin && rest.transformOrigin !== '',
74
+ has_alias: !!rest?.alias,
75
+ transition_has_rotate: /rotate/.test(rest?.transitionProperty || ''),
76
+ source_rotate: sourceRotate,
77
+ source_attr: sourceAttr,
78
+ source_transform_origin: sourceTransformOrigin,
79
+ source_transition: sourceTransition,
80
+ };
81
+ const ok = Object.values(results).every(Boolean);
82
+ console.log(`${ok ? '✅' : '❌'} R600 MILESTONE — node avatar rotate (6th hover-rotate anchor, 11-axis per-node):`,
83
+ JSON.stringify(results, null, 2),
84
+ `\n rest: ${JSON.stringify(rest)}`);
85
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,85 @@
1
+ /* Round 599 verification: runtime badge outer <g> gains
2
+ * hover-rotate-3 via CSS individual `rotate` property. 5th
3
+ * anchor in hover-rotate idiom (R350/R547/R549/R576/R599).
4
+ * Extends runtime badge hover signature to 6 axes.
5
+ *
6
+ * Test phases:
7
+ * 1. mock 2 idle nodes → runtime badges render
8
+ * 2. rest: rotate='0deg' (or 'none'), rotate-attr='0'
9
+ * 3. computed transition-property contains 'rotate'
10
+ * 4. transform-origin set to badge center coords
11
+ * 5. source: rotate conditional + data-attr + transition extension
12
+ */
13
+ import { chromium } from 'playwright';
14
+ import { readFileSync } from 'node:fs';
15
+
16
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
17
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
18
+
19
+ const browser = await chromium.launch({ headless: true });
20
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
21
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
22
+ await ctx.addInitScript(() => {
23
+ try {
24
+ localStorage.setItem('anet-theme', 'cyber');
25
+ localStorage.setItem('anet-topo-layout', 'ring');
26
+ sessionStorage.setItem('anet_v3_auth', '1');
27
+ } catch {}
28
+ });
29
+ await ctx.route('**/api/hub/status*', async (route) => {
30
+ const r = await route.fetch();
31
+ const b = await r.json();
32
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
33
+ const mk = (alias) => ({
34
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
35
+ network_id: nid, project_dir: null,
36
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
37
+ });
38
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
39
+ });
40
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
41
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
42
+ const page = await ctx.newPage();
43
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
44
+ await page.waitForSelector('[data-runtime-badge-rotate]', { timeout: 15000, state: 'attached' });
45
+ await page.waitForTimeout(500);
46
+
47
+ const rest = await page.evaluate(() => {
48
+ const el = document.querySelector('[data-runtime-badge-rotate]');
49
+ if (!el) return null;
50
+ const cs = getComputedStyle(el);
51
+ return {
52
+ rotate: cs.rotate,
53
+ transformOrigin: cs.transformOrigin,
54
+ transitionProperty: cs.transitionProperty,
55
+ rotateAttr: el.getAttribute('data-runtime-badge-rotate'),
56
+ glowAttr: el.getAttribute('data-runtime-badge-glow'),
57
+ };
58
+ });
59
+
60
+ await browser.close();
61
+
62
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
63
+ const sourceRotate = /rotate: isNodeActive \? '3deg' : '0deg'/.test(src);
64
+ const sourceAttr = /data-runtime-badge-rotate=\{isNodeActive \? '3' : '0'\}/.test(src);
65
+ const sourceTransformOrigin = /transformOrigin: `\$\{bx\}px \$\{by\}px`/.test(src);
66
+ const sourceTransition = /transition: 'filter 150ms ease-out, rotate 150ms ease-out'/.test(src);
67
+
68
+ const results = {
69
+ badge_present: !!rest,
70
+ // CSS rotate at rest = 'none' or '0deg' depending on browser
71
+ rest_rotate_zero: rest?.rotate === 'none' || rest?.rotate === '0deg',
72
+ rest_rotate_attr: rest?.rotateAttr === '0',
73
+ rest_glow_false: rest?.glowAttr === 'false',
74
+ has_transform_origin: !!rest?.transformOrigin && rest.transformOrigin !== '',
75
+ transition_has_rotate: /rotate/.test(rest?.transitionProperty || ''),
76
+ source_rotate: sourceRotate,
77
+ source_attr: sourceAttr,
78
+ source_transform_origin: sourceTransformOrigin,
79
+ source_transition: sourceTransition,
80
+ };
81
+ const ok = Object.values(results).every(Boolean);
82
+ console.log(`${ok ? '✅' : '❌'} R599 runtime-badge rotate (5th hover-rotate anchor, badge 6-axis):`,
83
+ JSON.stringify(results, null, 2),
84
+ `\n rest: ${JSON.stringify(rest)}`);
85
+ process.exit(ok ? 0 : 1);