@sleep2agi/agent-network-dashboard 0.4.5-preview.7 → 0.4.5-preview.9
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 +6 -6
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin.html +2 -2
- package/.next/server/app/admin.rsc +2 -2
- package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +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 +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +2 -2
- package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
- package/.next/server/app/messages/page.js.nft.json +1 -1
- package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/messages.html +2 -2
- package/.next/server/app/messages.rsc +3 -3
- package/.next/server/app/messages.segments/_full.segment.rsc +3 -3
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
- package/.next/server/app/node/page_client-reference-manifest.js +1 -1
- package/.next/server/app/node.html +2 -2
- package/.next/server/app/node.rsc +2 -2
- package/.next/server/app/node.segments/_full.segment.rsc +2 -2
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +2 -2
- package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/node.segments/node.segment.rsc +1 -1
- 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 +2 -2
- package/.next/server/app/nodes.rsc +3 -3
- package/.next/server/app/nodes.segments/_full.segment.rsc +3 -3
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
- package/.next/server/app/page.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 +2 -2
- package/.next/server/app/server-logs.rsc +2 -2
- package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
- package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/networks.html +2 -2
- package/.next/server/app/settings/networks.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +2 -2
- package/.next/server/app/settings/tokens.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +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 +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks/page.js.nft.json +1 -1
- package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks.html +2 -2
- package/.next/server/app/tasks.rsc +3 -3
- package/.next/server/app/tasks.segments/_full.segment.rsc +3 -3
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__06w_u7t._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__06w_u7t._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ehu0jb._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ehu0jb._.js.map +1 -0
- package/.next/server/chunks/ssr/_13_v7-3._.js +3 -0
- package/.next/server/chunks/ssr/_13_v7-3._.js.map +1 -0
- package/.next/server/chunks/ssr/{app_0k8xbx~._.js → app_10b5blc._.js} +2 -2
- package/.next/server/chunks/ssr/app_10b5blc._.js.map +1 -0
- package/.next/server/chunks/ssr/app_page_tsx_0es_sk2._.js +1 -1
- package/.next/server/chunks/ssr/app_page_tsx_0es_sk2._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/0-.hjh--kcdiy.js +1 -0
- package/.next/static/chunks/02afyxgpty3uf.js +1 -0
- package/.next/static/chunks/0h.ajsk_uxigl.js +1 -0
- package/.next/static/chunks/0msa~bub38ytf.css +2 -0
- package/.next/static/chunks/{0z.pzy8zpa~js.js → 12dcb86elsl-e.js} +1 -1
- package/.next/static/chunks/{11v5tec4s1168.js → 132e__998_q9r.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/TopoGraph.tsx +16 -3
- package/app/page.tsx +9 -6
- package/package.json +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__06pu~4t._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__06pu~4t._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0_jnflc._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0_jnflc._.js.map +0 -1
- package/.next/server/chunks/ssr/_0uw5cjt._.js +0 -3
- package/.next/server/chunks/ssr/_0uw5cjt._.js.map +0 -1
- package/.next/server/chunks/ssr/app_0k8xbx~._.js.map +0 -1
- package/.next/static/chunks/06t_vzei8s9_h.js +0 -1
- package/.next/static/chunks/0v~9m62eciynd.js +0 -1
- package/.next/static/chunks/0xh3wr5rwvifr.css +0 -2
- package/.next/static/chunks/1031v6nw33ud3.js +0 -1
- /package/.next/static/{kyIvxswGu-u-KGQRAaXfV → stSZtBF9uGYc3L399m0h1}/_buildManifest.js +0 -0
- /package/.next/static/{kyIvxswGu-u-KGQRAaXfV → stSZtBF9uGYc3L399m0h1}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{kyIvxswGu-u-KGQRAaXfV → stSZtBF9uGYc3L399m0h1}/_ssgManifest.js +0 -0
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":553,"timestamp":188566565800,"id":4,"parentId":1,"tags":{},"startTime":1778560052391,"traceId":"b1e55b19f0ced665"},{"name":"load-custom-routes","duration":487,"timestamp":188566566548,"id":5,"parentId":1,"tags":{},"startTime":1778560052391,"traceId":"b1e55b19f0ced665"},{"name":"create-dist-dir","duration":1422,"timestamp":188566567081,"id":6,"parentId":1,"tags":{},"startTime":1778560052392,"traceId":"b1e55b19f0ced665"},{"name":"clean","duration":1414,"timestamp":188566569358,"id":7,"parentId":1,"tags":{},"startTime":1778560052394,"traceId":"b1e55b19f0ced665"},{"name":"discover-routes","duration":9657,"timestamp":188566684213,"id":8,"parentId":1,"tags":{},"startTime":1778560052509,"traceId":"b1e55b19f0ced665"},{"name":"create-root-mapping","duration":124,"timestamp":188566693934,"id":9,"parentId":1,"tags":{},"startTime":1778560052519,"traceId":"b1e55b19f0ced665"},{"name":"generate-route-types","duration":31168,"timestamp":188566696298,"id":10,"parentId":1,"tags":{},"startTime":1778560052521,"traceId":"b1e55b19f0ced665"},{"name":"public-dir-conflict-check","duration":113,"timestamp":188566727761,"id":11,"parentId":1,"tags":{},"startTime":1778560052552,"traceId":"b1e55b19f0ced665"},{"name":"generate-routes-manifest","duration":4238,"timestamp":188566727998,"id":12,"parentId":1,"tags":{},"startTime":1778560052553,"traceId":"b1e55b19f0ced665"},{"name":"run-turbopack","duration":7575321,"timestamp":188566737552,"id":14,"parentId":1,"tags":{},"startTime":1778560052562,"traceId":"b1e55b19f0ced665"},{"name":"turbopack-build-events","duration":88,"timestamp":188567012495,"id":15,"parentId":1,"tags":{},"startTime":1778560052837,"traceId":"b1e55b19f0ced665"},{"name":"run-typescript","duration":7357443,"timestamp":188574319533,"id":16,"parentId":1,"tags":{},"startTime":1778560060144,"traceId":"b1e55b19f0ced665"},{"name":"generate-required-server-files","duration":2495,"timestamp":188581677890,"id":18,"parentId":1,"tags":{},"startTime":1778560067503,"traceId":"b1e55b19f0ced665"},{"name":"check-static-error-page","duration":17768,"timestamp":188581742453,"id":20,"parentId":19,"tags":{},"startTime":1778560067567,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":292667,"timestamp":188581762520,"id":62,"parentId":22,"tags":{},"startTime":1778560067587,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":310489,"timestamp":188581744814,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778560067570,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":393750,"timestamp":188581762599,"id":63,"parentId":25,"tags":{},"startTime":1778560067587,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":408741,"timestamp":188581747680,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778560067572,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":408321,"timestamp":188581762224,"id":61,"parentId":21,"tags":{},"startTime":1778560067587,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":427015,"timestamp":188581743603,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778560067568,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":408114,"timestamp":188581762775,"id":65,"parentId":27,"tags":{},"startTime":1778560067587,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":422203,"timestamp":188581748714,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778560067573,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":415617,"timestamp":188581762736,"id":64,"parentId":26,"tags":{},"startTime":1778560067587,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":429852,"timestamp":188581748564,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778560067573,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":416189,"timestamp":188581762846,"id":67,"parentId":29,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":430142,"timestamp":188581748958,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778560067574,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":423845,"timestamp":188581762883,"id":68,"parentId":30,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":436480,"timestamp":188581750314,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778560067575,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":429558,"timestamp":188581763029,"id":70,"parentId":33,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":438570,"timestamp":188581754080,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778560067579,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":433380,"timestamp":188581762918,"id":69,"parentId":32,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":443285,"timestamp":188581753083,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778560067578,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":433413,"timestamp":188581763075,"id":71,"parentId":34,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":442243,"timestamp":188581754269,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778560067579,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":436914,"timestamp":188581763162,"id":73,"parentId":36,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":445387,"timestamp":188581754744,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778560067579,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":437169,"timestamp":188581763092,"id":72,"parentId":35,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":445898,"timestamp":188581754388,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778560067579,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":440941,"timestamp":188581763189,"id":75,"parentId":38,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":449208,"timestamp":188581754993,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":441203,"timestamp":188581763181,"id":74,"parentId":37,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":449530,"timestamp":188581754880,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":444769,"timestamp":188581763195,"id":76,"parentId":39,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":452947,"timestamp":188581755084,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":444993,"timestamp":188581763201,"id":77,"parentId":40,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":453048,"timestamp":188581755174,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":447652,"timestamp":188581763207,"id":78,"parentId":41,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":455662,"timestamp":188581755250,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":448155,"timestamp":188581763212,"id":79,"parentId":42,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":456076,"timestamp":188581755328,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":449948,"timestamp":188581763217,"id":80,"parentId":43,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":457805,"timestamp":188581755392,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":452136,"timestamp":188581763222,"id":81,"parentId":44,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":459922,"timestamp":188581755469,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":453451,"timestamp":188581763227,"id":82,"parentId":45,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":461178,"timestamp":188581755537,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":455765,"timestamp":188581763232,"id":83,"parentId":46,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":463407,"timestamp":188581755644,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":457781,"timestamp":188581763237,"id":84,"parentId":47,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":465340,"timestamp":188581755721,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":458695,"timestamp":188581763241,"id":85,"parentId":48,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":466167,"timestamp":188581755805,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778560067580,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":460547,"timestamp":188581762810,"id":66,"parentId":28,"tags":{},"startTime":1778560067588,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":474564,"timestamp":188581748829,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778560067574,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":454101,"timestamp":188581769772,"id":86,"parentId":24,"tags":{},"startTime":1778560067594,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":478686,"timestamp":188581745248,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778560067570,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":453907,"timestamp":188581772218,"id":87,"parentId":31,"tags":{},"startTime":1778560067597,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":475713,"timestamp":188581750467,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778560067575,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":446944,"timestamp":188581781995,"id":88,"parentId":23,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":483899,"timestamp":188581745076,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778560067570,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":452111,"timestamp":188581782069,"id":91,"parentId":51,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":477819,"timestamp":188581756424,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778560067581,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":457757,"timestamp":188581782077,"id":92,"parentId":52,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":483299,"timestamp":188581756600,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778560067581,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":463841,"timestamp":188581782085,"id":93,"parentId":53,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":489220,"timestamp":188581756764,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778560067581,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":469733,"timestamp":188581782090,"id":94,"parentId":55,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":494472,"timestamp":188581757410,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778560067582,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":474893,"timestamp":188581782173,"id":95,"parentId":56,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":499639,"timestamp":188581757563,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778560067582,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":479910,"timestamp":188581782048,"id":89,"parentId":49,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":505850,"timestamp":188581756179,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778560067581,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":480483,"timestamp":188581782184,"id":96,"parentId":58,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":502998,"timestamp":188581759717,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778560067584,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":486468,"timestamp":188581782203,"id":98,"parentId":60,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":508702,"timestamp":188581760023,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778560067585,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":489029,"timestamp":188581782059,"id":90,"parentId":50,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":514837,"timestamp":188581756315,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778560067581,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":489414,"timestamp":188581782189,"id":97,"parentId":59,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":511759,"timestamp":188581759888,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778560067585,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":491849,"timestamp":188581782216,"id":99,"parentId":54,"tags":{},"startTime":1778560067607,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":517140,"timestamp":188581756960,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778560067582,"traceId":"b1e55b19f0ced665"},{"name":"is-page-static","duration":484252,"timestamp":188581790881,"id":100,"parentId":57,"tags":{},"startTime":1778560067616,"traceId":"b1e55b19f0ced665"},{"name":"check-page","duration":517478,"timestamp":188581757706,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778560067582,"traceId":"b1e55b19f0ced665"},{"name":"static-check","duration":533625,"timestamp":188581741597,"id":19,"parentId":1,"tags":{},"startTime":1778560067566,"traceId":"b1e55b19f0ced665"},{"name":"write-routes-manifest","duration":482,"timestamp":188582281942,"id":102,"parentId":1,"tags":{},"startTime":1778560068107,"traceId":"b1e55b19f0ced665"},{"name":"load-dotenv","duration":46,"timestamp":188582294353,"id":105,"parentId":104,"tags":{},"startTime":1778560068119,"traceId":"b1e55b19f0ced665"},{"name":"run-export-path-map","duration":623,"timestamp":188582297080,"id":106,"parentId":104,"tags":{},"startTime":1778560068122,"traceId":"b1e55b19f0ced665"},{"name":"next-export","duration":543515,"timestamp":188582293137,"id":104,"parentId":1,"tags":{},"startTime":1778560068118,"traceId":"b1e55b19f0ced665"},{"name":"move-exported-app-not-found-","duration":1306,"timestamp":188582840087,"id":107,"parentId":103,"tags":{},"startTime":1778560068665,"traceId":"b1e55b19f0ced665"},{"name":"move-exported-app-global-error-","duration":395,"timestamp":188582841505,"id":108,"parentId":103,"tags":{},"startTime":1778560068666,"traceId":"b1e55b19f0ced665"}]
|
|
2
|
-
[{"name":"static-generation","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":291,"timestamp":189544248464,"id":4,"parentId":1,"tags":{},"startTime":1778561030073,"traceId":"b5d073a7b88a4702"},{"name":"load-custom-routes","duration":504,"timestamp":189544248905,"id":5,"parentId":1,"tags":{},"startTime":1778561030074,"traceId":"b5d073a7b88a4702"},{"name":"create-dist-dir","duration":843,"timestamp":189544249465,"id":6,"parentId":1,"tags":{},"startTime":1778561030074,"traceId":"b5d073a7b88a4702"},{"name":"clean","duration":553,"timestamp":189544250969,"id":7,"parentId":1,"tags":{},"startTime":1778561030076,"traceId":"b5d073a7b88a4702"},{"name":"discover-routes","duration":9931,"timestamp":189544338311,"id":8,"parentId":1,"tags":{},"startTime":1778561030163,"traceId":"b5d073a7b88a4702"},{"name":"create-root-mapping","duration":122,"timestamp":189544348307,"id":9,"parentId":1,"tags":{},"startTime":1778561030173,"traceId":"b5d073a7b88a4702"},{"name":"generate-route-types","duration":33048,"timestamp":189544350746,"id":10,"parentId":1,"tags":{},"startTime":1778561030175,"traceId":"b5d073a7b88a4702"},{"name":"public-dir-conflict-check","duration":142,"timestamp":189544383993,"id":11,"parentId":1,"tags":{},"startTime":1778561030209,"traceId":"b5d073a7b88a4702"},{"name":"generate-routes-manifest","duration":4416,"timestamp":189544384265,"id":12,"parentId":1,"tags":{},"startTime":1778561030209,"traceId":"b5d073a7b88a4702"},{"name":"run-turbopack","duration":9149595,"timestamp":189544394336,"id":14,"parentId":1,"tags":{},"startTime":1778561030219,"traceId":"b5d073a7b88a4702"},{"name":"turbopack-build-events","duration":80,"timestamp":189544696698,"id":15,"parentId":1,"tags":{},"startTime":1778561030521,"traceId":"b5d073a7b88a4702"},{"name":"run-typescript","duration":10026635,"timestamp":189553561218,"id":16,"parentId":1,"tags":{},"startTime":1778561039386,"traceId":"b5d073a7b88a4702"},{"name":"generate-required-server-files","duration":2860,"timestamp":189563590475,"id":18,"parentId":1,"tags":{},"startTime":1778561049415,"traceId":"b5d073a7b88a4702"},{"name":"check-static-error-page","duration":20016,"timestamp":189563678388,"id":20,"parentId":19,"tags":{},"startTime":1778561049503,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":514810,"timestamp":189563700590,"id":62,"parentId":22,"tags":{},"startTime":1778561049525,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":533728,"timestamp":189563681811,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778561049507,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":639284,"timestamp":189563700811,"id":64,"parentId":26,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":648667,"timestamp":189563691506,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778561049516,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":644241,"timestamp":189563700852,"id":65,"parentId":27,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":653553,"timestamp":189563691604,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778561049516,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":647039,"timestamp":189563700887,"id":66,"parentId":28,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":656288,"timestamp":189563691692,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778561049516,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":650653,"timestamp":189563700923,"id":67,"parentId":29,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":659861,"timestamp":189563691775,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778561049516,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":654500,"timestamp":189563700957,"id":68,"parentId":30,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":663623,"timestamp":189563691977,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778561049517,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":660103,"timestamp":189563700990,"id":69,"parentId":32,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":668835,"timestamp":189563692336,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778561049517,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":661634,"timestamp":189563701109,"id":70,"parentId":33,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":670354,"timestamp":189563692437,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778561049517,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":668334,"timestamp":189563701172,"id":71,"parentId":34,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":676996,"timestamp":189563692570,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778561049517,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":672296,"timestamp":189563701195,"id":72,"parentId":35,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":680881,"timestamp":189563692659,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778561049517,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":676021,"timestamp":189563701250,"id":73,"parentId":36,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":684290,"timestamp":189563693026,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778561049518,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":682948,"timestamp":189563701268,"id":74,"parentId":37,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":691126,"timestamp":189563693149,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778561049518,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":685698,"timestamp":189563701280,"id":75,"parentId":38,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":693787,"timestamp":189563693253,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778561049518,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":689446,"timestamp":189563701286,"id":76,"parentId":39,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":697449,"timestamp":189563693330,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778561049518,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":694796,"timestamp":189563701292,"id":77,"parentId":40,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":702715,"timestamp":189563693428,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778561049518,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":696441,"timestamp":189563701298,"id":78,"parentId":41,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":704278,"timestamp":189563693513,"id":41,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778561049518,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":702680,"timestamp":189563701304,"id":79,"parentId":42,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":710486,"timestamp":189563693582,"id":42,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778561049518,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":707370,"timestamp":189563701310,"id":80,"parentId":43,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":715090,"timestamp":189563693646,"id":43,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778561049518,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":713471,"timestamp":189563701315,"id":81,"parentId":44,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":721131,"timestamp":189563693713,"id":44,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778561049518,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":718593,"timestamp":189563701321,"id":82,"parentId":45,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":726199,"timestamp":189563693776,"id":45,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778561049518,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":722048,"timestamp":189563701326,"id":83,"parentId":46,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":729561,"timestamp":189563693865,"id":46,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778561049519,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":727050,"timestamp":189563701332,"id":84,"parentId":47,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":734527,"timestamp":189563693933,"id":47,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778561049519,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":727980,"timestamp":189563700667,"id":63,"parentId":25,"tags":{},"startTime":1778561049525,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":737409,"timestamp":189563691262,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778561049516,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":733590,"timestamp":189563701336,"id":85,"parentId":48,"tags":{},"startTime":1778561049526,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":740983,"timestamp":189563693997,"id":48,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778561049519,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":731950,"timestamp":189563710396,"id":87,"parentId":24,"tags":{},"startTime":1778561049535,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":760160,"timestamp":189563682240,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778561049507,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":751378,"timestamp":189563700267,"id":61,"parentId":21,"tags":{},"startTime":1778561049525,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":772248,"timestamp":189563679452,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778561049504,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":751776,"timestamp":189563709728,"id":86,"parentId":31,"tags":{},"startTime":1778561049534,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":769489,"timestamp":189563692087,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778561049517,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":754507,"timestamp":189563720794,"id":89,"parentId":49,"tags":{},"startTime":1778561049545,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":781024,"timestamp":189563694337,"id":49,"parentId":19,"tags":{"page":"/login"},"startTime":1778561049519,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":789542,"timestamp":189563720807,"id":91,"parentId":51,"tags":{},"startTime":1778561049545,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":815276,"timestamp":189563695141,"id":51,"parentId":19,"tags":{"page":"/messages"},"startTime":1778561049520,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":792329,"timestamp":189563720757,"id":88,"parentId":23,"tags":{},"startTime":1778561049545,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":831043,"timestamp":189563682094,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778561049507,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":815888,"timestamp":189563720818,"id":93,"parentId":53,"tags":{},"startTime":1778561049546,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":841265,"timestamp":189563695505,"id":53,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778561049520,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":823278,"timestamp":189563720823,"id":94,"parentId":55,"tags":{},"startTime":1778561049546,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":848026,"timestamp":189563696137,"id":55,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778561049521,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":828132,"timestamp":189563720828,"id":95,"parentId":56,"tags":{},"startTime":1778561049546,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":852756,"timestamp":189563696295,"id":56,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778561049521,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":828659,"timestamp":189563720813,"id":92,"parentId":52,"tags":{},"startTime":1778561049546,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":854181,"timestamp":189563695329,"id":52,"parentId":19,"tags":{"page":"/node"},"startTime":1778561049520,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":834898,"timestamp":189563720833,"id":96,"parentId":58,"tags":{},"startTime":1778561049546,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":857821,"timestamp":189563697965,"id":58,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778561049523,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":843141,"timestamp":189563720846,"id":98,"parentId":60,"tags":{},"startTime":1778561049546,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":865846,"timestamp":189563698219,"id":60,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778561049523,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":847504,"timestamp":189563720838,"id":97,"parentId":59,"tags":{},"startTime":1778561049546,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":870315,"timestamp":189563698095,"id":59,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778561049523,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":822782,"timestamp":189563750991,"id":99,"parentId":57,"tags":{},"startTime":1778561049576,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":876262,"timestamp":189563697565,"id":57,"parentId":19,"tags":{"page":"/settings"},"startTime":1778561049522,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":854467,"timestamp":189563720801,"id":90,"parentId":50,"tags":{},"startTime":1778561049545,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":880370,"timestamp":189563694963,"id":50,"parentId":19,"tags":{"page":"/logs"},"startTime":1778561049520,"traceId":"b5d073a7b88a4702"},{"name":"is-page-static","duration":807301,"timestamp":189563769616,"id":100,"parentId":54,"tags":{},"startTime":1778561049594,"traceId":"b5d073a7b88a4702"},{"name":"check-page","duration":881275,"timestamp":189563695682,"id":54,"parentId":19,"tags":{"page":"/"},"startTime":1778561049520,"traceId":"b5d073a7b88a4702"},{"name":"static-check","duration":899383,"timestamp":189563677609,"id":19,"parentId":1,"tags":{},"startTime":1778561049502,"traceId":"b5d073a7b88a4702"},{"name":"write-routes-manifest","duration":446,"timestamp":189564584842,"id":102,"parentId":1,"tags":{},"startTime":1778561050410,"traceId":"b5d073a7b88a4702"},{"name":"load-dotenv","duration":57,"timestamp":189564600843,"id":105,"parentId":104,"tags":{},"startTime":1778561050426,"traceId":"b5d073a7b88a4702"},{"name":"run-export-path-map","duration":632,"timestamp":189564603619,"id":106,"parentId":104,"tags":{},"startTime":1778561050428,"traceId":"b5d073a7b88a4702"},{"name":"next-export","duration":707120,"timestamp":189564599507,"id":104,"parentId":1,"tags":{},"startTime":1778561050424,"traceId":"b5d073a7b88a4702"},{"name":"move-exported-app-not-found-","duration":2104,"timestamp":189565310139,"id":107,"parentId":103,"tags":{},"startTime":1778561051135,"traceId":"b5d073a7b88a4702"},{"name":"move-exported-app-global-error-","duration":388,"timestamp":189565312367,"id":108,"parentId":103,"tags":{},"startTime":1778561051137,"traceId":"b5d073a7b88a4702"}]
|
|
2
|
+
[{"name":"static-generation","duration":726237,"timestamp":189564590475,"id":103,"parentId":1,"tags":{},"startTime":1778561050415,"traceId":"b5d073a7b88a4702"},{"name":"write-routes-manifest","duration":410,"timestamp":189565316889,"id":109,"parentId":1,"tags":{},"startTime":1778561051142,"traceId":"b5d073a7b88a4702"},{"name":"print-tree-view","duration":3711,"timestamp":189565323674,"id":110,"parentId":1,"tags":{},"startTime":1778561051148,"traceId":"b5d073a7b88a4702"},{"name":"write-route-bundle-stats","duration":14827,"timestamp":189565327423,"id":111,"parentId":1,"tags":{},"startTime":1778561051152,"traceId":"b5d073a7b88a4702"},{"name":"telemetry-flush","duration":41675,"timestamp":189565342291,"id":112,"parentId":1,"tags":{},"startTime":1778561051167,"traceId":"b5d073a7b88a4702"},{"name":"next-build","duration":21183592,"timestamp":189544200431,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778561030025,"traceId":"b5d073a7b88a4702"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":9149595,"timestamp":189544394336,"id":14,"parentId":1,"tags":{},"startTime":1778561030219,"traceId":"b5d073a7b88a4702"},{"name":"turbopack-build-events","duration":80,"timestamp":189544696698,"id":15,"parentId":1,"tags":{},"startTime":1778561030521,"traceId":"b5d073a7b88a4702"},{"name":"run-typescript","duration":10026635,"timestamp":189553561218,"id":16,"parentId":1,"tags":{},"startTime":1778561039386,"traceId":"b5d073a7b88a4702"},{"name":"static-check","duration":899383,"timestamp":189563677609,"id":19,"parentId":1,"tags":{},"startTime":1778561049502,"traceId":"b5d073a7b88a4702"},{"name":"static-generation","duration":726237,"timestamp":189564590475,"id":103,"parentId":1,"tags":{},"startTime":1778561050415,"traceId":"b5d073a7b88a4702"},{"name":"telemetry-flush","duration":41675,"timestamp":189565342291,"id":112,"parentId":1,"tags":{},"startTime":1778561051167,"traceId":"b5d073a7b88a4702"},{"name":"next-build","duration":21183592,"timestamp":189544200431,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778561030025,"traceId":"b5d073a7b88a4702"}]
|
|
@@ -33,10 +33,14 @@ const cy = 330;
|
|
|
33
33
|
const onlineRadius = 220;
|
|
34
34
|
const offlineRadius = 315;
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
/** Polar coordinate for a node on a ring. `rotateBy` lets the caller offset
|
|
37
|
+
* the whole ring so two stacked rings don't align radially (round 25: the
|
|
38
|
+
* offline ring gets a half-step rotation so its nodes sit in the gaps
|
|
39
|
+
* between online ones). */
|
|
40
|
+
function polarPoint(index: number, total: number, radius: number, rotateBy = 0) {
|
|
37
41
|
const spread = total <= 2 ? Math.PI : Math.PI * 1.78;
|
|
38
42
|
const start = -Math.PI / 2 - spread / 2;
|
|
39
|
-
const angle = total <= 1 ? -Math.PI / 2 : start + (spread * index) / (total - 1);
|
|
43
|
+
const angle = total <= 1 ? -Math.PI / 2 : start + (spread * index) / (total - 1) + rotateBy;
|
|
40
44
|
return {
|
|
41
45
|
x: cx + radius * Math.cos(angle),
|
|
42
46
|
y: cy + radius * Math.sin(angle),
|
|
@@ -248,8 +252,17 @@ export function TopoGraph({ sessions, sseSessions }: TopoGraphProps) {
|
|
|
248
252
|
positions[s.alias] = polarPoint(index, Math.max(online.length, 1), onlineRadius);
|
|
249
253
|
});
|
|
250
254
|
|
|
255
|
+
// Offset the offline ring radially by half the online step so offline
|
|
256
|
+
// bubbles sit in the angular gaps between online bubbles instead of
|
|
257
|
+
// stacking directly behind them. Also push the outer ring further when
|
|
258
|
+
// there are many offline nodes so labels don't crowd the legend.
|
|
259
|
+
const spread = online.length <= 2 ? Math.PI : Math.PI * 1.78;
|
|
260
|
+
const onlineStep = online.length > 1 ? spread / (online.length - 1) : 0;
|
|
261
|
+
const offlineRotation = online.length > 0 ? onlineStep / 2 : 0;
|
|
262
|
+
const offlineR = offlineRadius + Math.max(0, offline.length - 4) * 6;
|
|
263
|
+
|
|
251
264
|
offline.forEach((s, index) => {
|
|
252
|
-
positions[s.alias] = polarPoint(index, Math.max(offline.length, 1),
|
|
265
|
+
positions[s.alias] = polarPoint(index, Math.max(offline.length, 1), offlineR, offlineRotation);
|
|
253
266
|
});
|
|
254
267
|
|
|
255
268
|
const links = buildFlowLinks(messages, positions);
|
package/app/page.tsx
CHANGED
|
@@ -10,6 +10,7 @@ import { AgentCard } from './components/AgentCard';
|
|
|
10
10
|
import { InboxPanel } from './components/InboxPanel';
|
|
11
11
|
import { LoadingSkeleton } from './components/LoadingSkeleton';
|
|
12
12
|
import { NodesEmptyState as EmptyState } from './components/EmptyState';
|
|
13
|
+
import { AliasAvatar } from './components/AliasAvatar';
|
|
13
14
|
import { UserBar } from './components/UserBar';
|
|
14
15
|
import { CommandCenter, useCommandCenter } from './components/CommandCenter';
|
|
15
16
|
import { DispatchPanel } from './components/DispatchPanel';
|
|
@@ -120,7 +121,7 @@ export default function Dashboard() {
|
|
|
120
121
|
</div>
|
|
121
122
|
|
|
122
123
|
{/* Dispatch + User Bar */}
|
|
123
|
-
<div className="flex items-center gap-3 mb-
|
|
124
|
+
<div className="flex items-center gap-3 mb-4">
|
|
124
125
|
<button onClick={() => setShowDispatch(true)}
|
|
125
126
|
className="px-4 py-2 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 text-white text-sm font-medium rounded-xl shadow-lg shadow-cyan-500/10 transition-all active:scale-95 shrink-0">
|
|
126
127
|
⚡ Dispatch
|
|
@@ -189,9 +190,9 @@ export default function Dashboard() {
|
|
|
189
190
|
{/* Quick Actions — split into two distinct intents:
|
|
190
191
|
(1) Top: live stat cards (carry data, drill-in on click)
|
|
191
192
|
(2) Bottom: pure nav rail (no number, icon + label)
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
Round 24 — wrap both in a labelled block so the rhythm reads as
|
|
194
|
+
"here are the main jumps" instead of two disconnected strips. */}
|
|
195
|
+
<div className="text-[10px] uppercase tracking-[0.12em] text-gray-600 mb-2">Quick navigation</div>
|
|
195
196
|
<section className="mb-3 grid grid-cols-3 gap-2 sm:gap-3">
|
|
196
197
|
{(() => {
|
|
197
198
|
// Build breakdown popover content per card. Pure data — pure CSS
|
|
@@ -314,9 +315,11 @@ export default function Dashboard() {
|
|
|
314
315
|
<span className={`w-1.5 h-1.5 rounded-full shrink-0 ${
|
|
315
316
|
t.status === 'replied' ? 'bg-purple-400' : t.status === 'running' ? 'bg-green-400' : t.status === 'failed' ? 'bg-red-400' : 'bg-blue-400'
|
|
316
317
|
}`} />
|
|
317
|
-
<
|
|
318
|
+
{t.from_name && <AliasAvatar alias={t.from_name} size={14} />}
|
|
319
|
+
<span className="text-gray-300 shrink-0 max-w-[20%] truncate">{t.from_name || '?'}</span>
|
|
318
320
|
<span className="text-gray-600">→</span>
|
|
319
|
-
<
|
|
321
|
+
{t.to_name && <AliasAvatar alias={t.to_name} size={14} />}
|
|
322
|
+
<span className="text-gray-300 shrink-0 max-w-[20%] truncate">{t.to_name || '?'}</span>
|
|
320
323
|
<span className="text-gray-500 truncate flex-1">{t.content?.slice(0, 40) || '--'}</span>
|
|
321
324
|
<span className={`shrink-0 px-1.5 py-0.5 rounded text-[10px] border ${
|
|
322
325
|
t.status === 'replied' ? 'text-purple-300 border-purple-500/20' : t.status === 'failed' ? 'text-red-300 border-red-500/20' : 'text-gray-500 border-gray-700/30'
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},43515,a=>{"use strict";a.s(["formatUptime",0,function(a){let b=Math.floor(a/3600),c=Math.floor(a%3600/60);return b>0?`${b}h ${c}m`:`${c}m`},"timeAgo",0,function(a){if(!a)return"--";let b=Math.floor((Date.now()-new Date(a.replace(" ","T")+"Z").getTime())/1e3);return b<60?`${b}s ago`:b<3600?`${Math.floor(b/60)}m ago`:b<86400?`${Math.floor(b/3600)}h ago`:`${Math.floor(b/86400)}d ago`}])},53142,a=>{"use strict";var b=a.i(87924),c=a.i(38246);let d={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 e({variant:a,size:c}){let d={width:c,height:c},f={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(a){case"nodes":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,b.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,b.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,b.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,b.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,b.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,b.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,b.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.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,b.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,b.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.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,b.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,b.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,b.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,b.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,b.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,b.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,b.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,b.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,b.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,b.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,b.jsx)("svg",{viewBox:"0 0 64 64",...d,children:(0,b.jsxs)("g",{...f,children:[(0,b.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,b.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function f({variant:a="generic",title:g,sub:h,cta:i,compact:j=!1}){let k=d[a],l=g??k.title,m=h??k.sub;return(0,b.jsxs)("div",{className:`text-center ${j?"py-8":"py-16"} px-4`,role:"status",children:[(0,b.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,b.jsx)(e,{variant:a,size:j?40:56})}),(0,b.jsx)("h3",{className:`font-medium text-gray-300 ${j?"text-sm":"text-base"}`,children:l}),m&&(0,b.jsx)("p",{className:`text-gray-500 ${j?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:m}),i&&(0,b.jsx)("div",{className:"mt-4",children:i.href?(0,b.jsxs)(c.default,{href:i.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[i.label,(0,b.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,b.jsxs)("button",{onClick:i.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[i.label,(0,b.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}a.s(["EmptyState",0,f,"NodesEmptyState",0,function({hint:a}){return a?.global_count?(0,b.jsx)(f,{variant:"nodes",title:"No agents in this network",sub:`Server has ${a.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`}):(0,b.jsx)(f,{variant:"nodes",cta:{label:"Run anet quickstart",href:"https://anet.sh"}})}])},44332,a=>{"use strict";var b=a.i(72596),c=a.i(22397);let d=async a=>{let b=await fetch(a);if(401===b.status)throw window.location.assign("/login"),Error("unauthorized");return b.json()},e={refreshInterval:5e3,dedupingInterval:3e3};function f(a,b){if(!b)return a;let c=a.includes("?")?"&":"?";return`${a}${c}network_id=${encodeURIComponent(b)}`}a.s(["useAnetConfig",0,function(){let{data:a}=(0,b.default)("/api/anet/config",d,{refreshInterval:3e4});return{config:a||null}},"useHealth",0,function(){let{data:a,error:c}=(0,b.default)("/api/hub/health",d,e);return{health:a||null,error:c}},"useLicense",0,function(){let{data:a,error:c}=(0,b.default)("/api/hub/license",d,{refreshInterval:6e4});return{license:a?.ok?a:null,error:c}},"useMessages",0,function(a=100){let{networkId:g}=(0,c.useNetworkId)(),{data:h,error:i,isLoading:j}=(0,b.default)(f(`/api/hub/messages?limit=${a}`,g),d,e);return{messages:h?.messages||[],error:i,isLoading:j}},"useSessions",0,function(){let{networkId:a}=(0,c.useNetworkId)(),{data:g,error:h,isLoading:i}=(0,b.default)(f("/api/hub/status",a),d,e);return{sessions:g?.sessions||[],hint:g?._hint,error:h,isLoading:i}},"useStats",0,function(){let{networkId:a}=(0,c.useNetworkId)(),{data:g,error:h}=(0,b.default)(f("/api/hub/stats",a),d,e);return{stats:g?.ok?g:null,error:h}},"useTasks",0,function(a){let{networkId:g}=(0,c.useNetworkId)(),h=new URLSearchParams({limit:"100",...a}).toString(),{data:i,error:j,isLoading:k}=(0,b.default)(f(`/api/hub/tasks?${h}`,g),d,e);return{tasks:i?.tasks||[],count:i?.count??0,source:i?.source,error:j,isLoading:k}}])},54826,(a,b,c)=>{},15299,(a,b,c)=>{a.r(54826);var d=a.r(72131),e=d&&"object"==typeof d&&"default"in d?d:{default:d},f="u">typeof process&&process.env&&!0,g=function(a){return"[object String]"===Object.prototype.toString.call(a)},h=function(){function a(a){var b=void 0===a?{}:a,c=b.name,d=void 0===c?"stylesheet":c,e=b.optimizeForSpeed,h=void 0===e?f:e;i(g(d),"`name` must be a string"),this._name=d,this._deletedRulePlaceholder="#"+d+"-deleted-rule____{}",i("boolean"==typeof h,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=h,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0,this._nonce=null}var b,c=a.prototype;return c.setOptimizeForSpeed=function(a){i("boolean"==typeof a,"`setOptimizeForSpeed` accepts a boolean"),i(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=a,this.inject()},c.isOptimizeForSpeed=function(){return this._optimizeForSpeed},c.inject=function(){var a=this;i(!this._injected,"sheet already injected"),this._injected=!0,this._serverSheet={cssRules:[],insertRule:function(b,c){return"number"==typeof c?a._serverSheet.cssRules[c]={cssText:b}:a._serverSheet.cssRules.push({cssText:b}),c},deleteRule:function(b){a._serverSheet.cssRules[b]=null}}},c.getSheetForTag=function(a){if(a.sheet)return a.sheet;for(var b=0;b<document.styleSheets.length;b++)if(document.styleSheets[b].ownerNode===a)return document.styleSheets[b]},c.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},c.insertRule=function(a,b){return i(g(a),"`insertRule` accepts only strings"),"number"!=typeof b&&(b=this._serverSheet.cssRules.length),this._serverSheet.insertRule(a,b),this._rulesCount++},c.replaceRule=function(a,b){this._optimizeForSpeed;var c=this._serverSheet;if(b.trim()||(b=this._deletedRulePlaceholder),!c.cssRules[a])return a;c.deleteRule(a);try{c.insertRule(b,a)}catch(d){f||console.warn("StyleSheet: illegal rule: \n\n"+b+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),c.insertRule(this._deletedRulePlaceholder,a)}return a},c.deleteRule=function(a){this._serverSheet.deleteRule(a)},c.flush=function(){this._injected=!1,this._rulesCount=0,this._serverSheet.cssRules=[]},c.cssRules=function(){return this._serverSheet.cssRules},c.makeStyleTag=function(a,b,c){b&&i(g(b),"makeStyleTag accepts only strings as second parameter");var d=document.createElement("style");this._nonce&&d.setAttribute("nonce",this._nonce),d.type="text/css",d.setAttribute("data-"+a,""),b&&d.appendChild(document.createTextNode(b));var e=document.head||document.getElementsByTagName("head")[0];return c?e.insertBefore(d,c):e.appendChild(d),d},b=[{key:"length",get:function(){return this._rulesCount}}],function(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}(a.prototype,b),a}();function i(a,b){if(!a)throw Error("StyleSheet: "+b+".")}var j=function(a){for(var b=5381,c=a.length;c;)b=33*b^a.charCodeAt(--c);return b>>>0},k={};function l(a,b){if(!b)return"jsx-"+a;var c=String(b),d=a+c;return k[d]||(k[d]="jsx-"+j(a+"-"+c)),k[d]}function m(a,b){var c=a+(b=b.replace(/\/style/gi,"\\/style"));return k[c]||(k[c]=b.replace(/__jsx-style-dynamic-selector/g,a)),k[c]}var n=function(){function a(a){var b=void 0===a?{}:a,c=b.styleSheet,d=void 0===c?null:c,e=b.optimizeForSpeed,f=void 0!==e&&e;this._sheet=d||new h({name:"styled-jsx",optimizeForSpeed:f}),this._sheet.inject(),d&&"boolean"==typeof f&&(this._sheet.setOptimizeForSpeed(f),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var b=a.prototype;return b.add=function(a){var b=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(a.children),this._sheet.setOptimizeForSpeed(this._optimizeForSpeed),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed());var c=this.getIdAndRules(a),d=c.styleId,e=c.rules;if(d in this._instancesCounts){this._instancesCounts[d]+=1;return}var f=e.map(function(a){return b._sheet.insertRule(a)}).filter(function(a){return -1!==a});this._indices[d]=f,this._instancesCounts[d]=1},b.remove=function(a){var b=this,c=this.getIdAndRules(a).styleId;if(function(a,b){if(!a)throw Error("StyleSheetRegistry: "+b+".")}(c in this._instancesCounts,"styleId: `"+c+"` not found"),this._instancesCounts[c]-=1,this._instancesCounts[c]<1){var d=this._fromServer&&this._fromServer[c];d?(d.parentNode.removeChild(d),delete this._fromServer[c]):(this._indices[c].forEach(function(a){return b._sheet.deleteRule(a)}),delete this._indices[c]),delete this._instancesCounts[c]}},b.update=function(a,b){this.add(b),this.remove(a)},b.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},b.cssRules=function(){var a=this,b=this._fromServer?Object.keys(this._fromServer).map(function(b){return[b,a._fromServer[b]]}):[],c=this._sheet.cssRules();return b.concat(Object.keys(this._indices).map(function(b){return[b,a._indices[b].map(function(a){return c[a].cssText}).join(a._optimizeForSpeed?"":"\n")]}).filter(function(a){return!!a[1]}))},b.styles=function(a){var b,c;return b=this.cssRules(),void 0===(c=a)&&(c={}),b.map(function(a){var b=a[0],d=a[1];return e.default.createElement("style",{id:"__"+b,key:"__"+b,nonce:c.nonce?c.nonce:void 0,dangerouslySetInnerHTML:{__html:d}})})},b.getIdAndRules=function(a){var b=a.children,c=a.dynamic,d=a.id;if(c){var e=l(d,c);return{styleId:e,rules:Array.isArray(b)?b.map(function(a){return m(e,a)}):[m(e,b)]}}return{styleId:l(d),rules:Array.isArray(b)?b:[b]}},b.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(a,b){return a[b.id.slice(2)]=b,a},{})},a}(),o=d.createContext(null);function p(){return new n}function q(){return d.useContext(o)}function r(a){var b=q();return b&&b.add(a),null}o.displayName="StyleSheetContext",e.default.useInsertionEffect||e.default.useLayoutEffect,r.dynamic=function(a){return a.map(function(a){return l(a[0],a[1])}).join(" ")},c.StyleRegistry=function(a){var b=a.registry,c=a.children,f=d.useContext(o),g=d.useState(function(){return f||b||p()})[0];return e.default.createElement(o.Provider,{value:g},c)},c.createStyleRegistry=p,c.style=r,c.useStyleRegistry=q},31626,(a,b,c)=>{b.exports=a.r(15299).style},1720,a=>{"use strict";var b=a.i(87924);let c=[180,200,220,270,300,330,30,90];a.s(["AliasAvatar",0,function({alias:a,size:d=28,className:e=""}){let f=function(a){let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)>>>0;let d=c[b%c.length];return{bg:`hsl(${d} 55% 22%)`,ring:`hsl(${d} 60% 45%)`,text:`hsl(${d} 80% 78%)`}}(a),g=Math.max(9,Math.round(.42*d));return(0,b.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${e}`,style:{width:d,height:d,fontSize:g,backgroundColor:f.bg,borderColor:f.ring,color:f.text},title:a,"aria-hidden":!0,children:a?(a.trim().match(/[\p{L}\p{N}]/u)?.[0]||a.trim()[0]||"·").toUpperCase():"·"})}])},96794,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(43515),f=a.i(44332),g=a.i(15261),h=a.i(53142),i=a.i(1720);let j={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"};a.s(["default",0,function(){let a,k,l,m,{sessions:n,isLoading:o}=(0,f.useSessions)(),{health:p}=(0,f.useHealth)(),q=p?.sse_sessions||{},r=a=>(a.network_id?q[`${a.network_id}:${a.alias}`]:void 0)??q[a.alias],[s,t]=(0,c.useState)(""),[u,v]=(0,c.useState)(""),[w,x]=(0,c.useState)("list"),[y,z]=(0,c.useState)({}),[A,B]=(0,c.useState)(null),[C,D]=(0,c.useState)({}),[E,F]=(0,c.useState)(null),G=n.map(a=>({...a,online:!!r(a)})).filter(a=>"online"===s?a.online:"offline"===s?!a.online:!s||s===a.status).filter(a=>!u||a.alias.toLowerCase().includes(u.toLowerCase())||(a.agent||"").toLowerCase().includes(u.toLowerCase())).sort((a,b)=>!!b.online-!!a.online||("working"===b.status)-("working"===a.status)),H=n.filter(a=>r(a)).length,I=a=>{B(b=>b===a?null:a),D(b=>({...b,[a]:{}}))},J=(a,b)=>{z(c=>({...c,[a]:b}))},K=async a=>{let b=y[a]?.trim()||"";if(b){D(b=>({...b,[a]:{sending:!0}}));try{let c=await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:a,task:b})}),d=await c.json();if(!c.ok||d?.ok===!1)throw Error(d?.error||"Send failed");z(b=>({...b,[a]:""})),D(b=>({...b,[a]:{success:"Task sent"}})),B(null)}catch(b){D(c=>({...c,[a]:{error:b instanceof Error?b.message:"Send failed"}}))}}};return(0,b.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4 mb-6",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold text-white lg:ml-0 ml-10",children:"Nodes"}),(0,b.jsxs)("span",{className:"text-xs bg-green-900/30 text-green-400 px-2 py-0.5 rounded-full border border-green-800/30",children:[H," online"]}),(0,b.jsxs)("span",{className:"text-xs bg-gray-900/30 text-gray-400 px-2 py-0.5 rounded-full border border-gray-800/30",children:[n.length," total"]})]}),n.length>0&&(a=G.filter(a=>a.online&&"working"===a.status).length,k=G.filter(a=>a.online&&"idle"===a.status).length,l=G.filter(a=>!a.online).length,m=G.length||1,(0,b.jsxs)("div",{className:"mb-6",children:[(0,b.jsxs)("div",{className:"flex h-2 rounded-full overflow-hidden bg-gray-800",children:[a>0&&(0,b.jsx)("div",{className:"bg-green-500",style:{width:`${a/m*100}%`}}),k>0&&(0,b.jsx)("div",{className:"bg-cyan-500",style:{width:`${k/m*100}%`}}),l>0&&(0,b.jsx)("div",{className:"bg-gray-600",style:{width:`${l/m*100}%`}})]}),(0,b.jsxs)("div",{className:"flex gap-4 mt-1.5 text-[10px] text-gray-500",children:[a>0&&(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-green-500 mr-1"}),a," working"]}),k>0&&(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-cyan-500 mr-1"}),k," idle"]}),l>0&&(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-gray-600 mr-1"}),l," offline"]})]})]})),(0,b.jsxs)("div",{className:"flex flex-wrap gap-3 mb-6",children:[(0,b.jsx)("input",{type:"text",value:u,onChange:a=>v(a.target.value),placeholder:"Search nodes...",className:"bg-[#111128] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-blue-500/50 focus:outline-none w-48"}),(0,b.jsxs)("select",{value:s,onChange:a=>t(a.target.value),className:"bg-[#111128] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white focus:border-blue-500/50 focus:outline-none",children:[(0,b.jsx)("option",{value:"",children:"All"}),(0,b.jsx)("option",{value:"online",children:"Online"}),(0,b.jsx)("option",{value:"offline",children:"Offline"}),(0,b.jsx)("option",{value:"working",children:"Working"}),(0,b.jsx)("option",{value:"idle",children:"Idle"}),(0,b.jsx)("option",{value:"blocked",children:"Blocked"}),(0,b.jsx)("option",{value:"error",children:"Error"})]}),(0,b.jsx)("div",{className:"ml-auto flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 text-sm",children:["list","grid"].map(a=>(0,b.jsx)("button",{type:"button",onClick:()=>x(a),className:`rounded-md px-3 py-1.5 transition-colors ${w===a?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"list"===a?"List":"Grid"},a))})]}),o?(0,b.jsx)("div",{className:"animate-pulse space-y-2",children:[1,2,3,4].map(a=>(0,b.jsx)("div",{className:"h-16 bg-gray-800/20 rounded-lg"},a))}):0===G.length?(0,b.jsx)(h.EmptyState,{variant:"nodes",title:"No nodes match your filters",sub:"Try clearing search or status filters, or wait for an agent to register."}):"grid"===w?(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4",children:G.map(a=>{let c=a.online?a.status:"offline",f=C[a.alias]||{},g="number"==typeof a.progress?a.progress:0;return(0,b.jsxs)("div",{className:`relative overflow-hidden rounded-xl border border-[#2a2a4a] bg-[#111128] p-4 transition-colors ${!a.online?"opacity-60":""}`,children:[!a.online&&(0,b.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:(0,b.jsx)("span",{className:"rotate-[-20deg] rounded-xl border border-white/10 bg-black/20 px-5 py-2 text-xl font-bold uppercase tracking-[0.35em] text-white/10",children:"Offline"})}),(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)(i.AliasAvatar,{alias:a.alias,size:36}),(0,b.jsxs)(d.default,{href:`/node?alias=${encodeURIComponent(a.alias)}`,className:"min-w-0 flex-1 hover:text-cyan-300",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"truncate text-base font-semibold text-white",children:a.alias}),(0,b.jsx)("span",{className:`shrink-0 rounded-md border px-2 py-0.5 text-[10px] uppercase tracking-wide ${j[c]||j.offline}`,children:c})]}),(0,b.jsxs)("div",{className:"mt-0.5 truncate text-xs text-gray-500",children:[a.agent||"—",(0,b.jsx)("span",{className:"text-gray-700 mx-1.5",children:"·"}),a.server||"—"]})]}),(0,b.jsxs)("div",{className:"flex gap-1.5 shrink-0",children:[(0,b.jsx)("button",{type:"button",onClick:()=>F(a.alias),className:"rounded-lg border border-green-500/20 bg-green-500/10 px-3 py-1.5 text-xs text-green-300 transition-colors hover:bg-green-500/20",children:"Chat"}),(0,b.jsx)("button",{type:"button",onClick:()=>I(a.alias),className:"rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-3 py-1.5 text-xs text-cyan-300 transition-colors hover:bg-cyan-500/20",children:"Task"})]})]}),(0,b.jsxs)("div",{className:"mt-3 rounded-lg border border-[#1a1a2a] bg-[#0a0a15] px-3 py-2 text-xs",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-gray-600",children:"Current task"}),(0,b.jsx)("span",{className:"text-[10px] text-gray-600",children:(0,e.timeAgo)(a.last_seen_at||a.updated_at)})]}),(0,b.jsx)("div",{className:`mt-1 line-clamp-2 ${a.task?"text-gray-300":"text-gray-600 italic"}`,children:a.task||"No current task"})]}),g>0&&g<100&&(0,b.jsx)("div",{className:"mt-3 h-1.5 overflow-hidden rounded-full bg-gray-800",children:(0,b.jsx)("div",{className:"h-1.5 rounded-full bg-cyan-400 transition-all",style:{width:`${g}%`}})}),A===a.alias&&(0,b.jsxs)("div",{className:"mt-4 space-y-2 rounded-lg border border-[#2a2a4a] bg-[#0a0a15] p-3",children:[(0,b.jsx)("input",{type:"text",value:y[a.alias]||"",onChange:b=>J(a.alias,b.target.value),onKeyDown:b=>"Enter"===b.key&&K(a.alias),placeholder:`Send task to ${a.alias}...`,className:"w-full rounded-lg border border-[#2a2a4a] bg-[#050510] px-3 py-2 text-xs text-white placeholder-gray-600 focus:border-cyan-500 focus:outline-none"}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>B(null),className:"rounded-lg border border-gray-700 px-3 py-1.5 text-xs text-gray-400 hover:text-gray-200",children:"Cancel"}),(0,b.jsx)("button",{type:"button",onClick:()=>K(a.alias),disabled:f.sending||!(y[a.alias]||"").trim(),className:"rounded-lg bg-cyan-600 px-3 py-1.5 text-xs text-white hover:bg-cyan-500 disabled:cursor-not-allowed disabled:bg-gray-700",children:f.sending?"Sending...":"Send"})]})]}),f.error&&(0,b.jsx)("div",{className:"mt-2 text-xs text-red-400",children:f.error}),f.success&&A!==a.alias&&(0,b.jsx)("div",{className:"mt-2 text-xs text-green-400",children:f.success})]},a.alias)})}):(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"hidden sm:grid sm:grid-cols-12 gap-2 px-4 py-2 text-xs text-gray-600 uppercase",children:[(0,b.jsx)("div",{className:"col-span-1",children:"Status"}),(0,b.jsx)("div",{className:"col-span-2",children:"Alias"}),(0,b.jsx)("div",{className:"col-span-2",children:"Agent"}),(0,b.jsx)("div",{className:"col-span-2",children:"Server"}),(0,b.jsx)("div",{className:"col-span-2",children:"Current Task"}),(0,b.jsx)("div",{className:"col-span-1",children:"Updated"}),(0,b.jsx)("div",{className:"col-span-2 text-right",children:"Actions"})]}),G.map(a=>{let c=a.online?a.status:"offline",f=C[a.alias]||{};return(0,b.jsxs)("div",{className:`rounded-lg border border-[#2a2a4a] bg-[#111128] px-4 py-3 transition-colors hover:border-[#3a3a5a] ${!a.online?"opacity-50":""}`,children:[(0,b.jsxs)("div",{className:"hidden sm:grid sm:grid-cols-12 gap-2 items-center",children:[(0,b.jsx)("div",{className:"col-span-1",children:(0,b.jsx)("span",{className:`text-xs px-2 py-0.5 rounded-md border ${j[c]||j.offline}`,children:c})}),(0,b.jsx)("div",{className:"col-span-2 min-w-0",children:(0,b.jsxs)(d.default,{href:`/node?alias=${encodeURIComponent(a.alias)}`,className:"flex items-center gap-2 min-w-0 hover:text-cyan-300",children:[(0,b.jsx)(i.AliasAvatar,{alias:a.alias,size:20}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-white",children:a.alias})]})}),(0,b.jsx)("div",{className:"col-span-2 truncate text-xs text-gray-400",children:a.agent||"--"}),(0,b.jsx)("div",{className:"col-span-2 truncate text-xs text-gray-400",children:a.server||"--"}),(0,b.jsx)("div",{className:"col-span-2 truncate text-xs text-gray-500",children:a.task||"--"}),(0,b.jsx)("div",{className:"col-span-1 text-xs text-gray-500",children:(0,e.timeAgo)(a.last_seen_at||a.updated_at)}),(0,b.jsxs)("div",{className:"col-span-2 flex justify-end gap-1.5",children:[(0,b.jsx)("button",{type:"button",onClick:()=>F(a.alias),className:"rounded-lg border border-green-500/20 bg-green-500/10 px-2 py-1 text-xs text-green-300 hover:bg-green-500/20",children:"Chat"}),(0,b.jsx)("button",{type:"button",onClick:()=>I(a.alias),className:"rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-2 py-1 text-xs text-cyan-300 hover:bg-cyan-500/20",children:"Task"})]})]}),(0,b.jsxs)("div",{className:"sm:hidden space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,b.jsx)(i.AliasAvatar,{alias:a.alias,size:28}),(0,b.jsxs)(d.default,{href:`/node?alias=${encodeURIComponent(a.alias)}`,className:"min-w-0 flex-1 hover:text-cyan-300",children:[(0,b.jsx)("div",{className:"truncate text-sm font-medium text-white",children:a.alias}),(0,b.jsxs)("div",{className:"truncate text-[10px] text-gray-500",children:[a.agent||"—"," · ",(0,e.timeAgo)(a.last_seen_at||a.updated_at)]})]}),(0,b.jsx)("span",{className:`shrink-0 text-xs px-2 py-0.5 rounded-md border ${j[c]||j.offline}`,children:c})]}),a.task&&(0,b.jsx)("div",{className:"truncate text-xs text-gray-500",children:a.task}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>F(a.alias),className:"flex-1 rounded-lg border border-green-500/20 bg-green-500/10 px-3 py-2 text-xs text-green-300 hover:bg-green-500/20",children:"Chat"}),(0,b.jsx)("button",{type:"button",onClick:()=>I(a.alias),className:"flex-1 rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-3 py-2 text-xs text-cyan-300 hover:bg-cyan-500/20",children:"Send Task"})]})]}),A===a.alias&&(0,b.jsxs)("div",{className:"mt-3 space-y-2 border-t border-[#2a2a4a] pt-3",children:[(0,b.jsx)("input",{type:"text",value:y[a.alias]||"",onChange:b=>J(a.alias,b.target.value),onKeyDown:b=>"Enter"===b.key&&K(a.alias),placeholder:`Send task to ${a.alias}...`,className:"w-full rounded-lg border border-[#2a2a4a] bg-[#0a0a15] px-3 py-2 text-xs text-white placeholder-gray-600 focus:border-cyan-500 focus:outline-none"}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>B(null),className:"rounded-lg border border-gray-700 px-3 py-1.5 text-xs text-gray-400 hover:text-gray-200",children:"Cancel"}),(0,b.jsx)("button",{type:"button",onClick:()=>K(a.alias),disabled:f.sending||!(y[a.alias]||"").trim(),className:"rounded-lg bg-cyan-600 px-3 py-1.5 text-xs text-white hover:bg-cyan-500 disabled:cursor-not-allowed disabled:bg-gray-700",children:f.sending?"Sending...":"Send"})]})]}),f.error&&(0,b.jsx)("div",{className:"mt-2 text-xs text-red-400",children:f.error}),f.success&&A!==a.alias&&(0,b.jsx)("div",{className:"mt-2 text-xs text-green-400",children:f.success})]},a.alias)})]}),E&&(0,b.jsx)(g.TaskChatPanel,{alias:E,onClose:()=>F(null)})]})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__06pu~4t._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../app/components/utils.ts","../../../../app/components/EmptyState.tsx","../../../../app/lib/hooks.ts","../../../../node_modules/styled-jsx/dist/index/index.js","../../../../node_modules/styled-jsx/style.js","../../../../app/components/AliasAvatar.tsx","../../../../app/nodes/page.tsx"],"sourcesContent":["export function timeAgo(dateStr: string): string {\n if (!dateStr) return '--';\n const diff = Date.now() - new Date(dateStr.replace(' ', 'T') + 'Z').getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return `${s}s ago`;\n if (s < 3600) return `${Math.floor(s / 60)}m ago`;\n if (s < 86400) return `${Math.floor(s / 3600)}h ago`;\n return `${Math.floor(s / 86400)}d ago`;\n}\n\nexport function statusColor(status: string, hasSse: boolean): string {\n if (hasSse && status === 'working') return 'bg-green-500';\n if (hasSse && status === 'idle') return 'bg-emerald-400';\n if (hasSse) return 'bg-blue-400';\n if (status === 'offline') return 'bg-gray-500';\n return 'bg-yellow-400';\n}\n\nexport function formatUptime(seconds: number): string {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n if (h > 0) return `${h}h ${m}m`;\n return `${m}m`;\n}\n","'use client';\n\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/**\n * Overview-specific variant with a hint about cross-network global count.\n * Kept here so /app/page.tsx can drop in without ceremony.\n */\nexport function NodesEmptyState({ hint }: { hint?: { global_count?: number; filtered_network?: string } }) {\n if (hint?.global_count) {\n return (\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 );\n }\n return (\n <EmptyState\n variant=\"nodes\"\n cta={{ label: 'Run anet quickstart', href: 'https://anet.sh' }}\n />\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","require('client-only');\nvar React = require('react');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n\n/*\nBased on Glamor's sheet\nhttps://github.com/threepointone/glamor/blob/667b480d31b3721a905021b26e1290ce92ca2879/src/sheet.js\n*/ function _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nvar isProd = typeof process !== \"undefined\" && process.env && process.env.NODE_ENV === \"production\";\nvar isString = function(o) {\n return Object.prototype.toString.call(o) === \"[object String]\";\n};\nvar StyleSheet = /*#__PURE__*/ function() {\n function StyleSheet(param) {\n var ref = param === void 0 ? {} : param, _name = ref.name, name = _name === void 0 ? \"stylesheet\" : _name, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? isProd : _optimizeForSpeed;\n invariant$1(isString(name), \"`name` must be a string\");\n this._name = name;\n this._deletedRulePlaceholder = \"#\" + name + \"-deleted-rule____{}\";\n invariant$1(typeof optimizeForSpeed === \"boolean\", \"`optimizeForSpeed` must be a boolean\");\n this._optimizeForSpeed = optimizeForSpeed;\n this._serverSheet = undefined;\n this._tags = [];\n this._injected = false;\n this._rulesCount = 0;\n var node = typeof window !== \"undefined\" && document.querySelector('meta[property=\"csp-nonce\"]');\n this._nonce = node ? node.getAttribute(\"content\") : null;\n }\n var _proto = StyleSheet.prototype;\n _proto.setOptimizeForSpeed = function setOptimizeForSpeed(bool) {\n invariant$1(typeof bool === \"boolean\", \"`setOptimizeForSpeed` accepts a boolean\");\n invariant$1(this._rulesCount === 0, \"optimizeForSpeed cannot be when rules have already been inserted\");\n this.flush();\n this._optimizeForSpeed = bool;\n this.inject();\n };\n _proto.isOptimizeForSpeed = function isOptimizeForSpeed() {\n return this._optimizeForSpeed;\n };\n _proto.inject = function inject() {\n var _this = this;\n invariant$1(!this._injected, \"sheet already injected\");\n this._injected = true;\n if (typeof window !== \"undefined\" && this._optimizeForSpeed) {\n this._tags[0] = this.makeStyleTag(this._name);\n this._optimizeForSpeed = \"insertRule\" in this.getSheet();\n if (!this._optimizeForSpeed) {\n if (!isProd) {\n console.warn(\"StyleSheet: optimizeForSpeed mode not supported falling back to standard mode.\");\n }\n this.flush();\n this._injected = true;\n }\n return;\n }\n this._serverSheet = {\n cssRules: [],\n insertRule: function(rule, index) {\n if (typeof index === \"number\") {\n _this._serverSheet.cssRules[index] = {\n cssText: rule\n };\n } else {\n _this._serverSheet.cssRules.push({\n cssText: rule\n });\n }\n return index;\n },\n deleteRule: function(index) {\n _this._serverSheet.cssRules[index] = null;\n }\n };\n };\n _proto.getSheetForTag = function getSheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n }\n // this weirdness brought to you by firefox\n for(var i = 0; i < document.styleSheets.length; i++){\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n }\n };\n _proto.getSheet = function getSheet() {\n return this.getSheetForTag(this._tags[this._tags.length - 1]);\n };\n _proto.insertRule = function insertRule(rule, index) {\n invariant$1(isString(rule), \"`insertRule` accepts only strings\");\n if (typeof window === \"undefined\") {\n if (typeof index !== \"number\") {\n index = this._serverSheet.cssRules.length;\n }\n this._serverSheet.insertRule(rule, index);\n return this._rulesCount++;\n }\n if (this._optimizeForSpeed) {\n var sheet = this.getSheet();\n if (typeof index !== \"number\") {\n index = sheet.cssRules.length;\n }\n // this weirdness for perf, and chrome's weird bug\n // https://stackoverflow.com/questions/20007992/chrome-suddenly-stopped-accepting-insertrule\n try {\n sheet.insertRule(rule, index);\n } catch (error) {\n if (!isProd) {\n console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n }\n return -1;\n }\n } else {\n var insertionPoint = this._tags[index];\n this._tags.push(this.makeStyleTag(this._name, rule, insertionPoint));\n }\n return this._rulesCount++;\n };\n _proto.replaceRule = function replaceRule(index, rule) {\n if (this._optimizeForSpeed || typeof window === \"undefined\") {\n var sheet = typeof window !== \"undefined\" ? this.getSheet() : this._serverSheet;\n if (!rule.trim()) {\n rule = this._deletedRulePlaceholder;\n }\n if (!sheet.cssRules[index]) {\n // @TBD Should we throw an error?\n return index;\n }\n sheet.deleteRule(index);\n try {\n sheet.insertRule(rule, index);\n } catch (error) {\n if (!isProd) {\n console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n }\n // In order to preserve the indices we insert a deleteRulePlaceholder\n sheet.insertRule(this._deletedRulePlaceholder, index);\n }\n } else {\n var tag = this._tags[index];\n invariant$1(tag, \"old rule at index `\" + index + \"` not found\");\n tag.textContent = rule;\n }\n return index;\n };\n _proto.deleteRule = function deleteRule(index) {\n if (typeof window === \"undefined\") {\n this._serverSheet.deleteRule(index);\n return;\n }\n if (this._optimizeForSpeed) {\n this.replaceRule(index, \"\");\n } else {\n var tag = this._tags[index];\n invariant$1(tag, \"rule at index `\" + index + \"` not found\");\n tag.parentNode.removeChild(tag);\n this._tags[index] = null;\n }\n };\n _proto.flush = function flush() {\n this._injected = false;\n this._rulesCount = 0;\n if (typeof window !== \"undefined\") {\n this._tags.forEach(function(tag) {\n return tag && tag.parentNode.removeChild(tag);\n });\n this._tags = [];\n } else {\n // simpler on server\n this._serverSheet.cssRules = [];\n }\n };\n _proto.cssRules = function cssRules() {\n var _this = this;\n if (typeof window === \"undefined\") {\n return this._serverSheet.cssRules;\n }\n return this._tags.reduce(function(rules, tag) {\n if (tag) {\n rules = rules.concat(Array.prototype.map.call(_this.getSheetForTag(tag).cssRules, function(rule) {\n return rule.cssText === _this._deletedRulePlaceholder ? null : rule;\n }));\n } else {\n rules.push(null);\n }\n return rules;\n }, []);\n };\n _proto.makeStyleTag = function makeStyleTag(name, cssString, relativeToTag) {\n if (cssString) {\n invariant$1(isString(cssString), \"makeStyleTag accepts only strings as second parameter\");\n }\n var tag = document.createElement(\"style\");\n if (this._nonce) tag.setAttribute(\"nonce\", this._nonce);\n tag.type = \"text/css\";\n tag.setAttribute(\"data-\" + name, \"\");\n if (cssString) {\n tag.appendChild(document.createTextNode(cssString));\n }\n var head = document.head || document.getElementsByTagName(\"head\")[0];\n if (relativeToTag) {\n head.insertBefore(tag, relativeToTag);\n } else {\n head.appendChild(tag);\n }\n return tag;\n };\n _createClass(StyleSheet, [\n {\n key: \"length\",\n get: function get() {\n return this._rulesCount;\n }\n }\n ]);\n return StyleSheet;\n}();\nfunction invariant$1(condition, message) {\n if (!condition) {\n throw new Error(\"StyleSheet: \" + message + \".\");\n }\n}\n\nfunction hash(str) {\n var _$hash = 5381, i = str.length;\n while(i){\n _$hash = _$hash * 33 ^ str.charCodeAt(--i);\n }\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n * integers. Since we want the results to be always positive, convert the\n * signed int to an unsigned by doing an unsigned bitshift. */ return _$hash >>> 0;\n}\nvar stringHash = hash;\n\nvar sanitize = function(rule) {\n return rule.replace(/\\/style/gi, \"\\\\/style\");\n};\nvar cache = {};\n/**\n * computeId\n *\n * Compute and memoize a jsx id from a basedId and optionally props.\n */ function computeId(baseId, props) {\n if (!props) {\n return \"jsx-\" + baseId;\n }\n var propsToString = String(props);\n var key = baseId + propsToString;\n if (!cache[key]) {\n cache[key] = \"jsx-\" + stringHash(baseId + \"-\" + propsToString);\n }\n return cache[key];\n}\n/**\n * computeSelector\n *\n * Compute and memoize dynamic selectors.\n */ function computeSelector(id, css) {\n var selectoPlaceholderRegexp = /__jsx-style-dynamic-selector/g;\n // Sanitize SSR-ed CSS.\n // Client side code doesn't need to be sanitized since we use\n // document.createTextNode (dev) and the CSSOM api sheet.insertRule (prod).\n if (typeof window === \"undefined\") {\n css = sanitize(css);\n }\n var idcss = id + css;\n if (!cache[idcss]) {\n cache[idcss] = css.replace(selectoPlaceholderRegexp, id);\n }\n return cache[idcss];\n}\n\nfunction mapRulesToStyle(cssRules, options) {\n if (options === void 0) options = {};\n return cssRules.map(function(args) {\n var id = args[0];\n var css = args[1];\n return /*#__PURE__*/ React__default[\"default\"].createElement(\"style\", {\n id: \"__\" + id,\n // Avoid warnings upon render with a key\n key: \"__\" + id,\n nonce: options.nonce ? options.nonce : undefined,\n dangerouslySetInnerHTML: {\n __html: css\n }\n });\n });\n}\nvar StyleSheetRegistry = /*#__PURE__*/ function() {\n function StyleSheetRegistry(param) {\n var ref = param === void 0 ? {} : param, _styleSheet = ref.styleSheet, styleSheet = _styleSheet === void 0 ? null : _styleSheet, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? false : _optimizeForSpeed;\n this._sheet = styleSheet || new StyleSheet({\n name: \"styled-jsx\",\n optimizeForSpeed: optimizeForSpeed\n });\n this._sheet.inject();\n if (styleSheet && typeof optimizeForSpeed === \"boolean\") {\n this._sheet.setOptimizeForSpeed(optimizeForSpeed);\n this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n }\n this._fromServer = undefined;\n this._indices = {};\n this._instancesCounts = {};\n }\n var _proto = StyleSheetRegistry.prototype;\n _proto.add = function add(props) {\n var _this = this;\n if (undefined === this._optimizeForSpeed) {\n this._optimizeForSpeed = Array.isArray(props.children);\n this._sheet.setOptimizeForSpeed(this._optimizeForSpeed);\n this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n }\n if (typeof window !== \"undefined\" && !this._fromServer) {\n this._fromServer = this.selectFromServer();\n this._instancesCounts = Object.keys(this._fromServer).reduce(function(acc, tagName) {\n acc[tagName] = 0;\n return acc;\n }, {});\n }\n var ref = this.getIdAndRules(props), styleId = ref.styleId, rules = ref.rules;\n // Deduping: just increase the instances count.\n if (styleId in this._instancesCounts) {\n this._instancesCounts[styleId] += 1;\n return;\n }\n var indices = rules.map(function(rule) {\n return _this._sheet.insertRule(rule);\n })// Filter out invalid rules\n .filter(function(index) {\n return index !== -1;\n });\n this._indices[styleId] = indices;\n this._instancesCounts[styleId] = 1;\n };\n _proto.remove = function remove(props) {\n var _this = this;\n var styleId = this.getIdAndRules(props).styleId;\n invariant(styleId in this._instancesCounts, \"styleId: `\" + styleId + \"` not found\");\n this._instancesCounts[styleId] -= 1;\n if (this._instancesCounts[styleId] < 1) {\n var tagFromServer = this._fromServer && this._fromServer[styleId];\n if (tagFromServer) {\n tagFromServer.parentNode.removeChild(tagFromServer);\n delete this._fromServer[styleId];\n } else {\n this._indices[styleId].forEach(function(index) {\n return _this._sheet.deleteRule(index);\n });\n delete this._indices[styleId];\n }\n delete this._instancesCounts[styleId];\n }\n };\n _proto.update = function update(props, nextProps) {\n this.add(nextProps);\n this.remove(props);\n };\n _proto.flush = function flush() {\n this._sheet.flush();\n this._sheet.inject();\n this._fromServer = undefined;\n this._indices = {};\n this._instancesCounts = {};\n };\n _proto.cssRules = function cssRules() {\n var _this = this;\n var fromServer = this._fromServer ? Object.keys(this._fromServer).map(function(styleId) {\n return [\n styleId,\n _this._fromServer[styleId]\n ];\n }) : [];\n var cssRules = this._sheet.cssRules();\n return fromServer.concat(Object.keys(this._indices).map(function(styleId) {\n return [\n styleId,\n _this._indices[styleId].map(function(index) {\n return cssRules[index].cssText;\n }).join(_this._optimizeForSpeed ? \"\" : \"\\n\")\n ];\n })// filter out empty rules\n .filter(function(rule) {\n return Boolean(rule[1]);\n }));\n };\n _proto.styles = function styles(options) {\n return mapRulesToStyle(this.cssRules(), options);\n };\n _proto.getIdAndRules = function getIdAndRules(props) {\n var css = props.children, dynamic = props.dynamic, id = props.id;\n if (dynamic) {\n var styleId = computeId(id, dynamic);\n return {\n styleId: styleId,\n rules: Array.isArray(css) ? css.map(function(rule) {\n return computeSelector(styleId, rule);\n }) : [\n computeSelector(styleId, css)\n ]\n };\n }\n return {\n styleId: computeId(id),\n rules: Array.isArray(css) ? css : [\n css\n ]\n };\n };\n /**\n * selectFromServer\n *\n * Collects style tags from the document with id __jsx-XXX\n */ _proto.selectFromServer = function selectFromServer() {\n var elements = Array.prototype.slice.call(document.querySelectorAll('[id^=\"__jsx-\"]'));\n return elements.reduce(function(acc, element) {\n var id = element.id.slice(2);\n acc[id] = element;\n return acc;\n }, {});\n };\n return StyleSheetRegistry;\n}();\nfunction invariant(condition, message) {\n if (!condition) {\n throw new Error(\"StyleSheetRegistry: \" + message + \".\");\n }\n}\nvar StyleSheetContext = /*#__PURE__*/ React.createContext(null);\nStyleSheetContext.displayName = \"StyleSheetContext\";\nfunction createStyleRegistry() {\n return new StyleSheetRegistry();\n}\nfunction StyleRegistry(param) {\n var configuredRegistry = param.registry, children = param.children;\n var rootRegistry = React.useContext(StyleSheetContext);\n var ref = React.useState(function() {\n return rootRegistry || configuredRegistry || createStyleRegistry();\n }), registry = ref[0];\n return /*#__PURE__*/ React__default[\"default\"].createElement(StyleSheetContext.Provider, {\n value: registry\n }, children);\n}\nfunction useStyleRegistry() {\n return React.useContext(StyleSheetContext);\n}\n\n// Opt-into the new `useInsertionEffect` API in React 18, fallback to `useLayoutEffect`.\n// https://github.com/reactwg/react-18/discussions/110\nvar useInsertionEffect = React__default[\"default\"].useInsertionEffect || React__default[\"default\"].useLayoutEffect;\nvar defaultRegistry = typeof window !== \"undefined\" ? createStyleRegistry() : undefined;\nfunction JSXStyle(props) {\n var registry = defaultRegistry ? defaultRegistry : useStyleRegistry();\n // If `registry` does not exist, we do nothing here.\n if (!registry) {\n return null;\n }\n if (typeof window === \"undefined\") {\n registry.add(props);\n return null;\n }\n useInsertionEffect(function() {\n registry.add(props);\n return function() {\n registry.remove(props);\n };\n // props.children can be string[], will be striped since id is identical\n }, [\n props.id,\n String(props.dynamic)\n ]);\n return null;\n}\nJSXStyle.dynamic = function(info) {\n return info.map(function(tagInfo) {\n var baseId = tagInfo[0];\n var props = tagInfo[1];\n return computeId(baseId, props);\n }).join(\" \");\n};\n\nexports.StyleRegistry = StyleRegistry;\nexports.createStyleRegistry = createStyleRegistry;\nexports.style = JSXStyle;\nexports.useStyleRegistry = useStyleRegistry;\n","module.exports = require('./dist/index').style\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';\nimport { timeAgo } from '../components/utils';\nimport { useSessions, useHealth } from '../lib/hooks';\nimport { TaskChatPanel } from '../components/TaskChatPanel';\nimport { EmptyState } from '../components/EmptyState';\nimport { AliasAvatar } from '../components/AliasAvatar';\nimport type { Session } from '../components/types';\n\nconst STATUS_COLORS: 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\ntype ViewMode = 'list' | 'grid';\ntype SessionRow = Session & { online: boolean };\n\nexport default function NodesPage() {\n const { sessions, isLoading: loading } = useSessions();\n const { health } = useHealth();\n const sseMap = health?.sse_sessions || {};\n // SSE keys are `network_id:alias` since server v0.7+. Look up with the\n // composite key first, fall back to alias-only for legacy hubs.\n const sseFor = (s: { alias: string; network_id?: string }) =>\n (s.network_id ? sseMap[`${s.network_id}:${s.alias}`] : undefined) ?? sseMap[s.alias];\n const [filterStatus, setFilterStatus] = useState('');\n const [search, setSearch] = useState('');\n const [viewMode, setViewMode] = useState<ViewMode>('list');\n const [taskDrafts, setTaskDrafts] = useState<Record<string, string>>({});\n const [taskOpenFor, setTaskOpenFor] = useState<string | null>(null);\n const [sendState, setSendState] = useState<Record<string, { sending?: boolean; error?: string; success?: string }>>({});\n const [chatAlias, setChatAlias] = useState<string | null>(null);\n\n const filtered: SessionRow[] = sessions\n .map(s => ({ ...s, online: !!sseFor(s) }))\n .filter(s => {\n if (filterStatus === 'online') return s.online;\n if (filterStatus === 'offline') return !s.online;\n if (filterStatus && filterStatus !== s.status) return false;\n return true;\n })\n .filter(s => !search || s.alias.toLowerCase().includes(search.toLowerCase()) || (s.agent || '').toLowerCase().includes(search.toLowerCase()))\n .sort((a, b) => (b.online ? 1 : 0) - (a.online ? 1 : 0) || (b.status === 'working' ? 1 : 0) - (a.status === 'working' ? 1 : 0));\n\n const onlineCount = sessions.filter(s => sseFor(s)).length;\n\n const openSendTask = (alias: string) => {\n setTaskOpenFor(current => current === alias ? null : alias);\n setSendState(prev => ({ ...prev, [alias]: {} }));\n };\n\n const updateTaskDraft = (alias: string, value: string) => {\n setTaskDrafts(prev => ({ ...prev, [alias]: value }));\n };\n\n const sendTask = async (alias: string) => {\n const task = taskDrafts[alias]?.trim() || '';\n if (!task) return;\n\n setSendState(prev => ({ ...prev, [alias]: { sending: true } }));\n\n try {\n const res = await fetch('/api/hub/send', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ alias, task }),\n });\n const data = await res.json();\n\n if (!res.ok || data?.ok === false) {\n throw new Error(data?.error || 'Send failed');\n }\n\n setTaskDrafts(prev => ({ ...prev, [alias]: '' }));\n setSendState(prev => ({ ...prev, [alias]: { success: 'Task sent' } }));\n setTaskOpenFor(null);\n } catch (error: unknown) {\n setSendState(prev => ({\n ...prev,\n [alias]: { error: error instanceof Error ? error.message : 'Send failed' },\n }));\n }\n };\n\n return (\n <div className=\"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono\">\n <div className=\"flex items-center gap-4 mb-6\">\n <h1 className=\"text-2xl font-bold text-white lg:ml-0 ml-10\">Nodes</h1>\n <span className=\"text-xs bg-green-900/30 text-green-400 px-2 py-0.5 rounded-full border border-green-800/30\">\n {onlineCount} online\n </span>\n <span className=\"text-xs bg-gray-900/30 text-gray-400 px-2 py-0.5 rounded-full border border-gray-800/30\">\n {sessions.length} total\n </span>\n </div>\n\n {/* Status bar */}\n {sessions.length > 0 && (() => {\n const working = filtered.filter(s => s.online && s.status === 'working').length;\n const idle = filtered.filter(s => s.online && s.status === 'idle').length;\n const offline = filtered.filter(s => !s.online).length;\n const total = filtered.length || 1;\n return (\n <div className=\"mb-6\">\n <div className=\"flex h-2 rounded-full overflow-hidden bg-gray-800\">\n {working > 0 && <div className=\"bg-green-500\" style={{ width: `${(working/total)*100}%` }} />}\n {idle > 0 && <div className=\"bg-cyan-500\" style={{ width: `${(idle/total)*100}%` }} />}\n {offline > 0 && <div className=\"bg-gray-600\" style={{ width: `${(offline/total)*100}%` }} />}\n </div>\n <div className=\"flex gap-4 mt-1.5 text-[10px] text-gray-500\">\n {working > 0 && <span><span className=\"inline-block w-2 h-2 rounded-full bg-green-500 mr-1\" />{working} working</span>}\n {idle > 0 && <span><span className=\"inline-block w-2 h-2 rounded-full bg-cyan-500 mr-1\" />{idle} idle</span>}\n {offline > 0 && <span><span className=\"inline-block w-2 h-2 rounded-full bg-gray-600 mr-1\" />{offline} offline</span>}\n </div>\n </div>\n );\n })()}\n\n <div className=\"flex flex-wrap gap-3 mb-6\">\n <input\n type=\"text\"\n value={search}\n onChange={e => setSearch(e.target.value)}\n placeholder=\"Search nodes...\"\n className=\"bg-[#111128] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-blue-500/50 focus:outline-none w-48\"\n />\n <select\n value={filterStatus}\n onChange={e => setFilterStatus(e.target.value)}\n className=\"bg-[#111128] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white focus:border-blue-500/50 focus:outline-none\"\n >\n <option value=\"\">All</option>\n <option value=\"online\">Online</option>\n <option value=\"offline\">Offline</option>\n <option value=\"working\">Working</option>\n <option value=\"idle\">Idle</option>\n <option value=\"blocked\">Blocked</option>\n <option value=\"error\">Error</option>\n </select>\n <div className=\"ml-auto flex rounded-lg border border-[#2a2a4a] bg-[#111128] p-1 text-sm\">\n {(['list', 'grid'] as const).map(mode => (\n <button\n key={mode}\n type=\"button\"\n onClick={() => setViewMode(mode)}\n className={`rounded-md px-3 py-1.5 transition-colors ${\n viewMode === mode\n ? 'bg-cyan-500/10 text-cyan-300'\n : 'text-gray-500 hover:text-gray-200'\n }`}\n >\n {mode === 'list' ? 'List' : 'Grid'}\n </button>\n ))}\n </div>\n </div>\n\n {loading ? (\n <div className=\"animate-pulse space-y-2\">\n {[1,2,3,4].map(i => <div key={i} className=\"h-16 bg-gray-800/20 rounded-lg\" />)}\n </div>\n ) : filtered.length === 0 ? (\n <EmptyState\n variant=\"nodes\"\n title=\"No nodes match your filters\"\n sub=\"Try clearing search or status filters, or wait for an agent to register.\"\n />\n ) : viewMode === 'grid' ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\">\n {filtered.map(s => {\n const statusKey = s.online ? s.status : 'offline';\n const state = sendState[s.alias] || {};\n const progress = typeof s.progress === 'number' ? s.progress : 0;\n\n return (\n <div\n key={s.alias}\n className={`relative overflow-hidden rounded-xl border border-[#2a2a4a] bg-[#111128] p-4 transition-colors ${!s.online ? 'opacity-60' : ''}`}\n >\n {!s.online && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <span className=\"rotate-[-20deg] rounded-xl border border-white/10 bg-black/20 px-5 py-2 text-xl font-bold uppercase tracking-[0.35em] text-white/10\">\n Offline\n </span>\n </div>\n )}\n <div className=\"flex items-start gap-3\">\n <AliasAvatar alias={s.alias} size={36} />\n <Link href={`/node?alias=${encodeURIComponent(s.alias)}`} className=\"min-w-0 flex-1 hover:text-cyan-300\">\n <div className=\"flex items-center gap-2\">\n <span className=\"truncate text-base font-semibold text-white\">{s.alias}</span>\n <span className={`shrink-0 rounded-md border px-2 py-0.5 text-[10px] uppercase tracking-wide ${STATUS_COLORS[statusKey] || STATUS_COLORS.offline}`}>\n {statusKey}\n </span>\n </div>\n <div className=\"mt-0.5 truncate text-xs text-gray-500\">\n {(s.agent || '—')}<span className=\"text-gray-700 mx-1.5\">·</span>{(s.server || '—')}\n </div>\n </Link>\n <div className=\"flex gap-1.5 shrink-0\">\n <button type=\"button\" onClick={() => setChatAlias(s.alias)}\n className=\"rounded-lg border border-green-500/20 bg-green-500/10 px-3 py-1.5 text-xs text-green-300 transition-colors hover:bg-green-500/20\">\n Chat\n </button>\n <button type=\"button\" onClick={() => openSendTask(s.alias)}\n className=\"rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-3 py-1.5 text-xs text-cyan-300 transition-colors hover:bg-cyan-500/20\">\n Task\n </button>\n </div>\n </div>\n\n <div className=\"mt-3 rounded-lg border border-[#1a1a2a] bg-[#0a0a15] px-3 py-2 text-xs\">\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-[10px] uppercase tracking-wide text-gray-600\">Current task</span>\n <span className=\"text-[10px] text-gray-600\">{timeAgo(s.last_seen_at || s.updated_at)}</span>\n </div>\n <div className={`mt-1 line-clamp-2 ${s.task ? 'text-gray-300' : 'text-gray-600 italic'}`}>\n {s.task || 'No current task'}\n </div>\n </div>\n\n {progress > 0 && progress < 100 && (\n <div className=\"mt-3 h-1.5 overflow-hidden rounded-full bg-gray-800\">\n <div className=\"h-1.5 rounded-full bg-cyan-400 transition-all\" style={{ width: `${progress}%` }} />\n </div>\n )}\n\n {taskOpenFor === s.alias && (\n <div className=\"mt-4 space-y-2 rounded-lg border border-[#2a2a4a] bg-[#0a0a15] p-3\">\n <input\n type=\"text\"\n value={taskDrafts[s.alias] || ''}\n onChange={e => updateTaskDraft(s.alias, e.target.value)}\n onKeyDown={e => e.key === 'Enter' && sendTask(s.alias)}\n placeholder={`Send task to ${s.alias}...`}\n className=\"w-full rounded-lg border border-[#2a2a4a] bg-[#050510] px-3 py-2 text-xs text-white placeholder-gray-600 focus:border-cyan-500 focus:outline-none\"\n />\n <div className=\"flex justify-end gap-2\">\n <button\n type=\"button\"\n onClick={() => setTaskOpenFor(null)}\n className=\"rounded-lg border border-gray-700 px-3 py-1.5 text-xs text-gray-400 hover:text-gray-200\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={() => sendTask(s.alias)}\n disabled={state.sending || !(taskDrafts[s.alias] || '').trim()}\n className=\"rounded-lg bg-cyan-600 px-3 py-1.5 text-xs text-white hover:bg-cyan-500 disabled:cursor-not-allowed disabled:bg-gray-700\"\n >\n {state.sending ? 'Sending...' : 'Send'}\n </button>\n </div>\n </div>\n )}\n\n {state.error && <div className=\"mt-2 text-xs text-red-400\">{state.error}</div>}\n {state.success && taskOpenFor !== s.alias && <div className=\"mt-2 text-xs text-green-400\">{state.success}</div>}\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"space-y-2\">\n <div className=\"hidden sm:grid sm:grid-cols-12 gap-2 px-4 py-2 text-xs text-gray-600 uppercase\">\n <div className=\"col-span-1\">Status</div>\n <div className=\"col-span-2\">Alias</div>\n <div className=\"col-span-2\">Agent</div>\n <div className=\"col-span-2\">Server</div>\n <div className=\"col-span-2\">Current Task</div>\n <div className=\"col-span-1\">Updated</div>\n <div className=\"col-span-2 text-right\">Actions</div>\n </div>\n {filtered.map(s => {\n const statusKey = s.online ? s.status : 'offline';\n const state = sendState[s.alias] || {};\n\n return (\n <div\n key={s.alias}\n className={`rounded-lg border border-[#2a2a4a] bg-[#111128] px-4 py-3 transition-colors hover:border-[#3a3a5a] ${!s.online ? 'opacity-50' : ''}`}\n >\n <div className=\"hidden sm:grid sm:grid-cols-12 gap-2 items-center\">\n <div className=\"col-span-1\">\n <span className={`text-xs px-2 py-0.5 rounded-md border ${STATUS_COLORS[statusKey] || STATUS_COLORS.offline}`}>\n {statusKey}\n </span>\n </div>\n <div className=\"col-span-2 min-w-0\">\n <Link href={`/node?alias=${encodeURIComponent(s.alias)}`} className=\"flex items-center gap-2 min-w-0 hover:text-cyan-300\">\n <AliasAvatar alias={s.alias} size={20} />\n <span className=\"truncate text-sm font-medium text-white\">{s.alias}</span>\n </Link>\n </div>\n <div className=\"col-span-2 truncate text-xs text-gray-400\">{s.agent || '--'}</div>\n <div className=\"col-span-2 truncate text-xs text-gray-400\">{s.server || '--'}</div>\n <div className=\"col-span-2 truncate text-xs text-gray-500\">{s.task || '--'}</div>\n <div className=\"col-span-1 text-xs text-gray-500\">{timeAgo(s.last_seen_at || s.updated_at)}</div>\n <div className=\"col-span-2 flex justify-end gap-1.5\">\n <button type=\"button\" onClick={() => setChatAlias(s.alias)}\n className=\"rounded-lg border border-green-500/20 bg-green-500/10 px-2 py-1 text-xs text-green-300 hover:bg-green-500/20\">\n Chat\n </button>\n <button type=\"button\" onClick={() => openSendTask(s.alias)}\n className=\"rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-2 py-1 text-xs text-cyan-300 hover:bg-cyan-500/20\">\n Task\n </button>\n </div>\n </div>\n <div className=\"sm:hidden space-y-2\">\n <div className=\"flex items-center gap-2.5\">\n <AliasAvatar alias={s.alias} size={28} />\n <Link href={`/node?alias=${encodeURIComponent(s.alias)}`} className=\"min-w-0 flex-1 hover:text-cyan-300\">\n <div className=\"truncate text-sm font-medium text-white\">{s.alias}</div>\n <div className=\"truncate text-[10px] text-gray-500\">{s.agent || '—'} · {timeAgo(s.last_seen_at || s.updated_at)}</div>\n </Link>\n <span className={`shrink-0 text-xs px-2 py-0.5 rounded-md border ${STATUS_COLORS[statusKey] || STATUS_COLORS.offline}`}>\n {statusKey}\n </span>\n </div>\n {s.task && <div className=\"truncate text-xs text-gray-500\">{s.task}</div>}\n <div className=\"flex gap-2\">\n <button type=\"button\" onClick={() => setChatAlias(s.alias)}\n className=\"flex-1 rounded-lg border border-green-500/20 bg-green-500/10 px-3 py-2 text-xs text-green-300 hover:bg-green-500/20\">\n Chat\n </button>\n <button type=\"button\" onClick={() => openSendTask(s.alias)}\n className=\"flex-1 rounded-lg border border-cyan-500/20 bg-cyan-500/10 px-3 py-2 text-xs text-cyan-300 hover:bg-cyan-500/20\">\n Send Task\n </button>\n </div>\n </div>\n\n {taskOpenFor === s.alias && (\n <div className=\"mt-3 space-y-2 border-t border-[#2a2a4a] pt-3\">\n <input\n type=\"text\"\n value={taskDrafts[s.alias] || ''}\n onChange={e => updateTaskDraft(s.alias, e.target.value)}\n onKeyDown={e => e.key === 'Enter' && sendTask(s.alias)}\n placeholder={`Send task to ${s.alias}...`}\n className=\"w-full rounded-lg border border-[#2a2a4a] bg-[#0a0a15] px-3 py-2 text-xs text-white placeholder-gray-600 focus:border-cyan-500 focus:outline-none\"\n />\n <div className=\"flex justify-end gap-2\">\n <button\n type=\"button\"\n onClick={() => setTaskOpenFor(null)}\n className=\"rounded-lg border border-gray-700 px-3 py-1.5 text-xs text-gray-400 hover:text-gray-200\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={() => sendTask(s.alias)}\n disabled={state.sending || !(taskDrafts[s.alias] || '').trim()}\n className=\"rounded-lg bg-cyan-600 px-3 py-1.5 text-xs text-white hover:bg-cyan-500 disabled:cursor-not-allowed disabled:bg-gray-700\"\n >\n {state.sending ? 'Sending...' : 'Send'}\n </button>\n </div>\n </div>\n )}\n\n {state.error && <div className=\"mt-2 text-xs text-red-400\">{state.error}</div>}\n {state.success && taskOpenFor !== s.alias && <div className=\"mt-2 text-xs text-green-400\">{state.success}</div>}\n </div>\n );\n })}\n </div>\n )}\n\n {chatAlias && <TaskChatPanel alias={chatAlias} onClose={() => setChatAlias(null)} />}\n </div>\n );\n}\n"],"names":["timeAgo","dateStr","diff","Date","now","replace","getTime","s","Math","floor","statusColor","status","hasSse","formatUptime","seconds","h","m","DEFAULTS","nodes","title","sub","tasks","messages","logs","tokens","networks","generic","Glyph","variant","size","width","height","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","className","role","href","label","onClick","NodesEmptyState","hint","global_count","fetcher","url","res","fetch","window","location","assign","Error","json","SWR_OPTIONS","refreshInterval","dedupingInterval","withNetwork","networkId","sep","includes","encodeURIComponent","useSessions","data","error","isLoading","sessions","_hint","useHealth","health","useAnetConfig","config","useTasks","params","query","URLSearchParams","limit","toString","count","source","useStats","stats","ok","useLicense","license","useMessages","useNodeSession","alias","session","inbox","sse","React","_interopDefaultLegacy","e","React__default","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","isProd","process","env","isString","o","call","StyleSheet","param","ref","_name","name","_optimizeForSpeed","optimizeForSpeed","invariant$1","_deletedRulePlaceholder","_serverSheet","undefined","_tags","_injected","_rulesCount","node","document","querySelector","_nonce","_proto","setOptimizeForSpeed","bool","flush","inject","isOptimizeForSpeed","_this","cssRules","insertRule","rule","index","cssText","push","deleteRule","getSheetForTag","tag","sheet","styleSheets","ownerNode","getSheet","insertionPoint","replaceRule","trim","console","warn","makeStyleTag","cssString","relativeToTag","createElement","setAttribute","type","appendChild","createTextNode","head","getElementsByTagName","insertBefore","get","condition","message","hash","str","_$hash","charCodeAt","stringHash","sanitize","cache","computeId","baseId","propsToString","String","computeSelector","id","css","selectoPlaceholderRegexp","idcss","mapRulesToStyle","options","map","args","nonce","dangerouslySetInnerHTML","__html","StyleSheetRegistry","_styleSheet","styleSheet","_sheet","_fromServer","_indices","_instancesCounts","add","Array","isArray","children","getIdAndRules","styleId","rules","indices","filter","remove","invariant","tagFromServer","parentNode","removeChild","forEach","update","nextProps","fromServer","keys","concat","join","Boolean","styles","dynamic","selectFromServer","elements","slice","querySelectorAll","reduce","acc","element","StyleSheetContext","createContext","displayName","createStyleRegistry","StyleRegistry","configuredRegistry","registry","rootRegistry","useContext","useState","Provider","value","useStyleRegistry","useInsertionEffect","useLayoutEffect","defaultRegistry","JSXStyle","info","tagInfo","exports","style","module","AVATAR_HUES","aliasAvatarColors","hue","bg","ring","text","aliasInitial","ch","match","toUpperCase","AliasAvatar","c","fs","max","round","fontSize","backgroundColor","borderColor","color","STATUS_COLORS","working","idle","blocked","offline","NodesPage","loading","sseMap","sse_sessions","sseFor","network_id","filterStatus","setFilterStatus","search","setSearch","viewMode","setViewMode","taskDrafts","setTaskDrafts","taskOpenFor","setTaskOpenFor","sendState","setSendState","chatAlias","setChatAlias","filtered","online","toLowerCase","agent","sort","a","b","onlineCount","openSendTask","current","prev","updateTaskDraft","sendTask","task","sending","method","headers","body","JSON","stringify","success","total","onChange","placeholder","mode","statusKey","state","progress","server","last_seen_at","updated_at","onKeyDown","disabled","onClose"],"mappings":"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","ignoreList":[3,4]}
|