@sleep2agi/agent-network-dashboard 0.5.3-preview.53 → 0.5.3-preview.55

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 (143) 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 +5 -5
  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/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/login.html +2 -2
  37. package/.next/server/app/login.rsc +2 -2
  38. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  39. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  44. package/.next/server/app/logs.html +1 -1
  45. package/.next/server/app/logs.rsc +1 -1
  46. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  52. package/.next/server/app/messages.html +1 -1
  53. package/.next/server/app/messages.rsc +1 -1
  54. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  60. package/.next/server/app/node.html +1 -1
  61. package/.next/server/app/node.rsc +1 -1
  62. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  68. package/.next/server/app/nodes.html +1 -1
  69. package/.next/server/app/nodes.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  76. package/.next/server/app/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/server-logs.html +1 -1
  78. package/.next/server/app/server-logs.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  84. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  85. package/.next/server/app/settings/networks.html +1 -1
  86. package/.next/server/app/settings/networks.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  94. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/settings/tokens.html +1 -1
  96. package/.next/server/app/settings/tokens.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  103. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  104. package/.next/server/app/settings.html +2 -2
  105. package/.next/server/app/settings.rsc +2 -2
  106. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  110. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  111. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  112. package/.next/server/app/tasks.html +1 -1
  113. package/.next/server/app/tasks.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  120. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  121. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
  123. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  126. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  127. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  128. package/.next/server/middleware-build-manifest.js +3 -3
  129. package/.next/server/pages/404.html +1 -1
  130. package/.next/server/pages/500.html +1 -1
  131. package/.next/static/chunks/{17rrzduv~5uo1.js → 04oia5873636o.js} +1 -1
  132. package/.next/static/chunks/{16~kjwife1p0h.js → 0_.4zywnf3i23.js} +1 -1
  133. package/.next/static/chunks/{06uoa.s38_.uu.js → 0c9u0~.kscl4b.js} +1 -1
  134. package/.next/static/chunks/{0j2p-urwyphyi.js → 15gu4we4a43jg.js} +3 -3
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +66 -6
  138. package/package.json +1 -1
  139. package/scripts/topo-minimap-hover-glow-test.mjs +109 -0
  140. package/scripts/topo-vendor-chip-glow-test.mjs +97 -0
  141. /package/.next/static/{dx5C_FtRe3vhHh_n3EuRr → Dbw7hO9jP3mkok405odOE}/_buildManifest.js +0 -0
  142. /package/.next/static/{dx5C_FtRe3vhHh_n3EuRr → Dbw7hO9jP3mkok405odOE}/_clientMiddlewareManifest.js +0 -0
  143. /package/.next/static/{dx5C_FtRe3vhHh_n3EuRr → Dbw7hO9jP3mkok405odOE}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":254,"timestamp":214872374247,"id":4,"parentId":1,"tags":{},"startTime":1779022844621,"traceId":"afc75d156bf2b3c0"},{"name":"load-custom-routes","duration":478,"timestamp":214872374641,"id":5,"parentId":1,"tags":{},"startTime":1779022844621,"traceId":"afc75d156bf2b3c0"},{"name":"create-dist-dir","duration":755,"timestamp":214872375159,"id":6,"parentId":1,"tags":{},"startTime":1779022844621,"traceId":"afc75d156bf2b3c0"},{"name":"clean","duration":34961,"timestamp":214872376640,"id":7,"parentId":1,"tags":{},"startTime":1779022844623,"traceId":"afc75d156bf2b3c0"},{"name":"discover-routes","duration":29141,"timestamp":214872497573,"id":8,"parentId":1,"tags":{},"startTime":1779022844744,"traceId":"afc75d156bf2b3c0"},{"name":"create-root-mapping","duration":157,"timestamp":214872526792,"id":9,"parentId":1,"tags":{},"startTime":1779022844773,"traceId":"afc75d156bf2b3c0"},{"name":"generate-route-types","duration":25790,"timestamp":214872530738,"id":10,"parentId":1,"tags":{},"startTime":1779022844777,"traceId":"afc75d156bf2b3c0"},{"name":"public-dir-conflict-check","duration":124,"timestamp":214872556634,"id":11,"parentId":1,"tags":{},"startTime":1779022844803,"traceId":"afc75d156bf2b3c0"},{"name":"generate-routes-manifest","duration":5378,"timestamp":214872556942,"id":12,"parentId":1,"tags":{},"startTime":1779022844803,"traceId":"afc75d156bf2b3c0"},{"name":"run-turbopack","duration":6482159,"timestamp":214872567890,"id":14,"parentId":1,"tags":{},"startTime":1779022844814,"traceId":"afc75d156bf2b3c0"},{"name":"turbopack-build-events","duration":100,"timestamp":214872872540,"id":15,"parentId":1,"tags":{},"startTime":1779022845119,"traceId":"afc75d156bf2b3c0"},{"name":"run-typescript","duration":10245082,"timestamp":214879058268,"id":16,"parentId":1,"tags":{},"startTime":1779022851305,"traceId":"afc75d156bf2b3c0"},{"name":"generate-required-server-files","duration":3161,"timestamp":214889304405,"id":18,"parentId":1,"tags":{},"startTime":1779022861551,"traceId":"afc75d156bf2b3c0"},{"name":"check-static-error-page","duration":15492,"timestamp":214889538404,"id":20,"parentId":19,"tags":{},"startTime":1779022861785,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":453185,"timestamp":214889557877,"id":65,"parentId":22,"tags":{},"startTime":1779022861804,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":470021,"timestamp":214889541733,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779022861788,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":568289,"timestamp":214889558257,"id":68,"parentId":27,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":581459,"timestamp":214889545182,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779022861791,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":573266,"timestamp":214889558806,"id":72,"parentId":32,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":586197,"timestamp":214889545958,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779022861792,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":583600,"timestamp":214889558743,"id":71,"parentId":30,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":596853,"timestamp":214889545567,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779022861792,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":589412,"timestamp":214889558992,"id":73,"parentId":33,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":602378,"timestamp":214889546120,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779022861792,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":595513,"timestamp":214889559114,"id":75,"parentId":35,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":608349,"timestamp":214889546354,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779022861793,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":603305,"timestamp":214889558030,"id":66,"parentId":25,"tags":{},"startTime":1779022861804,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":616560,"timestamp":214889544857,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779022861791,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":602456,"timestamp":214889559134,"id":76,"parentId":36,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":614813,"timestamp":214889546815,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779022861793,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":610090,"timestamp":214889559176,"id":78,"parentId":38,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":622158,"timestamp":214889547175,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779022861793,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":613476,"timestamp":214889558620,"id":70,"parentId":29,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":626767,"timestamp":214889545428,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779022861792,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":617377,"timestamp":214889559085,"id":74,"parentId":34,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":630279,"timestamp":214889546234,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779022861793,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":619032,"timestamp":214889559203,"id":80,"parentId":40,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":630893,"timestamp":214889547385,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779022861794,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":636942,"timestamp":214889559189,"id":79,"parentId":39,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":648934,"timestamp":214889547279,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779022861794,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":641483,"timestamp":214889559239,"id":83,"parentId":45,"tags":{},"startTime":1779022861806,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":652430,"timestamp":214889548355,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779022861795,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":644592,"timestamp":214889559213,"id":81,"parentId":42,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":656149,"timestamp":214889547746,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779022861794,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":649837,"timestamp":214889559248,"id":84,"parentId":46,"tags":{},"startTime":1779022861806,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":660691,"timestamp":214889548462,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779022861795,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":650139,"timestamp":214889559226,"id":82,"parentId":44,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":661207,"timestamp":214889548214,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779022861794,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":650345,"timestamp":214889559263,"id":85,"parentId":47,"tags":{},"startTime":1779022861806,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":661062,"timestamp":214889548588,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779022861795,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":651476,"timestamp":214889558358,"id":69,"parentId":28,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":664568,"timestamp":214889545314,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779022861792,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":652016,"timestamp":214889559277,"id":86,"parentId":48,"tags":{},"startTime":1779022861806,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":661180,"timestamp":214889550155,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779022861796,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":650041,"timestamp":214889566680,"id":90,"parentId":24,"tags":{},"startTime":1779022861813,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":674475,"timestamp":214889542289,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779022861789,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":658656,"timestamp":214889559159,"id":77,"parentId":37,"tags":{},"startTime":1779022861805,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":670828,"timestamp":214889547030,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779022861793,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":660047,"timestamp":214889559300,"id":88,"parentId":50,"tags":{},"startTime":1779022861806,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":668968,"timestamp":214889550425,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779022861797,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":655856,"timestamp":214889567902,"id":91,"parentId":31,"tags":{},"startTime":1779022861814,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":678119,"timestamp":214889545685,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779022861792,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":648691,"timestamp":214889577216,"id":93,"parentId":43,"tags":{},"startTime":1779022861823,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":678047,"timestamp":214889547901,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779022861794,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":672514,"timestamp":214889559291,"id":87,"parentId":49,"tags":{},"startTime":1779022861806,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":681525,"timestamp":214889550328,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779022861797,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":682291,"timestamp":214889558146,"id":67,"parentId":26,"tags":{},"startTime":1779022861804,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":695441,"timestamp":214889545060,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779022861791,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":684022,"timestamp":214889568761,"id":92,"parentId":41,"tags":{},"startTime":1779022861815,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":705362,"timestamp":214889547485,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779022861794,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":695969,"timestamp":214889557459,"id":64,"parentId":21,"tags":{},"startTime":1779022861804,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":713403,"timestamp":214889540076,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779022861786,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":697521,"timestamp":214889559313,"id":89,"parentId":51,"tags":{},"startTime":1779022861806,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":706387,"timestamp":214889550511,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779022861797,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":670541,"timestamp":214889591723,"id":99,"parentId":56,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":710650,"timestamp":214889551665,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779022861798,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":691937,"timestamp":214889591621,"id":94,"parentId":23,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":741587,"timestamp":214889542044,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779022861788,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":694740,"timestamp":214889591667,"id":95,"parentId":52,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":735566,"timestamp":214889550926,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779022861797,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":701372,"timestamp":214889591902,"id":102,"parentId":61,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":739980,"timestamp":214889553359,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779022861800,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":707118,"timestamp":214889591914,"id":103,"parentId":62,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":745584,"timestamp":214889553510,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779022861800,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":717204,"timestamp":214889591935,"id":105,"parentId":60,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":756306,"timestamp":214889552901,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779022861799,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":719454,"timestamp":214889591683,"id":96,"parentId":53,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":760099,"timestamp":214889551100,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779022861797,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":720558,"timestamp":214889591926,"id":104,"parentId":63,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":758892,"timestamp":214889553643,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779022861800,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":712231,"timestamp":214889605292,"id":106,"parentId":57,"tags":{},"startTime":1779022861852,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":765644,"timestamp":214889551927,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779022861798,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":729169,"timestamp":214889591884,"id":101,"parentId":59,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":768387,"timestamp":214889552712,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779022861799,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":736439,"timestamp":214889591736,"id":100,"parentId":58,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":775716,"timestamp":214889552499,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779022861799,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":738653,"timestamp":214889591710,"id":98,"parentId":55,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":778926,"timestamp":214889551462,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779022861798,"traceId":"afc75d156bf2b3c0"},{"name":"is-page-static","duration":743094,"timestamp":214889591700,"id":97,"parentId":54,"tags":{},"startTime":1779022861838,"traceId":"afc75d156bf2b3c0"},{"name":"check-page","duration":783576,"timestamp":214889551268,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779022861798,"traceId":"afc75d156bf2b3c0"},{"name":"static-check","duration":797888,"timestamp":214889537037,"id":19,"parentId":1,"tags":{},"startTime":1779022861783,"traceId":"afc75d156bf2b3c0"}]
2
- [{"name":"write-routes-manifest","duration":566,"timestamp":214890346151,"id":108,"parentId":1,"tags":{},"startTime":1779022862592,"traceId":"afc75d156bf2b3c0"},{"name":"load-dotenv","duration":45,"timestamp":214890359379,"id":111,"parentId":110,"tags":{},"startTime":1779022862606,"traceId":"afc75d156bf2b3c0"},{"name":"run-export-path-map","duration":716,"timestamp":214890361996,"id":112,"parentId":110,"tags":{},"startTime":1779022862608,"traceId":"afc75d156bf2b3c0"},{"name":"next-export","duration":599275,"timestamp":214890358113,"id":110,"parentId":1,"tags":{},"startTime":1779022862604,"traceId":"afc75d156bf2b3c0"},{"name":"move-exported-app-not-found-","duration":592,"timestamp":214890960699,"id":113,"parentId":109,"tags":{},"startTime":1779022863207,"traceId":"afc75d156bf2b3c0"},{"name":"move-exported-app-global-error-","duration":415,"timestamp":214890961381,"id":114,"parentId":109,"tags":{},"startTime":1779022863208,"traceId":"afc75d156bf2b3c0"},{"name":"static-generation","duration":613024,"timestamp":214890351061,"id":109,"parentId":1,"tags":{},"startTime":1779022862597,"traceId":"afc75d156bf2b3c0"},{"name":"write-routes-manifest","duration":393,"timestamp":214890964317,"id":115,"parentId":1,"tags":{},"startTime":1779022863211,"traceId":"afc75d156bf2b3c0"},{"name":"print-tree-view","duration":5003,"timestamp":214890975550,"id":116,"parentId":1,"tags":{},"startTime":1779022863222,"traceId":"afc75d156bf2b3c0"},{"name":"write-route-bundle-stats","duration":15452,"timestamp":214890980592,"id":117,"parentId":1,"tags":{},"startTime":1779022863227,"traceId":"afc75d156bf2b3c0"},{"name":"telemetry-flush","duration":23717,"timestamp":214890996080,"id":118,"parentId":1,"tags":{},"startTime":1779022863242,"traceId":"afc75d156bf2b3c0"},{"name":"next-build","duration":18695176,"timestamp":214872324671,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779022844571,"traceId":"afc75d156bf2b3c0"}]
1
+ [{"name":"generate-buildid","duration":262,"timestamp":215848473650,"id":4,"parentId":1,"tags":{},"startTime":1779023820720,"traceId":"b7b770851642638b"},{"name":"load-custom-routes","duration":513,"timestamp":215848474070,"id":5,"parentId":1,"tags":{},"startTime":1779023820720,"traceId":"b7b770851642638b"},{"name":"create-dist-dir","duration":869,"timestamp":215848474627,"id":6,"parentId":1,"tags":{},"startTime":1779023820721,"traceId":"b7b770851642638b"},{"name":"clean","duration":31961,"timestamp":215848476376,"id":7,"parentId":1,"tags":{},"startTime":1779023820723,"traceId":"b7b770851642638b"},{"name":"discover-routes","duration":8688,"timestamp":215848592963,"id":8,"parentId":1,"tags":{},"startTime":1779023820839,"traceId":"b7b770851642638b"},{"name":"create-root-mapping","duration":108,"timestamp":215848601708,"id":9,"parentId":1,"tags":{},"startTime":1779023820848,"traceId":"b7b770851642638b"},{"name":"generate-route-types","duration":35447,"timestamp":215848604683,"id":10,"parentId":1,"tags":{},"startTime":1779023820851,"traceId":"b7b770851642638b"},{"name":"public-dir-conflict-check","duration":98,"timestamp":215848640221,"id":11,"parentId":1,"tags":{},"startTime":1779023820887,"traceId":"b7b770851642638b"},{"name":"generate-routes-manifest","duration":4823,"timestamp":215848640424,"id":12,"parentId":1,"tags":{},"startTime":1779023820887,"traceId":"b7b770851642638b"},{"name":"run-turbopack","duration":6025957,"timestamp":215848651611,"id":14,"parentId":1,"tags":{},"startTime":1779023820898,"traceId":"b7b770851642638b"},{"name":"turbopack-build-events","duration":104,"timestamp":215848970667,"id":15,"parentId":1,"tags":{},"startTime":1779023821217,"traceId":"b7b770851642638b"},{"name":"run-typescript","duration":9759257,"timestamp":215854692722,"id":16,"parentId":1,"tags":{},"startTime":1779023826939,"traceId":"b7b770851642638b"},{"name":"generate-required-server-files","duration":2910,"timestamp":215864453277,"id":18,"parentId":1,"tags":{},"startTime":1779023836700,"traceId":"b7b770851642638b"},{"name":"check-static-error-page","duration":15593,"timestamp":215864642538,"id":20,"parentId":19,"tags":{},"startTime":1779023836889,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":496757,"timestamp":215864661610,"id":65,"parentId":22,"tags":{},"startTime":1779023836908,"traceId":"b7b770851642638b"},{"name":"check-page","duration":512851,"timestamp":215864645700,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779023836892,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":574555,"timestamp":215864662223,"id":69,"parentId":28,"tags":{},"startTime":1779023836908,"traceId":"b7b770851642638b"},{"name":"check-page","duration":587630,"timestamp":215864649263,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779023836896,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":579470,"timestamp":215864662088,"id":68,"parentId":27,"tags":{},"startTime":1779023836908,"traceId":"b7b770851642638b"},{"name":"check-page","duration":592503,"timestamp":215864649129,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779023836895,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":579111,"timestamp":215864662799,"id":72,"parentId":32,"tags":{},"startTime":1779023836909,"traceId":"b7b770851642638b"},{"name":"check-page","duration":592032,"timestamp":215864649931,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779023836896,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":617253,"timestamp":215864663101,"id":74,"parentId":34,"tags":{},"startTime":1779023836909,"traceId":"b7b770851642638b"},{"name":"check-page","duration":630220,"timestamp":215864650212,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779023836896,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":617870,"timestamp":215864662727,"id":71,"parentId":30,"tags":{},"startTime":1779023836909,"traceId":"b7b770851642638b"},{"name":"check-page","duration":631100,"timestamp":215864649528,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779023836896,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":618522,"timestamp":215864662548,"id":70,"parentId":29,"tags":{},"startTime":1779023836909,"traceId":"b7b770851642638b"},{"name":"check-page","duration":631731,"timestamp":215864649382,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779023836896,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":627553,"timestamp":215864661262,"id":64,"parentId":21,"tags":{},"startTime":1779023836908,"traceId":"b7b770851642638b"},{"name":"check-page","duration":644718,"timestamp":215864644161,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779023836890,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":626081,"timestamp":215864663135,"id":75,"parentId":35,"tags":{},"startTime":1779023836909,"traceId":"b7b770851642638b"},{"name":"check-page","duration":638942,"timestamp":215864650328,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779023836897,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":626428,"timestamp":215864662994,"id":73,"parentId":33,"tags":{},"startTime":1779023836909,"traceId":"b7b770851642638b"},{"name":"check-page","duration":639363,"timestamp":215864650087,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779023836896,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":630128,"timestamp":215864661785,"id":66,"parentId":25,"tags":{},"startTime":1779023836908,"traceId":"b7b770851642638b"},{"name":"check-page","duration":643176,"timestamp":215864648785,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779023836895,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":632623,"timestamp":215864661927,"id":67,"parentId":26,"tags":{},"startTime":1779023836908,"traceId":"b7b770851642638b"},{"name":"check-page","duration":645614,"timestamp":215864648979,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779023836895,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":634923,"timestamp":215864663155,"id":76,"parentId":36,"tags":{},"startTime":1779023836909,"traceId":"b7b770851642638b"},{"name":"check-page","duration":647347,"timestamp":215864650776,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779023836897,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":637945,"timestamp":215864663271,"id":82,"parentId":44,"tags":{},"startTime":1779023836910,"traceId":"b7b770851642638b"},{"name":"check-page","duration":649134,"timestamp":215864652125,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779023836898,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":639975,"timestamp":215864663254,"id":81,"parentId":42,"tags":{},"startTime":1779023836910,"traceId":"b7b770851642638b"},{"name":"check-page","duration":651619,"timestamp":215864651662,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779023836898,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":648128,"timestamp":215864663185,"id":77,"parentId":37,"tags":{},"startTime":1779023836909,"traceId":"b7b770851642638b"},{"name":"check-page","duration":660393,"timestamp":215864650964,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779023836897,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":648663,"timestamp":215864663224,"id":79,"parentId":39,"tags":{},"startTime":1779023836909,"traceId":"b7b770851642638b"},{"name":"check-page","duration":660714,"timestamp":215864651226,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779023836897,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":656009,"timestamp":215864663344,"id":87,"parentId":49,"tags":{},"startTime":1779023836910,"traceId":"b7b770851642638b"},{"name":"check-page","duration":664896,"timestamp":215864654504,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779023836901,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":656295,"timestamp":215864663235,"id":80,"parentId":40,"tags":{},"startTime":1779023836910,"traceId":"b7b770851642638b"},{"name":"check-page","duration":668238,"timestamp":215864651323,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779023836898,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":656333,"timestamp":215864663331,"id":86,"parentId":48,"tags":{},"startTime":1779023836910,"traceId":"b7b770851642638b"},{"name":"check-page","duration":667093,"timestamp":215864652599,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779023836899,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":660788,"timestamp":215864663359,"id":88,"parentId":50,"tags":{},"startTime":1779023836910,"traceId":"b7b770851642638b"},{"name":"check-page","duration":669530,"timestamp":215864654661,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779023836901,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":664836,"timestamp":215864663375,"id":89,"parentId":51,"tags":{},"startTime":1779023836910,"traceId":"b7b770851642638b"},{"name":"check-page","duration":673494,"timestamp":215864654762,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779023836901,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":660076,"timestamp":215864668455,"id":91,"parentId":31,"tags":{},"startTime":1779023836915,"traceId":"b7b770851642638b"},{"name":"check-page","duration":678914,"timestamp":215864649654,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779023836896,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":671640,"timestamp":215864663315,"id":85,"parentId":47,"tags":{},"startTime":1779023836910,"traceId":"b7b770851642638b"},{"name":"check-page","duration":682528,"timestamp":215864652493,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779023836899,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":664958,"timestamp":215864670645,"id":93,"parentId":43,"tags":{},"startTime":1779023836917,"traceId":"b7b770851642638b"},{"name":"check-page","duration":683835,"timestamp":215864651811,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779023836898,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":677761,"timestamp":215864663299,"id":84,"parentId":46,"tags":{},"startTime":1779023836910,"traceId":"b7b770851642638b"},{"name":"check-page","duration":688731,"timestamp":215864652369,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779023836899,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":676125,"timestamp":215864667258,"id":90,"parentId":24,"tags":{},"startTime":1779023836914,"traceId":"b7b770851642638b"},{"name":"check-page","duration":697170,"timestamp":215864646253,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779023836893,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":674488,"timestamp":215864669326,"id":92,"parentId":41,"tags":{},"startTime":1779023836916,"traceId":"b7b770851642638b"},{"name":"check-page","duration":692453,"timestamp":215864651418,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779023836898,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":684708,"timestamp":215864663282,"id":83,"parentId":45,"tags":{},"startTime":1779023836910,"traceId":"b7b770851642638b"},{"name":"check-page","duration":695801,"timestamp":215864652260,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779023836899,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":727634,"timestamp":215864663207,"id":78,"parentId":38,"tags":{},"startTime":1779023836909,"traceId":"b7b770851642638b"},{"name":"check-page","duration":739811,"timestamp":215864651122,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779023836897,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":726313,"timestamp":215864673290,"id":100,"parentId":58,"tags":{},"startTime":1779023836920,"traceId":"b7b770851642638b"},{"name":"check-page","duration":744135,"timestamp":215864656891,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779023836903,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":731278,"timestamp":215864673274,"id":99,"parentId":56,"tags":{},"startTime":1779023836920,"traceId":"b7b770851642638b"},{"name":"check-page","duration":748572,"timestamp":215864656033,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779023836902,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":734470,"timestamp":215864673418,"id":101,"parentId":59,"tags":{},"startTime":1779023836920,"traceId":"b7b770851642638b"},{"name":"check-page","duration":750824,"timestamp":215864657136,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779023836903,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":737741,"timestamp":215864673245,"id":97,"parentId":54,"tags":{},"startTime":1779023836920,"traceId":"b7b770851642638b"},{"name":"check-page","duration":755500,"timestamp":215864655546,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779023836902,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":737945,"timestamp":215864673258,"id":98,"parentId":55,"tags":{},"startTime":1779023836920,"traceId":"b7b770851642638b"},{"name":"check-page","duration":755472,"timestamp":215864655767,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779023836902,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":738406,"timestamp":215864673438,"id":102,"parentId":61,"tags":{},"startTime":1779023836920,"traceId":"b7b770851642638b"},{"name":"check-page","duration":754186,"timestamp":215864657711,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779023836904,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":742516,"timestamp":215864673228,"id":96,"parentId":53,"tags":{},"startTime":1779023836920,"traceId":"b7b770851642638b"},{"name":"check-page","duration":760424,"timestamp":215864655360,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779023836902,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":720263,"timestamp":215864698497,"id":106,"parentId":57,"tags":{},"startTime":1779023836945,"traceId":"b7b770851642638b"},{"name":"check-page","duration":762497,"timestamp":215864656297,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779023836903,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":736170,"timestamp":215864683114,"id":105,"parentId":60,"tags":{},"startTime":1779023836929,"traceId":"b7b770851642638b"},{"name":"check-page","duration":761974,"timestamp":215864657344,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779023836904,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":746157,"timestamp":215864673469,"id":104,"parentId":63,"tags":{},"startTime":1779023836920,"traceId":"b7b770851642638b"},{"name":"check-page","duration":761735,"timestamp":215864657938,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779023836904,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":749172,"timestamp":215864673454,"id":103,"parentId":62,"tags":{},"startTime":1779023836920,"traceId":"b7b770851642638b"},{"name":"check-page","duration":764843,"timestamp":215864657824,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779023836904,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":753421,"timestamp":215864673211,"id":95,"parentId":52,"tags":{},"startTime":1779023836919,"traceId":"b7b770851642638b"},{"name":"check-page","duration":771494,"timestamp":215864655173,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779023836901,"traceId":"b7b770851642638b"},{"name":"is-page-static","duration":755354,"timestamp":215864673184,"id":94,"parentId":23,"tags":{},"startTime":1779023836919,"traceId":"b7b770851642638b"},{"name":"check-page","duration":782601,"timestamp":215864645979,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779023836892,"traceId":"b7b770851642638b"},{"name":"static-check","duration":787206,"timestamp":215864641418,"id":19,"parentId":1,"tags":{},"startTime":1779023836888,"traceId":"b7b770851642638b"}]
2
+ [{"name":"write-routes-manifest","duration":783,"timestamp":215865437833,"id":108,"parentId":1,"tags":{},"startTime":1779023837684,"traceId":"b7b770851642638b"},{"name":"load-dotenv","duration":62,"timestamp":215865452882,"id":111,"parentId":110,"tags":{},"startTime":1779023837699,"traceId":"b7b770851642638b"},{"name":"run-export-path-map","duration":849,"timestamp":215865456481,"id":112,"parentId":110,"tags":{},"startTime":1779023837703,"traceId":"b7b770851642638b"},{"name":"next-export","duration":633768,"timestamp":215865451018,"id":110,"parentId":1,"tags":{},"startTime":1779023837697,"traceId":"b7b770851642638b"},{"name":"move-exported-app-not-found-","duration":871,"timestamp":215866088689,"id":113,"parentId":109,"tags":{},"startTime":1779023838335,"traceId":"b7b770851642638b"},{"name":"move-exported-app-global-error-","duration":737,"timestamp":215866089702,"id":114,"parentId":109,"tags":{},"startTime":1779023838336,"traceId":"b7b770851642638b"},{"name":"static-generation","duration":648142,"timestamp":215865444597,"id":109,"parentId":1,"tags":{},"startTime":1779023837691,"traceId":"b7b770851642638b"},{"name":"write-routes-manifest","duration":547,"timestamp":215866093019,"id":115,"parentId":1,"tags":{},"startTime":1779023838339,"traceId":"b7b770851642638b"},{"name":"print-tree-view","duration":7447,"timestamp":215866106148,"id":116,"parentId":1,"tags":{},"startTime":1779023838352,"traceId":"b7b770851642638b"},{"name":"write-route-bundle-stats","duration":16925,"timestamp":215866113645,"id":117,"parentId":1,"tags":{},"startTime":1779023838360,"traceId":"b7b770851642638b"},{"name":"telemetry-flush","duration":20148,"timestamp":215866130622,"id":118,"parentId":1,"tags":{},"startTime":1779023838377,"traceId":"b7b770851642638b"},{"name":"next-build","duration":17732379,"timestamp":215848418439,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779023820665,"traceId":"b7b770851642638b"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6482159,"timestamp":214872567890,"id":14,"parentId":1,"tags":{},"startTime":1779022844814,"traceId":"afc75d156bf2b3c0"},{"name":"turbopack-build-events","duration":100,"timestamp":214872872540,"id":15,"parentId":1,"tags":{},"startTime":1779022845119,"traceId":"afc75d156bf2b3c0"},{"name":"run-typescript","duration":10245082,"timestamp":214879058268,"id":16,"parentId":1,"tags":{},"startTime":1779022851305,"traceId":"afc75d156bf2b3c0"},{"name":"static-check","duration":797888,"timestamp":214889537037,"id":19,"parentId":1,"tags":{},"startTime":1779022861783,"traceId":"afc75d156bf2b3c0"},{"name":"static-generation","duration":613024,"timestamp":214890351061,"id":109,"parentId":1,"tags":{},"startTime":1779022862597,"traceId":"afc75d156bf2b3c0"},{"name":"telemetry-flush","duration":23717,"timestamp":214890996080,"id":118,"parentId":1,"tags":{},"startTime":1779022863242,"traceId":"afc75d156bf2b3c0"},{"name":"next-build","duration":18695176,"timestamp":214872324671,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779022844571,"traceId":"afc75d156bf2b3c0"}]
1
+ [{"name":"run-turbopack","duration":6025957,"timestamp":215848651611,"id":14,"parentId":1,"tags":{},"startTime":1779023820898,"traceId":"b7b770851642638b"},{"name":"turbopack-build-events","duration":104,"timestamp":215848970667,"id":15,"parentId":1,"tags":{},"startTime":1779023821217,"traceId":"b7b770851642638b"},{"name":"run-typescript","duration":9759257,"timestamp":215854692722,"id":16,"parentId":1,"tags":{},"startTime":1779023826939,"traceId":"b7b770851642638b"},{"name":"static-check","duration":787206,"timestamp":215864641418,"id":19,"parentId":1,"tags":{},"startTime":1779023836888,"traceId":"b7b770851642638b"},{"name":"static-generation","duration":648142,"timestamp":215865444597,"id":109,"parentId":1,"tags":{},"startTime":1779023837691,"traceId":"b7b770851642638b"},{"name":"telemetry-flush","duration":20148,"timestamp":215866130622,"id":118,"parentId":1,"tags":{},"startTime":1779023838377,"traceId":"b7b770851642638b"},{"name":"next-build","duration":17732379,"timestamp":215848418439,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779023820665,"traceId":"b7b770851642638b"}]
@@ -3176,6 +3176,41 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
3176
3176
  // for older browsers the chip falls back to its idle
3177
3177
  // transparent bg (graceful degradation — the canvas-
3178
3178
  // dim effect still fires regardless).
3179
+ /* Round 541 / Loop — vendor letter chip gains drop-
3180
+ shadow glow on hover/pin using its OWN vendor
3181
+ identity color (v.color). Sibling to R537 legend-
3182
+ swatch tier-color glow at the chip-row scope.
3183
+ Pre-R541 the vendor chip lifted on multiple
3184
+ axes (R354 inner-glyph scale-1.1, R202 bg color-
3185
+ mix tint, R180 box-shadow pin-mirror inset, R401
3186
+ hover-translate-y -1px, R496 active:scale-95
3187
+ press) but no paint-axis glow extending past
3188
+ the chip's bbox. R541 adds the outer glow at
3189
+ the paint axis so the vendor chip's identity
3190
+ color radiates beyond the chip on attention —
3191
+ same idiom as legend swatch tier-color glow.
3192
+ 2-tier alpha ladder (mirrors R538 group-label):
3193
+ pin (committed) v.color 99 (~60%)
3194
+ hover (preview) v.color 66 (~40%)
3195
+ rest none
3196
+ Pin is brighter to distinguish locked vs preview
3197
+ at the paint axis. The R180 inset box-shadow
3198
+ (pin-mirror) and R541 outer drop-shadow compose
3199
+ at pin — inside chrome reads as "this is pinned"
3200
+ (inset white double-ring), outside paint reads
3201
+ as "vendor identity is locked" (vendor-colour
3202
+ outer glow). Hover gets only the outer glow.
3203
+ 3px blur tuned to read as soft chip-halo without
3204
+ overwhelming adjacent chips in the chip row.
3205
+ filter property is in the .anet-topo-chip-focus
3206
+ class transition list (R524 banked fix), so the
3207
+ filter eases at 200ms naturally.
3208
+ Drop-shadow visual-polish family — R541 adds
3209
+ chip-row tier-color paint glow as another anchor
3210
+ in the same family pattern R537 established.
3211
+ data-vendor-glow attr ('pin' | 'hover' | 'false')
3212
+ exposes the gate state for tests. */
3213
+ data-vendor-glow={isPinned ? 'pin' : hoveredVendor === v.initial ? 'hover' : 'false'}
3179
3214
  style={{
3180
3215
  cursor: 'pointer',
3181
3216
  backgroundColor: (hoveredVendor === v.initial && !isPinned)
@@ -3184,7 +3219,12 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
3184
3219
  boxShadow: isPinned
3185
3220
  ? `inset 0 0 0 1px ${v.color}, inset 0 0 0 2px rgba(255,255,255,0.45)`
3186
3221
  : undefined,
3187
- transition: 'box-shadow 150ms ease-out, background-color 200ms ease-out',
3222
+ filter: isPinned
3223
+ ? `drop-shadow(0 0 3px color-mix(in srgb, ${v.color} 60%, transparent))`
3224
+ : hoveredVendor === v.initial
3225
+ ? `drop-shadow(0 0 3px color-mix(in srgb, ${v.color} 40%, transparent))`
3226
+ : undefined,
3227
+ transition: 'box-shadow 150ms ease-out, background-color 200ms ease-out, filter 200ms ease-out',
3188
3228
  }}
3189
3229
  onMouseEnter={() => setHoveredVendor(v.initial)}
3190
3230
  onMouseLeave={() => setHoveredVendor(prev => prev === v.initial ? null : prev)}
@@ -12045,12 +12085,32 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
12045
12085
  (the minimap viewport is small, ~120×82 px).
12046
12086
  Filter is paint-only — bbox unchanged. transition
12047
12087
  list extends to include 'filter 200ms ease-out'
12048
- so the glow eases when zoom crosses 1.5x. */
12049
- data-topo-minimap-viewport-glow={view.zoom > 1.5 ? 'true' : 'false'}
12088
+ so the glow eases when zoom crosses 1.5x.
12089
+ R540: extends the drop-shadow to also fire on
12090
+ hoveredMinimap with HOVER PRECEDENCE over zoom-
12091
+ state. Pre-R540 the viewport drop-shadow was
12092
+ zoom-only (single gate); R540 adds an
12093
+ interactional gate at lighter blur intensity.
12094
+ Hover wins when both true — interactional signal
12095
+ (user is inspecting) trumps informational signal
12096
+ (you're zoomed). Sibling to R534 edge-badge
12097
+ hover-precedence + R538 group-label hover-tier
12098
+ extensions.
12099
+ 2-tier alpha ladder:
12100
+ hover (interactional) legendAccent 99 (~60%)
12101
+ zoom > 1.5 (info) legendAccent 80 (~50%)
12102
+ rest none
12103
+ data-topo-minimap-viewport-glow attr upgraded
12104
+ binary ('true'/'false') → 3-value ('hover' |
12105
+ 'zoom' | 'false') so tests can distinguish
12106
+ gate cause. */
12107
+ data-topo-minimap-viewport-glow={hoveredMinimap ? 'hover' : view.zoom > 1.5 ? 'zoom' : 'false'}
12050
12108
  style={{
12051
- filter: view.zoom > 1.5
12052
- ? `drop-shadow(0 0 2px ${pal.legendAccent}80)`
12053
- : undefined,
12109
+ filter: hoveredMinimap
12110
+ ? `drop-shadow(0 0 2px ${pal.legendAccent}99)`
12111
+ : view.zoom > 1.5
12112
+ ? `drop-shadow(0 0 2px ${pal.legendAccent}80)`
12113
+ : undefined,
12054
12114
  transition: smoothView
12055
12115
  ? 'x 280ms ease-out, y 280ms ease-out, width 280ms ease-out, height 280ms ease-out, stroke-width 200ms ease-out, opacity 200ms ease-out, filter 200ms ease-out'
12056
12116
  : 'stroke-width 200ms ease-out, opacity 200ms ease-out, filter 200ms ease-out',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.53",
3
+ "version": "0.5.3-preview.55",
4
4
  "description": "Agent Network Dashboard \u2014 Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,109 @@
1
+ /* Round 540 verification: minimap viewport gains drop-shadow glow on
2
+ * hover, with hover precedence over R481 zoom-state glow. 2-tier alpha
3
+ * ladder (hover 99 / zoom 80).
4
+ *
5
+ * Test strategy: minimap is only visible when canvas is zoomed or
6
+ * panned (default view returns null). Trigger zoom via the chrome
7
+ * zoom-in button, verify zoom-state glow renders, then hover the
8
+ * minimap container and verify hover precedence + alpha distinction
9
+ * via the data-attr. Source regex covers the ternary wiring.
10
+ *
11
+ * Test phases:
12
+ * 1. trigger zoom > 1.5 via chrome zoom-in clicks
13
+ * 2. minimap visible, viewport glow attr = 'zoom'
14
+ * 3. hover minimap container: viewport glow = 'hover'
15
+ * 4. source-side regex confirms 3-value attr + filter ternary
16
+ */
17
+ import { chromium } from 'playwright';
18
+ import { readFileSync } from 'node:fs';
19
+
20
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
21
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
22
+
23
+ const browser = await chromium.launch({ headless: true });
24
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
25
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
26
+ await ctx.addInitScript(() => {
27
+ try {
28
+ localStorage.setItem('anet-theme', 'cyber');
29
+ localStorage.setItem('anet-topo-layout', 'ring');
30
+ sessionStorage.setItem('anet_v3_auth', '1');
31
+ } catch {}
32
+ });
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: 'idle', 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('a·1'), mk('a·2'), mk('a·3'),
44
+ ] } });
45
+ });
46
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
47
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
48
+ const page = await ctx.newPage();
49
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
50
+ await page.waitForSelector('[data-topo-chrome-zoom-in]', { timeout: 15000 });
51
+ await page.waitForTimeout(500);
52
+
53
+ // Phase 1: click zoom-in until zoom > 1.5 (1.2^3 = 1.728)
54
+ for (let i = 0; i < 3; i++) {
55
+ await page.click('[data-topo-chrome-zoom-in]');
56
+ await page.waitForTimeout(150);
57
+ }
58
+ await page.waitForTimeout(500);
59
+
60
+ // Minimap should now be visible
61
+ await page.waitForSelector('[data-topo-minimap-viewport]', { timeout: 5000 });
62
+
63
+ // Phase 2: zoom-state read
64
+ const zoomState = await page.evaluate(() => {
65
+ const el = document.querySelector('[data-topo-minimap-viewport]');
66
+ if (!el) return null;
67
+ const cs = getComputedStyle(el);
68
+ return {
69
+ glow: el.getAttribute('data-topo-minimap-viewport-glow'),
70
+ filter: cs.filter,
71
+ };
72
+ });
73
+
74
+ // Phase 3: hover minimap container
75
+ await page.hover('[data-topo-minimap]');
76
+ await page.waitForTimeout(400);
77
+ const hoverState = await page.evaluate(() => {
78
+ const el = document.querySelector('[data-topo-minimap-viewport]');
79
+ if (!el) return null;
80
+ const cs = getComputedStyle(el);
81
+ return {
82
+ glow: el.getAttribute('data-topo-minimap-viewport-glow'),
83
+ filter: cs.filter,
84
+ };
85
+ });
86
+
87
+ await browser.close();
88
+
89
+ // Source regex
90
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
91
+ const sourceFilterTernary =
92
+ /filter: hoveredMinimap\s+\? `drop-shadow\(0 0 2px \$\{pal\.legendAccent\}99\)`\s+: view\.zoom > 1\.5\s+\? `drop-shadow\(0 0 2px \$\{pal\.legendAccent\}80\)`\s+: undefined,/.test(src);
93
+ const sourceAttrTernary =
94
+ /data-topo-minimap-viewport-glow=\{hoveredMinimap \? 'hover' : view\.zoom > 1\.5 \? 'zoom' : 'false'\}/.test(src);
95
+
96
+ const results = {
97
+ zoom_glow_zoom: zoomState?.glow === 'zoom',
98
+ zoom_filter_drop_shadow: /drop-shadow/.test(zoomState?.filter || ''),
99
+ hover_glow_hover: hoverState?.glow === 'hover',
100
+ hover_filter_drop_shadow: /drop-shadow/.test(hoverState?.filter || ''),
101
+ source_filter_ternary: sourceFilterTernary,
102
+ source_attr_ternary: sourceAttrTernary,
103
+ };
104
+ const ok = Object.values(results).every(Boolean);
105
+ console.log(`${ok ? '✅' : '❌'} R540 minimap viewport hover-glow:`,
106
+ JSON.stringify(results, null, 2),
107
+ '\n zoom:', JSON.stringify(zoomState),
108
+ '\n hover:', JSON.stringify(hoverState));
109
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,97 @@
1
+ /* Round 541 verification: vendor letter chip gains drop-shadow glow on
2
+ * hover/pin using its own vendor.color identity. 2-tier alpha ladder
3
+ * (pin 99 / hover 66). Sibling to R537 legend-swatch tier-color glow.
4
+ *
5
+ * Test phases (multi-vendor setup so vendor chips render):
6
+ * 1. rest: data-vendor-glow='false', filter='none'
7
+ * 2. hover vendor chip: glow='hover', filter has drop-shadow with
8
+ * vendor color at lower alpha
9
+ * 3. source-side regex confirms filter ternary + 3-value attr
10
+ */
11
+ import { chromium } from 'playwright';
12
+ import { readFileSync } from 'node:fs';
13
+
14
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
15
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
16
+
17
+ const browser = await chromium.launch({ headless: true });
18
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
19
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
20
+ await ctx.addInitScript(() => {
21
+ try {
22
+ localStorage.setItem('anet-theme', 'cyber');
23
+ localStorage.setItem('anet-topo-layout', 'ring');
24
+ sessionStorage.setItem('anet_v3_auth', '1');
25
+ } catch {}
26
+ });
27
+ await ctx.route('**/api/hub/status*', async (route) => {
28
+ const r = await route.fetch();
29
+ const b = await r.json();
30
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
31
+ const mk = (alias, model) => ({
32
+ alias, status: 'idle', model, runtime: 'claude-code-cli',
33
+ network_id: nid, project_dir: null,
34
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
35
+ });
36
+ // R281 gates vendor chip render on vendorDist.length > 2 — need 3+
37
+ // distinct vendor types. Anthropic claude / Google gemini / OpenAI gpt.
38
+ await route.fulfill({ response: r, json: { ...b, sessions: [
39
+ mk('a·1', 'claude-opus-4'),
40
+ mk('a·2', 'gemini-2.5-pro'),
41
+ mk('a·3', 'gpt-4'),
42
+ ] } });
43
+ });
44
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
45
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
46
+ const page = await ctx.newPage();
47
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
48
+ await page.waitForSelector('[data-vendor-letter]', { timeout: 15000 });
49
+ await page.waitForTimeout(800);
50
+
51
+ // Pick the first vendor chip — probe both computed (CSS resolved) AND
52
+ // inline (React-set raw style) for filter, since !important class rules
53
+ // can override computed even if inline is set.
54
+ const restRead = async () => page.evaluate(() => {
55
+ const el = document.querySelector('[data-vendor-letter]');
56
+ if (!el) return null;
57
+ const cs = getComputedStyle(el);
58
+ return {
59
+ glow: el.getAttribute('data-vendor-glow'),
60
+ initial: el.getAttribute('data-vendor-letter'),
61
+ filter: cs.filter,
62
+ inlineFilter: el.style.filter,
63
+ };
64
+ });
65
+
66
+ // Phase 1: rest
67
+ const rest = await restRead();
68
+
69
+ // Phase 2: hover the chip
70
+ await page.hover('[data-vendor-letter]');
71
+ await page.waitForTimeout(400);
72
+ const hover = await restRead();
73
+
74
+ await browser.close();
75
+
76
+ // Source regex — uses color-mix() instead of hex+alpha since v.color is
77
+ // HSL format (vendorIdentity mono.text), not hex. Banked test-craft note.
78
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
79
+ const sourceFilterTernary =
80
+ /filter: isPinned\s+\? `drop-shadow\(0 0 3px color-mix\(in srgb, \$\{v\.color\} 60%, transparent\)\)`\s+: hoveredVendor === v\.initial\s+\? `drop-shadow\(0 0 3px color-mix\(in srgb, \$\{v\.color\} 40%, transparent\)\)`\s+: undefined,/.test(src);
81
+ const sourceAttrTernary =
82
+ /data-vendor-glow=\{isPinned \? 'pin' : hoveredVendor === v\.initial \? 'hover' : 'false'\}/.test(src);
83
+
84
+ const results = {
85
+ rest_glow_false: rest?.glow === 'false',
86
+ rest_filter_none: rest?.filter === 'none' || rest?.filter === '',
87
+ hover_glow_hover: hover?.glow === 'hover',
88
+ hover_filter_drop_shadow: /drop-shadow/.test(hover?.filter || ''),
89
+ source_filter_ternary: sourceFilterTernary,
90
+ source_attr_ternary: sourceAttrTernary,
91
+ };
92
+ const ok = Object.values(results).every(Boolean);
93
+ console.log(`${ok ? '✅' : '❌'} R541 vendor-chip glow:`,
94
+ JSON.stringify(results, null, 2),
95
+ '\n rest:', JSON.stringify(rest),
96
+ '\n hover:', JSON.stringify(hover));
97
+ process.exit(ok ? 0 : 1);