@sleep2agi/agent-network-dashboard 0.5.3-preview.212 → 0.5.3-preview.214

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 (156) 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/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +2 -2
  14. package/.next/server/app/_not-found.rsc +2 -2
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/admin.html +2 -2
  23. package/.next/server/app/admin.rsc +2 -2
  24. package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
  25. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  27. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  29. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  30. package/.next/server/app/index.html +2 -2
  31. package/.next/server/app/index.rsc +3 -3
  32. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  33. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  34. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  35. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  36. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  37. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/login.html +2 -2
  39. package/.next/server/app/login.rsc +3 -3
  40. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  41. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  45. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  46. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/logs.html +2 -2
  48. package/.next/server/app/logs.rsc +2 -2
  49. package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
  50. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  52. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  53. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  54. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  55. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/messages.html +2 -2
  57. package/.next/server/app/messages.rsc +2 -2
  58. package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
  59. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  60. package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
  61. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  62. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  63. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  64. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/node.html +2 -2
  66. package/.next/server/app/node.rsc +2 -2
  67. package/.next/server/app/node.segments/_full.segment.rsc +2 -2
  68. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  69. package/.next/server/app/node.segments/_index.segment.rsc +2 -2
  70. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  71. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  72. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  73. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/nodes.html +2 -2
  75. package/.next/server/app/nodes.rsc +2 -2
  76. package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
  77. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  78. package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
  79. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  80. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  81. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  82. package/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/server-logs.html +2 -2
  85. package/.next/server/app/server-logs.rsc +2 -2
  86. package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
  87. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  88. package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
  89. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  90. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  91. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  93. package/.next/server/app/settings/networks.html +2 -2
  94. package/.next/server/app/settings/networks.rsc +2 -2
  95. package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
  96. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  97. package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
  98. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  99. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  100. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  101. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  102. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/settings/tokens.html +2 -2
  105. package/.next/server/app/settings/tokens.rsc +2 -2
  106. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
  109. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  110. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  111. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  112. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  113. package/.next/server/app/settings.html +2 -2
  114. package/.next/server/app/settings.rsc +3 -3
  115. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  116. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  117. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  118. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  119. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  120. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  121. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/tasks.html +2 -2
  124. package/.next/server/app/tasks.rsc +2 -2
  125. package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
  126. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  127. package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
  128. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  129. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  130. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  131. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  132. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  133. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
  134. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  135. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  136. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  137. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  138. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  139. package/.next/server/middleware-build-manifest.js +3 -3
  140. package/.next/server/pages/404.html +2 -2
  141. package/.next/server/pages/500.html +1 -1
  142. package/.next/static/chunks/{054p1--pwg60t.js → 01.zusi543vcw.js} +2 -2
  143. package/.next/static/chunks/{0zj09tmygg8m~.css → 015ne37-~usss.css} +1 -1
  144. package/.next/static/chunks/{0f8..rye42edf.js → 0jsvl5gxdwa~8.js} +1 -1
  145. package/.next/static/chunks/{0b0-7zxsflbws.js → 0l_pwq.exga6r.js} +1 -1
  146. package/.next/static/chunks/{0apd6mdrbto5c.js → 166bgo-m9uv~c.js} +1 -1
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +53 -2
  150. package/app/globals.css +35 -0
  151. package/package.json +1 -1
  152. package/scripts/topo-kicker-breath-test.mjs +100 -0
  153. package/scripts/topo-recent-panel-title-breath-test.mjs +91 -0
  154. /package/.next/static/{V7Zd44BGBcU5vm1jUUEX7 → RxCI2kR5jsmE7yMSsEgbS}/_buildManifest.js +0 -0
  155. /package/.next/static/{V7Zd44BGBcU5vm1jUUEX7 → RxCI2kR5jsmE7yMSsEgbS}/_clientMiddlewareManifest.js +0 -0
  156. /package/.next/static/{V7Zd44BGBcU5vm1jUUEX7 → RxCI2kR5jsmE7yMSsEgbS}/_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.211"],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.213"],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.211"],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.213"],70286)}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":324,"timestamp":394873646422,"id":4,"parentId":1,"tags":{},"startTime":1779202845893,"traceId":"663c734bfb8b5033"},{"name":"load-custom-routes","duration":506,"timestamp":394873646899,"id":5,"parentId":1,"tags":{},"startTime":1779202845893,"traceId":"663c734bfb8b5033"},{"name":"create-dist-dir","duration":719,"timestamp":394873647451,"id":6,"parentId":1,"tags":{},"startTime":1779202845894,"traceId":"663c734bfb8b5033"},{"name":"clean","duration":34455,"timestamp":394873648822,"id":7,"parentId":1,"tags":{},"startTime":1779202845895,"traceId":"663c734bfb8b5033"},{"name":"discover-routes","duration":24301,"timestamp":394873772492,"id":8,"parentId":1,"tags":{},"startTime":1779202846019,"traceId":"663c734bfb8b5033"},{"name":"create-root-mapping","duration":124,"timestamp":394873796856,"id":9,"parentId":1,"tags":{},"startTime":1779202846043,"traceId":"663c734bfb8b5033"},{"name":"generate-route-types","duration":19479,"timestamp":394873799939,"id":10,"parentId":1,"tags":{},"startTime":1779202846046,"traceId":"663c734bfb8b5033"},{"name":"public-dir-conflict-check","duration":99,"timestamp":394873819508,"id":11,"parentId":1,"tags":{},"startTime":1779202846066,"traceId":"663c734bfb8b5033"},{"name":"generate-routes-manifest","duration":4920,"timestamp":394873819732,"id":12,"parentId":1,"tags":{},"startTime":1779202846066,"traceId":"663c734bfb8b5033"},{"name":"run-turbopack","duration":6100801,"timestamp":394873830114,"id":14,"parentId":1,"tags":{},"startTime":1779202846076,"traceId":"663c734bfb8b5033"},{"name":"turbopack-build-events","duration":114,"timestamp":394874135053,"id":15,"parentId":1,"tags":{},"startTime":1779202846381,"traceId":"663c734bfb8b5033"},{"name":"run-typescript","duration":10401599,"timestamp":394879938839,"id":16,"parentId":1,"tags":{},"startTime":1779202852185,"traceId":"663c734bfb8b5033"},{"name":"generate-required-server-files","duration":3169,"timestamp":394890341850,"id":18,"parentId":1,"tags":{},"startTime":1779202862588,"traceId":"663c734bfb8b5033"},{"name":"check-static-error-page","duration":15207,"timestamp":394890537611,"id":20,"parentId":19,"tags":{},"startTime":1779202862784,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":472395,"timestamp":394890557882,"id":65,"parentId":22,"tags":{},"startTime":1779202862804,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":490236,"timestamp":394890540221,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779202862786,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":608376,"timestamp":394890558780,"id":71,"parentId":30,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":623284,"timestamp":394890543977,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779202862790,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":632152,"timestamp":394890558846,"id":72,"parentId":32,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":646801,"timestamp":394890544303,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779202862791,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":642965,"timestamp":394890558254,"id":68,"parentId":27,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":657624,"timestamp":394890543720,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779202862790,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":648034,"timestamp":394890559108,"id":74,"parentId":34,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":662759,"timestamp":394890544476,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779202862791,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":652614,"timestamp":394890558353,"id":69,"parentId":28,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":667248,"timestamp":394890543804,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779202862790,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":677381,"timestamp":394890559024,"id":73,"parentId":33,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":692089,"timestamp":394890544399,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779202862791,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":686084,"timestamp":394890559177,"id":77,"parentId":37,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":699816,"timestamp":394890545517,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779202862792,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":690068,"timestamp":394890559136,"id":75,"parentId":35,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":704709,"timestamp":394890544562,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779202862791,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":690938,"timestamp":394890559193,"id":78,"parentId":38,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":704301,"timestamp":394890545877,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779202862792,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":697687,"timestamp":394890559151,"id":76,"parentId":36,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":711576,"timestamp":394890545318,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779202862792,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":698025,"timestamp":394890559214,"id":80,"parentId":40,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":711176,"timestamp":394890546108,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779202862792,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":702582,"timestamp":394890559238,"id":82,"parentId":44,"tags":{},"startTime":1779202862806,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":714928,"timestamp":394890546939,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779202862793,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":706676,"timestamp":394890559246,"id":83,"parentId":45,"tags":{},"startTime":1779202862806,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":718890,"timestamp":394890547075,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779202862793,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":714604,"timestamp":394890559259,"id":84,"parentId":46,"tags":{},"startTime":1779202862806,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":726731,"timestamp":394890547179,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779202862793,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":722242,"timestamp":394890558029,"id":66,"parentId":25,"tags":{},"startTime":1779202862804,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":736884,"timestamp":394890543450,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779202862790,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":722055,"timestamp":394890558631,"id":70,"parentId":29,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":736866,"timestamp":394890543883,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779202862790,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":721657,"timestamp":394890559271,"id":85,"parentId":47,"tags":{},"startTime":1779202862806,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":731436,"timestamp":394890549530,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779202862796,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":724004,"timestamp":394890559206,"id":79,"parentId":39,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":737262,"timestamp":394890545995,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779202862792,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":729568,"timestamp":394890559306,"id":88,"parentId":50,"tags":{},"startTime":1779202862806,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":739132,"timestamp":394890549791,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779202862796,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":730721,"timestamp":394890559317,"id":89,"parentId":51,"tags":{},"startTime":1779202862806,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":740251,"timestamp":394890549841,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779202862796,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":731441,"timestamp":394890559226,"id":81,"parentId":42,"tags":{},"startTime":1779202862805,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":744226,"timestamp":394890546499,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779202862793,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":721068,"timestamp":394890573126,"id":91,"parentId":31,"tags":{},"startTime":1779202862819,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":751284,"timestamp":394890544085,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779202862790,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":726438,"timestamp":394890569270,"id":90,"parentId":24,"tags":{},"startTime":1779202862816,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":755034,"timestamp":394890540781,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779202862787,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":722534,"timestamp":394890573994,"id":92,"parentId":41,"tags":{},"startTime":1779202862820,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":750367,"timestamp":394890546204,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779202862792,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":724559,"timestamp":394890575348,"id":93,"parentId":43,"tags":{},"startTime":1779202862822,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":753316,"timestamp":394890546631,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779202862793,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":743004,"timestamp":394890558148,"id":67,"parentId":26,"tags":{},"startTime":1779202862804,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":757583,"timestamp":394890543619,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779202862790,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":744250,"timestamp":394890559286,"id":86,"parentId":48,"tags":{},"startTime":1779202862806,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":753932,"timestamp":394890549647,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779202862796,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":760556,"timestamp":394890557489,"id":64,"parentId":21,"tags":{},"startTime":1779202862804,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":779226,"timestamp":394890538889,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779202862785,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":761205,"timestamp":394890559294,"id":87,"parentId":49,"tags":{},"startTime":1779202862806,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":770825,"timestamp":394890549732,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779202862796,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":783065,"timestamp":394890578334,"id":99,"parentId":56,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":810776,"timestamp":394890550702,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779202862797,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":787854,"timestamp":394890578280,"id":95,"parentId":52,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":816024,"timestamp":394890550190,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779202862796,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":794186,"timestamp":394890578492,"id":102,"parentId":61,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":820447,"timestamp":394890552325,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779202862799,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":801058,"timestamp":394890578250,"id":94,"parentId":23,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":838865,"timestamp":394890540528,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779202862787,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":805449,"timestamp":394890578506,"id":103,"parentId":62,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":831565,"timestamp":394890552473,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779202862799,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":807431,"timestamp":394890578320,"id":98,"parentId":55,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":835259,"timestamp":394890550566,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779202862797,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":809022,"timestamp":394890578516,"id":104,"parentId":63,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":834990,"timestamp":394890552597,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779202862799,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":811934,"timestamp":394890578296,"id":96,"parentId":53,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":839962,"timestamp":394890550317,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779202862797,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":811916,"timestamp":394890578471,"id":101,"parentId":59,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":838757,"timestamp":394890551731,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779202862798,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":798364,"timestamp":394890594471,"id":105,"parentId":60,"tags":{},"startTime":1779202862841,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":840996,"timestamp":394890551889,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779202862798,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":789211,"timestamp":394890612573,"id":106,"parentId":57,"tags":{},"startTime":1779202862859,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":850937,"timestamp":394890550893,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779202862797,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":825198,"timestamp":394890578343,"id":100,"parentId":58,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":852039,"timestamp":394890551539,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779202862798,"traceId":"663c734bfb8b5033"},{"name":"is-page-static","duration":829450,"timestamp":394890578306,"id":97,"parentId":54,"tags":{},"startTime":1779202862825,"traceId":"663c734bfb8b5033"},{"name":"check-page","duration":857364,"timestamp":394890550431,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779202862797,"traceId":"663c734bfb8b5033"},{"name":"static-check","duration":871347,"timestamp":394890536504,"id":19,"parentId":1,"tags":{},"startTime":1779202862783,"traceId":"663c734bfb8b5033"}]
2
- [{"name":"write-routes-manifest","duration":502,"timestamp":394891418349,"id":108,"parentId":1,"tags":{},"startTime":1779202863665,"traceId":"663c734bfb8b5033"},{"name":"load-dotenv","duration":56,"timestamp":394891430405,"id":111,"parentId":110,"tags":{},"startTime":1779202863677,"traceId":"663c734bfb8b5033"},{"name":"run-export-path-map","duration":565,"timestamp":394891433325,"id":112,"parentId":110,"tags":{},"startTime":1779202863680,"traceId":"663c734bfb8b5033"},{"name":"next-export","duration":638872,"timestamp":394891429066,"id":110,"parentId":1,"tags":{},"startTime":1779202863675,"traceId":"663c734bfb8b5033"},{"name":"move-exported-app-not-found-","duration":477,"timestamp":394892071141,"id":113,"parentId":109,"tags":{},"startTime":1779202864317,"traceId":"663c734bfb8b5033"},{"name":"move-exported-app-global-error-","duration":377,"timestamp":394892071701,"id":114,"parentId":109,"tags":{},"startTime":1779202864318,"traceId":"663c734bfb8b5033"},{"name":"static-generation","duration":651424,"timestamp":394891422962,"id":109,"parentId":1,"tags":{},"startTime":1779202863669,"traceId":"663c734bfb8b5033"},{"name":"write-routes-manifest","duration":531,"timestamp":394892074673,"id":115,"parentId":1,"tags":{},"startTime":1779202864321,"traceId":"663c734bfb8b5033"},{"name":"print-tree-view","duration":5115,"timestamp":394892095746,"id":116,"parentId":1,"tags":{},"startTime":1779202864342,"traceId":"663c734bfb8b5033"},{"name":"write-route-bundle-stats","duration":15324,"timestamp":394892100899,"id":117,"parentId":1,"tags":{},"startTime":1779202864347,"traceId":"663c734bfb8b5033"},{"name":"telemetry-flush","duration":232234,"timestamp":394892116271,"id":118,"parentId":1,"tags":{},"startTime":1779202864363,"traceId":"663c734bfb8b5033"},{"name":"next-build","duration":18756588,"timestamp":394873591962,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779202845838,"traceId":"663c734bfb8b5033"}]
1
+ [{"name":"generate-buildid","duration":278,"timestamp":396082487427,"id":4,"parentId":1,"tags":{},"startTime":1779204054734,"traceId":"86d0a2be9fcbfb47"},{"name":"load-custom-routes","duration":499,"timestamp":396082487871,"id":5,"parentId":1,"tags":{},"startTime":1779204054734,"traceId":"86d0a2be9fcbfb47"},{"name":"create-dist-dir","duration":731,"timestamp":396082488415,"id":6,"parentId":1,"tags":{},"startTime":1779204054735,"traceId":"86d0a2be9fcbfb47"},{"name":"clean","duration":36211,"timestamp":396082489912,"id":7,"parentId":1,"tags":{},"startTime":1779204054736,"traceId":"86d0a2be9fcbfb47"},{"name":"discover-routes","duration":30865,"timestamp":396082612495,"id":8,"parentId":1,"tags":{},"startTime":1779204054859,"traceId":"86d0a2be9fcbfb47"},{"name":"create-root-mapping","duration":154,"timestamp":396082643437,"id":9,"parentId":1,"tags":{},"startTime":1779204054890,"traceId":"86d0a2be9fcbfb47"},{"name":"generate-route-types","duration":22607,"timestamp":396082646369,"id":10,"parentId":1,"tags":{},"startTime":1779204054893,"traceId":"86d0a2be9fcbfb47"},{"name":"public-dir-conflict-check","duration":114,"timestamp":396082669103,"id":11,"parentId":1,"tags":{},"startTime":1779204054915,"traceId":"86d0a2be9fcbfb47"},{"name":"generate-routes-manifest","duration":5182,"timestamp":396082669362,"id":12,"parentId":1,"tags":{},"startTime":1779204054916,"traceId":"86d0a2be9fcbfb47"},{"name":"run-turbopack","duration":6479079,"timestamp":396082680698,"id":14,"parentId":1,"tags":{},"startTime":1779204054927,"traceId":"86d0a2be9fcbfb47"},{"name":"turbopack-build-events","duration":101,"timestamp":396082983541,"id":15,"parentId":1,"tags":{},"startTime":1779204055230,"traceId":"86d0a2be9fcbfb47"},{"name":"run-typescript","duration":10240721,"timestamp":396089170868,"id":16,"parentId":1,"tags":{},"startTime":1779204061417,"traceId":"86d0a2be9fcbfb47"},{"name":"generate-required-server-files","duration":3303,"timestamp":396099413294,"id":18,"parentId":1,"tags":{},"startTime":1779204071660,"traceId":"86d0a2be9fcbfb47"},{"name":"check-static-error-page","duration":14351,"timestamp":396099685907,"id":20,"parentId":19,"tags":{},"startTime":1779204071932,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":483313,"timestamp":396099704520,"id":65,"parentId":22,"tags":{},"startTime":1779204071951,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":501159,"timestamp":396099690057,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779204071936,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":623821,"timestamp":396099705652,"id":71,"parentId":30,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":635941,"timestamp":396099693650,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779204071940,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":626791,"timestamp":396099704076,"id":64,"parentId":21,"tags":{},"startTime":1779204071950,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":642708,"timestamp":396099688230,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779204071935,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":632085,"timestamp":396099705713,"id":72,"parentId":32,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":643942,"timestamp":396099693921,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779204071940,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":638590,"timestamp":396099704917,"id":67,"parentId":26,"tags":{},"startTime":1779204071951,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":650286,"timestamp":396099693295,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779204071940,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":644065,"timestamp":396099705971,"id":75,"parentId":35,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":655896,"timestamp":396099694201,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779204071940,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":647828,"timestamp":396099705191,"id":69,"parentId":28,"tags":{},"startTime":1779204071951,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":659608,"timestamp":396099693476,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779204071940,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":658689,"timestamp":396099705947,"id":74,"parentId":34,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":670569,"timestamp":396099694123,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779204071940,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":660258,"timestamp":396099704790,"id":66,"parentId":25,"tags":{},"startTime":1779204071951,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":671935,"timestamp":396099693159,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779204071939,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":663140,"timestamp":396099706042,"id":77,"parentId":37,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":674551,"timestamp":396099694676,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779204071941,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":664416,"timestamp":396099705062,"id":68,"parentId":27,"tags":{},"startTime":1779204071951,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":676134,"timestamp":396099693388,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779204071940,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":669421,"timestamp":396099706081,"id":80,"parentId":40,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":680663,"timestamp":396099694894,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779204071941,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":678494,"timestamp":396099706056,"id":78,"parentId":38,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":689848,"timestamp":396099694766,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779204071941,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":678856,"timestamp":396099706093,"id":81,"parentId":42,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":689868,"timestamp":396099695168,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779204071941,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":681727,"timestamp":396099706115,"id":83,"parentId":45,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":692260,"timestamp":396099695627,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779204071942,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":685881,"timestamp":396099706139,"id":85,"parentId":47,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":696311,"timestamp":396099695765,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779204071942,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":689111,"timestamp":396099705994,"id":76,"parentId":36,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":700599,"timestamp":396099694558,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779204071941,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":690504,"timestamp":396099706152,"id":86,"parentId":48,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":699501,"timestamp":396099697211,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779204071943,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":690741,"timestamp":396099706102,"id":82,"parentId":44,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":701346,"timestamp":396099695529,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779204071942,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":695526,"timestamp":396099706128,"id":84,"parentId":46,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":706011,"timestamp":396099695688,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779204071942,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":696654,"timestamp":396099706175,"id":88,"parentId":50,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":705404,"timestamp":396099697469,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779204071944,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":690721,"timestamp":396099720354,"id":91,"parentId":31,"tags":{},"startTime":1779204071967,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":717404,"timestamp":396099693725,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779204071940,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":709853,"timestamp":396099706163,"id":87,"parentId":49,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":718685,"timestamp":396099697389,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779204071944,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":698395,"timestamp":396099718969,"id":90,"parentId":24,"tags":{},"startTime":1779204071965,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":726241,"timestamp":396099691169,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779204071937,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":698734,"timestamp":396099721253,"id":92,"parentId":41,"tags":{},"startTime":1779204071968,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":725113,"timestamp":396099694953,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779204071941,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":695599,"timestamp":396099725758,"id":93,"parentId":43,"tags":{},"startTime":1779204071972,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":726131,"timestamp":396099695269,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779204071942,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":715687,"timestamp":396099706069,"id":79,"parentId":39,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":726976,"timestamp":396099694830,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779204071941,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":720175,"timestamp":396099706183,"id":89,"parentId":51,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":728896,"timestamp":396099697521,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779204071944,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":722535,"timestamp":396099705485,"id":70,"parentId":29,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":734519,"timestamp":396099693554,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779204071940,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":728950,"timestamp":396099705872,"id":73,"parentId":33,"tags":{},"startTime":1779204071952,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":740844,"timestamp":396099694035,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779204071940,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":720065,"timestamp":396099728446,"id":100,"parentId":58,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":749688,"timestamp":396099698895,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779204071945,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":732230,"timestamp":396099728562,"id":101,"parentId":59,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":761808,"timestamp":396099699055,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779204071945,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":743779,"timestamp":396099728586,"id":102,"parentId":61,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":772811,"timestamp":396099699653,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779204071946,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":755678,"timestamp":396099728398,"id":96,"parentId":53,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":786259,"timestamp":396099697892,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779204071944,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":758674,"timestamp":396099728605,"id":103,"parentId":62,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":787542,"timestamp":396099699808,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779204071946,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":763726,"timestamp":396099728383,"id":95,"parentId":52,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":794387,"timestamp":396099697796,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779204071944,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":763855,"timestamp":396099728615,"id":104,"parentId":63,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":792545,"timestamp":396099699968,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779204071946,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":752089,"timestamp":396099743295,"id":105,"parentId":60,"tags":{},"startTime":1779204071990,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":796208,"timestamp":396099699224,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779204071945,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":768773,"timestamp":396099728335,"id":94,"parentId":23,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":806226,"timestamp":396099690926,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779204071937,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":770265,"timestamp":396099728422,"id":98,"parentId":55,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":800547,"timestamp":396099698188,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779204071944,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":717387,"timestamp":396099782204,"id":106,"parentId":57,"tags":{},"startTime":1779204072028,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":801094,"timestamp":396099698531,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779204071945,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":772902,"timestamp":396099728408,"id":97,"parentId":54,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":803373,"timestamp":396099697992,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779204071944,"traceId":"86d0a2be9fcbfb47"},{"name":"is-page-static","duration":796667,"timestamp":396099728436,"id":99,"parentId":56,"tags":{},"startTime":1779204071975,"traceId":"86d0a2be9fcbfb47"},{"name":"check-page","duration":826813,"timestamp":396099698362,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779204071945,"traceId":"86d0a2be9fcbfb47"},{"name":"static-check","duration":840697,"timestamp":396099684525,"id":19,"parentId":1,"tags":{},"startTime":1779204071931,"traceId":"86d0a2be9fcbfb47"}]
2
+ [{"name":"write-routes-manifest","duration":504,"timestamp":396100535856,"id":108,"parentId":1,"tags":{},"startTime":1779204072782,"traceId":"86d0a2be9fcbfb47"},{"name":"load-dotenv","duration":49,"timestamp":396100546714,"id":111,"parentId":110,"tags":{},"startTime":1779204072793,"traceId":"86d0a2be9fcbfb47"},{"name":"run-export-path-map","duration":609,"timestamp":396100549893,"id":112,"parentId":110,"tags":{},"startTime":1779204072796,"traceId":"86d0a2be9fcbfb47"},{"name":"next-export","duration":674385,"timestamp":396100545502,"id":110,"parentId":1,"tags":{},"startTime":1779204072792,"traceId":"86d0a2be9fcbfb47"},{"name":"move-exported-app-not-found-","duration":515,"timestamp":396101223153,"id":113,"parentId":109,"tags":{},"startTime":1779204073469,"traceId":"86d0a2be9fcbfb47"},{"name":"move-exported-app-global-error-","duration":384,"timestamp":396101223761,"id":114,"parentId":109,"tags":{},"startTime":1779204073470,"traceId":"86d0a2be9fcbfb47"},{"name":"static-generation","duration":686426,"timestamp":396100539892,"id":109,"parentId":1,"tags":{},"startTime":1779204072786,"traceId":"86d0a2be9fcbfb47"},{"name":"write-routes-manifest","duration":409,"timestamp":396101226558,"id":115,"parentId":1,"tags":{},"startTime":1779204073473,"traceId":"86d0a2be9fcbfb47"},{"name":"print-tree-view","duration":4838,"timestamp":396101245820,"id":116,"parentId":1,"tags":{},"startTime":1779204073492,"traceId":"86d0a2be9fcbfb47"},{"name":"write-route-bundle-stats","duration":13672,"timestamp":396101250701,"id":117,"parentId":1,"tags":{},"startTime":1779204073497,"traceId":"86d0a2be9fcbfb47"},{"name":"telemetry-flush","duration":23953,"timestamp":396101264409,"id":118,"parentId":1,"tags":{},"startTime":1779204073511,"traceId":"86d0a2be9fcbfb47"},{"name":"next-build","duration":18854430,"timestamp":396082433973,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779204054680,"traceId":"86d0a2be9fcbfb47"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6100801,"timestamp":394873830114,"id":14,"parentId":1,"tags":{},"startTime":1779202846076,"traceId":"663c734bfb8b5033"},{"name":"turbopack-build-events","duration":114,"timestamp":394874135053,"id":15,"parentId":1,"tags":{},"startTime":1779202846381,"traceId":"663c734bfb8b5033"},{"name":"run-typescript","duration":10401599,"timestamp":394879938839,"id":16,"parentId":1,"tags":{},"startTime":1779202852185,"traceId":"663c734bfb8b5033"},{"name":"static-check","duration":871347,"timestamp":394890536504,"id":19,"parentId":1,"tags":{},"startTime":1779202862783,"traceId":"663c734bfb8b5033"},{"name":"static-generation","duration":651424,"timestamp":394891422962,"id":109,"parentId":1,"tags":{},"startTime":1779202863669,"traceId":"663c734bfb8b5033"},{"name":"telemetry-flush","duration":232234,"timestamp":394892116271,"id":118,"parentId":1,"tags":{},"startTime":1779202864363,"traceId":"663c734bfb8b5033"},{"name":"next-build","duration":18756588,"timestamp":394873591962,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779202845838,"traceId":"663c734bfb8b5033"}]
1
+ [{"name":"run-turbopack","duration":6479079,"timestamp":396082680698,"id":14,"parentId":1,"tags":{},"startTime":1779204054927,"traceId":"86d0a2be9fcbfb47"},{"name":"turbopack-build-events","duration":101,"timestamp":396082983541,"id":15,"parentId":1,"tags":{},"startTime":1779204055230,"traceId":"86d0a2be9fcbfb47"},{"name":"run-typescript","duration":10240721,"timestamp":396089170868,"id":16,"parentId":1,"tags":{},"startTime":1779204061417,"traceId":"86d0a2be9fcbfb47"},{"name":"static-check","duration":840697,"timestamp":396099684525,"id":19,"parentId":1,"tags":{},"startTime":1779204071931,"traceId":"86d0a2be9fcbfb47"},{"name":"static-generation","duration":686426,"timestamp":396100539892,"id":109,"parentId":1,"tags":{},"startTime":1779204072786,"traceId":"86d0a2be9fcbfb47"},{"name":"telemetry-flush","duration":23953,"timestamp":396101264409,"id":118,"parentId":1,"tags":{},"startTime":1779204073511,"traceId":"86d0a2be9fcbfb47"},{"name":"next-build","duration":18854430,"timestamp":396082433973,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779204054680,"traceId":"86d0a2be9fcbfb47"}]
@@ -2043,7 +2043,28 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2043
2043
  independent gesture vocabularies.
2044
2044
  data-topo-section-kicker-hover-tracking + -hover-color
2045
2045
  attrs expose the landing values for tests. */}
2046
- <div className="text-xs uppercase text-gray-500 group-hover:text-gray-400 tracking-widest group-hover:tracking-[0.13em] transition-[letter-spacing,color] duration-200 ease-out leading-tight font-medium" data-topo-section-kicker data-topo-section-kicker-hover-tracking="0.13em" data-topo-section-kicker-hover-color="text-gray-400" data-topo-section-kicker-halo-layers="2">Network Topology</div>
2046
+ {/* Round 699 / Loop: kicker gains a slow at-rest breathing
2047
+ fade — opacity 0.78 ↔ 1 at 6s ease-in-out infinite, via
2048
+ `.anet-topo-kicker-breath` (globals.css). Pre-R699 the
2049
+ kicker sat at a fixed alpha; the H2 below has a live
2050
+ breathing pulse cycle (`anet-current-step-pulse-kf` family
2051
+ cousins exist) but the kicker eyebrow itself was static.
2052
+ R699 adds a 6s respiration — visible but never agitating.
2053
+ When hovered, the group-hover:text-gray-400 (R685 halo +
2054
+ R555 tracking-expand) takes over, so the breath only
2055
+ registers at rest. prefers-reduced-motion neutralizes the
2056
+ keyframe (animation: none) inside the CSS class.
2057
+
2058
+ Geometry-safe: pure opacity animation, no transform / size /
2059
+ filter blur change → bounding box stable → topo-overlap-test
2060
+ unaffected at both grid + ring. First respiratory anchor
2061
+ on the title-block — sibling to the chip-row gesture grammar
2062
+ (R697/R698 wrapper halos) but operating on a different
2063
+ axis (rest-state aliveness vs hover gesture).
2064
+
2065
+ data-topo-section-kicker-breath="6s" attr surfaces the
2066
+ cadence for tests. */}
2067
+ <div className="anet-topo-kicker-breath text-xs uppercase text-gray-500 group-hover:text-gray-400 tracking-widest group-hover:tracking-[0.13em] transition-[letter-spacing,color] duration-200 ease-out leading-tight font-medium" data-topo-section-kicker data-topo-section-kicker-hover-tracking="0.13em" data-topo-section-kicker-hover-color="text-gray-400" data-topo-section-kicker-halo-layers="2" data-topo-section-kicker-breath="6s">Network Topology</div>
2047
2068
  {/* Round 286 / Loop: title 'Command mesh' adopts tracking-tight
2048
2069
  (-0.025em) to complement R285 kicker tracking-widest. Wide
2049
2070
  eyebrow + tight headline is the conventional editorial
@@ -12422,7 +12443,37 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
12422
12443
  panels now have brightness in their active signature
12423
12444
  at BOTH chrome tiers (title + row text), completing
12424
12445
  the panel paint-axis cascade. */}
12425
- <text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight={activeEdgeKey ? '800' : '700'} letterSpacing={hoveredPanel === 'recent' ? '0.4' : '0.3'} style={{ transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out, filter 200ms ease-out', filter: activeEdgeKey ? `drop-shadow(0 0 2px ${pal.legendAccent}80) drop-shadow(0 0 4px ${pal.legendAccent}40) brightness(1.15)` : undefined }} data-recent-panel-title data-recent-panel-title-fw={activeEdgeKey ? '800' : '700'} data-recent-panel-title-active={activeEdgeKey ? 'true' : 'false'} data-recent-panel-title-glow={activeEdgeKey ? 'true' : 'false'} data-recent-panel-title-brightness={activeEdgeKey ? '1.15' : '1'}>recent signal</text>
12446
+ {/* Round 700 / Loop (milestone) recent panel title gains
12447
+ at-rest SVG opacity breath, paired with R699 kicker breath.
12448
+ The respiratory rolodex (each surface a distinct cadence,
12449
+ cleanly factored):
12450
+ row hot 3 s (recent-row hot pip)
12451
+ hub idle 4 s
12452
+ brand logo 5 s
12453
+ watermark 6 s (canvas bottom-left text)
12454
+ kicker eyebrow 6 s (R699 — Network Topology)
12455
+ recent panel title 8 s (R700 — this round)
12456
+ crescent moon 7 s
12457
+ The new 8 s tier sits between watermark/kicker (6 s) and
12458
+ hub idle (4 s) at the slow end — recent panel title is a
12459
+ section-grade label, so a calm, longer breath fits its
12460
+ "section is alive" semantics. The pinned-state filter
12461
+ glow (activeEdgeKey true) takes precedence: when a row
12462
+ inside the panel is pinned, the breath GATES OFF and the
12463
+ R550 glow + R482 fw-800 + R345 ls-0.4 active triplet
12464
+ holds steady. So the breath only registers at rest —
12465
+ same pattern as R699 kicker (group-hover overrides).
12466
+
12467
+ Implementation: conditional SVG `<animate>` child element,
12468
+ same pattern as the R519 brand watermark breath at 6 s
12469
+ (line ~15320). `<animate>` is paint-only (opacity);
12470
+ bounding box stays fixed; topo-overlap-test untouched.
12471
+ reducedMotion gate already standard across the family —
12472
+ guard inline. data-recent-panel-title-breath attr
12473
+ surfaces the gate state for tests. */}
12474
+ <text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight={activeEdgeKey ? '800' : '700'} letterSpacing={hoveredPanel === 'recent' ? '0.4' : '0.3'} style={{ transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out, filter 200ms ease-out', filter: activeEdgeKey ? `drop-shadow(0 0 2px ${pal.legendAccent}80) drop-shadow(0 0 4px ${pal.legendAccent}40) brightness(1.15)` : undefined }} data-recent-panel-title data-recent-panel-title-fw={activeEdgeKey ? '800' : '700'} data-recent-panel-title-active={activeEdgeKey ? 'true' : 'false'} data-recent-panel-title-glow={activeEdgeKey ? 'true' : 'false'} data-recent-panel-title-brightness={activeEdgeKey ? '1.15' : '1'} data-recent-panel-title-breath={!reducedMotion && !activeEdgeKey ? '8s' : 'off'}>recent signal{!reducedMotion && !activeEdgeKey && (
12475
+ <animate attributeName="opacity" values="0.78;1;0.78" dur="8s" repeatCount="indefinite" />
12476
+ )}</text>
12426
12477
  {/* R96: header count now matches what the rows show. Pre-R96
12427
12478
  this read "X msgs" off the raw messages array, but the
12428
12479
  rows below render DEDUPED flowLinks — so a fleet with 10
package/app/globals.css CHANGED
@@ -1261,6 +1261,41 @@ body {
1261
1261
  filter 200ms ease-out;
1262
1262
  }
1263
1263
 
1264
+ /* ─────────────────────────────────────────────────────────────────────
1265
+ Round 699 — kicker "Network Topology" at-rest breathing fade.
1266
+
1267
+ The H2 below ("Command mesh") already had its hover halo via the R684
1268
+ descendant rule; the kicker eyebrow above had R685 hover halo + R555
1269
+ tracking-expand, but at REST it sat at a fixed alpha — static, no
1270
+ sign of life. R699 adds a slow respiratory cycle (opacity 0.78 ↔ 1
1271
+ at 6 s ease-in-out infinite) on `.anet-topo-kicker-breath`.
1272
+
1273
+ 6 s is deliberately ~3× slower than the sidebar brand-pulse (1.6 s)
1274
+ and the recent-hot pulse (3 s) — kicker isn't signaling urgency, just
1275
+ "this section is alive". Group-hover overrides via R555/R685 take
1276
+ precedence the moment user enters the title-block, so the breath
1277
+ never competes with the gesture vocabulary.
1278
+
1279
+ Pure opacity: no transform / no filter blur / no size change → text
1280
+ bounding box stable → topo-overlap-test grid + ring untouched. Pairs
1281
+ sequentially with `anet-brand-pulse-kf` (1.6 s, brand status) and
1282
+ `anet-recent-hot-pulse-kf` (3 s, recent-signal heat) as the third
1283
+ distinct respiratory rhythm in the topo canvas.
1284
+
1285
+ prefers-reduced-motion: reduce → animation: none (kicker freezes at
1286
+ resting alpha = 1, sibling to other R29-family motion guards).
1287
+ ───────────────────────────────────────────────────────────────────── */
1288
+ @keyframes anet-topo-kicker-breath-kf {
1289
+ 0%, 100% { opacity: 1; }
1290
+ 50% { opacity: 0.78; }
1291
+ }
1292
+ .anet-topo-kicker-breath {
1293
+ animation: anet-topo-kicker-breath-kf 6s ease-in-out infinite;
1294
+ }
1295
+ @media (prefers-reduced-motion: reduce) {
1296
+ .anet-topo-kicker-breath { animation: none; }
1297
+ }
1298
+
1264
1299
  /* ─────────────────────────────────────────────────────────────────────
1265
1300
  Round 29 — prefers-reduced-motion a11y sweep
1266
1301
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.212",
3
+ "version": "0.5.3-preview.214",
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,100 @@
1
+ /* Round 699 — kicker "Network Topology" gains at-rest breathing fade.
2
+ * Pre-R699 the kicker eyebrow sat at fixed alpha (text-gray-500 token)
3
+ * — static, no sign of life. R699 adds a 6s opacity 0.78↔1 cycle via
4
+ * `.anet-topo-kicker-breath` (globals.css). Pure opacity → geometry
5
+ * stable → topo-overlap-test unaffected.
6
+ *
7
+ * Source assertions:
8
+ * - globals.css @keyframes anet-topo-kicker-breath-kf with 0/100% 1, 50% 0.78
9
+ * - globals.css .anet-topo-kicker-breath rule with 6s ease-in-out infinite
10
+ * - globals.css prefers-reduced-motion guard: animation: none
11
+ * - TopoGraph.tsx kicker element has class anet-topo-kicker-breath
12
+ * - TopoGraph.tsx kicker element has data-topo-section-kicker-breath="6s"
13
+ *
14
+ * Runtime assertions:
15
+ * - kicker element present
16
+ * - kicker has anet-topo-kicker-breath class
17
+ * - computed animation-name reflects the keyframe (or 'none' under reduced-motion)
18
+ * - computed animation-duration is 6s
19
+ */
20
+ import { chromium } from 'playwright';
21
+ import { readFileSync } from 'node:fs';
22
+
23
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
24
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
25
+
26
+ const browser = await chromium.launch({ headless: true });
27
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
28
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
29
+ await ctx.addInitScript(() => {
30
+ try {
31
+ localStorage.setItem('anet-theme', 'cyber');
32
+ localStorage.setItem('anet-topo-layout', 'ring');
33
+ sessionStorage.setItem('anet_v3_auth', '1');
34
+ } catch {}
35
+ });
36
+ await ctx.route('**/api/hub/status*', async (route) => {
37
+ const r = await route.fetch();
38
+ const b = await r.json();
39
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
40
+ const mk = (alias) => ({
41
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
42
+ network_id: nid, project_dir: null,
43
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
44
+ });
45
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
46
+ });
47
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
48
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
49
+ const page = await ctx.newPage();
50
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
51
+ await page.waitForSelector('[data-topo-section-kicker]', { timeout: 15000, state: 'attached' });
52
+ await page.waitForTimeout(300);
53
+
54
+ const runtimeState = await page.evaluate(() => {
55
+ const k = document.querySelector('[data-topo-section-kicker]');
56
+ if (!k) return null;
57
+ const cs = getComputedStyle(k);
58
+ return {
59
+ has_class: k.classList.contains('anet-topo-kicker-breath'),
60
+ breath_attr: k.getAttribute('data-topo-section-kicker-breath'),
61
+ anim_name: cs.animationName,
62
+ anim_duration: cs.animationDuration,
63
+ anim_iter: cs.animationIterationCount,
64
+ };
65
+ });
66
+
67
+ await browser.close();
68
+
69
+ const cssSrc = readFileSync('/home/vansin/agent-network-dashboard/app/globals.css', 'utf8');
70
+ const tsxSrc = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
71
+
72
+ const cssKeyframes = /@keyframes anet-topo-kicker-breath-kf\s*\{[\s\S]*?0%, 100%\s*\{\s*opacity:\s*1;\s*\}[\s\S]*?50%\s*\{\s*opacity:\s*0\.78;/.test(cssSrc);
73
+ const cssRule = /\.anet-topo-kicker-breath\s*\{[\s\S]*?animation:\s*anet-topo-kicker-breath-kf\s+6s\s+ease-in-out\s+infinite/.test(cssSrc);
74
+ const cssReducedMotion = /prefers-reduced-motion:\s*reduce\s*\)\s*\{\s*\.anet-topo-kicker-breath\s*\{\s*animation:\s*none/.test(cssSrc);
75
+ const tsxClass = /anet-topo-kicker-breath text-xs uppercase/.test(tsxSrc);
76
+ const tsxAttr = /data-topo-section-kicker-breath="6s"/.test(tsxSrc);
77
+
78
+ // Runtime animation may be 'none' under prefers-reduced-motion. In default
79
+ // headless playwright, motion is allowed by default, so the keyframe should
80
+ // be active (anim_name === 'anet-topo-kicker-breath-kf').
81
+ const runtimeAnim = runtimeState?.anim_name === 'anet-topo-kicker-breath-kf' || runtimeState?.anim_name === 'none';
82
+ const runtimeDuration = runtimeState?.anim_duration === '6s' || runtimeState?.anim_name === 'none';
83
+
84
+ const results = {
85
+ kicker_present: !!runtimeState,
86
+ has_breath_class: runtimeState?.has_class === true,
87
+ breath_attr_6s: runtimeState?.breath_attr === '6s',
88
+ runtime_anim_ok: runtimeAnim,
89
+ runtime_duration_ok: runtimeDuration,
90
+ css_keyframes: cssKeyframes,
91
+ css_rule: cssRule,
92
+ css_reduced_motion: cssReducedMotion,
93
+ tsx_class: tsxClass,
94
+ tsx_breath_attr: tsxAttr,
95
+ };
96
+ const ok = Object.values(results).every(Boolean);
97
+ console.log(`${ok ? '✅' : '❌'} R699 kicker at-rest breathing fade (3rd respiratory rhythm — 6s eyebrow):`,
98
+ JSON.stringify(results, null, 2),
99
+ `\n runtime: ${JSON.stringify(runtimeState)}`);
100
+ process.exit(ok ? 0 : 1);