@sleep2agi/agent-network-dashboard 0.4.6-preview.237 → 0.4.6-preview.239
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 +4 -4
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.html +1 -1
- package/.next/server/app/admin.rsc +1 -1
- package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/logs.html +1 -1
- package/.next/server/app/logs.rsc +1 -1
- package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
- package/.next/server/app/messages.html +1 -1
- package/.next/server/app/messages.rsc +1 -1
- package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
- package/.next/server/app/node.html +1 -1
- package/.next/server/app/node.rsc +1 -1
- package/.next/server/app/node.segments/_full.segment.rsc +1 -1
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +1 -1
- package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/node.segments/node.segment.rsc +1 -1
- package/.next/server/app/nodes.html +1 -1
- package/.next/server/app/nodes.rsc +1 -1
- package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +1 -1
- package/.next/server/app/server-logs.rsc +1 -1
- package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
- package/.next/server/app/settings/networks.html +1 -1
- package/.next/server/app/settings/networks.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +1 -1
- package/.next/server/app/settings/tokens.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/tasks.html +1 -1
- package/.next/server/app/tasks.rsc +1 -1
- package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +3 -3
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/016twt0dzcvbr.js +4 -0
- package/.next/static/chunks/{0n42f9nmie57y.js → 060boig1.kb45.js} +1 -1
- package/.next/static/chunks/{0id2xbrhif.kv.js → 0qiomyuyc18l2.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/TopoGraph.tsx +49 -8
- package/package.json +1 -1
- package/scripts/topo-chip-row-tabular-test.mjs +111 -0
- package/scripts/topo-edge-smil-sync-test.mjs +148 -0
- package/.next/static/chunks/0e4mkpy3dl~zm.js +0 -4
- /package/.next/static/{5Hm18afbTSHGNYCF5p0Bc → ByZN0CutkfiQPs8EmEiL7}/_buildManifest.js +0 -0
- /package/.next/static/{5Hm18afbTSHGNYCF5p0Bc → ByZN0CutkfiQPs8EmEiL7}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{5Hm18afbTSHGNYCF5p0Bc → ByZN0CutkfiQPs8EmEiL7}/_ssgManifest.js +0 -0
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":252,"timestamp":85630754193,"id":4,"parentId":1,"tags":{},"startTime":1778893603000,"traceId":"8dc731dd57e9bff1"},{"name":"load-custom-routes","duration":488,"timestamp":85630754597,"id":5,"parentId":1,"tags":{},"startTime":1778893603001,"traceId":"8dc731dd57e9bff1"},{"name":"create-dist-dir","duration":676,"timestamp":85630755141,"id":6,"parentId":1,"tags":{},"startTime":1778893603001,"traceId":"8dc731dd57e9bff1"},{"name":"clean","duration":808,"timestamp":85630756671,"id":7,"parentId":1,"tags":{},"startTime":1778893603003,"traceId":"8dc731dd57e9bff1"},{"name":"discover-routes","duration":9742,"timestamp":85630843753,"id":8,"parentId":1,"tags":{},"startTime":1778893603090,"traceId":"8dc731dd57e9bff1"},{"name":"create-root-mapping","duration":108,"timestamp":85630853552,"id":9,"parentId":1,"tags":{},"startTime":1778893603100,"traceId":"8dc731dd57e9bff1"},{"name":"generate-route-types","duration":31836,"timestamp":85630855882,"id":10,"parentId":1,"tags":{},"startTime":1778893603102,"traceId":"8dc731dd57e9bff1"},{"name":"public-dir-conflict-check","duration":112,"timestamp":85630887873,"id":11,"parentId":1,"tags":{},"startTime":1778893603134,"traceId":"8dc731dd57e9bff1"},{"name":"generate-routes-manifest","duration":4413,"timestamp":85630888137,"id":12,"parentId":1,"tags":{},"startTime":1778893603134,"traceId":"8dc731dd57e9bff1"},{"name":"run-turbopack","duration":5640042,"timestamp":85630897949,"id":14,"parentId":1,"tags":{},"startTime":1778893603144,"traceId":"8dc731dd57e9bff1"},{"name":"turbopack-build-events","duration":72,"timestamp":85631177481,"id":15,"parentId":1,"tags":{},"startTime":1778893603424,"traceId":"8dc731dd57e9bff1"},{"name":"run-typescript","duration":9016647,"timestamp":85636547350,"id":16,"parentId":1,"tags":{},"startTime":1778893608794,"traceId":"8dc731dd57e9bff1"},{"name":"generate-required-server-files","duration":2243,"timestamp":85645565080,"id":18,"parentId":1,"tags":{},"startTime":1778893617811,"traceId":"8dc731dd57e9bff1"},{"name":"check-static-error-page","duration":11345,"timestamp":85645742740,"id":20,"parentId":19,"tags":{},"startTime":1778893617989,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":452707,"timestamp":85645757188,"id":63,"parentId":22,"tags":{},"startTime":1778893618003,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":465003,"timestamp":85645745098,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778893617991,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":511754,"timestamp":85645757563,"id":66,"parentId":27,"tags":{},"startTime":1778893618004,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":521737,"timestamp":85645747678,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778893617994,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":515799,"timestamp":85645759932,"id":70,"parentId":32,"tags":{},"startTime":1778893618006,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":527462,"timestamp":85645748340,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778893617995,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":535273,"timestamp":85645760036,"id":71,"parentId":33,"tags":{},"startTime":1778893618006,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":546948,"timestamp":85645748437,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778893617995,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":540726,"timestamp":85645757827,"id":67,"parentId":28,"tags":{},"startTime":1778893618004,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":550859,"timestamp":85645747764,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778893617994,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":544524,"timestamp":85645760143,"id":73,"parentId":35,"tags":{},"startTime":1778893618006,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":556142,"timestamp":85645748604,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778893617995,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":551597,"timestamp":85645757457,"id":65,"parentId":26,"tags":{},"startTime":1778893618004,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":561521,"timestamp":85645747588,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778893617994,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":552023,"timestamp":85645760112,"id":72,"parentId":34,"tags":{},"startTime":1778893618006,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":563663,"timestamp":85645748517,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778893617995,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":557325,"timestamp":85645760297,"id":75,"parentId":37,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":568484,"timestamp":85645749198,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778893617995,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":557574,"timestamp":85645760312,"id":76,"parentId":38,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":568636,"timestamp":85645749300,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":558410,"timestamp":85645759730,"id":69,"parentId":30,"tags":{},"startTime":1778893618006,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":570206,"timestamp":85645747964,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778893617994,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":569342,"timestamp":85645760343,"id":79,"parentId":41,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":580216,"timestamp":85645749514,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":572745,"timestamp":85645760334,"id":78,"parentId":40,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":583673,"timestamp":85645749449,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":576572,"timestamp":85645756766,"id":62,"parentId":21,"tags":{},"startTime":1778893618003,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":589466,"timestamp":85645743906,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778893617990,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":574167,"timestamp":85645760363,"id":81,"parentId":43,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":584943,"timestamp":85645749681,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":579555,"timestamp":85645757337,"id":64,"parentId":25,"tags":{},"startTime":1778893618004,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":589505,"timestamp":85645747454,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778893617994,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":578263,"timestamp":85645760263,"id":74,"parentId":36,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":589560,"timestamp":85645749021,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778893617995,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":578515,"timestamp":85645760382,"id":83,"parentId":45,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":589126,"timestamp":85645749820,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":583031,"timestamp":85645760409,"id":86,"parentId":48,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":593403,"timestamp":85645750076,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":586818,"timestamp":85645759541,"id":68,"parentId":29,"tags":{},"startTime":1778893618006,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":598554,"timestamp":85645747847,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778893617994,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":585705,"timestamp":85645761496,"id":87,"parentId":49,"tags":{},"startTime":1778893618008,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":597095,"timestamp":85645750145,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":588087,"timestamp":85645760391,"id":84,"parentId":46,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":598636,"timestamp":85645749883,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":585964,"timestamp":85645766231,"id":89,"parentId":31,"tags":{},"startTime":1778893618013,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":604124,"timestamp":85645748111,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778893617994,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":587779,"timestamp":85645765074,"id":88,"parentId":24,"tags":{},"startTime":1778893618011,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":607356,"timestamp":85645745532,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778893617992,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":596200,"timestamp":85645760400,"id":85,"parentId":47,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":606654,"timestamp":85645749986,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":598470,"timestamp":85645760323,"id":77,"parentId":39,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":609702,"timestamp":85645749379,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":603506,"timestamp":85645760352,"id":80,"parentId":42,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":614286,"timestamp":85645749611,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":656983,"timestamp":85645760372,"id":82,"parentId":44,"tags":{},"startTime":1778893618007,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":667692,"timestamp":85645749744,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778893617996,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":656695,"timestamp":85645768683,"id":96,"parentId":56,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":672791,"timestamp":85645753116,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778893617999,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":666761,"timestamp":85645768645,"id":93,"parentId":52,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":683339,"timestamp":85645752133,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778893617998,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":666972,"timestamp":85645768692,"id":97,"parentId":57,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":682422,"timestamp":85645753285,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778893618000,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":667231,"timestamp":85645768619,"id":91,"parentId":50,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":684078,"timestamp":85645751804,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778893617998,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":672818,"timestamp":85645768591,"id":90,"parentId":23,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":696200,"timestamp":85645745337,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778893617992,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":673016,"timestamp":85645768705,"id":98,"parentId":59,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":688075,"timestamp":85645753693,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778893618000,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":676834,"timestamp":85645768735,"id":100,"parentId":61,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":691742,"timestamp":85645753885,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778893618000,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":662854,"timestamp":85645785801,"id":102,"parentId":55,"tags":{},"startTime":1778893618032,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":696018,"timestamp":85645752678,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778893617999,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":674466,"timestamp":85645774317,"id":101,"parentId":58,"tags":{},"startTime":1778893618021,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":695400,"timestamp":85645753410,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778893618000,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":681676,"timestamp":85645768659,"id":94,"parentId":53,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":698068,"timestamp":85645752315,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778893617999,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":682539,"timestamp":85645768722,"id":99,"parentId":60,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":697526,"timestamp":85645753790,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778893618000,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":684302,"timestamp":85645768671,"id":95,"parentId":54,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":700535,"timestamp":85645752505,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778893617999,"traceId":"8dc731dd57e9bff1"},{"name":"is-page-static","duration":687033,"timestamp":85645768635,"id":92,"parentId":51,"tags":{},"startTime":1778893618015,"traceId":"8dc731dd57e9bff1"},{"name":"check-page","duration":703724,"timestamp":85645751982,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778893617998,"traceId":"8dc731dd57e9bff1"},{"name":"static-check","duration":713879,"timestamp":85645741870,"id":19,"parentId":1,"tags":{},"startTime":1778893617988,"traceId":"8dc731dd57e9bff1"},{"name":"write-routes-manifest","duration":390,"timestamp":85646462588,"id":104,"parentId":1,"tags":{},"startTime":1778893618709,"traceId":"8dc731dd57e9bff1"},{"name":"load-dotenv","duration":46,"timestamp":85646474149,"id":107,"parentId":106,"tags":{},"startTime":1778893618720,"traceId":"8dc731dd57e9bff1"},{"name":"run-export-path-map","duration":562,"timestamp":85646478169,"id":108,"parentId":106,"tags":{},"startTime":1778893618724,"traceId":"8dc731dd57e9bff1"},{"name":"next-export","duration":570203,"timestamp":85646472896,"id":106,"parentId":1,"tags":{},"startTime":1778893618719,"traceId":"8dc731dd57e9bff1"}]
|
|
2
|
-
[{"name":"move-exported-app-not-found-","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":340,"timestamp":86376737840,"id":4,"parentId":1,"tags":{},"startTime":1778894348984,"traceId":"50acbbc424f66a4b"},{"name":"load-custom-routes","duration":449,"timestamp":86376738322,"id":5,"parentId":1,"tags":{},"startTime":1778894348985,"traceId":"50acbbc424f66a4b"},{"name":"create-dist-dir","duration":628,"timestamp":86376738810,"id":6,"parentId":1,"tags":{},"startTime":1778894348985,"traceId":"50acbbc424f66a4b"},{"name":"clean","duration":451,"timestamp":86376740066,"id":7,"parentId":1,"tags":{},"startTime":1778894348986,"traceId":"50acbbc424f66a4b"},{"name":"discover-routes","duration":10508,"timestamp":86376825527,"id":8,"parentId":1,"tags":{},"startTime":1778894349072,"traceId":"50acbbc424f66a4b"},{"name":"create-root-mapping","duration":151,"timestamp":86376836111,"id":9,"parentId":1,"tags":{},"startTime":1778894349082,"traceId":"50acbbc424f66a4b"},{"name":"generate-route-types","duration":39763,"timestamp":86376838884,"id":10,"parentId":1,"tags":{},"startTime":1778894349085,"traceId":"50acbbc424f66a4b"},{"name":"public-dir-conflict-check","duration":165,"timestamp":86376878882,"id":11,"parentId":1,"tags":{},"startTime":1778894349125,"traceId":"50acbbc424f66a4b"},{"name":"generate-routes-manifest","duration":6554,"timestamp":86376879226,"id":12,"parentId":1,"tags":{},"startTime":1778894349126,"traceId":"50acbbc424f66a4b"},{"name":"run-turbopack","duration":9181015,"timestamp":86376894117,"id":14,"parentId":1,"tags":{},"startTime":1778894349140,"traceId":"50acbbc424f66a4b"},{"name":"turbopack-build-events","duration":106,"timestamp":86377253195,"id":15,"parentId":1,"tags":{},"startTime":1778894349499,"traceId":"50acbbc424f66a4b"},{"name":"run-typescript","duration":12494925,"timestamp":86386087157,"id":16,"parentId":1,"tags":{},"startTime":1778894358333,"traceId":"50acbbc424f66a4b"},{"name":"generate-required-server-files","duration":6401,"timestamp":86398583384,"id":18,"parentId":1,"tags":{},"startTime":1778894370830,"traceId":"50acbbc424f66a4b"},{"name":"check-static-error-page","duration":17351,"timestamp":86398757342,"id":20,"parentId":19,"tags":{},"startTime":1778894371004,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":833267,"timestamp":86398782473,"id":66,"parentId":27,"tags":{},"startTime":1778894371029,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":851693,"timestamp":86398764237,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778894371011,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":836602,"timestamp":86398782969,"id":68,"parentId":29,"tags":{},"startTime":1778894371029,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":855098,"timestamp":86398764532,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778894371011,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":830472,"timestamp":86398790617,"id":69,"parentId":30,"tags":{},"startTime":1778894371037,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":856437,"timestamp":86398764701,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778894371011,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":851417,"timestamp":86398782333,"id":65,"parentId":26,"tags":{},"startTime":1778894371029,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":869714,"timestamp":86398764090,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778894371010,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":863740,"timestamp":86398790982,"id":72,"parentId":34,"tags":{},"startTime":1778894371037,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":889327,"timestamp":86398765469,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778894371012,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":870181,"timestamp":86398790804,"id":70,"parentId":32,"tags":{},"startTime":1778894371037,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":895869,"timestamp":86398765197,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778894371011,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":870465,"timestamp":86398790885,"id":71,"parentId":33,"tags":{},"startTime":1778894371037,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":896046,"timestamp":86398765346,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778894371012,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":880939,"timestamp":86398780600,"id":63,"parentId":22,"tags":{},"startTime":1778894371027,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":900985,"timestamp":86398760594,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778894371007,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":900079,"timestamp":86398780212,"id":62,"parentId":21,"tags":{},"startTime":1778894371026,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":921411,"timestamp":86398758944,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778894371005,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":919314,"timestamp":86398791030,"id":73,"parentId":35,"tags":{},"startTime":1778894371037,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":944804,"timestamp":86398765605,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778894371012,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":919392,"timestamp":86398791183,"id":75,"parentId":37,"tags":{},"startTime":1778894371037,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":944260,"timestamp":86398766340,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778894371013,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":919684,"timestamp":86398791146,"id":74,"parentId":36,"tags":{},"startTime":1778894371037,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":944710,"timestamp":86398766153,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778894371012,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":937084,"timestamp":86398791250,"id":80,"parentId":42,"tags":{},"startTime":1778894371038,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":961707,"timestamp":86398766703,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778894371013,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":937397,"timestamp":86398791241,"id":79,"parentId":41,"tags":{},"startTime":1778894371038,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":962038,"timestamp":86398766635,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778894371013,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":951671,"timestamp":86398791228,"id":78,"parentId":40,"tags":{},"startTime":1778894371037,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":976395,"timestamp":86398766573,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778894371013,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":953064,"timestamp":86398791276,"id":82,"parentId":44,"tags":{},"startTime":1778894371038,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":977567,"timestamp":86398766824,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778894371013,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":960309,"timestamp":86398791263,"id":81,"parentId":43,"tags":{},"startTime":1778894371038,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":984872,"timestamp":86398766764,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778894371013,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":960523,"timestamp":86398791289,"id":83,"parentId":45,"tags":{},"startTime":1778894371038,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":984965,"timestamp":86398766889,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778894371013,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":972824,"timestamp":86398791326,"id":86,"parentId":48,"tags":{},"startTime":1778894371038,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":993374,"timestamp":86398770840,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778894371017,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":978911,"timestamp":86398791313,"id":85,"parentId":47,"tags":{},"startTime":1778894371038,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":999574,"timestamp":86398770702,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778894371017,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":981987,"timestamp":86398791335,"id":87,"parentId":49,"tags":{},"startTime":1778894371038,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1002417,"timestamp":86398770971,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778894371017,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":986219,"timestamp":86398791211,"id":77,"parentId":39,"tags":{},"startTime":1778894371037,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1010970,"timestamp":86398766509,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778894371013,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":976485,"timestamp":86398803886,"id":89,"parentId":31,"tags":{},"startTime":1778894371050,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1015566,"timestamp":86398764852,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778894371011,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":992539,"timestamp":86398791299,"id":84,"parentId":46,"tags":{},"startTime":1778894371038,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1016925,"timestamp":86398766962,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778894371013,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":990140,"timestamp":86398802704,"id":88,"parentId":24,"tags":{},"startTime":1778894371049,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1031703,"timestamp":86398761193,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778894371007,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":962668,"timestamp":86398831457,"id":90,"parentId":23,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1033288,"timestamp":86398760891,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778894371007,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":976679,"timestamp":86398831543,"id":94,"parentId":53,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1036154,"timestamp":86398772113,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778894371018,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":992108,"timestamp":86398831557,"id":95,"parentId":54,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1051400,"timestamp":86398772327,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778894371019,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1040898,"timestamp":86398791201,"id":76,"parentId":38,"tags":{},"startTime":1778894371037,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1065714,"timestamp":86398766442,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778894371013,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1084175,"timestamp":86398782773,"id":67,"parentId":28,"tags":{},"startTime":1778894371029,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1102650,"timestamp":86398764388,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778894371011,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1035661,"timestamp":86398831571,"id":96,"parentId":56,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1094080,"timestamp":86398773184,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778894371019,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1035893,"timestamp":86398831503,"id":91,"parentId":50,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1096056,"timestamp":86398771366,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778894371018,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1087683,"timestamp":86398782147,"id":64,"parentId":25,"tags":{},"startTime":1778894371028,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1106022,"timestamp":86398763887,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778894371010,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1060217,"timestamp":86398831626,"id":100,"parentId":61,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1117470,"timestamp":86398774432,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778894371021,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1023499,"timestamp":86398878686,"id":102,"parentId":55,"tags":{},"startTime":1778894371125,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1129659,"timestamp":86398772576,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778894371019,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1071796,"timestamp":86398831611,"id":99,"parentId":60,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1129188,"timestamp":86398774271,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778894371021,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1075799,"timestamp":86398831581,"id":97,"parentId":57,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1134049,"timestamp":86398773375,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778894371020,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1103644,"timestamp":86398831529,"id":93,"parentId":52,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1163384,"timestamp":86398771893,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778894371018,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1107816,"timestamp":86398831519,"id":92,"parentId":51,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1167744,"timestamp":86398771726,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778894371018,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1134523,"timestamp":86398831594,"id":98,"parentId":59,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1192073,"timestamp":86398774100,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778894371020,"traceId":"50acbbc424f66a4b"},{"name":"is-page-static","duration":1146153,"timestamp":86398831640,"id":101,"parentId":58,"tags":{},"startTime":1778894371078,"traceId":"50acbbc424f66a4b"},{"name":"check-page","duration":1204328,"timestamp":86398773527,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778894371020,"traceId":"50acbbc424f66a4b"},{"name":"static-check","duration":1221729,"timestamp":86398756202,"id":19,"parentId":1,"tags":{},"startTime":1778894371002,"traceId":"50acbbc424f66a4b"},{"name":"write-routes-manifest","duration":503,"timestamp":86399985029,"id":104,"parentId":1,"tags":{},"startTime":1778894372231,"traceId":"50acbbc424f66a4b"},{"name":"load-dotenv","duration":81,"timestamp":86399999947,"id":107,"parentId":106,"tags":{},"startTime":1778894372246,"traceId":"50acbbc424f66a4b"},{"name":"run-export-path-map","duration":935,"timestamp":86400004680,"id":108,"parentId":106,"tags":{},"startTime":1778894372251,"traceId":"50acbbc424f66a4b"},{"name":"next-export","duration":779013,"timestamp":86399998140,"id":106,"parentId":1,"tags":{},"startTime":1778894372244,"traceId":"50acbbc424f66a4b"}]
|
|
2
|
+
[{"name":"move-exported-app-not-found-","duration":2579,"timestamp":86400782081,"id":109,"parentId":105,"tags":{},"startTime":1778894373028,"traceId":"50acbbc424f66a4b"},{"name":"move-exported-app-global-error-","duration":1612,"timestamp":86400784776,"id":110,"parentId":105,"tags":{},"startTime":1778894373031,"traceId":"50acbbc424f66a4b"},{"name":"static-generation","duration":798788,"timestamp":86399990209,"id":105,"parentId":1,"tags":{},"startTime":1778894372236,"traceId":"50acbbc424f66a4b"},{"name":"write-routes-manifest","duration":506,"timestamp":86400789233,"id":111,"parentId":1,"tags":{},"startTime":1778894373036,"traceId":"50acbbc424f66a4b"},{"name":"print-tree-view","duration":9650,"timestamp":86400798772,"id":112,"parentId":1,"tags":{},"startTime":1778894373045,"traceId":"50acbbc424f66a4b"},{"name":"write-route-bundle-stats","duration":24594,"timestamp":86400808462,"id":113,"parentId":1,"tags":{},"startTime":1778894373055,"traceId":"50acbbc424f66a4b"},{"name":"telemetry-flush","duration":78648,"timestamp":86400833094,"id":114,"parentId":1,"tags":{},"startTime":1778894373079,"traceId":"50acbbc424f66a4b"},{"name":"next-build","duration":24234382,"timestamp":86376677410,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778894348924,"traceId":"50acbbc424f66a4b"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":9181015,"timestamp":86376894117,"id":14,"parentId":1,"tags":{},"startTime":1778894349140,"traceId":"50acbbc424f66a4b"},{"name":"turbopack-build-events","duration":106,"timestamp":86377253195,"id":15,"parentId":1,"tags":{},"startTime":1778894349499,"traceId":"50acbbc424f66a4b"},{"name":"run-typescript","duration":12494925,"timestamp":86386087157,"id":16,"parentId":1,"tags":{},"startTime":1778894358333,"traceId":"50acbbc424f66a4b"},{"name":"static-check","duration":1221729,"timestamp":86398756202,"id":19,"parentId":1,"tags":{},"startTime":1778894371002,"traceId":"50acbbc424f66a4b"},{"name":"static-generation","duration":798788,"timestamp":86399990209,"id":105,"parentId":1,"tags":{},"startTime":1778894372236,"traceId":"50acbbc424f66a4b"},{"name":"telemetry-flush","duration":78648,"timestamp":86400833094,"id":114,"parentId":1,"tags":{},"startTime":1778894373079,"traceId":"50acbbc424f66a4b"},{"name":"next-build","duration":24234382,"timestamp":86376677410,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778894348924,"traceId":"50acbbc424f66a4b"}]
|
|
@@ -1512,7 +1512,24 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
1512
1512
|
// (10→15 bg, 20→30 border) only when clickable.
|
|
1513
1513
|
// transition-colors duration-200 blends the swap to
|
|
1514
1514
|
// match R193's timing on the active-links chip.
|
|
1515
|
-
|
|
1515
|
+
/* Round 232 / Loop: HTML chip row picks up the
|
|
1516
|
+
tabular-nums info-density treatment R224-R230
|
|
1517
|
+
established on the SVG side. The chip text reads
|
|
1518
|
+
"{N} working"; when workingCount crosses 9→10
|
|
1519
|
+
the leading digit's width shift propagates the
|
|
1520
|
+
trailing ' working' label right by the digit-vs-
|
|
1521
|
+
control glyph delta, and the chip's right edge
|
|
1522
|
+
re-flows because the parent is inline flex. The
|
|
1523
|
+
Tailwind `tabular-nums` utility sets font-variant-
|
|
1524
|
+
numeric: tabular-nums, locking the digit width
|
|
1525
|
+
so the chip text + chip width stay stable across
|
|
1526
|
+
all counter values. Sibling chips (online,
|
|
1527
|
+
active-links) get the same treatment in this
|
|
1528
|
+
round so the three-chip row reads uniformly.
|
|
1529
|
+
7th surface in the info-density tabular-nums
|
|
1530
|
+
sweep — and the first on the HTML side
|
|
1531
|
+
(previous 6 were SVG <text>/<tspan>). */
|
|
1532
|
+
className={`tabular-nums px-2.5 py-1 rounded-md border anet-topo-chip-focus transition-colors duration-200 ${
|
|
1516
1533
|
workingCount > 0
|
|
1517
1534
|
? 'bg-green-500/10 text-green-300 border-green-500/20 hover:bg-green-500/15 hover:border-green-500/30'
|
|
1518
1535
|
: 'bg-green-500/10 text-green-300 border-green-500/20'
|
|
@@ -1589,7 +1606,10 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
1589
1606
|
// working chip · green 10→15 (R201)
|
|
1590
1607
|
// online chip · cyan 10→15 (R201)
|
|
1591
1608
|
// active-links · gray → cyan (R193)
|
|
1592
|
-
|
|
1609
|
+
/* Round 232 / Loop: tabular-nums on online chip
|
|
1610
|
+
(sibling treatment to working chip — same row,
|
|
1611
|
+
same digit-jitter physics on count crossings). */
|
|
1612
|
+
className={`tabular-nums px-2.5 py-1 rounded-md border anet-topo-chip-focus transition-colors duration-200 ${
|
|
1593
1613
|
onlineNodes.length > 0
|
|
1594
1614
|
? 'bg-cyan-500/10 text-cyan-300 border-cyan-500/20 hover:bg-cyan-500/15 hover:border-cyan-500/30'
|
|
1595
1615
|
: 'bg-cyan-500/10 text-cyan-300 border-cyan-500/20'
|
|
@@ -2253,7 +2273,11 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
2253
2273
|
// we replicate color/bg/border transitions inline
|
|
2254
2274
|
// alongside the new opacity 200ms — same splice idiom
|
|
2255
2275
|
// R201 used on the working/online chips.
|
|
2256
|
-
|
|
2276
|
+
/* Round 232 / Loop: tabular-nums on active-links chip
|
|
2277
|
+
(third chip in the row — matches working + online
|
|
2278
|
+
chip treatment so all three digits in the chip row
|
|
2279
|
+
stay width-stable across counter crossings). */
|
|
2280
|
+
className={`tabular-nums hidden sm:inline px-2.5 py-1 rounded-md border anet-topo-chip-focus ${
|
|
2257
2281
|
isInteractive
|
|
2258
2282
|
? 'bg-gray-500/10 text-gray-400 border-gray-500/20 hover:bg-cyan-500/10 hover:text-cyan-200 hover:border-cyan-500/30'
|
|
2259
2283
|
: 'bg-gray-500/10 text-gray-400 border-gray-500/20'
|
|
@@ -3177,6 +3201,23 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
3177
3201
|
const path = curvePath(from, to, lift);
|
|
3178
3202
|
const width = Math.min(2 + link.count, 7);
|
|
3179
3203
|
const duration = Math.max(0.9, 2.6 / Math.sqrt(link.count));
|
|
3204
|
+
// Round 231 / Loop: per-edge phase stagger lifted into a
|
|
3205
|
+
// named constant so the R75 arrival ping + R76 dispatch
|
|
3206
|
+
// pulse SMIL animates can RE-COUPLE to the R103 particle's
|
|
3207
|
+
// cycle. Pre-R103 (when particle started at phase 0) the
|
|
3208
|
+
// ping fired at "near end of cycle" (-0.92*dur) and dispatch
|
|
3209
|
+
// at "cycle start" (0) — both phase-coincident with particle
|
|
3210
|
+
// arrival/departure respectively. R103's golden-ratio
|
|
3211
|
+
// stagger broke that coupling — particle now started at
|
|
3212
|
+
// phase (index*0.37)%dur while ping+pulse stayed at fixed
|
|
3213
|
+
// offsets, so the rings fired at random moments relative
|
|
3214
|
+
// to particle position. R231 expresses dispatch_begin and
|
|
3215
|
+
// arrival_begin in terms of THIS stagger so they fire
|
|
3216
|
+
// exactly when the particle is at source / near destination
|
|
3217
|
+
// respectively — restoring R75/R76's original semantic
|
|
3218
|
+
// and unifying the three SMIL elements into one
|
|
3219
|
+
// synchronised per-edge animation set.
|
|
3220
|
+
const stagger = (index * 0.37) % duration;
|
|
3180
3221
|
// Round 10 / Loop: freshness fade. An edge that fired ≤30s ago
|
|
3181
3222
|
// stays at full intensity; over 5 minutes it decays to ~35%.
|
|
3182
3223
|
// Surfaces "what's happening now" vs background chatter without
|
|
@@ -3353,7 +3394,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
3353
3394
|
<circle r="4" fill={pal.flowParticle} filter={isLight ? undefined : 'url(#topo-glow)'} opacity={Math.min(1, fresh * edgeOpacityMul)}>
|
|
3354
3395
|
<animateMotion
|
|
3355
3396
|
dur={`${duration}s`}
|
|
3356
|
-
begin={`-${
|
|
3397
|
+
begin={`-${stagger.toFixed(3)}s`}
|
|
3357
3398
|
repeatCount="indefinite"
|
|
3358
3399
|
path={path}
|
|
3359
3400
|
/>
|
|
@@ -3402,7 +3443,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
3402
3443
|
attributeName="r"
|
|
3403
3444
|
values="0;14;22"
|
|
3404
3445
|
dur={`${duration}s`}
|
|
3405
|
-
begin={`-${(duration * 0.92).toFixed(
|
|
3446
|
+
begin={`-${((stagger + duration * 0.92) % duration).toFixed(3)}s`}
|
|
3406
3447
|
repeatCount="indefinite"
|
|
3407
3448
|
calcMode="spline"
|
|
3408
3449
|
keyTimes="0;0.5;1"
|
|
@@ -3412,7 +3453,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
3412
3453
|
attributeName="opacity"
|
|
3413
3454
|
values="0;0.55;0"
|
|
3414
3455
|
dur={`${duration}s`}
|
|
3415
|
-
begin={`-${(duration * 0.92).toFixed(
|
|
3456
|
+
begin={`-${((stagger + duration * 0.92) % duration).toFixed(3)}s`}
|
|
3416
3457
|
repeatCount="indefinite"
|
|
3417
3458
|
calcMode="spline"
|
|
3418
3459
|
keyTimes="0;0.5;1"
|
|
@@ -3454,7 +3495,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
3454
3495
|
attributeName="r"
|
|
3455
3496
|
values="0;12;18"
|
|
3456
3497
|
dur={`${duration}s`}
|
|
3457
|
-
begin=
|
|
3498
|
+
begin={`-${stagger.toFixed(3)}s`}
|
|
3458
3499
|
repeatCount="indefinite"
|
|
3459
3500
|
calcMode="spline"
|
|
3460
3501
|
keyTimes="0;0.5;1"
|
|
@@ -3464,7 +3505,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
3464
3505
|
attributeName="opacity"
|
|
3465
3506
|
values="0;0.45;0"
|
|
3466
3507
|
dur={`${duration}s`}
|
|
3467
|
-
begin=
|
|
3508
|
+
begin={`-${stagger.toFixed(3)}s`}
|
|
3468
3509
|
repeatCount="indefinite"
|
|
3469
3510
|
calcMode="spline"
|
|
3470
3511
|
keyTimes="0;0.5;1"
|
package/package.json
CHANGED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/* Round 232 verification: HTML chip row (working / online / active-
|
|
2
|
+
* links) gains the Tailwind `tabular-nums` utility class so the digit
|
|
3
|
+
* width stays stable across counter rollovers (9→10, 99→100).
|
|
4
|
+
*
|
|
5
|
+
* 7th surface in the info-density tabular-nums sweep — first on the
|
|
6
|
+
* HTML side (previous 6 were SVG <text>/<tspan>):
|
|
7
|
+
* R224 edge midpoint badge digit
|
|
8
|
+
* R225 hub center digit
|
|
9
|
+
* R225 recent panel header tspan
|
|
10
|
+
* R225 recent row count tspan
|
|
11
|
+
* R229 group-label · count chip
|
|
12
|
+
* R230 R58 status pip strip × 3 tiers
|
|
13
|
+
* R232 chip row × 3 chips (this round)
|
|
14
|
+
*
|
|
15
|
+
* Scenario: 4 working agents + 1 flow alpha→beta count=5. Drives
|
|
16
|
+
* workingCount=4, onlineNodes.length=4, flowLinks.length=1 → all
|
|
17
|
+
* three chips render with non-empty digits.
|
|
18
|
+
*
|
|
19
|
+
* Verifies for each chip:
|
|
20
|
+
* - element present at its data attr selector
|
|
21
|
+
* - getComputedStyle().fontVariantNumeric includes 'tabular-nums'
|
|
22
|
+
* - textContent starts with the expected digit (sanity)
|
|
23
|
+
*/
|
|
24
|
+
import { chromium } from 'playwright';
|
|
25
|
+
import { readFileSync } from 'node:fs';
|
|
26
|
+
|
|
27
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
28
|
+
const browser = await chromium.launch({ headless: true });
|
|
29
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
|
|
30
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
31
|
+
await ctx.addInitScript(() => {
|
|
32
|
+
try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
|
|
33
|
+
});
|
|
34
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
35
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
36
|
+
const r = await route.fetch();
|
|
37
|
+
const b = await r.json();
|
|
38
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
39
|
+
const mk = (alias) => ({
|
|
40
|
+
alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
|
|
41
|
+
network_id: nid, project_dir: null,
|
|
42
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
43
|
+
});
|
|
44
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [
|
|
45
|
+
mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
|
|
46
|
+
] } });
|
|
47
|
+
});
|
|
48
|
+
const now = Date.now();
|
|
49
|
+
const msgs = [];
|
|
50
|
+
for (let i = 0; i < 5; i++) {
|
|
51
|
+
msgs.push({
|
|
52
|
+
id: `m${i}`, from_alias: 'alpha', to_alias: 'beta', content: 'hi',
|
|
53
|
+
network_id: 'default', created_at: new Date(now - (1000 + i * 50)).toISOString(),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: msgs } }));
|
|
57
|
+
await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
|
|
58
|
+
|
|
59
|
+
const page = await ctx.newPage();
|
|
60
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
|
|
61
|
+
await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
|
|
62
|
+
await page.waitForSelector('[data-working-chip]', { timeout: 10000, state: 'attached' });
|
|
63
|
+
await page.waitForSelector('[data-online-chip]', { timeout: 10000, state: 'attached' });
|
|
64
|
+
await page.waitForSelector('[data-active-links-chip]', { timeout: 10000, state: 'attached' });
|
|
65
|
+
await page.waitForTimeout(300);
|
|
66
|
+
|
|
67
|
+
const out = await page.evaluate(() => {
|
|
68
|
+
const grab = (sel, expectedPrefix) => {
|
|
69
|
+
const el = document.querySelector(sel);
|
|
70
|
+
if (!el) return null;
|
|
71
|
+
return {
|
|
72
|
+
present: true,
|
|
73
|
+
fontVarNumeric: getComputedStyle(el).fontVariantNumeric,
|
|
74
|
+
hasUtility: el.className.split(/\s+/).includes('tabular-nums'),
|
|
75
|
+
textStartsWith: (el.textContent || '').trim().startsWith(expectedPrefix),
|
|
76
|
+
text: (el.textContent || '').trim().slice(0, 30),
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
return {
|
|
80
|
+
working: grab('[data-working-chip]', '4 working'),
|
|
81
|
+
online: grab('[data-online-chip]', '4 online'),
|
|
82
|
+
activeLinks: grab('[data-active-links-chip]', '1 active'),
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
await browser.close();
|
|
86
|
+
|
|
87
|
+
const hasTab = (s) => /tabular-nums/.test(s || '');
|
|
88
|
+
const present = (o) => o && o.present;
|
|
89
|
+
|
|
90
|
+
const results = {
|
|
91
|
+
working_present: present(out.working),
|
|
92
|
+
working_class_utility: out.working?.hasUtility === true,
|
|
93
|
+
working_fvn_tabular: hasTab(out.working?.fontVarNumeric),
|
|
94
|
+
working_text_ok: out.working?.textStartsWith === true,
|
|
95
|
+
|
|
96
|
+
online_present: present(out.online),
|
|
97
|
+
online_class_utility: out.online?.hasUtility === true,
|
|
98
|
+
online_fvn_tabular: hasTab(out.online?.fontVarNumeric),
|
|
99
|
+
online_text_ok: out.online?.textStartsWith === true,
|
|
100
|
+
|
|
101
|
+
active_present: present(out.activeLinks),
|
|
102
|
+
active_class_utility: out.activeLinks?.hasUtility === true,
|
|
103
|
+
active_fvn_tabular: hasTab(out.activeLinks?.fontVarNumeric),
|
|
104
|
+
active_text_ok: out.activeLinks?.textStartsWith === true,
|
|
105
|
+
};
|
|
106
|
+
const ok = Object.values(results).every(Boolean);
|
|
107
|
+
console.log(`${ok ? '✅' : '❌'} chip row tabular-nums:`, JSON.stringify(results),
|
|
108
|
+
'\n working: ', out.working,
|
|
109
|
+
'\n online: ', out.online,
|
|
110
|
+
'\n activeLinks:', out.activeLinks);
|
|
111
|
+
process.exit(ok ? 0 : 1);
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/* Round 231 verification: edge SMIL trio (R103 particle motion +
|
|
2
|
+
* R76 dispatch pulse + R75 arrival ping) now share a single per-edge
|
|
3
|
+
* stagger so all three fire phase-coherently with the particle:
|
|
4
|
+
*
|
|
5
|
+
* particle.animateMotion.begin = -stagger
|
|
6
|
+
* dispatch.animate.begin = -stagger (= particle's)
|
|
7
|
+
* arrival.animate.begin = -(stagger + 0.92*dur) mod dur
|
|
8
|
+
*
|
|
9
|
+
* where stagger = (edgeIndex * 0.37) % duration,
|
|
10
|
+
* duration = max(0.9, 2.6 / sqrt(link.count)).
|
|
11
|
+
*
|
|
12
|
+
* Scenario: 4 working agents + 2 flows (alpha→beta count=5, gamma→
|
|
13
|
+
* delta count=4) — both flows have count ≥ 3 so dispatch pulse
|
|
14
|
+
* fires on both, and fresh > 0.5 so arrival ping fires on both.
|
|
15
|
+
*
|
|
16
|
+
* Per edge:
|
|
17
|
+
* - probe particle's animateMotion.begin
|
|
18
|
+
* - probe dispatch's two <animate>.begin (r + opacity, must match)
|
|
19
|
+
* - probe arrival's two <animate>.begin (r + opacity, must match)
|
|
20
|
+
* - verify all three follow the formula given index + duration
|
|
21
|
+
*/
|
|
22
|
+
import { chromium } from 'playwright';
|
|
23
|
+
import { readFileSync } from 'node:fs';
|
|
24
|
+
|
|
25
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
26
|
+
const browser = await chromium.launch({ headless: true });
|
|
27
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
|
|
28
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
29
|
+
await ctx.addInitScript(() => {
|
|
30
|
+
try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
|
|
31
|
+
});
|
|
32
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
33
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
34
|
+
const r = await route.fetch();
|
|
35
|
+
const b = await r.json();
|
|
36
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
37
|
+
const mk = (alias) => ({
|
|
38
|
+
alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
|
|
39
|
+
network_id: nid, project_dir: null,
|
|
40
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
41
|
+
});
|
|
42
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [
|
|
43
|
+
mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
|
|
44
|
+
] } });
|
|
45
|
+
});
|
|
46
|
+
const now = Date.now();
|
|
47
|
+
const msgs = [];
|
|
48
|
+
// flow 0: alpha→beta count=5 — sorted by recent activity, this will be
|
|
49
|
+
// the more-recent flow; edge index depends on flowLinks.sort by last_at desc.
|
|
50
|
+
for (let i = 0; i < 5; i++) {
|
|
51
|
+
msgs.push({
|
|
52
|
+
id: `ab${i}`, from_alias: 'alpha', to_alias: 'beta', content: 'hi',
|
|
53
|
+
network_id: 'default', created_at: new Date(now - (500 + i * 50)).toISOString(),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
// flow 1: gamma→delta count=4 — older
|
|
57
|
+
for (let i = 0; i < 4; i++) {
|
|
58
|
+
msgs.push({
|
|
59
|
+
id: `gd${i}`, from_alias: 'gamma', to_alias: 'delta', content: 'hi',
|
|
60
|
+
network_id: 'default', created_at: new Date(now - (5000 + i * 50)).toISOString(),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: msgs } }));
|
|
64
|
+
await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
|
|
65
|
+
|
|
66
|
+
const page = await ctx.newPage();
|
|
67
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
|
|
68
|
+
await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
|
|
69
|
+
await page.waitForSelector('[data-arrival-ping]', { timeout: 10000, state: 'attached' });
|
|
70
|
+
await page.waitForSelector('[data-dispatch-pulse]', { timeout: 10000, state: 'attached' });
|
|
71
|
+
await page.waitForTimeout(400);
|
|
72
|
+
|
|
73
|
+
const probe = await page.evaluate(() => {
|
|
74
|
+
// Edges keyed by link.key ("from→to"). We grab pairs of (arrival, dispatch)
|
|
75
|
+
// by data attr, plus particle's animateMotion inside the edge <g>.
|
|
76
|
+
const pings = Array.from(document.querySelectorAll('[data-arrival-ping]'));
|
|
77
|
+
const pulses = Array.from(document.querySelectorAll('[data-dispatch-pulse]'));
|
|
78
|
+
// Each ping/pulse lives inside an edge <g> that also contains the animateMotion
|
|
79
|
+
// for the particle. We walk up to find the shared parent.
|
|
80
|
+
return pings.map((ping) => {
|
|
81
|
+
const key = ping.getAttribute('data-arrival-ping');
|
|
82
|
+
const pulse = pulses.find(p => p.getAttribute('data-dispatch-pulse') === key);
|
|
83
|
+
// animateMotion lives in a sibling <circle> within the same parent <g>
|
|
84
|
+
const edgeG = ping.closest('g[data-edge-visible-parent]') || ping.parentElement;
|
|
85
|
+
const motion = edgeG?.querySelector('animateMotion');
|
|
86
|
+
const pingAnims = Array.from(ping.querySelectorAll('animate'));
|
|
87
|
+
const pulseAnims = pulse ? Array.from(pulse.querySelectorAll('animate')) : [];
|
|
88
|
+
return {
|
|
89
|
+
key,
|
|
90
|
+
pingBeginR: pingAnims.find(a => a.getAttribute('attributeName') === 'r')?.getAttribute('begin') || null,
|
|
91
|
+
pingBeginOpacity: pingAnims.find(a => a.getAttribute('attributeName') === 'opacity')?.getAttribute('begin') || null,
|
|
92
|
+
pulseBeginR: pulseAnims.find(a => a.getAttribute('attributeName') === 'r')?.getAttribute('begin') || null,
|
|
93
|
+
pulseBeginOpacity: pulseAnims.find(a => a.getAttribute('attributeName') === 'opacity')?.getAttribute('begin') || null,
|
|
94
|
+
motionBegin: motion?.getAttribute('begin') || null,
|
|
95
|
+
motionDur: motion?.getAttribute('dur') || null,
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
await browser.close();
|
|
100
|
+
|
|
101
|
+
const parseS = (s) => {
|
|
102
|
+
if (!s) return null;
|
|
103
|
+
const m = String(s).match(/^-?(\d+(?:\.\d+)?)s$/);
|
|
104
|
+
if (!m) return null;
|
|
105
|
+
return s.startsWith('-') ? -parseFloat(m[1]) : parseFloat(m[1]);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const close = (a, b, eps = 0.005) => Math.abs(a - b) < eps;
|
|
109
|
+
|
|
110
|
+
const validate = (edge) => {
|
|
111
|
+
const dur = parseS(edge.motionDur);
|
|
112
|
+
const motionBegin = parseS(edge.motionBegin); // -stagger
|
|
113
|
+
const pingR = parseS(edge.pingBeginR);
|
|
114
|
+
const pingOp = parseS(edge.pingBeginOpacity);
|
|
115
|
+
const pulseR = parseS(edge.pulseBeginR);
|
|
116
|
+
const pulseOp = parseS(edge.pulseBeginOpacity);
|
|
117
|
+
if (dur === null || motionBegin === null || motionBegin > 0) return null;
|
|
118
|
+
const stagger = -motionBegin; // positive
|
|
119
|
+
// Expected ping begin = -(stagger + 0.92*dur) mod dur → in [-dur, 0]
|
|
120
|
+
const wrapped = (stagger + 0.92 * dur) % dur;
|
|
121
|
+
const expectedPing = -wrapped;
|
|
122
|
+
return {
|
|
123
|
+
dur,
|
|
124
|
+
motionBegin,
|
|
125
|
+
stagger,
|
|
126
|
+
expectedPing,
|
|
127
|
+
pulseR,
|
|
128
|
+
pulseOp,
|
|
129
|
+
pingR,
|
|
130
|
+
pingOp,
|
|
131
|
+
dispatch_matches_particle: close(pulseR, motionBegin) && close(pulseOp, motionBegin),
|
|
132
|
+
arrival_matches_formula: close(pingR, expectedPing) && close(pingOp, expectedPing),
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const edges = probe.map(validate).filter(e => e !== null);
|
|
137
|
+
|
|
138
|
+
const results = {
|
|
139
|
+
at_least_one_edge: edges.length >= 1,
|
|
140
|
+
all_dispatch_match_particle: edges.every(e => e.dispatch_matches_particle),
|
|
141
|
+
all_arrival_match_formula: edges.every(e => e.arrival_matches_formula),
|
|
142
|
+
pulse_r_op_consistent: edges.every(e => Math.abs(e.pulseR - e.pulseOp) < 0.005),
|
|
143
|
+
ping_r_op_consistent: edges.every(e => Math.abs(e.pingR - e.pingOp) < 0.005),
|
|
144
|
+
};
|
|
145
|
+
const ok = Object.values(results).every(Boolean);
|
|
146
|
+
console.log(`${ok ? '✅' : '❌'} edge SMIL sync:`, JSON.stringify(results),
|
|
147
|
+
'\n edges:', edges);
|
|
148
|
+
process.exit(ok ? 0 : 1);
|