@sleep2agi/agent-network-dashboard 0.4.6-preview.4 → 0.4.6-preview.6
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 +9 -9
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- 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 +2 -2
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin.html +2 -2
- package/.next/server/app/admin.rsc +2 -2
- package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +2 -2
- package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/messages.html +2 -2
- package/.next/server/app/messages.rsc +2 -2
- package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/node.html +2 -2
- package/.next/server/app/node.rsc +3 -3
- package/.next/server/app/node.segments/_full.segment.rsc +3 -3
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +2 -2
- package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/node.segments/node.segment.rsc +1 -1
- package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/nodes.html +2 -2
- package/.next/server/app/nodes.rsc +3 -3
- package/.next/server/app/nodes.segments/_full.segment.rsc +3 -3
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +2 -2
- package/.next/server/app/server-logs.rsc +2 -2
- package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/networks.html +2 -2
- package/.next/server/app/settings/networks.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +2 -2
- package/.next/server/app/settings/tokens.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- 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/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks.html +2 -2
- package/.next/server/app/tasks.rsc +2 -2
- package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
- 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]__0xm3h9x._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0xm3h9x._.js.map +1 -1
- package/.next/server/chunks/ssr/_0nne7mz._.js +1 -1
- package/.next/server/chunks/ssr/_0nne7mz._.js.map +1 -1
- package/.next/server/chunks/ssr/app_0aum_g5._.js +1 -1
- package/.next/server/chunks/ssr/app_0aum_g5._.js.map +1 -1
- package/.next/server/chunks/ssr/app_0esuljp._.js +1 -1
- package/.next/server/chunks/ssr/app_0esuljp._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/09vpkiy8u1fd9.js +1 -0
- package/.next/static/chunks/0_rmxom9~1lmk.css +2 -0
- package/.next/static/chunks/{0sxaea_g05hbz.js → 0cduea_g_p_y..js} +1 -1
- package/.next/static/chunks/{0c1bp~g7.8ru..js → 0j6t.m1a6._pk.js} +1 -1
- package/.next/static/chunks/{04p678v0aui~f.js → 0rtpz4a-9r6ab.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/ChatPopover.tsx +6 -6
- package/app/components/TaskChatPanel.tsx +39 -39
- package/app/components/TopoGraph.tsx +14 -1
- package/app/page.tsx +18 -1
- package/package.json +1 -1
- package/scripts/chat-theme-test.mjs +97 -0
- package/scripts/topo-rename-test.mjs +106 -0
- package/.next/static/chunks/07epshqd2k_l_.js +0 -1
- package/.next/static/chunks/09n9xs.6dvvo2.css +0 -2
- /package/.next/static/{q2pRPNeRoK1vOr1EX-qOG → 5BgbN6YWZJU6fk3Z0cE8n}/_buildManifest.js +0 -0
- /package/.next/static/{q2pRPNeRoK1vOr1EX-qOG → 5BgbN6YWZJU6fk3Z0cE8n}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{q2pRPNeRoK1vOr1EX-qOG → 5BgbN6YWZJU6fk3Z0cE8n}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94867,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.4.6-preview.
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94867,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.4.6-preview.6"],94867)},89954,e=>{"use strict";var t=e.i(18050),r=e.i(71645),a=e.i(94867);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":292,"timestamp":416861402401,"id":4,"parentId":1,"tags":{},"startTime":1778788347227,"traceId":"a47bdb9bd1bc6ec6"},{"name":"load-custom-routes","duration":524,"timestamp":416861402843,"id":5,"parentId":1,"tags":{},"startTime":1778788347228,"traceId":"a47bdb9bd1bc6ec6"},{"name":"create-dist-dir","duration":319,"timestamp":416861403411,"id":6,"parentId":1,"tags":{},"startTime":1778788347228,"traceId":"a47bdb9bd1bc6ec6"},{"name":"clean","duration":504,"timestamp":416861404434,"id":7,"parentId":1,"tags":{},"startTime":1778788347229,"traceId":"a47bdb9bd1bc6ec6"},{"name":"discover-routes","duration":21358,"timestamp":416861493033,"id":8,"parentId":1,"tags":{},"startTime":1778788347318,"traceId":"a47bdb9bd1bc6ec6"},{"name":"create-root-mapping","duration":128,"timestamp":416861514457,"id":9,"parentId":1,"tags":{},"startTime":1778788347339,"traceId":"a47bdb9bd1bc6ec6"},{"name":"generate-route-types","duration":22648,"timestamp":416861516998,"id":10,"parentId":1,"tags":{},"startTime":1778788347342,"traceId":"a47bdb9bd1bc6ec6"},{"name":"public-dir-conflict-check","duration":112,"timestamp":416861539835,"id":11,"parentId":1,"tags":{},"startTime":1778788347365,"traceId":"a47bdb9bd1bc6ec6"},{"name":"generate-routes-manifest","duration":4923,"timestamp":416861540120,"id":12,"parentId":1,"tags":{},"startTime":1778788347365,"traceId":"a47bdb9bd1bc6ec6"},{"name":"run-turbopack","duration":9469000,"timestamp":416861550985,"id":14,"parentId":1,"tags":{},"startTime":1778788347376,"traceId":"a47bdb9bd1bc6ec6"},{"name":"turbopack-build-events","duration":93,"timestamp":416861910104,"id":15,"parentId":1,"tags":{},"startTime":1778788347735,"traceId":"a47bdb9bd1bc6ec6"},{"name":"run-typescript","duration":8837699,"timestamp":416871033411,"id":16,"parentId":1,"tags":{},"startTime":1778788356858,"traceId":"a47bdb9bd1bc6ec6"},{"name":"generate-required-server-files","duration":2498,"timestamp":416879872058,"id":18,"parentId":1,"tags":{},"startTime":1778788365697,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-static-error-page","duration":16241,"timestamp":416879947238,"id":20,"parentId":19,"tags":{},"startTime":1778788365772,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":341637,"timestamp":416879966380,"id":62,"parentId":22,"tags":{},"startTime":1778788365791,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":358590,"timestamp":416879949565,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778788365774,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":418199,"timestamp":416879966464,"id":63,"parentId":25,"tags":{},"startTime":1778788365791,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":430819,"timestamp":416879953919,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778788365779,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":424674,"timestamp":416879966644,"id":65,"parentId":27,"tags":{},"startTime":1778788365791,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":437182,"timestamp":416879954196,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778788365779,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":452108,"timestamp":416879966679,"id":66,"parentId":28,"tags":{},"startTime":1778788365791,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":464550,"timestamp":416879954298,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778788365779,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":463803,"timestamp":416879966715,"id":67,"parentId":29,"tags":{},"startTime":1778788365791,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":476204,"timestamp":416879954386,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778788365779,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":464130,"timestamp":416879966604,"id":64,"parentId":26,"tags":{},"startTime":1778788365791,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":476661,"timestamp":416879954099,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778788365779,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":468504,"timestamp":416879966749,"id":68,"parentId":30,"tags":{},"startTime":1778788365791,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":480729,"timestamp":416879954594,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778788365779,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":468712,"timestamp":416879966787,"id":69,"parentId":32,"tags":{},"startTime":1778788365791,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":480603,"timestamp":416879954919,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778788365780,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":471044,"timestamp":416879966890,"id":70,"parentId":33,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":482951,"timestamp":416879955031,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778788365780,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":473264,"timestamp":416879966936,"id":71,"parentId":34,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":485133,"timestamp":416879955117,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778788365780,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":476391,"timestamp":416879966021,"id":61,"parentId":21,"tags":{},"startTime":1778788365791,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":494145,"timestamp":416879948309,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778788365773,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":475710,"timestamp":416879966953,"id":72,"parentId":35,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":487493,"timestamp":416879955196,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778788365780,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":477778,"timestamp":416879967025,"id":73,"parentId":36,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":489294,"timestamp":416879955554,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778788365780,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":479101,"timestamp":416879967064,"id":75,"parentId":38,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":490430,"timestamp":416879955772,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778788365780,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":481210,"timestamp":416879967070,"id":76,"parentId":39,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":492490,"timestamp":416879955830,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":483055,"timestamp":416879967076,"id":77,"parentId":40,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":494275,"timestamp":416879955892,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":485488,"timestamp":416879967082,"id":78,"parentId":41,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":496669,"timestamp":416879955954,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":487160,"timestamp":416879967088,"id":79,"parentId":42,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":498250,"timestamp":416879956032,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":487941,"timestamp":416879967093,"id":80,"parentId":43,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":498971,"timestamp":416879956107,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":491351,"timestamp":416879967104,"id":82,"parentId":45,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":502268,"timestamp":416879956232,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":491556,"timestamp":416879967099,"id":81,"parentId":44,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":502508,"timestamp":416879956172,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":496637,"timestamp":416879967114,"id":84,"parentId":47,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":507431,"timestamp":416879956376,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":500721,"timestamp":416879967109,"id":83,"parentId":46,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":511571,"timestamp":416879956312,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":502031,"timestamp":416879967119,"id":85,"parentId":48,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":512752,"timestamp":416879956458,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":502608,"timestamp":416879970350,"id":87,"parentId":31,"tags":{},"startTime":1778788365795,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":518332,"timestamp":416879954687,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778788365779,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":503649,"timestamp":416879969578,"id":86,"parentId":24,"tags":{},"startTime":1778788365794,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":522330,"timestamp":416879950936,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778788365776,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":541708,"timestamp":416879967055,"id":74,"parentId":37,"tags":{},"startTime":1778788365792,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":553151,"timestamp":416879955677,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778788365780,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":520322,"timestamp":416879995931,"id":90,"parentId":50,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":559399,"timestamp":416879956928,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778788365782,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":521903,"timestamp":416879995920,"id":89,"parentId":49,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":561072,"timestamp":416879956801,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778788365781,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":524848,"timestamp":416879995937,"id":91,"parentId":51,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":563751,"timestamp":416879957077,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778788365782,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":527555,"timestamp":416879995880,"id":88,"parentId":23,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":572752,"timestamp":416879950729,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778788365775,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":529143,"timestamp":416879995945,"id":92,"parentId":52,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":567874,"timestamp":416879957255,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778788365782,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":532362,"timestamp":416879995953,"id":93,"parentId":53,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":570947,"timestamp":416879957431,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778788365782,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":536118,"timestamp":416879995967,"id":95,"parentId":56,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":570845,"timestamp":416879961292,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778788365786,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":536522,"timestamp":416879995959,"id":94,"parentId":55,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":571481,"timestamp":416879961093,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778788365786,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":538487,"timestamp":416879995976,"id":96,"parentId":58,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":574093,"timestamp":416879962989,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778788365788,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":543769,"timestamp":416879996035,"id":99,"parentId":54,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":580240,"timestamp":416879959604,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778788365784,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":546581,"timestamp":416879995981,"id":97,"parentId":59,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":579463,"timestamp":416879963146,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778788365788,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":549584,"timestamp":416879996042,"id":100,"parentId":57,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":584249,"timestamp":416879961418,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778788365786,"traceId":"a47bdb9bd1bc6ec6"},{"name":"is-page-static","duration":550047,"timestamp":416879995991,"id":98,"parentId":60,"tags":{},"startTime":1778788365821,"traceId":"a47bdb9bd1bc6ec6"},{"name":"check-page","duration":582831,"timestamp":416879963247,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778788365788,"traceId":"a47bdb9bd1bc6ec6"},{"name":"static-check","duration":599692,"timestamp":416879946421,"id":19,"parentId":1,"tags":{},"startTime":1778788365771,"traceId":"a47bdb9bd1bc6ec6"},{"name":"write-routes-manifest","duration":531,"timestamp":416880552347,"id":102,"parentId":1,"tags":{},"startTime":1778788366377,"traceId":"a47bdb9bd1bc6ec6"},{"name":"load-dotenv","duration":60,"timestamp":416880565654,"id":105,"parentId":104,"tags":{},"startTime":1778788366390,"traceId":"a47bdb9bd1bc6ec6"},{"name":"run-export-path-map","duration":734,"timestamp":416880568454,"id":106,"parentId":104,"tags":{},"startTime":1778788366393,"traceId":"a47bdb9bd1bc6ec6"},{"name":"next-export","duration":600302,"timestamp":416880564332,"id":104,"parentId":1,"tags":{},"startTime":1778788366389,"traceId":"a47bdb9bd1bc6ec6"},{"name":"move-exported-app-not-found-","duration":752,"timestamp":416881168700,"id":107,"parentId":103,"tags":{},"startTime":1778788366993,"traceId":"a47bdb9bd1bc6ec6"},{"name":"move-exported-app-global-error-","duration":928,"timestamp":416881169600,"id":108,"parentId":103,"tags":{},"startTime":1778788366994,"traceId":"a47bdb9bd1bc6ec6"}]
|
|
2
|
-
[{"name":"static-generation","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":336,"timestamp":427232134247,"id":4,"parentId":1,"tags":{},"startTime":1778798717959,"traceId":"3a8a85d59c9f3a28"},{"name":"load-custom-routes","duration":514,"timestamp":427232134735,"id":5,"parentId":1,"tags":{},"startTime":1778798717959,"traceId":"3a8a85d59c9f3a28"},{"name":"create-dist-dir","duration":4125,"timestamp":427232135296,"id":6,"parentId":1,"tags":{},"startTime":1778798717960,"traceId":"3a8a85d59c9f3a28"},{"name":"clean","duration":621,"timestamp":427232140289,"id":7,"parentId":1,"tags":{},"startTime":1778798717965,"traceId":"3a8a85d59c9f3a28"},{"name":"discover-routes","duration":9078,"timestamp":427232231130,"id":8,"parentId":1,"tags":{},"startTime":1778798718056,"traceId":"3a8a85d59c9f3a28"},{"name":"create-root-mapping","duration":143,"timestamp":427232240294,"id":9,"parentId":1,"tags":{},"startTime":1778798718065,"traceId":"3a8a85d59c9f3a28"},{"name":"generate-route-types","duration":33831,"timestamp":427232242806,"id":10,"parentId":1,"tags":{},"startTime":1778798718068,"traceId":"3a8a85d59c9f3a28"},{"name":"public-dir-conflict-check","duration":103,"timestamp":427232276818,"id":11,"parentId":1,"tags":{},"startTime":1778798718102,"traceId":"3a8a85d59c9f3a28"},{"name":"generate-routes-manifest","duration":4537,"timestamp":427232277100,"id":12,"parentId":1,"tags":{},"startTime":1778798718102,"traceId":"3a8a85d59c9f3a28"},{"name":"run-turbopack","duration":9260945,"timestamp":427232286971,"id":14,"parentId":1,"tags":{},"startTime":1778798718112,"traceId":"3a8a85d59c9f3a28"},{"name":"turbopack-build-events","duration":77,"timestamp":427232628871,"id":15,"parentId":1,"tags":{},"startTime":1778798718454,"traceId":"3a8a85d59c9f3a28"},{"name":"run-typescript","duration":8762421,"timestamp":427241554793,"id":16,"parentId":1,"tags":{},"startTime":1778798727379,"traceId":"3a8a85d59c9f3a28"},{"name":"generate-required-server-files","duration":3069,"timestamp":427250318252,"id":18,"parentId":1,"tags":{},"startTime":1778798736143,"traceId":"3a8a85d59c9f3a28"},{"name":"check-static-error-page","duration":16186,"timestamp":427250392117,"id":20,"parentId":19,"tags":{},"startTime":1778798736217,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":313984,"timestamp":427250412086,"id":62,"parentId":22,"tags":{},"startTime":1778798736237,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":331900,"timestamp":427250394295,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778798736219,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":399153,"timestamp":427250412423,"id":64,"parentId":26,"tags":{},"startTime":1778798736237,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":413324,"timestamp":427250398334,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778798736223,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":409127,"timestamp":427250411600,"id":61,"parentId":21,"tags":{},"startTime":1778798736236,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":427652,"timestamp":427250393138,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778798736218,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":417851,"timestamp":427250412489,"id":65,"parentId":27,"tags":{},"startTime":1778798736237,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":431983,"timestamp":427250398419,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778798736223,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":434647,"timestamp":427250412601,"id":67,"parentId":29,"tags":{},"startTime":1778798736237,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":448737,"timestamp":427250398585,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778798736223,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":438426,"timestamp":427250412652,"id":68,"parentId":30,"tags":{},"startTime":1778798736237,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":452374,"timestamp":427250398783,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778798736223,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":443125,"timestamp":427250412706,"id":69,"parentId":32,"tags":{},"startTime":1778798736237,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":456799,"timestamp":427250399099,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778798736224,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":448822,"timestamp":427250412866,"id":70,"parentId":33,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":462564,"timestamp":427250399186,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778798736224,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":458090,"timestamp":427250412545,"id":66,"parentId":28,"tags":{},"startTime":1778798736237,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":472210,"timestamp":427250398500,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778798736223,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":457931,"timestamp":427250412942,"id":71,"parentId":34,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":471642,"timestamp":427250399258,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778798736224,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":465374,"timestamp":427250412968,"id":72,"parentId":35,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":479078,"timestamp":427250399339,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778798736224,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":466167,"timestamp":427250413086,"id":73,"parentId":36,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":479626,"timestamp":427250399676,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778798736224,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":472969,"timestamp":427250413130,"id":75,"parentId":38,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":486276,"timestamp":427250399886,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778798736225,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":474394,"timestamp":427250413138,"id":76,"parentId":39,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":487630,"timestamp":427250399948,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778798736225,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":478391,"timestamp":427250413148,"id":77,"parentId":40,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":491004,"timestamp":427250400586,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778798736225,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":478610,"timestamp":427250413116,"id":74,"parentId":37,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":491947,"timestamp":427250399802,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778798736224,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":482362,"timestamp":427250413157,"id":78,"parentId":41,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":494889,"timestamp":427250400692,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778798736225,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":485886,"timestamp":427250413166,"id":79,"parentId":42,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":498346,"timestamp":427250400765,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778798736225,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":486103,"timestamp":427250413174,"id":80,"parentId":43,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":498046,"timestamp":427250401260,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778798736226,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":489130,"timestamp":427250413183,"id":81,"parentId":44,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":500986,"timestamp":427250401373,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778798736226,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":489459,"timestamp":427250413192,"id":82,"parentId":45,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":501252,"timestamp":427250401436,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778798736226,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":491769,"timestamp":427250413200,"id":83,"parentId":46,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":503327,"timestamp":427250401710,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778798736226,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":493415,"timestamp":427250412208,"id":63,"parentId":25,"tags":{},"startTime":1778798736237,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":507473,"timestamp":427250398187,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778798736223,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":493358,"timestamp":427250413209,"id":84,"parentId":47,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":504808,"timestamp":427250401795,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778798736226,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":493401,"timestamp":427250417321,"id":87,"parentId":31,"tags":{},"startTime":1778798736242,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":511898,"timestamp":427250398870,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778798736224,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":494624,"timestamp":427250416263,"id":86,"parentId":24,"tags":{},"startTime":1778798736241,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":516242,"timestamp":427250394668,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778798736219,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":502837,"timestamp":427250413221,"id":85,"parentId":48,"tags":{},"startTime":1778798736238,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":514200,"timestamp":427250401918,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778798736227,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":493937,"timestamp":427250428379,"id":90,"parentId":50,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":519970,"timestamp":427250402400,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778798736227,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":499824,"timestamp":427250428393,"id":91,"parentId":51,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":525744,"timestamp":427250402535,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778798736227,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":506696,"timestamp":427250428405,"id":92,"parentId":52,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":532440,"timestamp":427250402723,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778798736227,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":511994,"timestamp":427250428419,"id":93,"parentId":53,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":537572,"timestamp":427250402898,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778798736228,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":524543,"timestamp":427250428433,"id":94,"parentId":55,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":549010,"timestamp":427250404053,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778798736229,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":536612,"timestamp":427250428442,"id":95,"parentId":56,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":560882,"timestamp":427250404254,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778798736229,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":545681,"timestamp":427250428460,"id":96,"parentId":58,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":566536,"timestamp":427250407681,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778798736232,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":555625,"timestamp":427250428473,"id":97,"parentId":59,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":576340,"timestamp":427250407829,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778798736233,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":559649,"timestamp":427250428313,"id":88,"parentId":23,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":593559,"timestamp":427250394488,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778798736219,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":567909,"timestamp":427250428362,"id":89,"parentId":49,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":594059,"timestamp":427250402274,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778798736227,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":567932,"timestamp":427250428484,"id":98,"parentId":60,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":588454,"timestamp":427250407982,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778798736233,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":571377,"timestamp":427250428505,"id":99,"parentId":57,"tags":{},"startTime":1778798736253,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":592765,"timestamp":427250407175,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778798736232,"traceId":"3a8a85d59c9f3a28"},{"name":"is-page-static","duration":562299,"timestamp":427250439956,"id":100,"parentId":54,"tags":{},"startTime":1778798736265,"traceId":"3a8a85d59c9f3a28"},{"name":"check-page","duration":599176,"timestamp":427250403126,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778798736228,"traceId":"3a8a85d59c9f3a28"},{"name":"static-check","duration":611088,"timestamp":427250391261,"id":19,"parentId":1,"tags":{},"startTime":1778798736216,"traceId":"3a8a85d59c9f3a28"},{"name":"write-routes-manifest","duration":400,"timestamp":427251012129,"id":102,"parentId":1,"tags":{},"startTime":1778798736837,"traceId":"3a8a85d59c9f3a28"},{"name":"load-dotenv","duration":57,"timestamp":427251024790,"id":105,"parentId":104,"tags":{},"startTime":1778798736849,"traceId":"3a8a85d59c9f3a28"},{"name":"run-export-path-map","duration":693,"timestamp":427251029408,"id":106,"parentId":104,"tags":{},"startTime":1778798736854,"traceId":"3a8a85d59c9f3a28"},{"name":"next-export","duration":698019,"timestamp":427251023557,"id":104,"parentId":1,"tags":{},"startTime":1778798736848,"traceId":"3a8a85d59c9f3a28"},{"name":"move-exported-app-not-found-","duration":697,"timestamp":427251725586,"id":107,"parentId":103,"tags":{},"startTime":1778798737550,"traceId":"3a8a85d59c9f3a28"},{"name":"move-exported-app-global-error-","duration":550,"timestamp":427251726389,"id":108,"parentId":103,"tags":{},"startTime":1778798737551,"traceId":"3a8a85d59c9f3a28"}]
|
|
2
|
+
[{"name":"static-generation","duration":713561,"timestamp":427251017820,"id":103,"parentId":1,"tags":{},"startTime":1778798736843,"traceId":"3a8a85d59c9f3a28"},{"name":"write-routes-manifest","duration":453,"timestamp":427251731668,"id":109,"parentId":1,"tags":{},"startTime":1778798737556,"traceId":"3a8a85d59c9f3a28"},{"name":"print-tree-view","duration":4624,"timestamp":427251739059,"id":110,"parentId":1,"tags":{},"startTime":1778798737564,"traceId":"3a8a85d59c9f3a28"},{"name":"write-route-bundle-stats","duration":20055,"timestamp":427251743736,"id":111,"parentId":1,"tags":{},"startTime":1778798737568,"traceId":"3a8a85d59c9f3a28"},{"name":"telemetry-flush","duration":56202,"timestamp":427251763853,"id":112,"parentId":1,"tags":{},"startTime":1778798737589,"traceId":"3a8a85d59c9f3a28"},{"name":"next-build","duration":19735402,"timestamp":427232084709,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778798717909,"traceId":"3a8a85d59c9f3a28"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":9260945,"timestamp":427232286971,"id":14,"parentId":1,"tags":{},"startTime":1778798718112,"traceId":"3a8a85d59c9f3a28"},{"name":"turbopack-build-events","duration":77,"timestamp":427232628871,"id":15,"parentId":1,"tags":{},"startTime":1778798718454,"traceId":"3a8a85d59c9f3a28"},{"name":"run-typescript","duration":8762421,"timestamp":427241554793,"id":16,"parentId":1,"tags":{},"startTime":1778798727379,"traceId":"3a8a85d59c9f3a28"},{"name":"static-check","duration":611088,"timestamp":427250391261,"id":19,"parentId":1,"tags":{},"startTime":1778798736216,"traceId":"3a8a85d59c9f3a28"},{"name":"static-generation","duration":713561,"timestamp":427251017820,"id":103,"parentId":1,"tags":{},"startTime":1778798736843,"traceId":"3a8a85d59c9f3a28"},{"name":"telemetry-flush","duration":56202,"timestamp":427251763853,"id":112,"parentId":1,"tags":{},"startTime":1778798737589,"traceId":"3a8a85d59c9f3a28"},{"name":"next-build","duration":19735402,"timestamp":427232084709,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778798717909,"traceId":"3a8a85d59c9f3a28"}]
|
|
@@ -129,7 +129,7 @@ export function ChatPopover({ alias, onClose }: ChatPopoverProps) {
|
|
|
129
129
|
|
|
130
130
|
return (
|
|
131
131
|
<div
|
|
132
|
-
className="fixed z-50 flex flex-col overflow-hidden rounded-xl border border-[
|
|
132
|
+
className="fixed z-50 flex flex-col overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--bg)] shadow-2xl shadow-black/60 anet-fade-in"
|
|
133
133
|
style={{ left: pos.x, top: pos.y, width: size.w, height: size.h }}
|
|
134
134
|
role="dialog"
|
|
135
135
|
aria-label={`Chat with ${alias}`}
|
|
@@ -140,13 +140,13 @@ export function ChatPopover({ alias, onClose }: ChatPopoverProps) {
|
|
|
140
140
|
onPointerMove={onPointerMove}
|
|
141
141
|
onPointerUp={onPointerUp}
|
|
142
142
|
onPointerCancel={onPointerUp}
|
|
143
|
-
className="flex items-center justify-between px-3 py-2.5 border-b border-[
|
|
143
|
+
className="flex items-center justify-between px-3 py-2.5 border-b border-[var(--border)] bg-[var(--bg-secondary)] rounded-t-xl cursor-grab active:cursor-grabbing select-none touch-none"
|
|
144
144
|
>
|
|
145
145
|
<div className="flex items-center gap-2.5 min-w-0">
|
|
146
146
|
<AliasAvatar alias={alias} size={28} />
|
|
147
147
|
<div className="min-w-0">
|
|
148
|
-
<div className="text-sm font-semibold text-
|
|
149
|
-
<div className="text-[10px] text-
|
|
148
|
+
<div className="text-sm font-semibold text-[var(--fg)] truncate">{alias}</div>
|
|
149
|
+
<div className="text-[10px] text-[var(--fg-muted)]">Drag to move · Esc to close</div>
|
|
150
150
|
</div>
|
|
151
151
|
</div>
|
|
152
152
|
<button
|
|
@@ -155,7 +155,7 @@ export function ChatPopover({ alias, onClose }: ChatPopoverProps) {
|
|
|
155
155
|
// Chromium retargets the click to the header — the button never fires.
|
|
156
156
|
onPointerDown={(e) => e.stopPropagation()}
|
|
157
157
|
aria-label="Close chat"
|
|
158
|
-
className="text-
|
|
158
|
+
className="text-[var(--fg-muted)] hover:text-[var(--fg)] p-1.5 rounded-lg hover:bg-[var(--bg-elevated)] shrink-0"
|
|
159
159
|
>
|
|
160
160
|
<svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={2}>
|
|
161
161
|
<path strokeLinecap="round" strokeLinejoin="round" d="M6 18L18 6M6 6l12 12" />
|
|
@@ -178,7 +178,7 @@ export function ChatPopover({ alias, onClose }: ChatPopoverProps) {
|
|
|
178
178
|
className="absolute bottom-0 right-0 w-5 h-5 cursor-nwse-resize touch-none z-10"
|
|
179
179
|
style={{ touchAction: 'none' }}
|
|
180
180
|
>
|
|
181
|
-
<svg className="absolute bottom-0.5 right-0.5 w-3 h-3 text-
|
|
181
|
+
<svg className="absolute bottom-0.5 right-0.5 w-3 h-3 text-[var(--fg-dim)]" viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" aria-hidden>
|
|
182
182
|
<path d="M11 5L5 11M11 9L9 11" />
|
|
183
183
|
</svg>
|
|
184
184
|
</div>
|
|
@@ -29,19 +29,19 @@ function StatusBar({ status }: { status: string }) {
|
|
|
29
29
|
{STATUS_STEPS.map((s, i) => (
|
|
30
30
|
<div key={s} className="flex items-center gap-1">
|
|
31
31
|
<div className={`w-2 h-2 rounded-full transition-all duration-700 ${
|
|
32
|
-
isFailed ? (i === 0 ? 'bg-red-400' : 'bg-
|
|
33
|
-
: i <= idx ? (STATUS_COLORS[s] || 'bg-gray-600') : 'bg-
|
|
32
|
+
isFailed ? (i === 0 ? 'bg-red-400' : 'bg-[var(--border)]')
|
|
33
|
+
: i <= idx ? (STATUS_COLORS[s] || 'bg-gray-600') : 'bg-[var(--border)]'
|
|
34
34
|
}`} />
|
|
35
35
|
{i < STATUS_STEPS.length - 1 && (
|
|
36
36
|
<div className={`w-4 h-px transition-colors duration-700 ${
|
|
37
|
-
isFailed ? 'bg-red-800' : i < idx ? 'bg-gray-500' : 'bg-
|
|
37
|
+
isFailed ? 'bg-red-800' : i < idx ? 'bg-gray-500' : 'bg-[var(--border)]'
|
|
38
38
|
}`} />
|
|
39
39
|
)}
|
|
40
40
|
</div>
|
|
41
41
|
))}
|
|
42
42
|
<span className={`text-[10px] ml-1.5 font-medium ${
|
|
43
43
|
isFailed ? 'text-red-400' : status === 'replied' ? 'text-purple-400'
|
|
44
|
-
: status === 'running' ? 'text-green-400' : 'text-
|
|
44
|
+
: status === 'running' ? 'text-green-400' : 'text-[var(--fg-muted)]'
|
|
45
45
|
}`}>{status}</span>
|
|
46
46
|
{(status === 'running' || status === 'delivered') && (
|
|
47
47
|
<span className="ml-1">
|
|
@@ -62,34 +62,34 @@ import remarkGfm from 'remark-gfm';
|
|
|
62
62
|
import { useSSE } from '../lib/useSSE';
|
|
63
63
|
|
|
64
64
|
function MarkdownContent({ text }: { text: string }) {
|
|
65
|
-
if (!text) return <span className="text-
|
|
65
|
+
if (!text) return <span className="text-[var(--fg-dim)] italic">No content</span>;
|
|
66
66
|
return (
|
|
67
67
|
<div className="break-words leading-relaxed">
|
|
68
68
|
<ReactMarkdown
|
|
69
69
|
remarkPlugins={[remarkGfm]}
|
|
70
70
|
components={{
|
|
71
|
-
h1: ({ children }) => <h1 className="text-base font-semibold text-
|
|
72
|
-
h2: ({ children }) => <h2 className="text-sm font-semibold text-
|
|
71
|
+
h1: ({ children }) => <h1 className="text-base font-semibold text-[var(--fg)] mt-2 mb-1">{children}</h1>,
|
|
72
|
+
h2: ({ children }) => <h2 className="text-sm font-semibold text-[var(--fg)] mt-2 mb-1">{children}</h2>,
|
|
73
73
|
h3: ({ children }) => <h3 className="text-sm font-semibold text-cyan-300 mt-1.5 mb-0.5">{children}</h3>,
|
|
74
74
|
p: ({ children }) => <p className="my-1">{children}</p>,
|
|
75
|
-
strong: ({ children }) => <strong className="text-
|
|
76
|
-
em: ({ children }) => <em className="italic text-
|
|
75
|
+
strong: ({ children }) => <strong className="text-[var(--fg)] font-semibold">{children}</strong>,
|
|
76
|
+
em: ({ children }) => <em className="italic text-[var(--fg-muted)]">{children}</em>,
|
|
77
77
|
ul: ({ children }) => <ul className="list-disc pl-5 my-1 space-y-0.5">{children}</ul>,
|
|
78
78
|
ol: ({ children }) => <ol className="list-decimal pl-5 my-1 space-y-0.5">{children}</ol>,
|
|
79
79
|
li: ({ children }) => <li>{children}</li>,
|
|
80
80
|
a: ({ href, children }) => <a href={href} target="_blank" rel="noreferrer" className="text-cyan-300 underline">{children}</a>,
|
|
81
|
-
blockquote: ({ children }) => <blockquote className="border-l-2 border-cyan-500/30 pl-3 my-1 text-
|
|
82
|
-
hr: () => <hr className="border-t border-[
|
|
81
|
+
blockquote: ({ children }) => <blockquote className="border-l-2 border-cyan-500/30 pl-3 my-1 text-[var(--fg-muted)] italic">{children}</blockquote>,
|
|
82
|
+
hr: () => <hr className="border-t border-[var(--border)] my-2" />,
|
|
83
83
|
code: ({ className, children }) => {
|
|
84
84
|
const inline = !className?.startsWith('language-');
|
|
85
85
|
if (inline) {
|
|
86
|
-
return <code className="bg-[
|
|
86
|
+
return <code className="bg-[var(--code-bg)] rounded px-1.5 py-0.5 text-cyan-300 text-[11px] border border-[var(--border)]">{children}</code>;
|
|
87
87
|
}
|
|
88
88
|
const lang = className?.replace(/^language-/, '') || '';
|
|
89
89
|
return (
|
|
90
|
-
<div className="my-2 rounded-lg overflow-hidden border border-[
|
|
91
|
-
{lang && <div className="bg-[
|
|
92
|
-
<pre className="bg-[
|
|
90
|
+
<div className="my-2 rounded-lg overflow-hidden border border-[var(--border)]">
|
|
91
|
+
{lang && <div className="bg-[var(--code-bg)] px-3 py-1 text-[10px] text-[var(--fg-muted)] border-b border-[var(--border)]">{lang}</div>}
|
|
92
|
+
<pre className="bg-[var(--code-bg)] px-3 py-2 text-[11px] text-green-300 overflow-x-auto"><code>{children}</code></pre>
|
|
93
93
|
</div>
|
|
94
94
|
);
|
|
95
95
|
},
|
|
@@ -98,11 +98,11 @@ function MarkdownContent({ text }: { text: string }) {
|
|
|
98
98
|
<table className="w-full text-[12px] border-collapse">{children}</table>
|
|
99
99
|
</div>
|
|
100
100
|
),
|
|
101
|
-
thead: ({ children }) => <thead className="bg-[
|
|
101
|
+
thead: ({ children }) => <thead className="bg-[var(--code-bg)]">{children}</thead>,
|
|
102
102
|
tbody: ({ children }) => <tbody>{children}</tbody>,
|
|
103
|
-
tr: ({ children }) => <tr className="border-b border-[
|
|
104
|
-
th: ({ children }) => <th className="text-left text-cyan-300 font-semibold px-2 py-1 border border-[
|
|
105
|
-
td: ({ children }) => <td className="px-2 py-1 border border-[
|
|
103
|
+
tr: ({ children }) => <tr className="border-b border-[var(--border)]">{children}</tr>,
|
|
104
|
+
th: ({ children }) => <th className="text-left text-cyan-300 font-semibold px-2 py-1 border border-[var(--border)]">{children}</th>,
|
|
105
|
+
td: ({ children }) => <td className="px-2 py-1 border border-[var(--border)] align-top">{children}</td>,
|
|
106
106
|
}}
|
|
107
107
|
>
|
|
108
108
|
{text}
|
|
@@ -348,8 +348,8 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes }: TaskCh
|
|
|
348
348
|
{historyLoaded && messages.length === 0 && (
|
|
349
349
|
<div className="text-center py-12">
|
|
350
350
|
<div className="text-3xl mb-3">💬</div>
|
|
351
|
-
<div className="text-
|
|
352
|
-
<div className="text-
|
|
351
|
+
<div className="text-[var(--fg-muted)] text-sm">Start a conversation</div>
|
|
352
|
+
<div className="text-[var(--fg-dim)] text-xs mt-1">Send a task to {alias}</div>
|
|
353
353
|
</div>
|
|
354
354
|
)}
|
|
355
355
|
|
|
@@ -368,16 +368,16 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes }: TaskCh
|
|
|
368
368
|
<div className="max-w-[85%] bg-cyan-500/8 border border-cyan-500/15 rounded-2xl rounded-br-md px-4 py-2.5 shadow-sm">
|
|
369
369
|
<div className="flex items-center gap-2 mb-1">
|
|
370
370
|
<span className={`text-[10px] font-medium ${fromUser ? 'text-cyan-400' : 'text-purple-300'}`}>{senderLabel}</span>
|
|
371
|
-
{!fromUser && <span className="text-[9px] text-
|
|
371
|
+
{!fromUser && <span className="text-[9px] text-[var(--fg-dim)]">forwarded to {m.to_name}</span>}
|
|
372
372
|
</div>
|
|
373
|
-
<div className="text-[13px] text-
|
|
373
|
+
<div className="text-[13px] text-[var(--fg)]">
|
|
374
374
|
<MarkdownContent text={m.content} />
|
|
375
375
|
</div>
|
|
376
376
|
<div className="flex items-center justify-between mt-1.5 gap-3">
|
|
377
377
|
<StatusBar status={m.status} />
|
|
378
378
|
<div className="flex items-center gap-2 shrink-0">
|
|
379
379
|
{senderBadge}
|
|
380
|
-
<span className="text-[9px] text-
|
|
380
|
+
<span className="text-[9px] text-[var(--fg-dim)]">{timeAgo(m.created_at)}</span>
|
|
381
381
|
</div>
|
|
382
382
|
</div>
|
|
383
383
|
</div>
|
|
@@ -389,9 +389,9 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes }: TaskCh
|
|
|
389
389
|
<div className="max-w-[85%] bg-green-500/8 border border-green-500/15 rounded-2xl rounded-bl-md px-4 py-2.5 shadow-sm">
|
|
390
390
|
<div className="flex items-center gap-1.5 mb-1.5">
|
|
391
391
|
{m.to_name && <AliasAvatar alias={m.to_name} size={14} />}
|
|
392
|
-
<span className="text-[10px] text-
|
|
392
|
+
<span className="text-[10px] text-[var(--fg)] font-medium">{m.to_name}</span>
|
|
393
393
|
</div>
|
|
394
|
-
<div className="text-[13px] text-
|
|
394
|
+
<div className="text-[13px] text-[var(--fg)]">
|
|
395
395
|
<MarkdownContent text={m.result} />
|
|
396
396
|
</div>
|
|
397
397
|
</div>
|
|
@@ -401,7 +401,7 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes }: TaskCh
|
|
|
401
401
|
{/* Typing indicator when running */}
|
|
402
402
|
{m.status === 'running' && !m.result && (
|
|
403
403
|
<div className="flex justify-start">
|
|
404
|
-
<div className="bg-[
|
|
404
|
+
<div className="bg-[var(--bg-secondary)] border border-[var(--border)] rounded-2xl rounded-bl-md px-4 py-3">
|
|
405
405
|
<div className="flex gap-1">
|
|
406
406
|
<span className="w-2 h-2 rounded-full bg-gray-500 animate-bounce" style={{ animationDelay: '0s' }} />
|
|
407
407
|
<span className="w-2 h-2 rounded-full bg-gray-500 animate-bounce" style={{ animationDelay: '0.15s' }} />
|
|
@@ -417,17 +417,17 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes }: TaskCh
|
|
|
417
417
|
</div>
|
|
418
418
|
|
|
419
419
|
{/* Input area */}
|
|
420
|
-
<div className="border-t border-[
|
|
420
|
+
<div className="border-t border-[var(--border)] bg-[var(--bg-secondary)] px-4 py-3">
|
|
421
421
|
<div className="flex items-end gap-2">
|
|
422
422
|
<div className="flex-1 relative">
|
|
423
423
|
{/* @ mention dropdown */}
|
|
424
424
|
{showMentions && filteredMentions.length > 0 && (
|
|
425
|
-
<div className="absolute bottom-full left-0 right-0 mb-1 bg-[
|
|
425
|
+
<div className="absolute bottom-full left-0 right-0 mb-1 bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg shadow-xl shadow-black/50 overflow-hidden z-10 max-h-48 overflow-y-auto">
|
|
426
426
|
{filteredMentions.map(node => (
|
|
427
427
|
<button key={node} onClick={() => insertMention(node)}
|
|
428
428
|
className="w-full flex items-center gap-2 px-3 py-2 text-xs text-left hover:bg-cyan-500/10 transition-colors">
|
|
429
429
|
<AliasAvatar alias={node} size={16} />
|
|
430
|
-
<span className="text-
|
|
430
|
+
<span className="text-[var(--fg-muted)]">{node}</span>
|
|
431
431
|
</button>
|
|
432
432
|
))}
|
|
433
433
|
</div>
|
|
@@ -439,11 +439,11 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes }: TaskCh
|
|
|
439
439
|
onKeyDown={handleKeyDown}
|
|
440
440
|
placeholder={`Message ${alias}...`}
|
|
441
441
|
rows={1}
|
|
442
|
-
className="w-full bg-[
|
|
442
|
+
className="w-full bg-[var(--bg-secondary)] border border-[var(--border)] rounded-xl px-4 py-2.5 pr-16 text-sm text-[var(--fg)] placeholder-[var(--fg-dim)] focus:border-cyan-500/40 focus:outline-none resize-none transition-colors"
|
|
443
443
|
/>
|
|
444
444
|
<div className="absolute right-2 bottom-1.5 flex items-center gap-1">
|
|
445
445
|
<select value={priority} onChange={e => setPriority(e.target.value)}
|
|
446
|
-
className="bg-transparent text-[9px] text-
|
|
446
|
+
className="bg-transparent text-[9px] text-[var(--fg-dim)] focus:outline-none cursor-pointer">
|
|
447
447
|
<option value="normal">N</option>
|
|
448
448
|
<option value="high">H</option>
|
|
449
449
|
<option value="low">L</option>
|
|
@@ -451,7 +451,7 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes }: TaskCh
|
|
|
451
451
|
</div>
|
|
452
452
|
</div>
|
|
453
453
|
<button onClick={send} disabled={sending || !input.trim()}
|
|
454
|
-
className="p-2.5 bg-cyan-600 hover:bg-cyan-500 disabled:bg-
|
|
454
|
+
className="p-2.5 bg-cyan-600 hover:bg-cyan-500 disabled:bg-[var(--border)] disabled:text-[var(--fg-dim)] text-[var(--fg)] rounded-xl transition-all shrink-0 active:scale-95">
|
|
455
455
|
{sending ? (
|
|
456
456
|
<div className="w-5 h-5 border-2 border-white/30 border-t-white rounded-full animate-spin" />
|
|
457
457
|
) : (
|
|
@@ -461,7 +461,7 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes }: TaskCh
|
|
|
461
461
|
)}
|
|
462
462
|
</button>
|
|
463
463
|
</div>
|
|
464
|
-
<div className="flex justify-between text-[9px] text-
|
|
464
|
+
<div className="flex justify-between text-[9px] text-[var(--fg-dim)] mt-1.5">
|
|
465
465
|
<span>{input.includes('@') ? `Sending to: ${targetAlias}` : `Type @ to mention another node`}</span>
|
|
466
466
|
<span>Enter to send · Shift+Enter for newline</span>
|
|
467
467
|
</div>
|
|
@@ -476,17 +476,17 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes }: TaskCh
|
|
|
476
476
|
return (
|
|
477
477
|
<>
|
|
478
478
|
<div className="fixed inset-0 bg-black/30 z-40 lg:hidden anet-fade-in" onClick={onClose} />
|
|
479
|
-
<div className="fixed top-0 right-0 h-full w-full lg:w-[500px] bg-[
|
|
479
|
+
<div className="fixed top-0 right-0 h-full w-full lg:w-[500px] bg-[var(--bg)] border-l border-[var(--border)] z-50 flex flex-col shadow-2xl shadow-black/60 animate-slide-in">
|
|
480
480
|
{/* Header */}
|
|
481
|
-
<div className="flex items-center justify-between px-4 py-3 border-b border-[
|
|
481
|
+
<div className="flex items-center justify-between px-4 py-3 border-b border-[var(--border)] bg-[var(--bg-secondary)]">
|
|
482
482
|
<div className="flex items-center gap-3">
|
|
483
483
|
<AliasAvatar alias={alias} size={32} />
|
|
484
484
|
<div>
|
|
485
|
-
<div className="text-sm font-semibold text-
|
|
486
|
-
<div className="text-[10px] text-
|
|
485
|
+
<div className="text-sm font-semibold text-[var(--fg)]">{alias}</div>
|
|
486
|
+
<div className="text-[10px] text-[var(--fg-muted)]">{pollingIds.size > 0 ? 'Processing...' : 'Ready'}</div>
|
|
487
487
|
</div>
|
|
488
488
|
</div>
|
|
489
|
-
<button onClick={onClose} className="text-
|
|
489
|
+
<button onClick={onClose} className="text-[var(--fg-muted)] hover:text-[var(--fg)] p-1.5 rounded-lg hover:bg-[var(--bg-elevated)]">
|
|
490
490
|
<svg className="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={2}>
|
|
491
491
|
<path strokeLinecap="round" strokeLinejoin="round" d="M6 18L18 6M6 6l12 12" />
|
|
492
492
|
</svg>
|
|
@@ -16,6 +16,9 @@ interface MessageFlow {
|
|
|
16
16
|
interface TopoGraphProps {
|
|
17
17
|
sessions: Session[];
|
|
18
18
|
sseSessions: Record<string, number>;
|
|
19
|
+
// #84: a node.renamed event from the Overview's SSE listener. When the
|
|
20
|
+
// currently open chat popover targets `from`, it follows the rename to `to`.
|
|
21
|
+
renameSignal?: { from: string; to: string; ts: number } | null;
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
interface Point {
|
|
@@ -284,7 +287,7 @@ function buildFlowLinks(messages: MessageFlow[], positions: Record<string, Point
|
|
|
284
287
|
return [...links.values()].slice(0, 18);
|
|
285
288
|
}
|
|
286
289
|
|
|
287
|
-
export function TopoGraph({ sessions, sseSessions }: TopoGraphProps) {
|
|
290
|
+
export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProps) {
|
|
288
291
|
const theme = useTheme();
|
|
289
292
|
const isLight = theme === 'light';
|
|
290
293
|
const pal = isLight ? LIGHT_PALETTE : DARK_PALETTE;
|
|
@@ -486,6 +489,16 @@ export function TopoGraph({ sessions, sseSessions }: TopoGraphProps) {
|
|
|
486
489
|
// Issue #100: singleton chat popover. One alias at a time — clicking
|
|
487
490
|
// another node swaps the target and the conversation switches in place.
|
|
488
491
|
const [chatAlias, setChatAlias] = useState<string | null>(null);
|
|
492
|
+
// #84: when a node is renamed while its chat popover is open, follow the
|
|
493
|
+
// rename so the conversation keeps targeting a live alias.
|
|
494
|
+
useEffect(() => {
|
|
495
|
+
if (renameSignal && renameSignal.from === chatAlias) {
|
|
496
|
+
setChatAlias(renameSignal.to);
|
|
497
|
+
}
|
|
498
|
+
// chatAlias intentionally omitted — only react to a new rename signal,
|
|
499
|
+
// not to the user opening/closing the popover.
|
|
500
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
501
|
+
}, [renameSignal]);
|
|
489
502
|
|
|
490
503
|
useEffect(() => { viewRef.current = view; }, [view]);
|
|
491
504
|
|
package/app/page.tsx
CHANGED
|
@@ -42,6 +42,10 @@ export default function Dashboard() {
|
|
|
42
42
|
const [showDispatch, setShowDispatch] = useState(false);
|
|
43
43
|
const [inbox, setInbox] = useState<InboxMessage[]>([]);
|
|
44
44
|
const [agentFilter, setAgentFilter] = useState<'all' | 'working' | 'idle' | 'offline'>('all');
|
|
45
|
+
// #84: last node.renamed event — passed to TopoGraph so an open chat
|
|
46
|
+
// popover follows the rename instead of pointing at a dead alias. `ts`
|
|
47
|
+
// makes the effect re-fire even when the same from/to repeats.
|
|
48
|
+
const [renameSignal, setRenameSignal] = useState<{ from: string; to: string; ts: number } | null>(null);
|
|
45
49
|
const { mutate } = useSWRConfig();
|
|
46
50
|
|
|
47
51
|
// SSE: instant revalidation on CommHub events
|
|
@@ -51,6 +55,19 @@ export default function Dashboard() {
|
|
|
51
55
|
url: '/api/hub/events',
|
|
52
56
|
enabled: sseEnabled,
|
|
53
57
|
onEvent: (event) => {
|
|
58
|
+
// #84 (RFC-010 §3.4): node.renamed — revalidate the session list so the
|
|
59
|
+
// new alias propagates instantly (TopoGraph + node grid re-render, the
|
|
60
|
+
// avatar hue recomputes as a pure fn of alias) instead of waiting for
|
|
61
|
+
// the next 5s poll. The renamed node's history keeps the old alias
|
|
62
|
+
// server-side, so the task list needs no revalidation here.
|
|
63
|
+
if (event.type === 'node.renamed') {
|
|
64
|
+
mutate('/api/hub/status');
|
|
65
|
+
const d = event.data as { old_alias?: string; new_alias?: string } | undefined;
|
|
66
|
+
if (d?.old_alias && d?.new_alias) {
|
|
67
|
+
setRenameSignal({ from: d.old_alias, to: d.new_alias, ts: Date.now() });
|
|
68
|
+
}
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
54
71
|
if (['new_task', 'new_message', 'new_reply', 'node_status_changed', 'broadcast'].includes(event.type)) {
|
|
55
72
|
mutate('/api/hub/status');
|
|
56
73
|
mutate((key: string) => typeof key === 'string' && key.startsWith('/api/hub/tasks'), undefined, { revalidate: true });
|
|
@@ -368,7 +385,7 @@ export default function Dashboard() {
|
|
|
368
385
|
</div>
|
|
369
386
|
)}
|
|
370
387
|
|
|
371
|
-
{showTopo && sessions.length > 0 && <TopoGraph sessions={sessions} sseSessions={sseSessions} />}
|
|
388
|
+
{showTopo && sessions.length > 0 && <TopoGraph sessions={sessions} sseSessions={sseSessions} renameSignal={renameSignal} />}
|
|
372
389
|
|
|
373
390
|
{sessions.length === 0 && !sessError ? (
|
|
374
391
|
<EmptyState
|