@sleep2agi/agent-network-dashboard 0.5.3-preview.52 → 0.5.3-preview.54

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 (155) 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 +3 -3
  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/{029fvt.lfg0~g.js → 07pnjpwhde.nv.js} +3 -3
  143. package/.next/static/chunks/{00yey.qq0qvr5.js → 08-obqut5ht32.js} +1 -1
  144. package/.next/static/chunks/{0sht0y-y7x71m.css → 0b1q0~gt32zw-.css} +1 -1
  145. package/.next/static/chunks/{16hn-.ajrf95z.js → 0h0k1d9u0234k.js} +1 -1
  146. package/.next/static/chunks/{05q74_cayt4s5.js → 11kay0x-78vv5.js} +1 -1
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +51 -8
  150. package/package.json +1 -1
  151. package/scripts/topo-chip-row-digit-ls-test.mjs +135 -0
  152. package/scripts/topo-minimap-hover-glow-test.mjs +109 -0
  153. /package/.next/static/{NvfEuEQKYcmBCxfnu9h55 → Ego_4YrXDobtG2r--9MkT}/_buildManifest.js +0 -0
  154. /package/.next/static/{NvfEuEQKYcmBCxfnu9h55 → Ego_4YrXDobtG2r--9MkT}/_clientMiddlewareManifest.js +0 -0
  155. /package/.next/static/{NvfEuEQKYcmBCxfnu9h55 → Ego_4YrXDobtG2r--9MkT}/_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.52"],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.54"],70286)},65610,e=>{"use strict";var s=e.i(22381),a=e.i(23910),t=e.i(56839),r=e.i(59276),n=e.i(70286);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:l}=(0,r.useHealth)(),{license:i}=(0,r.useLicense)(),[c,d]=(0,a.useState)(""),[o,x]=(0,a.useState)(""),[m,h]=(0,a.useState)(""),[g,u]=(0,a.useState)(""),[p,N]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",j="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${j}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${j}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${l?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:l?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsxs)("span",{className:"text-gray-500",children:["SSE streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.uptime?`${Math.floor(l.uptime/3600)}h ${Math.floor(l.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 font-mono ${j}`,title:"From package.json @sleep2agi/agent-network-dashboard",children:n.DASHBOARD_VERSION})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",i?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===i.license.type?"text-green-300 bg-green-500/10 border-green-500/30":i.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),i.license.type,i.license.days_left?` \xb7 ${i.license.days_left}d left`:""]})]}),i?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[i.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[i.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.license.expires_at})]}),i.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!c.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})}),s=await e.json();x(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&d(""),setTimeout(()=>x(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),o&&(0,s.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!m||!g)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void N("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:m,new_password:g})}),t=await a.json();if(N(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}h(""),u("")}setTimeout(()=>N(""),5e3)},disabled:!m||!g,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),p&&(0,s.jsx)("div",{className:`mt-2 text-xs ${p.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:p})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.52"],70286)},48941,e=>{"use strict";var t=e.i(22381),r=e.i(23910),a=e.i(70286);e.s(["default",0,function(){let[e,s]=(0,r.useState)("login"),[n,o]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(!1),[x,g]=(0,r.useState)(""),[h,m]=(0,r.useState)(!1),u=async t=>{t.preventDefault(),m(!0),g("");try{let t=await fetch("/api/auth/v3",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,username:n,password:i})}),r=await t.json();if(r.ok){r.token&&sessionStorage.setItem("anet_v3_auth",JSON.stringify({user:r.user,token:r.token,networks:r.networks||[],currentNetwork:r.network_id||r.networks?.[0]?.network_id||""})),window.location.assign("/");return}g(r.error||"Login failed")}catch{g("Connection failed")}m(!1)};return(0,t.jsxs)("main",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 font-mono flex items-center justify-center relative overflow-hidden px-4 py-10 sm:py-16",children:[(0,t.jsx)("div",{className:"absolute inset-0 pointer-events-none anet-login-bg","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-sm",children:[(0,t.jsxs)("div",{className:"text-center mb-7",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-4 rounded-2xl bg-[#111128] border border-[#2a2a4a] anet-login-mark",children:(0,t.jsxs)("svg",{className:"w-9 h-9",viewBox:"0 0 32 32","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.25",className:"text-cyan-400 anet-login-mark-ring"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"3",fill:"currentColor",className:"text-cyan-400 anet-login-mark-node-a"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"3",fill:"currentColor",className:"text-green-400 anet-login-mark-node-b"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"3",fill:"currentColor",className:"text-violet-400 anet-login-mark-node-c"})]})}),(0,t.jsx)("h1",{className:"text-[22px] sm:text-2xl font-semibold text-white tracking-tight",children:"Agent Network"}),(0,t.jsx)("p",{className:"text-[13px] text-gray-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Free preview · no credit card"})]})})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 mb-4",children:["login","register"].map(r=>(0,t.jsx)("button",{type:"button",onClick:()=>{s(r),g("")},className:`flex-1 rounded-md px-3 py-2 text-sm transition-colors ${e===r?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"login"===r?"Sign in":"Register"},r))}),(0,t.jsxs)("form",{onSubmit:u,className:"border border-[#2a2a4a] bg-[#111128]/80 backdrop-blur-sm rounded-xl p-6 shadow-2xl shadow-black/30",children:[(0,t.jsx)("label",{htmlFor:"username",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Username"}),(0,t.jsx)("input",{id:"username",type:"text",value:n,onChange:e=>o(e.target.value),autoFocus:!0,placeholder:"Enter username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all mb-4"}),(0,t.jsx)("label",{htmlFor:"password",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{id:"password",type:c?"text":"password",value:i,onChange:e=>l(e.target.value),placeholder:"Enter password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 pr-11 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all"}),(0,t.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":c?"Hide password":"Show password",className:"absolute inset-y-0 right-0 flex items-center px-3 text-gray-600 hover:text-gray-300 transition-colors",children:c?(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),(0,t.jsx)("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]}),x&&(0,t.jsx)("div",{className:"mt-3 text-sm text-red-300 bg-red-500/5 border border-red-500/10 rounded-lg px-3 py-2",children:x}),(0,t.jsxs)("button",{type:"submit",disabled:h||!i||!n.trim(),className:"mt-5 w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-lg transition-all shadow-lg shadow-cyan-500/10 hover:shadow-cyan-500/20 disabled:shadow-none",children:[h&&(0,t.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,t.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,t.jsx)("span",{children:h?"login"===e?"Signing in…":"Registering…":"login"===e?"Sign in":"Create account"})]})]}),(0,t.jsxs)("p",{className:"text-center text-[11px] text-gray-700 mt-6",children:["Sleep2AGI · Apache-2.0 · ",(0,t.jsx)("a",{href:"https://anet.sh",className:"hover:text-gray-500 transition-colors",children:"anet.sh"}),(0,t.jsx)("span",{className:"mx-1 text-gray-800",children:"·"}),(0,t.jsxs)("span",{className:"font-mono",title:"@sleep2agi/agent-network-dashboard",children:["v",a.DASHBOARD_VERSION]})]})]})]})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.54"],70286)},48941,e=>{"use strict";var t=e.i(22381),r=e.i(23910),a=e.i(70286);e.s(["default",0,function(){let[e,s]=(0,r.useState)("login"),[n,o]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(!1),[x,g]=(0,r.useState)(""),[h,m]=(0,r.useState)(!1),u=async t=>{t.preventDefault(),m(!0),g("");try{let t=await fetch("/api/auth/v3",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,username:n,password:i})}),r=await t.json();if(r.ok){r.token&&sessionStorage.setItem("anet_v3_auth",JSON.stringify({user:r.user,token:r.token,networks:r.networks||[],currentNetwork:r.network_id||r.networks?.[0]?.network_id||""})),window.location.assign("/");return}g(r.error||"Login failed")}catch{g("Connection failed")}m(!1)};return(0,t.jsxs)("main",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 font-mono flex items-center justify-center relative overflow-hidden px-4 py-10 sm:py-16",children:[(0,t.jsx)("div",{className:"absolute inset-0 pointer-events-none anet-login-bg","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-sm",children:[(0,t.jsxs)("div",{className:"text-center mb-7",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-4 rounded-2xl bg-[#111128] border border-[#2a2a4a] anet-login-mark",children:(0,t.jsxs)("svg",{className:"w-9 h-9",viewBox:"0 0 32 32","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.25",className:"text-cyan-400 anet-login-mark-ring"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"3",fill:"currentColor",className:"text-cyan-400 anet-login-mark-node-a"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"3",fill:"currentColor",className:"text-green-400 anet-login-mark-node-b"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"3",fill:"currentColor",className:"text-violet-400 anet-login-mark-node-c"})]})}),(0,t.jsx)("h1",{className:"text-[22px] sm:text-2xl font-semibold text-white tracking-tight",children:"Agent Network"}),(0,t.jsx)("p",{className:"text-[13px] text-gray-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Free preview · no credit card"})]})})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 mb-4",children:["login","register"].map(r=>(0,t.jsx)("button",{type:"button",onClick:()=>{s(r),g("")},className:`flex-1 rounded-md px-3 py-2 text-sm transition-colors ${e===r?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"login"===r?"Sign in":"Register"},r))}),(0,t.jsxs)("form",{onSubmit:u,className:"border border-[#2a2a4a] bg-[#111128]/80 backdrop-blur-sm rounded-xl p-6 shadow-2xl shadow-black/30",children:[(0,t.jsx)("label",{htmlFor:"username",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Username"}),(0,t.jsx)("input",{id:"username",type:"text",value:n,onChange:e=>o(e.target.value),autoFocus:!0,placeholder:"Enter username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all mb-4"}),(0,t.jsx)("label",{htmlFor:"password",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{id:"password",type:c?"text":"password",value:i,onChange:e=>l(e.target.value),placeholder:"Enter password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 pr-11 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all"}),(0,t.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":c?"Hide password":"Show password",className:"absolute inset-y-0 right-0 flex items-center px-3 text-gray-600 hover:text-gray-300 transition-colors",children:c?(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),(0,t.jsx)("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]}),x&&(0,t.jsx)("div",{className:"mt-3 text-sm text-red-300 bg-red-500/5 border border-red-500/10 rounded-lg px-3 py-2",children:x}),(0,t.jsxs)("button",{type:"submit",disabled:h||!i||!n.trim(),className:"mt-5 w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-lg transition-all shadow-lg shadow-cyan-500/10 hover:shadow-cyan-500/20 disabled:shadow-none",children:[h&&(0,t.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,t.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,t.jsx)("span",{children:h?"login"===e?"Signing in…":"Registering…":"login"===e?"Sign in":"Create account"})]})]}),(0,t.jsxs)("p",{className:"text-center text-[11px] text-gray-700 mt-6",children:["Sleep2AGI · Apache-2.0 · ",(0,t.jsx)("a",{href:"https://anet.sh",className:"hover:text-gray-500 transition-colors",children:"anet.sh"}),(0,t.jsx)("span",{className:"mx-1 text-gray-800",children:"·"}),(0,t.jsxs)("span",{className:"font-mono",title:"@sleep2agi/agent-network-dashboard",children:["v",a.DASHBOARD_VERSION]})]})]})]})}])}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":356,"timestamp":214472754814,"id":4,"parentId":1,"tags":{},"startTime":1779022445001,"traceId":"944aa5696cd62082"},{"name":"load-custom-routes","duration":615,"timestamp":214472755357,"id":5,"parentId":1,"tags":{},"startTime":1779022445002,"traceId":"944aa5696cd62082"},{"name":"create-dist-dir","duration":1037,"timestamp":214472756044,"id":6,"parentId":1,"tags":{},"startTime":1779022445002,"traceId":"944aa5696cd62082"},{"name":"clean","duration":38314,"timestamp":214472758092,"id":7,"parentId":1,"tags":{},"startTime":1779022445004,"traceId":"944aa5696cd62082"},{"name":"discover-routes","duration":12158,"timestamp":214472880328,"id":8,"parentId":1,"tags":{},"startTime":1779022445127,"traceId":"944aa5696cd62082"},{"name":"create-root-mapping","duration":120,"timestamp":214472892552,"id":9,"parentId":1,"tags":{},"startTime":1779022445139,"traceId":"944aa5696cd62082"},{"name":"generate-route-types","duration":36214,"timestamp":214472895299,"id":10,"parentId":1,"tags":{},"startTime":1779022445142,"traceId":"944aa5696cd62082"},{"name":"public-dir-conflict-check","duration":111,"timestamp":214472931606,"id":11,"parentId":1,"tags":{},"startTime":1779022445178,"traceId":"944aa5696cd62082"},{"name":"generate-routes-manifest","duration":5071,"timestamp":214472931859,"id":12,"parentId":1,"tags":{},"startTime":1779022445178,"traceId":"944aa5696cd62082"},{"name":"run-turbopack","duration":6393248,"timestamp":214472943918,"id":14,"parentId":1,"tags":{},"startTime":1779022445190,"traceId":"944aa5696cd62082"},{"name":"turbopack-build-events","duration":102,"timestamp":214473296398,"id":15,"parentId":1,"tags":{},"startTime":1779022445543,"traceId":"944aa5696cd62082"},{"name":"run-typescript","duration":9501866,"timestamp":214479347496,"id":16,"parentId":1,"tags":{},"startTime":1779022451594,"traceId":"944aa5696cd62082"},{"name":"generate-required-server-files","duration":3292,"timestamp":214488851118,"id":18,"parentId":1,"tags":{},"startTime":1779022461097,"traceId":"944aa5696cd62082"},{"name":"check-static-error-page","duration":19309,"timestamp":214489081080,"id":20,"parentId":19,"tags":{},"startTime":1779022461327,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":457239,"timestamp":214489104923,"id":65,"parentId":22,"tags":{},"startTime":1779022461351,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":478322,"timestamp":214489084106,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779022461330,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":572878,"timestamp":214489105259,"id":66,"parentId":25,"tags":{},"startTime":1779022461352,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":591051,"timestamp":214489087187,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779022461333,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":575425,"timestamp":214489104547,"id":64,"parentId":21,"tags":{},"startTime":1779022461351,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":597463,"timestamp":214489082579,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779022461329,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":576586,"timestamp":214489107482,"id":68,"parentId":27,"tags":{},"startTime":1779022461354,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":596672,"timestamp":214489087446,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":577412,"timestamp":214489108138,"id":71,"parentId":30,"tags":{},"startTime":1779022461354,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":597825,"timestamp":214489087786,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":585823,"timestamp":214489108501,"id":75,"parentId":35,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":605882,"timestamp":214489088500,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779022461335,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":617115,"timestamp":214489108214,"id":72,"parentId":32,"tags":{},"startTime":1779022461354,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":637230,"timestamp":214489088177,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":617106,"timestamp":214489108463,"id":74,"parentId":34,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":637202,"timestamp":214489088399,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779022461335,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":617233,"timestamp":214489108523,"id":76,"parentId":36,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":635776,"timestamp":214489090022,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779022461336,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":618159,"timestamp":214489107956,"id":70,"parentId":29,"tags":{},"startTime":1779022461354,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":638503,"timestamp":214489087658,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":630413,"timestamp":214489108569,"id":78,"parentId":38,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":648500,"timestamp":214489090558,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":639611,"timestamp":214489108584,"id":79,"parentId":39,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":657596,"timestamp":214489090658,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":639911,"timestamp":214489108550,"id":77,"parentId":37,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":658095,"timestamp":214489090407,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":642462,"timestamp":214489108607,"id":81,"parentId":42,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":660002,"timestamp":214489091135,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":643558,"timestamp":214489108619,"id":82,"parentId":44,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":660318,"timestamp":214489091905,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779022461338,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":645982,"timestamp":214489107630,"id":69,"parentId":28,"tags":{},"startTime":1779022461354,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":666100,"timestamp":214489087553,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":649247,"timestamp":214489105410,"id":67,"parentId":26,"tags":{},"startTime":1779022461352,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":667367,"timestamp":214489087341,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":646698,"timestamp":214489108641,"id":84,"parentId":46,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":661447,"timestamp":214489093942,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779022461340,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":646899,"timestamp":214489108631,"id":83,"parentId":45,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":662268,"timestamp":214489093292,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779022461340,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":650377,"timestamp":214489108654,"id":85,"parentId":47,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":662500,"timestamp":214489096581,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779022461343,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":651567,"timestamp":214489108675,"id":87,"parentId":49,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":663400,"timestamp":214489096891,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779022461343,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":654123,"timestamp":214489108698,"id":89,"parentId":51,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":665774,"timestamp":214489097110,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779022461343,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":655807,"timestamp":214489108687,"id":88,"parentId":50,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":667566,"timestamp":214489096982,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779022461343,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":652281,"timestamp":214489112448,"id":90,"parentId":24,"tags":{},"startTime":1779022461359,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":680061,"timestamp":214489084703,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779022461331,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":656245,"timestamp":214489108665,"id":86,"parentId":48,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":668202,"timestamp":214489096742,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779022461343,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":658719,"timestamp":214489113632,"id":91,"parentId":31,"tags":{},"startTime":1779022461360,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":684499,"timestamp":214489087902,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779022461334,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":669913,"timestamp":214489108377,"id":73,"parentId":33,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":690052,"timestamp":214489088293,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779022461335,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":664696,"timestamp":214489116036,"id":93,"parentId":41,"tags":{},"startTime":1779022461362,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":689902,"timestamp":214489090876,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":665836,"timestamp":214489115076,"id":92,"parentId":43,"tags":{},"startTime":1779022461361,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":689691,"timestamp":214489091252,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779022461338,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":674294,"timestamp":214489108593,"id":80,"parentId":40,"tags":{},"startTime":1779022461355,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":692170,"timestamp":214489090759,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779022461337,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":669600,"timestamp":214489118727,"id":97,"parentId":54,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":690559,"timestamp":214489097810,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779022461344,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":678281,"timestamp":214489118905,"id":101,"parentId":59,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":698100,"timestamp":214489099132,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779022461345,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":686062,"timestamp":214489118921,"id":102,"parentId":61,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":705361,"timestamp":214489099779,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779022461346,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":701795,"timestamp":214489118935,"id":103,"parentId":62,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":720836,"timestamp":214489099955,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779022461346,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":709597,"timestamp":214489118947,"id":104,"parentId":63,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":728483,"timestamp":214489100125,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779022461346,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":706544,"timestamp":214489130364,"id":105,"parentId":60,"tags":{},"startTime":1779022461377,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":741719,"timestamp":214489099312,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779022461346,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":702705,"timestamp":214489143042,"id":106,"parentId":57,"tags":{},"startTime":1779022461389,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":747353,"timestamp":214489098443,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779022461345,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":739491,"timestamp":214489118712,"id":96,"parentId":53,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":760596,"timestamp":214489097658,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779022461344,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":743762,"timestamp":214489118673,"id":94,"parentId":23,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":777978,"timestamp":214489084509,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779022461331,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":744919,"timestamp":214489118749,"id":99,"parentId":56,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":765498,"timestamp":214489098227,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779022461345,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":745190,"timestamp":214489118764,"id":100,"parentId":58,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":765063,"timestamp":214489098934,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779022461345,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":747854,"timestamp":214489118740,"id":98,"parentId":55,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":768631,"timestamp":214489097999,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779022461344,"traceId":"944aa5696cd62082"},{"name":"is-page-static","duration":772075,"timestamp":214489118697,"id":95,"parentId":52,"tags":{},"startTime":1779022461365,"traceId":"944aa5696cd62082"},{"name":"check-page","duration":793321,"timestamp":214489097502,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779022461344,"traceId":"944aa5696cd62082"},{"name":"static-check","duration":810898,"timestamp":214489079985,"id":19,"parentId":1,"tags":{},"startTime":1779022461326,"traceId":"944aa5696cd62082"}]
2
- [{"name":"write-routes-manifest","duration":449,"timestamp":214489900454,"id":108,"parentId":1,"tags":{},"startTime":1779022462147,"traceId":"944aa5696cd62082"},{"name":"load-dotenv","duration":55,"timestamp":214489911824,"id":111,"parentId":110,"tags":{},"startTime":1779022462158,"traceId":"944aa5696cd62082"},{"name":"run-export-path-map","duration":875,"timestamp":214489914721,"id":112,"parentId":110,"tags":{},"startTime":1779022462161,"traceId":"944aa5696cd62082"},{"name":"next-export","duration":611978,"timestamp":214489910610,"id":110,"parentId":1,"tags":{},"startTime":1779022462157,"traceId":"944aa5696cd62082"},{"name":"move-exported-app-not-found-","duration":538,"timestamp":214490526792,"id":113,"parentId":109,"tags":{},"startTime":1779022462773,"traceId":"944aa5696cd62082"},{"name":"move-exported-app-global-error-","duration":397,"timestamp":214490527426,"id":114,"parentId":109,"tags":{},"startTime":1779022462774,"traceId":"944aa5696cd62082"},{"name":"static-generation","duration":625704,"timestamp":214489904345,"id":109,"parentId":1,"tags":{},"startTime":1779022462151,"traceId":"944aa5696cd62082"},{"name":"write-routes-manifest","duration":440,"timestamp":214490530313,"id":115,"parentId":1,"tags":{},"startTime":1779022462777,"traceId":"944aa5696cd62082"},{"name":"print-tree-view","duration":5612,"timestamp":214490551917,"id":116,"parentId":1,"tags":{},"startTime":1779022462798,"traceId":"944aa5696cd62082"},{"name":"write-route-bundle-stats","duration":12739,"timestamp":214490557566,"id":117,"parentId":1,"tags":{},"startTime":1779022462804,"traceId":"944aa5696cd62082"},{"name":"telemetry-flush","duration":32046,"timestamp":214490570349,"id":118,"parentId":1,"tags":{},"startTime":1779022462817,"traceId":"944aa5696cd62082"},{"name":"next-build","duration":17902498,"timestamp":214472699934,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779022444946,"traceId":"944aa5696cd62082"}]
1
+ [{"name":"generate-buildid","duration":331,"timestamp":215227488852,"id":4,"parentId":1,"tags":{},"startTime":1779023199735,"traceId":"76c60db4e957b360"},{"name":"load-custom-routes","duration":652,"timestamp":215227489387,"id":5,"parentId":1,"tags":{},"startTime":1779023199736,"traceId":"76c60db4e957b360"},{"name":"create-dist-dir","duration":895,"timestamp":215227490088,"id":6,"parentId":1,"tags":{},"startTime":1779023199736,"traceId":"76c60db4e957b360"},{"name":"clean","duration":35134,"timestamp":215227491667,"id":7,"parentId":1,"tags":{},"startTime":1779023199738,"traceId":"76c60db4e957b360"},{"name":"discover-routes","duration":26523,"timestamp":215227621636,"id":8,"parentId":1,"tags":{},"startTime":1779023199868,"traceId":"76c60db4e957b360"},{"name":"create-root-mapping","duration":191,"timestamp":215227648249,"id":9,"parentId":1,"tags":{},"startTime":1779023199895,"traceId":"76c60db4e957b360"},{"name":"generate-route-types","duration":20935,"timestamp":215227652140,"id":10,"parentId":1,"tags":{},"startTime":1779023199898,"traceId":"76c60db4e957b360"},{"name":"public-dir-conflict-check","duration":164,"timestamp":215227673167,"id":11,"parentId":1,"tags":{},"startTime":1779023199919,"traceId":"76c60db4e957b360"},{"name":"generate-routes-manifest","duration":5118,"timestamp":215227673463,"id":12,"parentId":1,"tags":{},"startTime":1779023199920,"traceId":"76c60db4e957b360"},{"name":"run-turbopack","duration":6655722,"timestamp":215227684780,"id":14,"parentId":1,"tags":{},"startTime":1779023199931,"traceId":"76c60db4e957b360"},{"name":"turbopack-build-events","duration":86,"timestamp":215227990475,"id":15,"parentId":1,"tags":{},"startTime":1779023200237,"traceId":"76c60db4e957b360"},{"name":"run-typescript","duration":9676596,"timestamp":215234349656,"id":16,"parentId":1,"tags":{},"startTime":1779023206596,"traceId":"76c60db4e957b360"},{"name":"generate-required-server-files","duration":2797,"timestamp":215244027363,"id":18,"parentId":1,"tags":{},"startTime":1779023216274,"traceId":"76c60db4e957b360"},{"name":"check-static-error-page","duration":14235,"timestamp":215244200417,"id":20,"parentId":19,"tags":{},"startTime":1779023216447,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":516623,"timestamp":215244218663,"id":65,"parentId":22,"tags":{},"startTime":1779023216465,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":532628,"timestamp":215244202821,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779023216449,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":567072,"timestamp":215244218817,"id":66,"parentId":25,"tags":{},"startTime":1779023216465,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":580779,"timestamp":215244205213,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779023216451,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":586073,"timestamp":215244219672,"id":72,"parentId":32,"tags":{},"startTime":1779023216466,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":599652,"timestamp":215244206180,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779023216452,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":599113,"timestamp":215244219818,"id":73,"parentId":33,"tags":{},"startTime":1779023216466,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":612707,"timestamp":215244206322,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779023216453,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":601158,"timestamp":215244219213,"id":69,"parentId":28,"tags":{},"startTime":1779023216465,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":614883,"timestamp":215244205569,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779023216452,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":609128,"timestamp":215244222113,"id":75,"parentId":35,"tags":{},"startTime":1779023216468,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":624735,"timestamp":215244206583,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779023216453,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":612787,"timestamp":215244219100,"id":68,"parentId":27,"tags":{},"startTime":1779023216465,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":626467,"timestamp":215244205462,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779023216452,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":610981,"timestamp":215244222070,"id":74,"parentId":34,"tags":{},"startTime":1779023216468,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":626649,"timestamp":215244206450,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779023216453,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":615610,"timestamp":215244222162,"id":77,"parentId":37,"tags":{},"startTime":1779023216468,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":630408,"timestamp":215244207418,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779023216454,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":616813,"timestamp":215244222181,"id":78,"parentId":38,"tags":{},"startTime":1779023216468,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":631483,"timestamp":215244207573,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779023216454,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":620697,"timestamp":215244222207,"id":80,"parentId":40,"tags":{},"startTime":1779023216468,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":635163,"timestamp":215244207783,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779023216454,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":631684,"timestamp":215244222225,"id":81,"parentId":42,"tags":{},"startTime":1779023216468,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":645791,"timestamp":215244208188,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779023216454,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":640026,"timestamp":215244218258,"id":64,"parentId":21,"tags":{},"startTime":1779023216465,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":656605,"timestamp":215244201727,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779023216448,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":639029,"timestamp":215244219617,"id":71,"parentId":30,"tags":{},"startTime":1779023216466,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":652917,"timestamp":215244205775,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779023216452,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":638079,"timestamp":215244222240,"id":82,"parentId":44,"tags":{},"startTime":1779023216469,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":651733,"timestamp":215244208627,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779023216455,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":641564,"timestamp":215244218962,"id":67,"parentId":26,"tags":{},"startTime":1779023216465,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":655209,"timestamp":215244205348,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779023216452,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":649325,"timestamp":215244222132,"id":76,"parentId":36,"tags":{},"startTime":1779023216468,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":664453,"timestamp":215244207071,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779023216453,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":649883,"timestamp":215244222280,"id":85,"parentId":47,"tags":{},"startTime":1779023216469,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":663270,"timestamp":215244208950,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779023216455,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":656839,"timestamp":215244222193,"id":79,"parentId":39,"tags":{},"startTime":1779023216468,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":671392,"timestamp":215244207684,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779023216454,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":660747,"timestamp":215244222321,"id":88,"parentId":50,"tags":{},"startTime":1779023216469,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":671763,"timestamp":215244211353,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779023216458,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":657145,"timestamp":215244227480,"id":90,"parentId":24,"tags":{},"startTime":1779023216474,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":681415,"timestamp":215244203250,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779023216450,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":657637,"timestamp":215244231562,"id":91,"parentId":31,"tags":{},"startTime":1779023216478,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":683328,"timestamp":215244205907,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779023216452,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":668066,"timestamp":215244222305,"id":87,"parentId":49,"tags":{},"startTime":1779023216469,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":679151,"timestamp":215244211257,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779023216458,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":661891,"timestamp":215244232376,"id":92,"parentId":41,"tags":{},"startTime":1779023216479,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":686403,"timestamp":215244207904,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779023216454,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":661972,"timestamp":215244233615,"id":93,"parentId":43,"tags":{},"startTime":1779023216480,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":687290,"timestamp":215244208338,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779023216455,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":675647,"timestamp":215244222264,"id":84,"parentId":46,"tags":{},"startTime":1779023216469,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":689110,"timestamp":215244208841,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779023216455,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":681432,"timestamp":215244222335,"id":89,"parentId":51,"tags":{},"startTime":1779023216469,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":692383,"timestamp":215244211425,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779023216458,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":702086,"timestamp":215244222291,"id":86,"parentId":48,"tags":{},"startTime":1779023216469,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":713353,"timestamp":215244211088,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779023216457,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":707954,"timestamp":215244219466,"id":70,"parentId":29,"tags":{},"startTime":1779023216466,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":721817,"timestamp":215244205657,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779023216452,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":720111,"timestamp":215244222250,"id":83,"parentId":45,"tags":{},"startTime":1779023216469,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":733677,"timestamp":215244208753,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779023216455,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":712919,"timestamp":215244239512,"id":100,"parentId":58,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":739354,"timestamp":215244213136,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779023216459,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":713839,"timestamp":215244239412,"id":94,"parentId":23,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":750239,"timestamp":215244203063,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779023216449,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":722648,"timestamp":215244239643,"id":102,"parentId":61,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":748304,"timestamp":215244214067,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779023216460,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":726375,"timestamp":215244239444,"id":95,"parentId":52,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":754143,"timestamp":215244211751,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779023216458,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":726970,"timestamp":215244239624,"id":101,"parentId":59,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":753304,"timestamp":215244213342,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779023216460,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":729909,"timestamp":215244239459,"id":96,"parentId":53,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":757512,"timestamp":215244211898,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779023216458,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":732842,"timestamp":215244239656,"id":103,"parentId":62,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":758298,"timestamp":215244214246,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779023216461,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":735723,"timestamp":215244239668,"id":104,"parentId":63,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":761117,"timestamp":215244214414,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779023216461,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":711600,"timestamp":215244267136,"id":106,"parentId":57,"tags":{},"startTime":1779023216513,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":766158,"timestamp":215244212618,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779023216459,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":741995,"timestamp":215244239473,"id":97,"parentId":54,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":769462,"timestamp":215244212049,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779023216458,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":729064,"timestamp":215244252838,"id":105,"parentId":60,"tags":{},"startTime":1779023216499,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":768413,"timestamp":215244213526,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779023216460,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":763181,"timestamp":215244239481,"id":98,"parentId":55,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":790478,"timestamp":215244212229,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779023216459,"traceId":"76c60db4e957b360"},{"name":"is-page-static","duration":764550,"timestamp":215244239496,"id":99,"parentId":56,"tags":{},"startTime":1779023216486,"traceId":"76c60db4e957b360"},{"name":"check-page","duration":791681,"timestamp":215244212417,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779023216459,"traceId":"76c60db4e957b360"},{"name":"static-check","duration":804557,"timestamp":215244199594,"id":19,"parentId":1,"tags":{},"startTime":1779023216446,"traceId":"76c60db4e957b360"}]
2
+ [{"name":"write-routes-manifest","duration":517,"timestamp":215245013877,"id":108,"parentId":1,"tags":{},"startTime":1779023217260,"traceId":"76c60db4e957b360"},{"name":"load-dotenv","duration":63,"timestamp":215245024634,"id":111,"parentId":110,"tags":{},"startTime":1779023217271,"traceId":"76c60db4e957b360"},{"name":"run-export-path-map","duration":571,"timestamp":215245027267,"id":112,"parentId":110,"tags":{},"startTime":1779023217274,"traceId":"76c60db4e957b360"},{"name":"next-export","duration":607654,"timestamp":215245023437,"id":110,"parentId":1,"tags":{},"startTime":1779023217270,"traceId":"76c60db4e957b360"},{"name":"move-exported-app-not-found-","duration":851,"timestamp":215245635577,"id":113,"parentId":109,"tags":{},"startTime":1779023217882,"traceId":"76c60db4e957b360"},{"name":"move-exported-app-global-error-","duration":486,"timestamp":215245636538,"id":114,"parentId":109,"tags":{},"startTime":1779023217883,"traceId":"76c60db4e957b360"},{"name":"static-generation","duration":621511,"timestamp":215245017917,"id":109,"parentId":1,"tags":{},"startTime":1779023217264,"traceId":"76c60db4e957b360"},{"name":"write-routes-manifest","duration":495,"timestamp":215245639672,"id":115,"parentId":1,"tags":{},"startTime":1779023217886,"traceId":"76c60db4e957b360"},{"name":"print-tree-view","duration":3728,"timestamp":215245656717,"id":116,"parentId":1,"tags":{},"startTime":1779023217903,"traceId":"76c60db4e957b360"},{"name":"write-route-bundle-stats","duration":13371,"timestamp":215245660479,"id":117,"parentId":1,"tags":{},"startTime":1779023217907,"traceId":"76c60db4e957b360"},{"name":"telemetry-flush","duration":33958,"timestamp":215245673884,"id":118,"parentId":1,"tags":{},"startTime":1779023217920,"traceId":"76c60db4e957b360"},{"name":"next-build","duration":18270976,"timestamp":215227436912,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779023199683,"traceId":"76c60db4e957b360"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6393248,"timestamp":214472943918,"id":14,"parentId":1,"tags":{},"startTime":1779022445190,"traceId":"944aa5696cd62082"},{"name":"turbopack-build-events","duration":102,"timestamp":214473296398,"id":15,"parentId":1,"tags":{},"startTime":1779022445543,"traceId":"944aa5696cd62082"},{"name":"run-typescript","duration":9501866,"timestamp":214479347496,"id":16,"parentId":1,"tags":{},"startTime":1779022451594,"traceId":"944aa5696cd62082"},{"name":"static-check","duration":810898,"timestamp":214489079985,"id":19,"parentId":1,"tags":{},"startTime":1779022461326,"traceId":"944aa5696cd62082"},{"name":"static-generation","duration":625704,"timestamp":214489904345,"id":109,"parentId":1,"tags":{},"startTime":1779022462151,"traceId":"944aa5696cd62082"},{"name":"telemetry-flush","duration":32046,"timestamp":214490570349,"id":118,"parentId":1,"tags":{},"startTime":1779022462817,"traceId":"944aa5696cd62082"},{"name":"next-build","duration":17902498,"timestamp":214472699934,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779022444946,"traceId":"944aa5696cd62082"}]
1
+ [{"name":"run-turbopack","duration":6655722,"timestamp":215227684780,"id":14,"parentId":1,"tags":{},"startTime":1779023199931,"traceId":"76c60db4e957b360"},{"name":"turbopack-build-events","duration":86,"timestamp":215227990475,"id":15,"parentId":1,"tags":{},"startTime":1779023200237,"traceId":"76c60db4e957b360"},{"name":"run-typescript","duration":9676596,"timestamp":215234349656,"id":16,"parentId":1,"tags":{},"startTime":1779023206596,"traceId":"76c60db4e957b360"},{"name":"static-check","duration":804557,"timestamp":215244199594,"id":19,"parentId":1,"tags":{},"startTime":1779023216446,"traceId":"76c60db4e957b360"},{"name":"static-generation","duration":621511,"timestamp":215245017917,"id":109,"parentId":1,"tags":{},"startTime":1779023217264,"traceId":"76c60db4e957b360"},{"name":"telemetry-flush","duration":33958,"timestamp":215245673884,"id":118,"parentId":1,"tags":{},"startTime":1779023217920,"traceId":"76c60db4e957b360"},{"name":"next-build","duration":18270976,"timestamp":215227436912,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779023199683,"traceId":"76c60db4e957b360"}]
@@ -2263,7 +2263,26 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2263
2263
  at the chip-count scope. Sibling edits on the
2264
2264
  online + active-links chip digits below. data-
2265
2265
  working-chip-digit attr exposes the digit span. */}
2266
- <span className="font-semibold transition-[font-weight] duration-200 group-hover:font-bold" data-working-chip-digit>{workingCount}</span><span className="opacity-70 transition-opacity duration-200 group-hover:opacity-100" data-working-chip-unit> working</span>
2266
+ {/* Round 539 / Loop chip-row digit gains group-hover:
2267
+ tracking-wide alongside the existing R362 group-
2268
+ hover:font-bold. Pre-R539 the chip digit lifted
2269
+ only on the font-weight axis (600 → 700 on chip
2270
+ hover); R539 adds the kerning axis (tracking
2271
+ normal → tracking-wide ≈ 0.025em ≈ 0.3px on a 12px
2272
+ digit) so hover lifts BOTH typography axes
2273
+ together — same idiom R420/R517 establish at the
2274
+ chrome zoom-level (letter-spacing + fontWeight
2275
+ hover delta) and R531/R530 mirror at the panel
2276
+ label scope. transition-[font-weight] extends to
2277
+ transition-[font-weight,letter-spacing] for the
2278
+ smooth dual-axis tween.
2279
+ Sibling treatment across the 3 chip-row digits
2280
+ (working / online / active-links) — single concept
2281
+ replicated at 3 surfaces by replace_all.
2282
+ Hover-letter-spacing family extension (12 anchors
2283
+ now): R344/R345/R347/R420/R427/R431/R432/R433/
2284
+ R434/R517/R518 + R539 (this round). */}
2285
+ <span className="font-semibold transition-[font-weight,letter-spacing] duration-200 group-hover:font-bold group-hover:tracking-wide" data-working-chip-digit>{workingCount}</span><span className="opacity-70 transition-opacity duration-200 group-hover:opacity-100" data-working-chip-unit> working</span>
2267
2286
  </span>
2268
2287
  <span
2269
2288
  // Round 201 / Loop: online chip — mirror of the working
@@ -2334,7 +2353,9 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2334
2353
  >
2335
2354
  {/* R337 sibling — online chip unit demotion. */}
2336
2355
  {/* R362 sibling — online-chip digit gains font-semibold. */}
2337
- <span className="font-semibold transition-[font-weight] duration-200 group-hover:font-bold" data-online-chip-digit>{onlineNodes.length}</span><span className="opacity-70 transition-opacity duration-200 group-hover:opacity-100" data-online-chip-unit> online</span>
2356
+ {/* R539 sibling online chip digit. Same idiom as
2357
+ working chip above (group-hover:tracking-wide). */}
2358
+ <span className="font-semibold transition-[font-weight,letter-spacing] duration-200 group-hover:font-bold group-hover:tracking-wide" data-online-chip-digit>{onlineNodes.length}</span><span className="opacity-70 transition-opacity duration-200 group-hover:opacity-100" data-online-chip-unit> online</span>
2338
2359
  </span>
2339
2360
  </>
2340
2361
  );
@@ -3405,7 +3426,9 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
3405
3426
  chip-internal-hierarchy arc. data-active-links-
3406
3427
  chip-unit exposes the unit span for tests. */}
3407
3428
  {/* R362 sibling — active-links chip digit gains font-semibold. */}
3408
- <span className="font-semibold transition-[font-weight] duration-200 group-hover:font-bold" data-active-links-chip-digit>{flowLinks.length}</span><span className="opacity-70 transition-opacity duration-200 group-hover:opacity-100" data-active-links-chip-unit> active link{flowLinks.length === 1 ? '' : 's'}</span>
3429
+ {/* R539 sibling active-links chip digit. Same idiom
3430
+ as working + online above. */}
3431
+ <span className="font-semibold transition-[font-weight,letter-spacing] duration-200 group-hover:font-bold group-hover:tracking-wide" data-active-links-chip-digit>{flowLinks.length}</span><span className="opacity-70 transition-opacity duration-200 group-hover:opacity-100" data-active-links-chip-unit> active link{flowLinks.length === 1 ? '' : 's'}</span>
3409
3432
  {rel ? (() => {
3410
3433
  // Round 161 / Loop: extend R160's recency-pip
3411
3434
  // vocabulary up one scope — from per-flow row to
@@ -12022,12 +12045,32 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
12022
12045
  (the minimap viewport is small, ~120×82 px).
12023
12046
  Filter is paint-only — bbox unchanged. transition
12024
12047
  list extends to include 'filter 200ms ease-out'
12025
- so the glow eases when zoom crosses 1.5x. */
12026
- data-topo-minimap-viewport-glow={view.zoom > 1.5 ? 'true' : 'false'}
12048
+ so the glow eases when zoom crosses 1.5x.
12049
+ R540: extends the drop-shadow to also fire on
12050
+ hoveredMinimap with HOVER PRECEDENCE over zoom-
12051
+ state. Pre-R540 the viewport drop-shadow was
12052
+ zoom-only (single gate); R540 adds an
12053
+ interactional gate at lighter blur intensity.
12054
+ Hover wins when both true — interactional signal
12055
+ (user is inspecting) trumps informational signal
12056
+ (you're zoomed). Sibling to R534 edge-badge
12057
+ hover-precedence + R538 group-label hover-tier
12058
+ extensions.
12059
+ 2-tier alpha ladder:
12060
+ hover (interactional) legendAccent 99 (~60%)
12061
+ zoom > 1.5 (info) legendAccent 80 (~50%)
12062
+ rest none
12063
+ data-topo-minimap-viewport-glow attr upgraded
12064
+ binary ('true'/'false') → 3-value ('hover' |
12065
+ 'zoom' | 'false') so tests can distinguish
12066
+ gate cause. */
12067
+ data-topo-minimap-viewport-glow={hoveredMinimap ? 'hover' : view.zoom > 1.5 ? 'zoom' : 'false'}
12027
12068
  style={{
12028
- filter: view.zoom > 1.5
12029
- ? `drop-shadow(0 0 2px ${pal.legendAccent}80)`
12030
- : undefined,
12069
+ filter: hoveredMinimap
12070
+ ? `drop-shadow(0 0 2px ${pal.legendAccent}99)`
12071
+ : view.zoom > 1.5
12072
+ ? `drop-shadow(0 0 2px ${pal.legendAccent}80)`
12073
+ : undefined,
12031
12074
  transition: smoothView
12032
12075
  ? 'x 280ms ease-out, y 280ms ease-out, width 280ms ease-out, height 280ms ease-out, stroke-width 200ms ease-out, opacity 200ms ease-out, filter 200ms ease-out'
12033
12076
  : 'stroke-width 200ms ease-out, opacity 200ms ease-out, filter 200ms ease-out',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.52",
3
+ "version": "0.5.3-preview.54",
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,135 @@
1
+ /* Round 539 verification: chip-row digit (working/online/active-links)
2
+ * gains group-hover:tracking-wide alongside existing R362 group-hover:
3
+ * font-bold. Hover-letter-spacing family 12th anchor across 3 siblings.
4
+ *
5
+ * Test phases:
6
+ * 1. rest each chip-digit: computed letterSpacing='normal' (=0)
7
+ * 2. hover the chip's parent (has `group` class — sets group-hover):
8
+ * digit's letterSpacing = ~0.025em
9
+ * 3. source-side regex confirms all 3 digits have the new class
10
+ */
11
+ import { chromium } from 'playwright';
12
+ import { readFileSync } from 'node:fs';
13
+
14
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
15
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
16
+
17
+ const browser = await chromium.launch({ headless: true });
18
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
19
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
20
+ await ctx.addInitScript(() => {
21
+ try {
22
+ localStorage.setItem('anet-theme', 'cyber');
23
+ localStorage.setItem('anet-topo-layout', 'ring');
24
+ sessionStorage.setItem('anet_v3_auth', '1');
25
+ } catch {}
26
+ });
27
+ await ctx.route('**/api/hub/status*', async (route) => {
28
+ const r = await route.fetch();
29
+ const b = await r.json();
30
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
31
+ const mk = (alias, status) => ({
32
+ alias, status, model: 'claude-opus-4', runtime: 'claude-code-cli',
33
+ network_id: nid, project_dir: null,
34
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
35
+ });
36
+ await route.fulfill({ response: r, json: { ...b, sessions: [
37
+ mk('a·1', 'working'), mk('a·2', 'idle'),
38
+ ] } });
39
+ });
40
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: {
41
+ messages: [{ id: 'm1', from_alias: 'a·1', to_alias: 'a·2', content: 't', created_at: fresh }]
42
+ } }));
43
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
44
+ const page = await ctx.newPage();
45
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
46
+ await page.waitForSelector('[data-working-chip-digit]', { timeout: 15000 });
47
+ await page.waitForTimeout(800);
48
+
49
+ async function probe(digitSel, chipParentSel) {
50
+ const rest = await page.evaluate((s) => {
51
+ const el = document.querySelector(s);
52
+ if (!el) return null;
53
+ return { ls: getComputedStyle(el).letterSpacing };
54
+ }, digitSel);
55
+ await page.hover(chipParentSel);
56
+ await page.waitForTimeout(350);
57
+ const hover = await page.evaluate((s) => {
58
+ const el = document.querySelector(s);
59
+ if (!el) return null;
60
+ return { ls: getComputedStyle(el).letterSpacing };
61
+ }, digitSel);
62
+ // move pointer away for next probe
63
+ await page.mouse.move(50, 50);
64
+ await page.waitForTimeout(200);
65
+ return { rest, hover };
66
+ }
67
+
68
+ // The chip-row chip <span class="group ...">; each has parent with `group`.
69
+ // Hover the chip's parent span — its child digit gets group-hover effects.
70
+ // The chip parent is the closest ancestor with `group` class. Easier: find
71
+ // the digit and walk up to nearest `.group` element via JS.
72
+ async function hoverChipDigit(sel) {
73
+ const handle = await page.evaluateHandle((s) => {
74
+ const el = document.querySelector(s);
75
+ if (!el) return null;
76
+ let p = el.parentElement;
77
+ while (p && !p.classList.contains('group')) p = p.parentElement;
78
+ return p;
79
+ }, sel);
80
+ return handle;
81
+ }
82
+
83
+ async function probeChip(digitSel) {
84
+ const rest = await page.evaluate((s) => {
85
+ const el = document.querySelector(s);
86
+ if (!el) return null;
87
+ return { ls: getComputedStyle(el).letterSpacing };
88
+ }, digitSel);
89
+ const groupHandle = await hoverChipDigit(digitSel);
90
+ await groupHandle.asElement()?.hover();
91
+ await page.waitForTimeout(350);
92
+ const hover = await page.evaluate((s) => {
93
+ const el = document.querySelector(s);
94
+ if (!el) return null;
95
+ return { ls: getComputedStyle(el).letterSpacing };
96
+ }, digitSel);
97
+ await page.mouse.move(50, 50);
98
+ await page.waitForTimeout(200);
99
+ return { rest, hover };
100
+ }
101
+
102
+ const working = await probeChip('[data-working-chip-digit]');
103
+ const online = await probeChip('[data-online-chip-digit]');
104
+ const activeLinks = await probeChip('[data-active-links-chip-digit]');
105
+
106
+ await browser.close();
107
+
108
+ // Source regex — all 3 chip digits should carry the new class string
109
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
110
+ const sourceWorking = /class[Nn]ame="font-semibold transition-\[font-weight,letter-spacing\] duration-200 group-hover:font-bold group-hover:tracking-wide" data-working-chip-digit/.test(src);
111
+ const sourceOnline = /class[Nn]ame="font-semibold transition-\[font-weight,letter-spacing\] duration-200 group-hover:font-bold group-hover:tracking-wide" data-online-chip-digit/.test(src);
112
+ const sourceAL = /class[Nn]ame="font-semibold transition-\[font-weight,letter-spacing\] duration-200 group-hover:font-bold group-hover:tracking-wide" data-active-links-chip-digit/.test(src);
113
+
114
+ const isRestLS = (r) => r?.ls === 'normal' || r?.ls === '0px';
115
+ // tracking-wide = 0.025em; on text-xs (12px) digit ≈ 0.3px (varies with computed font-size)
116
+ const isHoverLS = (r) => r?.ls && r.ls !== 'normal' && r.ls !== '0px' && parseFloat(r.ls) > 0.1;
117
+
118
+ const results = {
119
+ working_rest_normal: isRestLS(working?.rest),
120
+ working_hover_wide: isHoverLS(working?.hover),
121
+ online_rest_normal: isRestLS(online?.rest),
122
+ online_hover_wide: isHoverLS(online?.hover),
123
+ active_rest_normal: isRestLS(activeLinks?.rest),
124
+ active_hover_wide: isHoverLS(activeLinks?.hover),
125
+ source_working: sourceWorking,
126
+ source_online: sourceOnline,
127
+ source_active_links: sourceAL,
128
+ };
129
+ const ok = Object.values(results).every(Boolean);
130
+ console.log(`${ok ? '✅' : '❌'} R539 chip-row digit hover-tracking:`,
131
+ JSON.stringify(results, null, 2),
132
+ '\n working:', JSON.stringify(working),
133
+ '\n online:', JSON.stringify(online),
134
+ '\n active-links:', JSON.stringify(activeLinks));
135
+ process.exit(ok ? 0 : 1);