@sleep2agi/agent-network-dashboard 0.5.3-preview.220 → 0.5.3-preview.222

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 (157) 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/04ruiiu59mljf.css +2 -0
  143. package/.next/static/chunks/{090el2nj92~9k.js → 077~rg69qh5o3.js} +1 -1
  144. package/.next/static/chunks/{0ua3qnri0i81x.js → 07d7zy9wl4vk2.js} +1 -1
  145. package/.next/static/chunks/{0bdnkx3fvtw2t.js → 0kx76vrbr-92g.js} +2 -2
  146. package/.next/static/chunks/{0febdempmtc5e.js → 0ml5t76-h98oo.js} +1 -1
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +73 -2
  150. package/app/globals.css +52 -0
  151. package/package.json +1 -1
  152. package/scripts/topo-chrome-layout-trailer-breath-test.mjs +86 -0
  153. package/scripts/topo-chrome-nodesize-trailer-breath-test.mjs +86 -0
  154. package/.next/static/chunks/0jjd-epm-pvht.css +0 -2
  155. /package/.next/static/{Q5dzAC2O1le81YYmwsgi2 → O5UmllH_zXMSX1WZ4GxZw}/_buildManifest.js +0 -0
  156. /package/.next/static/{Q5dzAC2O1le81YYmwsgi2 → O5UmllH_zXMSX1WZ4GxZw}/_clientMiddlewareManifest.js +0 -0
  157. /package/.next/static/{Q5dzAC2O1le81YYmwsgi2 → O5UmllH_zXMSX1WZ4GxZw}/_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.219"],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.221"],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 →"})]})]})]})]})]})}])}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":299,"timestamp":401239963752,"id":4,"parentId":1,"tags":{},"startTime":1779209212210,"traceId":"44aff18d95b25b22"},{"name":"load-custom-routes","duration":477,"timestamp":401239964225,"id":5,"parentId":1,"tags":{},"startTime":1779209212211,"traceId":"44aff18d95b25b22"},{"name":"create-dist-dir","duration":751,"timestamp":401239964743,"id":6,"parentId":1,"tags":{},"startTime":1779209212211,"traceId":"44aff18d95b25b22"},{"name":"clean","duration":36023,"timestamp":401239966192,"id":7,"parentId":1,"tags":{},"startTime":1779209212212,"traceId":"44aff18d95b25b22"},{"name":"discover-routes","duration":29154,"timestamp":401240082999,"id":8,"parentId":1,"tags":{},"startTime":1779209212329,"traceId":"44aff18d95b25b22"},{"name":"create-root-mapping","duration":164,"timestamp":401240112236,"id":9,"parentId":1,"tags":{},"startTime":1779209212359,"traceId":"44aff18d95b25b22"},{"name":"generate-route-types","duration":24466,"timestamp":401240115888,"id":10,"parentId":1,"tags":{},"startTime":1779209212362,"traceId":"44aff18d95b25b22"},{"name":"public-dir-conflict-check","duration":146,"timestamp":401240140498,"id":11,"parentId":1,"tags":{},"startTime":1779209212387,"traceId":"44aff18d95b25b22"},{"name":"generate-routes-manifest","duration":5153,"timestamp":401240140818,"id":12,"parentId":1,"tags":{},"startTime":1779209212387,"traceId":"44aff18d95b25b22"},{"name":"run-turbopack","duration":7366559,"timestamp":401240152180,"id":14,"parentId":1,"tags":{},"startTime":1779209212398,"traceId":"44aff18d95b25b22"},{"name":"turbopack-build-events","duration":115,"timestamp":401240489429,"id":15,"parentId":1,"tags":{},"startTime":1779209212736,"traceId":"44aff18d95b25b22"},{"name":"run-typescript","duration":11084261,"timestamp":401247527198,"id":16,"parentId":1,"tags":{},"startTime":1779209219773,"traceId":"44aff18d95b25b22"},{"name":"generate-required-server-files","duration":3780,"timestamp":401258613191,"id":18,"parentId":1,"tags":{},"startTime":1779209230859,"traceId":"44aff18d95b25b22"},{"name":"check-static-error-page","duration":15471,"timestamp":401258830942,"id":20,"parentId":19,"tags":{},"startTime":1779209231077,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":527169,"timestamp":401258849599,"id":65,"parentId":22,"tags":{},"startTime":1779209231096,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":542683,"timestamp":401258834263,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779209231081,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":615212,"timestamp":401258850931,"id":69,"parentId":28,"tags":{},"startTime":1779209231097,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":628262,"timestamp":401258837986,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779209231084,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":621671,"timestamp":401258851473,"id":72,"parentId":32,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":634402,"timestamp":401258838823,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779209231085,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":669693,"timestamp":401258851661,"id":73,"parentId":33,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":682456,"timestamp":401258838981,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779209231085,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":672426,"timestamp":401258849207,"id":64,"parentId":21,"tags":{},"startTime":1779209231095,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":689048,"timestamp":401258832631,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779209231079,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":670696,"timestamp":401258851405,"id":71,"parentId":30,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":683833,"timestamp":401258838330,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779209231085,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":687593,"timestamp":401258851747,"id":74,"parentId":34,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":700272,"timestamp":401258839155,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779209231085,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":691300,"timestamp":401258851796,"id":76,"parentId":36,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":703296,"timestamp":401258839860,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779209231086,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":700011,"timestamp":401258849749,"id":66,"parentId":25,"tags":{},"startTime":1779209231096,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":712319,"timestamp":401258837511,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779209231084,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":706058,"timestamp":401258851846,"id":79,"parentId":39,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":717593,"timestamp":401258840369,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779209231087,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":721629,"timestamp":401258851818,"id":77,"parentId":37,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":733434,"timestamp":401258840076,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779209231086,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":721950,"timestamp":401258851833,"id":78,"parentId":38,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":733587,"timestamp":401258840233,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779209231087,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":741706,"timestamp":401258851883,"id":82,"parentId":44,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":750621,"timestamp":401258843059,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779209231089,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":745160,"timestamp":401258851899,"id":83,"parentId":45,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":753913,"timestamp":401258843212,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779209231089,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":750129,"timestamp":401258850774,"id":68,"parentId":27,"tags":{},"startTime":1779209231097,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":763135,"timestamp":401258837831,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779209231084,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":751243,"timestamp":401258851908,"id":84,"parentId":46,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":759884,"timestamp":401258843324,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779209231090,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":751639,"timestamp":401258851860,"id":80,"parentId":40,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":763056,"timestamp":401258840498,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779209231087,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":753714,"timestamp":401258851869,"id":81,"parentId":42,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":764745,"timestamp":401258840899,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779209231087,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":756560,"timestamp":401258851933,"id":86,"parentId":48,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":764960,"timestamp":401258843579,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779209231090,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":756753,"timestamp":401258851921,"id":85,"parentId":47,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":765247,"timestamp":401258843460,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779209231090,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":759696,"timestamp":401258851942,"id":87,"parentId":49,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":768008,"timestamp":401258843710,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779209231090,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":762026,"timestamp":401258851776,"id":75,"parentId":35,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":774536,"timestamp":401258839317,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779209231086,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":762880,"timestamp":401258851954,"id":88,"parentId":50,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":774236,"timestamp":401258843817,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779209231090,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":753764,"timestamp":401258864472,"id":91,"parentId":31,"tags":{},"startTime":1779209231111,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":779764,"timestamp":401258838503,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779209231085,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":757565,"timestamp":401258866457,"id":93,"parentId":43,"tags":{},"startTime":1779209231113,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":782986,"timestamp":401258841081,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779209231087,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":760179,"timestamp":401258865271,"id":92,"parentId":41,"tags":{},"startTime":1779209231112,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":784879,"timestamp":401258840621,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779209231087,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":784191,"timestamp":401258849858,"id":67,"parentId":26,"tags":{},"startTime":1779209231096,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":796412,"timestamp":401258837691,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779209231084,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":764794,"timestamp":401258869473,"id":96,"parentId":53,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":789835,"timestamp":401258844483,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779209231091,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":789858,"timestamp":401258851967,"id":89,"parentId":51,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":797960,"timestamp":401258843924,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779209231090,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":791824,"timestamp":401258851234,"id":70,"parentId":29,"tags":{},"startTime":1779209231098,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":804942,"timestamp":401258838158,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779209231084,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":779106,"timestamp":401258869493,"id":98,"parentId":55,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":803929,"timestamp":401258844727,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779209231091,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":788001,"timestamp":401258869612,"id":101,"parentId":59,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":812062,"timestamp":401258845621,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779209231092,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":796336,"timestamp":401258869629,"id":102,"parentId":61,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":820082,"timestamp":401258846033,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779209231092,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":816388,"timestamp":401258859339,"id":90,"parentId":24,"tags":{},"startTime":1779209231106,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":840941,"timestamp":401258834851,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779209231081,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":811228,"timestamp":401258869460,"id":95,"parentId":52,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":836433,"timestamp":401258844319,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779209231091,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":815734,"timestamp":401258869640,"id":103,"parentId":62,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":839298,"timestamp":401258846137,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779209231092,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":820940,"timestamp":401258869431,"id":94,"parentId":23,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":855839,"timestamp":401258834583,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779209231081,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":788413,"timestamp":401258902096,"id":106,"parentId":57,"tags":{},"startTime":1779209231148,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":845458,"timestamp":401258845071,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779209231091,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":803467,"timestamp":401258887430,"id":105,"parentId":60,"tags":{},"startTime":1779209231134,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":845209,"timestamp":401258845740,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779209231092,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":861092,"timestamp":401258869648,"id":104,"parentId":63,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":884594,"timestamp":401258846235,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779209231093,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":864147,"timestamp":401258869517,"id":100,"parentId":58,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":888244,"timestamp":401258845475,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779209231092,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":868960,"timestamp":401258869504,"id":99,"parentId":56,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":893638,"timestamp":401258844865,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779209231091,"traceId":"44aff18d95b25b22"},{"name":"is-page-static","duration":877731,"timestamp":401258869481,"id":97,"parentId":54,"tags":{},"startTime":1779209231116,"traceId":"44aff18d95b25b22"},{"name":"check-page","duration":902662,"timestamp":401258844593,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779209231091,"traceId":"44aff18d95b25b22"},{"name":"static-check","duration":917528,"timestamp":401258829769,"id":19,"parentId":1,"tags":{},"startTime":1779209231076,"traceId":"44aff18d95b25b22"}]
2
- [{"name":"write-routes-manifest","duration":722,"timestamp":401259757551,"id":108,"parentId":1,"tags":{},"startTime":1779209232004,"traceId":"44aff18d95b25b22"},{"name":"load-dotenv","duration":60,"timestamp":401259770362,"id":111,"parentId":110,"tags":{},"startTime":1779209232017,"traceId":"44aff18d95b25b22"},{"name":"run-export-path-map","duration":713,"timestamp":401259773545,"id":112,"parentId":110,"tags":{},"startTime":1779209232020,"traceId":"44aff18d95b25b22"},{"name":"next-export","duration":647612,"timestamp":401259768808,"id":110,"parentId":1,"tags":{},"startTime":1779209232015,"traceId":"44aff18d95b25b22"},{"name":"move-exported-app-not-found-","duration":577,"timestamp":401260420869,"id":113,"parentId":109,"tags":{},"startTime":1779209232667,"traceId":"44aff18d95b25b22"},{"name":"move-exported-app-global-error-","duration":410,"timestamp":401260421545,"id":114,"parentId":109,"tags":{},"startTime":1779209232668,"traceId":"44aff18d95b25b22"},{"name":"static-generation","duration":661189,"timestamp":401259762731,"id":109,"parentId":1,"tags":{},"startTime":1779209232009,"traceId":"44aff18d95b25b22"},{"name":"write-routes-manifest","duration":658,"timestamp":401260424324,"id":115,"parentId":1,"tags":{},"startTime":1779209232671,"traceId":"44aff18d95b25b22"},{"name":"print-tree-view","duration":7206,"timestamp":401260433178,"id":116,"parentId":1,"tags":{},"startTime":1779209232679,"traceId":"44aff18d95b25b22"},{"name":"write-route-bundle-stats","duration":17788,"timestamp":401260440427,"id":117,"parentId":1,"tags":{},"startTime":1779209232687,"traceId":"44aff18d95b25b22"},{"name":"telemetry-flush","duration":251600,"timestamp":401260458253,"id":118,"parentId":1,"tags":{},"startTime":1779209232705,"traceId":"44aff18d95b25b22"},{"name":"next-build","duration":20803395,"timestamp":401239906511,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779209212153,"traceId":"44aff18d95b25b22"}]
1
+ [{"name":"generate-buildid","duration":305,"timestamp":402833430513,"id":4,"parentId":1,"tags":{},"startTime":1779210805677,"traceId":"f2b5d82fd322f75c"},{"name":"load-custom-routes","duration":654,"timestamp":402833430998,"id":5,"parentId":1,"tags":{},"startTime":1779210805677,"traceId":"f2b5d82fd322f75c"},{"name":"create-dist-dir","duration":805,"timestamp":402833431703,"id":6,"parentId":1,"tags":{},"startTime":1779210805678,"traceId":"f2b5d82fd322f75c"},{"name":"clean","duration":38368,"timestamp":402833433389,"id":7,"parentId":1,"tags":{},"startTime":1779210805680,"traceId":"f2b5d82fd322f75c"},{"name":"discover-routes","duration":10978,"timestamp":402833563451,"id":8,"parentId":1,"tags":{},"startTime":1779210805810,"traceId":"f2b5d82fd322f75c"},{"name":"create-root-mapping","duration":137,"timestamp":402833574515,"id":9,"parentId":1,"tags":{},"startTime":1779210805821,"traceId":"f2b5d82fd322f75c"},{"name":"generate-route-types","duration":36764,"timestamp":402833577162,"id":10,"parentId":1,"tags":{},"startTime":1779210805823,"traceId":"f2b5d82fd322f75c"},{"name":"public-dir-conflict-check","duration":138,"timestamp":402833614091,"id":11,"parentId":1,"tags":{},"startTime":1779210805860,"traceId":"f2b5d82fd322f75c"},{"name":"generate-routes-manifest","duration":5092,"timestamp":402833614387,"id":12,"parentId":1,"tags":{},"startTime":1779210805861,"traceId":"f2b5d82fd322f75c"},{"name":"run-turbopack","duration":6602138,"timestamp":402833625933,"id":14,"parentId":1,"tags":{},"startTime":1779210805872,"traceId":"f2b5d82fd322f75c"},{"name":"turbopack-build-events","duration":117,"timestamp":402833955267,"id":15,"parentId":1,"tags":{},"startTime":1779210806202,"traceId":"f2b5d82fd322f75c"},{"name":"run-typescript","duration":10300494,"timestamp":402840239955,"id":16,"parentId":1,"tags":{},"startTime":1779210812486,"traceId":"f2b5d82fd322f75c"},{"name":"generate-required-server-files","duration":3464,"timestamp":402850542086,"id":18,"parentId":1,"tags":{},"startTime":1779210822788,"traceId":"f2b5d82fd322f75c"},{"name":"check-static-error-page","duration":15224,"timestamp":402850763596,"id":20,"parentId":19,"tags":{},"startTime":1779210823010,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":500440,"timestamp":402850785462,"id":65,"parentId":22,"tags":{},"startTime":1779210823032,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":519141,"timestamp":402850766947,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779210823013,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":550835,"timestamp":402850785943,"id":69,"parentId":28,"tags":{},"startTime":1779210823032,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":566116,"timestamp":402850770773,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779210823017,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":555458,"timestamp":402850786515,"id":72,"parentId":32,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":570465,"timestamp":402850771615,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779210823018,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":586644,"timestamp":402850786678,"id":73,"parentId":33,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":601653,"timestamp":402850771772,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779210823018,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":589755,"timestamp":402850785731,"id":67,"parentId":26,"tags":{},"startTime":1779210823032,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":605083,"timestamp":402850770475,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779210823017,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":597172,"timestamp":402850786760,"id":74,"parentId":34,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":612102,"timestamp":402850771926,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779210823018,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":609526,"timestamp":402850786809,"id":76,"parentId":36,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":623749,"timestamp":402850772682,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779210823019,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":610850,"timestamp":402850786788,"id":75,"parentId":35,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":625594,"timestamp":402850772109,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779210823018,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":612468,"timestamp":402850786271,"id":70,"parentId":29,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":627877,"timestamp":402850770920,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779210823017,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":624820,"timestamp":402850784961,"id":64,"parentId":21,"tags":{},"startTime":1779210823031,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":644526,"timestamp":402850765309,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779210823012,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":624035,"timestamp":402850786860,"id":78,"parentId":38,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":638012,"timestamp":402850772937,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779210823019,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":624389,"timestamp":402850786841,"id":77,"parentId":37,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":638437,"timestamp":402850772838,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779210823019,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":627166,"timestamp":402850786454,"id":71,"parentId":30,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":642535,"timestamp":402850771127,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779210823017,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":632215,"timestamp":402850786911,"id":82,"parentId":44,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":646589,"timestamp":402850773714,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779210823020,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":633604,"timestamp":402850786925,"id":83,"parentId":45,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":646777,"timestamp":402850773796,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779210823020,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":637350,"timestamp":402850786941,"id":84,"parentId":46,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":650494,"timestamp":402850773860,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779210823020,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":639355,"timestamp":402850786900,"id":81,"parentId":42,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":652906,"timestamp":402850773423,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779210823020,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":645230,"timestamp":402850785838,"id":68,"parentId":27,"tags":{},"startTime":1779210823032,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":660491,"timestamp":402850770626,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779210823017,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":644298,"timestamp":402850786959,"id":85,"parentId":47,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":656002,"timestamp":402850775285,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779210823022,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":644453,"timestamp":402850786970,"id":86,"parentId":48,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":655981,"timestamp":402850775479,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779210823022,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":646641,"timestamp":402850785623,"id":66,"parentId":25,"tags":{},"startTime":1779210823032,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":662052,"timestamp":402850770252,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779210823017,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":638492,"timestamp":402850799975,"id":91,"parentId":31,"tags":{},"startTime":1779210823046,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":667229,"timestamp":402850771279,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779210823018,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":640401,"timestamp":402850798428,"id":90,"parentId":24,"tags":{},"startTime":1779210823045,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":671271,"timestamp":402850767593,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779210823014,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":656594,"timestamp":402850786984,"id":87,"parentId":49,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":668011,"timestamp":402850775613,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779210823022,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":665267,"timestamp":402850786871,"id":79,"parentId":39,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":679164,"timestamp":402850773021,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779210823019,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":662125,"timestamp":402850790944,"id":89,"parentId":51,"tags":{},"startTime":1779210823037,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":677344,"timestamp":402850775773,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779210823022,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":666461,"timestamp":402850786999,"id":88,"parentId":50,"tags":{},"startTime":1779210823037,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":677809,"timestamp":402850775687,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779210823022,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":645125,"timestamp":402850811349,"id":93,"parentId":43,"tags":{},"startTime":1779210823058,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":682991,"timestamp":402850773521,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779210823020,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":690226,"timestamp":402850800901,"id":92,"parentId":41,"tags":{},"startTime":1779210823047,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":717991,"timestamp":402850773211,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779210823019,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":681565,"timestamp":402850822210,"id":94,"parentId":23,"tags":{},"startTime":1779210823068,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":736576,"timestamp":402850767289,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779210823014,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":690521,"timestamp":402850822355,"id":100,"parentId":58,"tags":{},"startTime":1779210823069,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":735608,"timestamp":402850777336,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779210823024,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":690869,"timestamp":402850822291,"id":96,"parentId":53,"tags":{},"startTime":1779210823069,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":736873,"timestamp":402850776334,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779210823023,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":695435,"timestamp":402850822274,"id":95,"parentId":52,"tags":{},"startTime":1779210823069,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":741596,"timestamp":402850776192,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779210823022,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":697616,"timestamp":402850822316,"id":98,"parentId":55,"tags":{},"startTime":1779210823069,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":743393,"timestamp":402850776589,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779210823023,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":697667,"timestamp":402850822487,"id":101,"parentId":59,"tags":{},"startTime":1779210823069,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":742627,"timestamp":402850777566,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779210823024,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":702551,"timestamp":402850822512,"id":102,"parentId":61,"tags":{},"startTime":1779210823069,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":746895,"timestamp":402850778212,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779210823024,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":738318,"timestamp":402850786885,"id":80,"parentId":40,"tags":{},"startTime":1779210823033,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":752116,"timestamp":402850773119,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779210823019,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":702999,"timestamp":402850822536,"id":104,"parentId":63,"tags":{},"startTime":1779210823069,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":747012,"timestamp":402850778554,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779210823025,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":703481,"timestamp":402850822301,"id":97,"parentId":54,"tags":{},"startTime":1779210823069,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":749354,"timestamp":402850776453,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779210823023,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":658437,"timestamp":402850869032,"id":106,"parentId":57,"tags":{},"startTime":1779210823115,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":750619,"timestamp":402850776882,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779210823023,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":689456,"timestamp":402850838654,"id":105,"parentId":60,"tags":{},"startTime":1779210823085,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":750393,"timestamp":402850777749,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779210823024,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":709527,"timestamp":402850822526,"id":103,"parentId":62,"tags":{},"startTime":1779210823069,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":753705,"timestamp":402850778384,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779210823025,"traceId":"f2b5d82fd322f75c"},{"name":"is-page-static","duration":722406,"timestamp":402850822331,"id":99,"parentId":56,"tags":{},"startTime":1779210823069,"traceId":"f2b5d82fd322f75c"},{"name":"check-page","duration":768057,"timestamp":402850776724,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779210823023,"traceId":"f2b5d82fd322f75c"},{"name":"static-check","duration":782421,"timestamp":402850762400,"id":19,"parentId":1,"tags":{},"startTime":1779210823009,"traceId":"f2b5d82fd322f75c"}]
2
+ [{"name":"write-routes-manifest","duration":468,"timestamp":402851554499,"id":108,"parentId":1,"tags":{},"startTime":1779210823801,"traceId":"f2b5d82fd322f75c"},{"name":"load-dotenv","duration":48,"timestamp":402851565615,"id":111,"parentId":110,"tags":{},"startTime":1779210823812,"traceId":"f2b5d82fd322f75c"},{"name":"run-export-path-map","duration":515,"timestamp":402851568086,"id":112,"parentId":110,"tags":{},"startTime":1779210823814,"traceId":"f2b5d82fd322f75c"},{"name":"next-export","duration":639294,"timestamp":402851564407,"id":110,"parentId":1,"tags":{},"startTime":1779210823811,"traceId":"f2b5d82fd322f75c"},{"name":"move-exported-app-not-found-","duration":594,"timestamp":402852207911,"id":113,"parentId":109,"tags":{},"startTime":1779210824454,"traceId":"f2b5d82fd322f75c"},{"name":"move-exported-app-global-error-","duration":462,"timestamp":402852208609,"id":114,"parentId":109,"tags":{},"startTime":1779210824455,"traceId":"f2b5d82fd322f75c"},{"name":"static-generation","duration":652780,"timestamp":402851558411,"id":109,"parentId":1,"tags":{},"startTime":1779210823805,"traceId":"f2b5d82fd322f75c"},{"name":"write-routes-manifest","duration":421,"timestamp":402852211454,"id":115,"parentId":1,"tags":{},"startTime":1779210824458,"traceId":"f2b5d82fd322f75c"},{"name":"print-tree-view","duration":3887,"timestamp":402852229971,"id":116,"parentId":1,"tags":{},"startTime":1779210824476,"traceId":"f2b5d82fd322f75c"},{"name":"write-route-bundle-stats","duration":13530,"timestamp":402852233895,"id":117,"parentId":1,"tags":{},"startTime":1779210824480,"traceId":"f2b5d82fd322f75c"},{"name":"telemetry-flush","duration":31228,"timestamp":402852247471,"id":118,"parentId":1,"tags":{},"startTime":1779210824494,"traceId":"f2b5d82fd322f75c"},{"name":"next-build","duration":18902514,"timestamp":402833376222,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779210805622,"traceId":"f2b5d82fd322f75c"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":7366559,"timestamp":401240152180,"id":14,"parentId":1,"tags":{},"startTime":1779209212398,"traceId":"44aff18d95b25b22"},{"name":"turbopack-build-events","duration":115,"timestamp":401240489429,"id":15,"parentId":1,"tags":{},"startTime":1779209212736,"traceId":"44aff18d95b25b22"},{"name":"run-typescript","duration":11084261,"timestamp":401247527198,"id":16,"parentId":1,"tags":{},"startTime":1779209219773,"traceId":"44aff18d95b25b22"},{"name":"static-check","duration":917528,"timestamp":401258829769,"id":19,"parentId":1,"tags":{},"startTime":1779209231076,"traceId":"44aff18d95b25b22"},{"name":"static-generation","duration":661189,"timestamp":401259762731,"id":109,"parentId":1,"tags":{},"startTime":1779209232009,"traceId":"44aff18d95b25b22"},{"name":"telemetry-flush","duration":251600,"timestamp":401260458253,"id":118,"parentId":1,"tags":{},"startTime":1779209232705,"traceId":"44aff18d95b25b22"},{"name":"next-build","duration":20803395,"timestamp":401239906511,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779209212153,"traceId":"44aff18d95b25b22"}]
1
+ [{"name":"run-turbopack","duration":6602138,"timestamp":402833625933,"id":14,"parentId":1,"tags":{},"startTime":1779210805872,"traceId":"f2b5d82fd322f75c"},{"name":"turbopack-build-events","duration":117,"timestamp":402833955267,"id":15,"parentId":1,"tags":{},"startTime":1779210806202,"traceId":"f2b5d82fd322f75c"},{"name":"run-typescript","duration":10300494,"timestamp":402840239955,"id":16,"parentId":1,"tags":{},"startTime":1779210812486,"traceId":"f2b5d82fd322f75c"},{"name":"static-check","duration":782421,"timestamp":402850762400,"id":19,"parentId":1,"tags":{},"startTime":1779210823009,"traceId":"f2b5d82fd322f75c"},{"name":"static-generation","duration":652780,"timestamp":402851558411,"id":109,"parentId":1,"tags":{},"startTime":1779210823805,"traceId":"f2b5d82fd322f75c"},{"name":"telemetry-flush","duration":31228,"timestamp":402852247471,"id":118,"parentId":1,"tags":{},"startTime":1779210824494,"traceId":"f2b5d82fd322f75c"},{"name":"next-build","duration":18902514,"timestamp":402833376222,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779210805622,"traceId":"f2b5d82fd322f75c"}]
@@ -2310,13 +2310,59 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2310
2310
  inner buttons' bg-cyan-500/15 tints; no layout shift.
2311
2311
  R268 border-color + 200ms transition + R329 mr-0.5 +
2312
2312
  data-topo-chrome-layout-trailer all preserved. */}
2313
+ {/* Round 707 / Loop — chrome Layout wrapper joins the
2314
+ respiratory family at 17 s. Extends chrome strip from
2315
+ single-anchor (R703 zoom-level 9 s, the chrome's only
2316
+ data display) to a 2-anchor chrome respiratory voice:
2317
+ 9 s zoom-level readout (R703 — data tier)
2318
+ 17 s Layout wrapper envelope (R707 — control tier)
2319
+ The two chrome anchors occupy DISTINCT functional tiers
2320
+ (data display vs control group), so distinct cadences
2321
+ read as different roles rather than competing rhythms.
2322
+
2323
+ 17 s is prime → coprime with every other cadence in
2324
+ the rolodex (3/4/5/6/7/8/9/10/11/13/15). Never phase-
2325
+ locks with any other anchor. New slowest tier among the
2326
+ HTML chrome respiratory anchors (zoom-level was 9 s;
2327
+ the slower 13 s and 15 s tiers are SVG-based on the
2328
+ canvas-brand-pair envelopes).
2329
+
2330
+ Tighter alpha range (0.94 ↔ 1, ~6%) — tightest yet,
2331
+ looser than the chrome zoom-level (9 s at 15%) but
2332
+ tighter than the title-block envelope (11 s at 8%).
2333
+ The chrome Layout buttons are interactive controls
2334
+ with active-state cyan tint; even ~10% dimming on the
2335
+ inner active button color would feel jarring. 6% =
2336
+ "barely-perceptible aliveness" on a control group.
2337
+
2338
+ Hover gate via CSS `:has(button:hover)` — when user
2339
+ hovers any inner Ring/Grid button, the wrapper's R697
2340
+ halo (cyan filter) takes precedence visually; pause the
2341
+ breath simultaneously via `:has(button:hover)` →
2342
+ animation: none so the halo reads crisp without
2343
+ underlying alpha drift. Sibling pattern to R703 hover
2344
+ data-attr gate and R704/R705 recede gates — third
2345
+ gate-off mechanism in the family vocabulary.
2346
+
2347
+ Rolodex now 14 anchors, 12-tier ladder:
2348
+ 3 s row hot · 4 s hub idle · 5 s brand logo
2349
+ 6 s watermark text · 6 s kicker · 7 s crescent inner
2350
+ 8 s recent title · 8 s legend title
2351
+ 9 s zoom-level readout · 10 s H2
2352
+ 11 s title-block envelope · 13 s crescent wrapper envelope
2353
+ 15 s watermark wrapper envelope
2354
+ 17 s Layout wrapper ← this round
2355
+
2356
+ data-topo-chrome-layout-trailer-breath attr surfaces
2357
+ the cadence for tests. */}
2313
2358
  <div
2314
- className="mr-0.5 inline-flex rounded-lg border overflow-hidden"
2359
+ className="anet-topo-chrome-layout-trailer-breath mr-0.5 inline-flex rounded-lg border overflow-hidden"
2315
2360
  style={{ borderColor: pal.containerBorder, transition: 'border-color 200ms ease-out' }}
2316
2361
  role="group"
2317
2362
  aria-label="Topology layout"
2318
2363
  data-topo-chrome-layout-trailer
2319
2364
  data-topo-chrome-layout-radius="rounded-lg"
2365
+ data-topo-chrome-layout-trailer-breath="17s"
2320
2366
  /* R697 — wrapper-level multi-layer halo on inner button hover
2321
2367
  (via CSS :has() in globals.css). 53rd anchor in family. */
2322
2368
  data-topo-chrome-wrapper-halo-family="layout"
@@ -16193,8 +16239,32 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
16193
16239
  hierarchy: 'segmented control container' (rounded-lg)
16194
16240
  vs 'standalone button' (rounded-md). Pure paint change,
16195
16241
  no layout shift. */}
16242
+ {/* Round 708 / Loop — chrome nodeSize wrapper joins the
16243
+ respiratory family at 19 s, mirror to R707 Layout wrapper.
16244
+ Closes 2 of the 3 chrome wrappers (Layout 17s / nodeSize
16245
+ 19s); zoom wrapper still single-voiced. Coprime ladder
16246
+ forms across the chrome wrapper trio:
16247
+ R707 Layout wrapper 17 s
16248
+ R708 nodeSize wrapper 19 s ← this round
16249
+ future zoom wrapper 23 s ?
16250
+ All primes coprime with all other rolodex cadences and
16251
+ with each other.
16252
+
16253
+ Pattern parallel to canvas-brand-pair (R704/R705) coprime
16254
+ envelope-per-member: chrome strip control wrappers each
16255
+ get their own prime cadence. Unlike canvas-brand-pair
16256
+ (which had ONE inner element per envelope), chrome
16257
+ wrappers have MULTIPLE inner buttons (Ring/Grid for
16258
+ Layout, S/M/L for nodeSize) — wrappers signal "control
16259
+ group is alive"; inner buttons signal their own R674/R675
16260
+ hover-halo when interacted.
16261
+
16262
+ Same alpha (0.94 ↔ 1, ~6%) + same :has(button:hover)
16263
+ gate as R707 — consistent control-tier rationale across
16264
+ the chrome wrapper trio. Coprime cadence selection gives
16265
+ the chrome strip its own distinct rhythm-of-control. */}
16196
16266
  <div
16197
- className="flex items-center rounded-lg border overflow-hidden"
16267
+ className="anet-topo-chrome-fleet-group-trailer-breath flex items-center rounded-lg border overflow-hidden"
16198
16268
  data-topo-chrome-nodesize-radius="rounded-lg"
16199
16269
  style={{
16200
16270
  background: pal.legendBox.fill,
@@ -16204,6 +16274,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
16204
16274
  role="group"
16205
16275
  aria-label="Node size"
16206
16276
  data-topo-chrome-fleet-group-trailer
16277
+ data-topo-chrome-fleet-group-trailer-breath="19s"
16207
16278
  /* R697 sibling — wrapper-level has-hover halo (see globals.css). */
16208
16279
  data-topo-chrome-wrapper-halo-family="nodesize"
16209
16280
  >
package/app/globals.css CHANGED
@@ -1415,6 +1415,58 @@ body {
1415
1415
  .anet-topo-title-block-envelope-breath { animation: none; }
1416
1416
  }
1417
1417
 
1418
+ /* Round 707 — chrome Layout wrapper at-rest breath at 17 s. Slowest tier
1419
+ among HTML chrome respiratory anchors (sibling to R703 zoom-level 9 s
1420
+ in the chrome strip's data tier; this 17 s lands in the chrome strip's
1421
+ control tier). 17 is prime → coprime with every other cadence in the
1422
+ rolodex (3/4/5/6/7/8/9/10/11/13/15). Never phase-locks with any other
1423
+ anchor.
1424
+
1425
+ Tightest alpha range yet (0.94 ↔ 1, ~6%) — the Layout buttons are
1426
+ interactive controls with active-state cyan tint; even ~10% dimming
1427
+ on the inner button color would feel jarring. 6% = "barely-perceptible
1428
+ aliveness" on a control group.
1429
+
1430
+ Hover gate via :has() selector — when user hovers any inner Ring/Grid
1431
+ button, the R697 wrapper-level halo (cyan filter) takes precedence;
1432
+ animation: none on hover pauses the breath so the halo reads crisp
1433
+ without underlying alpha drift. Third gate-off mechanism in the family
1434
+ vocabulary, sibling to R703 hover data-attr gate + R704/R705 recede
1435
+ gates. */
1436
+ @keyframes anet-topo-chrome-layout-trailer-breath-kf {
1437
+ 0%, 100% { opacity: 1; }
1438
+ 50% { opacity: 0.94; }
1439
+ }
1440
+ .anet-topo-chrome-layout-trailer-breath {
1441
+ animation: anet-topo-chrome-layout-trailer-breath-kf 17s ease-in-out infinite;
1442
+ }
1443
+ .anet-topo-chrome-layout-trailer-breath:has(button:hover) {
1444
+ animation: none;
1445
+ }
1446
+ @media (prefers-reduced-motion: reduce) {
1447
+ .anet-topo-chrome-layout-trailer-breath { animation: none; }
1448
+ }
1449
+
1450
+ /* Round 708 — chrome nodeSize wrapper at-rest breath at 19 s. Sibling
1451
+ to R707 Layout 17 s — both chrome control-tier wrappers carry the
1452
+ same alpha range (6%) + the same :has(button:hover) gate. Two coprime
1453
+ prime cadences (17, 19) form a chrome-control respiratory pair,
1454
+ pattern-parallel to canvas-brand-pair (R704/R705) coprime envelope
1455
+ pair. */
1456
+ @keyframes anet-topo-chrome-fleet-group-trailer-breath-kf {
1457
+ 0%, 100% { opacity: 1; }
1458
+ 50% { opacity: 0.94; }
1459
+ }
1460
+ .anet-topo-chrome-fleet-group-trailer-breath {
1461
+ animation: anet-topo-chrome-fleet-group-trailer-breath-kf 19s ease-in-out infinite;
1462
+ }
1463
+ .anet-topo-chrome-fleet-group-trailer-breath:has(button:hover) {
1464
+ animation: none;
1465
+ }
1466
+ @media (prefers-reduced-motion: reduce) {
1467
+ .anet-topo-chrome-fleet-group-trailer-breath { animation: none; }
1468
+ }
1469
+
1418
1470
  /* ─────────────────────────────────────────────────────────────────────
1419
1471
  Round 29 — prefers-reduced-motion a11y sweep
1420
1472
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.220",
3
+ "version": "0.5.3-preview.222",
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,86 @@
1
+ /* Round 707 — chrome Layout wrapper at-rest breath at 17s. Slowest tier
2
+ * among HTML chrome respiratory anchors. Sibling to R703 zoom-level 9s
3
+ * in chrome strip's data tier; this 17s lands in chrome's control tier.
4
+ * Tightest alpha range (0.94↔1, ~6%) — control group should not flicker.
5
+ * Hover gate via :has(button:hover) — R697 halo takes precedence.
6
+ */
7
+ import { chromium } from 'playwright';
8
+ import { readFileSync } from 'node:fs';
9
+
10
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
11
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
12
+
13
+ const browser = await chromium.launch({ headless: true });
14
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
15
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
16
+ await ctx.addInitScript(() => {
17
+ try {
18
+ localStorage.setItem('anet-theme', 'cyber');
19
+ localStorage.setItem('anet-topo-layout', 'ring');
20
+ sessionStorage.setItem('anet_v3_auth', '1');
21
+ } catch {}
22
+ });
23
+ await ctx.route('**/api/hub/status*', async (route) => {
24
+ const r = await route.fetch();
25
+ const b = await r.json();
26
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
27
+ const mk = (alias) => ({
28
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
29
+ network_id: nid, project_dir: null,
30
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
31
+ });
32
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
33
+ });
34
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
35
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
36
+ const page = await ctx.newPage();
37
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
38
+ await page.waitForSelector('[data-topo-chrome-layout-trailer]', { timeout: 15000, state: 'attached' });
39
+ await page.waitForTimeout(300);
40
+
41
+ const runtimeState = await page.evaluate(() => {
42
+ const wrap = document.querySelector('[data-topo-chrome-layout-trailer]');
43
+ if (!wrap) return null;
44
+ const cs = getComputedStyle(wrap);
45
+ return {
46
+ has_class: wrap.classList.contains('anet-topo-chrome-layout-trailer-breath'),
47
+ breath_attr: wrap.getAttribute('data-topo-chrome-layout-trailer-breath'),
48
+ anim_name: cs.animationName,
49
+ anim_duration: cs.animationDuration,
50
+ anim_iter: cs.animationIterationCount,
51
+ };
52
+ });
53
+
54
+ await browser.close();
55
+
56
+ const cssSrc = readFileSync('/home/vansin/agent-network-dashboard/app/globals.css', 'utf8');
57
+ const tsxSrc = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
58
+
59
+ const cssKeyframes = /@keyframes anet-topo-chrome-layout-trailer-breath-kf\s*\{[\s\S]*?0%, 100%\s*\{\s*opacity:\s*1;\s*\}[\s\S]*?50%\s*\{\s*opacity:\s*0\.94;/.test(cssSrc);
60
+ const cssRule = /\.anet-topo-chrome-layout-trailer-breath\s*\{[\s\S]*?animation:\s*anet-topo-chrome-layout-trailer-breath-kf\s+17s\s+ease-in-out\s+infinite/.test(cssSrc);
61
+ const cssHoverGate = /\.anet-topo-chrome-layout-trailer-breath:has\(button:hover\)\s*\{\s*animation:\s*none/.test(cssSrc);
62
+ const cssReducedMotion = /prefers-reduced-motion:\s*reduce\s*\)\s*\{\s*\.anet-topo-chrome-layout-trailer-breath\s*\{\s*animation:\s*none/.test(cssSrc);
63
+ const tsxClass = /anet-topo-chrome-layout-trailer-breath mr-0\.5/.test(tsxSrc);
64
+ const tsxAttr = /data-topo-chrome-layout-trailer-breath="17s"/.test(tsxSrc);
65
+
66
+ const runtimeAnim = runtimeState?.anim_name === 'anet-topo-chrome-layout-trailer-breath-kf' || runtimeState?.anim_name === 'none';
67
+ const runtimeDuration = runtimeState?.anim_duration === '17s' || runtimeState?.anim_name === 'none';
68
+
69
+ const results = {
70
+ wrapper_present: !!runtimeState,
71
+ has_breath_class: runtimeState?.has_class === true,
72
+ breath_attr_17s: runtimeState?.breath_attr === '17s',
73
+ runtime_anim_ok: runtimeAnim,
74
+ runtime_duration_ok: runtimeDuration,
75
+ css_keyframes: cssKeyframes,
76
+ css_rule: cssRule,
77
+ css_hover_gate: cssHoverGate,
78
+ css_reduced_motion: cssReducedMotion,
79
+ tsx_class: tsxClass,
80
+ tsx_breath_attr: tsxAttr,
81
+ };
82
+ const ok = Object.values(results).every(Boolean);
83
+ console.log(`${ok ? '✅' : '❌'} R707 chrome Layout wrapper at-rest breath (17s prime, :has hover-gated, tightest alpha 6%):`,
84
+ JSON.stringify(results, null, 2),
85
+ `\n runtime: ${JSON.stringify(runtimeState)}`);
86
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,86 @@
1
+ /* Round 708 — chrome nodeSize wrapper at-rest breath at 19s. Mirror to
2
+ * R707 Layout 17s — both chrome control-tier wrappers carry the same
3
+ * alpha (6%) + :has(button:hover) gate. Two coprime prime cadences
4
+ * (17, 19) form a chrome-control respiratory pair, pattern-parallel
5
+ * to canvas-brand-pair (R704/R705) coprime envelope pair.
6
+ */
7
+ import { chromium } from 'playwright';
8
+ import { readFileSync } from 'node:fs';
9
+
10
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
11
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
12
+
13
+ const browser = await chromium.launch({ headless: true });
14
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
15
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
16
+ await ctx.addInitScript(() => {
17
+ try {
18
+ localStorage.setItem('anet-theme', 'cyber');
19
+ localStorage.setItem('anet-topo-layout', 'ring');
20
+ sessionStorage.setItem('anet_v3_auth', '1');
21
+ } catch {}
22
+ });
23
+ await ctx.route('**/api/hub/status*', async (route) => {
24
+ const r = await route.fetch();
25
+ const b = await r.json();
26
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
27
+ const mk = (alias) => ({
28
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
29
+ network_id: nid, project_dir: null,
30
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
31
+ });
32
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
33
+ });
34
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
35
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
36
+ const page = await ctx.newPage();
37
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
38
+ await page.waitForSelector('[data-topo-chrome-fleet-group-trailer]', { timeout: 15000, state: 'attached' });
39
+ await page.waitForTimeout(300);
40
+
41
+ const runtimeState = await page.evaluate(() => {
42
+ const wrap = document.querySelector('[data-topo-chrome-fleet-group-trailer]');
43
+ if (!wrap) return null;
44
+ const cs = getComputedStyle(wrap);
45
+ return {
46
+ has_class: wrap.classList.contains('anet-topo-chrome-fleet-group-trailer-breath'),
47
+ breath_attr: wrap.getAttribute('data-topo-chrome-fleet-group-trailer-breath'),
48
+ anim_name: cs.animationName,
49
+ anim_duration: cs.animationDuration,
50
+ anim_iter: cs.animationIterationCount,
51
+ };
52
+ });
53
+
54
+ await browser.close();
55
+
56
+ const cssSrc = readFileSync('/home/vansin/agent-network-dashboard/app/globals.css', 'utf8');
57
+ const tsxSrc = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
58
+
59
+ const cssKeyframes = /@keyframes anet-topo-chrome-fleet-group-trailer-breath-kf\s*\{[\s\S]*?0%, 100%\s*\{\s*opacity:\s*1;\s*\}[\s\S]*?50%\s*\{\s*opacity:\s*0\.94;/.test(cssSrc);
60
+ const cssRule = /\.anet-topo-chrome-fleet-group-trailer-breath\s*\{[\s\S]*?animation:\s*anet-topo-chrome-fleet-group-trailer-breath-kf\s+19s\s+ease-in-out\s+infinite/.test(cssSrc);
61
+ const cssHoverGate = /\.anet-topo-chrome-fleet-group-trailer-breath:has\(button:hover\)\s*\{\s*animation:\s*none/.test(cssSrc);
62
+ const cssReducedMotion = /prefers-reduced-motion:\s*reduce\s*\)\s*\{\s*\.anet-topo-chrome-fleet-group-trailer-breath\s*\{\s*animation:\s*none/.test(cssSrc);
63
+ const tsxClass = /anet-topo-chrome-fleet-group-trailer-breath flex items-center/.test(tsxSrc);
64
+ const tsxAttr = /data-topo-chrome-fleet-group-trailer-breath="19s"/.test(tsxSrc);
65
+
66
+ const runtimeAnim = runtimeState?.anim_name === 'anet-topo-chrome-fleet-group-trailer-breath-kf' || runtimeState?.anim_name === 'none';
67
+ const runtimeDuration = runtimeState?.anim_duration === '19s' || runtimeState?.anim_name === 'none';
68
+
69
+ const results = {
70
+ wrapper_present: !!runtimeState,
71
+ has_breath_class: runtimeState?.has_class === true,
72
+ breath_attr_19s: runtimeState?.breath_attr === '19s',
73
+ runtime_anim_ok: runtimeAnim,
74
+ runtime_duration_ok: runtimeDuration,
75
+ css_keyframes: cssKeyframes,
76
+ css_rule: cssRule,
77
+ css_hover_gate: cssHoverGate,
78
+ css_reduced_motion: cssReducedMotion,
79
+ tsx_class: tsxClass,
80
+ tsx_breath_attr: tsxAttr,
81
+ };
82
+ const ok = Object.values(results).every(Boolean);
83
+ console.log(`${ok ? '✅' : '❌'} R708 chrome nodeSize wrapper at-rest breath (19s prime, :has hover-gated, mirror to R707 Layout):`,
84
+ JSON.stringify(results, null, 2),
85
+ `\n runtime: ${JSON.stringify(runtimeState)}`);
86
+ process.exit(ok ? 0 : 1);