@sleep2agi/agent-network-dashboard 0.5.1-preview.129 → 0.5.1-preview.130
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +5 -5
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.html +1 -1
- package/.next/server/app/admin.rsc +1 -1
- package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/logs.html +1 -1
- package/.next/server/app/logs.rsc +1 -1
- package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
- package/.next/server/app/messages.html +1 -1
- package/.next/server/app/messages.rsc +1 -1
- package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
- package/.next/server/app/node.html +1 -1
- package/.next/server/app/node.rsc +1 -1
- package/.next/server/app/node.segments/_full.segment.rsc +1 -1
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +1 -1
- package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/node.segments/node.segment.rsc +1 -1
- package/.next/server/app/nodes.html +1 -1
- package/.next/server/app/nodes.rsc +1 -1
- package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +1 -1
- package/.next/server/app/server-logs.rsc +1 -1
- package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
- package/.next/server/app/settings/networks.html +1 -1
- package/.next/server/app/settings/networks.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +1 -1
- package/.next/server/app/settings/tokens.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/tasks.html +1 -1
- package/.next/server/app/tasks.rsc +1 -1
- package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__03b.f76._.js → [root-of-the-server]__0sv~g.o._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -0
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +3 -3
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/{08bketha9kpv_.js → 0-at-u3ty_q5z.js} +1 -1
- package/.next/static/chunks/{0rlt_bj4n.xgj.js → 0kz7356-vy97a.js} +1 -1
- package/.next/static/chunks/{03~~oirxz7~vc.js → 0phbmewz8hp6a.js} +1 -1
- package/.next/static/chunks/{06j7msbe75u6b.js → 11xegdodzgys0.js} +3 -3
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/TopoGraph.tsx +26 -0
- package/package.json +1 -1
- package/scripts/topo-dashboard-version-attr-test.mjs +69 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__03b.f76._.js.map +0 -1
- /package/.next/static/{ZvjSzTKwpk2ghAXzLuIx4 → ZPH3qUPz78tGunqc1tq8i}/_buildManifest.js +0 -0
- /package/.next/static/{ZvjSzTKwpk2ghAXzLuIx4 → ZPH3qUPz78tGunqc1tq8i}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{ZvjSzTKwpk2ghAXzLuIx4 → ZPH3qUPz78tGunqc1tq8i}/_ssgManifest.js +0 -0
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":262,"timestamp":172773327248,"id":4,"parentId":1,"tags":{},"startTime":1778980745574,"traceId":"2163415dfc031f56"},{"name":"load-custom-routes","duration":497,"timestamp":172773327649,"id":5,"parentId":1,"tags":{},"startTime":1778980745574,"traceId":"2163415dfc031f56"},{"name":"create-dist-dir","duration":674,"timestamp":172773328189,"id":6,"parentId":1,"tags":{},"startTime":1778980745574,"traceId":"2163415dfc031f56"},{"name":"clean","duration":32655,"timestamp":172773329549,"id":7,"parentId":1,"tags":{},"startTime":1778980745576,"traceId":"2163415dfc031f56"},{"name":"discover-routes","duration":9797,"timestamp":172773444826,"id":8,"parentId":1,"tags":{},"startTime":1778980745691,"traceId":"2163415dfc031f56"},{"name":"create-root-mapping","duration":130,"timestamp":172773454679,"id":9,"parentId":1,"tags":{},"startTime":1778980745701,"traceId":"2163415dfc031f56"},{"name":"generate-route-types","duration":34602,"timestamp":172773457222,"id":10,"parentId":1,"tags":{},"startTime":1778980745704,"traceId":"2163415dfc031f56"},{"name":"public-dir-conflict-check","duration":127,"timestamp":172773491922,"id":11,"parentId":1,"tags":{},"startTime":1778980745738,"traceId":"2163415dfc031f56"},{"name":"generate-routes-manifest","duration":4617,"timestamp":172773492180,"id":12,"parentId":1,"tags":{},"startTime":1778980745738,"traceId":"2163415dfc031f56"},{"name":"run-turbopack","duration":6159803,"timestamp":172773502780,"id":14,"parentId":1,"tags":{},"startTime":1778980745749,"traceId":"2163415dfc031f56"},{"name":"turbopack-build-events","duration":102,"timestamp":172773789555,"id":15,"parentId":1,"tags":{},"startTime":1778980746036,"traceId":"2163415dfc031f56"},{"name":"run-typescript","duration":9478282,"timestamp":172779671078,"id":16,"parentId":1,"tags":{},"startTime":1778980751917,"traceId":"2163415dfc031f56"},{"name":"generate-required-server-files","duration":2446,"timestamp":172789150815,"id":18,"parentId":1,"tags":{},"startTime":1778980761397,"traceId":"2163415dfc031f56"},{"name":"check-static-error-page","duration":12884,"timestamp":172789354332,"id":20,"parentId":19,"tags":{},"startTime":1778980761601,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":524056,"timestamp":172789371370,"id":65,"parentId":22,"tags":{},"startTime":1778980761618,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":538808,"timestamp":172789356794,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778980761603,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":529483,"timestamp":172789371607,"id":67,"parentId":26,"tags":{},"startTime":1778980761618,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":541824,"timestamp":172789359359,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778980761606,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":537204,"timestamp":172789372248,"id":72,"parentId":32,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":549525,"timestamp":172789359999,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778980761606,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":539387,"timestamp":172789371507,"id":66,"parentId":25,"tags":{},"startTime":1778980761618,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":551730,"timestamp":172789359217,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778980761605,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":567189,"timestamp":172789371809,"id":69,"parentId":28,"tags":{},"startTime":1778980761618,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":579562,"timestamp":172789359542,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778980761606,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":567194,"timestamp":172789372450,"id":74,"parentId":34,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":579471,"timestamp":172789360222,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778980761606,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":585071,"timestamp":172789372383,"id":73,"parentId":33,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":597378,"timestamp":172789360147,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778980761606,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":585295,"timestamp":172789372488,"id":76,"parentId":36,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":597180,"timestamp":172789360643,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778980761607,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":591181,"timestamp":172789372527,"id":78,"parentId":38,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":602870,"timestamp":172789360915,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778980761607,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":592501,"timestamp":172789372475,"id":75,"parentId":35,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":604761,"timestamp":172789360303,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778980761607,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":597667,"timestamp":172789372540,"id":79,"parentId":39,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":609279,"timestamp":172789360981,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778980761607,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":601524,"timestamp":172789372512,"id":77,"parentId":37,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":613272,"timestamp":172789360818,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778980761607,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":607775,"timestamp":172789372571,"id":82,"parentId":44,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":618622,"timestamp":172789361774,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778980761608,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":611066,"timestamp":172789372578,"id":83,"parentId":45,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":621777,"timestamp":172789361918,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778980761608,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":612237,"timestamp":172789372559,"id":81,"parentId":42,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":623525,"timestamp":172789361334,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1778980761608,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":615725,"timestamp":172789372592,"id":84,"parentId":46,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":626329,"timestamp":172789362040,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778980761608,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":616673,"timestamp":172789372062,"id":70,"parentId":29,"tags":{},"startTime":1778980761618,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":629192,"timestamp":172789359617,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778980761606,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":622176,"timestamp":172789372604,"id":85,"parentId":47,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":631609,"timestamp":172789363226,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778980761610,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":622440,"timestamp":172789372547,"id":80,"parentId":40,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":633967,"timestamp":172789361076,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778980761607,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":630893,"timestamp":172789372618,"id":86,"parentId":48,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":640291,"timestamp":172789363341,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778980761610,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":631194,"timestamp":172789372638,"id":88,"parentId":50,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":640694,"timestamp":172789363482,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778980761610,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":631796,"timestamp":172789372626,"id":87,"parentId":49,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":641044,"timestamp":172789363424,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778980761610,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":638129,"timestamp":172789371016,"id":64,"parentId":21,"tags":{},"startTime":1778980761617,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":653508,"timestamp":172789355680,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778980761602,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":641444,"timestamp":172789371705,"id":68,"parentId":27,"tags":{},"startTime":1778980761618,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":653740,"timestamp":172789359459,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778980761606,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":634082,"timestamp":172789381683,"id":92,"parentId":41,"tags":{},"startTime":1778980761628,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":654671,"timestamp":172789361138,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1778980761607,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":635803,"timestamp":172789380844,"id":91,"parentId":31,"tags":{},"startTime":1778980761627,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":656887,"timestamp":172789359800,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778980761606,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":643942,"timestamp":172789379943,"id":90,"parentId":24,"tags":{},"startTime":1778980761626,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":666726,"timestamp":172789357206,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778980761603,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":661864,"timestamp":172789372650,"id":89,"parentId":51,"tags":{},"startTime":1778980761619,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":671034,"timestamp":172789363556,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778980761610,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":736369,"timestamp":172789400719,"id":96,"parentId":53,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":773190,"timestamp":172789363980,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1778980761610,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":745478,"timestamp":172789400769,"id":99,"parentId":56,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":781825,"timestamp":172789364503,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778980761611,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":768025,"timestamp":172789383053,"id":93,"parentId":43,"tags":{},"startTime":1778980761629,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":789683,"timestamp":172789361467,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778980761608,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":779741,"timestamp":172789372195,"id":71,"parentId":30,"tags":{},"startTime":1778980761618,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":792276,"timestamp":172789359714,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778980761606,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":754416,"timestamp":172789400733,"id":97,"parentId":54,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":791088,"timestamp":172789364129,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1778980761610,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":757278,"timestamp":172789400782,"id":100,"parentId":58,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":793177,"timestamp":172789365966,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778980761612,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":758663,"timestamp":172789400703,"id":95,"parentId":52,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":795546,"timestamp":172789363868,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1778980761610,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":774132,"timestamp":172789400904,"id":101,"parentId":59,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":808911,"timestamp":172789366188,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778980761612,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":789383,"timestamp":172789400950,"id":104,"parentId":63,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":823697,"timestamp":172789366985,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778980761613,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":790249,"timestamp":172789400937,"id":103,"parentId":62,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":824486,"timestamp":172789366862,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778980761613,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":791112,"timestamp":172789400959,"id":105,"parentId":57,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":827371,"timestamp":172789364766,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1778980761611,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":787382,"timestamp":172789406389,"id":106,"parentId":60,"tags":{},"startTime":1778980761653,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":827469,"timestamp":172789366349,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1778980761613,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":794104,"timestamp":172789400755,"id":98,"parentId":55,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":830612,"timestamp":172789364286,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1778980761611,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":808900,"timestamp":172789400666,"id":94,"parentId":23,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":852633,"timestamp":172789356995,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778980761603,"traceId":"2163415dfc031f56"},{"name":"is-page-static","duration":834186,"timestamp":172789400919,"id":102,"parentId":61,"tags":{},"startTime":1778980761647,"traceId":"2163415dfc031f56"},{"name":"check-page","duration":868460,"timestamp":172789366722,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778980761613,"traceId":"2163415dfc031f56"},{"name":"static-check","duration":881815,"timestamp":172789353412,"id":19,"parentId":1,"tags":{},"startTime":1778980761600,"traceId":"2163415dfc031f56"}]
|
|
2
|
-
[{"name":"write-routes-manifest","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":430,"timestamp":173264540611,"id":4,"parentId":1,"tags":{},"startTime":1778981236787,"traceId":"d081d98e5bb3e179"},{"name":"load-custom-routes","duration":590,"timestamp":173264541243,"id":5,"parentId":1,"tags":{},"startTime":1778981236788,"traceId":"d081d98e5bb3e179"},{"name":"create-dist-dir","duration":976,"timestamp":173264541895,"id":6,"parentId":1,"tags":{},"startTime":1778981236788,"traceId":"d081d98e5bb3e179"},{"name":"clean","duration":41823,"timestamp":173264543962,"id":7,"parentId":1,"tags":{},"startTime":1778981236790,"traceId":"d081d98e5bb3e179"},{"name":"discover-routes","duration":25108,"timestamp":173264679165,"id":8,"parentId":1,"tags":{},"startTime":1778981236925,"traceId":"d081d98e5bb3e179"},{"name":"create-root-mapping","duration":161,"timestamp":173264704360,"id":9,"parentId":1,"tags":{},"startTime":1778981236951,"traceId":"d081d98e5bb3e179"},{"name":"generate-route-types","duration":22236,"timestamp":173264707449,"id":10,"parentId":1,"tags":{},"startTime":1778981236954,"traceId":"d081d98e5bb3e179"},{"name":"public-dir-conflict-check","duration":136,"timestamp":173264729807,"id":11,"parentId":1,"tags":{},"startTime":1778981236976,"traceId":"d081d98e5bb3e179"},{"name":"generate-routes-manifest","duration":6204,"timestamp":173264730144,"id":12,"parentId":1,"tags":{},"startTime":1778981236976,"traceId":"d081d98e5bb3e179"},{"name":"run-turbopack","duration":9656100,"timestamp":173264753790,"id":14,"parentId":1,"tags":{},"startTime":1778981237000,"traceId":"d081d98e5bb3e179"},{"name":"turbopack-build-events","duration":109,"timestamp":173265116556,"id":15,"parentId":1,"tags":{},"startTime":1778981237363,"traceId":"d081d98e5bb3e179"},{"name":"run-typescript","duration":11948762,"timestamp":173274423098,"id":16,"parentId":1,"tags":{},"startTime":1778981246669,"traceId":"d081d98e5bb3e179"},{"name":"generate-required-server-files","duration":3131,"timestamp":173286373108,"id":18,"parentId":1,"tags":{},"startTime":1778981258619,"traceId":"d081d98e5bb3e179"},{"name":"check-static-error-page","duration":12531,"timestamp":173286639820,"id":20,"parentId":19,"tags":{},"startTime":1778981258886,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":791802,"timestamp":173286656700,"id":67,"parentId":26,"tags":{},"startTime":1778981258903,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":803737,"timestamp":173286644942,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778981258891,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":798114,"timestamp":173286657219,"id":71,"parentId":30,"tags":{},"startTime":1778981258903,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":810079,"timestamp":173286645341,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778981258892,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":818495,"timestamp":173286657283,"id":72,"parentId":32,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":830240,"timestamp":173286645623,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778981258892,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":823738,"timestamp":173286657448,"id":73,"parentId":33,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":835500,"timestamp":173286645757,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778981258892,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":835215,"timestamp":173286657059,"id":70,"parentId":29,"tags":{},"startTime":1778981258903,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":847113,"timestamp":173286645242,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778981258892,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":849271,"timestamp":173286657526,"id":74,"parentId":34,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":861016,"timestamp":173286645871,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778981258892,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":865044,"timestamp":173286657580,"id":76,"parentId":36,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":876336,"timestamp":173286646372,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778981258893,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":869800,"timestamp":173286657607,"id":77,"parentId":37,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":880980,"timestamp":173286646490,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778981258893,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":875097,"timestamp":173286657621,"id":78,"parentId":38,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":886230,"timestamp":173286646581,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778981258893,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":884061,"timestamp":173286657640,"id":79,"parentId":39,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":895100,"timestamp":173286646667,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778981258893,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":886243,"timestamp":173286657559,"id":75,"parentId":35,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":897877,"timestamp":173286645986,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778981258892,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":896552,"timestamp":173286657653,"id":80,"parentId":40,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":907486,"timestamp":173286646779,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778981258893,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":900545,"timestamp":173286657675,"id":82,"parentId":44,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":910844,"timestamp":173286647426,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778981258894,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":904930,"timestamp":173286657688,"id":83,"parentId":45,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":915166,"timestamp":173286647508,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778981258894,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":909693,"timestamp":173286657700,"id":84,"parentId":46,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":919873,"timestamp":173286647569,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778981258894,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":914058,"timestamp":173286657710,"id":85,"parentId":47,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":924162,"timestamp":173286647651,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778981258894,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":918510,"timestamp":173286657723,"id":86,"parentId":48,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":926949,"timestamp":173286649348,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778981258896,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":923372,"timestamp":173286657749,"id":87,"parentId":49,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":931705,"timestamp":173286649465,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778981258896,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":925620,"timestamp":173286657662,"id":81,"parentId":42,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":936437,"timestamp":173286647138,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1778981258893,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":929388,"timestamp":173286656075,"id":64,"parentId":21,"tags":{},"startTime":1778981258902,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":944518,"timestamp":173286640989,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778981258887,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":929525,"timestamp":173286657757,"id":88,"parentId":50,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":937801,"timestamp":173286649524,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778981258896,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":932700,"timestamp":173286657769,"id":89,"parentId":51,"tags":{},"startTime":1778981258904,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":940944,"timestamp":173286649577,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778981258896,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":910396,"timestamp":173286683500,"id":91,"parentId":31,"tags":{},"startTime":1778981258930,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":948520,"timestamp":173286645418,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778981258892,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":915619,"timestamp":173286684462,"id":92,"parentId":41,"tags":{},"startTime":1778981258931,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":953267,"timestamp":173286646867,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1778981258893,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":917756,"timestamp":173286685760,"id":93,"parentId":43,"tags":{},"startTime":1778981258932,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":956323,"timestamp":173286647241,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778981258894,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":979850,"timestamp":173286688068,"id":94,"parentId":23,"tags":{},"startTime":1778981258934,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1025504,"timestamp":173286642486,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778981258889,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":987356,"timestamp":173286688116,"id":96,"parentId":53,"tags":{},"startTime":1778981258934,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1025490,"timestamp":173286650046,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1778981258896,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":998521,"timestamp":173286688129,"id":97,"parentId":54,"tags":{},"startTime":1778981258934,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1036556,"timestamp":173286650181,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1778981258896,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1004956,"timestamp":173286688104,"id":95,"parentId":52,"tags":{},"startTime":1778981258934,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1043237,"timestamp":173286649894,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1778981258896,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1011741,"timestamp":173286688155,"id":99,"parentId":56,"tags":{},"startTime":1778981258934,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1049502,"timestamp":173286650458,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778981258897,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1018892,"timestamp":173286688165,"id":100,"parentId":58,"tags":{},"startTime":1778981258934,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1056002,"timestamp":173286651117,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778981258897,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1019118,"timestamp":173286688142,"id":98,"parentId":55,"tags":{},"startTime":1778981258934,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1056966,"timestamp":173286650321,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1778981258897,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1033999,"timestamp":173286688287,"id":101,"parentId":59,"tags":{},"startTime":1778981258935,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1071053,"timestamp":173286651334,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778981258898,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1041795,"timestamp":173286688307,"id":102,"parentId":61,"tags":{},"startTime":1778981258935,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1078382,"timestamp":173286651792,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778981258898,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1054532,"timestamp":173286688330,"id":104,"parentId":63,"tags":{},"startTime":1778981258935,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1090828,"timestamp":173286652105,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778981258898,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1089661,"timestamp":173286656785,"id":68,"parentId":27,"tags":{},"startTime":1778981258903,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1101438,"timestamp":173286645064,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778981258891,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1067107,"timestamp":173286688317,"id":103,"parentId":62,"tags":{},"startTime":1778981258935,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1103541,"timestamp":173286651941,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778981258898,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1058880,"timestamp":173286696682,"id":105,"parentId":60,"tags":{},"startTime":1778981258943,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1104120,"timestamp":173286651463,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1778981258898,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1110058,"timestamp":173286656473,"id":65,"parentId":22,"tags":{},"startTime":1778981258903,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1124333,"timestamp":173286642281,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778981258889,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1111511,"timestamp":173286656618,"id":66,"parentId":25,"tags":{},"startTime":1778981258903,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1123424,"timestamp":173286644765,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778981258891,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1111224,"timestamp":173286678335,"id":90,"parentId":24,"tags":{},"startTime":1778981258925,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1146972,"timestamp":173286642658,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778981258889,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1075753,"timestamp":173286762357,"id":106,"parentId":57,"tags":{},"startTime":1778981259009,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1187556,"timestamp":173286650621,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1778981258897,"traceId":"d081d98e5bb3e179"},{"name":"is-page-static","duration":1240489,"timestamp":173286656851,"id":69,"parentId":28,"tags":{},"startTime":1778981258903,"traceId":"d081d98e5bb3e179"},{"name":"check-page","duration":1252268,"timestamp":173286645158,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778981258891,"traceId":"d081d98e5bb3e179"},{"name":"static-check","duration":1258631,"timestamp":173286638993,"id":19,"parentId":1,"tags":{},"startTime":1778981258885,"traceId":"d081d98e5bb3e179"}]
|
|
2
|
+
[{"name":"write-routes-manifest","duration":604,"timestamp":173287908589,"id":108,"parentId":1,"tags":{},"startTime":1778981260155,"traceId":"d081d98e5bb3e179"},{"name":"load-dotenv","duration":64,"timestamp":173287924173,"id":111,"parentId":110,"tags":{},"startTime":1778981260170,"traceId":"d081d98e5bb3e179"},{"name":"run-export-path-map","duration":912,"timestamp":173287928290,"id":112,"parentId":110,"tags":{},"startTime":1778981260175,"traceId":"d081d98e5bb3e179"},{"name":"next-export","duration":910199,"timestamp":173287922320,"id":110,"parentId":1,"tags":{},"startTime":1778981260169,"traceId":"d081d98e5bb3e179"},{"name":"move-exported-app-not-found-","duration":2754,"timestamp":173288836860,"id":113,"parentId":109,"tags":{},"startTime":1778981261083,"traceId":"d081d98e5bb3e179"},{"name":"move-exported-app-global-error-","duration":549,"timestamp":173288839796,"id":114,"parentId":109,"tags":{},"startTime":1778981261086,"traceId":"d081d98e5bb3e179"},{"name":"static-generation","duration":928393,"timestamp":173287914661,"id":109,"parentId":1,"tags":{},"startTime":1778981260161,"traceId":"d081d98e5bb3e179"},{"name":"write-routes-manifest","duration":1225,"timestamp":173288843427,"id":115,"parentId":1,"tags":{},"startTime":1778981261090,"traceId":"d081d98e5bb3e179"},{"name":"print-tree-view","duration":6344,"timestamp":173288930328,"id":116,"parentId":1,"tags":{},"startTime":1778981261177,"traceId":"d081d98e5bb3e179"},{"name":"write-route-bundle-stats","duration":29257,"timestamp":173288936724,"id":117,"parentId":1,"tags":{},"startTime":1778981261183,"traceId":"d081d98e5bb3e179"},{"name":"telemetry-flush","duration":119,"timestamp":173288966051,"id":118,"parentId":1,"tags":{},"startTime":1778981261212,"traceId":"d081d98e5bb3e179"},{"name":"next-build","duration":24512793,"timestamp":173264453409,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778981236700,"traceId":"d081d98e5bb3e179"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":9656100,"timestamp":173264753790,"id":14,"parentId":1,"tags":{},"startTime":1778981237000,"traceId":"d081d98e5bb3e179"},{"name":"turbopack-build-events","duration":109,"timestamp":173265116556,"id":15,"parentId":1,"tags":{},"startTime":1778981237363,"traceId":"d081d98e5bb3e179"},{"name":"run-typescript","duration":11948762,"timestamp":173274423098,"id":16,"parentId":1,"tags":{},"startTime":1778981246669,"traceId":"d081d98e5bb3e179"},{"name":"static-check","duration":1258631,"timestamp":173286638993,"id":19,"parentId":1,"tags":{},"startTime":1778981258885,"traceId":"d081d98e5bb3e179"},{"name":"static-generation","duration":928393,"timestamp":173287914661,"id":109,"parentId":1,"tags":{},"startTime":1778981260161,"traceId":"d081d98e5bb3e179"},{"name":"telemetry-flush","duration":119,"timestamp":173288966051,"id":118,"parentId":1,"tags":{},"startTime":1778981261212,"traceId":"d081d98e5bb3e179"},{"name":"next-build","duration":24512793,"timestamp":173264453409,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778981236700,"traceId":"d081d98e5bb3e179"}]
|
|
@@ -8,6 +8,7 @@ import { aliasAvatarColors, aliasInitial } from './AliasAvatar';
|
|
|
8
8
|
import { ChatPopover } from './ChatPopover';
|
|
9
9
|
import { vendorForModel, runtimeIdentity, identityLine } from '../lib/vendorIdentity';
|
|
10
10
|
import { parseHubTime, relativeAgo } from '../lib/time';
|
|
11
|
+
import { DASHBOARD_VERSION } from '../lib/version';
|
|
11
12
|
|
|
12
13
|
/** v0.10.0 Hero 1+2 / §3.F server-health hook — fetches the normalized
|
|
13
14
|
* /api/hub/servers payload (preview.370 unblocked real-data via the
|
|
@@ -3457,6 +3458,31 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
3457
3458
|
return `Agent network topology — ${parts.join(' · ')}. Tab to navigate nodes, double-click canvas to reset view.`;
|
|
3458
3459
|
})()}
|
|
3459
3460
|
data-topo-canvas-aria
|
|
3461
|
+
/* Round 462 / Loop — surface DASHBOARD_VERSION on the root SVG
|
|
3462
|
+
element as `data-dashboard-version`. Directly closes the
|
|
3463
|
+
feedback_dash_zombie_port_3000.md memory rule: "verify ships
|
|
3464
|
+
via SVG DOM, not tmux 'Ready' — zombie next-servers + stale
|
|
3465
|
+
global installs silently serve old code". Pre-R462 the only
|
|
3466
|
+
ways to know which preview the dash was serving were:
|
|
3467
|
+
1. parse the npm registry for the latest tag (network)
|
|
3468
|
+
2. fetch /api/dashboard/version (API surface, no DOM)
|
|
3469
|
+
3. inspect the /login footer or /settings page (off-route)
|
|
3470
|
+
Test scripts that probe TopoGraph DOM (overlap, group-label
|
|
3471
|
+
tint, pip strip, etc.) couldn't tell whether the dash was
|
|
3472
|
+
actually serving the build they expected to verify. R462
|
|
3473
|
+
threads DASHBOARD_VERSION through to the root <svg> so:
|
|
3474
|
+
- Playwright probes can read svg[data-dashboard-version]
|
|
3475
|
+
directly + fail-fast on stale-build mismatch
|
|
3476
|
+
- the memory rule's manual zombie check ("inspect SVG
|
|
3477
|
+
dom") becomes a one-attr probe
|
|
3478
|
+
- operators DOM-inspect to confirm the live version
|
|
3479
|
+
matches the npm tag without leaving the topology page
|
|
3480
|
+
Geometry/visual impact: ZERO (data-* attrs don't paint).
|
|
3481
|
+
The version string is build-time injected via the existing
|
|
3482
|
+
DASHBOARD_VERSION constant (R51 footer + R51 settings page
|
|
3483
|
+
already consume it from app/lib/version.ts → reads
|
|
3484
|
+
package.json pkg.version). No business logic added. */
|
|
3485
|
+
data-dashboard-version={DASHBOARD_VERSION}
|
|
3460
3486
|
onPointerDown={onPointerDown}
|
|
3461
3487
|
onPointerMove={onPointerMove}
|
|
3462
3488
|
onPointerUp={onPointerUp}
|
package/package.json
CHANGED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/* Round 462 verification: TopoGraph root <svg> exposes the
|
|
2
|
+
* shipped DASHBOARD_VERSION via data-dashboard-version attr.
|
|
3
|
+
* Closes the feedback_dash_zombie_port_3000.md memory rule:
|
|
4
|
+
* "verify ships via SVG DOM, not tmux 'Ready'" — pre-R462 there
|
|
5
|
+
* was no in-DOM signal of which build the dash was serving.
|
|
6
|
+
*
|
|
7
|
+
* Contract:
|
|
8
|
+
* - svg[viewBox="0 0 1000 680"] reports data-dashboard-version
|
|
9
|
+
* matching package.json#version (a non-empty string that
|
|
10
|
+
* starts with a digit)
|
|
11
|
+
* - the dash is serving the EXPECTED preview (rejects zombie
|
|
12
|
+
* server scenarios where DOM and package.json disagree)
|
|
13
|
+
* - source-file conditional wired (import + attr presence)
|
|
14
|
+
*/
|
|
15
|
+
import { chromium } from 'playwright';
|
|
16
|
+
import { readFileSync } from 'node:fs';
|
|
17
|
+
|
|
18
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
19
|
+
const expected = JSON.parse(readFileSync('/home/vansin/agent-network-dashboard/package.json', 'utf8')).version;
|
|
20
|
+
|
|
21
|
+
const browser = await chromium.launch({ headless: true });
|
|
22
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
|
|
23
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
24
|
+
await ctx.addInitScript(() => {
|
|
25
|
+
try {
|
|
26
|
+
localStorage.setItem('anet-theme', 'cyber');
|
|
27
|
+
localStorage.setItem('anet-topo-layout', 'grid');
|
|
28
|
+
sessionStorage.setItem('anet_v3_auth', '1');
|
|
29
|
+
} catch {}
|
|
30
|
+
});
|
|
31
|
+
await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
|
|
32
|
+
await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
|
|
33
|
+
|
|
34
|
+
const page = await ctx.newPage();
|
|
35
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
|
|
36
|
+
await page.waitForSelector('svg[viewBox="0 0 1000 680"]', { timeout: 15000 });
|
|
37
|
+
await page.waitForTimeout(400);
|
|
38
|
+
|
|
39
|
+
const probe = await page.evaluate(() => {
|
|
40
|
+
const svg = document.querySelector('svg[viewBox="0 0 1000 680"]');
|
|
41
|
+
return {
|
|
42
|
+
attr: svg ? svg.getAttribute('data-dashboard-version') : null,
|
|
43
|
+
hasSvg: !!svg,
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
|
|
48
|
+
const sourceHasImport = /import \{ DASHBOARD_VERSION \} from '\.\.\/lib\/version'/.test(src);
|
|
49
|
+
const sourceHasAttr = /data-dashboard-version=\{DASHBOARD_VERSION\}/.test(src);
|
|
50
|
+
|
|
51
|
+
await browser.close();
|
|
52
|
+
|
|
53
|
+
const attrPresent = typeof probe.attr === 'string' && probe.attr.length > 0;
|
|
54
|
+
const attrIsVersionish = attrPresent && /^\d/.test(probe.attr);
|
|
55
|
+
const attrMatchesPkg = probe.attr === expected;
|
|
56
|
+
|
|
57
|
+
const results = {
|
|
58
|
+
svg_present: probe.hasSvg,
|
|
59
|
+
attr_present: attrPresent,
|
|
60
|
+
attr_is_version_shape: attrIsVersionish,
|
|
61
|
+
attr_matches_package: attrMatchesPkg,
|
|
62
|
+
source_import_wired: sourceHasImport,
|
|
63
|
+
source_attr_wired: sourceHasAttr,
|
|
64
|
+
};
|
|
65
|
+
const ok = Object.values(results).every(Boolean);
|
|
66
|
+
console.log(`${ok ? '✅' : '❌'} svg data-dashboard-version:`, JSON.stringify(results),
|
|
67
|
+
'\n expected:', expected,
|
|
68
|
+
'\n found:', probe.attr);
|
|
69
|
+
process.exit(ok ? 0 : 1);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../agent-network-dashboard/app/lib/status.ts","../../../../../agent-network-dashboard/app/lib/time.ts","../../../../../agent-network-dashboard/app/components/utils.ts","../../../../../agent-network-dashboard/app/components/AliasAvatar.tsx","../../../../../agent-network-dashboard/app/components/EmptyState.tsx","../../../../../agent-network-dashboard/app/lib/hooks.ts"],"sourcesContent":["/** Single source of truth for task status colors. Both `/tasks` (chip\n * strip, badge, distribution bar) and the Overview Recent Activity row\n * used to ship their own incomplete maps; round 66 consolidates them\n * here so adding a new status updates every consumer at once.\n *\n * Order in `TASK_STATUSES` is chronological-ish: lifecycle progress on\n * the left, terminal-good (`closed`) in the middle, terminal-bad\n * (`failed`/`cancelled`/`expired`) on the right. */\n\nexport const TASK_STATUSES = [\n 'created',\n 'delivered',\n 'acked',\n 'running',\n 'replied',\n 'closed',\n 'failed',\n 'cancelled',\n 'expired',\n] as const;\n\nexport type TaskStatus = typeof TASK_STATUSES[number];\n\n/** Pill / chip background+text+border. Tailwind classes, not inlined hex,\n * because chips are static class names safe from purge. */\nexport const STATUS_CHIP_CLASS: Record<string, string> = {\n created: 'bg-gray-500/10 text-gray-400 border-gray-500/20',\n delivered: 'bg-blue-500/10 text-blue-300 border-blue-500/20',\n acked: 'bg-cyan-500/10 text-cyan-300 border-cyan-500/20',\n running: 'bg-green-500/10 text-green-300 border-green-500/20',\n replied: 'bg-purple-500/10 text-purple-300 border-purple-500/20',\n closed: 'bg-gray-500/10 text-gray-500 border-gray-500/20',\n failed: 'bg-red-500/10 text-red-300 border-red-500/20',\n cancelled: 'bg-yellow-500/10 text-yellow-300 border-yellow-500/20',\n expired: 'bg-orange-500/10 text-orange-300 border-orange-500/20',\n};\n\n/** Inline hex dots — used wherever Tailwind would purge dynamic class\n * names (`bg-${family}-400`). Style attribute carries the color. */\nexport const STATUS_DOT_HEX: Record<string, string> = {\n created: '#9ca3af',\n delivered: '#60a5fa',\n acked: '#22d3ee',\n running: '#4ade80',\n replied: '#a78bfa',\n closed: '#6b7280',\n failed: '#f87171',\n cancelled: '#facc15',\n expired: '#fb923c',\n};\n\n/** Session lifecycle (distinct from task lifecycle above). Shared by\n * /nodes status pills and /admin Online Sessions row chips so an\n * agent in `blocked` state reads the same color everywhere.\n * Round 91 — extracted from app/nodes/page.tsx. */\nexport const SESSION_STATUS_CHIP_CLASS: Record<string, string> = {\n working: 'bg-green-500/10 text-green-300 border-green-500/20',\n idle: 'bg-blue-500/10 text-blue-300 border-blue-500/20',\n blocked: 'bg-yellow-500/10 text-yellow-300 border-yellow-500/20',\n error: 'bg-red-500/10 text-red-300 border-red-500/20',\n offline: 'bg-gray-500/10 text-gray-500 border-gray-500/20',\n};\n\n/** Text-only color for session status. Used where a chip background\n * would be too heavy — e.g. /node detail header status label. */\nexport const SESSION_STATUS_TEXT_CLASS: Record<string, string> = {\n working: 'text-green-400',\n idle: 'text-blue-400',\n blocked: 'text-yellow-400',\n error: 'text-red-400',\n offline: 'text-gray-500',\n};\n\n/** Solid bar segment background for the Tasks distribution bar. */\nexport const STATUS_BAR_CLASS: Record<string, string> = {\n created: 'bg-gray-500',\n delivered: 'bg-blue-500',\n acked: 'bg-cyan-500',\n running: 'bg-green-500',\n replied: 'bg-purple-500',\n closed: 'bg-gray-600',\n failed: 'bg-red-500',\n cancelled: 'bg-yellow-500',\n expired: 'bg-orange-500',\n};\n","/** Shared timestamp helpers for hub-sourced data.\n *\n * Background — the CommHub serialises timestamps SQL-style without a\n * zone (\"2026-05-15 06:00:28\"), but some test data uses full ISO\n * (\"…T06:00:28Z\"). `Date.parse` on bare SQL is **local-time** in every\n * browser the dashboard supports, so a UTC+8 operator silently sees\n * every timestamp 8 h older than reality (Round 35 dug this out via\n * the `isGhost` filter mis-fire).\n *\n * Round 38 / Loop consolidates parsing — TopoGraph (R35), ChatPopover\n * (R37) and utils.ts::timeAgo all mirrored the same SQL→UTC rewrite;\n * one source of truth here. */\n\n/** Parse a hub timestamp to ms-since-epoch, treating SQL-style strings\n * as UTC. ISO strings (with `T`) bypass the rewrite and are parsed as-is.\n * Returns null for empty / unparseable input. */\nexport function parseHubTime(dateStr: string | null | undefined): number | null {\n if (!dateStr) return null;\n const iso = dateStr.includes('T') ? dateStr : dateStr.replace(' ', 'T') + 'Z';\n const t = Date.parse(iso);\n return Number.isFinite(t) ? t : null;\n}\n\n/** Format `dateStr` as a short relative-time string (\"6m ago\" / \"2h ago\").\n * Future timestamps (clock skew) collapse to \"just now\". Returns null when\n * the input doesn't parse — callers can decide on a fallback. */\nexport function relativeAgo(dateStr: string | null | undefined): string | null {\n const t = parseHubTime(dateStr);\n if (t === null) return null;\n const s = Math.floor((Date.now() - t) / 1000);\n if (s < 0) return 'just now';\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","/** 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\n// Round 44 / Loop: timeAgo now delegates to the shared lib/time helper.\n// The old in-line `replace + 'Z'` parse appended a Z to already-ISO\n// inputs (producing \"…ZZ\", browser-fragile) — strict-superset semantics\n// preserved for SQL-style inputs, fixed for ISO. Plus a 'just now' fallback\n// when clock skew puts the timestamp in the future. Five callers benefit:\n// /admin · /logs · /settings/networks · InboxPanel · /messages.\nimport { relativeAgo } from '../lib/time';\nexport function timeAgo(dateStr: string): string {\n return relativeAgo(dateStr) ?? '--';\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","'use client';\n\nimport { useState } from 'react';\nimport Link from 'next/link';\n\nexport type EmptyVariant = 'nodes' | 'tasks' | 'messages' | 'logs' | 'tokens' | 'networks' | 'generic';\n\ninterface EmptyStateProps {\n /** Picks the icon glyph and default copy if title/sub omitted. */\n variant?: EmptyVariant;\n /** Optional override headline. */\n title?: string;\n /** Optional override sub-copy. */\n sub?: string;\n /** Optional CTA: text + href (internal) or onClick. */\n cta?: { label: string; href?: string; onClick?: () => void };\n /** Compact mode for in-card empty states (smaller padding). */\n compact?: boolean;\n}\n\nconst DEFAULTS: Record<EmptyVariant, { title: string; sub: string }> = {\n nodes: { title: 'No agents in this network', sub: 'Agent sessions will appear here once they connect to the CommHub.' },\n tasks: { title: 'No tasks yet', sub: 'Tasks will appear here when agents send them via CommHub.' },\n messages: { title: 'No messages', sub: 'Messages between agents will appear here.' },\n logs: { title: 'No audit logs', sub: 'Events will appear here when users register, login, or perform actions.' },\n tokens: { title: 'No API tokens', sub: 'Create one to authenticate CLI tools and external integrations.' },\n networks: { title: 'No networks found', sub: 'Create one or sign in with V3 auth to see your networks.' },\n generic: { title: 'Nothing here yet', sub: 'Data will appear here once available.' },\n};\n\n/**\n * Minimal monochrome SVG glyphs per variant. No filled shapes, no gradients,\n * no AI-decoration — just thin-stroke line art that fades into the page.\n * 64×64 viewBox; rendered at 56×56 (compact 40×40).\n */\nfunction Glyph({ variant, size }: { variant: EmptyVariant; size: number }) {\n const s = { width: size, height: size };\n const baseProps = {\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 1.25,\n strokeLinecap: 'round' as const,\n strokeLinejoin: 'round' as const,\n };\n\n switch (variant) {\n case 'nodes':\n // Mesh with dashed edges = \"nodes will land here\"\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <circle cx=\"32\" cy=\"14\" r=\"4\" />\n <circle cx=\"14\" cy=\"44\" r=\"4\" />\n <circle cx=\"50\" cy=\"44\" r=\"4\" />\n <line x1=\"32\" y1=\"18\" x2=\"14\" y2=\"40\" strokeDasharray=\"3 3\" opacity=\"0.6\" />\n <line x1=\"32\" y1=\"18\" x2=\"50\" y2=\"40\" strokeDasharray=\"3 3\" opacity=\"0.6\" />\n <line x1=\"18\" y1=\"44\" x2=\"46\" y2=\"44\" strokeDasharray=\"3 3\" opacity=\"0.6\" />\n </g>\n </svg>\n );\n case 'tasks':\n // Empty checkbox list\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <rect x=\"14\" y=\"14\" width=\"36\" height=\"6\" rx=\"1.5\" />\n <rect x=\"14\" y=\"26\" width=\"36\" height=\"6\" rx=\"1.5\" opacity=\"0.6\" />\n <rect x=\"14\" y=\"38\" width=\"36\" height=\"6\" rx=\"1.5\" opacity=\"0.35\" />\n </g>\n </svg>\n );\n case 'messages':\n // Speech bubble outline\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <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\" />\n <line x1=\"22\" y1=\"28\" x2=\"42\" y2=\"28\" opacity=\"0.5\" />\n <line x1=\"22\" y1=\"34\" x2=\"36\" y2=\"34\" opacity=\"0.5\" />\n </g>\n </svg>\n );\n case 'logs':\n // Document with lines\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <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\" />\n <path d=\"M40 12 v8 h8\" opacity=\"0.6\" />\n <line x1=\"24\" y1=\"32\" x2=\"40\" y2=\"32\" opacity=\"0.55\" />\n <line x1=\"24\" y1=\"38\" x2=\"40\" y2=\"38\" opacity=\"0.4\" />\n <line x1=\"24\" y1=\"44\" x2=\"34\" y2=\"44\" opacity=\"0.25\" />\n </g>\n </svg>\n );\n case 'tokens':\n // Key outline\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <circle cx=\"22\" cy=\"32\" r=\"8\" />\n <line x1=\"30\" y1=\"32\" x2=\"54\" y2=\"32\" />\n <line x1=\"44\" y1=\"32\" x2=\"44\" y2=\"38\" />\n <line x1=\"50\" y1=\"32\" x2=\"50\" y2=\"40\" />\n </g>\n </svg>\n );\n case 'networks':\n // Globe-ish concentric ovals\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <circle cx=\"32\" cy=\"32\" r=\"18\" />\n <ellipse cx=\"32\" cy=\"32\" rx=\"18\" ry=\"9\" opacity=\"0.55\" />\n <line x1=\"14\" y1=\"32\" x2=\"50\" y2=\"32\" opacity=\"0.55\" />\n <line x1=\"32\" y1=\"14\" x2=\"32\" y2=\"50\" opacity=\"0.55\" />\n </g>\n </svg>\n );\n case 'generic':\n default:\n // Soft sparkle outline\n return (\n <svg viewBox=\"0 0 64 64\" {...s}>\n <g {...baseProps}>\n <circle cx=\"32\" cy=\"32\" r=\"14\" strokeDasharray=\"3 3\" opacity=\"0.6\" />\n <circle cx=\"32\" cy=\"32\" r=\"3\" />\n </g>\n </svg>\n );\n }\n}\n\nexport function EmptyState({ variant = 'generic', title, sub, cta, compact = false }: EmptyStateProps) {\n const d = DEFAULTS[variant];\n const headline = title ?? d.title;\n const subcopy = sub ?? d.sub;\n const iconSize = compact ? 40 : 56;\n\n return (\n <div className={`text-center ${compact ? 'py-8' : 'py-16'} px-4`} role=\"status\">\n <div className=\"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500\" aria-hidden>\n <Glyph variant={variant} size={iconSize} />\n </div>\n <h3 className={`font-medium text-gray-300 ${compact ? 'text-sm' : 'text-base'}`}>{headline}</h3>\n {subcopy && (\n <p className={`text-gray-500 ${compact ? 'text-xs mt-1.5' : 'text-sm mt-2'} max-w-md mx-auto leading-relaxed`}>\n {subcopy}\n </p>\n )}\n {cta && (\n <div className=\"mt-4\">\n {cta.href ? (\n <Link href={cta.href} className=\"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300\">\n {cta.label}\n <span aria-hidden>→</span>\n </Link>\n ) : (\n <button onClick={cta.onClick} className=\"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300\">\n {cta.label}\n <span aria-hidden>→</span>\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n\n/** Round 105 (issue #90): centered card shell so the Overview empty state\n * reads as an intentional, layout-aligned card instead of bare text\n * floating in the content column. */\nfunction EmptyCard({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"max-w-2xl mx-auto rounded-xl border border-[#2a2a4a] bg-[#111128] shadow-lg shadow-black/20\">\n {children}\n </div>\n );\n}\n\n/**\n * Overview-specific variant. Three cases:\n * 1. network-mismatch — agents exist globally, none in this network\n * 2. agents-offline — 0 registered now BUT task history exists, so this\n * is NOT a first run (round 105 / issue #90: showing \"Spin up your\n * first agent\" next to \"acked: 499\" was misleading)\n * 3. true first-run — 0 agents, 0 history → quickstart command\n */\nexport function NodesEmptyState({\n hint,\n taskHistoryCount = 0,\n}: {\n hint?: { global_count?: number; filtered_network?: string };\n taskHistoryCount?: number;\n}) {\n if (hint?.global_count) {\n return (\n <EmptyCard>\n <EmptyState\n variant=\"nodes\"\n title=\"No agents in this network\"\n sub={`Server has ${hint.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`}\n />\n </EmptyCard>\n );\n }\n\n // Round 105 (issue #90): there's task history but no agents online right\n // now — they finished or disconnected. Don't pitch a first-run setup;\n // point at the history instead.\n if (taskHistoryCount > 0) {\n return (\n <EmptyCard>\n <EmptyState\n variant=\"nodes\"\n title=\"No agents online\"\n sub={`Every agent in this network is currently offline. ${taskHistoryCount.toLocaleString()} task${taskHistoryCount === 1 ? '' : 's'} in history — they may have finished their work or disconnected.`}\n cta={{ label: 'View task history', href: '/tasks' }}\n />\n </EmptyCard>\n );\n }\n\n // Round 52: true empty state (zero agents anywhere) — show the\n // quickstart command inline so users don't have to leave the dashboard\n // to figure out how to spin up their first agent.\n return (\n <EmptyCard>\n <div className=\"text-center py-16 px-4\" role=\"status\">\n <div className=\"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500\" aria-hidden>\n <svg viewBox=\"0 0 64 64\" width={56} height={56}>\n <g stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\">\n <rect x=\"10\" y=\"20\" width=\"44\" height=\"28\" rx=\"2\" />\n <rect x=\"20\" y=\"32\" width=\"6\" height=\"8\" opacity=\"0.5\" />\n <rect x=\"32\" y=\"32\" width=\"6\" height=\"8\" opacity=\"0.5\" />\n <rect x=\"44\" y=\"32\" width=\"4\" height=\"8\" opacity=\"0.5\" />\n <line x1=\"10\" y1=\"26\" x2=\"54\" y2=\"26\" opacity=\"0.4\" />\n <circle cx=\"14\" cy=\"23\" r=\"0.8\" fill=\"currentColor\" />\n </g>\n </svg>\n </div>\n <h3 className=\"font-medium text-gray-300 text-base\">Spin up your first agent</h3>\n <p className=\"text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed\">\n Run this in a fresh terminal to register an agent with this CommHub:\n </p>\n <div className=\"mt-4 inline-block\">\n <QuickstartCommand cmd=\"npx --yes @sleep2agi/agent-network init\" />\n </div>\n <div className=\"mt-3\">\n <a\n href=\"https://anet.sh\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300\"\n >\n Full quickstart guide\n <span aria-hidden>→</span>\n </a>\n </div>\n </div>\n </EmptyCard>\n );\n}\n\n/** Code block + inline copy button used by the empty-Overview first-run\n * CTA. State lives here so the parent stays stateless. */\nfunction QuickstartCommand({ cmd }: { cmd: string }) {\n const [copied, setCopied] = useState(false);\n const onCopy = async () => {\n try {\n await navigator.clipboard.writeText(cmd);\n setCopied(true);\n setTimeout(() => setCopied(false), 1800);\n } catch {}\n };\n return (\n <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\">\n <code className=\"text-cyan-300 font-mono select-all\">{cmd}</code>\n <button\n type=\"button\"\n onClick={onCopy}\n aria-label={copied ? 'Copied' : 'Copy command'}\n className=\"shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1a1a2a] transition-colors\"\n >\n {copied ? (\n <span className=\"flex items-center gap-1 text-green-400\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n Copied\n </span>\n ) : (\n <span className=\"flex items-center gap-1\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </svg>\n Copy\n </span>\n )}\n </button>\n </div>\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"],"names":["TASK_STATUSES","STATUS_CHIP_CLASS","created","delivered","acked","running","replied","closed","failed","cancelled","expired","STATUS_DOT_HEX","SESSION_STATUS_CHIP_CLASS","working","idle","blocked","error","offline","SESSION_STATUS_TEXT_CLASS","STATUS_BAR_CLASS","parseHubTime","dateStr","iso","includes","replace","t","Date","parse","Number","isFinite","relativeAgo","s","Math","floor","now","AVATAR_HUES","aliasAvatarColors","alias","h","i","length","charCodeAt","hue","bg","ring","text","aliasInitial","ch","trim","match","toUpperCase","AliasAvatar","size","className","c","fs","max","round","style","width","height","fontSize","backgroundColor","borderColor","color","title","DEFAULTS","nodes","sub","tasks","messages","logs","tokens","networks","generic","Glyph","variant","baseProps","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","viewBox","cx","cy","r","x1","y1","x2","y2","strokeDasharray","opacity","x","y","rx","d","ry","EmptyState","cta","compact","headline","subcopy","iconSize","role","href","label","onClick","EmptyCard","children","NodesEmptyState","hint","taskHistoryCount","global_count","toLocaleString","QuickstartCommand","cmd","target","rel","copied","setCopied","onCopy","navigator","clipboard","writeText","setTimeout","type","fetcher","url","res","fetch","status","window","location","assign","Error","json","SWR_OPTIONS","refreshInterval","dedupingInterval","withNetwork","networkId","sep","encodeURIComponent","useSessions","data","isLoading","sessions","_hint","useHealth","health","useAnetConfig","config","useTasks","params","query","URLSearchParams","limit","toString","count","source","useStats","stats","ok","useLicense","license","useMessages","useNodeSession","session","inbox","sse"],"mappings":"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"}
|
|
File without changes
|
/package/.next/static/{ZvjSzTKwpk2ghAXzLuIx4 → ZPH3qUPz78tGunqc1tq8i}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|