@sleep2agi/agent-network-dashboard 0.4.5-preview.72 → 0.4.5-preview.73
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 +7 -7
- 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.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/page.js.nft.json +1 -1
- 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 +1 -1
- package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +1 -1
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +1 -1
- 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/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/app_03g4.pq._.js +3 -0
- package/.next/server/chunks/ssr/app_03g4.pq._.js.map +1 -0
- 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 +1 -1
- 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/{11ji-dl04wx.w.js → 0a6z88g_mmhkp.js} +1 -1
- package/.next/static/chunks/0mmzkcpx2q_7e.js +1 -0
- package/.next/static/chunks/{0tpmgg.n~n.ea.js → 0ww_16_ejf2xz.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/admin/page.tsx +6 -1
- package/package.json +1 -1
- package/.next/server/chunks/ssr/app_0tncr1_._.js +0 -3
- package/.next/server/chunks/ssr/app_0tncr1_._.js.map +0 -1
- package/.next/static/chunks/08scyy1.s_5my.js +0 -1
- /package/.next/static/{TQAq8nPX6WrUTkC8KZF-R → ncWgB-pytiYNIi5uO3l-g}/_buildManifest.js +0 -0
- /package/.next/static/{TQAq8nPX6WrUTkC8KZF-R → ncWgB-pytiYNIi5uO3l-g}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{TQAq8nPX6WrUTkC8KZF-R → ncWgB-pytiYNIi5uO3l-g}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18150,e=>{"use strict";e.s(["formatUptime",0,function(e){let s=Math.floor(e/3600),t=Math.floor(e%3600/60);return s>0?`${s}h ${t}m`:`${t}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){if(!e)return"--";let s=Math.floor((Date.now()-new Date(e.replace(" ","T")+"Z").getTime())/1e3);return 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`}])},69874,e=>{"use strict";var s=e.i(18050);let t=[180,200,220,270,300,330,30,90];e.s(["AliasAvatar",0,function({alias:e,size:a=28,className:r=""}){let l=function(e){let s=0;for(let t=0;t<e.length;t++)s=31*s+e.charCodeAt(t)>>>0;let a=t[s%t.length];return{bg:`hsl(${a} 55% 22%)`,ring:`hsl(${a} 60% 45%)`,text:`hsl(${a} 80% 78%)`}}(e),n=Math.max(9,Math.round(.42*a));return(0,s.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${r}`,style:{width:a,height:a,fontSize:n,backgroundColor:l.bg,borderColor:l.ring,color:l.text},title:e,"aria-hidden":!0,children:e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"})}])},65822,e=>{"use strict";var s=e.i(83599),t=e.i(58963);let a=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function l(e,s){if(!s)return e;let t=e.includes("?")?"&":"?";return`${e}${t}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",a,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:t}=(0,s.default)("/api/hub/health",a,r);return{health:e||null,error:t}},"useLicense",0,function(){let{data:e,error:t}=(0,s.default)("/api/hub/license",a,{refreshInterval:6e4});return{license:e?.ok?e:null,error:t}},"useMessages",0,function(e=100){let{networkId:n}=(0,t.useNetworkId)(),{data:i,error:d,isLoading:o}=(0,s.default)(l(`/api/hub/messages?limit=${e}`,n),a,r);return{messages:i?.messages||[],error:d,isLoading:o}},"useSessions",0,function(){let{networkId:e}=(0,t.useNetworkId)(),{data:n,error:i,isLoading:d}=(0,s.default)(l("/api/hub/status",e),a,r);return{sessions:n?.sessions||[],hint:n?._hint,error:i,isLoading:d}},"useStats",0,function(){let{networkId:e}=(0,t.useNetworkId)(),{data:n,error:i}=(0,s.default)(l("/api/hub/stats",e),a,r);return{stats:n?.ok?n:null,error:i}},"useTasks",0,function(e){let{networkId:n}=(0,t.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:d,error:o,isLoading:c}=(0,s.default)(l(`/api/hub/tasks?${i}`,n),a,r);return{tasks:d?.tasks||[],count:d?.count??0,source:d?.source,error:o,isLoading:c}}])},28490,e=>{"use strict";e.s(["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"]])},23261,e=>{"use strict";var s=e.i(18050),t=e.i(71645),a=e.i(65822),r=e.i(18150),l=e.i(69874),n=e.i(28490);e.s(["default",0,function(){let{sessions:e}=(0,a.useSessions)(),{health:i}=(0,a.useHealth)(),{stats:d}=(0,a.useStats)(),o=i?.sse_sessions||{},c=e=>(e.network_id?o[`${e.network_id}:${e.alias}`]:void 0)??o[e.alias],[x,u]=(0,t.useState)(""),[g,h]=(0,t.useState)(""),[m,b]=(0,t.useState)(""),[p,f]=(0,t.useState)(""),[y,j]=(0,t.useState)(""),[v,N]=(0,t.useState)(""),[w,S]=(0,t.useState)(""),[k,T]=(0,t.useState)(""),$=async()=>{if(x.trim()&&g.trim()){try{let e=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"register",username:x,password:g})}),s=await e.json();b(s.ok?`Created: ${s.user.username} (${s.user.user_id})`:`Failed: ${s.error}`),s.ok&&(u(""),h(""))}catch{b("Failed")}setTimeout(()=>b(""),8e3)}},C=async()=>{if(p.trim()){try{let e=await fetch("/api/hub/broadcast",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:p})}),s=await e.json();j(s.ok?`Sent to ${s.recipients} nodes`:`Failed: ${s.error}`),s.ok&&f("")}catch{j("Failed")}setTimeout(()=>j(""),5e3)}},A=async()=>{if(v&&w.trim()){try{let e=await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:v,task:w})}),s=await e.json();T(s.ok?"Task sent":`Failed: ${s.error}`),s.ok&&S("")}catch{T("Failed")}setTimeout(()=>T(""),5e3)}},_=e.filter(e=>c(e)),U=e.filter(e=>!c(e));return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Admin"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#status",label:"Status"},{href:"#actions",label:"Actions"},{href:"#users",label:"Users"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-6xl space-y-10",children:[(0,s.jsxs)("div",{id:"status",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Status"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Overview"}),(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-3xl font-bold text-green-400 tabular-nums",children:_.length}),(0,s.jsx)("div",{className:"text-xs text-gray-500",children:"Online"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-3xl font-bold text-gray-500 tabular-nums",children:U.length}),(0,s.jsx)("div",{className:"text-xs text-gray-500",children:"Offline"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-3xl font-bold text-cyan-400 tabular-nums",children:i?.sse_connections??"--"}),(0,s.jsxs)("div",{className:"text-xs text-gray-500",children:["SSE Streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-3xl font-bold text-white tabular-nums",children:d?.tasks?.total??"--"}),(0,s.jsx)("div",{className:"text-xs text-gray-500",children:"Total Tasks"})]})]}),d?.tasks?.by_status&&d.tasks.by_status.length>0&&(0,s.jsx)("div",{className:"mt-4 flex flex-wrap gap-2",children:d.tasks.by_status.map(e=>(0,s.jsxs)("span",{className:`text-xs px-2 py-1 rounded border ${n.STATUS_CHIP_CLASS[e.status]||"bg-[#0a0a15] border-[#1a1a2a] text-gray-400"}`,children:[e.status,": ",e.count]},e.status))})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:["Online Sessions ",(0,s.jsxs)("span",{className:"text-gray-600",children:["(",_.length,")"]})]}),(0,s.jsx)("div",{className:"space-y-2 max-h-80 overflow-y-auto",children:0===_.length?(0,s.jsx)("div",{className:"text-xs text-gray-600 text-center py-4",children:"No online sessions"}):_.map(e=>(0,s.jsxs)("div",{className:"flex items-center gap-3 bg-[#0a0a15] rounded-lg px-3 py-2 border border-[#1a1a2a]",children:[(0,s.jsx)(l.AliasAvatar,{alias:e.alias,size:20}),(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("div",{className:"text-sm text-white font-medium truncate",children:e.alias}),(0,s.jsxs)("div",{className:"text-xs text-gray-500 truncate",children:[e.agent||"--"," · ",e.task||"idle"]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,s.jsx)("span",{className:`text-xs px-2 py-0.5 rounded border ${"working"===e.status?"bg-green-900/30 text-green-300 border-green-800/30":"bg-blue-900/30 text-blue-300 border-blue-800/30"}`,children:e.status}),(0,s.jsx)("span",{className:"text-[10px] text-gray-600",children:(0,r.timeAgo)(e.updated_at)})]})]},e.alias))})]})]})]}),(0,s.jsxs)("div",{id:"actions",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Actions"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),0===e.length?(0,s.jsx)("div",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl px-5 py-4 text-sm text-gray-500",children:"Broadcast and Send Task become available after the first agent registers."}):(0,s.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Broadcast"}),(0,s.jsx)("textarea",{value:p,onChange:e=>f(e.target.value),placeholder:"Message to all online nodes...",rows:3,className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none resize-none"}),(0,s.jsxs)("div",{className:"flex justify-between items-center mt-3",children:[(0,s.jsxs)("span",{className:"text-xs text-gray-600",children:[p.length,"/500"]}),(0,s.jsx)("button",{onClick:C,disabled:!p.trim(),className:"px-4 py-2 bg-purple-600 hover:bg-purple-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Broadcast"})]}),y&&(0,s.jsx)("div",{className:`mt-2 text-xs ${y.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:y})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Send Task"}),(0,s.jsxs)("select",{value:v,onChange:e=>N(e.target.value),className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white focus:border-cyan-500/50 focus:outline-none mb-3",children:[(0,s.jsx)("option",{value:"",children:"Select target node..."}),_.map(e=>(0,s.jsxs)("option",{value:e.alias,children:[e.alias," (",e.status,")"]},e.alias)),(0,s.jsx)("optgroup",{label:"Offline",children:U.map(e=>(0,s.jsxs)("option",{value:e.alias,children:[e.alias," (offline)"]},e.alias))})]}),(0,s.jsx)("textarea",{value:w,onChange:e=>S(e.target.value),placeholder:"Task content...",rows:3,className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none resize-none"}),(0,s.jsx)("div",{className:"flex justify-end mt-3",children:(0,s.jsx)("button",{onClick:A,disabled:!v||!w.trim(),className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Send Task"})}),k&&(0,s.jsx)("div",{className:`mt-2 text-xs ${k.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:k})]})]})]}),(0,s.jsxs)("div",{id:"users",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Users"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Register User (V3)"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"text",value:x,onChange:e=>u(e.target.value),placeholder:"Username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>h(e.target.value),placeholder:"Password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:$,disabled:!x.trim()||!g.trim(),className:"w-full px-4 py-2 bg-green-600 hover:bg-green-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Register"})]}),m&&(0,s.jsx)("div",{className:`mt-2 text-xs ${m.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:m})]})})]})]})]})}])}]);
|
|
@@ -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.5-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.5-preview.73"],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":301,"timestamp":226108804784,"id":4,"parentId":1,"tags":{},"startTime":1778597594629,"traceId":"4f19ebe716fee793"},{"name":"load-custom-routes","duration":477,"timestamp":226108805232,"id":5,"parentId":1,"tags":{},"startTime":1778597594630,"traceId":"4f19ebe716fee793"},{"name":"create-dist-dir","duration":367,"timestamp":226108805753,"id":6,"parentId":1,"tags":{},"startTime":1778597594630,"traceId":"4f19ebe716fee793"},{"name":"clean","duration":516,"timestamp":226108807451,"id":7,"parentId":1,"tags":{},"startTime":1778597594632,"traceId":"4f19ebe716fee793"},{"name":"discover-routes","duration":10643,"timestamp":226108915151,"id":8,"parentId":1,"tags":{},"startTime":1778597594740,"traceId":"4f19ebe716fee793"},{"name":"create-root-mapping","duration":166,"timestamp":226108925871,"id":9,"parentId":1,"tags":{},"startTime":1778597594751,"traceId":"4f19ebe716fee793"},{"name":"generate-route-types","duration":39004,"timestamp":226108928664,"id":10,"parentId":1,"tags":{},"startTime":1778597594753,"traceId":"4f19ebe716fee793"},{"name":"public-dir-conflict-check","duration":110,"timestamp":226108967869,"id":11,"parentId":1,"tags":{},"startTime":1778597594793,"traceId":"4f19ebe716fee793"},{"name":"generate-routes-manifest","duration":5147,"timestamp":226108968149,"id":12,"parentId":1,"tags":{},"startTime":1778597594793,"traceId":"4f19ebe716fee793"},{"name":"run-turbopack","duration":8159289,"timestamp":226108980883,"id":14,"parentId":1,"tags":{},"startTime":1778597594806,"traceId":"4f19ebe716fee793"},{"name":"turbopack-build-events","duration":92,"timestamp":226109304156,"id":15,"parentId":1,"tags":{},"startTime":1778597595129,"traceId":"4f19ebe716fee793"},{"name":"run-typescript","duration":8576431,"timestamp":226117147237,"id":16,"parentId":1,"tags":{},"startTime":1778597602972,"traceId":"4f19ebe716fee793"},{"name":"generate-required-server-files","duration":2681,"timestamp":226125724776,"id":18,"parentId":1,"tags":{},"startTime":1778597611549,"traceId":"4f19ebe716fee793"},{"name":"check-static-error-page","duration":19445,"timestamp":226125793101,"id":20,"parentId":19,"tags":{},"startTime":1778597611618,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":325426,"timestamp":226125815135,"id":62,"parentId":22,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":345230,"timestamp":226125795455,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778597611620,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":440885,"timestamp":226125815410,"id":64,"parentId":26,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":455691,"timestamp":226125800686,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778597611625,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":464416,"timestamp":226125815255,"id":63,"parentId":25,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":479373,"timestamp":226125800376,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778597611625,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":465468,"timestamp":226125814649,"id":61,"parentId":21,"tags":{},"startTime":1778597611639,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":485889,"timestamp":226125794277,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778597611619,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":464859,"timestamp":226125815452,"id":65,"parentId":27,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":479453,"timestamp":226125800892,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778597611626,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":483817,"timestamp":226125815576,"id":68,"parentId":30,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":497740,"timestamp":226125801733,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778597611626,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":504140,"timestamp":226125815489,"id":66,"parentId":28,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":518563,"timestamp":226125801185,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778597611626,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":517994,"timestamp":226125815614,"id":69,"parentId":32,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":531388,"timestamp":226125802288,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778597611627,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":525223,"timestamp":226125815711,"id":70,"parentId":33,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":537902,"timestamp":226125803129,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778597611628,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":526657,"timestamp":226125815757,"id":71,"parentId":34,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":539113,"timestamp":226125803352,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778597611628,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":529221,"timestamp":226125815775,"id":72,"parentId":35,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":541513,"timestamp":226125803549,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778597611628,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":530456,"timestamp":226125815845,"id":73,"parentId":36,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":542175,"timestamp":226125804174,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778597611629,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":533200,"timestamp":226125815864,"id":74,"parentId":37,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":544712,"timestamp":226125804401,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778597611629,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":534557,"timestamp":226125815873,"id":75,"parentId":38,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":545873,"timestamp":226125804601,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778597611629,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":537503,"timestamp":226125815879,"id":76,"parentId":39,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":548668,"timestamp":226125804756,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778597611629,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":541315,"timestamp":226125815885,"id":77,"parentId":40,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":552344,"timestamp":226125804902,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778597611630,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":542192,"timestamp":226125815891,"id":78,"parentId":41,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":553162,"timestamp":226125804982,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778597611630,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":544831,"timestamp":226125815902,"id":80,"parentId":43,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":555637,"timestamp":226125805136,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778597611630,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":545483,"timestamp":226125815896,"id":79,"parentId":42,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":556346,"timestamp":226125805068,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778597611630,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":549171,"timestamp":226125815909,"id":81,"parentId":44,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":559927,"timestamp":226125805208,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778597611630,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":550124,"timestamp":226125815914,"id":82,"parentId":45,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":560807,"timestamp":226125805271,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778597611630,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":553976,"timestamp":226125815919,"id":83,"parentId":46,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":564600,"timestamp":226125805357,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778597611630,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":555371,"timestamp":226125815925,"id":84,"parentId":47,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":565928,"timestamp":226125805421,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778597611630,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":559374,"timestamp":226125815541,"id":67,"parentId":29,"tags":{},"startTime":1778597611640,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":573626,"timestamp":226125801347,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778597611626,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":560636,"timestamp":226125815929,"id":85,"parentId":48,"tags":{},"startTime":1778597611641,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":571126,"timestamp":226125805484,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778597611630,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":554220,"timestamp":226125825203,"id":87,"parentId":31,"tags":{},"startTime":1778597611650,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":577529,"timestamp":226125801944,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778597611627,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":562136,"timestamp":226125820274,"id":86,"parentId":24,"tags":{},"startTime":1778597611645,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":586314,"timestamp":226125796140,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778597611621,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":550627,"timestamp":226125839483,"id":89,"parentId":49,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":584373,"timestamp":226125805824,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778597611631,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":554177,"timestamp":226125839502,"id":91,"parentId":51,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":587640,"timestamp":226125806095,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778597611631,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":560519,"timestamp":226125839512,"id":92,"parentId":52,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":593814,"timestamp":226125806280,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778597611631,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":567176,"timestamp":226125839520,"id":93,"parentId":53,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":600303,"timestamp":226125806459,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778597611631,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":573415,"timestamp":226125839525,"id":94,"parentId":55,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":605744,"timestamp":226125807279,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778597611632,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":579596,"timestamp":226125839548,"id":95,"parentId":56,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":610027,"timestamp":226125809206,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778597611634,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":587550,"timestamp":226125839557,"id":96,"parentId":58,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":615192,"timestamp":226125811991,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778597611637,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":588302,"timestamp":226125839374,"id":88,"parentId":23,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":631882,"timestamp":226125795844,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778597611621,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":594421,"timestamp":226125839573,"id":98,"parentId":60,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":621795,"timestamp":226125812267,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778597611637,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":600379,"timestamp":226125839562,"id":97,"parentId":59,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":627885,"timestamp":226125812154,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778597611637,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":600563,"timestamp":226125839585,"id":99,"parentId":54,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":633504,"timestamp":226125806676,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778597611631,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":602893,"timestamp":226125839496,"id":90,"parentId":50,"tags":{},"startTime":1778597611664,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":636489,"timestamp":226125805951,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778597611631,"traceId":"4f19ebe716fee793"},{"name":"is-page-static","duration":592693,"timestamp":226125852622,"id":100,"parentId":57,"tags":{},"startTime":1778597611677,"traceId":"4f19ebe716fee793"},{"name":"check-page","duration":634374,"timestamp":226125810994,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778597611636,"traceId":"4f19ebe716fee793"},{"name":"static-check","duration":653142,"timestamp":226125792267,"id":19,"parentId":1,"tags":{},"startTime":1778597611617,"traceId":"4f19ebe716fee793"},{"name":"write-routes-manifest","duration":645,"timestamp":226126451855,"id":102,"parentId":1,"tags":{},"startTime":1778597612277,"traceId":"4f19ebe716fee793"},{"name":"load-dotenv","duration":81,"timestamp":226126464979,"id":105,"parentId":104,"tags":{},"startTime":1778597612290,"traceId":"4f19ebe716fee793"},{"name":"run-export-path-map","duration":669,"timestamp":226126467928,"id":106,"parentId":104,"tags":{},"startTime":1778597612293,"traceId":"4f19ebe716fee793"},{"name":"next-export","duration":754816,"timestamp":226126463723,"id":104,"parentId":1,"tags":{},"startTime":1778597612288,"traceId":"4f19ebe716fee793"},{"name":"move-exported-app-not-found-","duration":633,"timestamp":226127221862,"id":107,"parentId":103,"tags":{},"startTime":1778597613047,"traceId":"4f19ebe716fee793"},{"name":"move-exported-app-global-error-","duration":511,"timestamp":226127222597,"id":108,"parentId":103,"tags":{},"startTime":1778597613047,"traceId":"4f19ebe716fee793"}]
|
|
2
|
-
[{"name":"static-generation","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":305,"timestamp":226637641983,"id":4,"parentId":1,"tags":{},"startTime":1778598123467,"traceId":"e80a2b630c7cf66d"},{"name":"load-custom-routes","duration":501,"timestamp":226637642461,"id":5,"parentId":1,"tags":{},"startTime":1778598123467,"traceId":"e80a2b630c7cf66d"},{"name":"create-dist-dir","duration":350,"timestamp":226637643025,"id":6,"parentId":1,"tags":{},"startTime":1778598123468,"traceId":"e80a2b630c7cf66d"},{"name":"clean","duration":531,"timestamp":226637644208,"id":7,"parentId":1,"tags":{},"startTime":1778598123469,"traceId":"e80a2b630c7cf66d"},{"name":"discover-routes","duration":11867,"timestamp":226637782455,"id":8,"parentId":1,"tags":{},"startTime":1778598123607,"traceId":"e80a2b630c7cf66d"},{"name":"create-root-mapping","duration":147,"timestamp":226637794406,"id":9,"parentId":1,"tags":{},"startTime":1778598123619,"traceId":"e80a2b630c7cf66d"},{"name":"generate-route-types","duration":47487,"timestamp":226637797692,"id":10,"parentId":1,"tags":{},"startTime":1778598123622,"traceId":"e80a2b630c7cf66d"},{"name":"public-dir-conflict-check","duration":140,"timestamp":226637845462,"id":11,"parentId":1,"tags":{},"startTime":1778598123670,"traceId":"e80a2b630c7cf66d"},{"name":"generate-routes-manifest","duration":5911,"timestamp":226637845759,"id":12,"parentId":1,"tags":{},"startTime":1778598123670,"traceId":"e80a2b630c7cf66d"},{"name":"run-turbopack","duration":9571165,"timestamp":226637858571,"id":14,"parentId":1,"tags":{},"startTime":1778598123683,"traceId":"e80a2b630c7cf66d"},{"name":"turbopack-build-events","duration":105,"timestamp":226638232392,"id":15,"parentId":1,"tags":{},"startTime":1778598124057,"traceId":"e80a2b630c7cf66d"},{"name":"run-typescript","duration":8569310,"timestamp":226647443377,"id":16,"parentId":1,"tags":{},"startTime":1778598133268,"traceId":"e80a2b630c7cf66d"},{"name":"generate-required-server-files","duration":2744,"timestamp":226656013710,"id":18,"parentId":1,"tags":{},"startTime":1778598141838,"traceId":"e80a2b630c7cf66d"},{"name":"check-static-error-page","duration":16012,"timestamp":226656081311,"id":20,"parentId":19,"tags":{},"startTime":1778598141906,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":314057,"timestamp":226656099589,"id":62,"parentId":22,"tags":{},"startTime":1778598141924,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":330134,"timestamp":226656083632,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778598141908,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":424096,"timestamp":226656099672,"id":63,"parentId":25,"tags":{},"startTime":1778598141924,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":437640,"timestamp":226656086208,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778598141911,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":425368,"timestamp":226656099818,"id":64,"parentId":26,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":438892,"timestamp":226656086362,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778598141911,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":428524,"timestamp":226656099858,"id":65,"parentId":27,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":442022,"timestamp":226656086456,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778598141911,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":430320,"timestamp":226656099893,"id":66,"parentId":28,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":443740,"timestamp":226656086536,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778598141911,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":441414,"timestamp":226656099964,"id":68,"parentId":30,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":453320,"timestamp":226656088138,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778598141913,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":445241,"timestamp":226656099998,"id":69,"parentId":32,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":456764,"timestamp":226656088542,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778598141913,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":447273,"timestamp":226656099271,"id":61,"parentId":21,"tags":{},"startTime":1778598141924,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":464211,"timestamp":226656082388,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778598141907,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":455192,"timestamp":226656100143,"id":70,"parentId":33,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":466734,"timestamp":226656088668,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778598141913,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":460549,"timestamp":226656099931,"id":67,"parentId":29,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":472712,"timestamp":226656087827,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778598141913,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":461896,"timestamp":226656100208,"id":72,"parentId":35,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":473329,"timestamp":226656088844,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778598141914,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":467218,"timestamp":226656100263,"id":73,"parentId":36,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":478330,"timestamp":226656089203,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778598141914,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":473485,"timestamp":226656100282,"id":74,"parentId":37,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":484484,"timestamp":226656089348,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778598141914,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":473757,"timestamp":226656100291,"id":75,"parentId":38,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":484617,"timestamp":226656089462,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778598141914,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":477789,"timestamp":226656100297,"id":76,"parentId":39,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":488602,"timestamp":226656089541,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778598141914,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":477982,"timestamp":226656100303,"id":77,"parentId":40,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":488668,"timestamp":226656089640,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778598141914,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":479367,"timestamp":226656100309,"id":78,"parentId":41,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":490030,"timestamp":226656089711,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778598141914,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":483420,"timestamp":226656100321,"id":80,"parentId":43,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":493910,"timestamp":226656089879,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778598141915,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":484936,"timestamp":226656100315,"id":79,"parentId":42,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":495510,"timestamp":226656089782,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778598141914,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":486958,"timestamp":226656100326,"id":81,"parentId":44,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":497370,"timestamp":226656089950,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778598141915,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":488143,"timestamp":226656100332,"id":82,"parentId":45,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":498481,"timestamp":226656090034,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778598141915,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":490304,"timestamp":226656100336,"id":83,"parentId":46,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":500541,"timestamp":226656090135,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778598141915,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":491582,"timestamp":226656100341,"id":84,"parentId":47,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":501740,"timestamp":226656090217,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778598141915,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":493260,"timestamp":226656100346,"id":85,"parentId":48,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":503351,"timestamp":226656090295,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778598141915,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":493772,"timestamp":226656102564,"id":86,"parentId":24,"tags":{},"startTime":1778598141927,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":512276,"timestamp":226656084097,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778598141909,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":493606,"timestamp":226656103344,"id":87,"parentId":31,"tags":{},"startTime":1778598141928,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":508725,"timestamp":226656088266,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778598141913,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":506242,"timestamp":226656100190,"id":71,"parentId":34,"tags":{},"startTime":1778598141925,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":517732,"timestamp":226656088759,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778598141913,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":491196,"timestamp":226656122148,"id":90,"parentId":50,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":522453,"timestamp":226656090950,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778598141916,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":497069,"timestamp":226656122158,"id":91,"parentId":51,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":528167,"timestamp":226656091121,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778598141916,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":507469,"timestamp":226656122169,"id":92,"parentId":52,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":538378,"timestamp":226656091316,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778598141916,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":514556,"timestamp":226656122175,"id":93,"parentId":53,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":545284,"timestamp":226656091513,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778598141916,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":514890,"timestamp":226656122099,"id":88,"parentId":23,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":553205,"timestamp":226656083853,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778598141909,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":518372,"timestamp":226656122141,"id":89,"parentId":49,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":549813,"timestamp":226656090772,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778598141915,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":518537,"timestamp":226656122185,"id":94,"parentId":55,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":548411,"timestamp":226656092331,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778598141917,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":524769,"timestamp":226656122194,"id":95,"parentId":56,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":554699,"timestamp":226656092525,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778598141917,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":525189,"timestamp":226656122200,"id":96,"parentId":58,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":550608,"timestamp":226656096804,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778598141922,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":530870,"timestamp":226656122221,"id":98,"parentId":60,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":556018,"timestamp":226656097128,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778598141922,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":533967,"timestamp":226656122229,"id":99,"parentId":54,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":564476,"timestamp":226656091774,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778598141916,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":539217,"timestamp":226656122210,"id":97,"parentId":59,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":564516,"timestamp":226656096975,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778598141922,"traceId":"e80a2b630c7cf66d"},{"name":"is-page-static","duration":539864,"timestamp":226656122239,"id":100,"parentId":57,"tags":{},"startTime":1778598141947,"traceId":"e80a2b630c7cf66d"},{"name":"check-page","duration":569449,"timestamp":226656092701,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778598141917,"traceId":"e80a2b630c7cf66d"},{"name":"static-check","duration":581693,"timestamp":226656080495,"id":19,"parentId":1,"tags":{},"startTime":1778598141905,"traceId":"e80a2b630c7cf66d"},{"name":"write-routes-manifest","duration":384,"timestamp":226656669039,"id":102,"parentId":1,"tags":{},"startTime":1778598142494,"traceId":"e80a2b630c7cf66d"},{"name":"load-dotenv","duration":55,"timestamp":226656682369,"id":105,"parentId":104,"tags":{},"startTime":1778598142507,"traceId":"e80a2b630c7cf66d"},{"name":"run-export-path-map","duration":842,"timestamp":226656686151,"id":106,"parentId":104,"tags":{},"startTime":1778598142511,"traceId":"e80a2b630c7cf66d"},{"name":"next-export","duration":594584,"timestamp":226656681117,"id":104,"parentId":1,"tags":{},"startTime":1778598142506,"traceId":"e80a2b630c7cf66d"},{"name":"move-exported-app-not-found-","duration":643,"timestamp":226657279207,"id":107,"parentId":103,"tags":{},"startTime":1778598143104,"traceId":"e80a2b630c7cf66d"},{"name":"move-exported-app-global-error-","duration":408,"timestamp":226657279941,"id":108,"parentId":103,"tags":{},"startTime":1778598143105,"traceId":"e80a2b630c7cf66d"}]
|
|
2
|
+
[{"name":"static-generation","duration":610897,"timestamp":226656673698,"id":103,"parentId":1,"tags":{},"startTime":1778598142498,"traceId":"e80a2b630c7cf66d"},{"name":"write-routes-manifest","duration":450,"timestamp":226657284793,"id":109,"parentId":1,"tags":{},"startTime":1778598143109,"traceId":"e80a2b630c7cf66d"},{"name":"print-tree-view","duration":4385,"timestamp":226657300169,"id":110,"parentId":1,"tags":{},"startTime":1778598143125,"traceId":"e80a2b630c7cf66d"},{"name":"write-route-bundle-stats","duration":12695,"timestamp":226657304598,"id":111,"parentId":1,"tags":{},"startTime":1778598143129,"traceId":"e80a2b630c7cf66d"},{"name":"telemetry-flush","duration":24062,"timestamp":226657317331,"id":112,"parentId":1,"tags":{},"startTime":1778598143142,"traceId":"e80a2b630c7cf66d"},{"name":"next-build","duration":19759874,"timestamp":226637581561,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778598123406,"traceId":"e80a2b630c7cf66d"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":9571165,"timestamp":226637858571,"id":14,"parentId":1,"tags":{},"startTime":1778598123683,"traceId":"e80a2b630c7cf66d"},{"name":"turbopack-build-events","duration":105,"timestamp":226638232392,"id":15,"parentId":1,"tags":{},"startTime":1778598124057,"traceId":"e80a2b630c7cf66d"},{"name":"run-typescript","duration":8569310,"timestamp":226647443377,"id":16,"parentId":1,"tags":{},"startTime":1778598133268,"traceId":"e80a2b630c7cf66d"},{"name":"static-check","duration":581693,"timestamp":226656080495,"id":19,"parentId":1,"tags":{},"startTime":1778598141905,"traceId":"e80a2b630c7cf66d"},{"name":"static-generation","duration":610897,"timestamp":226656673698,"id":103,"parentId":1,"tags":{},"startTime":1778598142498,"traceId":"e80a2b630c7cf66d"},{"name":"telemetry-flush","duration":24062,"timestamp":226657317331,"id":112,"parentId":1,"tags":{},"startTime":1778598143142,"traceId":"e80a2b630c7cf66d"},{"name":"next-build","duration":19759874,"timestamp":226637581561,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778598123406,"traceId":"e80a2b630c7cf66d"}]
|
package/app/admin/page.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import { useState } from 'react';
|
|
|
4
4
|
import { useSessions, useHealth, useStats } from '../lib/hooks';
|
|
5
5
|
import { timeAgo } from '../components/utils';
|
|
6
6
|
import { AliasAvatar } from '../components/AliasAvatar';
|
|
7
|
+
import { STATUS_CHIP_CLASS } from '../lib/status';
|
|
7
8
|
|
|
8
9
|
export default function AdminPage() {
|
|
9
10
|
const { sessions } = useSessions();
|
|
@@ -123,9 +124,13 @@ export default function AdminPage() {
|
|
|
123
124
|
</div>
|
|
124
125
|
</div>
|
|
125
126
|
{stats?.tasks?.by_status && stats.tasks.by_status.length > 0 && (
|
|
127
|
+
/* Round 90: adopt the shared STATUS_CHIP_CLASS palette so
|
|
128
|
+
`acked`/`replied`/`failed` here color-match the same
|
|
129
|
+
chips on /tasks, Overview r69, and /tasks/[id] r68.
|
|
130
|
+
Unknown statuses fall back to the previous flat gray. */
|
|
126
131
|
<div className="mt-4 flex flex-wrap gap-2">
|
|
127
132
|
{stats.tasks.by_status.map((s: { status: string; count: number }) => (
|
|
128
|
-
<span key={s.status} className=
|
|
133
|
+
<span key={s.status} className={`text-xs px-2 py-1 rounded border ${STATUS_CHIP_CLASS[s.status] || 'bg-[#0a0a15] border-[#1a1a2a] text-gray-400'}`}>
|
|
129
134
|
{s.status}: {s.count}
|
|
130
135
|
</span>
|
|
131
136
|
))}
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[43515,a=>{"use strict";a.s(["formatUptime",0,function(a){let b=Math.floor(a/3600),c=Math.floor(a%3600/60);return b>0?`${b}h ${c}m`:`${c}m`},"previewContent",0,function(a){return a&&a.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(a){if(!a)return"--";let b=Math.floor((Date.now()-new Date(a.replace(" ","T")+"Z").getTime())/1e3);return b<60?`${b}s ago`:b<3600?`${Math.floor(b/60)}m ago`:b<86400?`${Math.floor(b/3600)}h ago`:`${Math.floor(b/86400)}d ago`}])},1720,a=>{"use strict";var b=a.i(87924);let c=[180,200,220,270,300,330,30,90];a.s(["AliasAvatar",0,function({alias:a,size:d=28,className:e=""}){let f=function(a){let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)>>>0;let d=c[b%c.length];return{bg:`hsl(${d} 55% 22%)`,ring:`hsl(${d} 60% 45%)`,text:`hsl(${d} 80% 78%)`}}(a),g=Math.max(9,Math.round(.42*d));return(0,b.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${e}`,style:{width:d,height:d,fontSize:g,backgroundColor:f.bg,borderColor:f.ring,color:f.text},title:a,"aria-hidden":!0,children:a?(a.trim().match(/[\p{L}\p{N}]/u)?.[0]||a.trim()[0]||"·").toUpperCase():"·"})}])},44332,a=>{"use strict";var b=a.i(72596),c=a.i(22397);let d=async a=>{let b=await fetch(a);if(401===b.status)throw window.location.assign("/login"),Error("unauthorized");return b.json()},e={refreshInterval:5e3,dedupingInterval:3e3};function f(a,b){if(!b)return a;let c=a.includes("?")?"&":"?";return`${a}${c}network_id=${encodeURIComponent(b)}`}a.s(["useAnetConfig",0,function(){let{data:a}=(0,b.default)("/api/anet/config",d,{refreshInterval:3e4});return{config:a||null}},"useHealth",0,function(){let{data:a,error:c}=(0,b.default)("/api/hub/health",d,e);return{health:a||null,error:c}},"useLicense",0,function(){let{data:a,error:c}=(0,b.default)("/api/hub/license",d,{refreshInterval:6e4});return{license:a?.ok?a:null,error:c}},"useMessages",0,function(a=100){let{networkId:g}=(0,c.useNetworkId)(),{data:h,error:i,isLoading:j}=(0,b.default)(f(`/api/hub/messages?limit=${a}`,g),d,e);return{messages:h?.messages||[],error:i,isLoading:j}},"useSessions",0,function(){let{networkId:a}=(0,c.useNetworkId)(),{data:g,error:h,isLoading:i}=(0,b.default)(f("/api/hub/status",a),d,e);return{sessions:g?.sessions||[],hint:g?._hint,error:h,isLoading:i}},"useStats",0,function(){let{networkId:a}=(0,c.useNetworkId)(),{data:g,error:h}=(0,b.default)(f("/api/hub/stats",a),d,e);return{stats:g?.ok?g:null,error:h}},"useTasks",0,function(a){let{networkId:g}=(0,c.useNetworkId)(),h=new URLSearchParams({limit:"100",...a}).toString(),{data:i,error:j,isLoading:k}=(0,b.default)(f(`/api/hub/tasks?${h}`,g),d,e);return{tasks:i?.tasks||[],count:i?.count??0,source:i?.source,error:j,isLoading:k}}])},88367,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(44332),e=a.i(43515),f=a.i(1720);a.s(["default",0,function(){let{sessions:a}=(0,d.useSessions)(),{health:g}=(0,d.useHealth)(),{stats:h}=(0,d.useStats)(),i=g?.sse_sessions||{},j=a=>(a.network_id?i[`${a.network_id}:${a.alias}`]:void 0)??i[a.alias],[k,l]=(0,c.useState)(""),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)(""),[u,v]=(0,c.useState)(""),[w,x]=(0,c.useState)(""),[y,z]=(0,c.useState)(""),A=async()=>{if(k.trim()&&m.trim()){try{let a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"register",username:k,password:m})}),b=await a.json();p(b.ok?`Created: ${b.user.username} (${b.user.user_id})`:`Failed: ${b.error}`),b.ok&&(l(""),n(""))}catch{p("Failed")}setTimeout(()=>p(""),8e3)}},B=async()=>{if(q.trim()){try{let a=await fetch("/api/hub/broadcast",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:q})}),b=await a.json();t(b.ok?`Sent to ${b.recipients} nodes`:`Failed: ${b.error}`),b.ok&&r("")}catch{t("Failed")}setTimeout(()=>t(""),5e3)}},C=async()=>{if(u&&w.trim()){try{let a=await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:u,task:w})}),b=await a.json();z(b.ok?"Task sent":`Failed: ${b.error}`),b.ok&&x("")}catch{z("Failed")}setTimeout(()=>z(""),5e3)}},D=a.filter(a=>j(a)),E=a.filter(a=>!j(a));return(0,b.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Admin"}),(0,b.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#status",label:"Status"},{href:"#actions",label:"Actions"},{href:"#users",label:"Users"}].map(a=>(0,b.jsx)("a",{href:a.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:a.label},a.href))}),(0,b.jsxs)("div",{className:"max-w-6xl space-y-10",children:[(0,b.jsxs)("div",{id:"status",className:"space-y-4 scroll-mt-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,b.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Status"}),(0,b.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,b.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Overview"}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-3xl font-bold text-green-400 tabular-nums",children:D.length}),(0,b.jsx)("div",{className:"text-xs text-gray-500",children:"Online"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-3xl font-bold text-gray-500 tabular-nums",children:E.length}),(0,b.jsx)("div",{className:"text-xs text-gray-500",children:"Offline"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-3xl font-bold text-cyan-400 tabular-nums",children:g?.sse_connections??"--"}),(0,b.jsxs)("div",{className:"text-xs text-gray-500",children:["SSE Streams ",(0,b.jsx)("span",{className:"text-gray-600",children:"· server"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-3xl font-bold text-white tabular-nums",children:h?.tasks?.total??"--"}),(0,b.jsx)("div",{className:"text-xs text-gray-500",children:"Total Tasks"})]})]}),h?.tasks?.by_status&&h.tasks.by_status.length>0&&(0,b.jsx)("div",{className:"mt-4 flex flex-wrap gap-2",children:h.tasks.by_status.map(a=>(0,b.jsxs)("span",{className:"text-xs px-2 py-1 rounded bg-[#0a0a15] border border-[#1a1a2a] text-gray-400",children:[a.status,": ",a.count]},a.status))})]}),(0,b.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,b.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:["Online Sessions ",(0,b.jsxs)("span",{className:"text-gray-600",children:["(",D.length,")"]})]}),(0,b.jsx)("div",{className:"space-y-2 max-h-80 overflow-y-auto",children:0===D.length?(0,b.jsx)("div",{className:"text-xs text-gray-600 text-center py-4",children:"No online sessions"}):D.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-3 bg-[#0a0a15] rounded-lg px-3 py-2 border border-[#1a1a2a]",children:[(0,b.jsx)(f.AliasAvatar,{alias:a.alias,size:20}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"text-sm text-white font-medium truncate",children:a.alias}),(0,b.jsxs)("div",{className:"text-xs text-gray-500 truncate",children:[a.agent||"--"," · ",a.task||"idle"]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,b.jsx)("span",{className:`text-xs px-2 py-0.5 rounded border ${"working"===a.status?"bg-green-900/30 text-green-300 border-green-800/30":"bg-blue-900/30 text-blue-300 border-blue-800/30"}`,children:a.status}),(0,b.jsx)("span",{className:"text-[10px] text-gray-600",children:(0,e.timeAgo)(a.updated_at)})]})]},a.alias))})]})]})]}),(0,b.jsxs)("div",{id:"actions",className:"space-y-4 scroll-mt-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,b.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Actions"}),(0,b.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),0===a.length?(0,b.jsx)("div",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl px-5 py-4 text-sm text-gray-500",children:"Broadcast and Send Task become available after the first agent registers."}):(0,b.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,b.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Broadcast"}),(0,b.jsx)("textarea",{value:q,onChange:a=>r(a.target.value),placeholder:"Message to all online nodes...",rows:3,className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none resize-none"}),(0,b.jsxs)("div",{className:"flex justify-between items-center mt-3",children:[(0,b.jsxs)("span",{className:"text-xs text-gray-600",children:[q.length,"/500"]}),(0,b.jsx)("button",{onClick:B,disabled:!q.trim(),className:"px-4 py-2 bg-purple-600 hover:bg-purple-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Broadcast"})]}),s&&(0,b.jsx)("div",{className:`mt-2 text-xs ${s.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:s})]}),(0,b.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Send Task"}),(0,b.jsxs)("select",{value:u,onChange:a=>v(a.target.value),className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white focus:border-cyan-500/50 focus:outline-none mb-3",children:[(0,b.jsx)("option",{value:"",children:"Select target node..."}),D.map(a=>(0,b.jsxs)("option",{value:a.alias,children:[a.alias," (",a.status,")"]},a.alias)),(0,b.jsx)("optgroup",{label:"Offline",children:E.map(a=>(0,b.jsxs)("option",{value:a.alias,children:[a.alias," (offline)"]},a.alias))})]}),(0,b.jsx)("textarea",{value:w,onChange:a=>x(a.target.value),placeholder:"Task content...",rows:3,className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none resize-none"}),(0,b.jsx)("div",{className:"flex justify-end mt-3",children:(0,b.jsx)("button",{onClick:C,disabled:!u||!w.trim(),className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Send Task"})}),y&&(0,b.jsx)("div",{className:`mt-2 text-xs ${y.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:y})]})]})]}),(0,b.jsxs)("div",{id:"users",className:"space-y-4 scroll-mt-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,b.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Users"}),(0,b.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:(0,b.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Register User (V3)"}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("input",{type:"text",value:k,onChange:a=>l(a.target.value),placeholder:"Username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,b.jsx)("input",{type:"password",value:m,onChange:a=>n(a.target.value),placeholder:"Password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,b.jsx)("button",{onClick:A,disabled:!k.trim()||!m.trim(),className:"w-full px-4 py-2 bg-green-600 hover:bg-green-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Register"})]}),o&&(0,b.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})})]})]})]})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=app_0tncr1_._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../app/components/utils.ts","../../../../app/components/AliasAvatar.tsx","../../../../app/lib/hooks.ts","../../../../app/admin/page.tsx"],"sourcesContent":["/** Round 82: strip the most common markdown markup from agent-to-agent\n * task / message bodies so single-line table previews read cleanly.\n * Full original content stays in the expanded row / drawer / title=. */\nexport function previewContent(raw: string | null | undefined): string {\n if (!raw) return '--';\n return raw\n .replace(/!\\[([^\\]]*)\\]\\([^)]*\\)/g, '$1') // images:  → alt\n .replace(/\\[([^\\]]+)\\]\\([^)]*\\)/g, '$1') // links: [text](href) → text\n .replace(/`([^`]+)`/g, '$1') // inline code: `x` → x\n .replace(/\\s+/g, ' ') // collapse whitespace\n .trim() || '--';\n}\n\nexport function timeAgo(dateStr: string): string {\n if (!dateStr) return '--';\n const diff = Date.now() - new Date(dateStr.replace(' ', 'T') + 'Z').getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return `${s}s ago`;\n if (s < 3600) return `${Math.floor(s / 60)}m ago`;\n if (s < 86400) return `${Math.floor(s / 3600)}h ago`;\n return `${Math.floor(s / 86400)}d ago`;\n}\n\nexport function statusColor(status: string, hasSse: boolean): string {\n if (hasSse && status === 'working') return 'bg-green-500';\n if (hasSse && status === 'idle') return 'bg-emerald-400';\n if (hasSse) return 'bg-blue-400';\n if (status === 'offline') return 'bg-gray-500';\n return 'bg-yellow-400';\n}\n\nexport function formatUptime(seconds: number): string {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n if (h > 0) return `${h}h ${m}m`;\n return `${m}m`;\n}\n","/** Hue-hashed avatar pill for agent aliases. Same alias → same color across\n * every page (Messages, Nodes, TopoGraph). Use the `size` prop for inline\n * pills (16/20) vs card headers (28). Round 21 introduced the palette;\n * round 22 promotes it from app/messages to a shared component. */\n\nconst AVATAR_HUES = [180, 200, 220, 270, 300, 330, 30, 90];\n\nexport function aliasAvatarColors(alias: string): { bg: string; ring: string; text: string } {\n let h = 0;\n for (let i = 0; i < alias.length; i++) h = (h * 31 + alias.charCodeAt(i)) >>> 0;\n const hue = AVATAR_HUES[h % AVATAR_HUES.length];\n return {\n bg: `hsl(${hue} 55% 22%)`,\n ring: `hsl(${hue} 60% 45%)`,\n text: `hsl(${hue} 80% 78%)`,\n };\n}\n\nexport function aliasInitial(alias?: string): string {\n if (!alias) return '·';\n const ch = alias.trim().match(/[\\p{L}\\p{N}]/u)?.[0] || alias.trim()[0] || '·';\n return ch.toUpperCase();\n}\n\ninterface AliasAvatarProps {\n alias: string;\n size?: number;\n className?: string;\n}\n\nexport function AliasAvatar({ alias, size = 28, className = '' }: AliasAvatarProps) {\n const c = aliasAvatarColors(alias);\n const fs = Math.max(9, Math.round(size * 0.42));\n return (\n <span\n className={`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${className}`}\n style={{\n width: size,\n height: size,\n fontSize: fs,\n backgroundColor: c.bg,\n borderColor: c.ring,\n color: c.text,\n }}\n title={alias}\n aria-hidden\n >\n {aliasInitial(alias)}\n </span>\n );\n}\n","import useSWR from 'swr';\nimport { Session, Health, AnetConfig } from '../components/types';\nimport { useNetworkId } from './network-context';\n\nconst fetcher = async (url: string) => {\n const res = await fetch(url);\n if (res.status === 401) {\n window.location.assign('/login');\n throw new Error('unauthorized');\n }\n return res.json();\n};\n\nconst SWR_OPTIONS = { refreshInterval: 5000, dedupingInterval: 3000 };\n\n/** Append network_id to URL if set */\nfunction withNetwork(url: string, networkId: string): string {\n if (!networkId) return url;\n const sep = url.includes('?') ? '&' : '?';\n return `${url}${sep}network_id=${encodeURIComponent(networkId)}`;\n}\n\nexport function useSessions() {\n const { networkId } = useNetworkId();\n const { data, error, isLoading } = useSWR<{ sessions: Session[]; _hint?: { global_count?: number; filtered_network?: string } }>(\n withNetwork('/api/hub/status', networkId),\n fetcher,\n SWR_OPTIONS,\n );\n return { sessions: data?.sessions || [], hint: data?._hint, error, isLoading };\n}\n\nexport function useHealth() {\n const { data, error } = useSWR<Health>('/api/hub/health', fetcher, SWR_OPTIONS);\n return { health: data || null, error };\n}\n\nexport function useAnetConfig() {\n const { data } = useSWR<AnetConfig>('/api/anet/config', fetcher, { refreshInterval: 30000 });\n return { config: data || null };\n}\n\nexport function useTasks(params?: Record<string, string>) {\n const { networkId } = useNetworkId();\n const query = new URLSearchParams({ limit: '100', ...params }).toString();\n const { data, error, isLoading } = useSWR(\n withNetwork(`/api/hub/tasks?${query}`, networkId),\n fetcher,\n SWR_OPTIONS,\n );\n return {\n tasks: data?.tasks || [],\n count: data?.count ?? 0,\n source: data?.source,\n error,\n isLoading,\n };\n}\n\nexport function useStats() {\n const { networkId } = useNetworkId();\n const { data, error } = useSWR(withNetwork('/api/hub/stats', networkId), fetcher, SWR_OPTIONS);\n return { stats: data?.ok ? data : null, error };\n}\n\nexport function useLicense() {\n const { data, error } = useSWR('/api/hub/license', fetcher, { refreshInterval: 60000 });\n return { license: data?.ok ? data : null, error };\n}\n\nexport function useMessages(limit = 100) {\n const { networkId } = useNetworkId();\n const { data, error, isLoading } = useSWR(\n withNetwork(`/api/hub/messages?limit=${limit}`, networkId),\n fetcher,\n SWR_OPTIONS,\n );\n return { messages: data?.messages || [], error, isLoading };\n}\n\nexport function useNodeSession(alias: string) {\n const { data, error, isLoading } = useSWR(\n alias ? `/api/hub/session?alias=${encodeURIComponent(alias)}` : null,\n fetcher,\n SWR_OPTIONS,\n );\n return {\n session: data?.session || null,\n inbox: data?.inbox || [],\n sse: data?.sse || 0,\n error,\n isLoading,\n };\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { useSessions, useHealth, useStats } from '../lib/hooks';\nimport { timeAgo } from '../components/utils';\nimport { AliasAvatar } from '../components/AliasAvatar';\n\nexport default function AdminPage() {\n const { sessions } = useSessions();\n const { health } = useHealth();\n const { stats } = useStats();\n const sseMap = health?.sse_sessions || {};\n // SSE keys are `network_id:alias` since server v0.7+; fall back to alias-only.\n const sseFor = (s: { alias: string; network_id?: string }) =>\n (s.network_id ? sseMap[`${s.network_id}:${s.alias}`] : undefined) ?? sseMap[s.alias];\n\n const [regUser, setRegUser] = useState('');\n const [regPass, setRegPass] = useState('');\n const [regResult, setRegResult] = useState('');\n const [broadcastMsg, setBroadcastMsg] = useState('');\n const [broadcastResult, setBroadcastResult] = useState('');\n const [taskTarget, setTaskTarget] = useState('');\n const [taskContent, setTaskContent] = useState('');\n const [taskResult, setTaskResult] = useState('');\n\n const registerUser = async () => {\n if (!regUser.trim() || !regPass.trim()) return;\n try {\n const res = await fetch('/api/hub/auth', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ action: 'register', username: regUser, password: regPass }),\n });\n const data = await res.json();\n setRegResult(data.ok ? `Created: ${data.user.username} (${data.user.user_id})` : `Failed: ${data.error}`);\n if (data.ok) { setRegUser(''); setRegPass(''); }\n } catch { setRegResult('Failed'); }\n setTimeout(() => setRegResult(''), 8000);\n };\n\n const sendBroadcast = async () => {\n if (!broadcastMsg.trim()) return;\n try {\n const res = await fetch('/api/hub/broadcast', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ message: broadcastMsg }),\n });\n const data = await res.json();\n setBroadcastResult(data.ok ? `Sent to ${data.recipients} nodes` : `Failed: ${data.error}`);\n if (data.ok) setBroadcastMsg('');\n } catch { setBroadcastResult('Failed'); }\n setTimeout(() => setBroadcastResult(''), 5000);\n };\n\n const sendTask = async () => {\n if (!taskTarget || !taskContent.trim()) return;\n try {\n const res = await fetch('/api/hub/send', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ alias: taskTarget, task: taskContent }),\n });\n const data = await res.json();\n setTaskResult(data.ok ? 'Task sent' : `Failed: ${data.error}`);\n if (data.ok) setTaskContent('');\n } catch { setTaskResult('Failed'); }\n setTimeout(() => setTaskResult(''), 5000);\n };\n\n const onlineNodes = sessions.filter(s => sseFor(s));\n const offlineNodes = sessions.filter(s => !sseFor(s));\n\n return (\n <div className=\"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono\">\n <h1 className=\"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10\">Admin</h1>\n\n {/* Section anchor nav — same pattern as Settings r28. */}\n <nav className=\"mb-8 flex flex-wrap gap-1 text-xs\">\n {[\n { href: '#status', label: 'Status' },\n { href: '#actions', label: 'Actions' },\n { href: '#users', label: 'Users' },\n ].map(a => (\n <a key={a.href} href={a.href}\n className=\"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors\">\n {a.label}\n </a>\n ))}\n </nav>\n\n <div className=\"max-w-6xl space-y-10\">\n\n {/* ── Group: Status ─────────────────────────────────────── */}\n <div id=\"status\" className=\"space-y-4 scroll-mt-6\">\n <div className=\"flex items-center gap-2 px-1\">\n <div className=\"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold\">Status</div>\n <div className=\"flex-1 h-px bg-[#2a2a4a]\" />\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-4\">\n\n {/* Server Overview */}\n <section className=\"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5\">\n <h2 className=\"text-sm font-semibold text-gray-300 mb-4\">Server Overview</h2>\n <div className=\"grid grid-cols-2 gap-4 text-sm\">\n <div>\n <div className=\"text-3xl font-bold text-green-400 tabular-nums\">{onlineNodes.length}</div>\n <div className=\"text-xs text-gray-500\">Online</div>\n </div>\n <div>\n <div className=\"text-3xl font-bold text-gray-500 tabular-nums\">{offlineNodes.length}</div>\n <div className=\"text-xs text-gray-500\">Offline</div>\n </div>\n <div>\n <div className=\"text-3xl font-bold text-cyan-400 tabular-nums\">{health?.sse_connections ?? '--'}</div>\n <div className=\"text-xs text-gray-500\">\n SSE Streams <span className=\"text-gray-600\">· server</span>\n </div>\n </div>\n <div>\n <div className=\"text-3xl font-bold text-white tabular-nums\">{stats?.tasks?.total ?? '--'}</div>\n <div className=\"text-xs text-gray-500\">Total Tasks</div>\n </div>\n </div>\n {stats?.tasks?.by_status && stats.tasks.by_status.length > 0 && (\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {stats.tasks.by_status.map((s: { status: string; count: number }) => (\n <span key={s.status} className=\"text-xs px-2 py-1 rounded bg-[#0a0a15] border border-[#1a1a2a] text-gray-400\">\n {s.status}: {s.count}\n </span>\n ))}\n </div>\n )}\n </section>\n\n {/* Online Sessions — pulled into Status group (was below Send Task) */}\n <section className=\"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5\">\n <h2 className=\"text-sm font-semibold text-gray-300 mb-4\">\n Online Sessions <span className=\"text-gray-600\">({onlineNodes.length})</span>\n </h2>\n <div className=\"space-y-2 max-h-80 overflow-y-auto\">\n {onlineNodes.length === 0 ? (\n <div className=\"text-xs text-gray-600 text-center py-4\">No online sessions</div>\n ) : onlineNodes.map(s => (\n <div key={s.alias} className=\"flex items-center gap-3 bg-[#0a0a15] rounded-lg px-3 py-2 border border-[#1a1a2a]\">\n <AliasAvatar alias={s.alias} size={20} />\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm text-white font-medium truncate\">{s.alias}</div>\n <div className=\"text-xs text-gray-500 truncate\">{s.agent || '--'} · {s.task || 'idle'}</div>\n </div>\n <div className=\"flex items-center gap-2 shrink-0\">\n <span className={`text-xs px-2 py-0.5 rounded border ${\n s.status === 'working' ? 'bg-green-900/30 text-green-300 border-green-800/30' : 'bg-blue-900/30 text-blue-300 border-blue-800/30'\n }`}>{s.status}</span>\n <span className=\"text-[10px] text-gray-600\">{timeAgo(s.updated_at)}</span>\n </div>\n </div>\n ))}\n </div>\n </section>\n\n </div>\n </div>\n\n {/* ── Group: Actions ────────────────────────────────────── */}\n <div id=\"actions\" className=\"space-y-4 scroll-mt-6\">\n <div className=\"flex items-center gap-2 px-1\">\n <div className=\"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold\">Actions</div>\n <div className=\"flex-1 h-px bg-[#2a2a4a]\" />\n </div>\n {sessions.length === 0 ? (\n /* Round 77: Broadcast and Send Task both require at least one\n registered agent. Surfacing the empty cards above an empty\n fleet is the same dead-control class as the Overview\n Dispatch button (r70). Replace with a single inline hint. */\n <div className=\"bg-[#111128] border border-[#2a2a4a] rounded-xl px-5 py-4 text-sm text-gray-500\">\n Broadcast and Send Task become available after the first agent registers.\n </div>\n ) : (\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-4\">\n\n {/* Broadcast */}\n <section className=\"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5\">\n <h2 className=\"text-sm font-semibold text-gray-300 mb-4\">Broadcast</h2>\n <textarea\n value={broadcastMsg}\n onChange={e => setBroadcastMsg(e.target.value)}\n placeholder=\"Message to all online nodes...\"\n rows={3}\n className=\"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none resize-none\"\n />\n <div className=\"flex justify-between items-center mt-3\">\n <span className=\"text-xs text-gray-600\">{broadcastMsg.length}/500</span>\n <button\n onClick={sendBroadcast}\n disabled={!broadcastMsg.trim()}\n className=\"px-4 py-2 bg-purple-600 hover:bg-purple-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors\"\n >\n Broadcast\n </button>\n </div>\n {broadcastResult && <div className={`mt-2 text-xs ${broadcastResult.startsWith('Failed') ? 'text-red-400' : 'text-green-400'}`}>{broadcastResult}</div>}\n </section>\n\n {/* Send Task */}\n <section className=\"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5\">\n <h2 className=\"text-sm font-semibold text-gray-300 mb-4\">Send Task</h2>\n <select\n value={taskTarget}\n onChange={e => setTaskTarget(e.target.value)}\n className=\"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white focus:border-cyan-500/50 focus:outline-none mb-3\"\n >\n <option value=\"\">Select target node...</option>\n {onlineNodes.map(s => (\n <option key={s.alias} value={s.alias}>{s.alias} ({s.status})</option>\n ))}\n <optgroup label=\"Offline\">\n {offlineNodes.map(s => (\n <option key={s.alias} value={s.alias}>{s.alias} (offline)</option>\n ))}\n </optgroup>\n </select>\n <textarea\n value={taskContent}\n onChange={e => setTaskContent(e.target.value)}\n placeholder=\"Task content...\"\n rows={3}\n className=\"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none resize-none\"\n />\n <div className=\"flex justify-end mt-3\">\n <button\n onClick={sendTask}\n disabled={!taskTarget || !taskContent.trim()}\n className=\"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors\"\n >\n Send Task\n </button>\n </div>\n {taskResult && <div className={`mt-2 text-xs ${taskResult.startsWith('Failed') ? 'text-red-400' : 'text-green-400'}`}>{taskResult}</div>}\n </section>\n\n </div>\n )}\n </div>\n\n {/* ── Group: Users ──────────────────────────────────────── */}\n <div id=\"users\" className=\"space-y-4 scroll-mt-6\">\n <div className=\"flex items-center gap-2 px-1\">\n <div className=\"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold\">Users</div>\n <div className=\"flex-1 h-px bg-[#2a2a4a]\" />\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-4\">\n\n {/* User Management (V3 Auth) */}\n <section className=\"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5\">\n <h2 className=\"text-sm font-semibold text-gray-300 mb-4\">Register User (V3)</h2>\n <div className=\"space-y-3\">\n <input\n type=\"text\"\n value={regUser}\n onChange={e => setRegUser(e.target.value)}\n placeholder=\"Username\"\n className=\"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none\"\n />\n <input\n type=\"password\"\n value={regPass}\n onChange={e => setRegPass(e.target.value)}\n placeholder=\"Password\"\n className=\"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none\"\n />\n <button\n onClick={registerUser}\n disabled={!regUser.trim() || !regPass.trim()}\n className=\"w-full px-4 py-2 bg-green-600 hover:bg-green-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors\"\n >\n Register\n </button>\n </div>\n {regResult && <div className={`mt-2 text-xs ${regResult.startsWith('Failed') ? 'text-red-400' : 'text-green-400'}`}>{regResult}</div>}\n </section>\n\n </div>\n </div>\n\n </div>\n </div>\n );\n}\n"],"names":["previewContent","raw","replace","trim","timeAgo","dateStr","diff","Date","now","getTime","s","Math","floor","statusColor","status","hasSse","formatUptime","seconds","h","m","AVATAR_HUES","aliasAvatarColors","alias","i","length","charCodeAt","hue","bg","ring","text","aliasInitial","ch","match","toUpperCase","AliasAvatar","size","className","c","fs","max","round","style","width","height","fontSize","backgroundColor","borderColor","color","title","fetcher","url","res","fetch","window","location","assign","Error","json","SWR_OPTIONS","refreshInterval","dedupingInterval","withNetwork","networkId","sep","includes","encodeURIComponent","useSessions","data","error","isLoading","sessions","hint","_hint","useHealth","health","useAnetConfig","config","useTasks","params","query","URLSearchParams","limit","toString","tasks","count","source","useStats","stats","ok","useLicense","license","useMessages","messages","useNodeSession","session","inbox","sse","AdminPage","sseMap","sse_sessions","sseFor","network_id","undefined","regUser","setRegUser","regPass","setRegPass","regResult","setRegResult","broadcastMsg","setBroadcastMsg","broadcastResult","setBroadcastResult","taskTarget","setTaskTarget","taskContent","setTaskContent","taskResult","setTaskResult","registerUser","method","headers","body","JSON","stringify","action","username","password","user","user_id","setTimeout","sendBroadcast","message","recipients","sendTask","task","onlineNodes","filter","offlineNodes","href","label","map","a","id","sse_connections","total","by_status","agent","updated_at","value","onChange","e","target","placeholder","rows","onClick","disabled","startsWith","type"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18150,e=>{"use strict";e.s(["formatUptime",0,function(e){let s=Math.floor(e/3600),t=Math.floor(e%3600/60);return s>0?`${s}h ${t}m`:`${t}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){if(!e)return"--";let s=Math.floor((Date.now()-new Date(e.replace(" ","T")+"Z").getTime())/1e3);return 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`}])},69874,e=>{"use strict";var s=e.i(18050);let t=[180,200,220,270,300,330,30,90];e.s(["AliasAvatar",0,function({alias:e,size:a=28,className:r=""}){let l=function(e){let s=0;for(let t=0;t<e.length;t++)s=31*s+e.charCodeAt(t)>>>0;let a=t[s%t.length];return{bg:`hsl(${a} 55% 22%)`,ring:`hsl(${a} 60% 45%)`,text:`hsl(${a} 80% 78%)`}}(e),i=Math.max(9,Math.round(.42*a));return(0,s.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${r}`,style:{width:a,height:a,fontSize:i,backgroundColor:l.bg,borderColor:l.ring,color:l.text},title:e,"aria-hidden":!0,children:e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"})}])},65822,e=>{"use strict";var s=e.i(83599),t=e.i(58963);let a=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function l(e,s){if(!s)return e;let t=e.includes("?")?"&":"?";return`${e}${t}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",a,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:t}=(0,s.default)("/api/hub/health",a,r);return{health:e||null,error:t}},"useLicense",0,function(){let{data:e,error:t}=(0,s.default)("/api/hub/license",a,{refreshInterval:6e4});return{license:e?.ok?e:null,error:t}},"useMessages",0,function(e=100){let{networkId:i}=(0,t.useNetworkId)(),{data:n,error:o,isLoading:d}=(0,s.default)(l(`/api/hub/messages?limit=${e}`,i),a,r);return{messages:n?.messages||[],error:o,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,t.useNetworkId)(),{data:i,error:n,isLoading:o}=(0,s.default)(l("/api/hub/status",e),a,r);return{sessions:i?.sessions||[],hint:i?._hint,error:n,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,t.useNetworkId)(),{data:i,error:n}=(0,s.default)(l("/api/hub/stats",e),a,r);return{stats:i?.ok?i:null,error:n}},"useTasks",0,function(e){let{networkId:i}=(0,t.useNetworkId)(),n=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:d,isLoading:c}=(0,s.default)(l(`/api/hub/tasks?${n}`,i),a,r);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:d,isLoading:c}}])},23261,e=>{"use strict";var s=e.i(18050),t=e.i(71645),a=e.i(65822),r=e.i(18150),l=e.i(69874);e.s(["default",0,function(){let{sessions:e}=(0,a.useSessions)(),{health:i}=(0,a.useHealth)(),{stats:n}=(0,a.useStats)(),o=i?.sse_sessions||{},d=e=>(e.network_id?o[`${e.network_id}:${e.alias}`]:void 0)??o[e.alias],[c,x]=(0,t.useState)(""),[u,h]=(0,t.useState)(""),[m,g]=(0,t.useState)(""),[p,b]=(0,t.useState)(""),[f,y]=(0,t.useState)(""),[j,v]=(0,t.useState)(""),[N,w]=(0,t.useState)(""),[k,S]=(0,t.useState)(""),$=async()=>{if(c.trim()&&u.trim()){try{let e=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"register",username:c,password:u})}),s=await e.json();g(s.ok?`Created: ${s.user.username} (${s.user.user_id})`:`Failed: ${s.error}`),s.ok&&(x(""),h(""))}catch{g("Failed")}setTimeout(()=>g(""),8e3)}},T=async()=>{if(p.trim()){try{let e=await fetch("/api/hub/broadcast",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:p})}),s=await e.json();y(s.ok?`Sent to ${s.recipients} nodes`:`Failed: ${s.error}`),s.ok&&b("")}catch{y("Failed")}setTimeout(()=>y(""),5e3)}},C=async()=>{if(j&&N.trim()){try{let e=await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:j,task:N})}),s=await e.json();S(s.ok?"Task sent":`Failed: ${s.error}`),s.ok&&w("")}catch{S("Failed")}setTimeout(()=>S(""),5e3)}},A=e.filter(e=>d(e)),O=e.filter(e=>!d(e));return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Admin"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#status",label:"Status"},{href:"#actions",label:"Actions"},{href:"#users",label:"Users"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-6xl space-y-10",children:[(0,s.jsxs)("div",{id:"status",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Status"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Overview"}),(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-3xl font-bold text-green-400 tabular-nums",children:A.length}),(0,s.jsx)("div",{className:"text-xs text-gray-500",children:"Online"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-3xl font-bold text-gray-500 tabular-nums",children:O.length}),(0,s.jsx)("div",{className:"text-xs text-gray-500",children:"Offline"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-3xl font-bold text-cyan-400 tabular-nums",children:i?.sse_connections??"--"}),(0,s.jsxs)("div",{className:"text-xs text-gray-500",children:["SSE Streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-3xl font-bold text-white tabular-nums",children:n?.tasks?.total??"--"}),(0,s.jsx)("div",{className:"text-xs text-gray-500",children:"Total Tasks"})]})]}),n?.tasks?.by_status&&n.tasks.by_status.length>0&&(0,s.jsx)("div",{className:"mt-4 flex flex-wrap gap-2",children:n.tasks.by_status.map(e=>(0,s.jsxs)("span",{className:"text-xs px-2 py-1 rounded bg-[#0a0a15] border border-[#1a1a2a] text-gray-400",children:[e.status,": ",e.count]},e.status))})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:["Online Sessions ",(0,s.jsxs)("span",{className:"text-gray-600",children:["(",A.length,")"]})]}),(0,s.jsx)("div",{className:"space-y-2 max-h-80 overflow-y-auto",children:0===A.length?(0,s.jsx)("div",{className:"text-xs text-gray-600 text-center py-4",children:"No online sessions"}):A.map(e=>(0,s.jsxs)("div",{className:"flex items-center gap-3 bg-[#0a0a15] rounded-lg px-3 py-2 border border-[#1a1a2a]",children:[(0,s.jsx)(l.AliasAvatar,{alias:e.alias,size:20}),(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("div",{className:"text-sm text-white font-medium truncate",children:e.alias}),(0,s.jsxs)("div",{className:"text-xs text-gray-500 truncate",children:[e.agent||"--"," · ",e.task||"idle"]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,s.jsx)("span",{className:`text-xs px-2 py-0.5 rounded border ${"working"===e.status?"bg-green-900/30 text-green-300 border-green-800/30":"bg-blue-900/30 text-blue-300 border-blue-800/30"}`,children:e.status}),(0,s.jsx)("span",{className:"text-[10px] text-gray-600",children:(0,r.timeAgo)(e.updated_at)})]})]},e.alias))})]})]})]}),(0,s.jsxs)("div",{id:"actions",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Actions"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),0===e.length?(0,s.jsx)("div",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl px-5 py-4 text-sm text-gray-500",children:"Broadcast and Send Task become available after the first agent registers."}):(0,s.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Broadcast"}),(0,s.jsx)("textarea",{value:p,onChange:e=>b(e.target.value),placeholder:"Message to all online nodes...",rows:3,className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none resize-none"}),(0,s.jsxs)("div",{className:"flex justify-between items-center mt-3",children:[(0,s.jsxs)("span",{className:"text-xs text-gray-600",children:[p.length,"/500"]}),(0,s.jsx)("button",{onClick:T,disabled:!p.trim(),className:"px-4 py-2 bg-purple-600 hover:bg-purple-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Broadcast"})]}),f&&(0,s.jsx)("div",{className:`mt-2 text-xs ${f.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:f})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Send Task"}),(0,s.jsxs)("select",{value:j,onChange:e=>v(e.target.value),className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white focus:border-cyan-500/50 focus:outline-none mb-3",children:[(0,s.jsx)("option",{value:"",children:"Select target node..."}),A.map(e=>(0,s.jsxs)("option",{value:e.alias,children:[e.alias," (",e.status,")"]},e.alias)),(0,s.jsx)("optgroup",{label:"Offline",children:O.map(e=>(0,s.jsxs)("option",{value:e.alias,children:[e.alias," (offline)"]},e.alias))})]}),(0,s.jsx)("textarea",{value:N,onChange:e=>w(e.target.value),placeholder:"Task content...",rows:3,className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none resize-none"}),(0,s.jsx)("div",{className:"flex justify-end mt-3",children:(0,s.jsx)("button",{onClick:C,disabled:!j||!N.trim(),className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Send Task"})}),k&&(0,s.jsx)("div",{className:`mt-2 text-xs ${k.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:k})]})]})]}),(0,s.jsxs)("div",{id:"users",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Users"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Register User (V3)"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>x(e.target.value),placeholder:"Username",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:u,onChange:e=>h(e.target.value),placeholder:"Password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:$,disabled:!c.trim()||!u.trim(),className:"w-full px-4 py-2 bg-green-600 hover:bg-green-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Register"})]}),m&&(0,s.jsx)("div",{className:`mt-2 text-xs ${m.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:m})]})})]})]})]})}])}]);
|
|
File without changes
|
/package/.next/static/{TQAq8nPX6WrUTkC8KZF-R → ncWgB-pytiYNIi5uO3l-g}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|