@sleep2agi/agent-network-dashboard 0.4.6-preview.252 → 0.4.6-preview.254

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 (140) 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 +4 -4
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/admin.html +1 -1
  21. package/.next/server/app/admin.rsc +1 -1
  22. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  28. package/.next/server/app/index.html +2 -2
  29. package/.next/server/app/index.rsc +2 -2
  30. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/login.html +2 -2
  37. package/.next/server/app/login.rsc +2 -2
  38. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  39. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  44. package/.next/server/app/logs.html +1 -1
  45. package/.next/server/app/logs.rsc +1 -1
  46. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  52. package/.next/server/app/messages.html +1 -1
  53. package/.next/server/app/messages.rsc +1 -1
  54. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  60. package/.next/server/app/node.html +1 -1
  61. package/.next/server/app/node.rsc +1 -1
  62. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  68. package/.next/server/app/nodes.html +1 -1
  69. package/.next/server/app/nodes.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  76. package/.next/server/app/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/server-logs.html +1 -1
  78. package/.next/server/app/server-logs.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  84. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  85. package/.next/server/app/settings/networks.html +1 -1
  86. package/.next/server/app/settings/networks.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  94. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/settings/tokens.html +1 -1
  96. package/.next/server/app/settings/tokens.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  103. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  104. package/.next/server/app/settings.html +2 -2
  105. package/.next/server/app/settings.rsc +2 -2
  106. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  110. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  111. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  112. package/.next/server/app/tasks.html +1 -1
  113. package/.next/server/app/tasks.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  120. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
  121. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  123. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  126. package/.next/server/middleware-build-manifest.js +3 -3
  127. package/.next/server/pages/404.html +1 -1
  128. package/.next/server/pages/500.html +1 -1
  129. package/.next/static/chunks/{00nzhypeziv2k.js → 057.5yv578zn_.js} +3 -3
  130. package/.next/static/chunks/{0s4f3hszlmnh~.js → 0vnfrj3ndo1c-.js} +1 -1
  131. package/.next/static/chunks/{0~h-5ihc6hbi0.js → 11nkwgn-q0l5i.js} +1 -1
  132. package/.next/trace +2 -2
  133. package/.next/trace-build +1 -1
  134. package/app/components/TopoGraph.tsx +37 -4
  135. package/package.json +1 -1
  136. package/scripts/topo-label-card-theme-ease-test.mjs +85 -0
  137. package/scripts/topo-panel-theme-ease-test.mjs +85 -0
  138. /package/.next/static/{9tw_R7_Y21DcvbkecBxe6 → 0hZTVyxUAVE3P-SPCsfBZ}/_buildManifest.js +0 -0
  139. /package/.next/static/{9tw_R7_Y21DcvbkecBxe6 → 0hZTVyxUAVE3P-SPCsfBZ}/_clientMiddlewareManifest.js +0 -0
  140. /package/.next/static/{9tw_R7_Y21DcvbkecBxe6 → 0hZTVyxUAVE3P-SPCsfBZ}/_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.4.6-preview.252"],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.4.6-preview.254"],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.4.6-preview.252"],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.4.6-preview.254"],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":299,"timestamp":91170085117,"id":4,"parentId":1,"tags":{},"startTime":1778899142331,"traceId":"2432ab74154a5f44"},{"name":"load-custom-routes","duration":498,"timestamp":91170085565,"id":5,"parentId":1,"tags":{},"startTime":1778899142332,"traceId":"2432ab74154a5f44"},{"name":"create-dist-dir","duration":715,"timestamp":91170086109,"id":6,"parentId":1,"tags":{},"startTime":1778899142332,"traceId":"2432ab74154a5f44"},{"name":"clean","duration":31763,"timestamp":91170087528,"id":7,"parentId":1,"tags":{},"startTime":1778899142334,"traceId":"2432ab74154a5f44"},{"name":"discover-routes","duration":24132,"timestamp":91170199923,"id":8,"parentId":1,"tags":{},"startTime":1778899142446,"traceId":"2432ab74154a5f44"},{"name":"create-root-mapping","duration":136,"timestamp":91170224128,"id":9,"parentId":1,"tags":{},"startTime":1778899142470,"traceId":"2432ab74154a5f44"},{"name":"generate-route-types","duration":22992,"timestamp":91170227598,"id":10,"parentId":1,"tags":{},"startTime":1778899142474,"traceId":"2432ab74154a5f44"},{"name":"public-dir-conflict-check","duration":97,"timestamp":91170250669,"id":11,"parentId":1,"tags":{},"startTime":1778899142497,"traceId":"2432ab74154a5f44"},{"name":"generate-routes-manifest","duration":5367,"timestamp":91170250895,"id":12,"parentId":1,"tags":{},"startTime":1778899142497,"traceId":"2432ab74154a5f44"},{"name":"run-turbopack","duration":5494920,"timestamp":91170261441,"id":14,"parentId":1,"tags":{},"startTime":1778899142508,"traceId":"2432ab74154a5f44"},{"name":"turbopack-build-events","duration":74,"timestamp":91170548213,"id":15,"parentId":1,"tags":{},"startTime":1778899142794,"traceId":"2432ab74154a5f44"},{"name":"run-typescript","duration":8940153,"timestamp":91175765688,"id":16,"parentId":1,"tags":{},"startTime":1778899148012,"traceId":"2432ab74154a5f44"},{"name":"generate-required-server-files","duration":3126,"timestamp":91184707382,"id":18,"parentId":1,"tags":{},"startTime":1778899156954,"traceId":"2432ab74154a5f44"},{"name":"check-static-error-page","duration":15005,"timestamp":91184875847,"id":20,"parentId":19,"tags":{},"startTime":1778899157122,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":427297,"timestamp":91184893668,"id":63,"parentId":22,"tags":{},"startTime":1778899157140,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":442016,"timestamp":91184879127,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778899157125,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":517712,"timestamp":91184894069,"id":66,"parentId":27,"tags":{},"startTime":1778899157140,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":529275,"timestamp":91184882605,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778899157129,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":538826,"timestamp":91184893290,"id":62,"parentId":21,"tags":{},"startTime":1778899157140,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":554751,"timestamp":91184877443,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778899157124,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":547863,"timestamp":91184894310,"id":67,"parentId":28,"tags":{},"startTime":1778899157141,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":559520,"timestamp":91184882745,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778899157129,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":554238,"timestamp":91184896097,"id":70,"parentId":32,"tags":{},"startTime":1778899157142,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":566913,"timestamp":91184883514,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778899157130,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":560841,"timestamp":91184896265,"id":72,"parentId":34,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":576191,"timestamp":91184883768,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778899157130,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":568936,"timestamp":91184894576,"id":69,"parentId":30,"tags":{},"startTime":1778899157141,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":580482,"timestamp":91184883093,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778899157129,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":571308,"timestamp":91184893936,"id":65,"parentId":26,"tags":{},"startTime":1778899157140,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":582835,"timestamp":91184882457,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778899157129,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":573524,"timestamp":91184896457,"id":75,"parentId":37,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":585459,"timestamp":91184884610,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778899157131,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":576013,"timestamp":91184896473,"id":76,"parentId":38,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":587861,"timestamp":91184884750,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778899157131,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":580399,"timestamp":91184896297,"id":73,"parentId":35,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":592817,"timestamp":91184883920,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778899157130,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":580435,"timestamp":91184896487,"id":77,"parentId":39,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":592114,"timestamp":91184884845,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778899157131,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":583236,"timestamp":91184896428,"id":74,"parentId":36,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":595272,"timestamp":91184884432,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778899157131,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":588155,"timestamp":91184894455,"id":68,"parentId":29,"tags":{},"startTime":1778899157141,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":599765,"timestamp":91184882894,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778899157129,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":586328,"timestamp":91184896510,"id":79,"parentId":41,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":597799,"timestamp":91184885084,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778899157131,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":588803,"timestamp":91184896524,"id":80,"parentId":42,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":600184,"timestamp":91184885198,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778899157131,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":595922,"timestamp":91184896558,"id":83,"parentId":45,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":607033,"timestamp":91184885510,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778899157132,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":596134,"timestamp":91184896571,"id":84,"parentId":46,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":607146,"timestamp":91184885596,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778899157132,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":598982,"timestamp":91184896536,"id":81,"parentId":43,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":610262,"timestamp":91184885307,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778899157132,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":599168,"timestamp":91184896545,"id":82,"parentId":44,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":610333,"timestamp":91184885404,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778899157132,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":599267,"timestamp":91184896584,"id":85,"parentId":47,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":610147,"timestamp":91184885728,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778899157132,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":600739,"timestamp":91184896593,"id":86,"parentId":48,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":611533,"timestamp":91184885840,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778899157132,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":601632,"timestamp":91184901716,"id":88,"parentId":24,"tags":{},"startTime":1778899157148,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":623751,"timestamp":91184879643,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778899157126,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":613708,"timestamp":91184896500,"id":78,"parentId":40,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":625283,"timestamp":91184884968,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778899157131,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":607514,"timestamp":91184902868,"id":89,"parentId":31,"tags":{},"startTime":1778899157149,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":627177,"timestamp":91184883233,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778899157130,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":615792,"timestamp":91184896606,"id":87,"parentId":49,"tags":{},"startTime":1778899157143,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":625020,"timestamp":91184887424,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778899157134,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":625367,"timestamp":91184896189,"id":71,"parentId":33,"tags":{},"startTime":1778899157142,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":637948,"timestamp":91184883652,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778899157130,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":629945,"timestamp":91184893801,"id":64,"parentId":25,"tags":{},"startTime":1778899157140,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":641525,"timestamp":91184882265,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778899157129,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":625508,"timestamp":91184905273,"id":95,"parentId":54,"tags":{},"startTime":1778899157152,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":642178,"timestamp":91184888644,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778899157135,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":632614,"timestamp":91184905299,"id":97,"parentId":57,"tags":{},"startTime":1778899157152,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":648239,"timestamp":91184889718,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778899157136,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":640208,"timestamp":91184905308,"id":98,"parentId":59,"tags":{},"startTime":1778899157152,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":655231,"timestamp":91184890333,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778899157137,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":648145,"timestamp":91184905193,"id":90,"parentId":23,"tags":{},"startTime":1778899157151,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":673977,"timestamp":91184879403,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778899157126,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":653334,"timestamp":91184905325,"id":99,"parentId":60,"tags":{},"startTime":1778899157152,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":668268,"timestamp":91184890474,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778899157137,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":655639,"timestamp":91184905342,"id":100,"parentId":61,"tags":{},"startTime":1778899157152,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":670445,"timestamp":91184890612,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778899157137,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":654051,"timestamp":91184911436,"id":101,"parentId":58,"tags":{},"startTime":1778899157158,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":675641,"timestamp":91184889885,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778899157136,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":633153,"timestamp":91184935060,"id":102,"parentId":55,"tags":{},"startTime":1778899157181,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":679365,"timestamp":91184888880,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778899157135,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":673170,"timestamp":91184905260,"id":94,"parentId":53,"tags":{},"startTime":1778899157152,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":690048,"timestamp":91184888434,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778899157135,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":674273,"timestamp":91184905247,"id":93,"parentId":52,"tags":{},"startTime":1778899157152,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":691360,"timestamp":91184888236,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778899157135,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":678766,"timestamp":91184905217,"id":91,"parentId":50,"tags":{},"startTime":1778899157151,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":696173,"timestamp":91184887882,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778899157134,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":680020,"timestamp":91184905232,"id":92,"parentId":51,"tags":{},"startTime":1778899157152,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":697218,"timestamp":91184888075,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778899157134,"traceId":"2432ab74154a5f44"},{"name":"is-page-static","duration":695501,"timestamp":91184905286,"id":96,"parentId":56,"tags":{},"startTime":1778899157152,"traceId":"2432ab74154a5f44"},{"name":"check-page","duration":711332,"timestamp":91184889507,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778899157136,"traceId":"2432ab74154a5f44"},{"name":"static-check","duration":726210,"timestamp":91184874678,"id":19,"parentId":1,"tags":{},"startTime":1778899157121,"traceId":"2432ab74154a5f44"},{"name":"write-routes-manifest","duration":428,"timestamp":91185608868,"id":104,"parentId":1,"tags":{},"startTime":1778899157855,"traceId":"2432ab74154a5f44"},{"name":"load-dotenv","duration":43,"timestamp":91185621431,"id":107,"parentId":106,"tags":{},"startTime":1778899157868,"traceId":"2432ab74154a5f44"},{"name":"run-export-path-map","duration":516,"timestamp":91185625306,"id":108,"parentId":106,"tags":{},"startTime":1778899157872,"traceId":"2432ab74154a5f44"},{"name":"next-export","duration":643071,"timestamp":91185620222,"id":106,"parentId":1,"tags":{},"startTime":1778899157866,"traceId":"2432ab74154a5f44"}]
2
- [{"name":"move-exported-app-not-found-","duration":2026,"timestamp":91186266548,"id":109,"parentId":105,"tags":{},"startTime":1778899158513,"traceId":"2432ab74154a5f44"},{"name":"move-exported-app-global-error-","duration":656,"timestamp":91186268657,"id":110,"parentId":105,"tags":{},"startTime":1778899158515,"traceId":"2432ab74154a5f44"},{"name":"static-generation","duration":658720,"timestamp":91185613254,"id":105,"parentId":1,"tags":{},"startTime":1778899157860,"traceId":"2432ab74154a5f44"},{"name":"write-routes-manifest","duration":434,"timestamp":91186272166,"id":111,"parentId":1,"tags":{},"startTime":1778899158518,"traceId":"2432ab74154a5f44"},{"name":"print-tree-view","duration":3887,"timestamp":91186279437,"id":112,"parentId":1,"tags":{},"startTime":1778899158526,"traceId":"2432ab74154a5f44"},{"name":"write-route-bundle-stats","duration":17689,"timestamp":91186283351,"id":113,"parentId":1,"tags":{},"startTime":1778899158530,"traceId":"2432ab74154a5f44"},{"name":"telemetry-flush","duration":27628,"timestamp":91186301064,"id":114,"parentId":1,"tags":{},"startTime":1778899158547,"traceId":"2432ab74154a5f44"},{"name":"next-build","duration":16296043,"timestamp":91170032677,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778899142279,"traceId":"2432ab74154a5f44"}]
1
+ [{"name":"generate-buildid","duration":407,"timestamp":91771678731,"id":4,"parentId":1,"tags":{},"startTime":1778899743925,"traceId":"d1877b7828307ffe"},{"name":"load-custom-routes","duration":603,"timestamp":91771679317,"id":5,"parentId":1,"tags":{},"startTime":1778899743926,"traceId":"d1877b7828307ffe"},{"name":"create-dist-dir","duration":869,"timestamp":91771679985,"id":6,"parentId":1,"tags":{},"startTime":1778899743926,"traceId":"d1877b7828307ffe"},{"name":"clean","duration":32902,"timestamp":91771681625,"id":7,"parentId":1,"tags":{},"startTime":1778899743928,"traceId":"d1877b7828307ffe"},{"name":"discover-routes","duration":11502,"timestamp":91771801967,"id":8,"parentId":1,"tags":{},"startTime":1778899744048,"traceId":"d1877b7828307ffe"},{"name":"create-root-mapping","duration":176,"timestamp":91771813556,"id":9,"parentId":1,"tags":{},"startTime":1778899744060,"traceId":"d1877b7828307ffe"},{"name":"generate-route-types","duration":36159,"timestamp":91771817098,"id":10,"parentId":1,"tags":{},"startTime":1778899744063,"traceId":"d1877b7828307ffe"},{"name":"public-dir-conflict-check","duration":107,"timestamp":91771853359,"id":11,"parentId":1,"tags":{},"startTime":1778899744100,"traceId":"d1877b7828307ffe"},{"name":"generate-routes-manifest","duration":5475,"timestamp":91771853592,"id":12,"parentId":1,"tags":{},"startTime":1778899744100,"traceId":"d1877b7828307ffe"},{"name":"run-turbopack","duration":5797104,"timestamp":91771864837,"id":14,"parentId":1,"tags":{},"startTime":1778899744111,"traceId":"d1877b7828307ffe"},{"name":"turbopack-build-events","duration":79,"timestamp":91772161683,"id":15,"parentId":1,"tags":{},"startTime":1778899744408,"traceId":"d1877b7828307ffe"},{"name":"run-typescript","duration":9529507,"timestamp":91777673048,"id":16,"parentId":1,"tags":{},"startTime":1778899749919,"traceId":"d1877b7828307ffe"},{"name":"generate-required-server-files","duration":2275,"timestamp":91787203493,"id":18,"parentId":1,"tags":{},"startTime":1778899759450,"traceId":"d1877b7828307ffe"},{"name":"check-static-error-page","duration":11098,"timestamp":91787416346,"id":20,"parentId":19,"tags":{},"startTime":1778899759663,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":470657,"timestamp":91787429835,"id":63,"parentId":22,"tags":{},"startTime":1778899759676,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":481251,"timestamp":91787419402,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778899759666,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":631319,"timestamp":91787430378,"id":67,"parentId":28,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":639113,"timestamp":91787422696,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":634457,"timestamp":91787429920,"id":64,"parentId":25,"tags":{},"startTime":1778899759676,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":642123,"timestamp":91787422319,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":636205,"timestamp":91787430130,"id":66,"parentId":27,"tags":{},"startTime":1778899759676,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":643804,"timestamp":91787422592,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":636568,"timestamp":91787430827,"id":70,"parentId":32,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":644123,"timestamp":91787423324,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":643283,"timestamp":91787430993,"id":73,"parentId":35,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":650784,"timestamp":91787423553,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":649607,"timestamp":91787431125,"id":74,"parentId":36,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":656900,"timestamp":91787423894,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":654708,"timestamp":91787431158,"id":75,"parentId":37,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":661923,"timestamp":91787423997,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":660935,"timestamp":91787431185,"id":76,"parentId":38,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":668092,"timestamp":91787424112,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":665963,"timestamp":91787430658,"id":69,"parentId":30,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":673746,"timestamp":91787422941,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":667214,"timestamp":91787431195,"id":77,"parentId":39,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":674289,"timestamp":91787424167,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":671853,"timestamp":91787431216,"id":79,"parentId":41,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":678835,"timestamp":91787424281,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":683892,"timestamp":91787431225,"id":80,"parentId":42,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":690854,"timestamp":91787424334,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":688020,"timestamp":91787431235,"id":81,"parentId":43,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":694978,"timestamp":91787424383,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":692614,"timestamp":91787431244,"id":82,"parentId":44,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":699473,"timestamp":91787424431,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":693124,"timestamp":91787430966,"id":72,"parentId":34,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":700639,"timestamp":91787423486,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":697586,"timestamp":91787431254,"id":83,"parentId":45,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":704416,"timestamp":91787424482,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":700332,"timestamp":91787431206,"id":78,"parentId":40,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":707349,"timestamp":91787424231,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":702787,"timestamp":91787431273,"id":85,"parentId":47,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":709508,"timestamp":91787424597,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":716291,"timestamp":91787429561,"id":62,"parentId":21,"tags":{},"startTime":1778899759676,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":728042,"timestamp":91787417866,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778899759664,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":717160,"timestamp":91787430891,"id":71,"parentId":33,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":724685,"timestamp":91787423419,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":718743,"timestamp":91787430530,"id":68,"parentId":29,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":726503,"timestamp":91787422814,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":721802,"timestamp":91787431264,"id":84,"parentId":46,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":728581,"timestamp":91787424531,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":725902,"timestamp":91787431293,"id":87,"parentId":49,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":732558,"timestamp":91787424698,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":728631,"timestamp":91787430018,"id":65,"parentId":26,"tags":{},"startTime":1778899759676,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":736210,"timestamp":91787422488,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":728142,"timestamp":91787442573,"id":89,"parentId":31,"tags":{},"startTime":1778899759689,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":747707,"timestamp":91787423075,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":804370,"timestamp":91787431283,"id":86,"parentId":48,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":811081,"timestamp":91787424650,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":820917,"timestamp":91787444896,"id":92,"parentId":51,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":840799,"timestamp":91787425086,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":835683,"timestamp":91787438081,"id":88,"parentId":24,"tags":{},"startTime":1778899759684,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":853974,"timestamp":91787419859,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778899759666,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":852898,"timestamp":91787444950,"id":97,"parentId":57,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":871509,"timestamp":91787426403,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":859217,"timestamp":91787444938,"id":96,"parentId":56,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":877992,"timestamp":91787426246,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":865456,"timestamp":91787444907,"id":93,"parentId":52,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":885214,"timestamp":91787425206,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":873352,"timestamp":91787444960,"id":98,"parentId":59,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":891512,"timestamp":91787426872,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":875344,"timestamp":91787444974,"id":99,"parentId":60,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":893355,"timestamp":91787427033,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":876794,"timestamp":91787444917,"id":94,"parentId":53,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":896424,"timestamp":91787425339,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778899759672,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":880152,"timestamp":91787444989,"id":100,"parentId":61,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":898079,"timestamp":91787427185,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":880723,"timestamp":91787444884,"id":91,"parentId":50,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":900684,"timestamp":91787424966,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":866990,"timestamp":91787458769,"id":101,"parentId":58,"tags":{},"startTime":1778899759705,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":899267,"timestamp":91787426522,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":883525,"timestamp":91787444856,"id":90,"parentId":23,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":908784,"timestamp":91787419653,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778899759666,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":853609,"timestamp":91787474924,"id":102,"parentId":55,"tags":{},"startTime":1778899759721,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":902858,"timestamp":91787425708,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778899759672,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":903359,"timestamp":91787444927,"id":95,"parentId":54,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":922884,"timestamp":91787425488,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778899759672,"traceId":"d1877b7828307ffe"},{"name":"static-check","duration":933236,"timestamp":91787415331,"id":19,"parentId":1,"tags":{},"startTime":1778899759662,"traceId":"d1877b7828307ffe"},{"name":"write-routes-manifest","duration":593,"timestamp":91788358298,"id":104,"parentId":1,"tags":{},"startTime":1778899760605,"traceId":"d1877b7828307ffe"},{"name":"load-dotenv","duration":65,"timestamp":91788372827,"id":107,"parentId":106,"tags":{},"startTime":1778899760619,"traceId":"d1877b7828307ffe"},{"name":"run-export-path-map","duration":831,"timestamp":91788376193,"id":108,"parentId":106,"tags":{},"startTime":1778899760622,"traceId":"d1877b7828307ffe"},{"name":"next-export","duration":630047,"timestamp":91788371118,"id":106,"parentId":1,"tags":{},"startTime":1778899760617,"traceId":"d1877b7828307ffe"}]
2
+ [{"name":"move-exported-app-not-found-","duration":2677,"timestamp":91789005110,"id":109,"parentId":105,"tags":{},"startTime":1778899761251,"traceId":"d1877b7828307ffe"},{"name":"move-exported-app-global-error-","duration":572,"timestamp":91789007870,"id":110,"parentId":105,"tags":{},"startTime":1778899761254,"traceId":"d1877b7828307ffe"},{"name":"static-generation","duration":646476,"timestamp":91788364169,"id":105,"parentId":1,"tags":{},"startTime":1778899760610,"traceId":"d1877b7828307ffe"},{"name":"write-routes-manifest","duration":458,"timestamp":91789010825,"id":111,"parentId":1,"tags":{},"startTime":1778899761257,"traceId":"d1877b7828307ffe"},{"name":"print-tree-view","duration":5683,"timestamp":91789028996,"id":112,"parentId":1,"tags":{},"startTime":1778899761275,"traceId":"d1877b7828307ffe"},{"name":"write-route-bundle-stats","duration":14258,"timestamp":91789034720,"id":113,"parentId":1,"tags":{},"startTime":1778899761281,"traceId":"d1877b7828307ffe"},{"name":"telemetry-flush","duration":28914,"timestamp":91789049042,"id":114,"parentId":1,"tags":{},"startTime":1778899761295,"traceId":"d1877b7828307ffe"},{"name":"next-build","duration":17454367,"timestamp":91771623627,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778899743870,"traceId":"d1877b7828307ffe"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5494920,"timestamp":91170261441,"id":14,"parentId":1,"tags":{},"startTime":1778899142508,"traceId":"2432ab74154a5f44"},{"name":"turbopack-build-events","duration":74,"timestamp":91170548213,"id":15,"parentId":1,"tags":{},"startTime":1778899142794,"traceId":"2432ab74154a5f44"},{"name":"run-typescript","duration":8940153,"timestamp":91175765688,"id":16,"parentId":1,"tags":{},"startTime":1778899148012,"traceId":"2432ab74154a5f44"},{"name":"static-check","duration":726210,"timestamp":91184874678,"id":19,"parentId":1,"tags":{},"startTime":1778899157121,"traceId":"2432ab74154a5f44"},{"name":"static-generation","duration":658720,"timestamp":91185613254,"id":105,"parentId":1,"tags":{},"startTime":1778899157860,"traceId":"2432ab74154a5f44"},{"name":"telemetry-flush","duration":27628,"timestamp":91186301064,"id":114,"parentId":1,"tags":{},"startTime":1778899158547,"traceId":"2432ab74154a5f44"},{"name":"next-build","duration":16296043,"timestamp":91170032677,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778899142279,"traceId":"2432ab74154a5f44"}]
1
+ [{"name":"run-turbopack","duration":5797104,"timestamp":91771864837,"id":14,"parentId":1,"tags":{},"startTime":1778899744111,"traceId":"d1877b7828307ffe"},{"name":"turbopack-build-events","duration":79,"timestamp":91772161683,"id":15,"parentId":1,"tags":{},"startTime":1778899744408,"traceId":"d1877b7828307ffe"},{"name":"run-typescript","duration":9529507,"timestamp":91777673048,"id":16,"parentId":1,"tags":{},"startTime":1778899749919,"traceId":"d1877b7828307ffe"},{"name":"static-check","duration":933236,"timestamp":91787415331,"id":19,"parentId":1,"tags":{},"startTime":1778899759662,"traceId":"d1877b7828307ffe"},{"name":"static-generation","duration":646476,"timestamp":91788364169,"id":105,"parentId":1,"tags":{},"startTime":1778899760610,"traceId":"d1877b7828307ffe"},{"name":"telemetry-flush","duration":28914,"timestamp":91789049042,"id":114,"parentId":1,"tags":{},"startTime":1778899761295,"traceId":"d1877b7828307ffe"},{"name":"next-build","duration":17454367,"timestamp":91771623627,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778899743870,"traceId":"d1877b7828307ffe"}]
@@ -5030,6 +5030,22 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5030
5030
  opens chat (R136) but doesn't drive hovered
5031
5031
  Alias, so this stroke tint is exclusively a
5032
5032
  pointer-on-target signal. */}
5033
+ {/* Round 246 / Loop: label card chrome picks up
5034
+ fill + opacity in its transition list. R142
5035
+ already eased filter (drop-shadow) + stroke
5036
+ (R217 cyan tint on hover); the rect's fill
5037
+ (pal.labelBox.fill: cyber #020617 ↔ light
5038
+ #ffffff) and theme-derived opacity (0.94
5039
+ cyber / 1 light) still snapped on theme
5040
+ toggle. R211 already closed the alias/sub
5041
+ text-fill snap on the same card; R246
5042
+ closes the chrome-fill snap on the rect
5043
+ BEHIND that text, so the whole card
5044
+ (background + text) transitions as one
5045
+ unit through every theme switch. Same
5046
+ 220ms cadence the existing filter/stroke
5047
+ pair uses — coordinated 4-property easing
5048
+ across the card. */}
5033
5049
  <rect
5034
5050
  x={-cardW / 2} y={cardTopY} width={cardW} height={cardH} rx="6"
5035
5051
  fill={pal.labelBox.fill}
@@ -5049,7 +5065,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5049
5065
  : (isLight
5050
5066
  ? 'drop-shadow(0 1px 2px rgba(15,23,42,0.08))'
5051
5067
  : 'drop-shadow(0 1px 2px rgba(0,0,0,0.30))'),
5052
- transition: 'filter 220ms ease-out, stroke 220ms ease-out',
5068
+ transition: 'filter 220ms ease-out, stroke 220ms ease-out, fill 220ms ease-out, opacity 220ms ease-out',
5053
5069
  }}
5054
5070
  />
5055
5071
  {/* Round 211 / Loop: alias + sub text fill eases on
@@ -5247,13 +5263,25 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5247
5263
  pin status (R61). Reuses R18's KPI-card hover-
5248
5264
  elevation idiom for visual consistency. Theme-
5249
5265
  aware shadow colour stays the same; just the
5250
- spread + blur grow. */
5266
+ spread + blur grow.
5267
+
5268
+ Round 247 / Loop: extend the transition list to
5269
+ include fill + stroke + opacity at 200ms. R135
5270
+ already eased filter (hover drop-shadow); the
5271
+ three theme-driven properties (pal.legendBox.fill
5272
+ cyber #020617 ↔ light #ffffff, pal.legendBox.
5273
+ stroke cyber #1f2937 ↔ light #e2e8f0, opacity
5274
+ 0.92 ↔ 0.97) still snapped on theme toggle. Same
5275
+ per-element 4-property easing R246 added to the
5276
+ per-node label card chrome — now applied at the
5277
+ panel scope so the whole panel (background + chrome
5278
+ + shadow) eases as one unit through theme switches. */
5251
5279
  filter: hoveredPanel === 'recent'
5252
5280
  ? (isLight ? 'drop-shadow(0 4px 12px rgba(15,23,42,0.14))'
5253
5281
  : 'drop-shadow(0 4px 12px rgba(0,0,0,0.65))')
5254
5282
  : (isLight ? 'drop-shadow(0 2px 6px rgba(15,23,42,0.08))'
5255
5283
  : 'drop-shadow(0 2px 6px rgba(0,0,0,0.45))'),
5256
- transition: 'filter 200ms ease-out',
5284
+ transition: 'filter 200ms ease-out, fill 200ms ease-out, stroke 200ms ease-out, opacity 200ms ease-out',
5257
5285
  }}
5258
5286
  data-topo-panel-elevation="recent"
5259
5287
  />
@@ -5916,6 +5944,11 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5916
5944
  rect at line ~3299. Both panels grow their shadow on
5917
5945
  hover to telegraph "the chrome is interactive" since
5918
5946
  their rows pin / nav. */}
5947
+ {/* Round 247 / Loop: sibling treatment to the recent-signal
5948
+ panel — fill + stroke + opacity transitions added so
5949
+ the legend panel also eases through theme toggles
5950
+ (no snap on cyber↔light switch). Same 200ms cadence
5951
+ across the panel pair. */}
5919
5952
  <rect
5920
5953
  x="0" y="0" width="224" height="104" rx="10"
5921
5954
  fill={pal.legendBox.fill}
@@ -5927,7 +5960,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5927
5960
  : 'drop-shadow(0 4px 12px rgba(0,0,0,0.65))')
5928
5961
  : (isLight ? 'drop-shadow(0 2px 6px rgba(15,23,42,0.08))'
5929
5962
  : 'drop-shadow(0 2px 6px rgba(0,0,0,0.45))'),
5930
- transition: 'filter 200ms ease-out',
5963
+ transition: 'filter 200ms ease-out, fill 200ms ease-out, stroke 200ms ease-out, opacity 200ms ease-out',
5931
5964
  }}
5932
5965
  data-topo-panel-elevation="legend"
5933
5966
  />
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.4.6-preview.252",
3
+ "version": "0.4.6-preview.254",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,85 @@
1
+ /* Round 246 verification: node label card chrome rect picks up
2
+ * fill + opacity transitions to coordinate with the existing
3
+ * filter (R142) + stroke (R217) easing on the same element.
4
+ *
5
+ * Pre-R246 the rect transition list was 'filter 220ms ease-out,
6
+ * stroke 220ms ease-out'. fill (pal.labelBox.fill: cyber dark ↔
7
+ * light white) and opacity (cyber 0.94, light 1) snapped on theme
8
+ * toggle. Surrounding elements already ease theme:
9
+ * R211 alias/sub text fill (same card)
10
+ * R242 chat-target ring filter + stroke
11
+ * R244 hub + halo opacity
12
+ * R245 edge stroke
13
+ *
14
+ * R246 closes the label-card chrome — adds fill + opacity to the
15
+ * existing transition list so the whole card (background + text)
16
+ * eases as one unit through theme switches and any future
17
+ * fill/opacity state changes.
18
+ *
19
+ * Test scope per visible label card:
20
+ * - element present at [data-node-label-card]
21
+ * - style.transition contains filter, stroke, fill, AND opacity
22
+ * each at 220ms (or 0.22s browser-normalised)
23
+ */
24
+ import { chromium } from 'playwright';
25
+ import { readFileSync } from 'node:fs';
26
+
27
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
28
+ const browser = await chromium.launch({ headless: true });
29
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
30
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
31
+ await ctx.addInitScript(() => {
32
+ try {
33
+ localStorage.setItem('anet-theme', 'cyber');
34
+ sessionStorage.setItem('anet_v3_auth', '1');
35
+ localStorage.setItem('anet-topo-layout', 'ring');
36
+ } catch {}
37
+ });
38
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
39
+ await ctx.route('**/api/hub/status*', async (route) => {
40
+ const r = await route.fetch();
41
+ const b = await r.json();
42
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
43
+ const mk = (alias) => ({
44
+ alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
45
+ network_id: nid, project_dir: null,
46
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
47
+ });
48
+ await route.fulfill({ response: r, json: { ...b, sessions: [
49
+ mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
50
+ ] } });
51
+ });
52
+ await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: [] } }));
53
+ await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
54
+
55
+ const page = await ctx.newPage();
56
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
57
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
58
+ await page.waitForSelector('[data-node-label-card]', { timeout: 10000, state: 'attached' });
59
+ await page.waitForTimeout(300);
60
+
61
+ const probe = await page.evaluate(() => {
62
+ const cards = Array.from(document.querySelectorAll('[data-node-label-card]'));
63
+ return cards.map((r) => ({
64
+ alias: r.getAttribute('data-node-label-card'),
65
+ elevation: r.getAttribute('data-node-label-card-elevation'),
66
+ transition: r.style.transition,
67
+ }));
68
+ });
69
+ await browser.close();
70
+
71
+ const hasProp = (s, prop) => new RegExp(`${prop}\\s+(?:220ms|0\\.22s)`).test(s || '');
72
+
73
+ const results = {
74
+ four_cards: probe.length === 4,
75
+ all_have_alias: probe.every(p => typeof p.alias === 'string'),
76
+ all_idle_elevation: probe.every(p => p.elevation === 'idle'),
77
+ all_have_filter_220: probe.every(p => hasProp(p.transition, 'filter')),
78
+ all_have_stroke_220: probe.every(p => hasProp(p.transition, 'stroke')),
79
+ all_have_fill_220: probe.every(p => hasProp(p.transition, 'fill')),
80
+ all_have_opacity_220: probe.every(p => hasProp(p.transition, 'opacity')),
81
+ };
82
+ const ok = Object.values(results).every(Boolean);
83
+ console.log(`${ok ? '✅' : '❌'} label card theme ease:`, JSON.stringify(results),
84
+ '\n cards:', probe.map(p => ({ a: p.alias, e: p.elevation, t: (p.transition || '').slice(0, 100) })));
85
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,85 @@
1
+ /* Round 247 verification: recent-signal + legend panel chrome
2
+ * <rect>s pick up fill + stroke + opacity in their transition
3
+ * lists, completing the per-panel theme-toggle smoothing.
4
+ *
5
+ * Pre-R247 each panel rect transition was 'filter 200ms ease-out'
6
+ * (R135 hover-elevation drop-shadow). Three theme-driven properties
7
+ * snapped on theme toggle:
8
+ * - fill: pal.legendBox.fill (cyber #020617 ↔ light #ffffff)
9
+ * - stroke: pal.legendBox.stroke (cyber #1f2937 ↔ light #e2e8f0)
10
+ * - opacity: 0.92 cyber ↔ 0.97 light
11
+ *
12
+ * R247 adds all three to the transition list at 200ms ease-out.
13
+ * Mirrors R246's per-node label-card treatment at the panel scope.
14
+ *
15
+ * Test scope per panel:
16
+ * - element present at [data-topo-panel-elevation]
17
+ * - style.transition contains filter, fill, stroke, AND opacity
18
+ * each at 200ms (or 0.2s browser-normalised)
19
+ */
20
+ import { chromium } from 'playwright';
21
+ import { readFileSync } from 'node:fs';
22
+
23
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
24
+ const browser = await chromium.launch({ headless: true });
25
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
26
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
27
+ await ctx.addInitScript(() => {
28
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
29
+ });
30
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
31
+ await ctx.route('**/api/hub/status*', async (route) => {
32
+ const r = await route.fetch();
33
+ const b = await r.json();
34
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
35
+ const mk = (alias) => ({
36
+ alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
37
+ network_id: nid, project_dir: null,
38
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
39
+ });
40
+ await route.fulfill({ response: r, json: { ...b, sessions: [
41
+ mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
42
+ ] } });
43
+ });
44
+ await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: [] } }));
45
+ await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
46
+
47
+ const page = await ctx.newPage();
48
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
49
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
50
+ await page.waitForSelector('[data-topo-panel-elevation="recent"]', { timeout: 10000, state: 'attached' });
51
+ await page.waitForSelector('[data-topo-panel-elevation="legend"]', { timeout: 10000, state: 'attached' });
52
+ await page.waitForTimeout(300);
53
+
54
+ const probe = await page.evaluate(() => {
55
+ const grab = (panel) => {
56
+ const r = document.querySelector(`[data-topo-panel-elevation="${panel}"]`);
57
+ if (!r) return null;
58
+ return { transition: r.style.transition };
59
+ };
60
+ return {
61
+ recent: grab('recent'),
62
+ legend: grab('legend'),
63
+ };
64
+ });
65
+ await browser.close();
66
+
67
+ const hasProp = (s, prop) => new RegExp(`${prop}\\s+(?:200ms|0\\.2s)`).test(s || '');
68
+
69
+ const results = {
70
+ recent_present: probe.recent !== null,
71
+ recent_has_filter_200: hasProp(probe.recent?.transition, 'filter'),
72
+ recent_has_fill_200: hasProp(probe.recent?.transition, 'fill'),
73
+ recent_has_stroke_200: hasProp(probe.recent?.transition, 'stroke'),
74
+ recent_has_opacity_200: hasProp(probe.recent?.transition, 'opacity'),
75
+ legend_present: probe.legend !== null,
76
+ legend_has_filter_200: hasProp(probe.legend?.transition, 'filter'),
77
+ legend_has_fill_200: hasProp(probe.legend?.transition, 'fill'),
78
+ legend_has_stroke_200: hasProp(probe.legend?.transition, 'stroke'),
79
+ legend_has_opacity_200: hasProp(probe.legend?.transition, 'opacity'),
80
+ };
81
+ const ok = Object.values(results).every(Boolean);
82
+ console.log(`${ok ? '✅' : '❌'} panel theme ease:`, JSON.stringify(results),
83
+ '\n recent:', probe.recent,
84
+ '\n legend:', probe.legend);
85
+ process.exit(ok ? 0 : 1);