@sleep2agi/agent-network-dashboard 0.4.5-preview.8 → 0.4.5-preview.80
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/.mcp.json +11 -0
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +48 -48
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +4 -4
- package/.next/server/app/_not-found.rsc +12 -12
- package/.next/server/app/_not-found.segments/_full.segment.rsc +12 -12
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +7 -7
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/.next/server/app/admin.rsc +14 -14
- package/.next/server/app/admin.segments/_full.segment.rsc +14 -14
- package/.next/server/app/admin.segments/_head.segment.rsc +4 -4
- package/.next/server/app/admin.segments/_index.segment.rsc +7 -7
- package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/admin.segments/admin.segment.rsc +3 -3
- package/.next/server/app/index.html +4 -4
- package/.next/server/app/index.rsc +14 -14
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +14 -14
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +7 -7
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page.js.nft.json +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 +14 -14
- package/.next/server/app/login.segments/_full.segment.rsc +14 -14
- package/.next/server/app/login.segments/_head.segment.rsc +4 -4
- package/.next/server/app/login.segments/_index.segment.rsc +7 -7
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/login.segments/login.segment.rsc +3 -3
- package/.next/server/app/logs/page.js.nft.json +1 -1
- package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/logs.html +4 -4
- package/.next/server/app/logs.rsc +14 -14
- package/.next/server/app/logs.segments/_full.segment.rsc +14 -14
- package/.next/server/app/logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/logs.segments/_index.segment.rsc +7 -7
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/logs.segments/logs.segment.rsc +3 -3
- package/.next/server/app/messages/page.js.nft.json +1 -1
- package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/messages.html +4 -4
- package/.next/server/app/messages.rsc +14 -14
- package/.next/server/app/messages.segments/_full.segment.rsc +14 -14
- package/.next/server/app/messages.segments/_head.segment.rsc +4 -4
- package/.next/server/app/messages.segments/_index.segment.rsc +7 -7
- package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/messages.segments/messages.segment.rsc +3 -3
- package/.next/server/app/node/page.js.nft.json +1 -1
- package/.next/server/app/node/page_client-reference-manifest.js +1 -1
- package/.next/server/app/node.html +4 -4
- package/.next/server/app/node.rsc +14 -14
- package/.next/server/app/node.segments/_full.segment.rsc +14 -14
- package/.next/server/app/node.segments/_head.segment.rsc +4 -4
- package/.next/server/app/node.segments/_index.segment.rsc +7 -7
- package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/node.segments/node.segment.rsc +3 -3
- package/.next/server/app/nodes/page.js.nft.json +1 -1
- package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/nodes.html +4 -4
- package/.next/server/app/nodes.rsc +14 -14
- package/.next/server/app/nodes.segments/_full.segment.rsc +14 -14
- package/.next/server/app/nodes.segments/_head.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/_index.segment.rsc +7 -7
- package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/nodes.segment.rsc +3 -3
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +4 -4
- package/.next/server/app/server-logs.rsc +14 -14
- package/.next/server/app/server-logs.segments/_full.segment.rsc +14 -14
- package/.next/server/app/server-logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/_index.segment.rsc +7 -7
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +3 -3
- package/.next/server/app/settings/networks/page.js.nft.json +1 -1
- package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/networks.html +4 -4
- package/.next/server/app/settings/networks.rsc +14 -14
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +14 -14
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +7 -7
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +3 -3
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +3 -3
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +4 -4
- package/.next/server/app/settings/tokens.rsc +14 -14
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +14 -14
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +7 -7
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +3 -3
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +3 -3
- package/.next/server/app/settings.html +4 -4
- package/.next/server/app/settings.rsc +14 -14
- package/.next/server/app/settings.segments/_full.segment.rsc +14 -14
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +7 -7
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
- package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks/page.js.nft.json +1 -1
- package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks.html +4 -4
- package/.next/server/app/tasks.rsc +14 -14
- package/.next/server/app/tasks.segments/_full.segment.rsc +14 -14
- package/.next/server/app/tasks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/_index.segment.rsc +7 -7
- package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/tasks.segment.rsc +3 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0jl4ukn._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0jl4ukn._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0n46s~k._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0n46s~k._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0w2ay2h._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0w2ay2h._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0xm3h9x._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0xm3h9x._.js.map +1 -1
- package/.next/server/chunks/ssr/_0nne7mz._.js +3 -0
- package/.next/server/chunks/ssr/_0nne7mz._.js.map +1 -0
- package/.next/server/chunks/ssr/app_0.zbtn5._.js +9 -0
- package/.next/server/chunks/ssr/app_0.zbtn5._.js.map +1 -0
- package/.next/server/chunks/ssr/app_01y-~mp._.js +3 -0
- package/.next/server/chunks/ssr/app_01y-~mp._.js.map +1 -0
- package/.next/server/chunks/ssr/app_04n78pr._.js +3 -0
- package/.next/server/chunks/ssr/app_04n78pr._.js.map +1 -0
- package/.next/server/chunks/ssr/app_0_agk0r._.js +3 -0
- package/.next/server/chunks/ssr/app_0_agk0r._.js.map +1 -0
- package/.next/server/chunks/ssr/app_0aenxef._.js +3 -0
- package/.next/server/chunks/ssr/app_0aenxef._.js.map +1 -0
- package/.next/server/chunks/ssr/app_0aum_g5._.js +3 -0
- package/.next/server/chunks/ssr/app_0aum_g5._.js.map +1 -0
- package/.next/server/chunks/ssr/app_0emvkn2._.js +3 -0
- package/.next/server/chunks/ssr/app_0emvkn2._.js.map +1 -0
- package/.next/server/chunks/ssr/app_0esuljp._.js +3 -0
- package/.next/server/chunks/ssr/app_0esuljp._.js.map +1 -0
- package/.next/server/chunks/ssr/app_0izi28j._.js +1 -1
- package/.next/server/chunks/ssr/app_0izi28j._.js.map +1 -1
- package/.next/server/chunks/ssr/app_components_08ys5y3._.js +5 -5
- package/.next/server/chunks/ssr/app_components_08ys5y3._.js.map +1 -1
- package/.next/server/chunks/ssr/app_server-logs_page_tsx_0_kpp1p._.js +1 -1
- package/.next/server/chunks/ssr/app_server-logs_page_tsx_0_kpp1p._.js.map +1 -1
- package/.next/server/chunks/ssr/app_tasks_page_tsx_0z-d6mp._.js +1 -1
- package/.next/server/chunks/ssr/app_tasks_page_tsx_0z-d6mp._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +4 -4
- 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/06uku.~mtk9zz.js +1 -0
- package/.next/static/chunks/07zsecr-~j5xa.js +1 -0
- package/.next/static/chunks/08i3fgrjz9_yj.css +2 -0
- package/.next/static/chunks/0av2~0.96~d~g.js +1 -0
- package/.next/static/chunks/0b64c5k_6b_n8.js +1 -0
- package/.next/static/chunks/{07okhs5561y5y.js → 0c1bp~g7.8ru..js} +1 -1
- package/.next/static/chunks/0dj5~edkdwh1n.js +1 -0
- package/.next/static/chunks/0geyh7e8y2s5f.js +1 -0
- package/.next/static/chunks/0gn0dhq_g343f.js +1 -0
- package/.next/static/chunks/0gtbwcilfu6b7.js +1 -0
- package/.next/static/chunks/0ir50f-dedv4s.js +1 -0
- package/.next/static/chunks/0rk5zmyp19fv8.js +7 -0
- package/.next/static/chunks/0ve696rkee.95.js +7 -0
- package/.next/static/chunks/0why2e264gmro.js +1 -0
- package/.next/static/chunks/0yw01eo779t1c.js +1 -0
- package/.next/static/chunks/11qk8zcquptgr.js +1 -0
- package/.next/static/chunks/158g10ijxldbh.js +1 -0
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/admin/page.tsx +97 -27
- package/app/components/AgentCard.tsx +19 -5
- package/app/components/BroadcastBar.tsx +22 -4
- package/app/components/DispatchPanel.tsx +9 -5
- package/app/components/EmptyState.tsx +77 -4
- package/app/components/HealthBanner.tsx +11 -2
- package/app/components/HelpOverlay.tsx +50 -10
- package/app/components/InboxPanel.tsx +7 -4
- package/app/components/Sidebar.tsx +49 -41
- package/app/components/StatsBar.tsx +59 -36
- package/app/components/TaskChatPanel.tsx +8 -10
- package/app/components/TaskDrawer.tsx +72 -28
- package/app/components/TopoGraph.tsx +183 -31
- package/app/components/utils.ts +13 -0
- package/app/globals.css +90 -0
- package/app/lib/status.ts +85 -0
- package/app/lib/version.ts +7 -0
- package/app/login/page.tsx +40 -7
- package/app/logs/page.tsx +70 -21
- package/app/messages/page.tsx +34 -9
- package/app/node/page.tsx +52 -27
- package/app/nodes/page.tsx +45 -21
- package/app/page.tsx +99 -31
- package/app/server-logs/page.tsx +104 -28
- package/app/settings/networks/page.tsx +40 -16
- package/app/settings/page.tsx +39 -11
- package/app/tasks/[id]/page.tsx +2 -13
- package/app/tasks/page.tsx +66 -73
- package/package.json +1 -1
- package/scripts/fold-only.mjs +47 -0
- package/scripts/loop-review.mjs +270 -0
- package/scripts/topo-shot.mjs +25 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__06w_u7t._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__06w_u7t._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0ehu0jb._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0ehu0jb._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0nrckjd._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0nrckjd._.js.map +0 -1
- package/.next/server/chunks/ssr/_13_v7-3._.js +0 -3
- package/.next/server/chunks/ssr/_13_v7-3._.js.map +0 -1
- package/.next/server/chunks/ssr/app_0.0wpa~._.js +0 -3
- package/.next/server/chunks/ssr/app_0.0wpa~._.js.map +0 -1
- package/.next/server/chunks/ssr/app_0ap_oiq._.js +0 -3
- package/.next/server/chunks/ssr/app_0ap_oiq._.js.map +0 -1
- package/.next/server/chunks/ssr/app_0dk5wao._.js +0 -3
- package/.next/server/chunks/ssr/app_0dk5wao._.js.map +0 -1
- package/.next/server/chunks/ssr/app_0et5yua._.js +0 -3
- package/.next/server/chunks/ssr/app_0et5yua._.js.map +0 -1
- package/.next/server/chunks/ssr/app_10b5blc._.js +0 -9
- package/.next/server/chunks/ssr/app_10b5blc._.js.map +0 -1
- package/.next/server/chunks/ssr/app_11vl967._.js +0 -3
- package/.next/server/chunks/ssr/app_11vl967._.js.map +0 -1
- package/.next/server/chunks/ssr/app_login_page_tsx_0z71ad3._.js +0 -3
- package/.next/server/chunks/ssr/app_login_page_tsx_0z71ad3._.js.map +0 -1
- package/.next/server/chunks/ssr/app_page_tsx_0es_sk2._.js +0 -3
- package/.next/server/chunks/ssr/app_page_tsx_0es_sk2._.js.map +0 -1
- package/.next/static/chunks/02afyxgpty3uf.js +0 -1
- package/.next/static/chunks/02flrewxlf_m_.js +0 -1
- package/.next/static/chunks/051gslfjka1kj.js +0 -1
- package/.next/static/chunks/07oobuohrpigy.js +0 -1
- package/.next/static/chunks/09al3qm76q7nd.js +0 -1
- package/.next/static/chunks/0e7c40p~wq665.js +0 -1
- package/.next/static/chunks/0g7m7zk.v7g6h.js +0 -1
- package/.next/static/chunks/0h.ajsk_uxigl.js +0 -1
- package/.next/static/chunks/0msa~bub38ytf.css +0 -2
- package/.next/static/chunks/0ogeals5ufhho.js +0 -1
- package/.next/static/chunks/0sgvs~8hw4df0.js +0 -1
- package/.next/static/chunks/10ir.g.n~hre0.js +0 -7
- package/.next/static/chunks/10njj7kn9ylkf.js +0 -1
- package/.next/static/chunks/12dcb86elsl-e.js +0 -7
- package/.next/static/chunks/13.dst7liziwo.js +0 -1
- package/.next/static/chunks/132e__998_q9r.js +0 -1
- package/public/file.svg +0 -1
- package/public/globe.svg +0 -1
- package/public/next.svg +0 -1
- package/public/vercel.svg +0 -1
- package/public/window.svg +0 -1
- /package/.next/static/{LQ5MjOWd5QM3a72laNr_D → 5EPRA3x3-w6LIGTySDUkk}/_buildManifest.js +0 -0
- /package/.next/static/{LQ5MjOWd5QM3a72laNr_D → 5EPRA3x3-w6LIGTySDUkk}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{LQ5MjOWd5QM3a72laNr_D → 5EPRA3x3-w6LIGTySDUkk}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,28490,e=>{"use strict";e.s(["SESSION_STATUS_CHIP_CLASS",0,{working:"bg-green-500/10 text-green-300 border-green-500/20",idle:"bg-blue-500/10 text-blue-300 border-blue-500/20",blocked:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",error:"bg-red-500/10 text-red-300 border-red-500/20",offline:"bg-gray-500/10 text-gray-500 border-gray-500/20"},"SESSION_STATUS_TEXT_CLASS",0,{working:"text-green-400",idle:"text-blue-400",blocked:"text-yellow-400",error:"text-red-400",offline:"text-gray-500"},"STATUS_BAR_CLASS",0,{created:"bg-gray-500",delivered:"bg-blue-500",acked:"bg-cyan-500",running:"bg-green-500",replied:"bg-purple-500",closed:"bg-gray-600",failed:"bg-red-500",cancelled:"bg-yellow-500",expired:"bg-orange-500"},"STATUS_CHIP_CLASS",0,{created:"bg-gray-500/10 text-gray-400 border-gray-500/20",delivered:"bg-blue-500/10 text-blue-300 border-blue-500/20",acked:"bg-cyan-500/10 text-cyan-300 border-cyan-500/20",running:"bg-green-500/10 text-green-300 border-green-500/20",replied:"bg-purple-500/10 text-purple-300 border-purple-500/20",closed:"bg-gray-500/10 text-gray-500 border-gray-500/20",failed:"bg-red-500/10 text-red-300 border-red-500/20",cancelled:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",expired:"bg-orange-500/10 text-orange-300 border-orange-500/20"},"STATUS_DOT_HEX",0,{created:"#9ca3af",delivered:"#60a5fa",acked:"#22d3ee",running:"#4ade80",replied:"#a78bfa",closed:"#6b7280",failed:"#f87171",cancelled:"#facc15",expired:"#fb923c"},"TASK_STATUSES",0,["created","delivered","acked","running","replied","closed","failed","cancelled","expired"]])},18150,e=>{"use strict";e.s(["formatUptime",0,function(e){let t=Math.floor(e/3600),r=Math.floor(e%3600/60);return t>0?`${t}h ${r}m`:`${r}m`},"previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){if(!e)return"--";let t=Math.floor((Date.now()-new Date(e.replace(" ","T")+"Z").getTime())/1e3);return t<60?`${t}s ago`:t<3600?`${Math.floor(t/60)}m ago`:t<86400?`${Math.floor(t/3600)}h ago`:`${Math.floor(t/86400)}d ago`}])},69874,e=>{"use strict";var t=e.i(18050);let r=[180,200,220,270,300,330,30,90];e.s(["AliasAvatar",0,function({alias:e,size:s=28,className:n=""}){let i=function(e){let t=0;for(let r=0;r<e.length;r++)t=31*t+e.charCodeAt(r)>>>0;let s=r[t%r.length];return{bg:`hsl(${s} 55% 22%)`,ring:`hsl(${s} 60% 45%)`,text:`hsl(${s} 80% 78%)`}}(e),a=Math.max(9,Math.round(.42*s));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${n}`,style:{width:s,height:s,fontSize:a,backgroundColor:i.bg,borderColor:i.ring,color:i.text},title:e,"aria-hidden":!0,children:e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"})}])},95356,e=>{"use strict";var t=e.i(18050),r=e.i(71645),s=e.i(22016);let n={nodes:{title:"No agents in this network",sub:"Agent sessions will appear here once they connect to the CommHub."},tasks:{title:"No tasks yet",sub:"Tasks will appear here when agents send them via CommHub."},messages:{title:"No messages",sub:"Messages between agents will appear here."},logs:{title:"No audit logs",sub:"Events will appear here when users register, login, or perform actions."},tokens:{title:"No API tokens",sub:"Create one to authenticate CLI tools and external integrations."},networks:{title:"No networks found",sub:"Create one or sign in with V3 auth to see your networks."},generic:{title:"Nothing here yet",sub:"Data will appear here once available."}};function i({variant:e,size:r}){let s={width:r,height:r},n={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,t.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,t.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,t.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,t.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M14 18 h36 a3 3 0 0 1 3 3 v18 a3 3 0 0 1 -3 3 h-18 l-8 6 v-6 h-10 a3 3 0 0 1 -3 -3 v-18 a3 3 0 0 1 3 -3 z"}),(0,t.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,t.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("path",{d:"M18 12 h22 l8 8 v32 a2 2 0 0 1 -2 2 h-28 a2 2 0 0 1 -2 -2 v-38 a2 2 0 0 1 2 -2 z"}),(0,t.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,t.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,t.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,t.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,t.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,t.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,t.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,t.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...s,children:(0,t.jsxs)("g",{...n,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function a({variant:e="generic",title:r,sub:l,cta:o,compact:c=!1}){let d=n[e],x=r??d.title,h=l??d.sub;return(0,t.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)(i,{variant:e,size:c?40:56})}),(0,t.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(0,t.jsx)("p",{className:`text-gray-500 ${c?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:h}),o&&(0,t.jsx)("div",{className:"mt-4",children:o.href?(0,t.jsxs)(s.default,{href:o.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,t.jsxs)("button",{onClick:o.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}function l({cmd:e}){let[s,n]=(0,r.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1800)}catch{}};return(0,t.jsxs)("div",{className:"anet-empty-cmd flex items-center gap-2 bg-[#0a0a15] border border-[#2a2a4a] rounded-lg pl-4 pr-1.5 py-1.5 text-xs sm:text-sm",children:[(0,t.jsx)("code",{className:"text-cyan-300 font-mono select-all",children:e}),(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":s?"Copied":"Copy command",className:"shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] transition-colors",children:s?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-green-400",children:[(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M20 6 9 17l-5-5"})}),"Copied"]}):(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,t.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]})}e.s(["EmptyState",0,a,"NodesEmptyState",0,function({hint:e}){return e?.global_count?(0,t.jsx)(a,{variant:"nodes",title:"No agents in this network",sub:`Server has ${e.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`}):(0,t.jsxs)("div",{className:"text-center py-16 px-4",role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)("svg",{viewBox:"0 0 64 64",width:56,height:56,children:(0,t.jsxs)("g",{stroke:"currentColor",strokeWidth:"1.5",fill:"none",children:[(0,t.jsx)("rect",{x:"10",y:"20",width:"44",height:"28",rx:"2"}),(0,t.jsx)("rect",{x:"20",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"32",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"44",y:"32",width:"4",height:"8",opacity:"0.5"}),(0,t.jsx)("line",{x1:"10",y1:"26",x2:"54",y2:"26",opacity:"0.4"}),(0,t.jsx)("circle",{cx:"14",cy:"23",r:"0.8",fill:"currentColor"})]})})}),(0,t.jsx)("h3",{className:"font-medium text-gray-300 text-base",children:"Spin up your first agent"}),(0,t.jsx)("p",{className:"text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed",children:"Run this in a fresh terminal to register an agent with this CommHub:"}),(0,t.jsx)("div",{className:"mt-4 inline-block",children:(0,t.jsx)(l,{cmd:"npx --yes @sleep2agi/agent-network init"})}),(0,t.jsx)("div",{className:"mt-3",children:(0,t.jsxs)("a",{href:"https://anet.sh",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300",children:["Full quickstart guide",(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}])},65822,e=>{"use strict";var t=e.i(83599),r=e.i(58963);let s=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");return t.json()},n={refreshInterval:5e3,dedupingInterval:3e3};function i(e,t){if(!t)return e;let r=e.includes("?")?"&":"?";return`${e}${r}network_id=${encodeURIComponent(t)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,t.default)("/api/anet/config",s,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/health",s,n);return{health:e||null,error:r}},"useLicense",0,function(){let{data:e,error:r}=(0,t.default)("/api/hub/license",s,{refreshInterval:6e4});return{license:e?.ok?e:null,error:r}},"useMessages",0,function(e=100){let{networkId:a}=(0,r.useNetworkId)(),{data:l,error:o,isLoading:c}=(0,t.default)(i(`/api/hub/messages?limit=${e}`,a),s,n);return{messages:l?.messages||[],error:o,isLoading:c}},"useSessions",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l,isLoading:o}=(0,t.default)(i("/api/hub/status",e),s,n);return{sessions:a?.sessions||[],hint:a?._hint,error:l,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,r.useNetworkId)(),{data:a,error:l}=(0,t.default)(i("/api/hub/stats",e),s,n);return{stats:a?.ok?a:null,error:l}},"useTasks",0,function(e){let{networkId:a}=(0,r.useNetworkId)(),l=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:c,isLoading:d}=(0,t.default)(i(`/api/hub/tasks?${l}`,a),s,n);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:c,isLoading:d}}])}]);
|
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":311,"timestamp":189031853852,"id":4,"parentId":1,"tags":{},"startTime":1778560517679,"traceId":"1ed6ff4b0dfff32f"},{"name":"load-custom-routes","duration":451,"timestamp":189031854309,"id":5,"parentId":1,"tags":{},"startTime":1778560517679,"traceId":"1ed6ff4b0dfff32f"},{"name":"create-dist-dir","duration":439,"timestamp":189031854803,"id":6,"parentId":1,"tags":{},"startTime":1778560517680,"traceId":"1ed6ff4b0dfff32f"},{"name":"clean","duration":522,"timestamp":189031856042,"id":7,"parentId":1,"tags":{},"startTime":1778560517681,"traceId":"1ed6ff4b0dfff32f"},{"name":"discover-routes","duration":9391,"timestamp":189031944442,"id":8,"parentId":1,"tags":{},"startTime":1778560517769,"traceId":"1ed6ff4b0dfff32f"},{"name":"create-root-mapping","duration":135,"timestamp":189031953899,"id":9,"parentId":1,"tags":{},"startTime":1778560517779,"traceId":"1ed6ff4b0dfff32f"},{"name":"generate-route-types","duration":32889,"timestamp":189031956373,"id":10,"parentId":1,"tags":{},"startTime":1778560517781,"traceId":"1ed6ff4b0dfff32f"},{"name":"public-dir-conflict-check","duration":116,"timestamp":189031989447,"id":11,"parentId":1,"tags":{},"startTime":1778560517814,"traceId":"1ed6ff4b0dfff32f"},{"name":"generate-routes-manifest","duration":4307,"timestamp":189031989728,"id":12,"parentId":1,"tags":{},"startTime":1778560517814,"traceId":"1ed6ff4b0dfff32f"},{"name":"run-turbopack","duration":8048244,"timestamp":189031999500,"id":14,"parentId":1,"tags":{},"startTime":1778560517824,"traceId":"1ed6ff4b0dfff32f"},{"name":"turbopack-build-events","duration":77,"timestamp":189032285408,"id":15,"parentId":1,"tags":{},"startTime":1778560518110,"traceId":"1ed6ff4b0dfff32f"},{"name":"run-typescript","duration":7741449,"timestamp":189040069263,"id":16,"parentId":1,"tags":{},"startTime":1778560525894,"traceId":"1ed6ff4b0dfff32f"},{"name":"generate-required-server-files","duration":1971,"timestamp":189047811451,"id":18,"parentId":1,"tags":{},"startTime":1778560533636,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-static-error-page","duration":15507,"timestamp":189047889066,"id":20,"parentId":19,"tags":{},"startTime":1778560533714,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":346785,"timestamp":189047906886,"id":62,"parentId":22,"tags":{},"startTime":1778560533732,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":362367,"timestamp":189047891421,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778560533716,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":393318,"timestamp":189047906578,"id":61,"parentId":21,"tags":{},"startTime":1778560533731,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":409818,"timestamp":189047890156,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778560533715,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":434822,"timestamp":189047909527,"id":64,"parentId":26,"tags":{},"startTime":1778560533734,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":450182,"timestamp":189047894228,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778560533719,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":437204,"timestamp":189047909160,"id":63,"parentId":25,"tags":{},"startTime":1778560533734,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":452368,"timestamp":189047894050,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778560533719,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":441613,"timestamp":189047909658,"id":67,"parentId":29,"tags":{},"startTime":1778560533734,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":456776,"timestamp":189047894551,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778560533719,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":448729,"timestamp":189047909621,"id":66,"parentId":28,"tags":{},"startTime":1778560533734,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":463965,"timestamp":189047894441,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778560533719,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":453016,"timestamp":189047909727,"id":69,"parentId":32,"tags":{},"startTime":1778560533734,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":467487,"timestamp":189047895315,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778560533720,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":456908,"timestamp":189047909581,"id":65,"parentId":27,"tags":{},"startTime":1778560533734,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":472212,"timestamp":189047894337,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778560533719,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":456797,"timestamp":189047909907,"id":70,"parentId":33,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":471313,"timestamp":189047895428,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778560533720,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":461345,"timestamp":189047909978,"id":72,"parentId":35,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":475758,"timestamp":189047895623,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778560533720,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":480523,"timestamp":189047909692,"id":68,"parentId":30,"tags":{},"startTime":1778560533734,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":495365,"timestamp":189047894915,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778560533720,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":480548,"timestamp":189047909961,"id":71,"parentId":34,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":495015,"timestamp":189047895521,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778560533720,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":481509,"timestamp":189047910066,"id":73,"parentId":36,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":494589,"timestamp":189047897035,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778560533722,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":484391,"timestamp":189047910094,"id":75,"parentId":38,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":497086,"timestamp":189047897446,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778560533722,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":486745,"timestamp":189047910100,"id":76,"parentId":39,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":499300,"timestamp":189047897588,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778560533722,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":488116,"timestamp":189047910086,"id":74,"parentId":37,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":500963,"timestamp":189047897283,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778560533722,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":488281,"timestamp":189047910111,"id":78,"parentId":41,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":500682,"timestamp":189047897750,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778560533722,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":488449,"timestamp":189047910106,"id":77,"parentId":40,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":500901,"timestamp":189047897675,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778560533722,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":492084,"timestamp":189047910123,"id":80,"parentId":43,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":504352,"timestamp":189047897896,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778560533723,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":492275,"timestamp":189047910117,"id":79,"parentId":42,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":504599,"timestamp":189047897827,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778560533723,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":492379,"timestamp":189047910183,"id":81,"parentId":44,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":504614,"timestamp":189047897973,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778560533723,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":495935,"timestamp":189047910197,"id":83,"parentId":46,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":507979,"timestamp":189047898209,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778560533723,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":496109,"timestamp":189047910192,"id":82,"parentId":45,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":508237,"timestamp":189047898087,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778560533723,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":496596,"timestamp":189047910204,"id":84,"parentId":47,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":508586,"timestamp":189047898286,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778560533723,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":499231,"timestamp":189047910210,"id":85,"parentId":48,"tags":{},"startTime":1778560533735,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":509266,"timestamp":189047900222,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778560533725,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":494840,"timestamp":189047915557,"id":86,"parentId":24,"tags":{},"startTime":1778560533741,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":518527,"timestamp":189047891911,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778560533717,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":493320,"timestamp":189047917216,"id":87,"parentId":31,"tags":{},"startTime":1778560533742,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":515491,"timestamp":189047895066,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778560533720,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":486289,"timestamp":189047932853,"id":90,"parentId":50,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":518435,"timestamp":189047900788,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778560533725,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":490324,"timestamp":189047932862,"id":91,"parentId":51,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":522338,"timestamp":189047900908,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778560533726,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":496310,"timestamp":189047932870,"id":92,"parentId":52,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":528170,"timestamp":189047901070,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778560533726,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":502150,"timestamp":189047932875,"id":93,"parentId":53,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":533867,"timestamp":189047901225,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778560533726,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":509302,"timestamp":189047932884,"id":94,"parentId":55,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":540485,"timestamp":189047901761,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778560533726,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":520255,"timestamp":189047932846,"id":89,"parentId":49,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":552598,"timestamp":189047900601,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778560533725,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":522947,"timestamp":189047932892,"id":95,"parentId":56,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":553998,"timestamp":189047901896,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778560533727,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":525202,"timestamp":189047932897,"id":96,"parentId":58,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":555811,"timestamp":189047902349,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778560533727,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":529000,"timestamp":189047932808,"id":88,"parentId":23,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":570129,"timestamp":189047891726,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778560533716,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":530633,"timestamp":189047932915,"id":98,"parentId":60,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":559365,"timestamp":189047904324,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778560533729,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":534582,"timestamp":189047932924,"id":99,"parentId":57,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":565511,"timestamp":189047902035,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778560533727,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":536824,"timestamp":189047932932,"id":100,"parentId":54,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":568431,"timestamp":189047901374,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778560533726,"traceId":"1ed6ff4b0dfff32f"},{"name":"is-page-static","duration":539515,"timestamp":189047932905,"id":97,"parentId":59,"tags":{},"startTime":1778560533758,"traceId":"1ed6ff4b0dfff32f"},{"name":"check-page","duration":570018,"timestamp":189047902461,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778560533727,"traceId":"1ed6ff4b0dfff32f"},{"name":"static-check","duration":584325,"timestamp":189047888230,"id":19,"parentId":1,"tags":{},"startTime":1778560533713,"traceId":"1ed6ff4b0dfff32f"},{"name":"write-routes-manifest","duration":438,"timestamp":189048480590,"id":102,"parentId":1,"tags":{},"startTime":1778560534305,"traceId":"1ed6ff4b0dfff32f"},{"name":"load-dotenv","duration":58,"timestamp":189048493876,"id":105,"parentId":104,"tags":{},"startTime":1778560534319,"traceId":"1ed6ff4b0dfff32f"},{"name":"run-export-path-map","duration":713,"timestamp":189048497185,"id":106,"parentId":104,"tags":{},"startTime":1778560534322,"traceId":"1ed6ff4b0dfff32f"},{"name":"next-export","duration":592236,"timestamp":189048492402,"id":104,"parentId":1,"tags":{},"startTime":1778560534317,"traceId":"1ed6ff4b0dfff32f"},{"name":"move-exported-app-not-found-","duration":673,"timestamp":189049087965,"id":107,"parentId":103,"tags":{},"startTime":1778560534913,"traceId":"1ed6ff4b0dfff32f"},{"name":"move-exported-app-global-error-","duration":444,"timestamp":189049088737,"id":108,"parentId":103,"tags":{},"startTime":1778560534913,"traceId":"1ed6ff4b0dfff32f"}]
|
|
2
|
-
[{"name":"static-generation","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":291,"timestamp":320425706112,"id":4,"parentId":1,"tags":{},"startTime":1778691911531,"traceId":"cbb398eba7734b34"},{"name":"load-custom-routes","duration":474,"timestamp":320425706552,"id":5,"parentId":1,"tags":{},"startTime":1778691911531,"traceId":"cbb398eba7734b34"},{"name":"create-dist-dir","duration":305,"timestamp":320425707072,"id":6,"parentId":1,"tags":{},"startTime":1778691911532,"traceId":"cbb398eba7734b34"},{"name":"clean","duration":472,"timestamp":320425708033,"id":7,"parentId":1,"tags":{},"startTime":1778691911533,"traceId":"cbb398eba7734b34"},{"name":"discover-routes","duration":10799,"timestamp":320425795163,"id":8,"parentId":1,"tags":{},"startTime":1778691911620,"traceId":"cbb398eba7734b34"},{"name":"create-root-mapping","duration":128,"timestamp":320425806060,"id":9,"parentId":1,"tags":{},"startTime":1778691911631,"traceId":"cbb398eba7734b34"},{"name":"generate-route-types","duration":32311,"timestamp":320425808445,"id":10,"parentId":1,"tags":{},"startTime":1778691911633,"traceId":"cbb398eba7734b34"},{"name":"public-dir-conflict-check","duration":165,"timestamp":320425840939,"id":11,"parentId":1,"tags":{},"startTime":1778691911666,"traceId":"cbb398eba7734b34"},{"name":"generate-routes-manifest","duration":4147,"timestamp":320425841238,"id":12,"parentId":1,"tags":{},"startTime":1778691911666,"traceId":"cbb398eba7734b34"},{"name":"run-turbopack","duration":9827195,"timestamp":320425851224,"id":14,"parentId":1,"tags":{},"startTime":1778691911676,"traceId":"cbb398eba7734b34"},{"name":"turbopack-build-events","duration":139,"timestamp":320426162912,"id":15,"parentId":1,"tags":{},"startTime":1778691911988,"traceId":"cbb398eba7734b34"},{"name":"run-typescript","duration":9537093,"timestamp":320435692226,"id":16,"parentId":1,"tags":{},"startTime":1778691921517,"traceId":"cbb398eba7734b34"},{"name":"generate-required-server-files","duration":7005,"timestamp":320445233632,"id":18,"parentId":1,"tags":{},"startTime":1778691931058,"traceId":"cbb398eba7734b34"},{"name":"check-static-error-page","duration":19288,"timestamp":320445381156,"id":20,"parentId":19,"tags":{},"startTime":1778691931206,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":481245,"timestamp":320445402714,"id":62,"parentId":22,"tags":{},"startTime":1778691931227,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":499841,"timestamp":320445384342,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778691931209,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":552585,"timestamp":320445402794,"id":63,"parentId":25,"tags":{},"startTime":1778691931227,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":567263,"timestamp":320445388195,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778691931213,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":593658,"timestamp":320445402980,"id":65,"parentId":27,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":607338,"timestamp":320445389370,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778691931214,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":598550,"timestamp":320445403032,"id":66,"parentId":28,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":612189,"timestamp":320445389463,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778691931214,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":599418,"timestamp":320445402385,"id":61,"parentId":21,"tags":{},"startTime":1778691931227,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":618833,"timestamp":320445383015,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778691931208,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":622166,"timestamp":320445403072,"id":67,"parentId":29,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":635775,"timestamp":320445389545,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778691931214,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":632655,"timestamp":320445402940,"id":64,"parentId":26,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":646435,"timestamp":320445389243,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778691931214,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":645909,"timestamp":320445403147,"id":69,"parentId":32,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":659060,"timestamp":320445390083,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778691931215,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":652864,"timestamp":320445403257,"id":70,"parentId":33,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":666011,"timestamp":320445390195,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778691931215,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":657956,"timestamp":320445403302,"id":71,"parentId":34,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":671047,"timestamp":320445390269,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778691931215,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":658161,"timestamp":320445403320,"id":72,"parentId":35,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":671158,"timestamp":320445390350,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778691931215,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":668226,"timestamp":320445403394,"id":74,"parentId":37,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":680891,"timestamp":320445390799,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778691931215,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":673105,"timestamp":320445403375,"id":73,"parentId":36,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":685885,"timestamp":320445390681,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778691931215,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":673414,"timestamp":320445403402,"id":75,"parentId":38,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":685978,"timestamp":320445390885,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":679461,"timestamp":320445403114,"id":68,"parentId":30,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":692891,"timestamp":320445389743,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778691931214,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":679357,"timestamp":320445403413,"id":77,"parentId":40,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":691738,"timestamp":320445391063,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":681312,"timestamp":320445403408,"id":76,"parentId":39,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":693860,"timestamp":320445390944,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":686699,"timestamp":320445403419,"id":78,"parentId":41,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":699006,"timestamp":320445391168,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":686887,"timestamp":320445403430,"id":80,"parentId":43,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":699045,"timestamp":320445391300,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":687383,"timestamp":320445403424,"id":79,"parentId":42,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":699621,"timestamp":320445391238,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":691749,"timestamp":320445403446,"id":83,"parentId":46,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":703742,"timestamp":320445391509,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":691956,"timestamp":320445403435,"id":81,"parentId":44,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":704056,"timestamp":320445391365,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":695848,"timestamp":320445403441,"id":82,"parentId":45,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":707906,"timestamp":320445391425,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":696949,"timestamp":320445403451,"id":84,"parentId":47,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":708877,"timestamp":320445391568,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":696625,"timestamp":320445406866,"id":86,"parentId":24,"tags":{},"startTime":1778691931232,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":718760,"timestamp":320445384780,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778691931209,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":697188,"timestamp":320445408021,"id":87,"parentId":31,"tags":{},"startTime":1778691931233,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":715442,"timestamp":320445389828,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778691931215,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":703365,"timestamp":320445403455,"id":85,"parentId":48,"tags":{},"startTime":1778691931228,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":715261,"timestamp":320445391629,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778691931216,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":682857,"timestamp":320445443390,"id":90,"parentId":50,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":734225,"timestamp":320445392102,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778691931217,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":689468,"timestamp":320445443406,"id":91,"parentId":51,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":740678,"timestamp":320445392250,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778691931217,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":697656,"timestamp":320445443415,"id":92,"parentId":52,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":748730,"timestamp":320445392423,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778691931217,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":704090,"timestamp":320445443428,"id":93,"parentId":53,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":754981,"timestamp":320445392602,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778691931217,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":708009,"timestamp":320445443323,"id":88,"parentId":23,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":766797,"timestamp":320445384585,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778691931209,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":713337,"timestamp":320445443454,"id":95,"parentId":56,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":762740,"timestamp":320445394130,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778691931219,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":713540,"timestamp":320445443444,"id":94,"parentId":55,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":763114,"timestamp":320445393903,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778691931219,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":718887,"timestamp":320445443467,"id":96,"parentId":58,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":762437,"timestamp":320445399965,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778691931225,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":724143,"timestamp":320445443492,"id":98,"parentId":60,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":767425,"timestamp":320445400258,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778691931225,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":724919,"timestamp":320445443480,"id":97,"parentId":59,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":768292,"timestamp":320445400154,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778691931225,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":728755,"timestamp":320445443374,"id":89,"parentId":49,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":780239,"timestamp":320445391946,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778691931217,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":729118,"timestamp":320445443509,"id":99,"parentId":54,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":779857,"timestamp":320445392805,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778691931217,"traceId":"cbb398eba7734b34"},{"name":"is-page-static","duration":733610,"timestamp":320445443524,"id":100,"parentId":57,"tags":{},"startTime":1778691931268,"traceId":"cbb398eba7734b34"},{"name":"check-page","duration":782908,"timestamp":320445394283,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778691931219,"traceId":"cbb398eba7734b34"},{"name":"static-check","duration":797190,"timestamp":320445380057,"id":19,"parentId":1,"tags":{},"startTime":1778691931205,"traceId":"cbb398eba7734b34"},{"name":"write-routes-manifest","duration":539,"timestamp":320446183740,"id":102,"parentId":1,"tags":{},"startTime":1778691932008,"traceId":"cbb398eba7734b34"},{"name":"load-dotenv","duration":64,"timestamp":320446196782,"id":105,"parentId":104,"tags":{},"startTime":1778691932021,"traceId":"cbb398eba7734b34"},{"name":"run-export-path-map","duration":740,"timestamp":320446199706,"id":106,"parentId":104,"tags":{},"startTime":1778691932024,"traceId":"cbb398eba7734b34"},{"name":"next-export","duration":554405,"timestamp":320446195395,"id":104,"parentId":1,"tags":{},"startTime":1778691932020,"traceId":"cbb398eba7734b34"},{"name":"move-exported-app-not-found-","duration":607,"timestamp":320446753392,"id":107,"parentId":103,"tags":{},"startTime":1778691932578,"traceId":"cbb398eba7734b34"},{"name":"move-exported-app-global-error-","duration":494,"timestamp":320446754130,"id":108,"parentId":103,"tags":{},"startTime":1778691932579,"traceId":"cbb398eba7734b34"}]
|
|
2
|
+
[{"name":"static-generation","duration":569852,"timestamp":320446189322,"id":103,"parentId":1,"tags":{},"startTime":1778691932014,"traceId":"cbb398eba7734b34"},{"name":"write-routes-manifest","duration":546,"timestamp":320446759371,"id":109,"parentId":1,"tags":{},"startTime":1778691932584,"traceId":"cbb398eba7734b34"},{"name":"print-tree-view","duration":3889,"timestamp":320446774476,"id":110,"parentId":1,"tags":{},"startTime":1778691932599,"traceId":"cbb398eba7734b34"},{"name":"write-route-bundle-stats","duration":11862,"timestamp":320446778409,"id":111,"parentId":1,"tags":{},"startTime":1778691932603,"traceId":"cbb398eba7734b34"},{"name":"telemetry-flush","duration":28224,"timestamp":320446790307,"id":112,"parentId":1,"tags":{},"startTime":1778691932615,"traceId":"cbb398eba7734b34"},{"name":"next-build","duration":21158883,"timestamp":320425659688,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778691911484,"traceId":"cbb398eba7734b34"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":9827195,"timestamp":320425851224,"id":14,"parentId":1,"tags":{},"startTime":1778691911676,"traceId":"cbb398eba7734b34"},{"name":"turbopack-build-events","duration":139,"timestamp":320426162912,"id":15,"parentId":1,"tags":{},"startTime":1778691911988,"traceId":"cbb398eba7734b34"},{"name":"run-typescript","duration":9537093,"timestamp":320435692226,"id":16,"parentId":1,"tags":{},"startTime":1778691921517,"traceId":"cbb398eba7734b34"},{"name":"static-check","duration":797190,"timestamp":320445380057,"id":19,"parentId":1,"tags":{},"startTime":1778691931205,"traceId":"cbb398eba7734b34"},{"name":"static-generation","duration":569852,"timestamp":320446189322,"id":103,"parentId":1,"tags":{},"startTime":1778691932014,"traceId":"cbb398eba7734b34"},{"name":"telemetry-flush","duration":28224,"timestamp":320446790307,"id":112,"parentId":1,"tags":{},"startTime":1778691932615,"traceId":"cbb398eba7734b34"},{"name":"next-build","duration":21158883,"timestamp":320425659688,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778691911484,"traceId":"cbb398eba7734b34"}]
|
package/app/admin/page.tsx
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
import { useSessions, useHealth, useStats } from '../lib/hooks';
|
|
5
5
|
import { timeAgo } from '../components/utils';
|
|
6
|
+
import { AliasAvatar } from '../components/AliasAvatar';
|
|
7
|
+
import { STATUS_CHIP_CLASS, SESSION_STATUS_CHIP_CLASS } from '../lib/status';
|
|
6
8
|
|
|
7
9
|
export default function AdminPage() {
|
|
8
10
|
const { sessions } = useSessions();
|
|
@@ -72,9 +74,32 @@ export default function AdminPage() {
|
|
|
72
74
|
|
|
73
75
|
return (
|
|
74
76
|
<div className="min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono">
|
|
75
|
-
<h1 className="text-2xl font-bold text-white mb-
|
|
77
|
+
<h1 className="text-2xl font-bold text-white mb-3 lg:ml-0 ml-10">Admin</h1>
|
|
78
|
+
|
|
79
|
+
{/* Section anchor nav — same pattern as Settings r28. */}
|
|
80
|
+
<nav className="mb-8 flex flex-wrap gap-1 text-xs">
|
|
81
|
+
{[
|
|
82
|
+
{ href: '#status', label: 'Status' },
|
|
83
|
+
{ href: '#actions', label: 'Actions' },
|
|
84
|
+
{ href: '#users', label: 'Users' },
|
|
85
|
+
].map(a => (
|
|
86
|
+
<a key={a.href} href={a.href}
|
|
87
|
+
className="rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors">
|
|
88
|
+
{a.label}
|
|
89
|
+
</a>
|
|
90
|
+
))}
|
|
91
|
+
</nav>
|
|
92
|
+
|
|
93
|
+
<div className="max-w-6xl space-y-10">
|
|
94
|
+
|
|
95
|
+
{/* ── Group: Status ─────────────────────────────────────── */}
|
|
96
|
+
<div id="status" className="space-y-4 scroll-mt-6">
|
|
97
|
+
<div className="flex items-center gap-2 px-1">
|
|
98
|
+
<div className="text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold">Status</div>
|
|
99
|
+
<div className="flex-1 h-px bg-[#2a2a4a]" />
|
|
100
|
+
</div>
|
|
101
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4">
|
|
76
102
|
|
|
77
|
-
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6 max-w-6xl">
|
|
78
103
|
{/* Server Overview */}
|
|
79
104
|
<section className="bg-[#111128] border border-[#2a2a4a] rounded-xl p-5">
|
|
80
105
|
<h2 className="text-sm font-semibold text-gray-300 mb-4">Server Overview</h2>
|
|
@@ -89,7 +114,9 @@ export default function AdminPage() {
|
|
|
89
114
|
</div>
|
|
90
115
|
<div>
|
|
91
116
|
<div className="text-3xl font-bold text-cyan-400 tabular-nums">{health?.sse_connections ?? '--'}</div>
|
|
92
|
-
<div className="text-xs text-gray-500">
|
|
117
|
+
<div className="text-xs text-gray-500">
|
|
118
|
+
SSE Streams <span className="text-gray-600">· server</span>
|
|
119
|
+
</div>
|
|
93
120
|
</div>
|
|
94
121
|
<div>
|
|
95
122
|
<div className="text-3xl font-bold text-white tabular-nums">{stats?.tasks?.total ?? '--'}</div>
|
|
@@ -97,9 +124,13 @@ export default function AdminPage() {
|
|
|
97
124
|
</div>
|
|
98
125
|
</div>
|
|
99
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. */
|
|
100
131
|
<div className="mt-4 flex flex-wrap gap-2">
|
|
101
132
|
{stats.tasks.by_status.map((s: { status: string; count: number }) => (
|
|
102
|
-
<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'}`}>
|
|
103
134
|
{s.status}: {s.count}
|
|
104
135
|
</span>
|
|
105
136
|
))}
|
|
@@ -107,6 +138,53 @@ export default function AdminPage() {
|
|
|
107
138
|
)}
|
|
108
139
|
</section>
|
|
109
140
|
|
|
141
|
+
{/* Online Sessions — pulled into Status group (was below Send Task) */}
|
|
142
|
+
<section className="bg-[#111128] border border-[#2a2a4a] rounded-xl p-5">
|
|
143
|
+
<h2 className="text-sm font-semibold text-gray-300 mb-4">
|
|
144
|
+
Online Sessions <span className="text-gray-600">({onlineNodes.length})</span>
|
|
145
|
+
</h2>
|
|
146
|
+
<div className="space-y-2 max-h-80 overflow-y-auto">
|
|
147
|
+
{onlineNodes.length === 0 ? (
|
|
148
|
+
<div className="text-xs text-gray-600 text-center py-4">No online sessions</div>
|
|
149
|
+
) : onlineNodes.map(s => (
|
|
150
|
+
<div key={s.alias} className="flex items-center gap-3 bg-[#0a0a15] rounded-lg px-3 py-2 border border-[#1a1a2a]">
|
|
151
|
+
<AliasAvatar alias={s.alias} size={20} />
|
|
152
|
+
<div className="min-w-0 flex-1">
|
|
153
|
+
<div className="text-sm text-white font-medium truncate">{s.alias}</div>
|
|
154
|
+
<div className="text-xs text-gray-500 truncate">{s.agent || '--'} · {s.task || 'idle'}</div>
|
|
155
|
+
</div>
|
|
156
|
+
<div className="flex items-center gap-2 shrink-0">
|
|
157
|
+
{/* Round 91: 5-state palette via shared
|
|
158
|
+
SESSION_STATUS_CHIP_CLASS (was working-vs-other, which
|
|
159
|
+
rendered blocked/error identical to idle). */}
|
|
160
|
+
<span className={`text-xs px-2 py-0.5 rounded border ${SESSION_STATUS_CHIP_CLASS[s.status] || SESSION_STATUS_CHIP_CLASS.idle}`}>{s.status}</span>
|
|
161
|
+
<span className="text-[10px] text-gray-600">{timeAgo(s.updated_at)}</span>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
))}
|
|
165
|
+
</div>
|
|
166
|
+
</section>
|
|
167
|
+
|
|
168
|
+
</div>
|
|
169
|
+
</div>
|
|
170
|
+
|
|
171
|
+
{/* ── Group: Actions ────────────────────────────────────── */}
|
|
172
|
+
<div id="actions" className="space-y-4 scroll-mt-6">
|
|
173
|
+
<div className="flex items-center gap-2 px-1">
|
|
174
|
+
<div className="text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold">Actions</div>
|
|
175
|
+
<div className="flex-1 h-px bg-[#2a2a4a]" />
|
|
176
|
+
</div>
|
|
177
|
+
{sessions.length === 0 ? (
|
|
178
|
+
/* Round 77: Broadcast and Send Task both require at least one
|
|
179
|
+
registered agent. Surfacing the empty cards above an empty
|
|
180
|
+
fleet is the same dead-control class as the Overview
|
|
181
|
+
Dispatch button (r70). Replace with a single inline hint. */
|
|
182
|
+
<div className="bg-[#111128] border border-[#2a2a4a] rounded-xl px-5 py-4 text-sm text-gray-500">
|
|
183
|
+
Broadcast and Send Task become available after the first agent registers.
|
|
184
|
+
</div>
|
|
185
|
+
) : (
|
|
186
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4">
|
|
187
|
+
|
|
110
188
|
{/* Broadcast */}
|
|
111
189
|
<section className="bg-[#111128] border border-[#2a2a4a] rounded-xl p-5">
|
|
112
190
|
<h2 className="text-sm font-semibold text-gray-300 mb-4">Broadcast</h2>
|
|
@@ -167,30 +245,18 @@ export default function AdminPage() {
|
|
|
167
245
|
{taskResult && <div className={`mt-2 text-xs ${taskResult.startsWith('Failed') ? 'text-red-400' : 'text-green-400'}`}>{taskResult}</div>}
|
|
168
246
|
</section>
|
|
169
247
|
|
|
170
|
-
{/* Online Sessions */}
|
|
171
|
-
<section className="bg-[#111128] border border-[#2a2a4a] rounded-xl p-5">
|
|
172
|
-
<h2 className="text-sm font-semibold text-gray-300 mb-4">
|
|
173
|
-
Online Sessions <span className="text-gray-600">({onlineNodes.length})</span>
|
|
174
|
-
</h2>
|
|
175
|
-
<div className="space-y-2 max-h-80 overflow-y-auto">
|
|
176
|
-
{onlineNodes.length === 0 ? (
|
|
177
|
-
<div className="text-xs text-gray-600 text-center py-4">No online sessions</div>
|
|
178
|
-
) : onlineNodes.map(s => (
|
|
179
|
-
<div key={s.alias} className="flex items-center justify-between bg-[#0a0a15] rounded-lg px-3 py-2 border border-[#1a1a2a]">
|
|
180
|
-
<div className="min-w-0">
|
|
181
|
-
<div className="text-sm text-white font-medium truncate">{s.alias}</div>
|
|
182
|
-
<div className="text-xs text-gray-500 truncate">{s.agent || '--'} · {s.task || 'idle'}</div>
|
|
183
|
-
</div>
|
|
184
|
-
<div className="flex items-center gap-2 shrink-0">
|
|
185
|
-
<span className={`text-xs px-2 py-0.5 rounded border ${
|
|
186
|
-
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'
|
|
187
|
-
}`}>{s.status}</span>
|
|
188
|
-
<span className="text-[10px] text-gray-600">{timeAgo(s.updated_at)}</span>
|
|
189
|
-
</div>
|
|
190
|
-
</div>
|
|
191
|
-
))}
|
|
192
248
|
</div>
|
|
193
|
-
|
|
249
|
+
)}
|
|
250
|
+
</div>
|
|
251
|
+
|
|
252
|
+
{/* ── Group: Users ──────────────────────────────────────── */}
|
|
253
|
+
<div id="users" className="space-y-4 scroll-mt-6">
|
|
254
|
+
<div className="flex items-center gap-2 px-1">
|
|
255
|
+
<div className="text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold">Users</div>
|
|
256
|
+
<div className="flex-1 h-px bg-[#2a2a4a]" />
|
|
257
|
+
</div>
|
|
258
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4">
|
|
259
|
+
|
|
194
260
|
{/* User Management (V3 Auth) */}
|
|
195
261
|
<section className="bg-[#111128] border border-[#2a2a4a] rounded-xl p-5">
|
|
196
262
|
<h2 className="text-sm font-semibold text-gray-300 mb-4">Register User (V3)</h2>
|
|
@@ -219,6 +285,10 @@ export default function AdminPage() {
|
|
|
219
285
|
</div>
|
|
220
286
|
{regResult && <div className={`mt-2 text-xs ${regResult.startsWith('Failed') ? 'text-red-400' : 'text-green-400'}`}>{regResult}</div>}
|
|
221
287
|
</section>
|
|
288
|
+
|
|
289
|
+
</div>
|
|
290
|
+
</div>
|
|
291
|
+
|
|
222
292
|
</div>
|
|
223
293
|
</div>
|
|
224
294
|
);
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import Link from 'next/link';
|
|
4
4
|
import { Session } from './types';
|
|
5
5
|
import { timeAgo } from './utils';
|
|
6
|
+
import { AliasAvatar } from './AliasAvatar';
|
|
6
7
|
|
|
7
8
|
interface AgentCardProps {
|
|
8
9
|
session: Session;
|
|
@@ -27,17 +28,20 @@ export function AgentCard({ session: s, hasSse, sseCount, onChat }: AgentCardPro
|
|
|
27
28
|
<Link
|
|
28
29
|
href={`/node?alias=${encodeURIComponent(s.alias)}`}
|
|
29
30
|
prefetch={false}
|
|
30
|
-
className={`block rounded-xl border p-4 transition-all duration-300 cursor-pointer ${
|
|
31
|
+
className={`anet-agent-card group relative block rounded-xl border p-4 transition-all duration-300 cursor-pointer hover:-translate-y-0.5 ${
|
|
31
32
|
hasSse
|
|
32
33
|
? `bg-[#111128] border-[#2a2a4a] hover:border-cyan-500/30 hover:shadow-lg ${cfg.glow}`
|
|
33
34
|
: 'bg-[#0d0d1a] border-[#1a1a2a] opacity-40'
|
|
34
35
|
}`}
|
|
35
36
|
>
|
|
36
|
-
{/* Header: name + status
|
|
37
|
+
{/* Header: avatar + name + status. Avatar carries the alias→hue map
|
|
38
|
+
shared with Messages/Nodes/Tasks/Overview; the live status dot
|
|
39
|
+
stays as a small pulse-capable indicator. */}
|
|
37
40
|
<div className="flex items-center justify-between mb-3">
|
|
38
41
|
<div className="flex items-center gap-2 min-w-0">
|
|
39
|
-
<
|
|
42
|
+
<AliasAvatar alias={s.alias} size={22} />
|
|
40
43
|
<span className="font-semibold text-white truncate text-sm" title={s.alias}>{s.alias}</span>
|
|
44
|
+
<span className={`inline-block w-1.5 h-1.5 rounded-full shrink-0 ${cfg.dot} ${hasSse && s.status === 'working' ? 'animate-pulse' : ''}`} />
|
|
41
45
|
</div>
|
|
42
46
|
<span className={`text-[11px] px-2 py-0.5 rounded-md border shrink-0 ${cfg.bg} ${cfg.text}`}>
|
|
43
47
|
{hasSse ? s.status : 'offline'}
|
|
@@ -79,9 +83,12 @@ export function AgentCard({ session: s, hasSse, sseCount, onChat }: AgentCardPro
|
|
|
79
83
|
</div>
|
|
80
84
|
)}
|
|
81
85
|
|
|
82
|
-
{/* Footer: time + chat
|
|
86
|
+
{/* Footer: time + chat + hover chevron affordance (round 44).
|
|
87
|
+
The card is a <Link> so it's clickable everywhere, but with no
|
|
88
|
+
visible cue users may not realise. Chevron appears on hover and
|
|
89
|
+
slides right ~2px for a "drill in" hint. */}
|
|
83
90
|
<div className="mt-3 flex justify-between items-center text-[10px] text-gray-600">
|
|
84
|
-
<span>{s.server || '--'}</span>
|
|
91
|
+
<span className="truncate" title={s.server || ''}>{s.server || '--'}</span>
|
|
85
92
|
<div className="flex items-center gap-2">
|
|
86
93
|
{onChat && hasSse && (
|
|
87
94
|
<button
|
|
@@ -92,6 +99,13 @@ export function AgentCard({ session: s, hasSse, sseCount, onChat }: AgentCardPro
|
|
|
92
99
|
</button>
|
|
93
100
|
)}
|
|
94
101
|
<span>{timeAgo(s.updated_at)}</span>
|
|
102
|
+
<svg
|
|
103
|
+
aria-hidden
|
|
104
|
+
className="w-3 h-3 text-gray-700 opacity-0 -translate-x-1 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-200"
|
|
105
|
+
fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"
|
|
106
|
+
>
|
|
107
|
+
<path d="M9 18l6-6-6-6" />
|
|
108
|
+
</svg>
|
|
95
109
|
</div>
|
|
96
110
|
</div>
|
|
97
111
|
</Link>
|
|
@@ -48,16 +48,34 @@ export function BroadcastBar() {
|
|
|
48
48
|
onClick={sendBroadcast}
|
|
49
49
|
disabled={broadcasting || !broadcastMsg.trim()}
|
|
50
50
|
aria-label="Send broadcast"
|
|
51
|
-
className="px-5 py-2.5 bg-blue-600 hover:bg-blue-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-all font-medium cursor-pointer disabled:cursor-not-allowed"
|
|
51
|
+
className="flex items-center gap-2 px-5 py-2.5 bg-blue-600 hover:bg-blue-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-all font-medium cursor-pointer disabled:cursor-not-allowed"
|
|
52
52
|
>
|
|
53
|
-
{broadcasting ?
|
|
53
|
+
{broadcasting ? (
|
|
54
|
+
<>
|
|
55
|
+
<svg aria-hidden className="w-4 h-4 animate-spin" viewBox="0 0 24 24" fill="none">
|
|
56
|
+
<circle cx="12" cy="12" r="10" stroke="currentColor" strokeWidth="3" opacity="0.25" />
|
|
57
|
+
<path d="M4 12a8 8 0 018-8" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
|
|
58
|
+
</svg>
|
|
59
|
+
<span>Sending…</span>
|
|
60
|
+
</>
|
|
61
|
+
) : (
|
|
62
|
+
<>
|
|
63
|
+
{/* Megaphone icon — "broadcast to all" affordance */}
|
|
64
|
+
<svg aria-hidden className="w-4 h-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round">
|
|
65
|
+
<path d="M3 11v3a1 1 0 0 0 1 1h2l3.29 3.29a1 1 0 0 0 1.71-.71V7.42a1 1 0 0 0-1.71-.71L6 10H4a1 1 0 0 0-1 1Z" />
|
|
66
|
+
<path d="M16 8a5 5 0 0 1 0 6" opacity="0.7" />
|
|
67
|
+
<path d="M19 5a9 9 0 0 1 0 12" opacity="0.45" />
|
|
68
|
+
</svg>
|
|
69
|
+
<span>Broadcast</span>
|
|
70
|
+
</>
|
|
71
|
+
)}
|
|
54
72
|
</button>
|
|
55
73
|
</div>
|
|
56
74
|
{broadcastMsg.length > 0 && (
|
|
57
|
-
<div className="text-right text-xs text-gray-600 mt-1">{broadcastMsg.length}/500</div>
|
|
75
|
+
<div className="text-right text-xs text-gray-600 mt-1 tabular-nums">{broadcastMsg.length}/500</div>
|
|
58
76
|
)}
|
|
59
77
|
{broadcastResult && (
|
|
60
|
-
<div className={`mt-3 text-sm text-center ${broadcastResult.startsWith('Failed') ? 'text-red-400' : 'text-green-400/80'}
|
|
78
|
+
<div className={`mt-3 text-sm text-center anet-fade-in ${broadcastResult.startsWith('Failed') ? 'text-red-400' : 'text-green-400/80'}`}>
|
|
61
79
|
{broadcastResult}
|
|
62
80
|
</div>
|
|
63
81
|
)}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
import type { Session } from './types';
|
|
5
|
+
import { AliasAvatar } from './AliasAvatar';
|
|
5
6
|
|
|
6
7
|
interface DispatchPanelProps {
|
|
7
8
|
sessions: Session[];
|
|
@@ -71,8 +72,8 @@ export function DispatchPanel({ sessions, onClose }: DispatchPanelProps) {
|
|
|
71
72
|
|
|
72
73
|
return (
|
|
73
74
|
<>
|
|
74
|
-
<div className="fixed inset-0 bg-black/50 z-40" onClick={onClose} />
|
|
75
|
-
<div className="fixed inset-4 lg:inset-x-[15%] lg:inset-y-[5%] bg-[#0a0a1a] border border-[#2a2a4a] rounded-2xl z-50 flex flex-col shadow-2xl shadow-black/70 overflow-hidden">
|
|
75
|
+
<div className="fixed inset-0 bg-black/50 z-40 anet-fade-in" onClick={onClose} />
|
|
76
|
+
<div className="fixed inset-4 lg:inset-x-[15%] lg:inset-y-[5%] bg-[#0a0a1a] border border-[#2a2a4a] rounded-2xl z-50 flex flex-col shadow-2xl shadow-black/70 overflow-hidden anet-fade-in">
|
|
76
77
|
{/* Header */}
|
|
77
78
|
<div className="flex items-center justify-between px-6 py-4 border-b border-[#2a2a4a] bg-[#0d0d1a]">
|
|
78
79
|
<div>
|
|
@@ -108,7 +109,8 @@ export function DispatchPanel({ sessions, onClose }: DispatchPanelProps) {
|
|
|
108
109
|
className={`w-full flex items-center gap-2 px-3 py-2 rounded-lg text-xs text-left transition-colors ${
|
|
109
110
|
selected.has(s.alias) ? 'bg-cyan-500/10 text-cyan-300 border border-cyan-500/20' : 'text-gray-400 hover:bg-[#1a1a2a]'
|
|
110
111
|
}`}>
|
|
111
|
-
<
|
|
112
|
+
<AliasAvatar alias={s.alias} size={16} />
|
|
113
|
+
<div className={`w-1.5 h-1.5 rounded-full shrink-0 ${s.status === 'working' ? 'bg-green-400' : s.status === 'idle' ? 'bg-cyan-400' : 'bg-gray-500'}`} />
|
|
112
114
|
<span className="truncate flex-1">{s.alias}</span>
|
|
113
115
|
<span className="text-[9px] text-gray-600">{s.agent || '--'}</span>
|
|
114
116
|
</button>
|
|
@@ -159,10 +161,12 @@ export function DispatchPanel({ sessions, onClose }: DispatchPanelProps) {
|
|
|
159
161
|
</div>
|
|
160
162
|
<div className="flex flex-wrap gap-1.5">
|
|
161
163
|
{results.map(r => (
|
|
162
|
-
<span key={r.alias} className={`text-[10px]
|
|
164
|
+
<span key={r.alias} className={`flex items-center gap-1.5 text-[10px] pl-1 pr-2 py-0.5 rounded-full border ${
|
|
163
165
|
r.ok ? 'text-green-300 border-green-500/20 bg-green-500/5' : 'text-red-300 border-red-500/20 bg-red-500/5'
|
|
164
166
|
}`}>
|
|
165
|
-
{r.alias}
|
|
167
|
+
<AliasAvatar alias={r.alias} size={14} />
|
|
168
|
+
<span>{r.alias}</span>
|
|
169
|
+
<span aria-hidden>{r.ok ? '✓' : r.error || '✗'}</span>
|
|
166
170
|
</span>
|
|
167
171
|
))}
|
|
168
172
|
</div>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { useState } from 'react';
|
|
3
4
|
import Link from 'next/link';
|
|
4
5
|
|
|
5
6
|
export type EmptyVariant = 'nodes' | 'tasks' | 'messages' | 'logs' | 'tokens' | 'networks' | 'generic';
|
|
@@ -180,10 +181,82 @@ export function NodesEmptyState({ hint }: { hint?: { global_count?: number; filt
|
|
|
180
181
|
/>
|
|
181
182
|
);
|
|
182
183
|
}
|
|
184
|
+
// Round 52: true empty state (zero agents anywhere) — show the
|
|
185
|
+
// quickstart command inline so users don't have to leave the dashboard
|
|
186
|
+
// to figure out how to spin up their first agent.
|
|
183
187
|
return (
|
|
184
|
-
<
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
+
<div className="text-center py-16 px-4" role="status">
|
|
189
|
+
<div className="anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500" aria-hidden>
|
|
190
|
+
<svg viewBox="0 0 64 64" width={56} height={56}>
|
|
191
|
+
<g stroke="currentColor" strokeWidth="1.5" fill="none">
|
|
192
|
+
<rect x="10" y="20" width="44" height="28" rx="2" />
|
|
193
|
+
<rect x="20" y="32" width="6" height="8" opacity="0.5" />
|
|
194
|
+
<rect x="32" y="32" width="6" height="8" opacity="0.5" />
|
|
195
|
+
<rect x="44" y="32" width="4" height="8" opacity="0.5" />
|
|
196
|
+
<line x1="10" y1="26" x2="54" y2="26" opacity="0.4" />
|
|
197
|
+
<circle cx="14" cy="23" r="0.8" fill="currentColor" />
|
|
198
|
+
</g>
|
|
199
|
+
</svg>
|
|
200
|
+
</div>
|
|
201
|
+
<h3 className="font-medium text-gray-300 text-base">Spin up your first agent</h3>
|
|
202
|
+
<p className="text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed">
|
|
203
|
+
Run this in a fresh terminal to register an agent with this CommHub:
|
|
204
|
+
</p>
|
|
205
|
+
<div className="mt-4 inline-block">
|
|
206
|
+
<QuickstartCommand cmd="npx --yes @sleep2agi/agent-network init" />
|
|
207
|
+
</div>
|
|
208
|
+
<div className="mt-3">
|
|
209
|
+
<a
|
|
210
|
+
href="https://anet.sh"
|
|
211
|
+
target="_blank"
|
|
212
|
+
rel="noopener noreferrer"
|
|
213
|
+
className="inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300"
|
|
214
|
+
>
|
|
215
|
+
Full quickstart guide
|
|
216
|
+
<span aria-hidden>→</span>
|
|
217
|
+
</a>
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/** Code block + inline copy button used by the empty-Overview first-run
|
|
224
|
+
* CTA. State lives here so the parent stays stateless. */
|
|
225
|
+
function QuickstartCommand({ cmd }: { cmd: string }) {
|
|
226
|
+
const [copied, setCopied] = useState(false);
|
|
227
|
+
const onCopy = async () => {
|
|
228
|
+
try {
|
|
229
|
+
await navigator.clipboard.writeText(cmd);
|
|
230
|
+
setCopied(true);
|
|
231
|
+
setTimeout(() => setCopied(false), 1800);
|
|
232
|
+
} catch {}
|
|
233
|
+
};
|
|
234
|
+
return (
|
|
235
|
+
<div className="anet-empty-cmd flex items-center gap-2 bg-[#0a0a15] border border-[#2a2a4a] rounded-lg pl-4 pr-1.5 py-1.5 text-xs sm:text-sm">
|
|
236
|
+
<code className="text-cyan-300 font-mono select-all">{cmd}</code>
|
|
237
|
+
<button
|
|
238
|
+
type="button"
|
|
239
|
+
onClick={onCopy}
|
|
240
|
+
aria-label={copied ? 'Copied' : 'Copy command'}
|
|
241
|
+
className="shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] transition-colors"
|
|
242
|
+
>
|
|
243
|
+
{copied ? (
|
|
244
|
+
<span className="flex items-center gap-1 text-green-400">
|
|
245
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
|
|
246
|
+
<path d="M20 6 9 17l-5-5" />
|
|
247
|
+
</svg>
|
|
248
|
+
Copied
|
|
249
|
+
</span>
|
|
250
|
+
) : (
|
|
251
|
+
<span className="flex items-center gap-1">
|
|
252
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round">
|
|
253
|
+
<rect x="9" y="9" width="13" height="13" rx="2" ry="2" />
|
|
254
|
+
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />
|
|
255
|
+
</svg>
|
|
256
|
+
Copy
|
|
257
|
+
</span>
|
|
258
|
+
)}
|
|
259
|
+
</button>
|
|
260
|
+
</div>
|
|
188
261
|
);
|
|
189
262
|
}
|