@sleep2agi/agent-network-dashboard 0.5.3-preview.17 → 0.5.3-preview.19
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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +5 -5
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.html +1 -1
- package/.next/server/app/admin.rsc +1 -1
- package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/logs.html +1 -1
- package/.next/server/app/logs.rsc +1 -1
- package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
- package/.next/server/app/messages.html +1 -1
- package/.next/server/app/messages.rsc +1 -1
- package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
- package/.next/server/app/node.html +1 -1
- package/.next/server/app/node.rsc +1 -1
- package/.next/server/app/node.segments/_full.segment.rsc +1 -1
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +1 -1
- package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/node.segments/node.segment.rsc +1 -1
- package/.next/server/app/nodes.html +1 -1
- package/.next/server/app/nodes.rsc +1 -1
- package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +1 -1
- package/.next/server/app/server-logs.rsc +1 -1
- package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
- package/.next/server/app/settings/networks.html +1 -1
- package/.next/server/app/settings/networks.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +1 -1
- package/.next/server/app/settings/tokens.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/tasks.html +1 -1
- package/.next/server/app/tasks.rsc +1 -1
- package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +3 -3
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/{0owj9w5mce71l.js → 0bx3~m~x7--es.js} +1 -1
- package/.next/static/chunks/{0r~-3n-0-xo9r.js → 0ocjttuapm1j5.js} +1 -1
- package/.next/static/chunks/{14-f9xit_jsav.js → 0r_96qcg~al~l.js} +3 -3
- package/.next/static/chunks/{0agyfkcu1wim_.js → 0wyykzfwmrhap.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/TopoGraph.tsx +55 -1
- package/package.json +1 -1
- package/scripts/topo-freshness-chip-fade-test.mjs +105 -0
- package/scripts/topo-pinned-aspect-test.mjs +89 -0
- /package/.next/static/{I0Fa214fBO3TE0o93MFNh → 0CFKZXs8Nw_rdWAR3Ifpg}/_buildManifest.js +0 -0
- /package/.next/static/{I0Fa214fBO3TE0o93MFNh → 0CFKZXs8Nw_rdWAR3Ifpg}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{I0Fa214fBO3TE0o93MFNh → 0CFKZXs8Nw_rdWAR3Ifpg}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,98025,e=>{"use strict";e.s(["SESSION_STATUS_CHIP_CLASS",0,{working:"bg-green-500/10 text-green-300 border-green-500/20",idle:"bg-blue-500/10 text-blue-300 border-blue-500/20",blocked:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",error:"bg-red-500/10 text-red-300 border-red-500/20",offline:"bg-gray-500/10 text-gray-500 border-gray-500/20"},"SESSION_STATUS_TEXT_CLASS",0,{working:"text-green-400",idle:"text-blue-400",blocked:"text-yellow-400",error:"text-red-400",offline:"text-gray-500"},"STATUS_BAR_CLASS",0,{created:"bg-gray-500",delivered:"bg-blue-500",acked:"bg-cyan-500",running:"bg-green-500",replied:"bg-purple-500",closed:"bg-gray-600",failed:"bg-red-500",cancelled:"bg-yellow-500",expired:"bg-orange-500"},"STATUS_CHIP_CLASS",0,{created:"bg-gray-500/10 text-gray-400 border-gray-500/20",delivered:"bg-blue-500/10 text-blue-300 border-blue-500/20",acked:"bg-cyan-500/10 text-cyan-300 border-cyan-500/20",running:"bg-green-500/10 text-green-300 border-green-500/20",replied:"bg-purple-500/10 text-purple-300 border-purple-500/20",closed:"bg-gray-500/10 text-gray-500 border-gray-500/20",failed:"bg-red-500/10 text-red-300 border-red-500/20",cancelled:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",expired:"bg-orange-500/10 text-orange-300 border-orange-500/20"},"STATUS_DOT_HEX",0,{created:"#9ca3af",delivered:"#60a5fa",acked:"#22d3ee",running:"#4ade80",replied:"#a78bfa",closed:"#6b7280",failed:"#f87171",cancelled:"#facc15",expired:"#fb923c"},"TASK_STATUSES",0,["created","delivered","acked","running","replied","closed","failed","cancelled","expired"]])},3479,59746,e=>{"use strict";function t(e){if(!e)return null;let t=Date.parse(e.includes("T")?e:e.replace(" ","T")+"Z");return Number.isFinite(t)?t:null}function r(e){let r=t(e);if(null===r)return null;let s=Math.floor((Date.now()-r)/1e3);return s<0?"just now":s<60?`${s}s ago`:s<3600?`${Math.floor(s/60)}m ago`:s<86400?`${Math.floor(s/3600)}h ago`:`${Math.floor(s/86400)}d ago`}e.s(["parseHubTime",0,t,"relativeAgo",0,r],59746),e.s(["formatUptime",0,function(e){let t=Math.floor(e/3600),r=Math.floor(e%3600/60);return t>0?`${t}h ${r}m`:`${r}m`},"previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){return r(e)??"--"}],3479)},46228,e=>{"use strict";var t=e.i(22381);let r=[180,200,220,270,300,330,30,90];function s(e){let t=0;for(let r=0;r<e.length;r++)t=31*t+e.charCodeAt(r)>>>0;let s=r[t%r.length];return{bg:`hsl(${s} 55% 22%)`,ring:`hsl(${s} 60% 45%)`,text:`hsl(${s} 80% 78%)`}}function n(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:r=28,className:i=""}){let a=s(e),l=Math.max(9,Math.round(.42*r));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${i}`,style:{width:r,height:r,fontSize:l,backgroundColor:a.bg,borderColor:a.ring,color:a.text},title:e,"aria-hidden":!0,children:n(e)})},"aliasAvatarColors",0,s,"aliasInitial",0,n])},76161,e=>{"use strict";var t=e.i(22381),r=e.i(23910),s=e.i(56839);let n={nodes:{title:"No agents in this network",sub:"Agent sessions will appear here once they connect to the CommHub."},tasks:{title:"No tasks yet",sub:"Tasks will appear here when agents send them via CommHub."},messages:{title:"No messages",sub:"Messages between agents will appear here."},logs:{title:"No audit logs",sub:"Events will appear here when users register, login, or perform actions."},tokens:{title:"No API tokens",sub:"Create one to authenticate CLI tools and external integrations."},networks:{title:"No networks found",sub:"Create one or sign in with V3 auth to see your networks."},generic:{title:"Nothing here yet",sub:"Data will appear here once available."}};function i({variant:e,size:r}){let s={width:r,height:r},n={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,t.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,t.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,t.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,t.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M14 18 h36 a3 3 0 0 1 3 3 v18 a3 3 0 0 1 -3 3 h-18 l-8 6 v-6 h-10 a3 3 0 0 1 -3 -3 v-18 a3 3 0 0 1 3 -3 z"}),(0,t.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,t.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M18 12 h22 l8 8 v32 a2 2 0 0 1 -2 2 h-28 a2 2 0 0 1 -2 -2 v-38 a2 2 0 0 1 2 -2 z"}),(0,t.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,t.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,t.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,t.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,t.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,t.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,t.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,t.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function a({variant:e="generic",title:r,sub:l,cta:o,compact:c=!1}){let d=n[e],x=r??d.title,h=l??d.sub;return(0,t.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)(i,{variant:e,size:c?40:56})}),(0,t.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(0,t.jsx)("p",{className:`text-gray-500 ${c?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:h}),o&&(0,t.jsx)("div",{className:"mt-4",children:o.href?(0,t.jsxs)(s.default,{href:o.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,t.jsxs)("button",{onClick:o.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}function l({children:e}){return(0,t.jsx)("div",{className:"max-w-2xl mx-auto rounded-xl border border-[#2a2a4a] bg-[#111128] shadow-lg shadow-black/20",children:e})}function o({cmd:e}){let[s,n]=(0,r.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1800)}catch{}};return(0,t.jsxs)("div",{className:"anet-empty-cmd flex items-center gap-2 bg-[#0a0a15] border border-[#2a2a4a] rounded-lg pl-4 pr-1.5 py-1.5 text-xs sm:text-sm",children:[(0,t.jsx)("code",{className:"text-cyan-300 font-mono select-all",children:e}),(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":s?"Copied":"Copy command",className:"shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] transition-colors",children:s?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-green-400",children:[(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M20 6 9 17l-5-5"})}),"Copied"]}):(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,t.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]})}e.s(["EmptyState",0,a,"NodesEmptyState",0,function({hint:e,taskHistoryCount:r=0}){return e?.global_count?(0,t.jsx)(l,{children:(0,t.jsx)(a,{variant:"nodes",title:"No agents in this network",sub:`Server has ${e.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`})}):r>0?(0,t.jsx)(l,{children:(0,t.jsx)(a,{variant:"nodes",title:"No agents online",sub:`Every agent in this network is currently offline. ${r.toLocaleString()} task${1===r?"":"s"} in history — they may have finished their work or disconnected.`,cta:{label:"View task history",href:"/tasks"}})}):(0,t.jsx)(l,{children:(0,t.jsxs)("div",{className:"text-center py-16 px-4",role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)("svg",{viewBox:"0 0 64 64",width:56,height:56,children:(0,t.jsxs)("g",{stroke:"currentColor",strokeWidth:"1.5",fill:"none",children:[(0,t.jsx)("rect",{x:"10",y:"20",width:"44",height:"28",rx:"2"}),(0,t.jsx)("rect",{x:"20",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"32",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"44",y:"32",width:"4",height:"8",opacity:"0.5"}),(0,t.jsx)("line",{x1:"10",y1:"26",x2:"54",y2:"26",opacity:"0.4"}),(0,t.jsx)("circle",{cx:"14",cy:"23",r:"0.8",fill:"currentColor"})]})})}),(0,t.jsx)("h3",{className:"font-medium text-gray-300 text-base",children:"Spin up your first agent"}),(0,t.jsx)("p",{className:"text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed",children:"Run this in a fresh terminal to register an agent with this CommHub:"}),(0,t.jsx)("div",{className:"mt-4 inline-block",children:(0,t.jsx)(o,{cmd:"npx --yes @sleep2agi/agent-network init"})}),(0,t.jsx)("div",{className:"mt-3",children:(0,t.jsxs)("a",{href:"https://anet.sh",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300",children:["Full quickstart guide",(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})})}])},59276,e=>{"use strict";var t=e.i(12629),r=e.i(11449);let s=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");return t.json()},n={refreshInterval:5e3,dedupingInterval:3e3};function i(e,t){if(!t)return e;let r=e.includes("?")?"&":"?";return`${e}${r}network_id=${encodeURIComponent(t)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,t.default)("/api/anet/config",s,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/health",s,n);return{health:e||null,error:r}},"useLicense",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/license",s,{refreshInterval:6e4});return{license:e?.ok?e:null,error:r}},"useMessages",0,function(e=100){let{networkId:a}=(0,r.useNetworkId)(),{data:l,error:o,isLoading:c}=(0,t.default)(i(`/api/hub/messages?limit=${e}`,a),s,n);return{messages:l?.messages||[],error:o,isLoading:c}},"useSessions",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l,isLoading:o}=(0,t.default)(i("/api/hub/status",e),s,n);return{sessions:a?.sessions||[],hint:a?._hint,error:l,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l}=(0,t.default)(i("/api/hub/stats",e),s,n);return{stats:a?.ok?a:null,error:l}},"useTasks",0,function(e){let{networkId:a}=(0,r.useNetworkId)(),l=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:c,isLoading:d}=(0,t.default)(i(`/api/hub/tasks?${l}`,a),s,n);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:c,isLoading:d}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.17"],70286)}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,98025,e=>{"use strict";e.s(["SESSION_STATUS_CHIP_CLASS",0,{working:"bg-green-500/10 text-green-300 border-green-500/20",idle:"bg-blue-500/10 text-blue-300 border-blue-500/20",blocked:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",error:"bg-red-500/10 text-red-300 border-red-500/20",offline:"bg-gray-500/10 text-gray-500 border-gray-500/20"},"SESSION_STATUS_TEXT_CLASS",0,{working:"text-green-400",idle:"text-blue-400",blocked:"text-yellow-400",error:"text-red-400",offline:"text-gray-500"},"STATUS_BAR_CLASS",0,{created:"bg-gray-500",delivered:"bg-blue-500",acked:"bg-cyan-500",running:"bg-green-500",replied:"bg-purple-500",closed:"bg-gray-600",failed:"bg-red-500",cancelled:"bg-yellow-500",expired:"bg-orange-500"},"STATUS_CHIP_CLASS",0,{created:"bg-gray-500/10 text-gray-400 border-gray-500/20",delivered:"bg-blue-500/10 text-blue-300 border-blue-500/20",acked:"bg-cyan-500/10 text-cyan-300 border-cyan-500/20",running:"bg-green-500/10 text-green-300 border-green-500/20",replied:"bg-purple-500/10 text-purple-300 border-purple-500/20",closed:"bg-gray-500/10 text-gray-500 border-gray-500/20",failed:"bg-red-500/10 text-red-300 border-red-500/20",cancelled:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",expired:"bg-orange-500/10 text-orange-300 border-orange-500/20"},"STATUS_DOT_HEX",0,{created:"#9ca3af",delivered:"#60a5fa",acked:"#22d3ee",running:"#4ade80",replied:"#a78bfa",closed:"#6b7280",failed:"#f87171",cancelled:"#facc15",expired:"#fb923c"},"TASK_STATUSES",0,["created","delivered","acked","running","replied","closed","failed","cancelled","expired"]])},3479,59746,e=>{"use strict";function t(e){if(!e)return null;let t=Date.parse(e.includes("T")?e:e.replace(" ","T")+"Z");return Number.isFinite(t)?t:null}function r(e){let r=t(e);if(null===r)return null;let s=Math.floor((Date.now()-r)/1e3);return s<0?"just now":s<60?`${s}s ago`:s<3600?`${Math.floor(s/60)}m ago`:s<86400?`${Math.floor(s/3600)}h ago`:`${Math.floor(s/86400)}d ago`}e.s(["parseHubTime",0,t,"relativeAgo",0,r],59746),e.s(["formatUptime",0,function(e){let t=Math.floor(e/3600),r=Math.floor(e%3600/60);return t>0?`${t}h ${r}m`:`${r}m`},"previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){return r(e)??"--"}],3479)},46228,e=>{"use strict";var t=e.i(22381);let r=[180,200,220,270,300,330,30,90];function s(e){let t=0;for(let r=0;r<e.length;r++)t=31*t+e.charCodeAt(r)>>>0;let s=r[t%r.length];return{bg:`hsl(${s} 55% 22%)`,ring:`hsl(${s} 60% 45%)`,text:`hsl(${s} 80% 78%)`}}function n(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:r=28,className:i=""}){let a=s(e),l=Math.max(9,Math.round(.42*r));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${i}`,style:{width:r,height:r,fontSize:l,backgroundColor:a.bg,borderColor:a.ring,color:a.text},title:e,"aria-hidden":!0,children:n(e)})},"aliasAvatarColors",0,s,"aliasInitial",0,n])},76161,e=>{"use strict";var t=e.i(22381),r=e.i(23910),s=e.i(56839);let n={nodes:{title:"No agents in this network",sub:"Agent sessions will appear here once they connect to the CommHub."},tasks:{title:"No tasks yet",sub:"Tasks will appear here when agents send them via CommHub."},messages:{title:"No messages",sub:"Messages between agents will appear here."},logs:{title:"No audit logs",sub:"Events will appear here when users register, login, or perform actions."},tokens:{title:"No API tokens",sub:"Create one to authenticate CLI tools and external integrations."},networks:{title:"No networks found",sub:"Create one or sign in with V3 auth to see your networks."},generic:{title:"Nothing here yet",sub:"Data will appear here once available."}};function i({variant:e,size:r}){let s={width:r,height:r},n={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,t.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,t.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,t.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,t.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M14 18 h36 a3 3 0 0 1 3 3 v18 a3 3 0 0 1 -3 3 h-18 l-8 6 v-6 h-10 a3 3 0 0 1 -3 -3 v-18 a3 3 0 0 1 3 -3 z"}),(0,t.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,t.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M18 12 h22 l8 8 v32 a2 2 0 0 1 -2 2 h-28 a2 2 0 0 1 -2 -2 v-38 a2 2 0 0 1 2 -2 z"}),(0,t.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,t.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,t.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,t.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,t.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,t.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,t.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,t.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function a({variant:e="generic",title:r,sub:l,cta:o,compact:c=!1}){let d=n[e],x=r??d.title,h=l??d.sub;return(0,t.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)(i,{variant:e,size:c?40:56})}),(0,t.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(0,t.jsx)("p",{className:`text-gray-500 ${c?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:h}),o&&(0,t.jsx)("div",{className:"mt-4",children:o.href?(0,t.jsxs)(s.default,{href:o.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,t.jsxs)("button",{onClick:o.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}function l({children:e}){return(0,t.jsx)("div",{className:"max-w-2xl mx-auto rounded-xl border border-[#2a2a4a] bg-[#111128] shadow-lg shadow-black/20",children:e})}function o({cmd:e}){let[s,n]=(0,r.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1800)}catch{}};return(0,t.jsxs)("div",{className:"anet-empty-cmd flex items-center gap-2 bg-[#0a0a15] border border-[#2a2a4a] rounded-lg pl-4 pr-1.5 py-1.5 text-xs sm:text-sm",children:[(0,t.jsx)("code",{className:"text-cyan-300 font-mono select-all",children:e}),(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":s?"Copied":"Copy command",className:"shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] transition-colors",children:s?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-green-400",children:[(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M20 6 9 17l-5-5"})}),"Copied"]}):(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,t.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]})}e.s(["EmptyState",0,a,"NodesEmptyState",0,function({hint:e,taskHistoryCount:r=0}){return e?.global_count?(0,t.jsx)(l,{children:(0,t.jsx)(a,{variant:"nodes",title:"No agents in this network",sub:`Server has ${e.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`})}):r>0?(0,t.jsx)(l,{children:(0,t.jsx)(a,{variant:"nodes",title:"No agents online",sub:`Every agent in this network is currently offline. ${r.toLocaleString()} task${1===r?"":"s"} in history — they may have finished their work or disconnected.`,cta:{label:"View task history",href:"/tasks"}})}):(0,t.jsx)(l,{children:(0,t.jsxs)("div",{className:"text-center py-16 px-4",role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)("svg",{viewBox:"0 0 64 64",width:56,height:56,children:(0,t.jsxs)("g",{stroke:"currentColor",strokeWidth:"1.5",fill:"none",children:[(0,t.jsx)("rect",{x:"10",y:"20",width:"44",height:"28",rx:"2"}),(0,t.jsx)("rect",{x:"20",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"32",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"44",y:"32",width:"4",height:"8",opacity:"0.5"}),(0,t.jsx)("line",{x1:"10",y1:"26",x2:"54",y2:"26",opacity:"0.4"}),(0,t.jsx)("circle",{cx:"14",cy:"23",r:"0.8",fill:"currentColor"})]})})}),(0,t.jsx)("h3",{className:"font-medium text-gray-300 text-base",children:"Spin up your first agent"}),(0,t.jsx)("p",{className:"text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed",children:"Run this in a fresh terminal to register an agent with this CommHub:"}),(0,t.jsx)("div",{className:"mt-4 inline-block",children:(0,t.jsx)(o,{cmd:"npx --yes @sleep2agi/agent-network init"})}),(0,t.jsx)("div",{className:"mt-3",children:(0,t.jsxs)("a",{href:"https://anet.sh",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300",children:["Full quickstart guide",(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})})}])},59276,e=>{"use strict";var t=e.i(12629),r=e.i(11449);let s=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");return t.json()},n={refreshInterval:5e3,dedupingInterval:3e3};function i(e,t){if(!t)return e;let r=e.includes("?")?"&":"?";return`${e}${r}network_id=${encodeURIComponent(t)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,t.default)("/api/anet/config",s,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/health",s,n);return{health:e||null,error:r}},"useLicense",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/license",s,{refreshInterval:6e4});return{license:e?.ok?e:null,error:r}},"useMessages",0,function(e=100){let{networkId:a}=(0,r.useNetworkId)(),{data:l,error:o,isLoading:c}=(0,t.default)(i(`/api/hub/messages?limit=${e}`,a),s,n);return{messages:l?.messages||[],error:o,isLoading:c}},"useSessions",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l,isLoading:o}=(0,t.default)(i("/api/hub/status",e),s,n);return{sessions:a?.sessions||[],hint:a?._hint,error:l,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l}=(0,t.default)(i("/api/hub/stats",e),s,n);return{stats:a?.ok?a:null,error:l}},"useTasks",0,function(e){let{networkId:a}=(0,r.useNetworkId)(),l=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:c,isLoading:d}=(0,t.default)(i(`/api/hub/tasks?${l}`,a),s,n);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:c,isLoading:d}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.5.3-preview.19"],70286)}]);
|
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":467,"timestamp":196988668600,"id":4,"parentId":1,"tags":{},"startTime":1779004960915,"traceId":"de31ab1460ec6342"},{"name":"load-custom-routes","duration":740,"timestamp":196988669308,"id":5,"parentId":1,"tags":{},"startTime":1779004960916,"traceId":"de31ab1460ec6342"},{"name":"create-dist-dir","duration":1100,"timestamp":196988670122,"id":6,"parentId":1,"tags":{},"startTime":1779004960916,"traceId":"de31ab1460ec6342"},{"name":"clean","duration":33606,"timestamp":196988672062,"id":7,"parentId":1,"tags":{},"startTime":1779004960918,"traceId":"de31ab1460ec6342"},{"name":"discover-routes","duration":32536,"timestamp":196988810088,"id":8,"parentId":1,"tags":{},"startTime":1779004961056,"traceId":"de31ab1460ec6342"},{"name":"create-root-mapping","duration":148,"timestamp":196988842706,"id":9,"parentId":1,"tags":{},"startTime":1779004961089,"traceId":"de31ab1460ec6342"},{"name":"generate-route-types","duration":21654,"timestamp":196988845551,"id":10,"parentId":1,"tags":{},"startTime":1779004961092,"traceId":"de31ab1460ec6342"},{"name":"public-dir-conflict-check","duration":144,"timestamp":196988867331,"id":11,"parentId":1,"tags":{},"startTime":1779004961114,"traceId":"de31ab1460ec6342"},{"name":"generate-routes-manifest","duration":6007,"timestamp":196988867684,"id":12,"parentId":1,"tags":{},"startTime":1779004961114,"traceId":"de31ab1460ec6342"},{"name":"run-turbopack","duration":7335338,"timestamp":196988881207,"id":14,"parentId":1,"tags":{},"startTime":1779004961127,"traceId":"de31ab1460ec6342"},{"name":"turbopack-build-events","duration":93,"timestamp":196989239358,"id":15,"parentId":1,"tags":{},"startTime":1779004961486,"traceId":"de31ab1460ec6342"},{"name":"run-typescript","duration":10360155,"timestamp":196996232303,"id":16,"parentId":1,"tags":{},"startTime":1779004968479,"traceId":"de31ab1460ec6342"},{"name":"generate-required-server-files","duration":2991,"timestamp":197006593871,"id":18,"parentId":1,"tags":{},"startTime":1779004978840,"traceId":"de31ab1460ec6342"},{"name":"check-static-error-page","duration":17340,"timestamp":197006826161,"id":20,"parentId":19,"tags":{},"startTime":1779004979072,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":525709,"timestamp":197006848759,"id":65,"parentId":22,"tags":{},"startTime":1779004979095,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":545233,"timestamp":197006829420,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779004979076,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":625201,"timestamp":197006847889,"id":64,"parentId":21,"tags":{},"startTime":1779004979094,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":645416,"timestamp":197006827784,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779004979074,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":712967,"timestamp":197006854721,"id":71,"parentId":30,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":734506,"timestamp":197006833280,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779004979080,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":722289,"timestamp":197006849689,"id":67,"parentId":26,"tags":{},"startTime":1779004979096,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":739359,"timestamp":197006832707,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779004979079,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":718542,"timestamp":197006854985,"id":73,"parentId":33,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":739754,"timestamp":197006833846,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779004979080,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":731967,"timestamp":197006855126,"id":75,"parentId":35,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":753060,"timestamp":197006834101,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779004979080,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":733068,"timestamp":197006855144,"id":76,"parentId":36,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":753706,"timestamp":197006834564,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779004979081,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":737686,"timestamp":197006855174,"id":77,"parentId":37,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":758168,"timestamp":197006834740,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779004979081,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":742499,"timestamp":197006855192,"id":78,"parentId":38,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":762861,"timestamp":197006834887,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779004979081,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":755582,"timestamp":197006855202,"id":79,"parentId":39,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":775862,"timestamp":197006834995,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779004979081,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":756297,"timestamp":197006854795,"id":72,"parentId":32,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":777440,"timestamp":197006833693,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779004979080,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":756317,"timestamp":197006855092,"id":74,"parentId":34,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":777482,"timestamp":197006833965,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779004979080,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":768849,"timestamp":197006848908,"id":66,"parentId":25,"tags":{},"startTime":1779004979095,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":785308,"timestamp":197006832516,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779004979079,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":762788,"timestamp":197006855245,"id":82,"parentId":44,"tags":{},"startTime":1779004979102,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":782142,"timestamp":197006835927,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779004979082,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":768131,"timestamp":197006855219,"id":80,"parentId":40,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":788285,"timestamp":197006835121,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779004979081,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":768322,"timestamp":197006855270,"id":84,"parentId":46,"tags":{},"startTime":1779004979102,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":787431,"timestamp":197006836195,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779004979082,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":773556,"timestamp":197006855232,"id":81,"parentId":42,"tags":{},"startTime":1779004979102,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":793420,"timestamp":197006835465,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779004979082,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":776893,"timestamp":197006854543,"id":70,"parentId":29,"tags":{},"startTime":1779004979101,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":798366,"timestamp":197006833121,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779004979079,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":776340,"timestamp":197006855284,"id":85,"parentId":47,"tags":{},"startTime":1779004979102,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":792853,"timestamp":197006838803,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779004979085,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":789245,"timestamp":197006855293,"id":86,"parentId":48,"tags":{},"startTime":1779004979102,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":805626,"timestamp":197006838994,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779004979085,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":789490,"timestamp":197006855306,"id":87,"parentId":49,"tags":{},"startTime":1779004979102,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":805676,"timestamp":197006839171,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779004979085,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":791781,"timestamp":197006855333,"id":89,"parentId":51,"tags":{},"startTime":1779004979102,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":807792,"timestamp":197006839365,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779004979086,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":799547,"timestamp":197006850040,"id":69,"parentId":28,"tags":{},"startTime":1779004979096,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":816652,"timestamp":197006832979,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779004979079,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":793200,"timestamp":197006859947,"id":90,"parentId":24,"tags":{},"startTime":1779004979106,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":823221,"timestamp":197006829967,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779004979076,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":785574,"timestamp":197006869858,"id":93,"parentId":43,"tags":{},"startTime":1779004979116,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":819871,"timestamp":197006835605,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779004979082,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":787991,"timestamp":197006867630,"id":91,"parentId":31,"tags":{},"startTime":1779004979114,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":822251,"timestamp":197006833399,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779004979080,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":810811,"timestamp":197006855319,"id":88,"parentId":50,"tags":{},"startTime":1779004979102,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":826898,"timestamp":197006839282,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779004979086,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":816425,"timestamp":197006849889,"id":68,"parentId":27,"tags":{},"startTime":1779004979096,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":833496,"timestamp":197006832850,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779004979079,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":811195,"timestamp":197006855255,"id":83,"parentId":45,"tags":{},"startTime":1779004979102,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":830392,"timestamp":197006836082,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779004979082,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":800089,"timestamp":197006868546,"id":92,"parentId":41,"tags":{},"startTime":1779004979115,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":833468,"timestamp":197006835212,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779004979081,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":798284,"timestamp":197006873539,"id":96,"parentId":53,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":831636,"timestamp":197006840221,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779004979086,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":813564,"timestamp":197006873689,"id":101,"parentId":59,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":845423,"timestamp":197006841884,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779004979088,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":828106,"timestamp":197006873712,"id":102,"parentId":61,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":859188,"timestamp":197006842719,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779004979089,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":838298,"timestamp":197006873725,"id":103,"parentId":62,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":869009,"timestamp":197006843072,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779004979089,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":846113,"timestamp":197006873734,"id":104,"parentId":63,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":876648,"timestamp":197006843262,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779004979090,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":833846,"timestamp":197006899893,"id":105,"parentId":60,"tags":{},"startTime":1779004979146,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":891564,"timestamp":197006842225,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779004979089,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":818829,"timestamp":197006921862,"id":106,"parentId":57,"tags":{},"startTime":1779004979168,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":899658,"timestamp":197006841081,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779004979087,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":875145,"timestamp":197006873496,"id":94,"parentId":23,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":918993,"timestamp":197006829700,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779004979076,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":877087,"timestamp":197006873588,"id":100,"parentId":58,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":909075,"timestamp":197006841656,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779004979088,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":886307,"timestamp":197006873547,"id":97,"parentId":54,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":919508,"timestamp":197006840399,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779004979087,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":891712,"timestamp":197006873575,"id":99,"parentId":56,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":924504,"timestamp":197006840828,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779004979087,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":893002,"timestamp":197006873560,"id":98,"parentId":55,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":926001,"timestamp":197006840610,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779004979087,"traceId":"de31ab1460ec6342"},{"name":"is-page-static","duration":913968,"timestamp":197006873525,"id":95,"parentId":52,"tags":{},"startTime":1779004979120,"traceId":"de31ab1460ec6342"},{"name":"check-page","duration":947799,"timestamp":197006839754,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779004979086,"traceId":"de31ab1460ec6342"},{"name":"static-check","duration":962662,"timestamp":197006824940,"id":19,"parentId":1,"tags":{},"startTime":1779004979071,"traceId":"de31ab1460ec6342"}]
|
|
2
|
-
[{"name":"write-routes-manifest","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":253,"timestamp":198214804098,"id":4,"parentId":1,"tags":{},"startTime":1779006187050,"traceId":"8d1f7eaa600ce8de"},{"name":"load-custom-routes","duration":549,"timestamp":198214804494,"id":5,"parentId":1,"tags":{},"startTime":1779006187051,"traceId":"8d1f7eaa600ce8de"},{"name":"create-dist-dir","duration":655,"timestamp":198214805092,"id":6,"parentId":1,"tags":{},"startTime":1779006187051,"traceId":"8d1f7eaa600ce8de"},{"name":"clean","duration":33419,"timestamp":198214806394,"id":7,"parentId":1,"tags":{},"startTime":1779006187053,"traceId":"8d1f7eaa600ce8de"},{"name":"discover-routes","duration":15911,"timestamp":198214927757,"id":8,"parentId":1,"tags":{},"startTime":1779006187174,"traceId":"8d1f7eaa600ce8de"},{"name":"create-root-mapping","duration":208,"timestamp":198214943759,"id":9,"parentId":1,"tags":{},"startTime":1779006187190,"traceId":"8d1f7eaa600ce8de"},{"name":"generate-route-types","duration":38237,"timestamp":198214947325,"id":10,"parentId":1,"tags":{},"startTime":1779006187194,"traceId":"8d1f7eaa600ce8de"},{"name":"public-dir-conflict-check","duration":168,"timestamp":198214985701,"id":11,"parentId":1,"tags":{},"startTime":1779006187232,"traceId":"8d1f7eaa600ce8de"},{"name":"generate-routes-manifest","duration":5683,"timestamp":198214986049,"id":12,"parentId":1,"tags":{},"startTime":1779006187232,"traceId":"8d1f7eaa600ce8de"},{"name":"run-turbopack","duration":7379870,"timestamp":198214997644,"id":14,"parentId":1,"tags":{},"startTime":1779006187244,"traceId":"8d1f7eaa600ce8de"},{"name":"turbopack-build-events","duration":103,"timestamp":198215333081,"id":15,"parentId":1,"tags":{},"startTime":1779006187579,"traceId":"8d1f7eaa600ce8de"},{"name":"run-typescript","duration":10377324,"timestamp":198222390736,"id":16,"parentId":1,"tags":{},"startTime":1779006194637,"traceId":"8d1f7eaa600ce8de"},{"name":"generate-required-server-files","duration":2976,"timestamp":198232769472,"id":18,"parentId":1,"tags":{},"startTime":1779006205016,"traceId":"8d1f7eaa600ce8de"},{"name":"check-static-error-page","duration":15639,"timestamp":198232963956,"id":20,"parentId":19,"tags":{},"startTime":1779006205210,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":530295,"timestamp":198232983767,"id":65,"parentId":22,"tags":{},"startTime":1779006205230,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":547958,"timestamp":198232967153,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779006205213,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":627391,"timestamp":198232984148,"id":68,"parentId":27,"tags":{},"startTime":1779006205230,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":641092,"timestamp":198232970542,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779006205217,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":628656,"timestamp":198232984039,"id":67,"parentId":26,"tags":{},"startTime":1779006205230,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":642392,"timestamp":198232970371,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779006205217,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":631915,"timestamp":198232984707,"id":72,"parentId":32,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":645075,"timestamp":198232971592,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779006205218,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":634854,"timestamp":198232984885,"id":73,"parentId":33,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":648080,"timestamp":198232971730,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779006205218,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":646918,"timestamp":198232983368,"id":64,"parentId":21,"tags":{},"startTime":1779006205230,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":664911,"timestamp":198232965558,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779006205212,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":654854,"timestamp":198232983921,"id":66,"parentId":25,"tags":{},"startTime":1779006205230,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":668658,"timestamp":198232970184,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779006205216,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":666289,"timestamp":198232984968,"id":74,"parentId":34,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":679328,"timestamp":198232971992,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779006205218,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":681511,"timestamp":198232984998,"id":75,"parentId":35,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":694416,"timestamp":198232972154,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779006205218,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":682503,"timestamp":198232984250,"id":69,"parentId":28,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":696084,"timestamp":198232970697,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779006205217,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":689705,"timestamp":198232984508,"id":70,"parentId":29,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":703411,"timestamp":198232970850,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779006205217,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":692770,"timestamp":198232985076,"id":78,"parentId":38,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":704953,"timestamp":198232972942,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779006205219,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":698295,"timestamp":198232985060,"id":77,"parentId":37,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":710616,"timestamp":198232972787,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779006205219,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":700699,"timestamp":198232985093,"id":79,"parentId":39,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":712790,"timestamp":198232973058,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779006205219,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":701437,"timestamp":198232985128,"id":82,"parentId":44,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":712656,"timestamp":198232973955,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779006205220,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":703148,"timestamp":198232984646,"id":71,"parentId":30,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":716673,"timestamp":198232971176,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779006205217,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":706204,"timestamp":198232985153,"id":84,"parentId":46,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":715782,"timestamp":198232975632,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779006205222,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":707096,"timestamp":198232985166,"id":85,"parentId":47,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":716511,"timestamp":198232975792,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779006205222,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":710392,"timestamp":198232985187,"id":87,"parentId":49,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":719555,"timestamp":198232976063,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779006205222,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":711150,"timestamp":198232985199,"id":88,"parentId":50,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":720227,"timestamp":198232976160,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779006205222,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":719041,"timestamp":198232985102,"id":80,"parentId":40,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":731029,"timestamp":198232973169,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779006205219,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":719152,"timestamp":198232985212,"id":89,"parentId":51,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":728169,"timestamp":198232976239,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779006205223,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":714550,"timestamp":198232990260,"id":90,"parentId":24,"tags":{},"startTime":1779006205237,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":737196,"timestamp":198232967660,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779006205214,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":719939,"timestamp":198232985115,"id":81,"parentId":42,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":731581,"timestamp":198232973522,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779006205220,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":726223,"timestamp":198232985178,"id":86,"parentId":48,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":735529,"timestamp":198232975915,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779006205222,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":726430,"timestamp":198232985140,"id":83,"parentId":45,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":737488,"timestamp":198232974114,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779006205220,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":719291,"timestamp":198232993841,"id":93,"parentId":43,"tags":{},"startTime":1779006205240,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":739521,"timestamp":198232973662,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779006205220,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":734838,"timestamp":198232992427,"id":92,"parentId":41,"tags":{},"startTime":1779006205239,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":754056,"timestamp":198232973262,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779006205220,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":747482,"timestamp":198232991578,"id":91,"parentId":31,"tags":{},"startTime":1779006205238,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":767812,"timestamp":198232971320,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779006205218,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":755673,"timestamp":198232985031,"id":76,"parentId":36,"tags":{},"startTime":1779006205231,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":768136,"timestamp":198232972619,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779006205219,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":764712,"timestamp":198232996178,"id":100,"parentId":58,"tags":{},"startTime":1779006205242,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":782740,"timestamp":198232978219,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779006205224,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":771960,"timestamp":198232996286,"id":101,"parentId":59,"tags":{},"startTime":1779006205243,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":789881,"timestamp":198232978427,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779006205225,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":781292,"timestamp":198232996304,"id":102,"parentId":61,"tags":{},"startTime":1779006205243,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":798619,"timestamp":198232979057,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779006205225,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":789515,"timestamp":198232996144,"id":97,"parentId":54,"tags":{},"startTime":1779006205242,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":808758,"timestamp":198232976956,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779006205223,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":792542,"timestamp":198232996135,"id":96,"parentId":53,"tags":{},"startTime":1779006205242,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":811963,"timestamp":198232976786,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779006205223,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":797439,"timestamp":198232996325,"id":104,"parentId":63,"tags":{},"startTime":1779006205243,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":814479,"timestamp":198232979353,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779006205226,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":801075,"timestamp":198232996120,"id":95,"parentId":52,"tags":{},"startTime":1779006205242,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":820616,"timestamp":198232976625,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779006205223,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":802494,"timestamp":198232996091,"id":94,"parentId":23,"tags":{},"startTime":1779006205242,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":831208,"timestamp":198232967425,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779006205214,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":779611,"timestamp":198233019520,"id":106,"parentId":57,"tags":{},"startTime":1779006205266,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":821539,"timestamp":198232977631,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779006205224,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":793083,"timestamp":198233006186,"id":105,"parentId":60,"tags":{},"startTime":1779006205252,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":820701,"timestamp":198232978602,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779006205225,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":803331,"timestamp":198232996316,"id":103,"parentId":62,"tags":{},"startTime":1779006205243,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":820485,"timestamp":198232979205,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779006205225,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":804519,"timestamp":198232996169,"id":99,"parentId":56,"tags":{},"startTime":1779006205242,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":823327,"timestamp":198232977401,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779006205224,"traceId":"8d1f7eaa600ce8de"},{"name":"is-page-static","duration":811682,"timestamp":198232996157,"id":98,"parentId":55,"tags":{},"startTime":1779006205242,"traceId":"8d1f7eaa600ce8de"},{"name":"check-page","duration":830709,"timestamp":198232977177,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779006205223,"traceId":"8d1f7eaa600ce8de"},{"name":"static-check","duration":845144,"timestamp":198232962793,"id":19,"parentId":1,"tags":{},"startTime":1779006205209,"traceId":"8d1f7eaa600ce8de"}]
|
|
2
|
+
[{"name":"write-routes-manifest","duration":682,"timestamp":198233820475,"id":108,"parentId":1,"tags":{},"startTime":1779006206067,"traceId":"8d1f7eaa600ce8de"},{"name":"load-dotenv","duration":89,"timestamp":198233834951,"id":111,"parentId":110,"tags":{},"startTime":1779006206081,"traceId":"8d1f7eaa600ce8de"},{"name":"run-export-path-map","duration":729,"timestamp":198233839904,"id":112,"parentId":110,"tags":{},"startTime":1779006206086,"traceId":"8d1f7eaa600ce8de"},{"name":"next-export","duration":630240,"timestamp":198233833047,"id":110,"parentId":1,"tags":{},"startTime":1779006206079,"traceId":"8d1f7eaa600ce8de"},{"name":"move-exported-app-not-found-","duration":614,"timestamp":198234467466,"id":113,"parentId":109,"tags":{},"startTime":1779006206714,"traceId":"8d1f7eaa600ce8de"},{"name":"move-exported-app-global-error-","duration":403,"timestamp":198234468180,"id":114,"parentId":109,"tags":{},"startTime":1779006206714,"traceId":"8d1f7eaa600ce8de"},{"name":"static-generation","duration":644532,"timestamp":198233826432,"id":109,"parentId":1,"tags":{},"startTime":1779006206073,"traceId":"8d1f7eaa600ce8de"},{"name":"write-routes-manifest","duration":558,"timestamp":198234471300,"id":115,"parentId":1,"tags":{},"startTime":1779006206718,"traceId":"8d1f7eaa600ce8de"},{"name":"print-tree-view","duration":5261,"timestamp":198234498913,"id":116,"parentId":1,"tags":{},"startTime":1779006206745,"traceId":"8d1f7eaa600ce8de"},{"name":"write-route-bundle-stats","duration":15159,"timestamp":198234504220,"id":117,"parentId":1,"tags":{},"startTime":1779006206750,"traceId":"8d1f7eaa600ce8de"},{"name":"telemetry-flush","duration":24730,"timestamp":198234519412,"id":118,"parentId":1,"tags":{},"startTime":1779006206766,"traceId":"8d1f7eaa600ce8de"},{"name":"next-build","duration":19792852,"timestamp":198214751326,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779006186998,"traceId":"8d1f7eaa600ce8de"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":7379870,"timestamp":198214997644,"id":14,"parentId":1,"tags":{},"startTime":1779006187244,"traceId":"8d1f7eaa600ce8de"},{"name":"turbopack-build-events","duration":103,"timestamp":198215333081,"id":15,"parentId":1,"tags":{},"startTime":1779006187579,"traceId":"8d1f7eaa600ce8de"},{"name":"run-typescript","duration":10377324,"timestamp":198222390736,"id":16,"parentId":1,"tags":{},"startTime":1779006194637,"traceId":"8d1f7eaa600ce8de"},{"name":"static-check","duration":845144,"timestamp":198232962793,"id":19,"parentId":1,"tags":{},"startTime":1779006205209,"traceId":"8d1f7eaa600ce8de"},{"name":"static-generation","duration":644532,"timestamp":198233826432,"id":109,"parentId":1,"tags":{},"startTime":1779006206073,"traceId":"8d1f7eaa600ce8de"},{"name":"telemetry-flush","duration":24730,"timestamp":198234519412,"id":118,"parentId":1,"tags":{},"startTime":1779006206766,"traceId":"8d1f7eaa600ce8de"},{"name":"next-build","duration":19792852,"timestamp":198214751326,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779006186998,"traceId":"8d1f7eaa600ce8de"}]
|
|
@@ -240,11 +240,30 @@ function FreshnessChip({ sessions }: { sessions: unknown }) {
|
|
|
240
240
|
stale-onset to direct attention. */
|
|
241
241
|
if (!stale) return null;
|
|
242
242
|
return (
|
|
243
|
+
/* Round 505 / Loop — FreshnessChip mount animation. Pre-R505 the
|
|
244
|
+
chip popped into the chip-row instantly when SWR data crossed
|
|
245
|
+
the 10s stale threshold; users saw an abrupt amber pill appear
|
|
246
|
+
mid-row. R505 adds the existing `anet-fade-in` class so the
|
|
247
|
+
chip eases through opacity 0→1 over 150ms (R51 globals.css
|
|
248
|
+
keyframe) on first appearance. The chip itself only renders
|
|
249
|
+
when stale (R275 conditional), so the fade plays exactly when
|
|
250
|
+
the stale signal first arrives — perfectly aligned with the
|
|
251
|
+
semantic. Mount-once via React reconciliation (key not used
|
|
252
|
+
since FreshnessChip is a singleton in the parent).
|
|
253
|
+
a11y respected via R29 blanket — `@media (prefers-reduced-
|
|
254
|
+
motion: reduce)` neutralizes anet-fade-in to `animation:none`
|
|
255
|
+
(globals.css line 1083-1089 includes anet-fade-in in the
|
|
256
|
+
blanket list). Reduced-motion users see the chip pop instantly,
|
|
257
|
+
same as pre-R505 behavior — no regression.
|
|
258
|
+
Pure paint-axis addition (opacity animation, no geometry),
|
|
259
|
+
bbox unchanged. data-freshness-chip-mount-fade attr exposes
|
|
260
|
+
the gate for tests. */
|
|
243
261
|
<span
|
|
244
|
-
className={`${baseClass} ${colorClass}`}
|
|
262
|
+
className={`${baseClass} ${colorClass} anet-fade-in`}
|
|
245
263
|
title={stale ? `Last sync ${sec}s ago — SWR refresh may be lagging` : `Live data · refreshes every 5s · last sync ${sec}s ago`}
|
|
246
264
|
data-freshness-chip
|
|
247
265
|
data-freshness-chip-stale={stale ? 'true' : 'false'}
|
|
266
|
+
data-freshness-chip-mount-fade="true"
|
|
248
267
|
>
|
|
249
268
|
{/* Round 272 / Loop: swap prefix word to match color state so
|
|
250
269
|
text and color point the same way. Pre-R272 the chip read
|
|
@@ -3664,6 +3683,41 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
3664
3683
|
categorical) — separate dedicated attrs if/when needed.
|
|
3665
3684
|
Root svg attribute set now 11 attrs total. */
|
|
3666
3685
|
data-topo-hovered-alias={hoveredAlias ?? ''}
|
|
3686
|
+
/* Round 504 / Loop — categorical pin-aspect attr paired with
|
|
3687
|
+
R467 any-pinned boolean and R488 hovered-alias identity.
|
|
3688
|
+
Pre-R504 the canvas state surface set told tests WHETHER
|
|
3689
|
+
any pin was active (R467 boolean) but tests had to enumerate
|
|
3690
|
+
4 individual state vars to determine WHICH pin axis fired:
|
|
3691
|
+
pinnedStatus legend-row status filter
|
|
3692
|
+
pinnedGroup prefix-cluster lock
|
|
3693
|
+
pinnedVendor vendor-chip filter
|
|
3694
|
+
pinnedEdgeKey edge-focus
|
|
3695
|
+
R504 surfaces the active aspect as a single categorical
|
|
3696
|
+
attribute: data-topo-pinned-aspect ∈
|
|
3697
|
+
'none' no pin active
|
|
3698
|
+
'status' pinnedStatus only
|
|
3699
|
+
'group' pinnedGroup only
|
|
3700
|
+
'vendor' pinnedVendor only
|
|
3701
|
+
'edge' pinnedEdgeKey only
|
|
3702
|
+
'multi' 2 or more pins active simultaneously
|
|
3703
|
+
('multi' covers cross-cutting filters — e.g. user pins
|
|
3704
|
+
status='working' AND vendor='claude' simultaneously to
|
|
3705
|
+
narrow the canvas. Each pin axis is independently
|
|
3706
|
+
dismissable via Esc / individual chip click, so multi
|
|
3707
|
+
states are reachable and worth surfacing as a distinct
|
|
3708
|
+
tier.)
|
|
3709
|
+
13th attr in the canvas state surface set after R502.
|
|
3710
|
+
Composed from 4 existing state vars — no new state. */
|
|
3711
|
+
data-topo-pinned-aspect={(() => {
|
|
3712
|
+
const aspects: string[] = [];
|
|
3713
|
+
if (pinnedStatus) aspects.push('status');
|
|
3714
|
+
if (pinnedGroup) aspects.push('group');
|
|
3715
|
+
if (pinnedVendor) aspects.push('vendor');
|
|
3716
|
+
if (pinnedEdgeKey) aspects.push('edge');
|
|
3717
|
+
if (aspects.length === 0) return 'none';
|
|
3718
|
+
if (aspects.length === 1) return aspects[0];
|
|
3719
|
+
return 'multi';
|
|
3720
|
+
})()}
|
|
3667
3721
|
/* Round 466 / Loop — aggregate hover signal on the root SVG.
|
|
3668
3722
|
Exposes a single boolean `data-topo-any-hover` that
|
|
3669
3723
|
reflects whether ANY hover state in the topology is
|
package/package.json
CHANGED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/* Round 505 verification: FreshnessChip mount picks up `anet-fade-in`
|
|
2
|
+
* so the stale-warning amber pill eases in (opacity 0→1 over 150ms)
|
|
3
|
+
* instead of popping into the chip-row. The chip ONLY renders when
|
|
4
|
+
* stale (R275 conditional), so the fade plays exactly at the moment
|
|
5
|
+
* the stale signal first arrives — perfectly aligned with semantic.
|
|
6
|
+
*
|
|
7
|
+
* Fixture: stale data is triggered when SWR sec > 10. The chip fetches
|
|
8
|
+
* from /api/hub/status; we can route-mock with stale timestamps to
|
|
9
|
+
* force the stale gate, but the simpler path is to assert the chip
|
|
10
|
+
* IS NOT visible at rest (fresh data fixture) AND when it appears
|
|
11
|
+
* post-stale, it carries the anet-fade-in class.
|
|
12
|
+
*
|
|
13
|
+
* Strategy:
|
|
14
|
+
* 1. Source-side: regex confirms `${baseClass} ${colorClass} anet-
|
|
15
|
+
* fade-in` template literal + data-freshness-chip-mount-fade attr
|
|
16
|
+
* wired.
|
|
17
|
+
* 2. DOM-side: probe page with no stale fixture; chip not visible.
|
|
18
|
+
* Then route-mock with stale lag (timestamps > 10s old) to force
|
|
19
|
+
* stale render; chip appears with anet-fade-in class + attr.
|
|
20
|
+
*/
|
|
21
|
+
import { chromium } from 'playwright';
|
|
22
|
+
import { readFileSync } from 'node:fs';
|
|
23
|
+
|
|
24
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
25
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
26
|
+
|
|
27
|
+
const browser = await chromium.launch({ headless: true });
|
|
28
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
|
|
29
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
30
|
+
await ctx.addInitScript(() => {
|
|
31
|
+
try {
|
|
32
|
+
localStorage.setItem('anet-theme', 'cyber');
|
|
33
|
+
sessionStorage.setItem('anet_v3_auth', '1');
|
|
34
|
+
} catch {}
|
|
35
|
+
});
|
|
36
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
37
|
+
const r = await route.fetch();
|
|
38
|
+
const b = await r.json();
|
|
39
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
40
|
+
// Stale fixture: served_at is FAR in past so client-side `sec` computes > 10
|
|
41
|
+
// The FreshnessChip reads `sec` from SWR data freshness — but the chip
|
|
42
|
+
// also computes from `served_at` (timestamp on the response). Let's mock
|
|
43
|
+
// by holding the response so SWR's internal lastFetch timestamp ages.
|
|
44
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [
|
|
45
|
+
{ alias: 'a·1', status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
|
|
46
|
+
network_id: nid, project_dir: null,
|
|
47
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh },
|
|
48
|
+
] } });
|
|
49
|
+
});
|
|
50
|
+
await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
|
|
51
|
+
await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
|
|
52
|
+
const page = await ctx.newPage();
|
|
53
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
|
|
54
|
+
await page.waitForTimeout(2000);
|
|
55
|
+
|
|
56
|
+
// Force `sec` to compute as stale by mocking a stale state. Most reliable:
|
|
57
|
+
// look for the freshness chip element after waiting > 11s. But that's slow.
|
|
58
|
+
// Faster: just verify the FreshnessChip CAN be conditionally rendered with
|
|
59
|
+
// the right class — probe a synthetic case via direct DOM injection.
|
|
60
|
+
//
|
|
61
|
+
// Best simple test: source-side regex (the canonical proof) + assert that
|
|
62
|
+
// when the chip element EXISTS in the DOM (it would after stale onset),
|
|
63
|
+
// it carries the class. We'll trigger it by waiting + polling.
|
|
64
|
+
|
|
65
|
+
// Step 1: confirm chip is NOT visible at fresh-data start
|
|
66
|
+
const initialChip = await page.evaluate(() =>
|
|
67
|
+
document.querySelector('[data-freshness-chip]')
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
// Step 2: Wait for stale threshold (sec > 10). FreshnessChip recalcs `sec`
|
|
71
|
+
// from `data.served_at` or SWR's last fetch timestamp every render — SWR
|
|
72
|
+
// refreshes every 5s, so the chip needs > 10s wall-clock since first fetch.
|
|
73
|
+
// Wait 13s.
|
|
74
|
+
await page.waitForTimeout(13000);
|
|
75
|
+
const chipInfo = await page.evaluate(() => {
|
|
76
|
+
const chip = document.querySelector('[data-freshness-chip]');
|
|
77
|
+
if (!chip) return null;
|
|
78
|
+
return {
|
|
79
|
+
present: true,
|
|
80
|
+
class_has_fade: /anet-fade-in/.test(chip.getAttribute('class') || ''),
|
|
81
|
+
mount_fade_attr: chip.getAttribute('data-freshness-chip-mount-fade'),
|
|
82
|
+
stale_attr: chip.getAttribute('data-freshness-chip-stale'),
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
await browser.close();
|
|
87
|
+
|
|
88
|
+
const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
|
|
89
|
+
const sourceClassWired = /className=\{`\$\{baseClass\} \$\{colorClass\} anet-fade-in`\}/.test(src);
|
|
90
|
+
const sourceAttrWired = /data-freshness-chip-mount-fade="true"/.test(src);
|
|
91
|
+
|
|
92
|
+
const results = {
|
|
93
|
+
initial_chip_absent: initialChip === null,
|
|
94
|
+
source_class_wired: sourceClassWired,
|
|
95
|
+
source_attr_wired: sourceAttrWired,
|
|
96
|
+
// Post-stale assertions (vacuous-or-strict pattern banked from R495)
|
|
97
|
+
post_stale_strict_or_vacuous:
|
|
98
|
+
chipInfo === null ||
|
|
99
|
+
(chipInfo.class_has_fade && chipInfo.mount_fade_attr === 'true' && chipInfo.stale_attr === 'true'),
|
|
100
|
+
post_stale_chip_seen: !!chipInfo,
|
|
101
|
+
};
|
|
102
|
+
const ok = Object.values(results).every(Boolean);
|
|
103
|
+
console.log(`${ok ? '✅' : '❌'} R505 FreshnessChip mount fade:`, JSON.stringify(results),
|
|
104
|
+
'\n initial:', initialChip, '\n post-stale:', JSON.stringify(chipInfo));
|
|
105
|
+
process.exit(ok ? 0 : 1);
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/* Round 504 verification: root svg surfaces `data-topo-pinned-aspect`
|
|
2
|
+
* categorical attribute. Sibling to R488's `data-topo-hovered-alias`
|
|
3
|
+
* (hover identity); R504 is the pin axis identity. Reflects WHICH
|
|
4
|
+
* pin state is active — paired with R467's any-pinned boolean.
|
|
5
|
+
*
|
|
6
|
+
* Tier values:
|
|
7
|
+
* none, status, group, vendor, edge, multi
|
|
8
|
+
*
|
|
9
|
+
* Test scenarios — seed pins via localStorage to reach each tier
|
|
10
|
+
* deterministically.
|
|
11
|
+
*/
|
|
12
|
+
import { chromium } from 'playwright';
|
|
13
|
+
import { readFileSync } from 'node:fs';
|
|
14
|
+
|
|
15
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
16
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
17
|
+
|
|
18
|
+
async function probe({ pins }) {
|
|
19
|
+
const browser = await chromium.launch({ headless: true });
|
|
20
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
|
|
21
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
22
|
+
await ctx.addInitScript((p) => {
|
|
23
|
+
try {
|
|
24
|
+
localStorage.setItem('anet-theme', 'cyber');
|
|
25
|
+
localStorage.setItem('anet-topo-layout', 'ring');
|
|
26
|
+
sessionStorage.setItem('anet_v3_auth', '1');
|
|
27
|
+
// Pins persist via sessionStorage (not localStorage) — verified
|
|
28
|
+
// by grep of TopoGraph.tsx useState initializers at lines
|
|
29
|
+
// 1033/1148/1187. pinnedEdgeKey starts null (no persistence;
|
|
30
|
+
// edge pin only reachable via click, skipped in this test).
|
|
31
|
+
if (p.status) sessionStorage.setItem('anet-topo-pinned-status', p.status);
|
|
32
|
+
if (p.group) sessionStorage.setItem('anet-topo-pinned-group', p.group);
|
|
33
|
+
if (p.vendor) sessionStorage.setItem('anet-topo-pinned-vendor', p.vendor);
|
|
34
|
+
} catch {}
|
|
35
|
+
}, pins);
|
|
36
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
37
|
+
const r = await route.fetch();
|
|
38
|
+
const b = await r.json();
|
|
39
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
40
|
+
const mk = (alias, status) => ({
|
|
41
|
+
alias, status, model: 'claude-opus-4', runtime: 'claude-code-cli',
|
|
42
|
+
network_id: nid, project_dir: null,
|
|
43
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
44
|
+
});
|
|
45
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [
|
|
46
|
+
mk('alpha·1', 'working'),
|
|
47
|
+
mk('alpha·2', 'idle'),
|
|
48
|
+
] } });
|
|
49
|
+
});
|
|
50
|
+
await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
|
|
51
|
+
await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
|
|
52
|
+
const page = await ctx.newPage();
|
|
53
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
|
|
54
|
+
await page.waitForSelector('svg[data-topo-pinned-aspect]', { timeout: 15000 });
|
|
55
|
+
await page.waitForTimeout(2800); // settle for localStorage-restore useEffect
|
|
56
|
+
const aspect = await page.evaluate(() => {
|
|
57
|
+
return document.querySelector('svg[viewBox="0 0 1000 680"]')?.getAttribute('data-topo-pinned-aspect');
|
|
58
|
+
});
|
|
59
|
+
await browser.close();
|
|
60
|
+
return aspect;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const none = await probe({ pins: {} });
|
|
64
|
+
const status = await probe({ pins: { status: 'working' } });
|
|
65
|
+
// Note: 'alpha' for group depends on actual alias-prefix derivation; valid
|
|
66
|
+
// because we seeded alpha·1 + alpha·2 (both have prefix 'alpha·')
|
|
67
|
+
const group = await probe({ pins: { group: 'alpha·' } });
|
|
68
|
+
// vendor uses initial letter — Anthropic = 'A' (from vendorIdentity.ts line 69)
|
|
69
|
+
// claude-opus-4 model resolves to Anthropic vendor; stale-purge keeps 'A' valid
|
|
70
|
+
const vendor = await probe({ pins: { vendor: 'A' } });
|
|
71
|
+
// edge needs from→to format; skip — edge pin keys are complex
|
|
72
|
+
// Multi: status + group together
|
|
73
|
+
const multi = await probe({ pins: { status: 'working', group: 'alpha·' } });
|
|
74
|
+
|
|
75
|
+
const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
|
|
76
|
+
const sourceWired = /data-topo-pinned-aspect=\{\(\(\) => \{[\s\S]*?aspects\.push\('status'\)[\s\S]*?aspects\.push\('group'\)[\s\S]*?aspects\.push\('vendor'\)[\s\S]*?aspects\.push\('edge'\)/.test(src);
|
|
77
|
+
|
|
78
|
+
const results = {
|
|
79
|
+
none_resolves: none === 'none',
|
|
80
|
+
status_resolves: status === 'status',
|
|
81
|
+
group_resolves: group === 'group',
|
|
82
|
+
vendor_resolves: vendor === 'vendor',
|
|
83
|
+
multi_resolves: multi === 'multi',
|
|
84
|
+
source_wired: sourceWired,
|
|
85
|
+
};
|
|
86
|
+
const ok = Object.values(results).every(Boolean);
|
|
87
|
+
console.log(`${ok ? '✅' : '❌'} R504 pinned-aspect:`, JSON.stringify(results),
|
|
88
|
+
'\n raw:', { none, status, group, vendor, multi });
|
|
89
|
+
process.exit(ok ? 0 : 1);
|
|
File without changes
|
/package/.next/static/{I0Fa214fBO3TE0o93MFNh → 0CFKZXs8Nw_rdWAR3Ifpg}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|