@sleep2agi/agent-network-dashboard 0.4.6-preview.331 → 0.4.6-preview.332

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.
Files changed (133) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +2 -2
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/admin.html +1 -1
  21. package/.next/server/app/admin.rsc +1 -1
  22. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  28. package/.next/server/app/index.html +2 -2
  29. package/.next/server/app/index.rsc +2 -2
  30. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/login.html +1 -1
  36. package/.next/server/app/login.rsc +1 -1
  37. package/.next/server/app/login.segments/_full.segment.rsc +1 -1
  38. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  39. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  43. package/.next/server/app/logs.html +1 -1
  44. package/.next/server/app/logs.rsc +1 -1
  45. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  46. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  51. package/.next/server/app/messages.html +1 -1
  52. package/.next/server/app/messages.rsc +1 -1
  53. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  54. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  59. package/.next/server/app/node.html +1 -1
  60. package/.next/server/app/node.rsc +1 -1
  61. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  62. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  67. package/.next/server/app/nodes.html +1 -1
  68. package/.next/server/app/nodes.rsc +1 -1
  69. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  75. package/.next/server/app/page_client-reference-manifest.js +1 -1
  76. package/.next/server/app/server-logs.html +1 -1
  77. package/.next/server/app/server-logs.rsc +1 -1
  78. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  84. package/.next/server/app/settings/networks.html +1 -1
  85. package/.next/server/app/settings/networks.rsc +1 -1
  86. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  93. package/.next/server/app/settings/tokens.html +1 -1
  94. package/.next/server/app/settings/tokens.rsc +1 -1
  95. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  96. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  102. package/.next/server/app/settings.html +1 -1
  103. package/.next/server/app/settings.rsc +1 -1
  104. package/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  105. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  106. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  107. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  110. package/.next/server/app/tasks.html +1 -1
  111. package/.next/server/app/tasks.rsc +1 -1
  112. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  113. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  118. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
  119. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  120. package/.next/server/middleware-build-manifest.js +3 -3
  121. package/.next/server/pages/404.html +1 -1
  122. package/.next/server/pages/500.html +1 -1
  123. package/.next/static/chunks/{1851sbdemt00t.js → 0_e7lmzh87xp3.js} +4 -4
  124. package/.next/trace +2 -2
  125. package/.next/trace-build +1 -1
  126. package/app/components/ServersDrawer.tsx +108 -0
  127. package/app/components/TopoGraph.tsx +4 -4
  128. package/package.json +1 -1
  129. package/scripts/topo-chrome-active-weight-test.mjs +104 -0
  130. /package/.next/static/{3PMYuA9TBRow9F7QeNZc7 → hfSU1i7vzNQ20f_ftGrx-}/_buildManifest.js +0 -0
  131. /package/.next/static/{3PMYuA9TBRow9F7QeNZc7 → hfSU1i7vzNQ20f_ftGrx-}/_clientMiddlewareManifest.js +0 -0
  132. /package/.next/static/{3PMYuA9TBRow9F7QeNZc7 → hfSU1i7vzNQ20f_ftGrx-}/_ssgManifest.js +0 -0
  133. /package/{screenshots/r293-p0/v0.10.0-hero3-rfc.md → docs/rfc/v0.10.0-hero3-dashboard-upgrade.md} +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":290,"timestamp":118895061735,"id":4,"parentId":1,"tags":{},"startTime":1778926867308,"traceId":"ce839ee52c2bd995"},{"name":"load-custom-routes","duration":445,"timestamp":118895062174,"id":5,"parentId":1,"tags":{},"startTime":1778926867308,"traceId":"ce839ee52c2bd995"},{"name":"create-dist-dir","duration":734,"timestamp":118895062670,"id":6,"parentId":1,"tags":{},"startTime":1778926867309,"traceId":"ce839ee52c2bd995"},{"name":"clean","duration":37509,"timestamp":118895064095,"id":7,"parentId":1,"tags":{},"startTime":1778926867310,"traceId":"ce839ee52c2bd995"},{"name":"discover-routes","duration":10767,"timestamp":118895190470,"id":8,"parentId":1,"tags":{},"startTime":1778926867437,"traceId":"ce839ee52c2bd995"},{"name":"create-root-mapping","duration":152,"timestamp":118895201334,"id":9,"parentId":1,"tags":{},"startTime":1778926867448,"traceId":"ce839ee52c2bd995"},{"name":"generate-route-types","duration":35006,"timestamp":118895204649,"id":10,"parentId":1,"tags":{},"startTime":1778926867451,"traceId":"ce839ee52c2bd995"},{"name":"public-dir-conflict-check","duration":97,"timestamp":118895239750,"id":11,"parentId":1,"tags":{},"startTime":1778926867486,"traceId":"ce839ee52c2bd995"},{"name":"generate-routes-manifest","duration":4937,"timestamp":118895239984,"id":12,"parentId":1,"tags":{},"startTime":1778926867486,"traceId":"ce839ee52c2bd995"},{"name":"run-turbopack","duration":7356972,"timestamp":118895249818,"id":14,"parentId":1,"tags":{},"startTime":1778926867496,"traceId":"ce839ee52c2bd995"},{"name":"turbopack-build-events","duration":102,"timestamp":118895559297,"id":15,"parentId":1,"tags":{},"startTime":1778926867806,"traceId":"ce839ee52c2bd995"},{"name":"run-typescript","duration":9977199,"timestamp":118902615864,"id":16,"parentId":1,"tags":{},"startTime":1778926874862,"traceId":"ce839ee52c2bd995"},{"name":"generate-required-server-files","duration":3149,"timestamp":118912594332,"id":18,"parentId":1,"tags":{},"startTime":1778926884841,"traceId":"ce839ee52c2bd995"},{"name":"check-static-error-page","duration":18363,"timestamp":118912804666,"id":20,"parentId":19,"tags":{},"startTime":1778926885051,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":662468,"timestamp":118912828422,"id":63,"parentId":22,"tags":{},"startTime":1778926885075,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":683333,"timestamp":118912807737,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778926885054,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":747370,"timestamp":118912829051,"id":67,"parentId":28,"tags":{},"startTime":1778926885075,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":765299,"timestamp":118912811214,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778926885057,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":786993,"timestamp":118912827964,"id":62,"parentId":21,"tags":{},"startTime":1778926885074,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":808803,"timestamp":118912806252,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778926885053,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":810851,"timestamp":118912829494,"id":70,"parentId":32,"tags":{},"startTime":1778926885076,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":828573,"timestamp":118912811845,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778926885058,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":812712,"timestamp":118912828551,"id":64,"parentId":25,"tags":{},"startTime":1778926885075,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":830560,"timestamp":118912810762,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778926885057,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":817177,"timestamp":118912829662,"id":73,"parentId":35,"tags":{},"startTime":1778926885076,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":834616,"timestamp":118912812293,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778926885059,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":818012,"timestamp":118912829632,"id":72,"parentId":34,"tags":{},"startTime":1778926885076,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":835543,"timestamp":118912812170,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778926885058,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":815370,"timestamp":118912837189,"id":75,"parentId":37,"tags":{},"startTime":1778926885083,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":839575,"timestamp":118912813037,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778926885059,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":829730,"timestamp":118912828677,"id":65,"parentId":26,"tags":{},"startTime":1778926885075,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":847507,"timestamp":118912810959,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778926885057,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":821645,"timestamp":118912837211,"id":76,"parentId":38,"tags":{},"startTime":1778926885083,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":845702,"timestamp":118912813210,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778926885059,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":825854,"timestamp":118912837235,"id":78,"parentId":40,"tags":{},"startTime":1778926885084,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":849678,"timestamp":118912813453,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778926885060,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":832347,"timestamp":118912837246,"id":79,"parentId":41,"tags":{},"startTime":1778926885084,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":856082,"timestamp":118912813565,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778926885060,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":837200,"timestamp":118912837261,"id":80,"parentId":42,"tags":{},"startTime":1778926885084,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":860832,"timestamp":118912813683,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778926885060,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":842030,"timestamp":118912837225,"id":77,"parentId":39,"tags":{},"startTime":1778926885083,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":865974,"timestamp":118912813331,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778926885060,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":843779,"timestamp":118912837270,"id":81,"parentId":43,"tags":{},"startTime":1778926885084,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":867307,"timestamp":118912813794,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778926885060,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":849103,"timestamp":118912837300,"id":83,"parentId":45,"tags":{},"startTime":1778926885084,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":872395,"timestamp":118912814055,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778926885060,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":854948,"timestamp":118912837131,"id":74,"parentId":36,"tags":{},"startTime":1778926885083,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":879320,"timestamp":118912812819,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778926885059,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":856903,"timestamp":118912837315,"id":84,"parentId":46,"tags":{},"startTime":1778926885084,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":878462,"timestamp":118912815806,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778926885062,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":864491,"timestamp":118912837283,"id":82,"parentId":44,"tags":{},"startTime":1778926885084,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":887906,"timestamp":118912813920,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778926885060,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":864654,"timestamp":118912837336,"id":86,"parentId":48,"tags":{},"startTime":1778926885084,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":885882,"timestamp":118912816162,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778926885062,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":874880,"timestamp":118912837350,"id":87,"parentId":49,"tags":{},"startTime":1778926885084,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":896011,"timestamp":118912816280,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778926885063,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":866791,"timestamp":118912848639,"id":88,"parentId":24,"tags":{},"startTime":1778926885095,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":907160,"timestamp":118912808322,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778926885055,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":889889,"timestamp":118912829334,"id":69,"parentId":30,"tags":{},"startTime":1778926885076,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":907826,"timestamp":118912811451,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778926885058,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":887743,"timestamp":118912837324,"id":85,"parentId":47,"tags":{},"startTime":1778926885084,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":909086,"timestamp":118912816036,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778926885062,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":901196,"timestamp":118912829558,"id":71,"parentId":33,"tags":{},"startTime":1778926885076,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":918806,"timestamp":118912811998,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778926885058,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":871906,"timestamp":118912862796,"id":89,"parentId":31,"tags":{},"startTime":1778926885109,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":923176,"timestamp":118912811574,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778926885058,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":909152,"timestamp":118912829209,"id":68,"parentId":29,"tags":{},"startTime":1778926885075,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":927080,"timestamp":118912811324,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778926885058,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":826108,"timestamp":118912912818,"id":93,"parentId":52,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":921881,"timestamp":118912817084,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778926885063,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":833808,"timestamp":118912912861,"id":96,"parentId":56,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":928262,"timestamp":118912818456,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778926885065,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":844309,"timestamp":118912912871,"id":97,"parentId":57,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":938560,"timestamp":118912818675,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778926885065,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":849944,"timestamp":118912912897,"id":98,"parentId":59,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":943556,"timestamp":118912819350,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778926885066,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":870289,"timestamp":118912913033,"id":99,"parentId":60,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":960844,"timestamp":118912822557,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778926885069,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":877315,"timestamp":118912912739,"id":90,"parentId":23,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":982091,"timestamp":118912808048,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778926885054,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":878394,"timestamp":118912913049,"id":100,"parentId":61,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":968777,"timestamp":118912822724,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778926885069,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":963160,"timestamp":118912828781,"id":66,"parentId":27,"tags":{},"startTime":1778926885075,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":980899,"timestamp":118912811098,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778926885057,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":886369,"timestamp":118912913063,"id":101,"parentId":58,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":980608,"timestamp":118912818870,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778926885065,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":886488,"timestamp":118912913076,"id":102,"parentId":55,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":981822,"timestamp":118912817809,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778926885064,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":888629,"timestamp":118912912793,"id":91,"parentId":50,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":984794,"timestamp":118912816684,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778926885063,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":900930,"timestamp":118912912808,"id":92,"parentId":51,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":996924,"timestamp":118912816868,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778926885063,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":927061,"timestamp":118912912830,"id":94,"parentId":53,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":1022649,"timestamp":118912817313,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778926885064,"traceId":"ce839ee52c2bd995"},{"name":"is-page-static","duration":938340,"timestamp":118912912847,"id":95,"parentId":54,"tags":{},"startTime":1778926885159,"traceId":"ce839ee52c2bd995"},{"name":"check-page","duration":1033720,"timestamp":118912817543,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778926885064,"traceId":"ce839ee52c2bd995"},{"name":"static-check","duration":1048569,"timestamp":118912802748,"id":19,"parentId":1,"tags":{},"startTime":1778926885049,"traceId":"ce839ee52c2bd995"},{"name":"write-routes-manifest","duration":653,"timestamp":118913860327,"id":104,"parentId":1,"tags":{},"startTime":1778926886107,"traceId":"ce839ee52c2bd995"},{"name":"load-dotenv","duration":65,"timestamp":118913874985,"id":107,"parentId":106,"tags":{},"startTime":1778926886121,"traceId":"ce839ee52c2bd995"},{"name":"run-export-path-map","duration":545,"timestamp":118913878206,"id":108,"parentId":106,"tags":{},"startTime":1778926886124,"traceId":"ce839ee52c2bd995"},{"name":"next-export","duration":665917,"timestamp":118913873758,"id":106,"parentId":1,"tags":{},"startTime":1778926886120,"traceId":"ce839ee52c2bd995"}]
2
- [{"name":"move-exported-app-not-found-","duration":2635,"timestamp":118914543969,"id":109,"parentId":105,"tags":{},"startTime":1778926886790,"traceId":"ce839ee52c2bd995"},{"name":"move-exported-app-global-error-","duration":976,"timestamp":118914546701,"id":110,"parentId":105,"tags":{},"startTime":1778926886793,"traceId":"ce839ee52c2bd995"},{"name":"static-generation","duration":683739,"timestamp":118913865846,"id":105,"parentId":1,"tags":{},"startTime":1778926886112,"traceId":"ce839ee52c2bd995"},{"name":"write-routes-manifest","duration":471,"timestamp":118914549748,"id":111,"parentId":1,"tags":{},"startTime":1778926886796,"traceId":"ce839ee52c2bd995"},{"name":"print-tree-view","duration":7419,"timestamp":118914558121,"id":112,"parentId":1,"tags":{},"startTime":1778926886804,"traceId":"ce839ee52c2bd995"},{"name":"write-route-bundle-stats","duration":21461,"timestamp":118914565591,"id":113,"parentId":1,"tags":{},"startTime":1778926886812,"traceId":"ce839ee52c2bd995"},{"name":"telemetry-flush","duration":26450,"timestamp":118914587101,"id":114,"parentId":1,"tags":{},"startTime":1778926886833,"traceId":"ce839ee52c2bd995"},{"name":"next-build","duration":19609005,"timestamp":118895004584,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778926867251,"traceId":"ce839ee52c2bd995"}]
1
+ [{"name":"generate-buildid","duration":365,"timestamp":119486465409,"id":4,"parentId":1,"tags":{},"startTime":1778927458712,"traceId":"fb8b3c1e8034abd6"},{"name":"load-custom-routes","duration":520,"timestamp":119486465945,"id":5,"parentId":1,"tags":{},"startTime":1778927458712,"traceId":"fb8b3c1e8034abd6"},{"name":"create-dist-dir","duration":762,"timestamp":119486466512,"id":6,"parentId":1,"tags":{},"startTime":1778927458713,"traceId":"fb8b3c1e8034abd6"},{"name":"clean","duration":37132,"timestamp":119486468154,"id":7,"parentId":1,"tags":{},"startTime":1778927458714,"traceId":"fb8b3c1e8034abd6"},{"name":"discover-routes","duration":27332,"timestamp":119486598156,"id":8,"parentId":1,"tags":{},"startTime":1778927458844,"traceId":"fb8b3c1e8034abd6"},{"name":"create-root-mapping","duration":178,"timestamp":119486625576,"id":9,"parentId":1,"tags":{},"startTime":1778927458872,"traceId":"fb8b3c1e8034abd6"},{"name":"generate-route-types","duration":31601,"timestamp":119486628972,"id":10,"parentId":1,"tags":{},"startTime":1778927458875,"traceId":"fb8b3c1e8034abd6"},{"name":"public-dir-conflict-check","duration":132,"timestamp":119486660680,"id":11,"parentId":1,"tags":{},"startTime":1778927458907,"traceId":"fb8b3c1e8034abd6"},{"name":"generate-routes-manifest","duration":4874,"timestamp":119486660982,"id":12,"parentId":1,"tags":{},"startTime":1778927458907,"traceId":"fb8b3c1e8034abd6"},{"name":"run-turbopack","duration":8019030,"timestamp":119486682527,"id":14,"parentId":1,"tags":{},"startTime":1778927458929,"traceId":"fb8b3c1e8034abd6"},{"name":"turbopack-build-events","duration":121,"timestamp":119487004850,"id":15,"parentId":1,"tags":{},"startTime":1778927459251,"traceId":"fb8b3c1e8034abd6"},{"name":"run-typescript","duration":11090086,"timestamp":119494709243,"id":16,"parentId":1,"tags":{},"startTime":1778927466956,"traceId":"fb8b3c1e8034abd6"},{"name":"generate-required-server-files","duration":3027,"timestamp":119505800711,"id":18,"parentId":1,"tags":{},"startTime":1778927478047,"traceId":"fb8b3c1e8034abd6"},{"name":"check-static-error-page","duration":16478,"timestamp":119506019872,"id":20,"parentId":19,"tags":{},"startTime":1778927478266,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":584097,"timestamp":119506041077,"id":63,"parentId":22,"tags":{},"startTime":1778927478287,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":602225,"timestamp":119506023210,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778927478269,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":714069,"timestamp":119506043566,"id":69,"parentId":30,"tags":{},"startTime":1778927478290,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":730042,"timestamp":119506027694,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778927478274,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":726757,"timestamp":119506041463,"id":66,"parentId":27,"tags":{},"startTime":1778927478288,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":741133,"timestamp":119506027162,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778927478273,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":723209,"timestamp":119506045301,"id":70,"parentId":32,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":740392,"timestamp":119506028161,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778927478274,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":731718,"timestamp":119506041230,"id":64,"parentId":25,"tags":{},"startTime":1778927478288,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":746239,"timestamp":119506026789,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778927478273,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":736580,"timestamp":119506045501,"id":73,"parentId":35,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":753538,"timestamp":119506028614,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778927478275,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":744721,"timestamp":119506040657,"id":62,"parentId":21,"tags":{},"startTime":1778927478287,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":763518,"timestamp":119506021923,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778927478268,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":757430,"timestamp":119506045385,"id":71,"parentId":33,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":774608,"timestamp":119506028329,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778927478275,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":761789,"timestamp":119506045607,"id":74,"parentId":36,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":778329,"timestamp":119506029138,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778927478275,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":768320,"timestamp":119506041351,"id":65,"parentId":26,"tags":{},"startTime":1778927478288,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":782761,"timestamp":119506026962,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778927478273,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":769391,"timestamp":119506045665,"id":77,"parentId":39,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":785515,"timestamp":119506029622,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778927478276,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":772834,"timestamp":119506045470,"id":72,"parentId":34,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":789869,"timestamp":119506028476,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778927478275,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":779074,"timestamp":119506043425,"id":68,"parentId":29,"tags":{},"startTime":1778927478290,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":795020,"timestamp":119506027534,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778927478274,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":778898,"timestamp":119506045700,"id":80,"parentId":42,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":794714,"timestamp":119506029925,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778927478276,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":783238,"timestamp":119506045687,"id":79,"parentId":41,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":799161,"timestamp":119506029812,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778927478276,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":783353,"timestamp":119506045771,"id":82,"parentId":44,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":799030,"timestamp":119506030129,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778927478276,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":792301,"timestamp":119506045783,"id":83,"parentId":45,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":807922,"timestamp":119506030220,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778927478276,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":793754,"timestamp":119506045674,"id":78,"parentId":40,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":809754,"timestamp":119506029718,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778927478276,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":793813,"timestamp":119506045797,"id":84,"parentId":46,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":809334,"timestamp":119506030309,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778927478277,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":798709,"timestamp":119506045807,"id":85,"parentId":47,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":811940,"timestamp":119506032620,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778927478279,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":801589,"timestamp":119506051534,"id":88,"parentId":24,"tags":{},"startTime":1778927478298,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":829429,"timestamp":119506023747,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778927478270,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":805655,"timestamp":119506058736,"id":89,"parentId":31,"tags":{},"startTime":1778927478305,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":836619,"timestamp":119506027819,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778927478274,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":819212,"timestamp":119506045753,"id":81,"parentId":43,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":834997,"timestamp":119506030041,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778927478276,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":825521,"timestamp":119506045653,"id":76,"parentId":38,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":841695,"timestamp":119506029526,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778927478276,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":826747,"timestamp":119506045831,"id":87,"parentId":49,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":839796,"timestamp":119506032833,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778927478279,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":835040,"timestamp":119506043205,"id":67,"parentId":28,"tags":{},"startTime":1778927478289,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":850987,"timestamp":119506027306,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778927478274,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":838633,"timestamp":119506045819,"id":86,"parentId":48,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":851754,"timestamp":119506032744,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778927478279,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":876907,"timestamp":119506064568,"id":93,"parentId":52,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":908029,"timestamp":119506033684,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778927478280,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":880852,"timestamp":119506064542,"id":91,"parentId":50,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":912130,"timestamp":119506033325,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778927478280,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":904869,"timestamp":119506045636,"id":75,"parentId":37,"tags":{},"startTime":1778927478292,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":921176,"timestamp":119506029384,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778927478276,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":886139,"timestamp":119506064594,"id":95,"parentId":54,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":916668,"timestamp":119506034093,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778927478280,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":886291,"timestamp":119506064604,"id":96,"parentId":56,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":916023,"timestamp":119506034898,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778927478281,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":888734,"timestamp":119506064617,"id":97,"parentId":57,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":918301,"timestamp":119506035115,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778927478281,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":900675,"timestamp":119506064558,"id":92,"parentId":51,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":931761,"timestamp":119506033523,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778927478280,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":900732,"timestamp":119506064662,"id":100,"parentId":61,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":929328,"timestamp":119506036098,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778927478282,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":886711,"timestamp":119506078793,"id":101,"parentId":58,"tags":{},"startTime":1778927478325,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":930221,"timestamp":119506035310,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778927478282,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":901982,"timestamp":119506064509,"id":90,"parentId":23,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":943025,"timestamp":119506023504,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778927478270,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":902442,"timestamp":119506064630,"id":98,"parentId":59,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":931330,"timestamp":119506035782,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778927478282,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":853433,"timestamp":119506116851,"id":102,"parentId":55,"tags":{},"startTime":1778927478363,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":935989,"timestamp":119506034331,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778927478281,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":906293,"timestamp":119506064648,"id":99,"parentId":60,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":935044,"timestamp":119506035940,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778927478282,"traceId":"fb8b3c1e8034abd6"},{"name":"is-page-static","duration":917238,"timestamp":119506064581,"id":94,"parentId":53,"tags":{},"startTime":1778927478311,"traceId":"fb8b3c1e8034abd6"},{"name":"check-page","duration":947993,"timestamp":119506033872,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778927478280,"traceId":"fb8b3c1e8034abd6"},{"name":"static-check","duration":963375,"timestamp":119506018549,"id":19,"parentId":1,"tags":{},"startTime":1778927478265,"traceId":"fb8b3c1e8034abd6"},{"name":"write-routes-manifest","duration":615,"timestamp":119506990935,"id":104,"parentId":1,"tags":{},"startTime":1778927479237,"traceId":"fb8b3c1e8034abd6"},{"name":"load-dotenv","duration":64,"timestamp":119507003752,"id":107,"parentId":106,"tags":{},"startTime":1778927479250,"traceId":"fb8b3c1e8034abd6"},{"name":"run-export-path-map","duration":555,"timestamp":119507008351,"id":108,"parentId":106,"tags":{},"startTime":1778927479255,"traceId":"fb8b3c1e8034abd6"},{"name":"next-export","duration":655525,"timestamp":119507002513,"id":106,"parentId":1,"tags":{},"startTime":1778927479249,"traceId":"fb8b3c1e8034abd6"}]
2
+ [{"name":"move-exported-app-not-found-","duration":3264,"timestamp":119507662200,"id":109,"parentId":105,"tags":{},"startTime":1778927479908,"traceId":"fb8b3c1e8034abd6"},{"name":"move-exported-app-global-error-","duration":1253,"timestamp":119507665574,"id":110,"parentId":105,"tags":{},"startTime":1778927479912,"traceId":"fb8b3c1e8034abd6"},{"name":"static-generation","duration":672861,"timestamp":119506996716,"id":105,"parentId":1,"tags":{},"startTime":1778927479243,"traceId":"fb8b3c1e8034abd6"},{"name":"write-routes-manifest","duration":547,"timestamp":119507669791,"id":111,"parentId":1,"tags":{},"startTime":1778927479916,"traceId":"fb8b3c1e8034abd6"},{"name":"print-tree-view","duration":4368,"timestamp":119507686474,"id":112,"parentId":1,"tags":{},"startTime":1778927479933,"traceId":"fb8b3c1e8034abd6"},{"name":"write-route-bundle-stats","duration":16877,"timestamp":119507690896,"id":113,"parentId":1,"tags":{},"startTime":1778927479937,"traceId":"fb8b3c1e8034abd6"},{"name":"telemetry-flush","duration":13826,"timestamp":119507707813,"id":114,"parentId":1,"tags":{},"startTime":1778927479954,"traceId":"fb8b3c1e8034abd6"},{"name":"next-build","duration":21320628,"timestamp":119486401051,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778927458647,"traceId":"fb8b3c1e8034abd6"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":7356972,"timestamp":118895249818,"id":14,"parentId":1,"tags":{},"startTime":1778926867496,"traceId":"ce839ee52c2bd995"},{"name":"turbopack-build-events","duration":102,"timestamp":118895559297,"id":15,"parentId":1,"tags":{},"startTime":1778926867806,"traceId":"ce839ee52c2bd995"},{"name":"run-typescript","duration":9977199,"timestamp":118902615864,"id":16,"parentId":1,"tags":{},"startTime":1778926874862,"traceId":"ce839ee52c2bd995"},{"name":"static-check","duration":1048569,"timestamp":118912802748,"id":19,"parentId":1,"tags":{},"startTime":1778926885049,"traceId":"ce839ee52c2bd995"},{"name":"static-generation","duration":683739,"timestamp":118913865846,"id":105,"parentId":1,"tags":{},"startTime":1778926886112,"traceId":"ce839ee52c2bd995"},{"name":"telemetry-flush","duration":26450,"timestamp":118914587101,"id":114,"parentId":1,"tags":{},"startTime":1778926886833,"traceId":"ce839ee52c2bd995"},{"name":"next-build","duration":19609005,"timestamp":118895004584,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778926867251,"traceId":"ce839ee52c2bd995"}]
1
+ [{"name":"run-turbopack","duration":8019030,"timestamp":119486682527,"id":14,"parentId":1,"tags":{},"startTime":1778927458929,"traceId":"fb8b3c1e8034abd6"},{"name":"turbopack-build-events","duration":121,"timestamp":119487004850,"id":15,"parentId":1,"tags":{},"startTime":1778927459251,"traceId":"fb8b3c1e8034abd6"},{"name":"run-typescript","duration":11090086,"timestamp":119494709243,"id":16,"parentId":1,"tags":{},"startTime":1778927466956,"traceId":"fb8b3c1e8034abd6"},{"name":"static-check","duration":963375,"timestamp":119506018549,"id":19,"parentId":1,"tags":{},"startTime":1778927478265,"traceId":"fb8b3c1e8034abd6"},{"name":"static-generation","duration":672861,"timestamp":119506996716,"id":105,"parentId":1,"tags":{},"startTime":1778927479243,"traceId":"fb8b3c1e8034abd6"},{"name":"telemetry-flush","duration":13826,"timestamp":119507707813,"id":114,"parentId":1,"tags":{},"startTime":1778927479954,"traceId":"fb8b3c1e8034abd6"},{"name":"next-build","duration":21320628,"timestamp":119486401051,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778927458647,"traceId":"fb8b3c1e8034abd6"}]
@@ -20,6 +20,14 @@ import useSWR from 'swr';
20
20
  * so old hubs don't read as "something broke".
21
21
  */
22
22
 
23
+ interface ServerAgent {
24
+ alias: string;
25
+ runtime: string | null;
26
+ status: 'working' | 'idle' | 'offline';
27
+ last_seen_at?: string | null;
28
+ progress?: number | null; // 0..1
29
+ }
30
+
23
31
  interface ServerCard {
24
32
  hostname: string;
25
33
  ip?: string | null;
@@ -27,6 +35,17 @@ interface ServerCard {
27
35
  cpu_cores: number;
28
36
  mem_used_gb: number | null;
29
37
  mem_total_gb: number | null;
38
+ /** Hero 1 v0.10.0: disk usage. Optional — older hubs don't report. */
39
+ disk_used_gb?: number | null;
40
+ disk_total_gb?: number | null;
41
+ /** Hero 1 v0.10.0: short history for sparklines (5-min sliding window).
42
+ * Each is the rolling 1-min average sampled at ~30s cadence (so ~10
43
+ * data points for 5-min). Optional — older hubs don't report. */
44
+ cpu_history?: number[];
45
+ mem_history?: number[];
46
+ /** Hero 2 v0.10.0: per-server agent rollup. Optional — older hubs
47
+ * send only aggregate agent_count. */
48
+ agents?: ServerAgent[];
30
49
  agent_count: number;
31
50
  status: 'online' | 'offline';
32
51
  note?: string;
@@ -74,6 +93,95 @@ function Bar({ pct, label }: { pct: number; label: string }) {
74
93
  );
75
94
  }
76
95
 
96
+ /** Hero 1 v0.10.0 — inline SVG sparkline for 5-min rolling history.
97
+ * Zero-dep (no recharts). Renders a stroked polyline + filled area.
98
+ * Values are percentages (0..100); clamps inside. */
99
+ function Sparkline({ values, tint, label }: { values: number[]; tint: string; label: string }) {
100
+ if (!values || values.length < 2) return null;
101
+ const w = 100, h = 18;
102
+ const max = 100;
103
+ const stride = w / Math.max(1, values.length - 1);
104
+ const pts = values.map((v, i) => {
105
+ const x = i * stride;
106
+ const y = h - (Math.max(0, Math.min(max, v)) / max) * h;
107
+ return `${x.toFixed(1)},${y.toFixed(1)}`;
108
+ });
109
+ const polyline = pts.join(' ');
110
+ const area = `M0,${h} L${pts.join(' L')} L${w},${h} Z`;
111
+ return (
112
+ <svg
113
+ width="100%" height={h} viewBox={`0 0 ${w} ${h}`}
114
+ preserveAspectRatio="none" aria-label={`${label} 5-min history`}
115
+ data-server-sparkline={label}
116
+ >
117
+ <path d={area} fill={tint} opacity="0.18" />
118
+ <polyline points={polyline} fill="none" stroke={tint} strokeWidth="1.2" />
119
+ </svg>
120
+ );
121
+ }
122
+
123
+ /** Hero 1 v0.10.0 — single health badge derived from the worst of
124
+ * CPU / Mem / Disk percentages. Green ≤60%, amber 60-85%, red >85%
125
+ * (same thresholds as Bar). Returns null when no percentages available
126
+ * (e.g. offline server) so the card layout reads "n/a · offline" instead. */
127
+ function HealthBadge({ cpu, mem, disk }: { cpu: number | null; mem: number | null; disk: number | null }) {
128
+ const vals = [cpu, mem, disk].filter((v): v is number => typeof v === 'number');
129
+ if (vals.length === 0) return null;
130
+ const worst = Math.max(...vals);
131
+ const t = barTint(worst);
132
+ const status = worst >= 85 ? 'red' : worst >= 60 ? 'amber' : 'green';
133
+ return (
134
+ <span
135
+ className="inline-block w-2 h-2 rounded-full shrink-0"
136
+ style={{ background: t.fill, boxShadow: `0 0 0 2px ${t.track}` }}
137
+ data-server-health-badge={status}
138
+ title={`worst: ${Math.round(worst)}%`}
139
+ />
140
+ );
141
+ }
142
+
143
+ /** Hero 2 v0.10.0 — per-server expandable agent list. Renders compact
144
+ * rows: alias · runtime · status chip · last_seen relative. progress
145
+ * bar appears when an agent reports progress (0..1). When the upstream
146
+ * hub doesn't report agents[], the row falls through to a small
147
+ * "agent list pending hub upgrade" hint. */
148
+ function AgentList({ agents }: { agents?: ServerAgent[] }) {
149
+ if (!agents || agents.length === 0) {
150
+ return (
151
+ <div className="text-[9px] text-[var(--fg-dim)] font-mono italic px-1 py-1">
152
+ agent rollup pending hub ≥ 0.8.2-preview
153
+ </div>
154
+ );
155
+ }
156
+ return (
157
+ <ul className="space-y-1" data-server-agent-list>
158
+ {agents.map(a => {
159
+ const statusColor =
160
+ a.status === 'working' ? '#10b981' :
161
+ a.status === 'idle' ? '#06b6d4' : '#6b7280';
162
+ return (
163
+ <li
164
+ key={a.alias}
165
+ className="flex items-center gap-1.5 text-[10px] font-mono"
166
+ data-server-agent={a.alias}
167
+ >
168
+ <span className="w-1.5 h-1.5 rounded-full shrink-0" style={{ background: statusColor }} />
169
+ <span className="font-semibold truncate" style={{ color: 'var(--fg)' }}>{a.alias}</span>
170
+ {a.runtime && (
171
+ <span className="text-[9px] text-[var(--fg-dim)] shrink-0">· {a.runtime}</span>
172
+ )}
173
+ {typeof a.progress === 'number' && a.progress > 0 && (
174
+ <span className="ml-auto text-[9px] tabular-nums text-[var(--fg-muted)]">
175
+ {Math.round(a.progress * 100)}%
176
+ </span>
177
+ )}
178
+ </li>
179
+ );
180
+ })}
181
+ </ul>
182
+ );
183
+ }
184
+
77
185
  export function ServersDrawer() {
78
186
  const [open, setOpen] = useState(false);
79
187
  // Drawer state is per-user-machine — persist like the other dashboard
@@ -1690,7 +1690,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
1690
1690
  weight; cyan-400/60 + ring-inset retained. The
1691
1691
  R163/R196 hover/active deeps + R249 chrome-pop
1692
1692
  click feedback continue unchanged. */
1693
- className={`px-2.5 py-1 transition-colors focus:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${layout === 'ring' ? 'bg-cyan-500/15 text-cyan-300 hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'text-gray-400 hover:text-cyan-300 hover:bg-cyan-500/5 active:bg-cyan-500/15'} ${chromePopping === 'layout-ring' ? ' anet-chrome-pop' : ''}`}
1693
+ className={`px-2.5 py-1 transition-colors focus:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${layout === 'ring' ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'text-gray-400 hover:text-cyan-300 hover:bg-cyan-500/5 active:bg-cyan-500/15'} ${chromePopping === 'layout-ring' ? ' anet-chrome-pop' : ''}`}
1694
1694
  >
1695
1695
  Ring
1696
1696
  </button>
@@ -1707,7 +1707,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
1707
1707
  // Round 306 / Loop: focus-visible:ring-2 → ring-1 sibling
1708
1708
  // change to Ring above — unifies focus-ring width across
1709
1709
  // all chrome buttons.
1710
- className={`px-2.5 py-1 border-l transition-colors focus:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${layout === 'grid' ? 'bg-cyan-500/15 text-cyan-300 hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'text-gray-400 hover:text-cyan-300 hover:bg-cyan-500/5 active:bg-cyan-500/15'} ${chromePopping === 'layout-grid' ? ' anet-chrome-pop' : ''}`}
1710
+ className={`px-2.5 py-1 border-l transition-colors focus:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${layout === 'grid' ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'text-gray-400 hover:text-cyan-300 hover:bg-cyan-500/5 active:bg-cyan-500/15'} ${chromePopping === 'layout-grid' ? ' anet-chrome-pop' : ''}`}
1711
1711
  /* Round 268 / Loop: Grid button's left border (the
1712
1712
  internal divider between Ring and Grid) picks up
1713
1713
  pal.containerBorder, matching the wrapper change at
@@ -7409,7 +7409,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
7409
7409
  / fullscreen) preview their active state on hover.
7410
7410
  Pure actions (zoom -/+, reset) stay white — they
7411
7411
  aren't toggles, have no active state to preview. */
7412
- className={`px-2 py-1 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${idx > 0 ? 'border-l' : ''} ${nodeScale === v ? 'bg-cyan-500/15 text-cyan-300 hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'hover:bg-cyan-500/5 active:bg-cyan-500/15'}${chromePopping === popKey ? ' anet-chrome-pop' : ''}`}
7412
+ className={`px-2 py-1 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${idx > 0 ? 'border-l' : ''} ${nodeScale === v ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'hover:bg-cyan-500/5 active:bg-cyan-500/15'}${chromePopping === popKey ? ' anet-chrome-pop' : ''}`}
7413
7413
  style={{ color: nodeScale === v ? undefined : pal.legendText, borderColor: pal.containerBorder }}
7414
7414
  >
7415
7415
  {lbl}
@@ -7612,7 +7612,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
7612
7612
  the nodeSize buttons at line ~6711. */
7613
7613
  className={`p-1.5 rounded-md border transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 ${
7614
7614
  isFullscreen
7615
- ? 'bg-cyan-500/15 text-cyan-300 hover:bg-cyan-500/20 active:bg-cyan-500/25'
7615
+ ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25'
7616
7616
  : 'hover:bg-cyan-500/5 active:bg-cyan-500/15'
7617
7617
  }${chromePopping === 'fullscreen' ? ' anet-chrome-pop' : ''}`}
7618
7618
  style={{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.4.6-preview.331",
3
+ "version": "0.4.6-preview.332",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,104 @@
1
+ /* Round 318 verification: chrome segmented-control ACTIVE button
2
+ * gains font-medium (500) — visual weight emphasis layered on top
3
+ * of the existing cyan-300 color + cyan-500/15 background. The
4
+ * polish broadened across all four chrome control families that
5
+ * share the same active-state class string:
6
+ * - Layout toggle (Ring / Grid) — bottom-right
7
+ * - nodeSize segmented (S / M / L) — bottom-right
8
+ * - Fullscreen toggle — top-right (single button, isFullscreen
9
+ * branch is its "active" state)
10
+ *
11
+ * Direction: R313/R314/R315 established font-medium as the data-
12
+ * weight chip family. R318 extends the same weight tier to chrome
13
+ * control ACTIVE states so the currently-selected option carries
14
+ * stronger visual prominence than just color alone.
15
+ *
16
+ * Contract:
17
+ * - The active Layout toggle button has className containing
18
+ * 'font-medium'.
19
+ * - The inactive Layout toggle button does NOT have font-medium
20
+ * in its class string (still default 400).
21
+ * - Computed font-weight of active button === 500.
22
+ * - R317 inactive gray-400 + R316 brand-logo width=40 + R313
23
+ * chip-row weight + R294 pulse absent all preserved.
24
+ */
25
+ import { chromium } from 'playwright';
26
+ import { readFileSync } from 'node:fs';
27
+
28
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
29
+ const browser = await chromium.launch({ headless: true });
30
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
31
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
32
+ await ctx.addInitScript(() => {
33
+ try {
34
+ localStorage.setItem('anet-theme', 'cyber');
35
+ sessionStorage.setItem('anet_v3_auth', '1');
36
+ // Force ring layout so Ring is the active button.
37
+ localStorage.setItem('anet-topo-layout', 'ring');
38
+ } catch {}
39
+ });
40
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
41
+ await ctx.route('**/api/hub/status*', async (route) => {
42
+ const r = await route.fetch();
43
+ const b = await r.json();
44
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
45
+ const mk = (alias, model) => ({
46
+ alias, status: 'working', model, runtime: 'claude-code-cli',
47
+ network_id: nid, project_dir: null,
48
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
49
+ });
50
+ await route.fulfill({ response: r, json: { ...b, sessions: [
51
+ mk('alpha', 'claude-opus-4'),
52
+ mk('beta', 'gpt-4o'),
53
+ ] } });
54
+ });
55
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
56
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
57
+
58
+ const page = await ctx.newPage();
59
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
60
+ await page.waitForSelector('[data-topo-chrome-layout="ring"]', { timeout: 15000 });
61
+ await page.waitForTimeout(400);
62
+
63
+ const probe = await page.evaluate(() => {
64
+ const sel = (s) => document.querySelector(s);
65
+ const ringBtn = sel('[data-topo-chrome-layout="ring"]');
66
+ const gridBtn = sel('[data-topo-chrome-layout="grid"]');
67
+ const logo = sel('[data-topo-brand-logo]');
68
+ return {
69
+ ringActive: ringBtn?.getAttribute('data-topo-chrome-layout-active') === 'true',
70
+ gridActive: gridBtn?.getAttribute('data-topo-chrome-layout-active') === 'true',
71
+ ringCls: ringBtn?.className ?? '',
72
+ gridCls: gridBtn?.className ?? '',
73
+ ringFw: ringBtn ? getComputedStyle(ringBtn).fontWeight : null,
74
+ gridFw: gridBtn ? getComputedStyle(gridBtn).fontWeight : null,
75
+ brandLogoW: logo?.getAttribute('width') ?? null,
76
+ workingChipCls: sel('[data-working-chip]')?.className ?? '',
77
+ pulseCount: document.querySelectorAll('[data-pulse-wrapper]').length,
78
+ };
79
+ });
80
+ await browser.close();
81
+
82
+ const activeCls = probe.ringActive ? probe.ringCls : probe.gridCls;
83
+ const inactiveCls = probe.ringActive ? probe.gridCls : probe.ringCls;
84
+ const activeFw = probe.ringActive ? probe.ringFw : probe.gridFw;
85
+
86
+ const results = {
87
+ exactly_one_active: probe.ringActive !== probe.gridActive,
88
+ active_has_font_medium: activeCls.includes('font-medium'),
89
+ inactive_no_font_medium: !inactiveCls.includes('font-medium'),
90
+ active_fw_500: String(activeFw) === '500',
91
+ // R317 regression: inactive still gray-400.
92
+ r317_inactive_gray_400: inactiveCls.includes('text-gray-400'),
93
+ // R316 brand-logo width=40 regression.
94
+ r316_brand_logo_width_40: probe.brandLogoW === '40',
95
+ // R313 chip-row data weight regression.
96
+ r313_working_chip_kept: probe.workingChipCls.includes('font-medium'),
97
+ // R294 pulse absent regression.
98
+ r294_pulse_absent: probe.pulseCount === 0,
99
+ };
100
+ const ok = Object.values(results).every(Boolean);
101
+ console.log(`${ok ? '✅' : '❌'} chrome active weight:`, JSON.stringify(results),
102
+ '\n ring active:', probe.ringActive, ' grid active:', probe.gridActive,
103
+ '\n active fw:', activeFw, ' inactive fw:', probe.ringActive ? probe.gridFw : probe.ringFw);
104
+ process.exit(ok ? 0 : 1);