@sleep2agi/agent-network-dashboard 0.5.3-preview.254 → 0.5.3-preview.256

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +5 -5
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +2 -2
  14. package/.next/server/app/_not-found.rsc +2 -2
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/admin.html +2 -2
  23. package/.next/server/app/admin.rsc +2 -2
  24. package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
  25. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  27. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  29. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  30. package/.next/server/app/index.html +2 -2
  31. package/.next/server/app/index.rsc +3 -3
  32. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  33. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  34. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  35. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  36. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  37. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/login.html +2 -2
  39. package/.next/server/app/login.rsc +3 -3
  40. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  41. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  45. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  46. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/logs.html +2 -2
  48. package/.next/server/app/logs.rsc +2 -2
  49. package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
  50. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  52. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  53. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  54. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  55. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/messages.html +2 -2
  57. package/.next/server/app/messages.rsc +2 -2
  58. package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
  59. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  60. package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
  61. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  62. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  63. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  64. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/node.html +2 -2
  66. package/.next/server/app/node.rsc +2 -2
  67. package/.next/server/app/node.segments/_full.segment.rsc +2 -2
  68. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  69. package/.next/server/app/node.segments/_index.segment.rsc +2 -2
  70. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  71. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  72. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  73. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/nodes.html +2 -2
  75. package/.next/server/app/nodes.rsc +2 -2
  76. package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
  77. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  78. package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
  79. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  80. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  81. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  82. package/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/server-logs.html +2 -2
  85. package/.next/server/app/server-logs.rsc +2 -2
  86. package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
  87. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  88. package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
  89. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  90. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  91. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  93. package/.next/server/app/settings/networks.html +2 -2
  94. package/.next/server/app/settings/networks.rsc +2 -2
  95. package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
  96. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  97. package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
  98. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  99. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  100. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  101. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  102. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/settings/tokens.html +2 -2
  105. package/.next/server/app/settings/tokens.rsc +2 -2
  106. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
  109. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  110. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  111. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  112. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  113. package/.next/server/app/settings.html +2 -2
  114. package/.next/server/app/settings.rsc +3 -3
  115. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  116. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  117. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  118. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  119. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  120. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  121. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/tasks.html +2 -2
  124. package/.next/server/app/tasks.rsc +2 -2
  125. package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
  126. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  127. package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
  128. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  129. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  130. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  131. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  132. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  133. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
  134. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  135. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  136. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  137. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  138. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  139. package/.next/server/middleware-build-manifest.js +3 -3
  140. package/.next/server/pages/404.html +2 -2
  141. package/.next/server/pages/500.html +1 -1
  142. package/.next/static/chunks/{0kxp3b9ooqo9w.css → 0-7ma47rnbr6l.css} +1 -1
  143. package/.next/static/chunks/{0-t50keogxsg1.js → 0lz0d3xp-akmx.js} +1 -1
  144. package/.next/static/chunks/{0~4k1nbapvia1.js → 0mbz6_9.awtny.js} +3 -3
  145. package/.next/static/chunks/{11hzac0zl0f91.js → 0xu6mniq9hov9.js} +1 -1
  146. package/.next/static/chunks/{0u.ob15vjha6u.js → 0ypxu9tjas5ii.js} +1 -1
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +53 -1
  150. package/app/globals.css +31 -0
  151. package/package.json +1 -1
  152. package/scripts/topo-animation-temporal-modes-catalog-test.mjs +145 -0
  153. package/scripts/topo-title-block-entrance-animation-test.mjs +127 -0
  154. /package/.next/static/{0ShBgwMviORwHuIMhcMPr → iXL-5CIRUR5NRzD1e0XT-}/_buildManifest.js +0 -0
  155. /package/.next/static/{0ShBgwMviORwHuIMhcMPr → iXL-5CIRUR5NRzD1e0XT-}/_clientMiddlewareManifest.js +0 -0
  156. /package/.next/static/{0ShBgwMviORwHuIMhcMPr → iXL-5CIRUR5NRzD1e0XT-}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,59276,e=>{"use strict";var s=e.i(12629),a=e.i(11449);let t=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",t,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/health",t,r);return{health:e||null,error:a}},"useLicense",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/license",t,{refreshInterval:6e4});return{license:e?.ok?e:null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),t,r);return{messages:i?.messages||[],error:c,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:c}=(0,s.default)(n("/api/hub/status",e),t,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:c}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),t,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:c,error:d,isLoading:o}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),t,r);return{tasks:c?.tasks||[],count:c?.count??0,source:c?.source,error:d,isLoading:o}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.253"],70286)},65610,e=>{"use strict";var s=e.i(22381),a=e.i(23910),t=e.i(56839),r=e.i(59276),n=e.i(70286);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:l}=(0,r.useHealth)(),{license:i}=(0,r.useLicense)(),[c,d]=(0,a.useState)(""),[o,x]=(0,a.useState)(""),[m,h]=(0,a.useState)(""),[g,u]=(0,a.useState)(""),[p,N]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",j="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${j}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${j}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${l?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:l?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsxs)("span",{className:"text-gray-500",children:["SSE streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.uptime?`${Math.floor(l.uptime/3600)}h ${Math.floor(l.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 font-mono ${j}`,title:"From package.json @sleep2agi/agent-network-dashboard",children:n.DASHBOARD_VERSION})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",i?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===i.license.type?"text-green-300 bg-green-500/10 border-green-500/30":i.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),i.license.type,i.license.days_left?` \xb7 ${i.license.days_left}d left`:""]})]}),i?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[i.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[i.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.license.expires_at})]}),i.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!c.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})}),s=await e.json();x(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&d(""),setTimeout(()=>x(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),o&&(0,s.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!m||!g)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void N("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:m,new_password:g})}),t=await a.json();if(N(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}h(""),u("")}setTimeout(()=>N(""),5e3)},disabled:!m||!g,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),p&&(0,s.jsx)("div",{className:`mt-2 text-xs ${p.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:p})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,59276,e=>{"use strict";var s=e.i(12629),a=e.i(11449);let t=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",t,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/health",t,r);return{health:e||null,error:a}},"useLicense",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/license",t,{refreshInterval:6e4});return{license:e?.ok?e:null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),t,r);return{messages:i?.messages||[],error:c,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:c}=(0,s.default)(n("/api/hub/status",e),t,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:c}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),t,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:c,error:d,isLoading:o}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),t,r);return{tasks:c?.tasks||[],count:c?.count??0,source:c?.source,error:d,isLoading:o}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.255"],70286)},65610,e=>{"use strict";var s=e.i(22381),a=e.i(23910),t=e.i(56839),r=e.i(59276),n=e.i(70286);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:l}=(0,r.useHealth)(),{license:i}=(0,r.useLicense)(),[c,d]=(0,a.useState)(""),[o,x]=(0,a.useState)(""),[m,h]=(0,a.useState)(""),[g,u]=(0,a.useState)(""),[p,N]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",j="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${j}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${j}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${l?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:l?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsxs)("span",{className:"text-gray-500",children:["SSE streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.uptime?`${Math.floor(l.uptime/3600)}h ${Math.floor(l.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 font-mono ${j}`,title:"From package.json @sleep2agi/agent-network-dashboard",children:n.DASHBOARD_VERSION})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",i?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===i.license.type?"text-green-300 bg-green-500/10 border-green-500/30":i.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),i.license.type,i.license.days_left?` \xb7 ${i.license.days_left}d left`:""]})]}),i?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[i.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[i.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.license.expires_at})]}),i.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!c.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})}),s=await e.json();x(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&d(""),setTimeout(()=>x(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),o&&(0,s.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!m||!g)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void N("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:m,new_password:g})}),t=await a.json();if(N(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}h(""),u("")}setTimeout(()=>N(""),5e3)},disabled:!m||!g,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),p&&(0,s.jsx)("div",{className:`mt-2 text-xs ${p.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:p})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.253"],70286)},48941,e=>{"use strict";var t=e.i(22381),r=e.i(23910),a=e.i(70286);e.s(["default",0,function(){let[e,s]=(0,r.useState)("login"),[n,o]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(!1),[x,g]=(0,r.useState)(""),[h,m]=(0,r.useState)(!1),u=async t=>{t.preventDefault(),m(!0),g("");try{let t=await fetch("/api/auth/v3",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,username:n,password:i})}),r=await t.json();if(r.ok){r.token&&sessionStorage.setItem("anet_v3_auth",JSON.stringify({user:r.user,token:r.token,networks:r.networks||[],currentNetwork:r.network_id||r.networks?.[0]?.network_id||""})),window.location.assign("/");return}g(r.error||"Login failed")}catch{g("Connection failed")}m(!1)};return(0,t.jsxs)("main",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 font-mono flex items-center justify-center relative overflow-hidden px-4 py-10 sm:py-16",children:[(0,t.jsx)("div",{className:"absolute inset-0 pointer-events-none anet-login-bg","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-sm",children:[(0,t.jsxs)("div",{className:"text-center mb-7",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-4 rounded-2xl bg-[#111128] border border-[#2a2a4a] anet-login-mark",children:(0,t.jsxs)("svg",{className:"w-9 h-9",viewBox:"0 0 32 32","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.25",className:"text-cyan-400 anet-login-mark-ring"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"3",fill:"currentColor",className:"text-cyan-400 anet-login-mark-node-a"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"3",fill:"currentColor",className:"text-green-400 anet-login-mark-node-b"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"3",fill:"currentColor",className:"text-violet-400 anet-login-mark-node-c"})]})}),(0,t.jsx)("h1",{className:"text-[22px] sm:text-2xl font-semibold text-white tracking-tight",children:"Agent Network"}),(0,t.jsx)("p",{className:"text-[13px] text-gray-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Free preview · no credit card"})]})})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 mb-4",children:["login","register"].map(r=>(0,t.jsx)("button",{type:"button",onClick:()=>{s(r),g("")},className:`flex-1 rounded-md px-3 py-2 text-sm transition-colors ${e===r?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"login"===r?"Sign in":"Register"},r))}),(0,t.jsxs)("form",{onSubmit:u,className:"border border-[#2a2a4a] bg-[#111128]/80 backdrop-blur-sm rounded-xl p-6 shadow-2xl shadow-black/30",children:[(0,t.jsx)("label",{htmlFor:"username",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Username"}),(0,t.jsx)("input",{id:"username",type:"text",value:n,onChange:e=>o(e.target.value),autoFocus:!0,placeholder:"Enter username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all mb-4"}),(0,t.jsx)("label",{htmlFor:"password",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{id:"password",type:c?"text":"password",value:i,onChange:e=>l(e.target.value),placeholder:"Enter password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-4 pr-11 py-3 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all"}),(0,t.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":c?"Hide password":"Show password",className:"absolute inset-y-0 right-0 flex items-center px-3 text-gray-600 hover:text-gray-300 transition-colors",children:c?(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),(0,t.jsx)("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]}),x&&(0,t.jsx)("div",{className:"mt-3 text-sm text-red-300 bg-red-500/5 border border-red-500/10 rounded-lg px-3 py-2",children:x}),(0,t.jsxs)("button",{type:"submit",disabled:h||!i||!n.trim(),className:"mt-5 w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-lg transition-all shadow-lg shadow-cyan-500/10 hover:shadow-cyan-500/20 disabled:shadow-none",children:[h&&(0,t.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,t.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,t.jsx)("span",{children:h?"login"===e?"Signing in…":"Registering…":"login"===e?"Sign in":"Create account"})]})]}),(0,t.jsxs)("p",{className:"text-center text-[11px] text-gray-700 mt-6",children:["Sleep2AGI · Apache-2.0 · ",(0,t.jsx)("a",{href:"https://anet.sh",className:"hover:text-gray-500 transition-colors",children:"anet.sh"}),(0,t.jsx)("span",{className:"mx-1 text-gray-800",children:"·"}),(0,t.jsxs)("span",{className:"font-mono",title:"@sleep2agi/agent-network-dashboard",children:["v",a.DASHBOARD_VERSION]})]})]})]})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.255"],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":351,"timestamp":417279326809,"id":4,"parentId":1,"tags":{},"startTime":1779225251573,"traceId":"8c20b6a221d98ca3"},{"name":"load-custom-routes","duration":495,"timestamp":417279327309,"id":5,"parentId":1,"tags":{},"startTime":1779225251574,"traceId":"8c20b6a221d98ca3"},{"name":"create-dist-dir","duration":721,"timestamp":417279327850,"id":6,"parentId":1,"tags":{},"startTime":1779225251574,"traceId":"8c20b6a221d98ca3"},{"name":"clean","duration":30412,"timestamp":417279329301,"id":7,"parentId":1,"tags":{},"startTime":1779225251576,"traceId":"8c20b6a221d98ca3"},{"name":"discover-routes","duration":8997,"timestamp":417279441307,"id":8,"parentId":1,"tags":{},"startTime":1779225251688,"traceId":"8c20b6a221d98ca3"},{"name":"create-root-mapping","duration":117,"timestamp":417279450381,"id":9,"parentId":1,"tags":{},"startTime":1779225251697,"traceId":"8c20b6a221d98ca3"},{"name":"generate-route-types","duration":24366,"timestamp":417279452968,"id":10,"parentId":1,"tags":{},"startTime":1779225251699,"traceId":"8c20b6a221d98ca3"},{"name":"public-dir-conflict-check","duration":132,"timestamp":417279477451,"id":11,"parentId":1,"tags":{},"startTime":1779225251724,"traceId":"8c20b6a221d98ca3"},{"name":"generate-routes-manifest","duration":5146,"timestamp":417279477750,"id":12,"parentId":1,"tags":{},"startTime":1779225251724,"traceId":"8c20b6a221d98ca3"},{"name":"run-turbopack","duration":6458281,"timestamp":417279502286,"id":14,"parentId":1,"tags":{},"startTime":1779225251749,"traceId":"8c20b6a221d98ca3"},{"name":"turbopack-build-events","duration":101,"timestamp":417279803566,"id":15,"parentId":1,"tags":{},"startTime":1779225252050,"traceId":"8c20b6a221d98ca3"},{"name":"run-typescript","duration":10663603,"timestamp":417285983210,"id":16,"parentId":1,"tags":{},"startTime":1779225258229,"traceId":"8c20b6a221d98ca3"},{"name":"generate-required-server-files","duration":7119,"timestamp":417296648432,"id":18,"parentId":1,"tags":{},"startTime":1779225268895,"traceId":"8c20b6a221d98ca3"},{"name":"check-static-error-page","duration":13560,"timestamp":417296885922,"id":20,"parentId":19,"tags":{},"startTime":1779225269132,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":508068,"timestamp":417296904560,"id":65,"parentId":22,"tags":{},"startTime":1779225269151,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":524384,"timestamp":417296888429,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779225269135,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":616142,"timestamp":417296904820,"id":67,"parentId":26,"tags":{},"startTime":1779225269151,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":630221,"timestamp":417296890872,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779225269137,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":627696,"timestamp":417296905789,"id":71,"parentId":30,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":642140,"timestamp":417296891432,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779225269138,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":630885,"timestamp":417296905631,"id":70,"parentId":29,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":645330,"timestamp":417296891261,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779225269138,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":646068,"timestamp":417296906047,"id":73,"parentId":33,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":660281,"timestamp":417296891968,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779225269138,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":646333,"timestamp":417296906133,"id":74,"parentId":34,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":663038,"timestamp":417296892115,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779225269138,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":652488,"timestamp":417296906158,"id":75,"parentId":35,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":666440,"timestamp":417296892264,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779225269139,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":657904,"timestamp":417296906204,"id":77,"parentId":37,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":671204,"timestamp":417296892964,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779225269139,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":662732,"timestamp":417296905852,"id":72,"parentId":32,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":676800,"timestamp":417296891834,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779225269138,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":664728,"timestamp":417296906219,"id":78,"parentId":38,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":678980,"timestamp":417296893129,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779225269139,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":672350,"timestamp":417296904108,"id":64,"parentId":21,"tags":{},"startTime":1779225269150,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":689194,"timestamp":417296887305,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779225269134,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":673389,"timestamp":417296906242,"id":80,"parentId":40,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":686343,"timestamp":417296893336,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779225269140,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":682234,"timestamp":417296906177,"id":76,"parentId":36,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":695700,"timestamp":417296892773,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779225269139,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":683975,"timestamp":417296905226,"id":68,"parentId":27,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":698261,"timestamp":417296890988,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779225269137,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":688356,"timestamp":417296906293,"id":84,"parentId":46,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":700368,"timestamp":417296894334,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779225269141,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":689570,"timestamp":417296906266,"id":82,"parentId":44,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":701773,"timestamp":417296894109,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779225269140,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":692706,"timestamp":417296906278,"id":83,"parentId":45,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":704836,"timestamp":417296894230,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779225269141,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":695070,"timestamp":417296906315,"id":86,"parentId":48,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":705327,"timestamp":417296896102,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779225269142,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":699206,"timestamp":417296906355,"id":88,"parentId":50,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":709250,"timestamp":417296896350,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779225269143,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":701807,"timestamp":417296906340,"id":87,"parentId":49,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":711949,"timestamp":417296896242,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779225269143,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":708328,"timestamp":417296906228,"id":79,"parentId":39,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":721381,"timestamp":417296893227,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779225269139,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":710036,"timestamp":417296909762,"id":90,"parentId":24,"tags":{},"startTime":1779225269156,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":731038,"timestamp":417296888811,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779225269135,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":716706,"timestamp":417296906365,"id":89,"parentId":51,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":726699,"timestamp":417296896427,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779225269143,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":713012,"timestamp":417296913605,"id":93,"parentId":43,"tags":{},"startTime":1779225269160,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":732848,"timestamp":417296893819,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779225269140,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":727331,"timestamp":417296910941,"id":91,"parentId":31,"tags":{},"startTime":1779225269157,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":746805,"timestamp":417296891559,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779225269138,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":732233,"timestamp":417296906306,"id":85,"parentId":47,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":742674,"timestamp":417296895909,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779225269142,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":726906,"timestamp":417296911846,"id":92,"parentId":41,"tags":{},"startTime":1779225269158,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":745369,"timestamp":417296893434,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779225269140,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":741267,"timestamp":417296906256,"id":81,"parentId":42,"tags":{},"startTime":1779225269153,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":753892,"timestamp":417296893687,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779225269140,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":753047,"timestamp":417296904710,"id":66,"parentId":25,"tags":{},"startTime":1779225269151,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":767135,"timestamp":417296890702,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779225269137,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":733756,"timestamp":417296925034,"id":98,"parentId":55,"tags":{},"startTime":1779225269171,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":761588,"timestamp":417296897257,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779225269144,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":756564,"timestamp":417296925058,"id":100,"parentId":58,"tags":{},"startTime":1779225269171,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":783533,"timestamp":417296898165,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779225269144,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":763777,"timestamp":417296924940,"id":94,"parentId":23,"tags":{},"startTime":1779225269171,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":800154,"timestamp":417296888634,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779225269135,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":764943,"timestamp":417296925184,"id":101,"parentId":59,"tags":{},"startTime":1779225269171,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":791845,"timestamp":417296898362,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779225269145,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":772712,"timestamp":417296925201,"id":102,"parentId":61,"tags":{},"startTime":1779225269171,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":799056,"timestamp":417296898921,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779225269145,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":774755,"timestamp":417296925215,"id":103,"parentId":62,"tags":{},"startTime":1779225269171,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":800967,"timestamp":417296899073,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779225269145,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":778982,"timestamp":417296925229,"id":104,"parentId":63,"tags":{},"startTime":1779225269172,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":805056,"timestamp":417296899217,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779225269145,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":782397,"timestamp":417296925245,"id":105,"parentId":60,"tags":{},"startTime":1779225269172,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":809164,"timestamp":417296898522,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779225269145,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":778726,"timestamp":417296938462,"id":106,"parentId":57,"tags":{},"startTime":1779225269185,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":819784,"timestamp":417296897654,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779225269144,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":815254,"timestamp":417296905361,"id":69,"parentId":28,"tags":{},"startTime":1779225269152,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":829530,"timestamp":417296891137,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779225269137,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":795986,"timestamp":417296924988,"id":96,"parentId":53,"tags":{},"startTime":1779225269171,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":824143,"timestamp":417296896915,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779225269143,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":805220,"timestamp":417296924972,"id":95,"parentId":52,"tags":{},"startTime":1779225269171,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":833487,"timestamp":417296896773,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779225269143,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":814437,"timestamp":417296925019,"id":97,"parentId":54,"tags":{},"startTime":1779225269171,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":842448,"timestamp":417296897077,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779225269143,"traceId":"8c20b6a221d98ca3"},{"name":"is-page-static","duration":823331,"timestamp":417296925044,"id":99,"parentId":56,"tags":{},"startTime":1779225269171,"traceId":"8c20b6a221d98ca3"},{"name":"check-page","duration":850978,"timestamp":417296897450,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779225269144,"traceId":"8c20b6a221d98ca3"},{"name":"static-check","duration":863350,"timestamp":417296885114,"id":19,"parentId":1,"tags":{},"startTime":1779225269131,"traceId":"8c20b6a221d98ca3"}]
2
- [{"name":"write-routes-manifest","duration":586,"timestamp":417297758359,"id":108,"parentId":1,"tags":{},"startTime":1779225270005,"traceId":"8c20b6a221d98ca3"},{"name":"load-dotenv","duration":56,"timestamp":417297769238,"id":111,"parentId":110,"tags":{},"startTime":1779225270016,"traceId":"8c20b6a221d98ca3"},{"name":"run-export-path-map","duration":581,"timestamp":417297772390,"id":112,"parentId":110,"tags":{},"startTime":1779225270019,"traceId":"8c20b6a221d98ca3"},{"name":"next-export","duration":642969,"timestamp":417297768029,"id":110,"parentId":1,"tags":{},"startTime":1779225270014,"traceId":"8c20b6a221d98ca3"},{"name":"move-exported-app-not-found-","duration":579,"timestamp":417298416050,"id":113,"parentId":109,"tags":{},"startTime":1779225270662,"traceId":"8c20b6a221d98ca3"},{"name":"move-exported-app-global-error-","duration":713,"timestamp":417298416717,"id":114,"parentId":109,"tags":{},"startTime":1779225270663,"traceId":"8c20b6a221d98ca3"},{"name":"static-generation","duration":656987,"timestamp":417297762576,"id":109,"parentId":1,"tags":{},"startTime":1779225270009,"traceId":"8c20b6a221d98ca3"},{"name":"write-routes-manifest","duration":400,"timestamp":417298419793,"id":115,"parentId":1,"tags":{},"startTime":1779225270666,"traceId":"8c20b6a221d98ca3"},{"name":"print-tree-view","duration":4722,"timestamp":417298429579,"id":116,"parentId":1,"tags":{},"startTime":1779225270676,"traceId":"8c20b6a221d98ca3"},{"name":"write-route-bundle-stats","duration":15946,"timestamp":417298434344,"id":117,"parentId":1,"tags":{},"startTime":1779225270681,"traceId":"8c20b6a221d98ca3"},{"name":"telemetry-flush","duration":24033,"timestamp":417298450328,"id":118,"parentId":1,"tags":{},"startTime":1779225270697,"traceId":"8c20b6a221d98ca3"},{"name":"next-build","duration":19196531,"timestamp":417279277864,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779225251524,"traceId":"8c20b6a221d98ca3"}]
1
+ [{"name":"generate-buildid","duration":266,"timestamp":418083711657,"id":4,"parentId":1,"tags":{},"startTime":1779226055958,"traceId":"81a58f90c730f8ed"},{"name":"load-custom-routes","duration":676,"timestamp":418083712155,"id":5,"parentId":1,"tags":{},"startTime":1779226055958,"traceId":"81a58f90c730f8ed"},{"name":"create-dist-dir","duration":925,"timestamp":418083712881,"id":6,"parentId":1,"tags":{},"startTime":1779226055959,"traceId":"81a58f90c730f8ed"},{"name":"clean","duration":37290,"timestamp":418083714700,"id":7,"parentId":1,"tags":{},"startTime":1779226055961,"traceId":"81a58f90c730f8ed"},{"name":"discover-routes","duration":23540,"timestamp":418083836376,"id":8,"parentId":1,"tags":{},"startTime":1779226056083,"traceId":"81a58f90c730f8ed"},{"name":"create-root-mapping","duration":151,"timestamp":418083859981,"id":9,"parentId":1,"tags":{},"startTime":1779226056106,"traceId":"81a58f90c730f8ed"},{"name":"generate-route-types","duration":25881,"timestamp":418083862886,"id":10,"parentId":1,"tags":{},"startTime":1779226056109,"traceId":"81a58f90c730f8ed"},{"name":"public-dir-conflict-check","duration":97,"timestamp":418083888855,"id":11,"parentId":1,"tags":{},"startTime":1779226056135,"traceId":"81a58f90c730f8ed"},{"name":"generate-routes-manifest","duration":5230,"timestamp":418083889114,"id":12,"parentId":1,"tags":{},"startTime":1779226056135,"traceId":"81a58f90c730f8ed"},{"name":"run-turbopack","duration":6652953,"timestamp":418083901259,"id":14,"parentId":1,"tags":{},"startTime":1779226056148,"traceId":"81a58f90c730f8ed"},{"name":"turbopack-build-events","duration":106,"timestamp":418084218074,"id":15,"parentId":1,"tags":{},"startTime":1779226056464,"traceId":"81a58f90c730f8ed"},{"name":"run-typescript","duration":10647715,"timestamp":418090563521,"id":16,"parentId":1,"tags":{},"startTime":1779226062810,"traceId":"81a58f90c730f8ed"},{"name":"generate-required-server-files","duration":3110,"timestamp":418101212607,"id":18,"parentId":1,"tags":{},"startTime":1779226073459,"traceId":"81a58f90c730f8ed"},{"name":"check-static-error-page","duration":14188,"timestamp":418101452325,"id":20,"parentId":19,"tags":{},"startTime":1779226073699,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":648589,"timestamp":418101470151,"id":65,"parentId":22,"tags":{},"startTime":1779226073716,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":664235,"timestamp":418101454696,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779226073701,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":686281,"timestamp":418101470941,"id":70,"parentId":29,"tags":{},"startTime":1779226073717,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":699163,"timestamp":418101458172,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779226073704,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":688015,"timestamp":418101470325,"id":66,"parentId":25,"tags":{},"startTime":1779226073717,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":700849,"timestamp":418101457568,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779226073704,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":693174,"timestamp":418101471368,"id":73,"parentId":33,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":705707,"timestamp":418101458904,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779226073705,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":731249,"timestamp":418101471187,"id":72,"parentId":32,"tags":{},"startTime":1779226073717,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":743751,"timestamp":418101458778,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779226073705,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":731311,"timestamp":418101471451,"id":74,"parentId":34,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":743769,"timestamp":418101459041,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779226073705,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":741366,"timestamp":418101471494,"id":76,"parentId":36,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":753448,"timestamp":418101459502,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779226073706,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":752656,"timestamp":418101471475,"id":75,"parentId":35,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":765056,"timestamp":418101459147,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779226073705,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":752931,"timestamp":418101471520,"id":77,"parentId":37,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":764874,"timestamp":418101459619,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779226073706,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":758733,"timestamp":418101471538,"id":78,"parentId":38,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":770630,"timestamp":418101459712,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779226073706,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":760114,"timestamp":418101470442,"id":67,"parentId":26,"tags":{},"startTime":1779226073717,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":772830,"timestamp":418101457764,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779226073704,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":762186,"timestamp":418101471548,"id":79,"parentId":39,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":774009,"timestamp":418101459773,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779226073706,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":766809,"timestamp":418101471584,"id":82,"parentId":44,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":777844,"timestamp":418101460596,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779226073707,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":771609,"timestamp":418101470563,"id":68,"parentId":27,"tags":{},"startTime":1779226073717,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":784332,"timestamp":418101457888,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779226073704,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":775483,"timestamp":418101471597,"id":83,"parentId":45,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":786421,"timestamp":418101460717,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779226073707,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":776412,"timestamp":418101471624,"id":85,"parentId":47,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":787154,"timestamp":418101460929,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779226073707,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":778545,"timestamp":418101471562,"id":80,"parentId":40,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":790185,"timestamp":418101459980,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779226073706,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":785506,"timestamp":418101471633,"id":86,"parentId":48,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":794407,"timestamp":418101462779,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779226073709,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":786323,"timestamp":418101471645,"id":87,"parentId":49,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":794995,"timestamp":418101463033,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779226073709,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":789696,"timestamp":418101470677,"id":69,"parentId":28,"tags":{},"startTime":1779226073717,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":802379,"timestamp":418101458037,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779226073704,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":789338,"timestamp":418101471610,"id":84,"parentId":46,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":800172,"timestamp":418101460818,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779226073707,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":794684,"timestamp":418101469810,"id":64,"parentId":21,"tags":{},"startTime":1779226073716,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":810996,"timestamp":418101453542,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779226073700,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":794608,"timestamp":418101471665,"id":89,"parentId":51,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":803084,"timestamp":418101463250,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779226073710,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":798007,"timestamp":418101471657,"id":88,"parentId":50,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":806547,"timestamp":418101463158,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779226073709,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":801503,"timestamp":418101471575,"id":81,"parentId":42,"tags":{},"startTime":1779226073718,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":812855,"timestamp":418101460283,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779226073707,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":787599,"timestamp":418101485680,"id":91,"parentId":31,"tags":{},"startTime":1779226073732,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":814833,"timestamp":418101458492,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779226073705,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":796687,"timestamp":418101478485,"id":90,"parentId":24,"tags":{},"startTime":1779226073725,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":820007,"timestamp":418101455211,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779226073701,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":780263,"timestamp":418101495090,"id":93,"parentId":43,"tags":{},"startTime":1779226073741,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":815001,"timestamp":418101460384,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779226073707,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":818213,"timestamp":418101471119,"id":71,"parentId":30,"tags":{},"startTime":1779226073717,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":831064,"timestamp":418101458353,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779226073705,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":844571,"timestamp":418101497684,"id":98,"parentId":55,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":878140,"timestamp":418101464211,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779226073710,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":853018,"timestamp":418101497708,"id":100,"parentId":58,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":885577,"timestamp":418101465221,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779226073711,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":860397,"timestamp":418101497696,"id":99,"parentId":56,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":893738,"timestamp":418101464432,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779226073711,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":861128,"timestamp":418101497817,"id":101,"parentId":59,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":893596,"timestamp":418101465440,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779226073712,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":870187,"timestamp":418101497837,"id":102,"parentId":61,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":905962,"timestamp":418101466116,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779226073712,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":876293,"timestamp":418101497849,"id":103,"parentId":62,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":910180,"timestamp":418101466230,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779226073713,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":878962,"timestamp":418101497663,"id":96,"parentId":53,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":912859,"timestamp":418101463811,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779226073710,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":878900,"timestamp":418101497857,"id":104,"parentId":63,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":910442,"timestamp":418101466341,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779226073713,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":893786,"timestamp":418101486683,"id":92,"parentId":41,"tags":{},"startTime":1779226073733,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":920435,"timestamp":418101460084,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779226073706,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":854755,"timestamp":418101527759,"id":105,"parentId":57,"tags":{},"startTime":1779226073774,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":917898,"timestamp":418101464663,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779226073711,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":846271,"timestamp":418101538388,"id":106,"parentId":60,"tags":{},"startTime":1779226073785,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":919061,"timestamp":418101465645,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779226073712,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":888241,"timestamp":418101497608,"id":94,"parentId":23,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":930988,"timestamp":418101454905,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779226073701,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":891101,"timestamp":418101497671,"id":97,"parentId":54,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":924829,"timestamp":418101463988,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779226073710,"traceId":"81a58f90c730f8ed"},{"name":"is-page-static","duration":899950,"timestamp":418101497649,"id":95,"parentId":52,"tags":{},"startTime":1779226073744,"traceId":"81a58f90c730f8ed"},{"name":"check-page","duration":934020,"timestamp":418101463641,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779226073710,"traceId":"81a58f90c730f8ed"},{"name":"static-check","duration":946599,"timestamp":418101451105,"id":19,"parentId":1,"tags":{},"startTime":1779226073697,"traceId":"81a58f90c730f8ed"}]
2
+ [{"name":"write-routes-manifest","duration":853,"timestamp":418102411886,"id":108,"parentId":1,"tags":{},"startTime":1779226074658,"traceId":"81a58f90c730f8ed"},{"name":"load-dotenv","duration":58,"timestamp":418102427373,"id":111,"parentId":110,"tags":{},"startTime":1779226074674,"traceId":"81a58f90c730f8ed"},{"name":"run-export-path-map","duration":569,"timestamp":418102430391,"id":112,"parentId":110,"tags":{},"startTime":1779226074677,"traceId":"81a58f90c730f8ed"},{"name":"next-export","duration":707782,"timestamp":418102426062,"id":110,"parentId":1,"tags":{},"startTime":1779226074672,"traceId":"81a58f90c730f8ed"},{"name":"move-exported-app-not-found-","duration":889,"timestamp":418103137532,"id":113,"parentId":109,"tags":{},"startTime":1779226075384,"traceId":"81a58f90c730f8ed"},{"name":"move-exported-app-global-error-","duration":570,"timestamp":418103138568,"id":114,"parentId":109,"tags":{},"startTime":1779226075385,"traceId":"81a58f90c730f8ed"},{"name":"static-generation","duration":723405,"timestamp":418102418037,"id":109,"parentId":1,"tags":{},"startTime":1779226074664,"traceId":"81a58f90c730f8ed"},{"name":"write-routes-manifest","duration":660,"timestamp":418103141753,"id":115,"parentId":1,"tags":{},"startTime":1779226075388,"traceId":"81a58f90c730f8ed"},{"name":"print-tree-view","duration":5284,"timestamp":418103154849,"id":116,"parentId":1,"tags":{},"startTime":1779226075401,"traceId":"81a58f90c730f8ed"},{"name":"write-route-bundle-stats","duration":16679,"timestamp":418103160182,"id":117,"parentId":1,"tags":{},"startTime":1779226075406,"traceId":"81a58f90c730f8ed"},{"name":"telemetry-flush","duration":20477,"timestamp":418103176911,"id":118,"parentId":1,"tags":{},"startTime":1779226075423,"traceId":"81a58f90c730f8ed"},{"name":"next-build","duration":19537658,"timestamp":418083659786,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779226055906,"traceId":"81a58f90c730f8ed"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6458281,"timestamp":417279502286,"id":14,"parentId":1,"tags":{},"startTime":1779225251749,"traceId":"8c20b6a221d98ca3"},{"name":"turbopack-build-events","duration":101,"timestamp":417279803566,"id":15,"parentId":1,"tags":{},"startTime":1779225252050,"traceId":"8c20b6a221d98ca3"},{"name":"run-typescript","duration":10663603,"timestamp":417285983210,"id":16,"parentId":1,"tags":{},"startTime":1779225258229,"traceId":"8c20b6a221d98ca3"},{"name":"static-check","duration":863350,"timestamp":417296885114,"id":19,"parentId":1,"tags":{},"startTime":1779225269131,"traceId":"8c20b6a221d98ca3"},{"name":"static-generation","duration":656987,"timestamp":417297762576,"id":109,"parentId":1,"tags":{},"startTime":1779225270009,"traceId":"8c20b6a221d98ca3"},{"name":"telemetry-flush","duration":24033,"timestamp":417298450328,"id":118,"parentId":1,"tags":{},"startTime":1779225270697,"traceId":"8c20b6a221d98ca3"},{"name":"next-build","duration":19196531,"timestamp":417279277864,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779225251524,"traceId":"8c20b6a221d98ca3"}]
1
+ [{"name":"run-turbopack","duration":6652953,"timestamp":418083901259,"id":14,"parentId":1,"tags":{},"startTime":1779226056148,"traceId":"81a58f90c730f8ed"},{"name":"turbopack-build-events","duration":106,"timestamp":418084218074,"id":15,"parentId":1,"tags":{},"startTime":1779226056464,"traceId":"81a58f90c730f8ed"},{"name":"run-typescript","duration":10647715,"timestamp":418090563521,"id":16,"parentId":1,"tags":{},"startTime":1779226062810,"traceId":"81a58f90c730f8ed"},{"name":"static-check","duration":946599,"timestamp":418101451105,"id":19,"parentId":1,"tags":{},"startTime":1779226073697,"traceId":"81a58f90c730f8ed"},{"name":"static-generation","duration":723405,"timestamp":418102418037,"id":109,"parentId":1,"tags":{},"startTime":1779226074664,"traceId":"81a58f90c730f8ed"},{"name":"telemetry-flush","duration":20477,"timestamp":418103176911,"id":118,"parentId":1,"tags":{},"startTime":1779226075423,"traceId":"81a58f90c730f8ed"},{"name":"next-build","duration":19537658,"timestamp":418083659786,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779226055906,"traceId":"81a58f90c730f8ed"}]
@@ -1810,7 +1810,18 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
1810
1810
 
1811
1811
  data-topo-section-titleblock-envelope-breath attr surfaces
1812
1812
  the cadence for tests. */}
1813
- <div className="anet-topo-title-block-envelope-breath group flex items-center gap-2.5" data-topo-section-titleblock-group data-topo-section-titleblock-envelope-breath="11s">
1813
+ {/* Round 742 / Loop — title-block joins entrance family as 2nd
1814
+ one-shot-mount member. Staggered after R740 canvas entrance:
1815
+ canvas plays 0-600ms; title-block delayed 200ms then plays
1816
+ 200-700ms for 500ms ease-out. The 100ms gap between canvas
1817
+ settle (600ms) and title-block settle (700ms) creates a
1818
+ perceived "shake out" — canvas arrives, then the heading
1819
+ writes itself into place. Slide from translateY(-4px) +
1820
+ opacity 0.7 → translateY(0) opacity 1.
1821
+
1822
+ Gated by reducedMotion at JSX level (sibling pattern to R740).
1823
+ See globals.css R742 block for cadence rationale. */}
1824
+ <div className={`anet-topo-title-block-envelope-breath${reducedMotion ? '' : ' anet-topo-title-block-entrance'} group flex items-center gap-2.5`} data-topo-section-titleblock-group data-topo-section-titleblock-envelope-breath="11s" data-topo-section-titleblock-entrance={reducedMotion ? 'false' : 'true'}>
1814
1825
  {/* Round 297 / Loop: brand-logo color picks up the 200ms ease-
1815
1826
  out transition. Pre-R297 the moon glyph had theme-
1816
1827
  conditional color (cyber #67e8f9 cyan ↔ light #0d9488
@@ -5254,6 +5265,47 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5254
5265
  /* R739 — diagonal scan beam, completes ambient trio. */
5255
5266
  { surface: "canvas scan beam diagonal", selector: "[data-topo-canvas-scan-beam-diagonal]", accessible_name: "canvas scan beam diagonal · ambient sweep · 19s cycle" },
5256
5267
  ])}
5268
+ /* Round 741 / Loop — 8TH orthogonal meta-doc catalog:
5269
+ animation temporal modes. The introspection layer goes
5270
+ from heptagon → OCTAGON. Distinct from prior 7 catalogs
5271
+ (rolodex / dual-axis / patterns / tiers / triple-axis /
5272
+ stats / a11y-titles): R741 documents WHEN animations run
5273
+ (lifecycle / temporal mode) rather than HOW (axes /
5274
+ cadences / shapes). Orthogonal to all prior dimensions.
5275
+
5276
+ Three temporal modes established by R735–R740:
5277
+
5278
+ infinite-rest breath family (R699+)
5279
+ - rest-axis animation, runs forever
5280
+ - members: opacity/scale/text-shadow
5281
+ pulses on kicker, watermark, H2,
5282
+ recent/legend titles, zoom-level,
5283
+ chrome wrappers, etc.
5284
+
5285
+ infinite-sweep ambient family (R735+)
5286
+ - sweep-axis animation, runs forever
5287
+ - members: scan beams (horizontal /
5288
+ vertical / diagonal)
5289
+
5290
+ one-shot-mount entrance family (R740)
5291
+ - mount-axis animation, plays once
5292
+ on first paint
5293
+ - members: canvas root (scale 0.99→1
5294
+ + opacity 0.8→1 over 600 ms)
5295
+
5296
+ Each entry has {mode, family, members, examples}. The
5297
+ members count is a snapshot at R741 time; future rounds
5298
+ update as new surfaces join. examples is a small sample
5299
+ (≤3 per mode) — not the full list (that's in the per-
5300
+ family catalogs already). */
5301
+ data-topo-animation-temporal-modes={JSON.stringify([
5302
+ { mode: "infinite-rest", family: "breath", members: 18, examples: ["kicker", "watermark text", "H2 section title"] },
5303
+ { mode: "infinite-sweep", family: "ambient", members: 3, examples: ["scan beam horizontal", "scan beam vertical", "scan beam diagonal"] },
5304
+ /* R742 — entrance family +1 member: title-block joins
5305
+ canvas root as 2nd one-shot-mount surface. Staggered
5306
+ choreography: canvas 0-600ms, title-block 200-700ms. */
5307
+ { mode: "one-shot-mount", family: "entrance", members: 2, examples: ["canvas root", "title-block"] },
5308
+ ])}
5257
5309
  data-topo-pinned-aspect={(() => {
5258
5310
  const aspects: string[] = [];
5259
5311
  if (pinnedStatus) aspects.push('status');
package/app/globals.css CHANGED
@@ -1717,6 +1717,37 @@ body {
1717
1717
  .anet-topo-title-block-envelope-breath { animation: none; }
1718
1718
  }
1719
1719
 
1720
+ /* Round 742 — title-block entrance, 2nd member of the entrance family.
1721
+ Staggered choreography with R740 canvas entrance:
1722
+ R740 canvas 0 → 600 ms (scale 0.99 → 1, opacity 0.8 → 1)
1723
+ R742 title-block 200 → 700 ms (translateY -4px → 0, opacity 0.7 → 1)
1724
+ The 100ms gap (600 → 700 ms) between canvas settle and title-block
1725
+ settle creates a perceived "shake out" — canvas arrives, then the
1726
+ heading writes itself into place. Both done by ~700 ms.
1727
+
1728
+ CSS cascade detail: when an element has BOTH .anet-topo-title-block-
1729
+ envelope-breath (R706, infinite 11s breath) AND .anet-topo-title-
1730
+ block-entrance (R742, one-shot 500ms), the `animation` property
1731
+ doesn't merge — only one wins. So R742 declares a COMPOUND animation
1732
+ listing BOTH (entrance first as one-shot, breath second as the
1733
+ ongoing infinite). Placed AFTER the R706 envelope-breath block in
1734
+ source order so cascade gives R742 the win when both classes are
1735
+ applied. When ONLY envelope-breath is applied (reducedMotion strips
1736
+ the entrance class via JSX), R706 rule takes over with just the
1737
+ breath animation. */
1738
+ @keyframes anet-topo-title-block-entrance-kf {
1739
+ 0% { transform: translateY(-4px); opacity: 0.7; }
1740
+ 100% { transform: translateY(0); opacity: 1; }
1741
+ }
1742
+ .anet-topo-title-block-entrance {
1743
+ animation:
1744
+ anet-topo-title-block-entrance-kf 500ms ease-out 200ms backwards,
1745
+ anet-topo-title-block-envelope-breath-kf 11s ease-in-out infinite;
1746
+ }
1747
+ @media (prefers-reduced-motion: reduce) {
1748
+ .anet-topo-title-block-entrance { animation: none; }
1749
+ }
1750
+
1720
1751
  /* Round 707 — chrome Layout wrapper at-rest breath at 17 s. Slowest tier
1721
1752
  among HTML chrome respiratory anchors (sibling to R703 zoom-level 9 s
1722
1753
  in the chrome strip's data tier; this 17 s lands in the chrome strip's
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.254",
3
+ "version": "0.5.3-preview.256",
4
4
  "description": "Agent Network Dashboard \u2014 Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,145 @@
1
+ /* Round 741 — animation temporal modes catalog. 8TH orthogonal
2
+ * meta-doc axis on the topology introspection layer. Octagon:
3
+ *
4
+ * R710 rolodex (cadences) breath
5
+ * R716 dual-axis-surfaces (axes) breath
6
+ * R717 patterns (structural shapes) cross-family
7
+ * R720 tiers (functional roles) breath
8
+ * R723 triple-axis-surfaces (multi-axis) breath
9
+ * R729 axis-count-stats (aggregate stats) breath + cross-family
10
+ * R732 a11y-titles (accessible names) a11y
11
+ * R741 animation-temporal-modes (lifecycle) cross-family ← this round
12
+ *
13
+ * Documents WHEN animations run rather than HOW. Three temporal
14
+ * modes after R740:
15
+ * infinite-rest → breath family 18 members
16
+ * infinite-sweep → ambient family 3 members
17
+ * one-shot-mount → entrance family 1 member
18
+ *
19
+ * Cross-validation against runtime:
20
+ * - infinite-rest member count: rolodex (R710) flat anchor count = 18
21
+ * - infinite-sweep member count: scan-beam-trio (R717) anchors = 3
22
+ * OR distinct anchors across ambient patterns in R717
23
+ * - one-shot-mount member count: 1 (canvas root entrance only)
24
+ *
25
+ * Assertions:
26
+ * - attr present on root <svg>
27
+ * - JSON parses to Array of exactly 3 entries
28
+ * - shape: each entry has {mode, family, members, examples}
29
+ * - modes sorted = ['infinite-rest', 'infinite-sweep', 'one-shot-mount']
30
+ * - families sorted = ['ambient', 'breath', 'entrance']
31
+ * - members are positive integers
32
+ * - examples is non-empty array of strings (≤3 per mode)
33
+ * - Cross-check: infinite-rest.members === R710 rolodex anchor count
34
+ * - Cross-check: infinite-sweep.members === scan-beam-trio anchor count (3)
35
+ * - Cross-check: one-shot-mount.members === 1
36
+ */
37
+ import { chromium } from 'playwright';
38
+ import { readFileSync } from 'node:fs';
39
+
40
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
41
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
42
+
43
+ const browser = await chromium.launch({ headless: true });
44
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
45
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
46
+ await ctx.addInitScript(() => {
47
+ try {
48
+ localStorage.setItem('anet-theme', 'cyber');
49
+ localStorage.setItem('anet-topo-layout', 'ring');
50
+ sessionStorage.setItem('anet_v3_auth', '1');
51
+ } catch {}
52
+ });
53
+ await ctx.route('**/api/hub/status*', async (route) => {
54
+ const r = await route.fetch();
55
+ const b = await r.json();
56
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
57
+ const mk = (alias) => ({
58
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
59
+ network_id: nid, project_dir: null,
60
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
61
+ });
62
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
63
+ });
64
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
65
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
66
+ const page = await ctx.newPage();
67
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
68
+ await page.waitForSelector('[data-topo-canvas-aria]', { timeout: 15000, state: 'attached' });
69
+ await page.waitForTimeout(300);
70
+
71
+ const runtimeAttrs = await page.evaluate(() => {
72
+ const svg = document.querySelector('[data-topo-canvas-aria]');
73
+ return {
74
+ modes: svg?.getAttribute('data-topo-animation-temporal-modes') ?? null,
75
+ rolodex: svg?.getAttribute('data-topo-respiratory-rolodex') ?? null,
76
+ patterns: svg?.getAttribute('data-topo-respiratory-patterns') ?? null,
77
+ };
78
+ });
79
+
80
+ await browser.close();
81
+
82
+ let modes = null;
83
+ let rolodex = null;
84
+ let patterns = null;
85
+ let parseError = null;
86
+ try {
87
+ modes = JSON.parse(runtimeAttrs.modes ?? '');
88
+ rolodex = JSON.parse(runtimeAttrs.rolodex ?? '');
89
+ patterns = JSON.parse(runtimeAttrs.patterns ?? '');
90
+ } catch (e) {
91
+ parseError = String(e);
92
+ }
93
+
94
+ const validShape = Array.isArray(modes)
95
+ ? modes.every(m => m && typeof m === 'object'
96
+ && typeof m.mode === 'string' && m.mode.length > 0
97
+ && typeof m.family === 'string' && m.family.length > 0
98
+ && Number.isInteger(m.members) && m.members > 0
99
+ && Array.isArray(m.examples) && m.examples.length > 0 && m.examples.length <= 3
100
+ && m.examples.every(e => typeof e === 'string' && e.length > 0))
101
+ : false;
102
+
103
+ const modeNames = Array.isArray(modes) ? modes.map(m => m.mode).sort() : [];
104
+ const familyNames = Array.isArray(modes) ? modes.map(m => m.family).sort() : [];
105
+ const expectedModes = ['infinite-rest', 'infinite-sweep', 'one-shot-mount'];
106
+ const expectedFamilies = ['ambient', 'breath', 'entrance'];
107
+
108
+ const infRest = Array.isArray(modes) ? modes.find(m => m.mode === 'infinite-rest') : null;
109
+ const infSweep = Array.isArray(modes) ? modes.find(m => m.mode === 'infinite-sweep') : null;
110
+ const oneShot = Array.isArray(modes) ? modes.find(m => m.mode === 'one-shot-mount') : null;
111
+
112
+ const rolodexAnchorCount = rolodex && typeof rolodex === 'object'
113
+ ? Object.values(rolodex).reduce((acc, v) => acc + (Array.isArray(v) ? v.length : 0), 0)
114
+ : -1;
115
+
116
+ const scanBeamTrio = Array.isArray(patterns) ? patterns.find(p => p.name === 'scan-beam-trio') : null;
117
+ const scanBeamTrioAnchorCount = Array.isArray(scanBeamTrio?.anchors) ? scanBeamTrio.anchors.length : -1;
118
+
119
+ const results = {
120
+ attr_present: !!runtimeAttrs.modes,
121
+ json_parses: modes !== null && parseError === null,
122
+ is_array: Array.isArray(modes),
123
+ has_3_entries: Array.isArray(modes) && modes.length === 3,
124
+ shape_valid: validShape,
125
+ modes_match_expected: JSON.stringify(modeNames) === JSON.stringify(expectedModes),
126
+ families_match_expected: JSON.stringify(familyNames) === JSON.stringify(expectedFamilies),
127
+ inf_rest_breath_pair: infRest?.family === 'breath',
128
+ inf_sweep_ambient_pair: infSweep?.family === 'ambient',
129
+ one_shot_entrance_pair: oneShot?.family === 'entrance',
130
+ inf_rest_matches_rolodex_count: infRest?.members === rolodexAnchorCount,
131
+ inf_sweep_matches_trio_count: infSweep?.members === scanBeamTrioAnchorCount,
132
+ /* R742 — entrance family grew from 1 → 2 members (title-block joined
133
+ * canvas root). The R741-time invariant `=== 1` is invalidated;
134
+ * widen to `>= 1` (entrance family is at least one member) and add
135
+ * a separate `oneShot_count_is_2` reflecting the post-R742 reality. */
136
+ one_shot_count_at_least_1: (oneShot?.members ?? 0) >= 1,
137
+ one_shot_count_is_2: oneShot?.members === 2,
138
+ };
139
+ const ok = Object.values(results).every(Boolean);
140
+ console.log(`${ok ? '✅' : '❌'} R741 animation temporal modes catalog (8th meta-doc — octagon, lifecycle dimension):`,
141
+ JSON.stringify(results, null, 2),
142
+ `\n modes: ${JSON.stringify(modes)}`,
143
+ `\n rolodex anchors: ${rolodexAnchorCount} · scan-beam-trio anchors: ${scanBeamTrioAnchorCount}`,
144
+ parseError ? `\n parseError: ${parseError}` : '');
145
+ process.exit(ok ? 0 : 1);