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

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 (156) 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/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +2 -2
  14. package/.next/server/app/_not-found.rsc +2 -2
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/admin.html +2 -2
  23. package/.next/server/app/admin.rsc +2 -2
  24. package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
  25. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  27. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  29. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  30. package/.next/server/app/index.html +2 -2
  31. package/.next/server/app/index.rsc +3 -3
  32. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  33. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  34. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  35. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  36. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  37. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/login.html +2 -2
  39. package/.next/server/app/login.rsc +3 -3
  40. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  41. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  45. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  46. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/logs.html +2 -2
  48. package/.next/server/app/logs.rsc +2 -2
  49. package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
  50. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  52. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  53. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  54. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  55. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/messages.html +2 -2
  57. package/.next/server/app/messages.rsc +2 -2
  58. package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
  59. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  60. package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
  61. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  62. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  63. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  64. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/node.html +2 -2
  66. package/.next/server/app/node.rsc +2 -2
  67. package/.next/server/app/node.segments/_full.segment.rsc +2 -2
  68. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  69. package/.next/server/app/node.segments/_index.segment.rsc +2 -2
  70. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  71. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  72. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  73. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/nodes.html +2 -2
  75. package/.next/server/app/nodes.rsc +2 -2
  76. package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
  77. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  78. package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
  79. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  80. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  81. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  82. package/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/server-logs.html +2 -2
  85. package/.next/server/app/server-logs.rsc +2 -2
  86. package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
  87. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  88. package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
  89. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  90. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  91. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  93. package/.next/server/app/settings/networks.html +2 -2
  94. package/.next/server/app/settings/networks.rsc +2 -2
  95. package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
  96. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  97. package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
  98. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  99. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  100. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  101. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  102. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/settings/tokens.html +2 -2
  105. package/.next/server/app/settings/tokens.rsc +2 -2
  106. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
  109. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  110. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  111. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  112. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  113. package/.next/server/app/settings.html +2 -2
  114. package/.next/server/app/settings.rsc +3 -3
  115. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  116. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  117. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  118. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  119. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  120. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  121. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/tasks.html +2 -2
  124. package/.next/server/app/tasks.rsc +2 -2
  125. package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
  126. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  127. package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
  128. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  129. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  130. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  131. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  132. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  133. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
  134. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  135. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  136. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  137. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  138. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  139. package/.next/server/middleware-build-manifest.js +3 -3
  140. package/.next/server/pages/404.html +2 -2
  141. package/.next/server/pages/500.html +1 -1
  142. package/.next/static/chunks/{0t9d9b-zcaq99.js → 030.uuu7efnb8.js} +1 -1
  143. package/.next/static/chunks/{04tq6wafedswh.js → 03i86t3.~.8ll.js} +1 -1
  144. package/.next/static/chunks/{0t4lq_r7ytpdx.js → 0je0sy~2psa.e.js} +1 -1
  145. package/.next/static/chunks/0n2_0el9gn13k.css +2 -0
  146. package/.next/static/chunks/{09w1gfxihc0ln.js → 10wwrp2zvsbul.js} +3 -3
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +81 -3
  150. package/package.json +1 -1
  151. package/scripts/topo-avatar-fallback-rotate-test.mjs +92 -0
  152. package/scripts/topo-avatar-rotate-test.mjs +85 -0
  153. package/.next/static/chunks/12cfmurz2ql_d.css +0 -2
  154. /package/.next/static/{nNeBFMu2k_RdAeJSwv04h → U1vNDIvDsljKqTiX3VDnp}/_buildManifest.js +0 -0
  155. /package/.next/static/{nNeBFMu2k_RdAeJSwv04h → U1vNDIvDsljKqTiX3VDnp}/_clientMiddlewareManifest.js +0 -0
  156. /package/.next/static/{nNeBFMu2k_RdAeJSwv04h → U1vNDIvDsljKqTiX3VDnp}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":276,"timestamp":235240514372,"id":4,"parentId":1,"tags":{},"startTime":1779043212761,"traceId":"fb09a1d7d8163943"},{"name":"load-custom-routes","duration":537,"timestamp":235240514795,"id":5,"parentId":1,"tags":{},"startTime":1779043212761,"traceId":"fb09a1d7d8163943"},{"name":"create-dist-dir","duration":773,"timestamp":235240515379,"id":6,"parentId":1,"tags":{},"startTime":1779043212762,"traceId":"fb09a1d7d8163943"},{"name":"clean","duration":36597,"timestamp":235240516963,"id":7,"parentId":1,"tags":{},"startTime":1779043212763,"traceId":"fb09a1d7d8163943"},{"name":"discover-routes","duration":30706,"timestamp":235240643593,"id":8,"parentId":1,"tags":{},"startTime":1779043212890,"traceId":"fb09a1d7d8163943"},{"name":"create-root-mapping","duration":126,"timestamp":235240674362,"id":9,"parentId":1,"tags":{},"startTime":1779043212921,"traceId":"fb09a1d7d8163943"},{"name":"generate-route-types","duration":21138,"timestamp":235240677261,"id":10,"parentId":1,"tags":{},"startTime":1779043212924,"traceId":"fb09a1d7d8163943"},{"name":"public-dir-conflict-check","duration":114,"timestamp":235240698503,"id":11,"parentId":1,"tags":{},"startTime":1779043212945,"traceId":"fb09a1d7d8163943"},{"name":"generate-routes-manifest","duration":5134,"timestamp":235240698746,"id":12,"parentId":1,"tags":{},"startTime":1779043212945,"traceId":"fb09a1d7d8163943"},{"name":"run-turbopack","duration":6433874,"timestamp":235240709196,"id":14,"parentId":1,"tags":{},"startTime":1779043212955,"traceId":"fb09a1d7d8163943"},{"name":"turbopack-build-events","duration":87,"timestamp":235241007865,"id":15,"parentId":1,"tags":{},"startTime":1779043213254,"traceId":"fb09a1d7d8163943"},{"name":"run-typescript","duration":9748244,"timestamp":235247152550,"id":16,"parentId":1,"tags":{},"startTime":1779043219399,"traceId":"fb09a1d7d8163943"},{"name":"generate-required-server-files","duration":2557,"timestamp":235256902261,"id":18,"parentId":1,"tags":{},"startTime":1779043229149,"traceId":"fb09a1d7d8163943"},{"name":"check-static-error-page","duration":14009,"timestamp":235257089626,"id":20,"parentId":19,"tags":{},"startTime":1779043229336,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":427803,"timestamp":235257108452,"id":65,"parentId":22,"tags":{},"startTime":1779043229355,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":443914,"timestamp":235257092509,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779043229339,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":538340,"timestamp":235257109631,"id":71,"parentId":30,"tags":{},"startTime":1779043229356,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":552618,"timestamp":235257095467,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779043229342,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":557450,"timestamp":235257109703,"id":72,"parentId":32,"tags":{},"startTime":1779043229356,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":571472,"timestamp":235257095762,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779043229342,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":572797,"timestamp":235257108570,"id":66,"parentId":25,"tags":{},"startTime":1779043229355,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":586614,"timestamp":235257094836,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779043229341,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":582556,"timestamp":235257109141,"id":69,"parentId":28,"tags":{},"startTime":1779043229355,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":596528,"timestamp":235257095243,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779043229342,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":582568,"timestamp":235257109455,"id":70,"parentId":29,"tags":{},"startTime":1779043229356,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":596717,"timestamp":235257095355,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779043229342,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":583991,"timestamp":235257111109,"id":73,"parentId":33,"tags":{},"startTime":1779043229357,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":599223,"timestamp":235257095933,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779043229342,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":588947,"timestamp":235257111318,"id":77,"parentId":37,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":603554,"timestamp":235257096763,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779043229343,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":594772,"timestamp":235257111341,"id":78,"parentId":38,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":609264,"timestamp":235257096919,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779043229343,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":606147,"timestamp":235257111358,"id":79,"parentId":39,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":620504,"timestamp":235257097051,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779043229343,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":611611,"timestamp":235257111218,"id":74,"parentId":34,"tags":{},"startTime":1779043229357,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":626812,"timestamp":235257096063,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779043229342,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":611796,"timestamp":235257111257,"id":75,"parentId":35,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":626927,"timestamp":235257096161,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779043229342,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":612588,"timestamp":235257111285,"id":76,"parentId":36,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":627349,"timestamp":235257096580,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779043229343,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":614073,"timestamp":235257111374,"id":80,"parentId":40,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":628329,"timestamp":235257097160,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779043229343,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":618313,"timestamp":235257112077,"id":84,"parentId":46,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":632289,"timestamp":235257098142,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779043229344,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":631818,"timestamp":235257108798,"id":68,"parentId":27,"tags":{},"startTime":1779043229355,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":645552,"timestamp":235257095122,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779043229341,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":632717,"timestamp":235257108124,"id":64,"parentId":21,"tags":{},"startTime":1779043229354,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":649836,"timestamp":235257091051,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779043229337,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":628964,"timestamp":235257112096,"id":85,"parentId":47,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":640936,"timestamp":235257100156,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779043229346,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":629852,"timestamp":235257111386,"id":81,"parentId":42,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":643763,"timestamp":235257097518,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779043229344,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":632145,"timestamp":235257112046,"id":83,"parentId":45,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":646193,"timestamp":235257098041,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779043229344,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":638740,"timestamp":235257108704,"id":67,"parentId":26,"tags":{},"startTime":1779043229355,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":652468,"timestamp":235257095016,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779043229341,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":632430,"timestamp":235257115974,"id":90,"parentId":24,"tags":{},"startTime":1779043229362,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":655530,"timestamp":235257092917,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779043229339,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":637051,"timestamp":235257112157,"id":89,"parentId":51,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":648657,"timestamp":235257100596,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779043229347,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":637384,"timestamp":235257112140,"id":88,"parentId":50,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":649022,"timestamp":235257100544,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779043229347,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":637064,"timestamp":235257117170,"id":91,"parentId":31,"tags":{},"startTime":1779043229363,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":658733,"timestamp":235257095543,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779043229342,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":639916,"timestamp":235257120551,"id":93,"parentId":43,"tags":{},"startTime":1779043229367,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":662872,"timestamp":235257097641,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779043229344,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":649242,"timestamp":235257111402,"id":82,"parentId":44,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":662799,"timestamp":235257097876,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779043229344,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":644459,"timestamp":235257119234,"id":92,"parentId":41,"tags":{},"startTime":1779043229366,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":666481,"timestamp":235257097256,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779043229344,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":694946,"timestamp":235257112113,"id":86,"parentId":48,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":706813,"timestamp":235257100329,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779043229347,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":718114,"timestamp":235257123100,"id":96,"parentId":53,"tags":{},"startTime":1779043229369,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":740308,"timestamp":235257100984,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779043229347,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":733186,"timestamp":235257112128,"id":87,"parentId":49,"tags":{},"startTime":1779043229358,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":744909,"timestamp":235257100472,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779043229347,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":725238,"timestamp":235257123132,"id":98,"parentId":55,"tags":{},"startTime":1779043229369,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":746998,"timestamp":235257101424,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779043229348,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":729781,"timestamp":235257123159,"id":100,"parentId":58,"tags":{},"startTime":1779043229369,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":750851,"timestamp":235257102212,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779043229348,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":731223,"timestamp":235257123292,"id":101,"parentId":59,"tags":{},"startTime":1779043229370,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":752204,"timestamp":235257102357,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779043229349,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":736702,"timestamp":235257123318,"id":102,"parentId":61,"tags":{},"startTime":1779043229370,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":757221,"timestamp":235257102861,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779043229349,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":738271,"timestamp":235257123350,"id":104,"parentId":63,"tags":{},"startTime":1779043229370,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":758478,"timestamp":235257103183,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779043229349,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":740402,"timestamp":235257123334,"id":103,"parentId":62,"tags":{},"startTime":1779043229370,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":760770,"timestamp":235257103029,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779043229349,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":734948,"timestamp":235257132932,"id":105,"parentId":60,"tags":{},"startTime":1779043229379,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":765463,"timestamp":235257102475,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779043229349,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":719447,"timestamp":235257148650,"id":106,"parentId":57,"tags":{},"startTime":1779043229395,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":766341,"timestamp":235257101788,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779043229348,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":754819,"timestamp":235257123085,"id":95,"parentId":52,"tags":{},"startTime":1779043229369,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":777082,"timestamp":235257100870,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779043229347,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":755864,"timestamp":235257123052,"id":94,"parentId":23,"tags":{},"startTime":1779043229369,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":786227,"timestamp":235257092731,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779043229339,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":770412,"timestamp":235257123117,"id":97,"parentId":54,"tags":{},"startTime":1779043229369,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":792366,"timestamp":235257101215,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779043229347,"traceId":"fb09a1d7d8163943"},{"name":"is-page-static","duration":772944,"timestamp":235257123144,"id":99,"parentId":56,"tags":{},"startTime":1779043229369,"traceId":"fb09a1d7d8163943"},{"name":"check-page","duration":794502,"timestamp":235257101618,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779043229348,"traceId":"fb09a1d7d8163943"},{"name":"static-check","duration":807553,"timestamp":235257088613,"id":19,"parentId":1,"tags":{},"startTime":1779043229335,"traceId":"fb09a1d7d8163943"}]
2
- [{"name":"write-routes-manifest","duration":730,"timestamp":235257911518,"id":108,"parentId":1,"tags":{},"startTime":1779043230158,"traceId":"fb09a1d7d8163943"},{"name":"load-dotenv","duration":72,"timestamp":235257931610,"id":111,"parentId":110,"tags":{},"startTime":1779043230178,"traceId":"fb09a1d7d8163943"},{"name":"run-export-path-map","duration":1303,"timestamp":235257936360,"id":112,"parentId":110,"tags":{},"startTime":1779043230183,"traceId":"fb09a1d7d8163943"},{"name":"next-export","duration":652116,"timestamp":235257927820,"id":110,"parentId":1,"tags":{},"startTime":1779043230174,"traceId":"fb09a1d7d8163943"},{"name":"move-exported-app-not-found-","duration":547,"timestamp":235258584182,"id":113,"parentId":109,"tags":{},"startTime":1779043230830,"traceId":"fb09a1d7d8163943"},{"name":"move-exported-app-global-error-","duration":372,"timestamp":235258584834,"id":114,"parentId":109,"tags":{},"startTime":1779043230831,"traceId":"fb09a1d7d8163943"},{"name":"static-generation","duration":669083,"timestamp":235257918134,"id":109,"parentId":1,"tags":{},"startTime":1779043230164,"traceId":"fb09a1d7d8163943"},{"name":"write-routes-manifest","duration":538,"timestamp":235258587545,"id":115,"parentId":1,"tags":{},"startTime":1779043230834,"traceId":"fb09a1d7d8163943"},{"name":"print-tree-view","duration":5793,"timestamp":235258613434,"id":116,"parentId":1,"tags":{},"startTime":1779043230860,"traceId":"fb09a1d7d8163943"},{"name":"write-route-bundle-stats","duration":11997,"timestamp":235258619264,"id":117,"parentId":1,"tags":{},"startTime":1779043230866,"traceId":"fb09a1d7d8163943"},{"name":"telemetry-flush","duration":29412,"timestamp":235258631292,"id":118,"parentId":1,"tags":{},"startTime":1779043230878,"traceId":"fb09a1d7d8163943"},{"name":"next-build","duration":18197204,"timestamp":235240463539,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779043212710,"traceId":"fb09a1d7d8163943"}]
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"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6433874,"timestamp":235240709196,"id":14,"parentId":1,"tags":{},"startTime":1779043212955,"traceId":"fb09a1d7d8163943"},{"name":"turbopack-build-events","duration":87,"timestamp":235241007865,"id":15,"parentId":1,"tags":{},"startTime":1779043213254,"traceId":"fb09a1d7d8163943"},{"name":"run-typescript","duration":9748244,"timestamp":235247152550,"id":16,"parentId":1,"tags":{},"startTime":1779043219399,"traceId":"fb09a1d7d8163943"},{"name":"static-check","duration":807553,"timestamp":235257088613,"id":19,"parentId":1,"tags":{},"startTime":1779043229335,"traceId":"fb09a1d7d8163943"},{"name":"static-generation","duration":669083,"timestamp":235257918134,"id":109,"parentId":1,"tags":{},"startTime":1779043230164,"traceId":"fb09a1d7d8163943"},{"name":"telemetry-flush","duration":29412,"timestamp":235258631292,"id":118,"parentId":1,"tags":{},"startTime":1779043230878,"traceId":"fb09a1d7d8163943"},{"name":"next-build","duration":18197204,"timestamp":235240463539,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779043212710,"traceId":"fb09a1d7d8163943"}]
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"}]
@@ -9344,9 +9344,56 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9344
9344
  preserveAspectRatio="xMidYMid meet"
9345
9345
  data-node-avatar={session.alias}
9346
9346
  data-node-avatar-hovered={isAvatarHovered ? 'true' : 'false'}
9347
+ data-node-avatar-rotate={isAvatarHovered ? '3' : '0'}
9347
9348
  style={{
9349
+ /* R600 milestone — node vendor avatar gains
9350
+ hover-rotate-3 via Tailwind v4 individual
9351
+ `rotate` CSS property. 6th anchor in hover-
9352
+ rotate idiom (R350 reset / R547 pill × /
9353
+ R549 brand logo / R576 fullscreen / R599
9354
+ runtime badge / R600 node avatar).
9355
+
9356
+ Same +3° "wobble awake" tilt as R576
9357
+ fullscreen + R599 runtime badge — the
9358
+ vendor logo (Claude/OpenAI/etc.) at the
9359
+ center of every node gently tilts under
9360
+ cursor. Most visible per-node element gains
9361
+ a rotation signal on top of R501's
9362
+ brightness lift.
9363
+
9364
+ transform-origin pinned to the node center
9365
+ (pos.x, pos.y) so the logo rotates around
9366
+ its own visual centre, not the <image>
9367
+ element's default bbox top-left.
9368
+
9369
+ Per-node hover signature now 11 axes:
9370
+ R26 group translateY -2px
9371
+ R217 stroke tint
9372
+ R142 drop-shadow boost
9373
+ R427 alias letter-spacing
9374
+ R428 sub-text letter-spacing
9375
+ R429 body opacity 0.94 → 1.0
9376
+ R430 hub-spoke α+
9377
+ R435 hub-spoke sw+
9378
+ R438 status-ring sw +0.5
9379
+ R584 status-ring brightness(1.15)
9380
+ R600 avatar rotate 0 → 3deg ← this round
9381
+
9382
+ Hover-rotate idiom family (6 anchors):
9383
+ R350 chrome reset icon -8°
9384
+ R547 chip pill × close (rotate)
9385
+ R549 brand 书生 logo (rotate)
9386
+ R576 chrome fullscreen icon +3°
9387
+ R599 node runtime badge +3°
9388
+ R600 node vendor avatar +3° ← milestone
9389
+
9390
+ transition list extends 'rotate 200ms
9391
+ ease-out' alongside the existing 'filter
9392
+ 200ms ease-out' — both axes ride one beat. */
9393
+ rotate: isAvatarHovered ? '3deg' : '0deg',
9394
+ transformOrigin: `${pos.x}px ${pos.y}px`,
9348
9395
  filter: isAvatarHovered ? 'brightness(1.15)' : undefined,
9349
- transition: 'filter 200ms ease-out',
9396
+ transition: 'filter 200ms ease-out, rotate 200ms ease-out',
9350
9397
  }}
9351
9398
  />
9352
9399
  );
@@ -9397,9 +9444,25 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9397
9444
  <g
9398
9445
  data-node-avatar-monogram={session.alias}
9399
9446
  data-node-avatar-monogram-hovered={isAvatarFallbackHovered ? 'true' : 'false'}
9447
+ data-node-avatar-monogram-rotate={isAvatarFallbackHovered ? '3' : '0'}
9400
9448
  style={{
9449
+ /* R601 — vendor-monogram fallback gains hover-
9450
+ rotate-3 mirroring R600's image-branch
9451
+ closure. Per-node avatar rotate coverage
9452
+ now 2/3 (image R600, monogram R601 here;
9453
+ prefix-group fallback completes 3/3 below).
9454
+ Same R558 closure-of-arc semantics applied
9455
+ to the rotate axis — what brightness did
9456
+ for the avatar 3-branch arc (R501 image +
9457
+ R558 monogram + R558 fallback), rotate
9458
+ now does (R600 + R601 monogram + R601
9459
+ fallback).
9460
+ transform-origin pinned to node center
9461
+ (pos.x, pos.y) — same idiom as R600. */
9462
+ rotate: isAvatarFallbackHovered ? '3deg' : '0deg',
9463
+ transformOrigin: `${pos.x}px ${pos.y}px`,
9401
9464
  filter: isAvatarFallbackHovered ? 'brightness(1.15)' : undefined,
9402
- transition: 'filter 200ms ease-out',
9465
+ transition: 'filter 200ms ease-out, rotate 200ms ease-out',
9403
9466
  }}
9404
9467
  >
9405
9468
  <circle cx={pos.x} cy={pos.y} r={ar} fill={vendor.mono.bg} stroke={vendor.mono.ring} strokeWidth="1.5" />
@@ -9443,9 +9506,24 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
9443
9506
  <g
9444
9507
  data-node-avatar-fallback={session.alias}
9445
9508
  data-node-avatar-fallback-hovered={isAvatarFallbackHovered ? 'true' : 'false'}
9509
+ data-node-avatar-fallback-rotate={isAvatarFallbackHovered ? '3' : '0'}
9446
9510
  style={{
9511
+ /* R601 — prefix-group hue-hashed initial fallback
9512
+ gains hover-rotate-3 closing per-node avatar
9513
+ rotate coverage at 3/3 branches (image R600 +
9514
+ monogram R601 + fallback R601 here).
9515
+ Same idiom across all 3 branches: rotate 3deg
9516
+ on hover, transform-origin pinned to node
9517
+ center, transition 'rotate 200ms ease-out'
9518
+ alongside the existing 'filter 200ms' filter
9519
+ transition from R558. Whatever the vendor-
9520
+ detection branch resolves to (image / monogram
9521
+ / hue-hashed initial), the user gets the same
9522
+ +3° wobble-awake gesture on alias hover. */
9523
+ rotate: isAvatarFallbackHovered ? '3deg' : '0deg',
9524
+ transformOrigin: `${pos.x}px ${pos.y}px`,
9447
9525
  filter: isAvatarFallbackHovered ? 'brightness(1.15)' : undefined,
9448
- transition: 'filter 200ms ease-out',
9526
+ transition: 'filter 200ms ease-out, rotate 200ms ease-out',
9449
9527
  }}
9450
9528
  >
9451
9529
  <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.113",
3
+ "version": "0.5.3-preview.115",
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,92 @@
1
+ /* Round 601 — extends R600 hover-rotate-3 to the 2 avatar
2
+ * fallback branches (vendor monogram + prefix-group initial),
3
+ * closing per-node avatar rotate coverage at 3/3 branches.
4
+ * Same R558 brightness-coverage closure pattern, now for rotate.
5
+ *
6
+ * Test phases:
7
+ * 1. mock node with non-vendor-logo runtime → monogram branch
8
+ * renders OR fallback branch renders (depends on vendor map)
9
+ * 2. rest: rotate='0deg' or 'none', rotate-attr='0'
10
+ * 3. computed transition-property contains 'rotate'
11
+ * 4. transform-origin set to node center coords
12
+ * 5. source: rotate conditional on BOTH branch elements
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
+ // Use an unknown vendor model to force fallback branch render
35
+ await route.fulfill({ response: r, json: { ...b, sessions: [
36
+ { alias: 'unknown·1', status: 'idle', model: 'mystery-model-3000',
37
+ runtime: 'claude-code-cli', network_id: nid, project_dir: null,
38
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh },
39
+ { alias: 'unknown·2', status: 'idle', model: 'mystery-model-3000',
40
+ runtime: 'claude-code-cli', network_id: nid, project_dir: null,
41
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh },
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
+ // Either monogram or fallback should render based on vendor resolution
49
+ await page.waitForSelector('[data-node-avatar-fallback-rotate], [data-node-avatar-monogram-rotate]', { timeout: 15000, state: 'attached' });
50
+ await page.waitForTimeout(500);
51
+
52
+ const rest = await page.evaluate(() => {
53
+ const fallback = document.querySelector('[data-node-avatar-fallback-rotate]');
54
+ const monogram = document.querySelector('[data-node-avatar-monogram-rotate]');
55
+ const el = fallback || monogram;
56
+ if (!el) return null;
57
+ const cs = getComputedStyle(el);
58
+ return {
59
+ branch: fallback ? 'fallback' : 'monogram',
60
+ rotate: cs.rotate,
61
+ transformOrigin: cs.transformOrigin,
62
+ transitionProperty: cs.transitionProperty,
63
+ rotateAttr: el.getAttribute('data-node-avatar-fallback-rotate') || el.getAttribute('data-node-avatar-monogram-rotate'),
64
+ hoveredAttr: el.getAttribute('data-node-avatar-fallback-hovered') || el.getAttribute('data-node-avatar-monogram-hovered'),
65
+ };
66
+ });
67
+
68
+ await browser.close();
69
+
70
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
71
+ const sourceMonogramRotate = /data-node-avatar-monogram-rotate=\{isAvatarFallbackHovered \? '3' : '0'\}/.test(src);
72
+ const sourceFallbackRotate = /data-node-avatar-fallback-rotate=\{isAvatarFallbackHovered \? '3' : '0'\}/.test(src);
73
+ const sourceBothBranches = (src.match(/rotate: isAvatarFallbackHovered \? '3deg' : '0deg'/g) || []).length >= 2;
74
+ const sourceBothTransitions = (src.match(/transition: 'filter 200ms ease-out, rotate 200ms ease-out'/g) || []).length >= 3;
75
+
76
+ const results = {
77
+ branch_present: !!rest,
78
+ rest_rotate_zero: rest?.rotate === 'none' || rest?.rotate === '0deg',
79
+ rest_rotate_attr: rest?.rotateAttr === '0',
80
+ rest_hovered_false: rest?.hoveredAttr === 'false',
81
+ has_transform_origin: !!rest?.transformOrigin && rest.transformOrigin !== '',
82
+ transition_has_rotate: /rotate/.test(rest?.transitionProperty || ''),
83
+ source_monogram_rotate: sourceMonogramRotate,
84
+ source_fallback_rotate: sourceFallbackRotate,
85
+ source_both_branches: sourceBothBranches,
86
+ source_both_transitions: sourceBothTransitions,
87
+ };
88
+ const ok = Object.values(results).every(Boolean);
89
+ console.log(`${ok ? '✅' : '❌'} R601 avatar fallback rotate (3/3 branches closure):`,
90
+ JSON.stringify(results, null, 2),
91
+ `\n rest: ${JSON.stringify(rest)}`);
92
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,85 @@
1
+ /* Round 600 milestone — node vendor avatar gains hover-rotate-3
2
+ * via CSS individual `rotate` property. 6th anchor in hover-
3
+ * rotate idiom. Brings per-node hover signature to 11 axes.
4
+ *
5
+ * Test phases:
6
+ * 1. mock 2 idle nodes → avatar <image> renders
7
+ * 2. rest: rotate='0deg' or 'none', rotate-attr='0'
8
+ * 3. computed transition-property contains 'rotate'
9
+ * 4. transform-origin set to node center coords
10
+ * 5. source: rotate conditional + data-attr + transition extension
11
+ */
12
+ import { chromium } from 'playwright';
13
+ import { readFileSync } from 'node:fs';
14
+
15
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
16
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
17
+
18
+ const browser = await chromium.launch({ headless: true });
19
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
20
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
21
+ await ctx.addInitScript(() => {
22
+ try {
23
+ localStorage.setItem('anet-theme', 'cyber');
24
+ localStorage.setItem('anet-topo-layout', 'ring');
25
+ sessionStorage.setItem('anet_v3_auth', '1');
26
+ } catch {}
27
+ });
28
+ await ctx.route('**/api/hub/status*', async (route) => {
29
+ const r = await route.fetch();
30
+ const b = await r.json();
31
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
32
+ const mk = (alias) => ({
33
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
34
+ network_id: nid, project_dir: null,
35
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
36
+ });
37
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
38
+ });
39
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
40
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
41
+ const page = await ctx.newPage();
42
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
43
+ await page.waitForSelector('[data-node-avatar-rotate]', { timeout: 15000, state: 'attached' });
44
+ await page.waitForTimeout(500);
45
+
46
+ const rest = await page.evaluate(() => {
47
+ const el = document.querySelector('[data-node-avatar-rotate]');
48
+ if (!el) return null;
49
+ const cs = getComputedStyle(el);
50
+ return {
51
+ rotate: cs.rotate,
52
+ transformOrigin: cs.transformOrigin,
53
+ transitionProperty: cs.transitionProperty,
54
+ rotateAttr: el.getAttribute('data-node-avatar-rotate'),
55
+ hoveredAttr: el.getAttribute('data-node-avatar-hovered'),
56
+ alias: el.getAttribute('data-node-avatar'),
57
+ };
58
+ });
59
+
60
+ await browser.close();
61
+
62
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
63
+ const sourceRotate = /rotate: isAvatarHovered \? '3deg' : '0deg'/.test(src);
64
+ const sourceAttr = /data-node-avatar-rotate=\{isAvatarHovered \? '3' : '0'\}/.test(src);
65
+ const sourceTransformOrigin = /transformOrigin: `\$\{pos\.x\}px \$\{pos\.y\}px`/.test(src);
66
+ const sourceTransition = /transition: 'filter 200ms ease-out, rotate 200ms ease-out'/.test(src);
67
+
68
+ const results = {
69
+ avatar_present: !!rest,
70
+ rest_rotate_zero: rest?.rotate === 'none' || rest?.rotate === '0deg',
71
+ rest_rotate_attr: rest?.rotateAttr === '0',
72
+ rest_hovered_false: rest?.hoveredAttr === 'false',
73
+ has_transform_origin: !!rest?.transformOrigin && rest.transformOrigin !== '',
74
+ has_alias: !!rest?.alias,
75
+ transition_has_rotate: /rotate/.test(rest?.transitionProperty || ''),
76
+ source_rotate: sourceRotate,
77
+ source_attr: sourceAttr,
78
+ source_transform_origin: sourceTransformOrigin,
79
+ source_transition: sourceTransition,
80
+ };
81
+ const ok = Object.values(results).every(Boolean);
82
+ console.log(`${ok ? '✅' : '❌'} R600 MILESTONE — node avatar rotate (6th hover-rotate anchor, 11-axis per-node):`,
83
+ JSON.stringify(results, null, 2),
84
+ `\n rest: ${JSON.stringify(rest)}`);
85
+ process.exit(ok ? 0 : 1);