@sleep2agi/agent-network-dashboard 0.4.6-preview.271 → 0.4.6-preview.273

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 +2 -2
  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/{10irw4noos.9c.js → 06vrf5h1n.gb-.js} +2 -2
  130. package/.next/static/chunks/{0krph-mr~j~-i.js → 0~93i03.56p.v.js} +1 -1
  131. package/.next/static/chunks/{0iqr11y9s-xgx.js → 12kl5dbej_zj1.js} +1 -1
  132. package/.next/trace +2 -2
  133. package/.next/trace-build +1 -1
  134. package/app/components/TopoGraph.tsx +43 -4
  135. package/package.json +1 -1
  136. package/scripts/topo-panel-title-fill-ease-test.mjs +91 -0
  137. package/scripts/topo-top-rail-theme-ease-test.mjs +89 -0
  138. /package/.next/static/{1RSKMzmY8kvB-f37IJbmE → ysCYES1Ed8ugot_cvPNIw}/_buildManifest.js +0 -0
  139. /package/.next/static/{1RSKMzmY8kvB-f37IJbmE → ysCYES1Ed8ugot_cvPNIw}/_clientMiddlewareManifest.js +0 -0
  140. /package/.next/static/{1RSKMzmY8kvB-f37IJbmE → ysCYES1Ed8ugot_cvPNIw}/_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.271"],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.273"],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.271"],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.273"],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":301,"timestamp":98941767147,"id":4,"parentId":1,"tags":{},"startTime":1778906914013,"traceId":"591eb3581e10e4a1"},{"name":"load-custom-routes","duration":713,"timestamp":98941767606,"id":5,"parentId":1,"tags":{},"startTime":1778906914014,"traceId":"591eb3581e10e4a1"},{"name":"create-dist-dir","duration":840,"timestamp":98941768387,"id":6,"parentId":1,"tags":{},"startTime":1778906914015,"traceId":"591eb3581e10e4a1"},{"name":"clean","duration":31303,"timestamp":98941769922,"id":7,"parentId":1,"tags":{},"startTime":1778906914016,"traceId":"591eb3581e10e4a1"},{"name":"discover-routes","duration":22849,"timestamp":98941885434,"id":8,"parentId":1,"tags":{},"startTime":1778906914132,"traceId":"591eb3581e10e4a1"},{"name":"create-root-mapping","duration":121,"timestamp":98941908348,"id":9,"parentId":1,"tags":{},"startTime":1778906914155,"traceId":"591eb3581e10e4a1"},{"name":"generate-route-types","duration":22008,"timestamp":98941910974,"id":10,"parentId":1,"tags":{},"startTime":1778906914157,"traceId":"591eb3581e10e4a1"},{"name":"public-dir-conflict-check","duration":100,"timestamp":98941933089,"id":11,"parentId":1,"tags":{},"startTime":1778906914179,"traceId":"591eb3581e10e4a1"},{"name":"generate-routes-manifest","duration":5469,"timestamp":98941933319,"id":12,"parentId":1,"tags":{},"startTime":1778906914180,"traceId":"591eb3581e10e4a1"},{"name":"run-turbopack","duration":5832384,"timestamp":98941944470,"id":14,"parentId":1,"tags":{},"startTime":1778906914191,"traceId":"591eb3581e10e4a1"},{"name":"turbopack-build-events","duration":133,"timestamp":98942238916,"id":15,"parentId":1,"tags":{},"startTime":1778906914485,"traceId":"591eb3581e10e4a1"},{"name":"run-typescript","duration":9037369,"timestamp":98947785984,"id":16,"parentId":1,"tags":{},"startTime":1778906920032,"traceId":"591eb3581e10e4a1"},{"name":"generate-required-server-files","duration":2468,"timestamp":98956824571,"id":18,"parentId":1,"tags":{},"startTime":1778906929071,"traceId":"591eb3581e10e4a1"},{"name":"check-static-error-page","duration":11863,"timestamp":98957005556,"id":20,"parentId":19,"tags":{},"startTime":1778906929252,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":416443,"timestamp":98957019798,"id":63,"parentId":22,"tags":{},"startTime":1778906929266,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":428390,"timestamp":98957008023,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778906929254,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":537062,"timestamp":98957020548,"id":69,"parentId":30,"tags":{},"startTime":1778906929267,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":546674,"timestamp":98957011041,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778906929257,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":547173,"timestamp":98957019904,"id":64,"parentId":25,"tags":{},"startTime":1778906929266,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":556692,"timestamp":98957010459,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778906929257,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":549857,"timestamp":98957020105,"id":66,"parentId":27,"tags":{},"startTime":1778906929266,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":559329,"timestamp":98957010711,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778906929257,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":551475,"timestamp":98957020283,"id":67,"parentId":28,"tags":{},"startTime":1778906929267,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":561013,"timestamp":98957010819,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778906929257,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":555270,"timestamp":98957022416,"id":71,"parentId":33,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":566271,"timestamp":98957011476,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778906929258,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":555355,"timestamp":98957022584,"id":73,"parentId":35,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":566318,"timestamp":98957011666,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778906929258,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":558342,"timestamp":98957020014,"id":65,"parentId":26,"tags":{},"startTime":1778906929266,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":567796,"timestamp":98957010605,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778906929257,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":564678,"timestamp":98957020743,"id":70,"parentId":32,"tags":{},"startTime":1778906929267,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":574123,"timestamp":98957011359,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778906929258,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":569125,"timestamp":98957020392,"id":68,"parentId":29,"tags":{},"startTime":1778906929267,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":578639,"timestamp":98957010919,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778906929257,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":570142,"timestamp":98957022811,"id":77,"parentId":39,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":580546,"timestamp":98957012452,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778906929259,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":572502,"timestamp":98957022827,"id":78,"parentId":40,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":582818,"timestamp":98957012554,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778906929259,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":581638,"timestamp":98957019482,"id":62,"parentId":21,"tags":{},"startTime":1778906929266,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":594406,"timestamp":98957006756,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778906929253,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":578518,"timestamp":98957022798,"id":76,"parentId":38,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":588976,"timestamp":98957012367,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778906929259,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":578918,"timestamp":98957022542,"id":72,"parentId":34,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":589915,"timestamp":98957011568,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778906929258,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":587312,"timestamp":98957022899,"id":82,"parentId":44,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":597179,"timestamp":98957013086,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778906929259,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":594012,"timestamp":98957022927,"id":84,"parentId":46,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":603737,"timestamp":98957013294,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778906929260,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":596743,"timestamp":98957022858,"id":79,"parentId":41,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":606993,"timestamp":98957012653,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778906929259,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":603783,"timestamp":98957022730,"id":74,"parentId":36,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":614443,"timestamp":98957012119,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778906929258,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":603738,"timestamp":98957022946,"id":85,"parentId":47,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":613280,"timestamp":98957013434,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778906929260,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":603856,"timestamp":98957022961,"id":86,"parentId":48,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":613310,"timestamp":98957013548,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778906929260,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":604083,"timestamp":98957022873,"id":80,"parentId":42,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":614162,"timestamp":98957012819,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778906929259,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":612489,"timestamp":98957022777,"id":75,"parentId":37,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":623051,"timestamp":98957012267,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778906929259,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":607170,"timestamp":98957029076,"id":89,"parentId":31,"tags":{},"startTime":1778906929275,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":625163,"timestamp":98957011133,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778906929257,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":621611,"timestamp":98957022915,"id":83,"parentId":45,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":631406,"timestamp":98957013178,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778906929259,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":621436,"timestamp":98957027799,"id":88,"parentId":24,"tags":{},"startTime":1778906929274,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":640843,"timestamp":98957008441,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778906929255,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":628063,"timestamp":98957022977,"id":87,"parentId":49,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":636164,"timestamp":98957014924,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778906929261,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":651195,"timestamp":98957022885,"id":81,"parentId":43,"tags":{},"startTime":1778906929269,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":661181,"timestamp":98957012969,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778906929259,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":650222,"timestamp":98957031709,"id":96,"parentId":56,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":665569,"timestamp":98957016422,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778906929263,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":656977,"timestamp":98957031724,"id":97,"parentId":57,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":672173,"timestamp":98957016578,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778906929263,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":664174,"timestamp":98957031649,"id":92,"parentId":51,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":680490,"timestamp":98957015406,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778906929262,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":664423,"timestamp":98957031682,"id":94,"parentId":53,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":680481,"timestamp":98957015662,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778906929262,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":664561,"timestamp":98957031739,"id":98,"parentId":59,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":679315,"timestamp":98957017033,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778906929263,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":662519,"timestamp":98957042830,"id":101,"parentId":55,"tags":{},"startTime":1778906929289,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":689412,"timestamp":98957015983,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778906929262,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":673713,"timestamp":98957031775,"id":100,"parentId":61,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":688279,"timestamp":98957017241,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778906929264,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":676983,"timestamp":98957031697,"id":95,"parentId":54,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":692930,"timestamp":98957015804,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778906929262,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":677523,"timestamp":98957031666,"id":93,"parentId":52,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":693707,"timestamp":98957015521,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778906929262,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":678151,"timestamp":98957031755,"id":99,"parentId":60,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":692814,"timestamp":98957017144,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778906929263,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":659091,"timestamp":98957051598,"id":102,"parentId":58,"tags":{},"startTime":1778906929298,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":694021,"timestamp":98957016704,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778906929263,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":679173,"timestamp":98957031603,"id":90,"parentId":23,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":702543,"timestamp":98957008253,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778906929255,"traceId":"591eb3581e10e4a1"},{"name":"is-page-static","duration":683691,"timestamp":98957031636,"id":91,"parentId":50,"tags":{},"startTime":1778906929278,"traceId":"591eb3581e10e4a1"},{"name":"check-page","duration":700067,"timestamp":98957015287,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778906929262,"traceId":"591eb3581e10e4a1"},{"name":"static-check","duration":710718,"timestamp":98957004673,"id":19,"parentId":1,"tags":{},"startTime":1778906929251,"traceId":"591eb3581e10e4a1"},{"name":"write-routes-manifest","duration":485,"timestamp":98957723662,"id":104,"parentId":1,"tags":{},"startTime":1778906929970,"traceId":"591eb3581e10e4a1"},{"name":"load-dotenv","duration":47,"timestamp":98957734845,"id":107,"parentId":106,"tags":{},"startTime":1778906929981,"traceId":"591eb3581e10e4a1"},{"name":"run-export-path-map","duration":504,"timestamp":98957738379,"id":108,"parentId":106,"tags":{},"startTime":1778906929985,"traceId":"591eb3581e10e4a1"},{"name":"next-export","duration":558713,"timestamp":98957733429,"id":106,"parentId":1,"tags":{},"startTime":1778906929980,"traceId":"591eb3581e10e4a1"}]
2
- [{"name":"move-exported-app-not-found-","duration":2234,"timestamp":98958296652,"id":109,"parentId":105,"tags":{},"startTime":1778906930543,"traceId":"591eb3581e10e4a1"},{"name":"move-exported-app-global-error-","duration":1878,"timestamp":98958298998,"id":110,"parentId":105,"tags":{},"startTime":1778906930545,"traceId":"591eb3581e10e4a1"},{"name":"static-generation","duration":574706,"timestamp":98957728085,"id":105,"parentId":1,"tags":{},"startTime":1778906929974,"traceId":"591eb3581e10e4a1"},{"name":"write-routes-manifest","duration":493,"timestamp":98958302974,"id":111,"parentId":1,"tags":{},"startTime":1778906930549,"traceId":"591eb3581e10e4a1"},{"name":"print-tree-view","duration":3593,"timestamp":98958322082,"id":112,"parentId":1,"tags":{},"startTime":1778906930568,"traceId":"591eb3581e10e4a1"},{"name":"write-route-bundle-stats","duration":13748,"timestamp":98958325716,"id":113,"parentId":1,"tags":{},"startTime":1778906930572,"traceId":"591eb3581e10e4a1"},{"name":"telemetry-flush","duration":22769,"timestamp":98958339500,"id":114,"parentId":1,"tags":{},"startTime":1778906930586,"traceId":"591eb3581e10e4a1"},{"name":"next-build","duration":16652160,"timestamp":98941710162,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778906913956,"traceId":"591eb3581e10e4a1"}]
1
+ [{"name":"generate-buildid","duration":290,"timestamp":99585347847,"id":4,"parentId":1,"tags":{},"startTime":1778907557594,"traceId":"7a8110d06d353707"},{"name":"load-custom-routes","duration":446,"timestamp":99585348274,"id":5,"parentId":1,"tags":{},"startTime":1778907557595,"traceId":"7a8110d06d353707"},{"name":"create-dist-dir","duration":719,"timestamp":99585348758,"id":6,"parentId":1,"tags":{},"startTime":1778907557595,"traceId":"7a8110d06d353707"},{"name":"clean","duration":31834,"timestamp":99585350225,"id":7,"parentId":1,"tags":{},"startTime":1778907557597,"traceId":"7a8110d06d353707"},{"name":"discover-routes","duration":8888,"timestamp":99585468081,"id":8,"parentId":1,"tags":{},"startTime":1778907557714,"traceId":"7a8110d06d353707"},{"name":"create-root-mapping","duration":120,"timestamp":99585477059,"id":9,"parentId":1,"tags":{},"startTime":1778907557723,"traceId":"7a8110d06d353707"},{"name":"generate-route-types","duration":35019,"timestamp":99585479660,"id":10,"parentId":1,"tags":{},"startTime":1778907557726,"traceId":"7a8110d06d353707"},{"name":"public-dir-conflict-check","duration":98,"timestamp":99585514768,"id":11,"parentId":1,"tags":{},"startTime":1778907557761,"traceId":"7a8110d06d353707"},{"name":"generate-routes-manifest","duration":5121,"timestamp":99585514999,"id":12,"parentId":1,"tags":{},"startTime":1778907557761,"traceId":"7a8110d06d353707"},{"name":"run-turbopack","duration":5773485,"timestamp":99585525275,"id":14,"parentId":1,"tags":{},"startTime":1778907557772,"traceId":"7a8110d06d353707"},{"name":"turbopack-build-events","duration":99,"timestamp":99585814315,"id":15,"parentId":1,"tags":{},"startTime":1778907558061,"traceId":"7a8110d06d353707"},{"name":"run-typescript","duration":9277517,"timestamp":99591308726,"id":16,"parentId":1,"tags":{},"startTime":1778907563555,"traceId":"7a8110d06d353707"},{"name":"generate-required-server-files","duration":2074,"timestamp":99600587301,"id":18,"parentId":1,"tags":{},"startTime":1778907572834,"traceId":"7a8110d06d353707"},{"name":"check-static-error-page","duration":9814,"timestamp":99600779481,"id":20,"parentId":19,"tags":{},"startTime":1778907573026,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":447284,"timestamp":99600791543,"id":63,"parentId":22,"tags":{},"startTime":1778907573038,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":457238,"timestamp":99600781758,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778907573028,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":553997,"timestamp":99600792387,"id":69,"parentId":30,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":561961,"timestamp":99600784523,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778907573031,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":562054,"timestamp":99600792549,"id":70,"parentId":32,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":569888,"timestamp":99600784790,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778907573031,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":563981,"timestamp":99600791831,"id":66,"parentId":27,"tags":{},"startTime":1778907573038,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":571604,"timestamp":99600784267,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778907573031,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":563952,"timestamp":99600792619,"id":71,"parentId":33,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":571748,"timestamp":99600784874,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778907573031,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":565577,"timestamp":99600791641,"id":64,"parentId":25,"tags":{},"startTime":1778907573038,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":573216,"timestamp":99600784057,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778907573030,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":567061,"timestamp":99600792702,"id":72,"parentId":34,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":574822,"timestamp":99600784979,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778907573031,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":568102,"timestamp":99600792732,"id":73,"parentId":35,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":575781,"timestamp":99600785094,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778907573031,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":570154,"timestamp":99600792843,"id":74,"parentId":36,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":577627,"timestamp":99600785450,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778907573032,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":572501,"timestamp":99600792908,"id":76,"parentId":38,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":579791,"timestamp":99600785657,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778907573032,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":576980,"timestamp":99600792934,"id":78,"parentId":40,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":584175,"timestamp":99600785781,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778907573032,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":581558,"timestamp":99600792894,"id":75,"parentId":37,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":588923,"timestamp":99600785571,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778907573032,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":582758,"timestamp":99600792946,"id":79,"parentId":41,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":589910,"timestamp":99600785838,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778907573032,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":586129,"timestamp":99600791257,"id":62,"parentId":21,"tags":{},"startTime":1778907573038,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":596779,"timestamp":99600780652,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778907573027,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":586876,"timestamp":99600792966,"id":81,"parentId":43,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":593910,"timestamp":99600785986,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778907573032,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":589216,"timestamp":99600792954,"id":80,"parentId":42,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":596288,"timestamp":99600785921,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778907573032,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":594200,"timestamp":99600792987,"id":83,"parentId":45,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":601071,"timestamp":99600786170,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778907573032,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":594484,"timestamp":99600792921,"id":77,"parentId":39,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":601719,"timestamp":99600785719,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778907573032,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":597736,"timestamp":99600791720,"id":65,"parentId":26,"tags":{},"startTime":1778907573038,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":605309,"timestamp":99600784188,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778907573030,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":597194,"timestamp":99600793027,"id":85,"parentId":47,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":603935,"timestamp":99600786323,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778907573033,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":598443,"timestamp":99600792248,"id":68,"parentId":29,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":606300,"timestamp":99600784430,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778907573031,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":600865,"timestamp":99600793048,"id":87,"parentId":49,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":607502,"timestamp":99600786453,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778907573033,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":598941,"timestamp":99600796847,"id":88,"parentId":24,"tags":{},"startTime":1778907573043,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":613654,"timestamp":99600782177,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778907573028,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":597794,"timestamp":99600798278,"id":89,"parentId":31,"tags":{},"startTime":1778907573045,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":611508,"timestamp":99600784600,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778907573031,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":604853,"timestamp":99600792999,"id":84,"parentId":46,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":611668,"timestamp":99600786238,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778907573033,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":610137,"timestamp":99600793039,"id":86,"parentId":48,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":616829,"timestamp":99600786388,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778907573033,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":618391,"timestamp":99600792096,"id":67,"parentId":28,"tags":{},"startTime":1778907573038,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":626170,"timestamp":99600784361,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778907573031,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":668269,"timestamp":99600800628,"id":91,"parentId":50,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":682313,"timestamp":99600786825,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778907573033,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":672653,"timestamp":99600800666,"id":94,"parentId":53,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":686064,"timestamp":99600787329,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778907573034,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":676518,"timestamp":99600800688,"id":96,"parentId":56,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":689110,"timestamp":99600788150,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778907573034,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":677285,"timestamp":99600800653,"id":93,"parentId":52,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":690839,"timestamp":99600787147,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778907573033,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":680922,"timestamp":99600800701,"id":97,"parentId":57,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":693326,"timestamp":99600788347,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778907573035,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":685525,"timestamp":99600800598,"id":90,"parentId":23,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":704233,"timestamp":99600781963,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778907573028,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":688872,"timestamp":99600800744,"id":100,"parentId":61,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":700598,"timestamp":99600789062,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778907573035,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":689698,"timestamp":99600800714,"id":98,"parentId":59,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":701646,"timestamp":99600788808,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778907573035,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":687222,"timestamp":99600806290,"id":101,"parentId":58,"tags":{},"startTime":1778907573053,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":705051,"timestamp":99600788504,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778907573035,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":694254,"timestamp":99600800726,"id":99,"parentId":60,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":706117,"timestamp":99600788929,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778907573035,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":682084,"timestamp":99600815267,"id":102,"parentId":55,"tags":{},"startTime":1778907573062,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":709685,"timestamp":99600787704,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778907573034,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":708198,"timestamp":99600792979,"id":82,"parentId":44,"tags":{},"startTime":1778907573039,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":715141,"timestamp":99600786075,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778907573032,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":702129,"timestamp":99600800639,"id":92,"parentId":51,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":715828,"timestamp":99600786979,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778907573033,"traceId":"7a8110d06d353707"},{"name":"is-page-static","duration":715713,"timestamp":99600800679,"id":95,"parentId":54,"tags":{},"startTime":1778907573047,"traceId":"7a8110d06d353707"},{"name":"check-page","duration":728936,"timestamp":99600787505,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778907573034,"traceId":"7a8110d06d353707"},{"name":"static-check","duration":737740,"timestamp":99600778736,"id":19,"parentId":1,"tags":{},"startTime":1778907573025,"traceId":"7a8110d06d353707"},{"name":"write-routes-manifest","duration":545,"timestamp":99601529788,"id":104,"parentId":1,"tags":{},"startTime":1778907573776,"traceId":"7a8110d06d353707"},{"name":"load-dotenv","duration":49,"timestamp":99601554474,"id":107,"parentId":106,"tags":{},"startTime":1778907573801,"traceId":"7a8110d06d353707"},{"name":"run-export-path-map","duration":804,"timestamp":99601557623,"id":108,"parentId":106,"tags":{},"startTime":1778907573804,"traceId":"7a8110d06d353707"},{"name":"next-export","duration":621648,"timestamp":99601553065,"id":106,"parentId":1,"tags":{},"startTime":1778907573799,"traceId":"7a8110d06d353707"}]
2
+ [{"name":"move-exported-app-not-found-","duration":2767,"timestamp":99602180589,"id":109,"parentId":105,"tags":{},"startTime":1778907574427,"traceId":"7a8110d06d353707"},{"name":"move-exported-app-global-error-","duration":892,"timestamp":99602183497,"id":110,"parentId":105,"tags":{},"startTime":1778907574430,"traceId":"7a8110d06d353707"},{"name":"static-generation","duration":650329,"timestamp":99601536738,"id":105,"parentId":1,"tags":{},"startTime":1778907573783,"traceId":"7a8110d06d353707"},{"name":"write-routes-manifest","duration":433,"timestamp":99602187241,"id":111,"parentId":1,"tags":{},"startTime":1778907574434,"traceId":"7a8110d06d353707"},{"name":"print-tree-view","duration":5077,"timestamp":99602201375,"id":112,"parentId":1,"tags":{},"startTime":1778907574448,"traceId":"7a8110d06d353707"},{"name":"write-route-bundle-stats","duration":19102,"timestamp":99602206490,"id":113,"parentId":1,"tags":{},"startTime":1778907574453,"traceId":"7a8110d06d353707"},{"name":"telemetry-flush","duration":18399,"timestamp":99602225637,"id":114,"parentId":1,"tags":{},"startTime":1778907574472,"traceId":"7a8110d06d353707"},{"name":"next-build","duration":16948272,"timestamp":99585295795,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778907557542,"traceId":"7a8110d06d353707"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5832384,"timestamp":98941944470,"id":14,"parentId":1,"tags":{},"startTime":1778906914191,"traceId":"591eb3581e10e4a1"},{"name":"turbopack-build-events","duration":133,"timestamp":98942238916,"id":15,"parentId":1,"tags":{},"startTime":1778906914485,"traceId":"591eb3581e10e4a1"},{"name":"run-typescript","duration":9037369,"timestamp":98947785984,"id":16,"parentId":1,"tags":{},"startTime":1778906920032,"traceId":"591eb3581e10e4a1"},{"name":"static-check","duration":710718,"timestamp":98957004673,"id":19,"parentId":1,"tags":{},"startTime":1778906929251,"traceId":"591eb3581e10e4a1"},{"name":"static-generation","duration":574706,"timestamp":98957728085,"id":105,"parentId":1,"tags":{},"startTime":1778906929974,"traceId":"591eb3581e10e4a1"},{"name":"telemetry-flush","duration":22769,"timestamp":98958339500,"id":114,"parentId":1,"tags":{},"startTime":1778906930586,"traceId":"591eb3581e10e4a1"},{"name":"next-build","duration":16652160,"timestamp":98941710162,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778906913956,"traceId":"591eb3581e10e4a1"}]
1
+ [{"name":"run-turbopack","duration":5773485,"timestamp":99585525275,"id":14,"parentId":1,"tags":{},"startTime":1778907557772,"traceId":"7a8110d06d353707"},{"name":"turbopack-build-events","duration":99,"timestamp":99585814315,"id":15,"parentId":1,"tags":{},"startTime":1778907558061,"traceId":"7a8110d06d353707"},{"name":"run-typescript","duration":9277517,"timestamp":99591308726,"id":16,"parentId":1,"tags":{},"startTime":1778907563555,"traceId":"7a8110d06d353707"},{"name":"static-check","duration":737740,"timestamp":99600778736,"id":19,"parentId":1,"tags":{},"startTime":1778907573025,"traceId":"7a8110d06d353707"},{"name":"static-generation","duration":650329,"timestamp":99601536738,"id":105,"parentId":1,"tags":{},"startTime":1778907573783,"traceId":"7a8110d06d353707"},{"name":"telemetry-flush","duration":18399,"timestamp":99602225637,"id":114,"parentId":1,"tags":{},"startTime":1778907574472,"traceId":"7a8110d06d353707"},{"name":"next-build","duration":16948272,"timestamp":99585295795,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778907557542,"traceId":"7a8110d06d353707"}]
@@ -2506,7 +2506,27 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2506
2506
  transition: 'background-color 200ms ease-out, border-color 200ms ease-out, box-shadow 200ms ease-out',
2507
2507
  }}
2508
2508
  >
2509
- <div className={`absolute inset-x-0 top-0 h-px bg-gradient-to-r ${pal.topRailGradient}`} />
2509
+ {/* Round 265 / Loop: top-rail (1px-tall colored line at the top
2510
+ of the canvas wrapper) picks up theme-toggle transition.
2511
+ Pre-R265 the className `bg-gradient-to-r ${pal.topRail
2512
+ Gradient}` was theme-conditional — cyber `via-cyan-400/70`
2513
+ ↔ light `via-emerald-500/40` — but no inline transition,
2514
+ so the rail SNAPPED on theme flip while the wrapper bg
2515
+ (R254) + border (R254) + shadow (R263) all eased. The top-
2516
+ rail is the THIN BRIGHT LINE that visually anchors the
2517
+ canvas top edge — its hard color flip was a small but real
2518
+ theme-snap that broke the otherwise-eased canvas envelope.
2519
+ transition: background-image catches the className-driven
2520
+ gradient swap; Chrome ≥ 89 / Safari ≥ 14.1 / FF ≥ 96
2521
+ interpolate linear-gradients with matching stop structures
2522
+ (both gradients are `from-transparent via-X to-transparent`
2523
+ → same 3-stop layout). data-topo-top-rail makes the probe
2524
+ deterministic. */}
2525
+ <div
2526
+ className={`absolute inset-x-0 top-0 h-px bg-gradient-to-r ${pal.topRailGradient}`}
2527
+ data-topo-top-rail
2528
+ style={{ transition: 'background-image 200ms ease-out' }}
2529
+ />
2510
2530
 
2511
2531
  {/* Round 158 / Loop: give the canvas SVG itself an accessible
2512
2532
  name + role description. R151-R157 added a11y to every
@@ -5436,7 +5456,16 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5436
5456
  }}
5437
5457
  data-topo-panel-elevation="recent"
5438
5458
  />
5439
- <text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight="700">recent signal</text>
5459
+ {/* Round 266 / Loop: panel title fill picks up theme-toggle
5460
+ transition. Pre-R266 the title "recent signal" had
5461
+ fill={pal.legendHeadline} (cyber #e5e7eb ↔ light
5462
+ #0f172a) without any inline transition — so the BIGGEST
5463
+ text in the recent-signal panel (fontSize 12 fontWeight
5464
+ 700) hard-flipped color on theme toggle while the panel
5465
+ rect (R247) and every row inside (various) eased.
5466
+ Sibling treatment to the legend panel title at line
5467
+ ~6195 — the panel-pair's titles now ease together. */}
5468
+ <text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight="700" style={{ transition: 'fill 200ms ease-out' }} data-recent-panel-title>recent signal</text>
5440
5469
  {/* R96: header count now matches what the rows show. Pre-R96
5441
5470
  this read "X msgs" off the raw messages array, but the
5442
5471
  rows below render DEDUPED flowLinks — so a fleet with 10
@@ -6172,7 +6201,12 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
6172
6201
  font + position vocabulary so the two side panels feel
6173
6202
  paired. Title text at x=13 y=21; total fleet count
6174
6203
  right-aligned at x=215 y=21 in the accent colour. */}
6175
- <text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight="700">legend</text>
6204
+ {/* Round 266 / Loop: legend panel title fill picks up theme-
6205
+ toggle transition — sibling treatment to the recent-
6206
+ signal panel title at line ~5459. Pre-R266 both panel
6207
+ titles hard-flipped color on theme toggle while their
6208
+ surrounding chrome eased; R266 closes both at once. */}
6209
+ <text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight="700" style={{ transition: 'fill 200ms ease-out' }} data-legend-panel-title>legend</text>
6176
6210
  {/* Round 257 / Loop: legend panel header count picks up the
6177
6211
  symmetric 13L/13R inner-padding pattern from the recent-
6178
6212
  signal panel. Pre-R257 the legend header was 13px from
@@ -6189,7 +6223,12 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
6189
6223
  ('M140,80 Q164,56 196,80') and would visibly tighten
6190
6224
  against the arrow tip if moved further left. Header
6191
6225
  count has no such pairing; it stands alone. */}
6192
- <text x="211" y="21" textAnchor="end" fill={pal.legendAccent} fontSize="10" fontFamily="monospace" data-legend-panel-count>{sessions.length} node{sessions.length === 1 ? '' : 's'}</text>
6226
+ {/* Round 266 / Loop: legend count fill (pal.legendAccent
6227
+ — cyber #67e8f9 cyan ↔ light #10b981 emerald) picks up
6228
+ theme-toggle transition. Pre-R266 the count snapped
6229
+ color on theme flip; R266 eases it alongside the panel
6230
+ title (sibling text in the same header band). */}
6231
+ <text x="211" y="21" textAnchor="end" fill={pal.legendAccent} fontSize="10" fontFamily="monospace" data-legend-panel-count style={{ transition: 'fill 200ms ease-out' }}>{sessions.length} node{sessions.length === 1 ? '' : 's'}</text>
6193
6232
  {(() => {
6194
6233
  const idleCount = onlineNodes.length - workingCount;
6195
6234
  // R106: rows shift +8 px (was y0=24, 48, 72 → 32, 56, 80)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.4.6-preview.271",
3
+ "version": "0.4.6-preview.273",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,91 @@
1
+ /* Round 266 verification: corner panel titles + legend count text
2
+ * pick up theme-toggle fill transitions.
3
+ *
4
+ * Pre-R266 three texts in the corner panel headers snapped fill on
5
+ * theme toggle:
6
+ * "recent signal" fill=pal.legendHeadline (cyber #e5e7eb ↔ light #0f172a)
7
+ * "legend" fill=pal.legendHeadline (same)
8
+ * "{N} nodes" fill=pal.legendAccent (cyber #67e8f9 ↔ light #10b981)
9
+ *
10
+ * The panel rect chrome eased (R247), the rows eased (various), but
11
+ * the BIGGEST text in each panel header hard-flipped color on theme
12
+ * toggle. R266 adds `transition: fill 200ms ease-out` to all three.
13
+ *
14
+ * Test scope:
15
+ * 1. Recent-signal title element present at [data-recent-panel-title].
16
+ * 2. Legend title element present at [data-legend-panel-title].
17
+ * 3. Legend count element present at [data-legend-panel-count].
18
+ * 4. Each inline transition contains `fill 200ms` (or 0.2s).
19
+ * 5. R265 top-rail still has its background-image transition (regression).
20
+ */
21
+ import { chromium } from 'playwright';
22
+ import { readFileSync } from 'node:fs';
23
+
24
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
25
+ const browser = await chromium.launch({ headless: true });
26
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
27
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
28
+ await ctx.addInitScript(() => {
29
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
30
+ });
31
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
32
+ await ctx.route('**/api/hub/status*', async (route) => {
33
+ const r = await route.fetch();
34
+ const b = await r.json();
35
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
36
+ const mk = (alias) => ({
37
+ alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
38
+ network_id: nid, project_dir: null,
39
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
40
+ });
41
+ await route.fulfill({ response: r, json: { ...b, sessions: [
42
+ mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
43
+ ] } });
44
+ });
45
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
46
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
47
+
48
+ const page = await ctx.newPage();
49
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
50
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
51
+ await page.waitForSelector('[data-recent-panel-title]', { timeout: 10000 });
52
+ await page.waitForSelector('[data-legend-panel-title]', { timeout: 10000 });
53
+ await page.waitForSelector('[data-legend-panel-count]', { timeout: 10000 });
54
+ await page.waitForSelector('[data-topo-top-rail]', { timeout: 10000 });
55
+ await page.waitForTimeout(300);
56
+
57
+ const probe = await page.evaluate(() => {
58
+ const recentTitle = document.querySelector('[data-recent-panel-title]');
59
+ const legendTitle = document.querySelector('[data-legend-panel-title]');
60
+ const legendCount = document.querySelector('[data-legend-panel-count]');
61
+ const topRail = document.querySelector('[data-topo-top-rail]');
62
+ return {
63
+ recentTitleTransition: recentTitle ? recentTitle.style.transition : null,
64
+ legendTitleTransition: legendTitle ? legendTitle.style.transition : null,
65
+ legendCountTransition: legendCount ? legendCount.style.transition : null,
66
+ topRailTransition: topRail ? topRail.style.transition : null,
67
+ };
68
+ });
69
+ await browser.close();
70
+
71
+ const has = (s, prop) => new RegExp(`${prop}\\s+(?:200ms|0\\.2s)`).test(s || '');
72
+
73
+ const results = {
74
+ recent_title_present: probe.recentTitleTransition !== null,
75
+ recent_title_has_fill_200: has(probe.recentTitleTransition, 'fill'),
76
+
77
+ legend_title_present: probe.legendTitleTransition !== null,
78
+ legend_title_has_fill_200: has(probe.legendTitleTransition, 'fill'),
79
+
80
+ legend_count_present: probe.legendCountTransition !== null,
81
+ legend_count_has_fill_200: has(probe.legendCountTransition, 'fill'),
82
+
83
+ r265_top_rail_bg_image_200: has(probe.topRailTransition, 'background-image'),
84
+ };
85
+ const ok = Object.values(results).every(Boolean);
86
+ console.log(`${ok ? '✅' : '❌'} panel title fill ease:`, JSON.stringify(results),
87
+ '\n recent title:', probe.recentTitleTransition,
88
+ '\n legend title:', probe.legendTitleTransition,
89
+ '\n legend count:', probe.legendCountTransition,
90
+ '\n top rail: ', probe.topRailTransition);
91
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,89 @@
1
+ /* Round 265 verification: canvas top-rail gradient gains theme-toggle
2
+ * transition — closes the last canvas-envelope theme-snap.
3
+ *
4
+ * Pre-R265 the top-rail was:
5
+ * <div className={`absolute inset-x-0 top-0 h-px bg-gradient-to-r ${pal.topRailGradient}`} />
6
+ *
7
+ * pal.topRailGradient is theme-conditional:
8
+ * cyber: 'from-transparent via-cyan-400/70 to-transparent'
9
+ * light: 'from-transparent via-emerald-500/40 to-transparent'
10
+ *
11
+ * On theme toggle the className swap changes the gradient color but no
12
+ * inline transition existed — so the 1px-tall bright line at the
13
+ * canvas top edge SNAPPED while the wrapper bg (R254), border (R254),
14
+ * and shadow (R263) all eased. Small visible holdover.
15
+ *
16
+ * R265 adds `transition: background-image 200ms ease-out`. CSS
17
+ * gradient interpolation works on browsers ≥ Chrome 89 / Safari 14.1 /
18
+ * FF 96 when both gradients share matching stop structure — both
19
+ * gradients here are `from-transparent via-X to-transparent`
20
+ * (identical 3-stop layout).
21
+ *
22
+ * Test scope:
23
+ * 1. Top-rail element present at `[data-topo-top-rail]`.
24
+ * 2. Inline transition contains `background-image` at 200ms (or 0.2s).
25
+ * 3. Computed backgroundImage is a non-empty linear-gradient (not
26
+ * 'none' / empty — confirms the className gradient applied).
27
+ * 4. R263 wrapper box-shadow transition still in place (regression).
28
+ */
29
+ import { chromium } from 'playwright';
30
+ import { readFileSync } from 'node:fs';
31
+
32
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
33
+ const browser = await chromium.launch({ headless: true });
34
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
35
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
36
+ await ctx.addInitScript(() => {
37
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
38
+ });
39
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
40
+ await ctx.route('**/api/hub/status*', async (route) => {
41
+ const r = await route.fetch();
42
+ const b = await r.json();
43
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
44
+ const mk = (alias) => ({
45
+ alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
46
+ network_id: nid, project_dir: null,
47
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
48
+ });
49
+ await route.fulfill({ response: r, json: { ...b, sessions: [
50
+ mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
51
+ ] } });
52
+ });
53
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
54
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
55
+
56
+ const page = await ctx.newPage();
57
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
58
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
59
+ await page.waitForSelector('[data-topo-top-rail]', { timeout: 10000 });
60
+ await page.waitForSelector('[data-topo-wrapper]', { timeout: 10000 });
61
+ await page.waitForTimeout(300);
62
+
63
+ const probe = await page.evaluate(() => {
64
+ const rail = document.querySelector('[data-topo-top-rail]');
65
+ const wrapper = document.querySelector('[data-topo-wrapper]');
66
+ return {
67
+ railTransition: rail ? rail.style.transition : null,
68
+ railBackgroundImage: rail ? window.getComputedStyle(rail).backgroundImage : null,
69
+ wrapperTransition: wrapper ? wrapper.style.transition : null,
70
+ };
71
+ });
72
+ await browser.close();
73
+
74
+ const has = (s, prop) => new RegExp(`${prop}\\s+(?:200ms|0\\.2s)`).test(s || '');
75
+
76
+ const results = {
77
+ rail_present: probe.railTransition !== null,
78
+ rail_transition_has_bg_image_200: has(probe.railTransition, 'background-image'),
79
+ rail_has_non_empty_gradient: probe.railBackgroundImage != null
80
+ && probe.railBackgroundImage !== 'none'
81
+ && probe.railBackgroundImage.includes('linear-gradient'),
82
+ r263_wrapper_has_box_shadow_200: has(probe.wrapperTransition, 'box-shadow'),
83
+ };
84
+ const ok = Object.values(results).every(Boolean);
85
+ console.log(`${ok ? '✅' : '❌'} top-rail theme ease:`, JSON.stringify(results),
86
+ '\n rail transition: ', probe.railTransition,
87
+ '\n rail backgroundImage: ', probe.railBackgroundImage,
88
+ '\n wrapper transition: ', probe.wrapperTransition);
89
+ process.exit(ok ? 0 : 1);