@sleep2agi/agent-network-dashboard 0.5.3-preview.115 → 0.5.3-preview.117

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 (144) 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 +1 -1
  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/{03i86t3.~.8ll.js → 00o-zgown.97f.js} +1 -1
  132. package/.next/static/chunks/{030.uuu7efnb8.js → 0n6zuvbiruc.7.js} +1 -1
  133. package/.next/static/chunks/{0je0sy~2psa.e.js → 12x616uychgd3.js} +1 -1
  134. package/.next/static/chunks/17nyaiknx8jvz.js +4 -0
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +65 -5
  138. package/package.json +1 -1
  139. package/scripts/topo-avatar-scale-test.mjs +89 -0
  140. package/scripts/topo-edge-badge-circle-brightness-test.mjs +82 -0
  141. package/.next/static/chunks/10wwrp2zvsbul.js +0 -4
  142. /package/.next/static/{U1vNDIvDsljKqTiX3VDnp → VxBWiTVRwrbqqD8Nnaf6q}/_buildManifest.js +0 -0
  143. /package/.next/static/{U1vNDIvDsljKqTiX3VDnp → VxBWiTVRwrbqqD8Nnaf6q}/_clientMiddlewareManifest.js +0 -0
  144. /package/.next/static/{U1vNDIvDsljKqTiX3VDnp → VxBWiTVRwrbqqD8Nnaf6q}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":248,"timestamp":235758911517,"id":4,"parentId":1,"tags":{},"startTime":1779043731158,"traceId":"9922a64a2d8292a7"},{"name":"load-custom-routes","duration":514,"timestamp":235758911920,"id":5,"parentId":1,"tags":{},"startTime":1779043731158,"traceId":"9922a64a2d8292a7"},{"name":"create-dist-dir","duration":686,"timestamp":235758912477,"id":6,"parentId":1,"tags":{},"startTime":1779043731159,"traceId":"9922a64a2d8292a7"},{"name":"clean","duration":31716,"timestamp":235758913792,"id":7,"parentId":1,"tags":{},"startTime":1779043731160,"traceId":"9922a64a2d8292a7"},{"name":"discover-routes","duration":27603,"timestamp":235759024069,"id":8,"parentId":1,"tags":{},"startTime":1779043731270,"traceId":"9922a64a2d8292a7"},{"name":"create-root-mapping","duration":176,"timestamp":235759051759,"id":9,"parentId":1,"tags":{},"startTime":1779043731298,"traceId":"9922a64a2d8292a7"},{"name":"generate-route-types","duration":18814,"timestamp":235759054399,"id":10,"parentId":1,"tags":{},"startTime":1779043731301,"traceId":"9922a64a2d8292a7"},{"name":"public-dir-conflict-check","duration":91,"timestamp":235759073293,"id":11,"parentId":1,"tags":{},"startTime":1779043731320,"traceId":"9922a64a2d8292a7"},{"name":"generate-routes-manifest","duration":5451,"timestamp":235759073488,"id":12,"parentId":1,"tags":{},"startTime":1779043731320,"traceId":"9922a64a2d8292a7"},{"name":"run-turbopack","duration":5887590,"timestamp":235759085982,"id":14,"parentId":1,"tags":{},"startTime":1779043731332,"traceId":"9922a64a2d8292a7"},{"name":"turbopack-build-events","duration":109,"timestamp":235759392456,"id":15,"parentId":1,"tags":{},"startTime":1779043731639,"traceId":"9922a64a2d8292a7"},{"name":"run-typescript","duration":9722832,"timestamp":235764984962,"id":16,"parentId":1,"tags":{},"startTime":1779043737231,"traceId":"9922a64a2d8292a7"},{"name":"generate-required-server-files","duration":2658,"timestamp":235774708784,"id":18,"parentId":1,"tags":{},"startTime":1779043746955,"traceId":"9922a64a2d8292a7"},{"name":"check-static-error-page","duration":14069,"timestamp":235774939585,"id":20,"parentId":19,"tags":{},"startTime":1779043747186,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":462442,"timestamp":235774955958,"id":65,"parentId":22,"tags":{},"startTime":1779043747202,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":476164,"timestamp":235774942402,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779043747189,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":545231,"timestamp":235774956066,"id":66,"parentId":25,"tags":{},"startTime":1779043747202,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":556135,"timestamp":235774945265,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779043747192,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":559360,"timestamp":235774957838,"id":72,"parentId":32,"tags":{},"startTime":1779043747204,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":571473,"timestamp":235774945959,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779043747192,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":569067,"timestamp":235774957243,"id":69,"parentId":28,"tags":{},"startTime":1779043747204,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":580845,"timestamp":235774945532,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779043747192,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":568497,"timestamp":235774958071,"id":73,"parentId":33,"tags":{},"startTime":1779043747204,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":580552,"timestamp":235774946067,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779043747192,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":582349,"timestamp":235774957761,"id":71,"parentId":30,"tags":{},"startTime":1779043747204,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":594484,"timestamp":235774945691,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779043747192,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":587028,"timestamp":235774958191,"id":75,"parentId":35,"tags":{},"startTime":1779043747204,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":598979,"timestamp":235774946294,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779043747193,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":591578,"timestamp":235774958248,"id":77,"parentId":37,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":602946,"timestamp":235774946946,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779043747193,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":599184,"timestamp":235774957098,"id":68,"parentId":27,"tags":{},"startTime":1779043747203,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":610874,"timestamp":235774945462,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779043747192,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":600515,"timestamp":235774956141,"id":67,"parentId":26,"tags":{},"startTime":1779043747202,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":611307,"timestamp":235774945392,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779043747192,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":598579,"timestamp":235774958265,"id":78,"parentId":38,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":609839,"timestamp":235774947053,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779043747193,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":598849,"timestamp":235774958214,"id":76,"parentId":36,"tags":{},"startTime":1779043747204,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":610312,"timestamp":235774946784,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779043747193,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":606057,"timestamp":235774958154,"id":74,"parentId":34,"tags":{},"startTime":1779043747204,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":618076,"timestamp":235774946182,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779043747192,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":609504,"timestamp":235774958290,"id":80,"parentId":40,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":620667,"timestamp":235774947171,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779043747193,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":612670,"timestamp":235774958278,"id":79,"parentId":39,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":623875,"timestamp":235774947115,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779043747193,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":617974,"timestamp":235774958339,"id":84,"parentId":46,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":626903,"timestamp":235774949457,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779043747196,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":619199,"timestamp":235774958302,"id":81,"parentId":42,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":630174,"timestamp":235774947399,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779043747194,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":620186,"timestamp":235774957552,"id":70,"parentId":29,"tags":{},"startTime":1779043747204,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":632165,"timestamp":235774945606,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779043747192,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":623710,"timestamp":235774958363,"id":86,"parentId":48,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":632520,"timestamp":235774949600,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779043747196,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":626481,"timestamp":235774958327,"id":83,"parentId":45,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":635467,"timestamp":235774949383,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779043747196,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":631013,"timestamp":235774955668,"id":64,"parentId":21,"tags":{},"startTime":1779043747202,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":645831,"timestamp":235774940890,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779043747187,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":628510,"timestamp":235774958401,"id":89,"parentId":51,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":637136,"timestamp":235774949817,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779043747196,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":632585,"timestamp":235774958376,"id":87,"parentId":49,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":641333,"timestamp":235774949689,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779043747196,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":629031,"timestamp":235774962153,"id":90,"parentId":24,"tags":{},"startTime":1779043747208,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":648432,"timestamp":235774942779,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779043747189,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":627139,"timestamp":235774965798,"id":93,"parentId":43,"tags":{},"startTime":1779043747212,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":645498,"timestamp":235774947478,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779043747194,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":634903,"timestamp":235774964454,"id":92,"parentId":41,"tags":{},"startTime":1779043747211,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":652179,"timestamp":235774947224,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779043747193,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":650948,"timestamp":235774958388,"id":88,"parentId":50,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":659638,"timestamp":235774949754,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779043747196,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":652903,"timestamp":235774958315,"id":82,"parentId":44,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":662005,"timestamp":235774949259,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779043747196,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":670714,"timestamp":235774958351,"id":85,"parentId":47,"tags":{},"startTime":1779043747205,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":679604,"timestamp":235774949534,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779043747196,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":690296,"timestamp":235774978447,"id":94,"parentId":23,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":726189,"timestamp":235774942627,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779043747189,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":699050,"timestamp":235774978558,"id":100,"parentId":58,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":726238,"timestamp":235774951440,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779043747198,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":701773,"timestamp":235774978530,"id":98,"parentId":55,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":729770,"timestamp":235774950592,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779043747197,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":706576,"timestamp":235774978695,"id":101,"parentId":59,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":733740,"timestamp":235774951615,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779043747198,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":709947,"timestamp":235774978720,"id":102,"parentId":61,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":736611,"timestamp":235774952111,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779043747198,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":713655,"timestamp":235774978546,"id":99,"parentId":56,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":741490,"timestamp":235774950767,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779043747197,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":717276,"timestamp":235774978497,"id":96,"parentId":53,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":745531,"timestamp":235774950295,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779043747197,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":718580,"timestamp":235774978483,"id":95,"parentId":52,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":746944,"timestamp":235774950167,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779043747196,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":719785,"timestamp":235774978747,"id":104,"parentId":63,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":746131,"timestamp":235774952460,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779043747199,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":722573,"timestamp":235774978514,"id":97,"parentId":54,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":750705,"timestamp":235774950422,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779043747197,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":723347,"timestamp":235774978732,"id":103,"parentId":62,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":749846,"timestamp":235774952275,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779043747199,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":724116,"timestamp":235774978763,"id":105,"parentId":60,"tags":{},"startTime":1779043747225,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":751140,"timestamp":235774951770,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779043747198,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":740945,"timestamp":235774963560,"id":91,"parentId":31,"tags":{},"startTime":1779043747210,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":758764,"timestamp":235774945766,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779043747192,"traceId":"9922a64a2d8292a7"},{"name":"is-page-static","duration":713225,"timestamp":235774991359,"id":106,"parentId":57,"tags":{},"startTime":1779043747238,"traceId":"9922a64a2d8292a7"},{"name":"check-page","duration":753626,"timestamp":235774950978,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779043747197,"traceId":"9922a64a2d8292a7"},{"name":"static-check","duration":765901,"timestamp":235774938738,"id":19,"parentId":1,"tags":{},"startTime":1779043747185,"traceId":"9922a64a2d8292a7"}]
2
- [{"name":"write-routes-manifest","duration":638,"timestamp":235775713087,"id":108,"parentId":1,"tags":{},"startTime":1779043747959,"traceId":"9922a64a2d8292a7"},{"name":"load-dotenv","duration":46,"timestamp":235775726737,"id":111,"parentId":110,"tags":{},"startTime":1779043747973,"traceId":"9922a64a2d8292a7"},{"name":"run-export-path-map","duration":523,"timestamp":235775729304,"id":112,"parentId":110,"tags":{},"startTime":1779043747976,"traceId":"9922a64a2d8292a7"},{"name":"next-export","duration":622056,"timestamp":235775725262,"id":110,"parentId":1,"tags":{},"startTime":1779043747972,"traceId":"9922a64a2d8292a7"},{"name":"move-exported-app-not-found-","duration":455,"timestamp":235776350221,"id":113,"parentId":109,"tags":{},"startTime":1779043748596,"traceId":"9922a64a2d8292a7"},{"name":"move-exported-app-global-error-","duration":343,"timestamp":235776350759,"id":114,"parentId":109,"tags":{},"startTime":1779043748597,"traceId":"9922a64a2d8292a7"},{"name":"static-generation","duration":633359,"timestamp":235775719407,"id":109,"parentId":1,"tags":{},"startTime":1779043747966,"traceId":"9922a64a2d8292a7"},{"name":"write-routes-manifest","duration":350,"timestamp":235776353067,"id":115,"parentId":1,"tags":{},"startTime":1779043748599,"traceId":"9922a64a2d8292a7"},{"name":"print-tree-view","duration":4241,"timestamp":235776372453,"id":116,"parentId":1,"tags":{},"startTime":1779043748619,"traceId":"9922a64a2d8292a7"},{"name":"write-route-bundle-stats","duration":13099,"timestamp":235776376720,"id":117,"parentId":1,"tags":{},"startTime":1779043748623,"traceId":"9922a64a2d8292a7"},{"name":"telemetry-flush","duration":27696,"timestamp":235776389844,"id":118,"parentId":1,"tags":{},"startTime":1779043748636,"traceId":"9922a64a2d8292a7"},{"name":"next-build","duration":17557089,"timestamp":235758860477,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779043731107,"traceId":"9922a64a2d8292a7"}]
1
+ [{"name":"generate-buildid","duration":365,"timestamp":236406108224,"id":4,"parentId":1,"tags":{},"startTime":1779044378355,"traceId":"4614e65886715bd2"},{"name":"load-custom-routes","duration":594,"timestamp":236406108767,"id":5,"parentId":1,"tags":{},"startTime":1779044378355,"traceId":"4614e65886715bd2"},{"name":"create-dist-dir","duration":889,"timestamp":236406109424,"id":6,"parentId":1,"tags":{},"startTime":1779044378356,"traceId":"4614e65886715bd2"},{"name":"clean","duration":36322,"timestamp":236406110971,"id":7,"parentId":1,"tags":{},"startTime":1779044378357,"traceId":"4614e65886715bd2"},{"name":"discover-routes","duration":26015,"timestamp":236406229145,"id":8,"parentId":1,"tags":{},"startTime":1779044378475,"traceId":"4614e65886715bd2"},{"name":"create-root-mapping","duration":105,"timestamp":236406255223,"id":9,"parentId":1,"tags":{},"startTime":1779044378502,"traceId":"4614e65886715bd2"},{"name":"generate-route-types","duration":20676,"timestamp":236406257721,"id":10,"parentId":1,"tags":{},"startTime":1779044378504,"traceId":"4614e65886715bd2"},{"name":"public-dir-conflict-check","duration":96,"timestamp":236406278475,"id":11,"parentId":1,"tags":{},"startTime":1779044378525,"traceId":"4614e65886715bd2"},{"name":"generate-routes-manifest","duration":4784,"timestamp":236406278676,"id":12,"parentId":1,"tags":{},"startTime":1779044378525,"traceId":"4614e65886715bd2"},{"name":"run-turbopack","duration":6201832,"timestamp":236406289146,"id":14,"parentId":1,"tags":{},"startTime":1779044378535,"traceId":"4614e65886715bd2"},{"name":"turbopack-build-events","duration":73,"timestamp":236406590636,"id":15,"parentId":1,"tags":{},"startTime":1779044378837,"traceId":"4614e65886715bd2"},{"name":"run-typescript","duration":10052795,"timestamp":236412505112,"id":16,"parentId":1,"tags":{},"startTime":1779044384751,"traceId":"4614e65886715bd2"},{"name":"generate-required-server-files","duration":2601,"timestamp":236422559141,"id":18,"parentId":1,"tags":{},"startTime":1779044394805,"traceId":"4614e65886715bd2"},{"name":"check-static-error-page","duration":15148,"timestamp":236422773976,"id":20,"parentId":19,"tags":{},"startTime":1779044395020,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":513050,"timestamp":236422792940,"id":65,"parentId":22,"tags":{},"startTime":1779044395039,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":529285,"timestamp":236422777074,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779044395023,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":606286,"timestamp":236422793101,"id":66,"parentId":25,"tags":{},"startTime":1779044395039,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":619341,"timestamp":236422780144,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779044395026,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":637326,"timestamp":236422793440,"id":69,"parentId":28,"tags":{},"startTime":1779044395040,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":650316,"timestamp":236422780558,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779044395027,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":640496,"timestamp":236422792631,"id":64,"parentId":21,"tags":{},"startTime":1779044395039,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":657799,"timestamp":236422775394,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779044395022,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":654889,"timestamp":236422793324,"id":68,"parentId":27,"tags":{},"startTime":1779044395040,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":667852,"timestamp":236422780438,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779044395027,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":657722,"timestamp":236422794116,"id":73,"parentId":33,"tags":{},"startTime":1779044395040,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":670744,"timestamp":236422781302,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779044395028,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":666388,"timestamp":236422793939,"id":72,"parentId":32,"tags":{},"startTime":1779044395040,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":679203,"timestamp":236422781178,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779044395027,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":672845,"timestamp":236422794242,"id":76,"parentId":36,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":685052,"timestamp":236422782095,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779044395028,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":674326,"timestamp":236422793213,"id":67,"parentId":26,"tags":{},"startTime":1779044395039,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":687281,"timestamp":236422780313,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779044395027,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":680025,"timestamp":236422794222,"id":75,"parentId":35,"tags":{},"startTime":1779044395040,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":692726,"timestamp":236422781563,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779044395028,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":685089,"timestamp":236422794268,"id":77,"parentId":37,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":697124,"timestamp":236422782279,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779044395029,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":692987,"timestamp":236422794280,"id":78,"parentId":38,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":704902,"timestamp":236422782414,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779044395029,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":699898,"timestamp":236422794329,"id":82,"parentId":44,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":710800,"timestamp":236422783474,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779044395030,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":704784,"timestamp":236422794316,"id":81,"parentId":42,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":716119,"timestamp":236422783047,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779044395029,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":708296,"timestamp":236422794308,"id":80,"parentId":40,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":720041,"timestamp":236422782611,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779044395029,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":708491,"timestamp":236422794293,"id":79,"parentId":39,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":720295,"timestamp":236422782515,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779044395029,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":712726,"timestamp":236422794345,"id":83,"parentId":45,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":723546,"timestamp":236422783596,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779044395030,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":712953,"timestamp":236422794358,"id":84,"parentId":46,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":721960,"timestamp":236422785386,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779044395032,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":714973,"timestamp":236422794368,"id":85,"parentId":47,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":723817,"timestamp":236422785563,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779044395032,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":719277,"timestamp":236422794414,"id":89,"parentId":51,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":727718,"timestamp":236422786023,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779044395032,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":719485,"timestamp":236422794393,"id":87,"parentId":49,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":728109,"timestamp":236422785800,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779044395032,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":722931,"timestamp":236422793867,"id":71,"parentId":30,"tags":{},"startTime":1779044395040,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":736061,"timestamp":236422780790,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779044395027,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":723634,"timestamp":236422794402,"id":88,"parentId":50,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":732163,"timestamp":236422785917,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779044395032,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":719081,"timestamp":236422799162,"id":91,"parentId":31,"tags":{},"startTime":1779044395045,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":737353,"timestamp":236422780920,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779044395027,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":729712,"timestamp":236422794380,"id":86,"parentId":48,"tags":{},"startTime":1779044395041,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":738459,"timestamp":236422785677,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779044395032,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":723080,"timestamp":236422801206,"id":93,"parentId":43,"tags":{},"startTime":1779044395047,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":741129,"timestamp":236422783185,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779044395029,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":726394,"timestamp":236422798026,"id":90,"parentId":24,"tags":{},"startTime":1779044395044,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":746886,"timestamp":236422777557,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779044395024,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":749524,"timestamp":236422794188,"id":74,"parentId":34,"tags":{},"startTime":1779044395040,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":762359,"timestamp":236422781415,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779044395028,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":748481,"timestamp":236422803263,"id":98,"parentId":55,"tags":{},"startTime":1779044395050,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":764848,"timestamp":236422786951,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779044395033,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":755882,"timestamp":236422803275,"id":99,"parentId":56,"tags":{},"startTime":1779044395050,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":772041,"timestamp":236422787172,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779044395033,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":760238,"timestamp":236422800027,"id":92,"parentId":41,"tags":{},"startTime":1779044395046,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":777551,"timestamp":236422782764,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779044395029,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":768493,"timestamp":236422793703,"id":70,"parentId":29,"tags":{},"startTime":1779044395040,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":781574,"timestamp":236422780662,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779044395027,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":763163,"timestamp":236422803285,"id":100,"parentId":58,"tags":{},"startTime":1779044395050,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":778630,"timestamp":236422787878,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779044395034,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":777254,"timestamp":236422803418,"id":103,"parentId":62,"tags":{},"startTime":1779044395050,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":791969,"timestamp":236422788754,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779044395035,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":778121,"timestamp":236422803237,"id":96,"parentId":53,"tags":{},"startTime":1779044395050,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":794825,"timestamp":236422786576,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779044395033,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":782591,"timestamp":236422803195,"id":94,"parentId":23,"tags":{},"startTime":1779044395049,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":808518,"timestamp":236422777336,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779044395024,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":784585,"timestamp":236422803430,"id":104,"parentId":63,"tags":{},"startTime":1779044395050,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":799161,"timestamp":236422788894,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779044395035,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":786811,"timestamp":236422803250,"id":97,"parentId":54,"tags":{},"startTime":1779044395050,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":803361,"timestamp":236422786740,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779044395033,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":780259,"timestamp":236422811456,"id":105,"parentId":60,"tags":{},"startTime":1779044395058,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":803503,"timestamp":236422788252,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779044395035,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":771489,"timestamp":236422822212,"id":106,"parentId":57,"tags":{},"startTime":1779044395068,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":806354,"timestamp":236422787383,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779044395034,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":791649,"timestamp":236422803227,"id":95,"parentId":52,"tags":{},"startTime":1779044395049,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":808505,"timestamp":236422786411,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779044395033,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":821771,"timestamp":236422803411,"id":102,"parentId":61,"tags":{},"startTime":1779044395050,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":836622,"timestamp":236422788630,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779044395035,"traceId":"4614e65886715bd2"},{"name":"is-page-static","duration":824539,"timestamp":236422803393,"id":101,"parentId":59,"tags":{},"startTime":1779044395050,"traceId":"4614e65886715bd2"},{"name":"check-page","duration":839906,"timestamp":236422788085,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779044395034,"traceId":"4614e65886715bd2"},{"name":"static-check","duration":855915,"timestamp":236422772142,"id":19,"parentId":1,"tags":{},"startTime":1779044395018,"traceId":"4614e65886715bd2"}]
2
+ [{"name":"write-routes-manifest","duration":519,"timestamp":236423638985,"id":108,"parentId":1,"tags":{},"startTime":1779044395885,"traceId":"4614e65886715bd2"},{"name":"load-dotenv","duration":71,"timestamp":236423651731,"id":111,"parentId":110,"tags":{},"startTime":1779044395898,"traceId":"4614e65886715bd2"},{"name":"run-export-path-map","duration":915,"timestamp":236423655374,"id":112,"parentId":110,"tags":{},"startTime":1779044395902,"traceId":"4614e65886715bd2"},{"name":"next-export","duration":647789,"timestamp":236423649793,"id":110,"parentId":1,"tags":{},"startTime":1779044395896,"traceId":"4614e65886715bd2"},{"name":"move-exported-app-not-found-","duration":627,"timestamp":236424300791,"id":113,"parentId":109,"tags":{},"startTime":1779044396547,"traceId":"4614e65886715bd2"},{"name":"move-exported-app-global-error-","duration":554,"timestamp":236424301527,"id":114,"parentId":109,"tags":{},"startTime":1779044396548,"traceId":"4614e65886715bd2"},{"name":"static-generation","duration":661175,"timestamp":236423643104,"id":109,"parentId":1,"tags":{},"startTime":1779044395889,"traceId":"4614e65886715bd2"},{"name":"write-routes-manifest","duration":560,"timestamp":236424304565,"id":115,"parentId":1,"tags":{},"startTime":1779044396551,"traceId":"4614e65886715bd2"},{"name":"print-tree-view","duration":6718,"timestamp":236424317620,"id":116,"parentId":1,"tags":{},"startTime":1779044396564,"traceId":"4614e65886715bd2"},{"name":"write-route-bundle-stats","duration":18601,"timestamp":236424324382,"id":117,"parentId":1,"tags":{},"startTime":1779044396571,"traceId":"4614e65886715bd2"},{"name":"telemetry-flush","duration":17863,"timestamp":236424343046,"id":118,"parentId":1,"tags":{},"startTime":1779044396589,"traceId":"4614e65886715bd2"},{"name":"next-build","duration":18308263,"timestamp":236406052687,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779044378299,"traceId":"4614e65886715bd2"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5887590,"timestamp":235759085982,"id":14,"parentId":1,"tags":{},"startTime":1779043731332,"traceId":"9922a64a2d8292a7"},{"name":"turbopack-build-events","duration":109,"timestamp":235759392456,"id":15,"parentId":1,"tags":{},"startTime":1779043731639,"traceId":"9922a64a2d8292a7"},{"name":"run-typescript","duration":9722832,"timestamp":235764984962,"id":16,"parentId":1,"tags":{},"startTime":1779043737231,"traceId":"9922a64a2d8292a7"},{"name":"static-check","duration":765901,"timestamp":235774938738,"id":19,"parentId":1,"tags":{},"startTime":1779043747185,"traceId":"9922a64a2d8292a7"},{"name":"static-generation","duration":633359,"timestamp":235775719407,"id":109,"parentId":1,"tags":{},"startTime":1779043747966,"traceId":"9922a64a2d8292a7"},{"name":"telemetry-flush","duration":27696,"timestamp":235776389844,"id":118,"parentId":1,"tags":{},"startTime":1779043748636,"traceId":"9922a64a2d8292a7"},{"name":"next-build","duration":17557089,"timestamp":235758860477,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779043731107,"traceId":"9922a64a2d8292a7"}]
1
+ [{"name":"run-turbopack","duration":6201832,"timestamp":236406289146,"id":14,"parentId":1,"tags":{},"startTime":1779044378535,"traceId":"4614e65886715bd2"},{"name":"turbopack-build-events","duration":73,"timestamp":236406590636,"id":15,"parentId":1,"tags":{},"startTime":1779044378837,"traceId":"4614e65886715bd2"},{"name":"run-typescript","duration":10052795,"timestamp":236412505112,"id":16,"parentId":1,"tags":{},"startTime":1779044384751,"traceId":"4614e65886715bd2"},{"name":"static-check","duration":855915,"timestamp":236422772142,"id":19,"parentId":1,"tags":{},"startTime":1779044395018,"traceId":"4614e65886715bd2"},{"name":"static-generation","duration":661175,"timestamp":236423643104,"id":109,"parentId":1,"tags":{},"startTime":1779044395889,"traceId":"4614e65886715bd2"},{"name":"telemetry-flush","duration":17863,"timestamp":236424343046,"id":118,"parentId":1,"tags":{},"startTime":1779044396589,"traceId":"4614e65886715bd2"},{"name":"next-build","duration":18308263,"timestamp":236406052687,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779044378299,"traceId":"4614e65886715bd2"}]
@@ -7226,6 +7226,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
7226
7226
  data-edge-badge-opacity-hover="1"
7227
7227
  data-edge-badge-opacity-active="1"
7228
7228
  data-edge-badge-glow={(isHoveredEdge || isPinned) ? 'hover' : isHot ? 'hot' : 'false'}
7229
+ data-edge-badge-brightness={(isHoveredEdge || isPinned || isHot) ? '1.15' : '1'}
7229
7230
  /* Round 534 / Loop — extends edge-badge drop-shadow
7230
7231
  coverage from hot-only (R480 amber) to also fire
7231
7232
  on hover/pin with a cyan accent glow. Pre-R534
@@ -7262,10 +7263,38 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
7262
7263
  (not g[data-node] ancestor); filter is paint-
7263
7264
  only; bbox unchanged. */
7264
7265
  style={{
7266
+ /* R603 — edge-badge CIRCLE stacks brightness(1.15)
7267
+ onto the R534/R480 drop-shadow filter on hover/
7268
+ pin/hot. 5th hover axis on the badge ring
7269
+ (after R164 r, R394 sw, R395 opacity, R534
7270
+ filter drop-shadow → R603 filter brightness).
7271
+
7272
+ Brings the CIRCLE's brightness coverage to
7273
+ parity with the DIGIT's R570 brightness:
7274
+ both elements (ring + text) now brighten
7275
+ together on the same 3-state gate
7276
+ (hover/pin/hot). The whole edge-badge reads
7277
+ as one coherent "lit up under attention"
7278
+ unit at the brightness axis.
7279
+
7280
+ Banked R564/R570 stacked-filter pattern:
7281
+ `drop-shadow(...) brightness(1.15)` chains
7282
+ the SVG drop-shadow halo + brightness lift
7283
+ in one CSS filter chain on the same element.
7284
+
7285
+ Per-element brightness family extension —
7286
+ edge-badge circle joins as a stacked-filter
7287
+ anchor. Hot-only state gets amber drop-shadow
7288
+ + brightness; hover/pin gets cyan/teal drop-
7289
+ shadow + brightness; rest gets neither.
7290
+
7291
+ transition list already includes 'filter
7292
+ 200ms ease-out' (R534 cadence). No
7293
+ transition change needed. */
7265
7294
  filter: (isHoveredEdge || isPinned)
7266
- ? `drop-shadow(0 0 3px ${pal.legendAccent}99)`
7295
+ ? `drop-shadow(0 0 3px ${pal.legendAccent}99) brightness(1.15)`
7267
7296
  : isHot
7268
- ? `drop-shadow(0 0 3px ${hotStroke}80)`
7297
+ ? `drop-shadow(0 0 3px ${hotStroke}80) brightness(1.15)`
7269
7298
  : undefined,
7270
7299
  transition: 'r 180ms ease-out, stroke 300ms ease-out, stroke-width 300ms ease-out, fill 200ms ease-out, opacity 200ms ease-out, filter 200ms ease-out',
7271
7300
  }}
@@ -9345,6 +9374,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9345
9374
  data-node-avatar={session.alias}
9346
9375
  data-node-avatar-hovered={isAvatarHovered ? 'true' : 'false'}
9347
9376
  data-node-avatar-rotate={isAvatarHovered ? '3' : '0'}
9377
+ data-node-avatar-scale={isAvatarHovered ? '1.05' : '1'}
9348
9378
  style={{
9349
9379
  /* R600 milestone — node vendor avatar gains
9350
9380
  hover-rotate-3 via Tailwind v4 individual
@@ -9391,9 +9421,25 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9391
9421
  ease-out' alongside the existing 'filter
9392
9422
  200ms ease-out' — both axes ride one beat. */
9393
9423
  rotate: isAvatarHovered ? '3deg' : '0deg',
9424
+ /* R602 — per-node avatar gains hover-scale-1.05.
9425
+ Mirrors R548 brand 书生 logo's scale-105 idiom
9426
+ at the per-node tier. Stacks with R600 rotate
9427
+ + R501 brightness so the avatar gets a 3-axis
9428
+ hover signature (scale + rotate + brightness)
9429
+ matching the brand-logo polish vocabulary.
9430
+ Tailwind v4 individual `scale` CSS property
9431
+ (banked R547 sibling to `rotate`) — independent
9432
+ of SVG <image>'s x/y/width/height attributes;
9433
+ composes cleanly with rotate. transform-origin
9434
+ shared with R600 — pivots around node center.
9435
+ Pure paint axis: SVG bbox attributes unchanged
9436
+ at rest, so overlap-test invariant holds (the
9437
+ probe reads attributes, not visual bbox post-
9438
+ CSS transform). Scale only fires on hover. */
9439
+ scale: isAvatarHovered ? '1.05' : '1',
9394
9440
  transformOrigin: `${pos.x}px ${pos.y}px`,
9395
9441
  filter: isAvatarHovered ? 'brightness(1.15)' : undefined,
9396
- transition: 'filter 200ms ease-out, rotate 200ms ease-out',
9442
+ transition: 'filter 200ms ease-out, rotate 200ms ease-out, scale 200ms ease-out',
9397
9443
  }}
9398
9444
  />
9399
9445
  );
@@ -9445,6 +9491,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9445
9491
  data-node-avatar-monogram={session.alias}
9446
9492
  data-node-avatar-monogram-hovered={isAvatarFallbackHovered ? 'true' : 'false'}
9447
9493
  data-node-avatar-monogram-rotate={isAvatarFallbackHovered ? '3' : '0'}
9494
+ data-node-avatar-monogram-scale={isAvatarFallbackHovered ? '1.05' : '1'}
9448
9495
  style={{
9449
9496
  /* R601 — vendor-monogram fallback gains hover-
9450
9497
  rotate-3 mirroring R600's image-branch
@@ -9460,9 +9507,15 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9460
9507
  transform-origin pinned to node center
9461
9508
  (pos.x, pos.y) — same idiom as R600. */
9462
9509
  rotate: isAvatarFallbackHovered ? '3deg' : '0deg',
9510
+ /* R602 sibling — vendor monogram fallback
9511
+ gains hover-scale-1.05 to match the image
9512
+ branch above. Per-node avatar scale coverage
9513
+ now 2/3 (image R602, monogram R602 here;
9514
+ prefix-group fallback completes 3/3 below). */
9515
+ scale: isAvatarFallbackHovered ? '1.05' : '1',
9463
9516
  transformOrigin: `${pos.x}px ${pos.y}px`,
9464
9517
  filter: isAvatarFallbackHovered ? 'brightness(1.15)' : undefined,
9465
- transition: 'filter 200ms ease-out, rotate 200ms ease-out',
9518
+ transition: 'filter 200ms ease-out, rotate 200ms ease-out, scale 200ms ease-out',
9466
9519
  }}
9467
9520
  >
9468
9521
  <circle cx={pos.x} cy={pos.y} r={ar} fill={vendor.mono.bg} stroke={vendor.mono.ring} strokeWidth="1.5" />
@@ -9507,6 +9560,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9507
9560
  data-node-avatar-fallback={session.alias}
9508
9561
  data-node-avatar-fallback-hovered={isAvatarFallbackHovered ? 'true' : 'false'}
9509
9562
  data-node-avatar-fallback-rotate={isAvatarFallbackHovered ? '3' : '0'}
9563
+ data-node-avatar-fallback-scale={isAvatarFallbackHovered ? '1.05' : '1'}
9510
9564
  style={{
9511
9565
  /* R601 — prefix-group hue-hashed initial fallback
9512
9566
  gains hover-rotate-3 closing per-node avatar
@@ -9521,9 +9575,15 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9521
9575
  / hue-hashed initial), the user gets the same
9522
9576
  +3° wobble-awake gesture on alias hover. */
9523
9577
  rotate: isAvatarFallbackHovered ? '3deg' : '0deg',
9578
+ /* R602 sibling — prefix-group hue-hashed fallback
9579
+ gains hover-scale-1.05 closing per-node avatar
9580
+ scale coverage at 3/3 branches (image + monogram
9581
+ + fallback all share the same scale-1.05 +
9582
+ rotate-3deg + brightness-1.15 hover signature). */
9583
+ scale: isAvatarFallbackHovered ? '1.05' : '1',
9524
9584
  transformOrigin: `${pos.x}px ${pos.y}px`,
9525
9585
  filter: isAvatarFallbackHovered ? 'brightness(1.15)' : undefined,
9526
- transition: 'filter 200ms ease-out, rotate 200ms ease-out',
9586
+ transition: 'filter 200ms ease-out, rotate 200ms ease-out, scale 200ms ease-out',
9527
9587
  }}
9528
9588
  >
9529
9589
  <circle cx={pos.x} cy={pos.y} r={ar} fill={c.bg} stroke={c.ring} strokeWidth="1" />
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.115",
3
+ "version": "0.5.3-preview.117",
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,89 @@
1
+ /* Round 602 — per-node avatar gains hover-scale-1.05 across
2
+ * all 3 branches (image + monogram + fallback). Avatar now
3
+ * has 3-axis hover signature: rotate (R600/R601) + brightness
4
+ * (R501/R558) + scale (R602). Mirrors R548 brand 书生 logo
5
+ * scale-105 idiom at the per-node tier.
6
+ *
7
+ * Test phases:
8
+ * 1. mock 2 idle nodes → avatar renders
9
+ * 2. rest: scale='none' or '1', scale-attr='1'
10
+ * 3. computed transition-property contains 'scale'
11
+ * 4. source: scale conditional + data-attr + transition extension
12
+ * on all 3 branches
13
+ */
14
+ import { chromium } from 'playwright';
15
+ import { readFileSync } from 'node:fs';
16
+
17
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
18
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
19
+
20
+ const browser = await chromium.launch({ headless: true });
21
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
22
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
23
+ await ctx.addInitScript(() => {
24
+ try {
25
+ localStorage.setItem('anet-theme', 'cyber');
26
+ localStorage.setItem('anet-topo-layout', 'ring');
27
+ sessionStorage.setItem('anet_v3_auth', '1');
28
+ } catch {}
29
+ });
30
+ await ctx.route('**/api/hub/status*', async (route) => {
31
+ const r = await route.fetch();
32
+ const b = await r.json();
33
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
34
+ const mk = (alias) => ({
35
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
36
+ network_id: nid, project_dir: null,
37
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
38
+ });
39
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
40
+ });
41
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
42
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
43
+ const page = await ctx.newPage();
44
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
45
+ await page.waitForSelector('[data-node-avatar-scale]', { timeout: 15000, state: 'attached' });
46
+ await page.waitForTimeout(500);
47
+
48
+ const rest = await page.evaluate(() => {
49
+ const el = document.querySelector('[data-node-avatar-scale]');
50
+ if (!el) return null;
51
+ const cs = getComputedStyle(el);
52
+ return {
53
+ scale: cs.scale,
54
+ transitionProperty: cs.transitionProperty,
55
+ scaleAttr: el.getAttribute('data-node-avatar-scale'),
56
+ rotateAttr: el.getAttribute('data-node-avatar-rotate'),
57
+ hoveredAttr: el.getAttribute('data-node-avatar-hovered'),
58
+ };
59
+ });
60
+
61
+ await browser.close();
62
+
63
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
64
+ const sourceImageScale = /data-node-avatar-scale=\{isAvatarHovered \? '1\.05' : '1'\}/.test(src);
65
+ const sourceMonogramScale = /data-node-avatar-monogram-scale=\{isAvatarFallbackHovered \? '1\.05' : '1'\}/.test(src);
66
+ const sourceFallbackScale = /data-node-avatar-fallback-scale=\{isAvatarFallbackHovered \? '1\.05' : '1'\}/.test(src);
67
+ const sourceBothBranchesScale = (src.match(/scale: isAvatarFallbackHovered \? '1\.05' : '1'/g) || []).length >= 2;
68
+ const sourceImageBranchScale = /scale: isAvatarHovered \? '1\.05' : '1'/.test(src);
69
+ const sourceAllTransitions = (src.match(/transition: 'filter 200ms ease-out, rotate 200ms ease-out, scale 200ms ease-out'/g) || []).length >= 3;
70
+
71
+ const results = {
72
+ avatar_present: !!rest,
73
+ // CSS scale at rest = 'none' or '1' depending on browser
74
+ rest_scale_one: rest?.scale === 'none' || rest?.scale === '1',
75
+ rest_scale_attr: rest?.scaleAttr === '1',
76
+ rest_hovered_false: rest?.hoveredAttr === 'false',
77
+ transition_has_scale: /scale/.test(rest?.transitionProperty || ''),
78
+ source_image_attr: sourceImageScale,
79
+ source_monogram_attr: sourceMonogramScale,
80
+ source_fallback_attr: sourceFallbackScale,
81
+ source_image_branch: sourceImageBranchScale,
82
+ source_both_fallback: sourceBothBranchesScale,
83
+ source_all_3_transitions: sourceAllTransitions,
84
+ };
85
+ const ok = Object.values(results).every(Boolean);
86
+ console.log(`${ok ? '✅' : '❌'} R602 avatar scale (3/3 branches, 3-axis hover signature):`,
87
+ JSON.stringify(results, null, 2),
88
+ `\n rest: ${JSON.stringify(rest)}`);
89
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,82 @@
1
+ /* Round 603 — edge-badge CIRCLE stacks brightness(1.15) onto
2
+ * R534/R480 drop-shadow on hover/pin/hot. 5th hover axis on
3
+ * the badge ring; brings circle brightness to parity with the
4
+ * R570 digit brightness within the same edge-badge unit.
5
+ *
6
+ * Test phases:
7
+ * 1. mock 1 message → 1 flowLink → edge-badge renders
8
+ * 2. rest: filter='none', brightness-attr='1'
9
+ * 3. computed transition-property contains 'filter'
10
+ * 4. source: stacked filter conditional includes brightness +
11
+ * data-attr extension
12
+ */
13
+ import { chromium } from 'playwright';
14
+ import { readFileSync } from 'node:fs';
15
+
16
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
17
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
18
+
19
+ const browser = await chromium.launch({ headless: true });
20
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
21
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
22
+ await ctx.addInitScript(() => {
23
+ try {
24
+ localStorage.setItem('anet-theme', 'cyber');
25
+ localStorage.setItem('anet-topo-layout', 'ring');
26
+ sessionStorage.setItem('anet_v3_auth', '1');
27
+ } catch {}
28
+ });
29
+ await ctx.route('**/api/hub/status*', async (route) => {
30
+ const r = await route.fetch();
31
+ const b = await r.json();
32
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
33
+ const mk = (alias) => ({
34
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
35
+ network_id: nid, project_dir: null,
36
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
37
+ });
38
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
39
+ });
40
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [
41
+ { from_alias: 'a·1', to_alias: 'a·2', content: 'hi', created_at: fresh },
42
+ ] } }));
43
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
44
+ const page = await ctx.newPage();
45
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
46
+ await page.waitForSelector('[data-edge-badge-brightness]', { timeout: 15000, state: 'attached' });
47
+ await page.waitForTimeout(500);
48
+
49
+ const rest = await page.evaluate(() => {
50
+ const el = document.querySelector('[data-edge-badge-brightness]');
51
+ if (!el) return null;
52
+ const cs = getComputedStyle(el);
53
+ return {
54
+ filter: cs.filter,
55
+ transitionProperty: cs.transitionProperty,
56
+ brightnessAttr: el.getAttribute('data-edge-badge-brightness'),
57
+ glowAttr: el.getAttribute('data-edge-badge-glow'),
58
+ liftedAttr: el.getAttribute('data-edge-badge-lifted'),
59
+ };
60
+ });
61
+
62
+ await browser.close();
63
+
64
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
65
+ const sourceFilter = /filter: \(isHoveredEdge \|\| isPinned\)\s*\?\s*`drop-shadow\(0 0 3px \$\{pal\.legendAccent\}99\) brightness\(1\.15\)`\s*:\s*isHot\s*\?\s*`drop-shadow\(0 0 3px \$\{hotStroke\}80\) brightness\(1\.15\)`\s*:\s*undefined/.test(src);
66
+ const sourceAttr = /data-edge-badge-brightness=\{\(isHoveredEdge \|\| isPinned \|\| isHot\) \? '1\.15' : '1'\}/.test(src);
67
+
68
+ const results = {
69
+ badge_present: !!rest,
70
+ rest_filter_none: rest?.filter === 'none',
71
+ rest_brightness_1: rest?.brightnessAttr === '1',
72
+ rest_glow_false: rest?.glowAttr === 'false',
73
+ rest_lifted_false: rest?.liftedAttr === 'false',
74
+ transition_has_filter: /filter/.test(rest?.transitionProperty || ''),
75
+ source_filter: sourceFilter,
76
+ source_attr: sourceAttr,
77
+ };
78
+ const ok = Object.values(results).every(Boolean);
79
+ console.log(`${ok ? '✅' : '❌'} R603 edge-badge circle brightness (5th axis, ring↔digit parity):`,
80
+ JSON.stringify(results, null, 2),
81
+ `\n rest: ${JSON.stringify(rest)}`);
82
+ process.exit(ok ? 0 : 1);