@sleep2agi/agent-network-dashboard 0.4.6-preview.301 → 0.4.6-preview.302

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 (150) 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 +4 -4
  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/agent-network-dashboard_09kk21a._.js +3 -3
  121. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  123. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  126. package/.next/server/middleware-build-manifest.js +3 -3
  127. package/.next/server/pages/404.html +1 -1
  128. package/.next/server/pages/500.html +1 -1
  129. package/.next/static/chunks/{0hrgzg.5syv8j.js → 0ehuc_f4cak7s.js} +1 -1
  130. package/.next/static/chunks/{03mk4d5n52iri.js → 0n62tt-qplf43.js} +1 -1
  131. package/.next/static/chunks/0zpcsfbs7uhtz.js +4 -0
  132. package/.next/trace +2 -2
  133. package/.next/trace-build +1 -1
  134. package/app/components/TopoGraph.tsx +44 -105
  135. package/app/lib/vendorIdentity.ts +14 -3
  136. package/package.json +1 -1
  137. package/public/sleep2agi-logo.svg +11 -0
  138. package/public/vendors/claude.svg +11 -0
  139. package/public/vendors/minimax.svg +11 -0
  140. package/public/vendors/openai.svg +12 -0
  141. package/screenshots/r293-p0/after-full.png +0 -0
  142. package/screenshots/r293-p0/after-topo.png +0 -0
  143. package/scripts/topo-brand-watermark-test.mjs +4 -13
  144. package/scripts/topo-pulse-dot-retired-test.mjs +86 -0
  145. package/scripts/topo-watermark-tracking-test.mjs +3 -6
  146. package/.next/static/chunks/0rr~8~s13xsw2.js +0 -4
  147. package/scripts/r293-debug.mjs +0 -19
  148. /package/.next/static/{1doIiYlcqirZ60kZuY_8H → 0BmnN0ymLosBwzXKsQ8bO}/_buildManifest.js +0 -0
  149. /package/.next/static/{1doIiYlcqirZ60kZuY_8H → 0BmnN0ymLosBwzXKsQ8bO}/_clientMiddlewareManifest.js +0 -0
  150. /package/.next/static/{1doIiYlcqirZ60kZuY_8H → 0BmnN0ymLosBwzXKsQ8bO}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":372,"timestamp":109920012993,"id":4,"parentId":1,"tags":{},"startTime":1778917892259,"traceId":"ba59732e30055745"},{"name":"load-custom-routes","duration":633,"timestamp":109920013571,"id":5,"parentId":1,"tags":{},"startTime":1778917892260,"traceId":"ba59732e30055745"},{"name":"create-dist-dir","duration":726,"timestamp":109920014259,"id":6,"parentId":1,"tags":{},"startTime":1778917892261,"traceId":"ba59732e30055745"},{"name":"clean","duration":31659,"timestamp":109920015757,"id":7,"parentId":1,"tags":{},"startTime":1778917892262,"traceId":"ba59732e30055745"},{"name":"discover-routes","duration":26056,"timestamp":109920135738,"id":8,"parentId":1,"tags":{},"startTime":1778917892382,"traceId":"ba59732e30055745"},{"name":"create-root-mapping","duration":190,"timestamp":109920161883,"id":9,"parentId":1,"tags":{},"startTime":1778917892408,"traceId":"ba59732e30055745"},{"name":"generate-route-types","duration":22000,"timestamp":109920165233,"id":10,"parentId":1,"tags":{},"startTime":1778917892412,"traceId":"ba59732e30055745"},{"name":"public-dir-conflict-check","duration":133,"timestamp":109920187325,"id":11,"parentId":1,"tags":{},"startTime":1778917892434,"traceId":"ba59732e30055745"},{"name":"generate-routes-manifest","duration":5803,"timestamp":109920187643,"id":12,"parentId":1,"tags":{},"startTime":1778917892434,"traceId":"ba59732e30055745"},{"name":"run-turbopack","duration":6115621,"timestamp":109920210109,"id":14,"parentId":1,"tags":{},"startTime":1778917892456,"traceId":"ba59732e30055745"},{"name":"turbopack-build-events","duration":74,"timestamp":109920524123,"id":15,"parentId":1,"tags":{},"startTime":1778917892770,"traceId":"ba59732e30055745"},{"name":"run-typescript","duration":9403054,"timestamp":109926338542,"id":16,"parentId":1,"tags":{},"startTime":1778917898585,"traceId":"ba59732e30055745"},{"name":"generate-required-server-files","duration":1959,"timestamp":109935742472,"id":18,"parentId":1,"tags":{},"startTime":1778917907989,"traceId":"ba59732e30055745"},{"name":"check-static-error-page","duration":14808,"timestamp":109935926902,"id":20,"parentId":19,"tags":{},"startTime":1778917908173,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":487567,"timestamp":109935944728,"id":63,"parentId":22,"tags":{},"startTime":1778917908191,"traceId":"ba59732e30055745"},{"name":"check-page","duration":502299,"timestamp":109935930155,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778917908176,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":534943,"timestamp":109935944374,"id":62,"parentId":21,"tags":{},"startTime":1778917908191,"traceId":"ba59732e30055745"},{"name":"check-page","duration":550884,"timestamp":109935928520,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778917908175,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":583868,"timestamp":109935945413,"id":67,"parentId":28,"tags":{},"startTime":1778917908192,"traceId":"ba59732e30055745"},{"name":"check-page","duration":595513,"timestamp":109935933849,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778917908180,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":590322,"timestamp":109935945993,"id":71,"parentId":33,"tags":{},"startTime":1778917908192,"traceId":"ba59732e30055745"},{"name":"check-page","duration":601658,"timestamp":109935934733,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778917908181,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":605242,"timestamp":109935945724,"id":69,"parentId":30,"tags":{},"startTime":1778917908192,"traceId":"ba59732e30055745"},{"name":"check-page","duration":616891,"timestamp":109935934176,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778917908180,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":625779,"timestamp":109935945577,"id":68,"parentId":29,"tags":{},"startTime":1778917908192,"traceId":"ba59732e30055745"},{"name":"check-page","duration":637437,"timestamp":109935933996,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778917908180,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":625643,"timestamp":109935946096,"id":72,"parentId":34,"tags":{},"startTime":1778917908192,"traceId":"ba59732e30055745"},{"name":"check-page","duration":636881,"timestamp":109935934891,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778917908181,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":631766,"timestamp":109935946125,"id":73,"parentId":35,"tags":{},"startTime":1778917908192,"traceId":"ba59732e30055745"},{"name":"check-page","duration":642882,"timestamp":109935935068,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778917908181,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":633437,"timestamp":109935944852,"id":64,"parentId":25,"tags":{},"startTime":1778917908191,"traceId":"ba59732e30055745"},{"name":"check-page","duration":644963,"timestamp":109935933373,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778917908180,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":641848,"timestamp":109935946261,"id":75,"parentId":37,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":652382,"timestamp":109935935776,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778917908182,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":650590,"timestamp":109935945917,"id":70,"parentId":32,"tags":{},"startTime":1778917908192,"traceId":"ba59732e30055745"},{"name":"check-page","duration":661976,"timestamp":109935934583,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778917908181,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":653378,"timestamp":109935946231,"id":74,"parentId":36,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":664077,"timestamp":109935935573,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778917908182,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":656254,"timestamp":109935946298,"id":78,"parentId":40,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":666393,"timestamp":109935936210,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778917908182,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":656780,"timestamp":109935946273,"id":76,"parentId":38,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":667148,"timestamp":109935935945,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778917908182,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":659238,"timestamp":109935946312,"id":79,"parentId":41,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":669272,"timestamp":109935936320,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778917908183,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":660998,"timestamp":109935946340,"id":81,"parentId":43,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":672141,"timestamp":109935936562,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778917908183,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":664039,"timestamp":109935946363,"id":83,"parentId":45,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":673676,"timestamp":109935936794,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778917908183,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":665414,"timestamp":109935946376,"id":84,"parentId":46,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":674916,"timestamp":109935936913,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778917908183,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":667434,"timestamp":109935946324,"id":80,"parentId":42,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":677354,"timestamp":109935936443,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778917908183,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":671669,"timestamp":109935946354,"id":82,"parentId":44,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":681395,"timestamp":109935936669,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778917908183,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":673089,"timestamp":109935946389,"id":85,"parentId":47,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":682464,"timestamp":109935937064,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778917908183,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":673413,"timestamp":109935946286,"id":77,"parentId":39,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":683642,"timestamp":109935936092,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778917908182,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":674272,"timestamp":109935946401,"id":86,"parentId":48,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":683526,"timestamp":109935937189,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778917908183,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":678542,"timestamp":109935944970,"id":65,"parentId":26,"tags":{},"startTime":1778917908191,"traceId":"ba59732e30055745"},{"name":"check-page","duration":690000,"timestamp":109935933557,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778917908180,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":671327,"timestamp":109935954755,"id":88,"parentId":24,"tags":{},"startTime":1778917908201,"traceId":"ba59732e30055745"},{"name":"check-page","duration":695410,"timestamp":109935930718,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778917908177,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":651002,"timestamp":109935975351,"id":89,"parentId":31,"tags":{},"startTime":1778917908222,"traceId":"ba59732e30055745"},{"name":"check-page","duration":692077,"timestamp":109935934312,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778917908181,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":682062,"timestamp":109935946410,"id":87,"parentId":49,"tags":{},"startTime":1778917908193,"traceId":"ba59732e30055745"},{"name":"check-page","duration":691215,"timestamp":109935937306,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778917908184,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":641683,"timestamp":109935992974,"id":94,"parentId":53,"tags":{},"startTime":1778917908239,"traceId":"ba59732e30055745"},{"name":"check-page","duration":696360,"timestamp":109935938517,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778917908185,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":647315,"timestamp":109935996139,"id":96,"parentId":56,"tags":{},"startTime":1778917908242,"traceId":"ba59732e30055745"},{"name":"check-page","duration":703526,"timestamp":109935939971,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778917908186,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":654919,"timestamp":109935996182,"id":97,"parentId":57,"tags":{},"startTime":1778917908242,"traceId":"ba59732e30055745"},{"name":"check-page","duration":710895,"timestamp":109935940253,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778917908187,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":662448,"timestamp":109935996200,"id":98,"parentId":59,"tags":{},"startTime":1778917908242,"traceId":"ba59732e30055745"},{"name":"check-page","duration":717682,"timestamp":109935941016,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778917908187,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":738567,"timestamp":109935945154,"id":66,"parentId":27,"tags":{},"startTime":1778917908191,"traceId":"ba59732e30055745"},{"name":"check-page","duration":750089,"timestamp":109935933701,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778917908180,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":692939,"timestamp":109935992760,"id":91,"parentId":50,"tags":{},"startTime":1778917908239,"traceId":"ba59732e30055745"},{"name":"check-page","duration":748016,"timestamp":109935937768,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778917908184,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":706409,"timestamp":109935992947,"id":93,"parentId":52,"tags":{},"startTime":1778917908239,"traceId":"ba59732e30055745"},{"name":"check-page","duration":761178,"timestamp":109935938233,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778917908185,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":706516,"timestamp":109935992994,"id":95,"parentId":54,"tags":{},"startTime":1778917908239,"traceId":"ba59732e30055745"},{"name":"check-page","duration":760652,"timestamp":109935938892,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778917908185,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":633950,"timestamp":109936065667,"id":101,"parentId":58,"tags":{},"startTime":1778917908312,"traceId":"ba59732e30055745"},{"name":"check-page","duration":759147,"timestamp":109935940501,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778917908187,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":704008,"timestamp":109935996220,"id":99,"parentId":60,"tags":{},"startTime":1778917908242,"traceId":"ba59732e30055745"},{"name":"check-page","duration":759081,"timestamp":109935941199,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778917908187,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":632214,"timestamp":109936081474,"id":102,"parentId":55,"tags":{},"startTime":1778917908328,"traceId":"ba59732e30055745"},{"name":"check-page","duration":774485,"timestamp":109935939247,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778917908186,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":737287,"timestamp":109935992777,"id":92,"parentId":51,"tags":{},"startTime":1778917908239,"traceId":"ba59732e30055745"},{"name":"check-page","duration":792122,"timestamp":109935937998,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778917908184,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":742897,"timestamp":109935992707,"id":90,"parentId":23,"tags":{},"startTime":1778917908239,"traceId":"ba59732e30055745"},{"name":"check-page","duration":805196,"timestamp":109935930464,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778917908177,"traceId":"ba59732e30055745"},{"name":"is-page-static","duration":754689,"timestamp":109935996242,"id":100,"parentId":61,"tags":{},"startTime":1778917908243,"traceId":"ba59732e30055745"},{"name":"check-page","duration":809610,"timestamp":109935941385,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778917908188,"traceId":"ba59732e30055745"},{"name":"static-check","duration":825132,"timestamp":109935925941,"id":19,"parentId":1,"tags":{},"startTime":1778917908172,"traceId":"ba59732e30055745"},{"name":"write-routes-manifest","duration":571,"timestamp":109936759825,"id":104,"parentId":1,"tags":{},"startTime":1778917909006,"traceId":"ba59732e30055745"},{"name":"load-dotenv","duration":86,"timestamp":109936774224,"id":107,"parentId":106,"tags":{},"startTime":1778917909021,"traceId":"ba59732e30055745"},{"name":"run-export-path-map","duration":528,"timestamp":109936777443,"id":108,"parentId":106,"tags":{},"startTime":1778917909024,"traceId":"ba59732e30055745"},{"name":"next-export","duration":591243,"timestamp":109936771838,"id":106,"parentId":1,"tags":{},"startTime":1778917909018,"traceId":"ba59732e30055745"}]
2
- [{"name":"move-exported-app-not-found-","duration":2796,"timestamp":109937366561,"id":109,"parentId":105,"tags":{},"startTime":1778917909613,"traceId":"ba59732e30055745"},{"name":"move-exported-app-global-error-","duration":1316,"timestamp":109937369464,"id":110,"parentId":105,"tags":{},"startTime":1778917909616,"traceId":"ba59732e30055745"},{"name":"static-generation","duration":607313,"timestamp":109936765447,"id":105,"parentId":1,"tags":{},"startTime":1778917909012,"traceId":"ba59732e30055745"},{"name":"write-routes-manifest","duration":410,"timestamp":109937372927,"id":111,"parentId":1,"tags":{},"startTime":1778917909619,"traceId":"ba59732e30055745"},{"name":"print-tree-view","duration":5269,"timestamp":109937385521,"id":112,"parentId":1,"tags":{},"startTime":1778917909632,"traceId":"ba59732e30055745"},{"name":"write-route-bundle-stats","duration":16191,"timestamp":109937390827,"id":113,"parentId":1,"tags":{},"startTime":1778917909637,"traceId":"ba59732e30055745"},{"name":"telemetry-flush","duration":22213,"timestamp":109937407053,"id":114,"parentId":1,"tags":{},"startTime":1778917909653,"traceId":"ba59732e30055745"},{"name":"next-build","duration":17467006,"timestamp":109919962300,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778917892209,"traceId":"ba59732e30055745"}]
1
+ [{"name":"generate-buildid","duration":332,"timestamp":110492042084,"id":4,"parentId":1,"tags":{},"startTime":1778918464288,"traceId":"a2d0bea14db86dbc"},{"name":"load-custom-routes","duration":518,"timestamp":110492042569,"id":5,"parentId":1,"tags":{},"startTime":1778918464289,"traceId":"a2d0bea14db86dbc"},{"name":"create-dist-dir","duration":694,"timestamp":110492043133,"id":6,"parentId":1,"tags":{},"startTime":1778918464289,"traceId":"a2d0bea14db86dbc"},{"name":"clean","duration":36755,"timestamp":110492044516,"id":7,"parentId":1,"tags":{},"startTime":1778918464291,"traceId":"a2d0bea14db86dbc"},{"name":"discover-routes","duration":9436,"timestamp":110492174532,"id":8,"parentId":1,"tags":{},"startTime":1778918464421,"traceId":"a2d0bea14db86dbc"},{"name":"create-root-mapping","duration":173,"timestamp":110492184135,"id":9,"parentId":1,"tags":{},"startTime":1778918464430,"traceId":"a2d0bea14db86dbc"},{"name":"generate-route-types","duration":36188,"timestamp":110492187080,"id":10,"parentId":1,"tags":{},"startTime":1778918464433,"traceId":"a2d0bea14db86dbc"},{"name":"public-dir-conflict-check","duration":111,"timestamp":110492223374,"id":11,"parentId":1,"tags":{},"startTime":1778918464470,"traceId":"a2d0bea14db86dbc"},{"name":"generate-routes-manifest","duration":5633,"timestamp":110492223626,"id":12,"parentId":1,"tags":{},"startTime":1778918464470,"traceId":"a2d0bea14db86dbc"},{"name":"run-turbopack","duration":7231993,"timestamp":110492235394,"id":14,"parentId":1,"tags":{},"startTime":1778918464482,"traceId":"a2d0bea14db86dbc"},{"name":"turbopack-build-events","duration":104,"timestamp":110492540455,"id":15,"parentId":1,"tags":{},"startTime":1778918464787,"traceId":"a2d0bea14db86dbc"},{"name":"run-typescript","duration":10130145,"timestamp":110499475365,"id":16,"parentId":1,"tags":{},"startTime":1778918471722,"traceId":"a2d0bea14db86dbc"},{"name":"generate-required-server-files","duration":3421,"timestamp":110509607055,"id":18,"parentId":1,"tags":{},"startTime":1778918481853,"traceId":"a2d0bea14db86dbc"},{"name":"check-static-error-page","duration":15582,"timestamp":110509843572,"id":20,"parentId":19,"tags":{},"startTime":1778918482090,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":733674,"timestamp":110509862524,"id":62,"parentId":21,"tags":{},"startTime":1778918482109,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":751284,"timestamp":110509845075,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778918482091,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":771933,"timestamp":110509863527,"id":63,"parentId":22,"tags":{},"startTime":1778918482110,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":788818,"timestamp":110509846739,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778918482093,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":863442,"timestamp":110509863926,"id":66,"parentId":27,"tags":{},"startTime":1778918482110,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":876899,"timestamp":110509850543,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778918482097,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":863429,"timestamp":110509864176,"id":67,"parentId":28,"tags":{},"startTime":1778918482110,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":876964,"timestamp":110509850673,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778918482097,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":879230,"timestamp":110509865969,"id":69,"parentId":30,"tags":{},"startTime":1778918482112,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":894355,"timestamp":110509850958,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778918482097,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":881796,"timestamp":110509863816,"id":65,"parentId":26,"tags":{},"startTime":1778918482110,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":895262,"timestamp":110509850405,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778918482097,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":884938,"timestamp":110509866305,"id":73,"parentId":35,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":898747,"timestamp":110509852556,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778918482099,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":895671,"timestamp":110509866427,"id":75,"parentId":37,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":908909,"timestamp":110509853257,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":896784,"timestamp":110509866442,"id":76,"parentId":38,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":909889,"timestamp":110509853400,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":901503,"timestamp":110509866454,"id":77,"parentId":39,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":914518,"timestamp":110509853500,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":917208,"timestamp":110509866279,"id":72,"parentId":34,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":931349,"timestamp":110509852200,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778918482098,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":917272,"timestamp":110509866462,"id":78,"parentId":40,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":930738,"timestamp":110509853593,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":918456,"timestamp":110509866212,"id":71,"parentId":33,"tags":{},"startTime":1778918482112,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":932678,"timestamp":110509852031,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778918482098,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":924375,"timestamp":110509866400,"id":74,"parentId":36,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":937755,"timestamp":110509853066,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778918482099,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":934420,"timestamp":110509866487,"id":80,"parentId":42,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":947236,"timestamp":110509853726,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":939592,"timestamp":110509866517,"id":83,"parentId":45,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":952197,"timestamp":110509853966,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":945026,"timestamp":110509865771,"id":68,"parentId":29,"tags":{},"startTime":1778918482112,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":960091,"timestamp":110509850789,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778918482097,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":947815,"timestamp":110509866506,"id":82,"parentId":44,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":960521,"timestamp":110509853851,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":950584,"timestamp":110509866494,"id":81,"parentId":43,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":963336,"timestamp":110509853793,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":954682,"timestamp":110509866561,"id":87,"parentId":49,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":965294,"timestamp":110509855996,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778918482102,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":958595,"timestamp":110509863695,"id":64,"parentId":25,"tags":{},"startTime":1778918482110,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":972140,"timestamp":110509850196,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778918482096,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":958526,"timestamp":110509866529,"id":84,"parentId":46,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":971016,"timestamp":110509854083,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":949697,"timestamp":110509885772,"id":90,"parentId":23,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":988450,"timestamp":110509847073,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778918482093,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":961730,"timestamp":110509873990,"id":88,"parentId":24,"tags":{},"startTime":1778918482120,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":988349,"timestamp":110509847404,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778918482094,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":969747,"timestamp":110509866154,"id":70,"parentId":32,"tags":{},"startTime":1778918482112,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":984578,"timestamp":110509851353,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778918482098,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":980207,"timestamp":110509866549,"id":86,"parentId":48,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":992496,"timestamp":110509854311,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778918482101,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":982884,"timestamp":110509866537,"id":85,"parentId":47,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":995261,"timestamp":110509854206,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":989844,"timestamp":110509866475,"id":79,"parentId":41,"tags":{},"startTime":1778918482113,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1002711,"timestamp":110509853660,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778918482100,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":983356,"timestamp":110509885806,"id":91,"parentId":50,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1012766,"timestamp":110509856456,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778918482103,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1043528,"timestamp":110509879877,"id":89,"parentId":31,"tags":{},"startTime":1778918482126,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1072379,"timestamp":110509851106,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778918482097,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1037782,"timestamp":110509885889,"id":97,"parentId":57,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1065612,"timestamp":110509858102,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778918482104,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1052528,"timestamp":110509885827,"id":93,"parentId":52,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1081681,"timestamp":110509856749,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778918482103,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1085181,"timestamp":110509885936,"id":100,"parentId":61,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1112319,"timestamp":110509858904,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778918482105,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1133903,"timestamp":110509896382,"id":101,"parentId":58,"tags":{},"startTime":1778918482143,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1172110,"timestamp":110509858259,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778918482105,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1173390,"timestamp":110509885921,"id":99,"parentId":60,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1200666,"timestamp":110509858761,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778918482105,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1173771,"timestamp":110509885819,"id":92,"parentId":51,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1203015,"timestamp":110509856613,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778918482103,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1183675,"timestamp":110509885840,"id":94,"parentId":53,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1212643,"timestamp":110509856937,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778918482103,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1114310,"timestamp":110509955632,"id":102,"parentId":55,"tags":{},"startTime":1778918482202,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1212647,"timestamp":110509857343,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778918482104,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1274319,"timestamp":110509885853,"id":95,"parentId":54,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1303115,"timestamp":110509857132,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778918482103,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1282562,"timestamp":110509885876,"id":96,"parentId":56,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1310609,"timestamp":110509857903,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778918482104,"traceId":"a2d0bea14db86dbc"},{"name":"is-page-static","duration":1337267,"timestamp":110509885902,"id":98,"parentId":59,"tags":{},"startTime":1778918482132,"traceId":"a2d0bea14db86dbc"},{"name":"check-page","duration":1364617,"timestamp":110509858631,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778918482105,"traceId":"a2d0bea14db86dbc"},{"name":"static-check","duration":1380699,"timestamp":110509842597,"id":19,"parentId":1,"tags":{},"startTime":1778918482089,"traceId":"a2d0bea14db86dbc"},{"name":"write-routes-manifest","duration":733,"timestamp":110511234063,"id":104,"parentId":1,"tags":{},"startTime":1778918483480,"traceId":"a2d0bea14db86dbc"},{"name":"load-dotenv","duration":68,"timestamp":110511249508,"id":107,"parentId":106,"tags":{},"startTime":1778918483496,"traceId":"a2d0bea14db86dbc"},{"name":"run-export-path-map","duration":712,"timestamp":110511258090,"id":108,"parentId":106,"tags":{},"startTime":1778918483504,"traceId":"a2d0bea14db86dbc"},{"name":"next-export","duration":775628,"timestamp":110511247825,"id":106,"parentId":1,"tags":{},"startTime":1778918483494,"traceId":"a2d0bea14db86dbc"}]
2
+ [{"name":"move-exported-app-not-found-","duration":3443,"timestamp":110512027377,"id":109,"parentId":105,"tags":{},"startTime":1778918484274,"traceId":"a2d0bea14db86dbc"},{"name":"move-exported-app-global-error-","duration":528,"timestamp":110512030920,"id":110,"parentId":105,"tags":{},"startTime":1778918484277,"traceId":"a2d0bea14db86dbc"},{"name":"static-generation","duration":793487,"timestamp":110511239752,"id":105,"parentId":1,"tags":{},"startTime":1778918483486,"traceId":"a2d0bea14db86dbc"},{"name":"write-routes-manifest","duration":381,"timestamp":110512033389,"id":111,"parentId":1,"tags":{},"startTime":1778918484280,"traceId":"a2d0bea14db86dbc"},{"name":"print-tree-view","duration":4873,"timestamp":110512054759,"id":112,"parentId":1,"tags":{},"startTime":1778918484301,"traceId":"a2d0bea14db86dbc"},{"name":"write-route-bundle-stats","duration":14891,"timestamp":110512059676,"id":113,"parentId":1,"tags":{},"startTime":1778918484306,"traceId":"a2d0bea14db86dbc"},{"name":"telemetry-flush","duration":20663,"timestamp":110512074600,"id":114,"parentId":1,"tags":{},"startTime":1778918484321,"traceId":"a2d0bea14db86dbc"},{"name":"next-build","duration":20107742,"timestamp":110491987564,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778918464234,"traceId":"a2d0bea14db86dbc"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6115621,"timestamp":109920210109,"id":14,"parentId":1,"tags":{},"startTime":1778917892456,"traceId":"ba59732e30055745"},{"name":"turbopack-build-events","duration":74,"timestamp":109920524123,"id":15,"parentId":1,"tags":{},"startTime":1778917892770,"traceId":"ba59732e30055745"},{"name":"run-typescript","duration":9403054,"timestamp":109926338542,"id":16,"parentId":1,"tags":{},"startTime":1778917898585,"traceId":"ba59732e30055745"},{"name":"static-check","duration":825132,"timestamp":109935925941,"id":19,"parentId":1,"tags":{},"startTime":1778917908172,"traceId":"ba59732e30055745"},{"name":"static-generation","duration":607313,"timestamp":109936765447,"id":105,"parentId":1,"tags":{},"startTime":1778917909012,"traceId":"ba59732e30055745"},{"name":"telemetry-flush","duration":22213,"timestamp":109937407053,"id":114,"parentId":1,"tags":{},"startTime":1778917909653,"traceId":"ba59732e30055745"},{"name":"next-build","duration":17467006,"timestamp":109919962300,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778917892209,"traceId":"ba59732e30055745"}]
1
+ [{"name":"run-turbopack","duration":7231993,"timestamp":110492235394,"id":14,"parentId":1,"tags":{},"startTime":1778918464482,"traceId":"a2d0bea14db86dbc"},{"name":"turbopack-build-events","duration":104,"timestamp":110492540455,"id":15,"parentId":1,"tags":{},"startTime":1778918464787,"traceId":"a2d0bea14db86dbc"},{"name":"run-typescript","duration":10130145,"timestamp":110499475365,"id":16,"parentId":1,"tags":{},"startTime":1778918471722,"traceId":"a2d0bea14db86dbc"},{"name":"static-check","duration":1380699,"timestamp":110509842597,"id":19,"parentId":1,"tags":{},"startTime":1778918482089,"traceId":"a2d0bea14db86dbc"},{"name":"static-generation","duration":793487,"timestamp":110511239752,"id":105,"parentId":1,"tags":{},"startTime":1778918483486,"traceId":"a2d0bea14db86dbc"},{"name":"telemetry-flush","duration":20663,"timestamp":110512074600,"id":114,"parentId":1,"tags":{},"startTime":1778918484321,"traceId":"a2d0bea14db86dbc"},{"name":"next-build","duration":20107742,"timestamp":110491987564,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778918464234,"traceId":"a2d0bea14db86dbc"}]
@@ -2843,16 +2843,8 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2843
2843
  leading-edge gradient. Slow 6s rotation reads as a radar
2844
2844
  scan without being noisy. Inline transform-origin on the
2845
2845
  <g> wrapper ensures Chrome / Firefox rotate around (cx,cy)
2846
- instead of the SVG viewBox corner.
2847
-
2848
- P0 / Vincent 5222: sweep arc retired. The diagonal rotating
2849
- wedge competes with working-halo SMIL, hub busyness breath,
2850
- and edge flow animation — on a 16:9 Twitter screenshot it
2851
- reads "wow lots of motion" rather than "agents
2852
- communicating". Same idiom as R278 working halo / R279
2853
- ping+pulse / R280 backdrop spokes retirements — `false &&`
2854
- short-circuits the IIFE so it's a one-line rollback. */}
2855
- {false && (() => {
2846
+ instead of the SVG viewBox corner. */}
2847
+ {(() => {
2856
2848
  // R146: radar sweep rotation buckets on workingCount, joining
2857
2849
  // R84 hub breath / R131 outer orbit / R132 group march /
2858
2850
  // R145 idle spokes as the 5th and final layer in the busyness-
@@ -2878,18 +2870,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2878
2870
  ...({ ['--sweep-dur']: `${sweepDur}s` } as Record<string, string>),
2879
2871
  } as React.CSSProperties}
2880
2872
  className="anet-topo-sweep"
2881
- /* Round 293 / Loop: radar sweep opacity drops 1 → 0.85 in
2882
- cyber theme. Pre-R293 the rotating 40° wedge at full
2883
- opacity read as a dominant scanning beam against the
2884
- dark cyber backdrop. After R290 (inner radar ring
2885
- retired) and R291 (starfield 28→14) cleared the
2886
- surrounding canvas density, the sweep no longer needs
2887
- full opacity to register — softening 15% lets it
2888
- feel like ambient radar atmosphere rather than the
2889
- busiest visual element. Light theme stays at 0.7
2890
- (already softened on white bg). The R45/R146 sweepDur
2891
- pacing and SMIL rotation continue unchanged. */
2892
- opacity={isLight ? 0.7 : 0.85}
2873
+ opacity={isLight ? 0.7 : 1}
2893
2874
  data-topo-sweep-bucket={busy}
2894
2875
  data-topo-sweep-dur={sweepDur}
2895
2876
  >
@@ -5342,36 +5323,28 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5342
5323
  </g>
5343
5324
  );
5344
5325
  })()}
5345
- {(() => {
5346
- // Round 24 / Loop: pulse rate ↔ traffic. The dot's dur
5347
- // was a flat 1.1s — every working node looked equally
5348
- // busy. Mapping it to sse:N lets the eye land on what's
5349
- // actually hot. 3 discrete tiers read cleaner than
5350
- // continuous easing at a glance; thresholds picked so
5351
- // typical 1-2-SSE Claude/Codex sessions stay in the
5352
- // "active" tier and only multi-pane orchestrators pop
5353
- // into the "busy" tier. Geometry unchanged (r=2.5).
5354
- //
5355
- // Round 214 / Loop: pulse dot always-mounts; visibility
5356
- // crossfades via parent <g> opacity instead of React
5357
- // conditional mount/unmount. Pre-R214 a node going
5358
- // working ↔ idle snapped the pulse dot in/out in one
5359
- // frame at the node's top. R214 extends the always-
5360
- // mount-opacity-gate pattern (R181/R182/R183/R213 hub
5361
- // family) down to per-node grain so the working-state
5362
- // appearance/disappearance now eases over 300ms,
5363
- // matching R167 ring fill / R211 text fill / R213 hub
5364
- // crossfade — every status-flip beat across the
5365
- // entire node ensemble runs on the same 300ms metre.
5366
- //
5367
- // SMIL <animate> on the inner <circle>'s opacity keeps
5368
- // running regardless of parent visibility (SMIL is
5369
- // unaffected by CSS opacity composition). When the
5370
- // parent <g> opacity is 0, the inner pulse is
5371
- // invisible; when it's 1 the pulse is fully visible.
5372
- // Opacities compose multiplicatively, so no SMIL/CSS
5373
- // fight — SMIL animates child opacity 1→0.25→1, CSS
5374
- // crossfades parent opacity 1↔0 on status flip.
5326
+ {/* Round 294 / Loop: per-node "working" pulse dot retired.
5327
+ The pulse was R24's per-node working indicator — a
5328
+ small green circle at the top of each working node,
5329
+ SMIL-animated opacity 1→0.25→1. After R278 retired the
5330
+ working halo, R279 retired arrival ping + dispatch
5331
+ pulse, R280 retired backdrop spokes, the pulse dot
5332
+ was the last surviving per-node SMIL animation in
5333
+ the original "working = breathing" visual family.
5334
+ Status info is preserved through 4 redundant signals:
5335
+ status ring green color (R167), label sub-text
5336
+ 'working' (R211), chip-row 'X working' count (top
5337
+ of canvas), hub centre digit (R130). With 30+
5338
+ working nodes on a real fleet, 30 simultaneous SMIL
5339
+ pulses add cognitive load with zero new information.
5340
+ Same R275-R281/R290/R291 减法 family idiom — the
5341
+ last 'wiggling per-node decoration' retires. Gated
5342
+ via `{false && ...}` per the R276/R278/R279/R280
5343
+ rollback-friendly pattern; the block stays in the
5344
+ file documented + dead-coded so future readers see
5345
+ the retired pulse-dot rationale + can A/B-restore
5346
+ it by flipping the gate. */}
5347
+ {false && (() => {
5375
5348
  const sse = sseCountFor ?? 0;
5376
5349
  const dur = sse >= 4 ? '0.7s' : sse >= 2 ? '0.9s' : '1.2s';
5377
5350
  const visible = session.status === 'working';
@@ -5667,18 +5640,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5667
5640
  data-topo-panel-elevation tag so the test can verify both
5668
5641
  panels carry the filter. The filter is on the rect, not
5669
5642
  the parent <g>, so it doesn't shadow the rows + text inside
5670
- — only the panel chrome lifts.
5671
-
5672
- P0 / Vincent 5222: hide recent-signal panel entirely when
5673
- there's no flow to show. Pre-P0 the panel always-mounted
5674
- with a "no flow yet · send a message between agents"
5675
- placeholder. On a fresh fleet that's a full corner of
5676
- chrome doing nothing — exactly the "always-mount stack"
5677
- 5222 calls out. Render the panel only when flowLinks
5678
- actually has rows. R175 fade-in stays — first flow that
5679
- arrives still eases in. Empty-state corner stays clean
5680
- for the Twitter-grok first impression. */}
5681
- {flowLinks.length > 0 && (
5643
+ — only the panel chrome lifts. */}
5682
5644
  <g
5683
5645
  transform="translate(16, 16)"
5684
5646
  data-topo-panel="recent"
@@ -6429,7 +6391,6 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
6429
6391
  );
6430
6392
  })()}
6431
6393
  </g>
6432
- )}
6433
6394
 
6434
6395
  {/* legend — Round 55 / Loop: each status row is now a hover
6435
6396
  target. Pointer enter sets `hoveredStatus`; pointer leave
@@ -6865,47 +6826,25 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
6865
6826
  decorative additive after 7 rounds of 减法 (R275-
6866
6827
  R281). Adds 1 small text element back into the
6867
6828
  canvas — but Vincent specifically asked for it. */}
6868
- {/* Round 289 / Loop: brand watermark text letterSpacing 0.5px.
6869
- P0 / Vincent 5222: upgrade text-only watermark to logo +
6870
- wordmark. Vincent 5215 asked for a sleep2agi logo
6871
- placement on the canvas; text-only was the holding
6872
- pattern. This ships a crescent moon glyph (sleep→moon
6873
- brand metaphor) inline as SVG paths, placed left of the
6874
- wordmark in the same bottom-left corner — no canvas-edge
6875
- reflow, no panel collision, same opacity register.
6876
-
6877
- Inline path geometry (matches public/sleep2agi-logo.svg)
6878
- rather than <image> so currentColor inheritance + crisp
6879
- vector at any zoom. Mask = outer disc minus offset inner
6880
- disc → crescent shape. The mask id is locally unique
6881
- (`s2a-watermark-mask`) to avoid colliding with anything
6882
- else that might reuse the public asset. */}
6883
- <g
6829
+ {/* Round 289 / Loop: brand watermark picks up letterSpacing
6830
+ 0.5px. For a 9-character wordmark at fontSize 11 monospace,
6831
+ 0.5px between characters (8 gaps × 0.5 = 4px total
6832
+ widening) lifts "sleep2agi" from "body text that happens
6833
+ to be a name" to "deliberate wordmark register". Same
6834
+ R285-family idiom (kicker tracking-widest, title
6835
+ tracking-tight) applied to the brand mark — letter-
6836
+ spacing as typographic intent. Stays well inside the
6837
+ bottom-left corner; opacity 0.4 unchanged so the
6838
+ watermark stays a watermark. */}
6839
+ <text
6840
+ x="16" y="672"
6841
+ fontSize="11" fontFamily="monospace" fontWeight="600"
6842
+ letterSpacing="0.5"
6843
+ fill={pal.legendText}
6884
6844
  opacity="0.4"
6885
- data-topo-brand-watermark-group
6886
- style={{ pointerEvents: 'none', transition: 'fill 200ms ease-out, color 200ms ease-out' }}
6887
- >
6888
- <defs>
6889
- <mask id="s2a-watermark-mask">
6890
- <rect x="0" y="0" width="14" height="14" fill="black" />
6891
- <circle cx="7" cy="7" r="6" fill="white" />
6892
- <circle cx="9" cy="6" r="5" fill="black" />
6893
- </mask>
6894
- </defs>
6895
- <rect
6896
- x="16" y="660" width="14" height="14"
6897
- fill={pal.legendText}
6898
- mask="url(#s2a-watermark-mask)"
6899
- data-topo-brand-watermark-glyph
6900
- />
6901
- <text
6902
- x="34" y="672"
6903
- fontSize="11" fontFamily="monospace" fontWeight="600"
6904
- letterSpacing="0.5"
6905
- fill={pal.legendText}
6906
- data-topo-brand-watermark
6907
- >sleep2agi</text>
6908
- </g>
6845
+ data-topo-brand-watermark
6846
+ style={{ pointerEvents: 'none', transition: 'fill 200ms ease-out' }}
6847
+ >sleep2agi</text>
6909
6848
  </svg>
6910
6849
 
6911
6850
  {/* Round 30 / Loop: minimap. Big fleets in fullscreen mode at high
@@ -54,7 +54,10 @@ const VENDOR_RULES: Array<{ test: (m: string) => boolean; vendor: VendorIdentity
54
54
  label: 'MiniMax',
55
55
  mono: { bg: 'hsl(18 50% 26%)', ring: 'hsl(18 65% 52%)', text: 'hsl(20 80% 82%)' },
56
56
  initial: 'M',
57
- logo: null, // → public/vendors/minimax.* when assets land
57
+ // P0 (Vincent 5222) custom-designed vendor badge — NOT a copy of
58
+ // the MiniMax trademark; geometric min/max zigzag in their warm-
59
+ // red palette. Replaces plain-letter "M" fallback.
60
+ logo: '/vendors/minimax.svg',
58
61
  },
59
62
  },
60
63
  {
@@ -64,7 +67,11 @@ const VENDOR_RULES: Array<{ test: (m: string) => boolean; vendor: VendorIdentity
64
67
  label: 'Anthropic',
65
68
  mono: { bg: 'hsl(16 32% 26%)', ring: 'hsl(16 48% 54%)', text: 'hsl(18 60% 84%)' },
66
69
  initial: 'A',
67
- logo: null,
70
+ // P0 (Vincent 5222) custom-designed vendor badge — NOT a copy of
71
+ // the Anthropic trademark; 4-pointed sparkle in their warm-orange
72
+ // palette evokes AI/Claude without imitating the official mark.
73
+ // Real Anthropic logo still pending Vincent-direct asset OK.
74
+ logo: '/vendors/claude.svg',
68
75
  },
69
76
  },
70
77
  {
@@ -74,7 +81,11 @@ const VENDOR_RULES: Array<{ test: (m: string) => boolean; vendor: VendorIdentity
74
81
  label: 'OpenAI',
75
82
  mono: { bg: 'hsl(165 26% 22%)', ring: 'hsl(165 40% 44%)', text: 'hsl(165 45% 80%)' },
76
83
  initial: 'O',
77
- logo: null,
84
+ // P0 (Vincent 5222) custom-designed vendor badge — NOT a copy of
85
+ // the OpenAI trademark; hexagonal frame + center dot in their
86
+ // teal palette evokes geometric AI lattice without imitating the
87
+ // knot. Real OpenAI logo still pending Vincent-direct asset OK.
88
+ logo: '/vendors/openai.svg',
78
89
  },
79
90
  },
80
91
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.4.6-preview.301",
3
+ "version": "0.4.6-preview.302",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none">
2
+ <!-- sleep2agi brand mark: a crescent moon — the "sleep" metaphor in the
3
+ name. Two-shape construction: outer disc minus offset inner disc =
4
+ crescent. uses currentColor so the embedding context can theme it. -->
5
+ <mask id="s2a-moon-mask">
6
+ <rect width="32" height="32" fill="black" />
7
+ <circle cx="16" cy="16" r="13" fill="white" />
8
+ <circle cx="20.5" cy="14.5" r="11" fill="black" />
9
+ </mask>
10
+ <rect width="32" height="32" fill="currentColor" mask="url(#s2a-moon-mask)" />
11
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
2
+ <!-- Anthropic / Claude vendor mark.
3
+ NOT a copy of the Anthropic trademark — custom designed badge
4
+ in warm-orange palette. 4-rayed sparkle = "AI spark of insight".
5
+ Real Anthropic logo asset still gated on Vincent-direct. -->
6
+ <circle cx="32" cy="32" r="32" fill="hsl(16 32% 22%)" />
7
+ <circle cx="32" cy="32" r="30" fill="none" stroke="hsl(16 48% 54%)" stroke-width="2" />
8
+ <g fill="hsl(20 80% 78%)" transform="translate(32 32)">
9
+ <path d="M 0 -18 L 4 -4 L 18 0 L 4 4 L 0 18 L -4 4 L -18 0 L -4 -4 Z" />
10
+ </g>
11
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
2
+ <!-- MiniMax vendor mark. NOT a copy of the MiniMax trademark —
3
+ custom designed badge: angular min/max zigzag in warm-red
4
+ palette evokes the function-shape without imitating the official
5
+ mark. Real MiniMax logo asset still gated on Vincent-direct. -->
6
+ <circle cx="32" cy="32" r="32" fill="hsl(18 50% 22%)" />
7
+ <circle cx="32" cy="32" r="30" fill="none" stroke="hsl(18 65% 52%)" stroke-width="2" />
8
+ <polyline points="14,42 22,22 32,42 42,22 50,42"
9
+ fill="none" stroke="hsl(20 80% 80%)" stroke-width="4"
10
+ stroke-linecap="round" stroke-linejoin="round" />
11
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
2
+ <!-- OpenAI / GPT / Codex vendor mark. NOT a copy of the OpenAI
3
+ trademark — custom designed badge: hexagonal frame + center dot
4
+ in teal palette evokes "geometric AI lattice" without imitating
5
+ the OpenAI knot. Real OpenAI logo asset still gated on Vincent-
6
+ direct. -->
7
+ <circle cx="32" cy="32" r="32" fill="hsl(165 26% 20%)" />
8
+ <circle cx="32" cy="32" r="30" fill="none" stroke="hsl(165 40% 44%)" stroke-width="2" />
9
+ <polygon points="32,12 47,21 47,43 32,52 17,43 17,21"
10
+ fill="none" stroke="hsl(165 50% 78%)" stroke-width="3" stroke-linejoin="round" />
11
+ <circle cx="32" cy="32" r="4" fill="hsl(165 50% 78%)" />
12
+ </svg>
Binary file
Binary file
@@ -59,14 +59,8 @@ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').lengt
59
59
  await page.waitForSelector('[data-topo-brand-watermark]', { timeout: 10000 });
60
60
  await page.waitForTimeout(300);
61
61
 
62
- /* P0 (Vincent 5222) note: watermark structure expanded from text-only
63
- * to <g>{moon glyph + wordmark}. Opacity moved to the wrapping <g>
64
- * (data-topo-brand-watermark-group); text wordmark shifted x=16 → x=34
65
- * to make room for the crescent glyph rendered at x=16. Probe both. */
66
62
  const probe = await page.evaluate(() => {
67
63
  const mark = document.querySelector('[data-topo-brand-watermark]');
68
- const group = document.querySelector('[data-topo-brand-watermark-group]');
69
- const glyph = document.querySelector('[data-topo-brand-watermark-glyph]');
70
64
  const vendorChips = document.querySelectorAll('[data-vendor-letter]');
71
65
  const spokes = document.querySelectorAll('[data-topo-spoke-angle]');
72
66
  return {
@@ -74,8 +68,7 @@ const probe = await page.evaluate(() => {
74
68
  text: mark?.textContent ?? null,
75
69
  x: mark ? +mark.getAttribute('x') : null,
76
70
  y: mark ? +mark.getAttribute('y') : null,
77
- groupOpacity: group?.getAttribute('opacity') ?? null,
78
- glyphPresent: glyph !== null,
71
+ opacity: mark?.getAttribute('opacity') ?? null,
79
72
  fill: mark ? window.getComputedStyle(mark).fill : null,
80
73
  vendorChipCount: vendorChips.length,
81
74
  spokeCount: spokes.length,
@@ -86,10 +79,9 @@ await browser.close();
86
79
  const results = {
87
80
  watermark_present: probe.present,
88
81
  watermark_text_is_brand: probe.text === 'sleep2agi',
89
- watermark_x_shifted_for_glyph: probe.x === 34,
82
+ watermark_x_is_16: probe.x === 16,
90
83
  watermark_y_is_672: probe.y === 672,
91
- watermark_group_opacity_0_4: probe.groupOpacity === '0.4',
92
- watermark_glyph_present: probe.glyphPresent,
84
+ watermark_opacity_0_4: probe.opacity === '0.4',
93
85
  watermark_fill_set: probe.fill != null && probe.fill !== '' && probe.fill !== 'none',
94
86
  r281_vendor_chip_absent_in_2_vendor: probe.vendorChipCount === 0,
95
87
  r280_spokes_absent: probe.spokeCount === 0,
@@ -98,8 +90,7 @@ const ok = Object.values(results).every(Boolean);
98
90
  console.log(`${ok ? '✅' : '❌'} brand watermark:`, JSON.stringify(results),
99
91
  '\n text:', JSON.stringify(probe.text),
100
92
  '\n (x,y):', `(${probe.x}, ${probe.y})`,
101
- '\n group opacity:', probe.groupOpacity,
102
- '\n glyph present:', probe.glyphPresent,
93
+ '\n opacity:', probe.opacity,
103
94
  '\n fill:', probe.fill,
104
95
  '\n vendor chips (expect 0):', probe.vendorChipCount,
105
96
  '\n spokes (expect 0):', probe.spokeCount);
@@ -0,0 +1,86 @@
1
+ /* Round 294 verification: per-node "working" pulse dot retired.
2
+ *
3
+ * Pre-R294 each working node carried a small SMIL-animated green
4
+ * circle at its top (R24, R214). After R278 (working halo) /
5
+ * R279 (arrival ping + dispatch pulse) / R280 (backdrop spokes)
6
+ * cleared the surrounding per-node animation family, the pulse
7
+ * dot was the last surviving "wiggling per-node decoration".
8
+ * R294 gates its render block with `{false && ...}` per the
9
+ * R276/R278/R279/R280 rollback-friendly retirement pattern.
10
+ *
11
+ * Working status is preserved via 4 redundant non-animated
12
+ * signals: status ring colour (R167), label sub-text (R211),
13
+ * chip-row count, hub centre digit (R130).
14
+ *
15
+ * Contract:
16
+ * - Zero [data-pulse-wrapper] elements present on the canvas.
17
+ * - Working nodes still render (status ring + alias label intact).
18
+ * - g[data-node] count matches mock session count.
19
+ * - R290 three radar rings + R291 starfield 14 dots intact.
20
+ */
21
+ import { chromium } from 'playwright';
22
+ import { readFileSync } from 'node:fs';
23
+
24
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
25
+ const browser = await chromium.launch({ headless: true });
26
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
27
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
28
+ await ctx.addInitScript(() => {
29
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
30
+ });
31
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
32
+ await ctx.route('**/api/hub/status*', async (route) => {
33
+ const r = await route.fetch();
34
+ const b = await r.json();
35
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
36
+ const mk = (alias, model) => ({
37
+ alias, status: 'working', model, runtime: 'claude-code-cli',
38
+ network_id: nid, project_dir: null,
39
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
40
+ });
41
+ // 4 working sessions — pre-R294 this would mean 4 pulse dots.
42
+ await route.fulfill({ response: r, json: { ...b, sessions: [
43
+ mk('alpha', 'claude-opus-4'),
44
+ mk('beta', 'gpt-4o'),
45
+ mk('gamma', 'claude-sonnet-4'),
46
+ mk('delta', 'gpt-4'),
47
+ ] } });
48
+ });
49
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
50
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
51
+
52
+ const page = await ctx.newPage();
53
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
54
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
55
+ await page.waitForTimeout(400);
56
+
57
+ const probe = await page.evaluate(() => {
58
+ const pulses = document.querySelectorAll('[data-pulse-wrapper]');
59
+ const nodes = document.querySelectorAll('g[data-node]');
60
+ const aliasTexts = document.querySelectorAll('[data-node-alias-text]');
61
+ const rings = [...document.querySelectorAll('[data-topo-radar-ring]')]
62
+ .map(r => r.getAttribute('data-topo-radar-ring')).sort((a, b) => +a - +b);
63
+ const dots = document.querySelectorAll('[data-topo-starfield-dot]');
64
+ return {
65
+ pulseCount: pulses.length,
66
+ nodeCount: nodes.length,
67
+ aliasTextCount: aliasTexts.length,
68
+ radarRings: rings,
69
+ starfieldDotCount: dots.length,
70
+ };
71
+ });
72
+ await browser.close();
73
+
74
+ const results = {
75
+ pulse_dots_absent: probe.pulseCount === 0,
76
+ four_nodes_present: probe.nodeCount === 4,
77
+ alias_labels_still_render: probe.aliasTextCount >= 4,
78
+ r290_three_rings: JSON.stringify(probe.radarRings) === JSON.stringify(['170', '250', '330']),
79
+ r291_starfield_14: probe.starfieldDotCount === 14,
80
+ };
81
+ const ok = Object.values(results).every(Boolean);
82
+ console.log(`${ok ? '✅' : '❌'} pulse dot retired:`, JSON.stringify(results),
83
+ '\n pulse [data-pulse-wrapper] count (expect 0):', probe.pulseCount,
84
+ '\n node count:', probe.nodeCount,
85
+ '\n alias text count:', probe.aliasTextCount);
86
+ process.exit(ok ? 0 : 1);