@sleep2agi/agent-network-dashboard 0.5.3-preview.232 → 0.5.3-preview.234

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 (157) 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 +2 -2
  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/{0k6pgvv0zk6wv.js → 0-l3_dnseuw3d.js} +3 -3
  143. package/.next/static/chunks/{04_hztcrd76db.js → 05cc8e2y5~5z0.js} +1 -1
  144. package/.next/static/chunks/{16ce87~4iez5i.js → 0__rx-qgibs3h.js} +1 -1
  145. package/.next/static/chunks/{0xah6epzejyj2.js → 0b7swqksmxx4d.js} +1 -1
  146. package/.next/static/chunks/{03e5yraydnai..css → 0r.u_oq5pe~z6.css} +1 -1
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +56 -2
  150. package/app/globals.css +43 -0
  151. package/package.json +1 -1
  152. package/scripts/topo-chrome-fullscreen-breath-test.mjs +121 -0
  153. package/scripts/topo-respiratory-patterns-catalog-test.mjs +1 -1
  154. package/scripts/topo-respiratory-tiers-catalog-test.mjs +119 -0
  155. /package/.next/static/{J2fTVsZNWp8dUVe0a7ZLO → 5ImJ7M0tzN5ebxpw_xGuQ}/_buildManifest.js +0 -0
  156. /package/.next/static/{J2fTVsZNWp8dUVe0a7ZLO → 5ImJ7M0tzN5ebxpw_xGuQ}/_clientMiddlewareManifest.js +0 -0
  157. /package/.next/static/{J2fTVsZNWp8dUVe0a7ZLO → 5ImJ7M0tzN5ebxpw_xGuQ}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":374,"timestamp":409713862807,"id":4,"parentId":1,"tags":{},"startTime":1779217686109,"traceId":"ba9437bfb2aac2a2"},{"name":"load-custom-routes","duration":503,"timestamp":409713863342,"id":5,"parentId":1,"tags":{},"startTime":1779217686110,"traceId":"ba9437bfb2aac2a2"},{"name":"create-dist-dir","duration":715,"timestamp":409713863889,"id":6,"parentId":1,"tags":{},"startTime":1779217686110,"traceId":"ba9437bfb2aac2a2"},{"name":"clean","duration":36290,"timestamp":409713865320,"id":7,"parentId":1,"tags":{},"startTime":1779217686112,"traceId":"ba9437bfb2aac2a2"},{"name":"discover-routes","duration":26125,"timestamp":409713981384,"id":8,"parentId":1,"tags":{},"startTime":1779217686228,"traceId":"ba9437bfb2aac2a2"},{"name":"create-root-mapping","duration":195,"timestamp":409714007574,"id":9,"parentId":1,"tags":{},"startTime":1779217686254,"traceId":"ba9437bfb2aac2a2"},{"name":"generate-route-types","duration":21271,"timestamp":409714010499,"id":10,"parentId":1,"tags":{},"startTime":1779217686257,"traceId":"ba9437bfb2aac2a2"},{"name":"public-dir-conflict-check","duration":101,"timestamp":409714031864,"id":11,"parentId":1,"tags":{},"startTime":1779217686278,"traceId":"ba9437bfb2aac2a2"},{"name":"generate-routes-manifest","duration":4821,"timestamp":409714032114,"id":12,"parentId":1,"tags":{},"startTime":1779217686278,"traceId":"ba9437bfb2aac2a2"},{"name":"run-turbopack","duration":6654772,"timestamp":409714042535,"id":14,"parentId":1,"tags":{},"startTime":1779217686289,"traceId":"ba9437bfb2aac2a2"},{"name":"turbopack-build-events","duration":107,"timestamp":409714372612,"id":15,"parentId":1,"tags":{},"startTime":1779217686619,"traceId":"ba9437bfb2aac2a2"},{"name":"run-typescript","duration":10149601,"timestamp":409720713370,"id":16,"parentId":1,"tags":{},"startTime":1779217692960,"traceId":"ba9437bfb2aac2a2"},{"name":"generate-required-server-files","duration":2451,"timestamp":409730864110,"id":18,"parentId":1,"tags":{},"startTime":1779217703110,"traceId":"ba9437bfb2aac2a2"},{"name":"check-static-error-page","duration":16569,"timestamp":409731062911,"id":20,"parentId":19,"tags":{},"startTime":1779217703309,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":447891,"timestamp":409731082684,"id":65,"parentId":22,"tags":{},"startTime":1779217703329,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":465597,"timestamp":409731065151,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779217703311,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":538586,"timestamp":409731085762,"id":69,"parentId":28,"tags":{},"startTime":1779217703332,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":556522,"timestamp":409731067935,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779217703314,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":552362,"timestamp":409731086500,"id":72,"parentId":32,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":570459,"timestamp":409731068490,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779217703315,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":558697,"timestamp":409731086661,"id":73,"parentId":33,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":576834,"timestamp":409731068616,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779217703315,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":564070,"timestamp":409731086417,"id":71,"parentId":30,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":582384,"timestamp":409731068176,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779217703314,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":567925,"timestamp":409731082825,"id":66,"parentId":25,"tags":{},"startTime":1779217703329,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":583240,"timestamp":409731067546,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779217703314,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":573493,"timestamp":409731082936,"id":67,"parentId":26,"tags":{},"startTime":1779217703329,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":588784,"timestamp":409731067705,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779217703314,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":574723,"timestamp":409731086746,"id":74,"parentId":34,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":592802,"timestamp":409731068720,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779217703315,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":575553,"timestamp":409731086829,"id":77,"parentId":37,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":593079,"timestamp":409731069354,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779217703316,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":596528,"timestamp":409731086777,"id":75,"parentId":35,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":614578,"timestamp":409731068813,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779217703315,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":600069,"timestamp":409731086851,"id":78,"parentId":38,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":617537,"timestamp":409731069448,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779217703316,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":609672,"timestamp":409731086795,"id":76,"parentId":36,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":627342,"timestamp":409731069199,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779217703315,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":609882,"timestamp":409731086861,"id":79,"parentId":39,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":627271,"timestamp":409731069512,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779217703316,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":613471,"timestamp":409731086890,"id":81,"parentId":42,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":630526,"timestamp":409731069894,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779217703316,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":617412,"timestamp":409731086930,"id":84,"parentId":46,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":633802,"timestamp":409731070586,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779217703317,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":624548,"timestamp":409731082386,"id":64,"parentId":21,"tags":{},"startTime":1779217703329,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":642952,"timestamp":409731064038,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779217703310,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":621782,"timestamp":409731085589,"id":68,"parentId":27,"tags":{},"startTime":1779217703332,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":639612,"timestamp":409731067817,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779217703314,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":621735,"timestamp":409731086945,"id":85,"parentId":47,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":636249,"timestamp":409731072474,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779217703319,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":626733,"timestamp":409731086978,"id":88,"parentId":50,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":640939,"timestamp":409731072813,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779217703319,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":635142,"timestamp":409731086904,"id":82,"parentId":44,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":651735,"timestamp":409731070356,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779217703317,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":641251,"timestamp":409731086876,"id":80,"parentId":40,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":658601,"timestamp":409731069576,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779217703316,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":632927,"timestamp":409731095411,"id":90,"parentId":24,"tags":{},"startTime":1779217703342,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":662808,"timestamp":409731065563,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779217703312,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":642411,"timestamp":409731086914,"id":83,"parentId":45,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":658888,"timestamp":409731070495,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779217703317,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":642552,"timestamp":409731086991,"id":89,"parentId":51,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":656679,"timestamp":409731072894,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779217703319,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":643635,"timestamp":409731086072,"id":70,"parentId":29,"tags":{},"startTime":1779217703332,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":661667,"timestamp":409731068066,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779217703314,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":653884,"timestamp":409731086967,"id":87,"parentId":49,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":668180,"timestamp":409731072718,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779217703319,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":644514,"timestamp":409731096548,"id":91,"parentId":31,"tags":{},"startTime":1779217703343,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":672841,"timestamp":409731068255,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779217703315,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":639434,"timestamp":409731101794,"id":92,"parentId":41,"tags":{},"startTime":1779217703348,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":671617,"timestamp":409731069639,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779217703316,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":655382,"timestamp":409731103025,"id":93,"parentId":43,"tags":{},"startTime":1779217703349,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":688410,"timestamp":409731070057,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779217703316,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":696469,"timestamp":409731086954,"id":86,"parentId":48,"tags":{},"startTime":1779217703333,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":710906,"timestamp":409731072596,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779217703319,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":643920,"timestamp":409731149317,"id":100,"parentId":58,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":718419,"timestamp":409731074884,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779217703321,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":652518,"timestamp":409731149517,"id":101,"parentId":59,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":725910,"timestamp":409731076199,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779217703322,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":654552,"timestamp":409731149277,"id":97,"parentId":54,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":730309,"timestamp":409731073592,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779217703320,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":657826,"timestamp":409731149154,"id":94,"parentId":23,"tags":{},"startTime":1779217703395,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":741674,"timestamp":409731065377,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779217703312,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":664935,"timestamp":409731149294,"id":98,"parentId":55,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":740508,"timestamp":409731073786,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779217703320,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":664891,"timestamp":409731149588,"id":102,"parentId":61,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":737673,"timestamp":409731076845,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779217703323,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":666059,"timestamp":409731149619,"id":104,"parentId":63,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":736518,"timestamp":409731079202,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779217703325,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":672275,"timestamp":409731149262,"id":96,"parentId":53,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":748136,"timestamp":409731073440,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779217703320,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":672447,"timestamp":409731149643,"id":105,"parentId":57,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":747901,"timestamp":409731074226,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779217703320,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":672939,"timestamp":409731149605,"id":103,"parentId":62,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":745605,"timestamp":409731076982,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779217703323,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":674150,"timestamp":409731149653,"id":106,"parentId":60,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":747422,"timestamp":409731076418,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779217703323,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":675981,"timestamp":409731149303,"id":99,"parentId":56,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":751333,"timestamp":409731073981,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779217703320,"traceId":"ba9437bfb2aac2a2"},{"name":"is-page-static","duration":682384,"timestamp":409731149241,"id":95,"parentId":52,"tags":{},"startTime":1779217703396,"traceId":"ba9437bfb2aac2a2"},{"name":"check-page","duration":758385,"timestamp":409731073269,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779217703320,"traceId":"ba9437bfb2aac2a2"},{"name":"static-check","duration":769569,"timestamp":409731062121,"id":19,"parentId":1,"tags":{},"startTime":1779217703308,"traceId":"ba9437bfb2aac2a2"}]
2
- [{"name":"write-routes-manifest","duration":613,"timestamp":409731841787,"id":108,"parentId":1,"tags":{},"startTime":1779217704088,"traceId":"ba9437bfb2aac2a2"},{"name":"load-dotenv","duration":66,"timestamp":409731853970,"id":111,"parentId":110,"tags":{},"startTime":1779217704100,"traceId":"ba9437bfb2aac2a2"},{"name":"run-export-path-map","duration":568,"timestamp":409731856566,"id":112,"parentId":110,"tags":{},"startTime":1779217704103,"traceId":"ba9437bfb2aac2a2"},{"name":"next-export","duration":599604,"timestamp":409731852760,"id":110,"parentId":1,"tags":{},"startTime":1779217704099,"traceId":"ba9437bfb2aac2a2"},{"name":"move-exported-app-not-found-","duration":505,"timestamp":409732456248,"id":113,"parentId":109,"tags":{},"startTime":1779217704703,"traceId":"ba9437bfb2aac2a2"},{"name":"move-exported-app-global-error-","duration":418,"timestamp":409732456845,"id":114,"parentId":109,"tags":{},"startTime":1779217704703,"traceId":"ba9437bfb2aac2a2"},{"name":"static-generation","duration":613385,"timestamp":409731846460,"id":109,"parentId":1,"tags":{},"startTime":1779217704093,"traceId":"ba9437bfb2aac2a2"},{"name":"write-routes-manifest","duration":544,"timestamp":409732460186,"id":115,"parentId":1,"tags":{},"startTime":1779217704706,"traceId":"ba9437bfb2aac2a2"},{"name":"print-tree-view","duration":4217,"timestamp":409732477444,"id":116,"parentId":1,"tags":{},"startTime":1779217704724,"traceId":"ba9437bfb2aac2a2"},{"name":"write-route-bundle-stats","duration":12838,"timestamp":409732481697,"id":117,"parentId":1,"tags":{},"startTime":1779217704728,"traceId":"ba9437bfb2aac2a2"},{"name":"telemetry-flush","duration":26697,"timestamp":409732494562,"id":118,"parentId":1,"tags":{},"startTime":1779217704741,"traceId":"ba9437bfb2aac2a2"},{"name":"next-build","duration":18715764,"timestamp":409713805528,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779217686052,"traceId":"ba9437bfb2aac2a2"}]
1
+ [{"name":"generate-buildid","duration":289,"timestamp":410330564981,"id":4,"parentId":1,"tags":{},"startTime":1779218302811,"traceId":"8a4903b991f71bec"},{"name":"load-custom-routes","duration":449,"timestamp":410330565425,"id":5,"parentId":1,"tags":{},"startTime":1779218302812,"traceId":"8a4903b991f71bec"},{"name":"create-dist-dir","duration":850,"timestamp":410330565915,"id":6,"parentId":1,"tags":{},"startTime":1779218302812,"traceId":"8a4903b991f71bec"},{"name":"clean","duration":33259,"timestamp":410330567467,"id":7,"parentId":1,"tags":{},"startTime":1779218302814,"traceId":"8a4903b991f71bec"},{"name":"discover-routes","duration":11087,"timestamp":410330704383,"id":8,"parentId":1,"tags":{},"startTime":1779218302951,"traceId":"8a4903b991f71bec"},{"name":"create-root-mapping","duration":111,"timestamp":410330715534,"id":9,"parentId":1,"tags":{},"startTime":1779218302962,"traceId":"8a4903b991f71bec"},{"name":"generate-route-types","duration":33678,"timestamp":410330718681,"id":10,"parentId":1,"tags":{},"startTime":1779218302965,"traceId":"8a4903b991f71bec"},{"name":"public-dir-conflict-check","duration":107,"timestamp":410330752466,"id":11,"parentId":1,"tags":{},"startTime":1779218302999,"traceId":"8a4903b991f71bec"},{"name":"generate-routes-manifest","duration":5254,"timestamp":410330752696,"id":12,"parentId":1,"tags":{},"startTime":1779218302999,"traceId":"8a4903b991f71bec"},{"name":"run-turbopack","duration":6322435,"timestamp":410330763244,"id":14,"parentId":1,"tags":{},"startTime":1779218303010,"traceId":"8a4903b991f71bec"},{"name":"turbopack-build-events","duration":85,"timestamp":410331058264,"id":15,"parentId":1,"tags":{},"startTime":1779218303305,"traceId":"8a4903b991f71bec"},{"name":"run-typescript","duration":10073151,"timestamp":410337101899,"id":16,"parentId":1,"tags":{},"startTime":1779218309348,"traceId":"8a4903b991f71bec"},{"name":"generate-required-server-files","duration":3518,"timestamp":410347176712,"id":18,"parentId":1,"tags":{},"startTime":1779218319423,"traceId":"8a4903b991f71bec"},{"name":"check-static-error-page","duration":15116,"timestamp":410347376252,"id":20,"parentId":19,"tags":{},"startTime":1779218319623,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":476020,"timestamp":410347395239,"id":65,"parentId":22,"tags":{},"startTime":1779218319642,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":492020,"timestamp":410347379430,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779218319626,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":584397,"timestamp":410347396146,"id":71,"parentId":30,"tags":{},"startTime":1779218319642,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":597442,"timestamp":410347383201,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779218319629,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":589702,"timestamp":410347395602,"id":68,"parentId":27,"tags":{},"startTime":1779218319642,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":602615,"timestamp":410347382780,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779218319629,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":590199,"timestamp":410347396206,"id":72,"parentId":32,"tags":{},"startTime":1779218319642,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":602850,"timestamp":410347383612,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779218319630,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":598433,"timestamp":410347395715,"id":69,"parentId":28,"tags":{},"startTime":1779218319642,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":611319,"timestamp":410347382902,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779218319629,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":601573,"timestamp":410347396385,"id":73,"parentId":33,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":614293,"timestamp":410347383741,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779218319630,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":603112,"timestamp":410347396492,"id":75,"parentId":35,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":615696,"timestamp":410347383965,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779218319630,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":607774,"timestamp":410347396512,"id":76,"parentId":36,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":619852,"timestamp":410347384477,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779218319631,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":613812,"timestamp":410347396556,"id":78,"parentId":38,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":625611,"timestamp":410347384810,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779218319631,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":617426,"timestamp":410347395501,"id":67,"parentId":26,"tags":{},"startTime":1779218319642,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":630320,"timestamp":410347382655,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779218319629,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":622178,"timestamp":410347396583,"id":80,"parentId":40,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":633777,"timestamp":410347385029,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779218319631,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":636219,"timestamp":410347396570,"id":79,"parentId":39,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":647942,"timestamp":410347384908,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779218319631,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":639930,"timestamp":410347396465,"id":74,"parentId":34,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":652597,"timestamp":410347383854,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779218319630,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":640084,"timestamp":410347396544,"id":77,"parentId":37,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":651989,"timestamp":410347384672,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779218319631,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":641427,"timestamp":410347396607,"id":82,"parentId":44,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":652267,"timestamp":410347385810,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779218319632,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":646010,"timestamp":410347396646,"id":85,"parentId":47,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":655144,"timestamp":410347387556,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779218319634,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":647223,"timestamp":410347396621,"id":83,"parentId":45,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":657967,"timestamp":410347385934,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779218319632,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":649805,"timestamp":410347394842,"id":64,"parentId":21,"tags":{},"startTime":1779218319641,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":666861,"timestamp":410347377832,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779218319624,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":650451,"timestamp":410347396658,"id":86,"parentId":48,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":659464,"timestamp":410347387689,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779218319634,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":656782,"timestamp":410347396672,"id":87,"parentId":49,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":665694,"timestamp":410347387809,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779218319634,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":656996,"timestamp":410347396694,"id":89,"parentId":51,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":665748,"timestamp":410347387983,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779218319634,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":646944,"timestamp":410347413692,"id":91,"parentId":31,"tags":{},"startTime":1779218319660,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":677361,"timestamp":410347383319,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779218319630,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":666929,"timestamp":410347395980,"id":70,"parentId":29,"tags":{},"startTime":1779218319642,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":679906,"timestamp":410347383050,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779218319629,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":653945,"timestamp":410347412330,"id":90,"parentId":24,"tags":{},"startTime":1779218319659,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":686374,"timestamp":410347379943,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779218319626,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":652188,"timestamp":410347415987,"id":93,"parentId":43,"tags":{},"startTime":1779218319662,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":682708,"timestamp":410347385508,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779218319632,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":671855,"timestamp":410347396636,"id":84,"parentId":46,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":682484,"timestamp":410347386057,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779218319632,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":656820,"timestamp":410347414592,"id":92,"parentId":41,"tags":{},"startTime":1779218319661,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":686351,"timestamp":410347385127,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779218319631,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":684229,"timestamp":410347396597,"id":81,"parentId":42,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":695513,"timestamp":410347385365,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779218319632,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":698043,"timestamp":410347395396,"id":66,"parentId":25,"tags":{},"startTime":1779218319642,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":711225,"timestamp":410347382479,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779218319629,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":712973,"timestamp":410347418755,"id":96,"parentId":53,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":743254,"timestamp":410347388559,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779218319635,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":719751,"timestamp":410347418801,"id":100,"parentId":58,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":748682,"timestamp":410347389955,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779218319636,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":720703,"timestamp":410347418709,"id":94,"parentId":23,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":759757,"timestamp":410347379709,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779218319626,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":724818,"timestamp":410347418778,"id":98,"parentId":55,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":754749,"timestamp":410347388913,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779218319635,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":729172,"timestamp":410347418916,"id":101,"parentId":59,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":757955,"timestamp":410347390189,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779218319636,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":729408,"timestamp":410347418937,"id":102,"parentId":61,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":757584,"timestamp":410347390803,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779218319637,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":735729,"timestamp":410347418961,"id":104,"parentId":63,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":763633,"timestamp":410347391115,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779218319637,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":729575,"timestamp":410347427881,"id":105,"parentId":60,"tags":{},"startTime":1779218319674,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":767119,"timestamp":410347390379,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779218319637,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":738860,"timestamp":410347418947,"id":103,"parentId":62,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":766895,"timestamp":410347390949,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779218319637,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":721471,"timestamp":410347441039,"id":106,"parentId":57,"tags":{},"startTime":1779218319687,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":773142,"timestamp":410347389403,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779218319636,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":744627,"timestamp":410347418764,"id":97,"parentId":54,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":774715,"timestamp":410347388719,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779218319635,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":767765,"timestamp":410347396685,"id":88,"parentId":50,"tags":{},"startTime":1779218319643,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":776597,"timestamp":410347387895,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779218319634,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":763742,"timestamp":410347418740,"id":95,"parentId":52,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":794133,"timestamp":410347388405,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779218319635,"traceId":"8a4903b991f71bec"},{"name":"is-page-static","duration":773601,"timestamp":410347418791,"id":99,"parentId":56,"tags":{},"startTime":1779218319665,"traceId":"8a4903b991f71bec"},{"name":"check-page","duration":803304,"timestamp":410347389137,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779218319635,"traceId":"8a4903b991f71bec"},{"name":"static-check","duration":817365,"timestamp":410347375117,"id":19,"parentId":1,"tags":{},"startTime":1779218319621,"traceId":"8a4903b991f71bec"}]
2
+ [{"name":"write-routes-manifest","duration":487,"timestamp":410348203577,"id":108,"parentId":1,"tags":{},"startTime":1779218320450,"traceId":"8a4903b991f71bec"},{"name":"load-dotenv","duration":63,"timestamp":410348214967,"id":111,"parentId":110,"tags":{},"startTime":1779218320461,"traceId":"8a4903b991f71bec"},{"name":"run-export-path-map","duration":619,"timestamp":410348217633,"id":112,"parentId":110,"tags":{},"startTime":1779218320464,"traceId":"8a4903b991f71bec"},{"name":"next-export","duration":604967,"timestamp":410348213737,"id":110,"parentId":1,"tags":{},"startTime":1779218320460,"traceId":"8a4903b991f71bec"},{"name":"move-exported-app-not-found-","duration":586,"timestamp":410348822516,"id":113,"parentId":109,"tags":{},"startTime":1779218321069,"traceId":"8a4903b991f71bec"},{"name":"move-exported-app-global-error-","duration":434,"timestamp":410348823203,"id":114,"parentId":109,"tags":{},"startTime":1779218321069,"traceId":"8a4903b991f71bec"},{"name":"static-generation","duration":617768,"timestamp":410348207803,"id":109,"parentId":1,"tags":{},"startTime":1779218320454,"traceId":"8a4903b991f71bec"},{"name":"write-routes-manifest","duration":433,"timestamp":410348825799,"id":115,"parentId":1,"tags":{},"startTime":1779218321072,"traceId":"8a4903b991f71bec"},{"name":"print-tree-view","duration":4806,"timestamp":410348836402,"id":116,"parentId":1,"tags":{},"startTime":1779218321083,"traceId":"8a4903b991f71bec"},{"name":"write-route-bundle-stats","duration":17401,"timestamp":410348841245,"id":117,"parentId":1,"tags":{},"startTime":1779218321088,"traceId":"8a4903b991f71bec"},{"name":"telemetry-flush","duration":43913,"timestamp":410348858683,"id":118,"parentId":1,"tags":{},"startTime":1779218321105,"traceId":"8a4903b991f71bec"},{"name":"next-build","duration":18394447,"timestamp":410330508191,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779218302754,"traceId":"8a4903b991f71bec"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6654772,"timestamp":409714042535,"id":14,"parentId":1,"tags":{},"startTime":1779217686289,"traceId":"ba9437bfb2aac2a2"},{"name":"turbopack-build-events","duration":107,"timestamp":409714372612,"id":15,"parentId":1,"tags":{},"startTime":1779217686619,"traceId":"ba9437bfb2aac2a2"},{"name":"run-typescript","duration":10149601,"timestamp":409720713370,"id":16,"parentId":1,"tags":{},"startTime":1779217692960,"traceId":"ba9437bfb2aac2a2"},{"name":"static-check","duration":769569,"timestamp":409731062121,"id":19,"parentId":1,"tags":{},"startTime":1779217703308,"traceId":"ba9437bfb2aac2a2"},{"name":"static-generation","duration":613385,"timestamp":409731846460,"id":109,"parentId":1,"tags":{},"startTime":1779217704093,"traceId":"ba9437bfb2aac2a2"},{"name":"telemetry-flush","duration":26697,"timestamp":409732494562,"id":118,"parentId":1,"tags":{},"startTime":1779217704741,"traceId":"ba9437bfb2aac2a2"},{"name":"next-build","duration":18715764,"timestamp":409713805528,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779217686052,"traceId":"ba9437bfb2aac2a2"}]
1
+ [{"name":"run-turbopack","duration":6322435,"timestamp":410330763244,"id":14,"parentId":1,"tags":{},"startTime":1779218303010,"traceId":"8a4903b991f71bec"},{"name":"turbopack-build-events","duration":85,"timestamp":410331058264,"id":15,"parentId":1,"tags":{},"startTime":1779218303305,"traceId":"8a4903b991f71bec"},{"name":"run-typescript","duration":10073151,"timestamp":410337101899,"id":16,"parentId":1,"tags":{},"startTime":1779218309348,"traceId":"8a4903b991f71bec"},{"name":"static-check","duration":817365,"timestamp":410347375117,"id":19,"parentId":1,"tags":{},"startTime":1779218319621,"traceId":"8a4903b991f71bec"},{"name":"static-generation","duration":617768,"timestamp":410348207803,"id":109,"parentId":1,"tags":{},"startTime":1779218320454,"traceId":"8a4903b991f71bec"},{"name":"telemetry-flush","duration":43913,"timestamp":410348858683,"id":118,"parentId":1,"tags":{},"startTime":1779218321105,"traceId":"8a4903b991f71bec"},{"name":"next-build","duration":18394447,"timestamp":410330508191,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779218302754,"traceId":"8a4903b991f71bec"}]
@@ -4883,6 +4883,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
4883
4883
  "19": ["nodeSize wrapper"],
4884
4884
  "21": ["reset button"],
4885
4885
  "23": ["zoom wrapper"],
4886
+ "25": ["fullscreen button"],
4886
4887
  })}
4887
4888
  /* Round 716 / Loop — companion to R710 rolodex catalog: surface
4888
4889
  the 5 DUAL-AXIS surfaces (R711/R712/R713×2/R714/R715) as a
@@ -4967,10 +4968,53 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
4967
4968
  data-topo-respiratory-patterns={JSON.stringify([
4968
4969
  { name: "title-block", cadences: [5, 6, 10, 11], anchors: ["brand logo", "kicker", "H2 section title", "title-block envelope"], shape: "trio-with-envelope" },
4969
4970
  { name: "panel-pair", cadences: [8], anchors: ["recent title", "legend title"], shape: "parity" },
4970
- { name: "chrome-strip", cadences: [9, 17, 19, 21, 23], anchors: ["zoom-level readout", "Layout wrapper", "nodeSize wrapper", "reset button", "zoom wrapper"], shape: "tiered-with-quartet" },
4971
+ { name: "chrome-strip", cadences: [9, 17, 19, 21, 23, 25], anchors: ["zoom-level readout", "Layout wrapper", "nodeSize wrapper", "reset button", "zoom wrapper", "fullscreen button"], shape: "tiered-with-quintet" },
4971
4972
  { name: "canvas-brand-pair", cadences: [6, 7, 13, 15], anchors: ["watermark text", "crescent inner", "crescent wrapper envelope", "watermark wrapper envelope"], shape: "coprime-nested-pair" },
4972
4973
  { name: "background", cadences: [3, 4], anchors: ["row hot", "hub idle"], shape: "baseline-pair" },
4973
4974
  ])}
4975
+ /* Round 720 / Loop — 4TH orthogonal meta-doc catalog: tiers.
4976
+ Joins R710 (cadences) + R716 (axes) + R717 (patterns) to
4977
+ form a 4-axis introspection quadrilateral over the breath
4978
+ family:
4979
+
4980
+ R710 data-topo-respiratory-rolodex — cadence axis
4981
+ R716 data-topo-respiratory-dual-axis-surfaces — axis axis
4982
+ R717 data-topo-respiratory-patterns — pattern axis
4983
+ R720 data-topo-respiratory-tiers — tier axis ← this round
4984
+
4985
+ Patterns (R717) group anchors by STRUCTURAL SHAPE; tiers
4986
+ (R720) group anchors by FUNCTIONAL ROLE. The two slicings
4987
+ are orthogonal:
4988
+ - chrome-strip pattern spans 3 tiers (data + control-wrapper + atomic-control)
4989
+ - title-block pattern is exactly 1 tier
4990
+ - canvas-brand-pair pattern is exactly 1 tier
4991
+ A given anchor belongs to exactly 1 tier (tiers are
4992
+ mutually exclusive), so the catalog is a partition of the
4993
+ 18-anchor family into 7 buckets:
4994
+
4995
+ data (1) zoom-level readout
4996
+ control-wrapper (3) Layout / nodeSize / zoom wrappers
4997
+ atomic-control (2) reset / fullscreen buttons
4998
+ title-block (4) brand logo, kicker, H2, envelope
4999
+ panel-title (2) recent / legend titles
5000
+ canvas-brand (4) watermark text, crescent inner, two envelopes
5001
+ background (2) row hot, hub idle
5002
+
5003
+ Cross-check at runtime: sum of tier anchor counts must
5004
+ equal the flat anchor count in the rolodex (R710); each
5005
+ tier-listed anchor must appear in the rolodex.
5006
+
5007
+ Inline JSON.stringify — invariant string, no DOM thrash.
5008
+ R710/R716/R717 unchanged. */
5009
+ data-topo-respiratory-tiers={JSON.stringify([
5010
+ { name: "data", anchors: ["zoom-level readout"] },
5011
+ { name: "control-wrapper", anchors: ["Layout wrapper", "nodeSize wrapper", "zoom wrapper"] },
5012
+ { name: "atomic-control", anchors: ["reset button", "fullscreen button"] },
5013
+ { name: "title-block", anchors: ["brand logo", "kicker", "H2 section title", "title-block envelope"] },
5014
+ { name: "panel-title", anchors: ["recent title", "legend title"] },
5015
+ { name: "canvas-brand", anchors: ["watermark text", "watermark wrapper envelope", "crescent inner", "crescent wrapper envelope"] },
5016
+ { name: "background", anchors: ["row hot", "hub idle"] },
5017
+ ])}
4974
5018
  data-topo-pinned-aspect={(() => {
4975
5019
  const aspects: string[] = [];
4976
5020
  if (pinnedStatus) aspects.push('status');
@@ -17210,12 +17254,22 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
17210
17254
  // R400: hover translateY(-1px) lift — see reset button above for family doc.
17211
17255
  // R493 — fullscreen joins active:scale-95 press family (same as
17212
17256
  // reset above: lift-and-compress compound transform on press).
17213
- className={`group p-1.5 rounded-md border hover:-translate-y-px active:scale-95 transform-gpu focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 ${
17257
+ className={`anet-topo-chrome-fullscreen-breath group p-1.5 rounded-md border hover:-translate-y-px active:scale-95 transform-gpu focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 ${
17214
17258
  isFullscreen
17215
17259
  ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 hover:text-cyan-200 active:bg-cyan-500/25'
17216
17260
  : 'hover:bg-cyan-500/5 active:bg-cyan-500/15'
17217
17261
  }${chromePopping === 'fullscreen' ? ' anet-chrome-pop' : ''}`}
17218
17262
  data-topo-chrome-fullscreen-hover-lift="true"
17263
+ /* Round 719 / Loop — fullscreen button joins the respiratory
17264
+ family at 25 s. Closes the atomic-control DUO (reset 21 s +
17265
+ fullscreen 25 s) — both standalone chrome buttons now
17266
+ breathe at parity 7% alpha range with coprime cadences.
17267
+ 6th anchor on chrome-strip pattern, shape advances to
17268
+ "tiered-with-quintet". Hover-gate via existing
17269
+ data-topo-chrome-fullscreen-hover attr — sibling leaf-
17270
+ element gate pattern to R703 zoom-level and R718 reset.
17271
+ See globals.css R719 block for cadence rationale. */
17272
+ data-topo-chrome-fullscreen-breath="25s"
17219
17273
  /* R595 — chrome fullscreen button gains filter brightness(1.15)
17220
17274
  on hoveredFullscreen. 34th anchor in per-element brightness
17221
17275
  family, 3rd HTML-element anchor (R593 zoom-level + R594
package/app/globals.css CHANGED
@@ -1616,6 +1616,49 @@ body {
1616
1616
  .anet-topo-chrome-reset-breath { animation: none; }
1617
1617
  }
1618
1618
 
1619
+ /* Round 719 — chrome fullscreen button joins the respiratory family at
1620
+ 25 s. 6th anchor on the chrome-strip pattern, extending the shape
1621
+ from "tiered-with-quartet" → "tiered-with-quintet". Sibling to R718
1622
+ reset (21 s) — closes the ATOMIC-CONTROL DUO: both standalone
1623
+ chrome buttons (reset + fullscreen, the only non-segmented chrome
1624
+ buttons in the family per R400 doc) now breathe at parity alpha
1625
+ range with coprime cadences.
1626
+
1627
+ Chrome-strip pattern post-R719:
1628
+ R703 zoom-level readout 9 s (data tier)
1629
+ R707 Layout wrapper 17 s (control wrapper tier)
1630
+ R708 nodeSize wrapper 19 s (control wrapper tier)
1631
+ R718 reset button 21 s (atomic control tier)
1632
+ R709 zoom wrapper 23 s (control wrapper tier)
1633
+ R719 fullscreen button 25 s (atomic control tier) ← this round
1634
+
1635
+ 25 = 5² — coprime with every other rolodex cadence (no factor 5
1636
+ anywhere). Fills the 17/19/21/23/25 odd-number ladder perfectly
1637
+ and becomes the new slowest cadence on the rolodex (prior slowest:
1638
+ 23 s zoom wrapper). The chrome strip now spans a 16 s arc from
1639
+ 9 → 25, with its two atomic-control members at 21 s and 25 s
1640
+ bracketing the wrapper trio (17/19/23) — atomic controls breathe
1641
+ slower than wrappers, matching their role as terminal commits
1642
+ (reset wipes state; fullscreen flips viewport mode).
1643
+
1644
+ Same 7% alpha (0.93 ↔ 1) as R718 reset — atomic-control tier
1645
+ parity. The duo reads as a matched pair at rest. Hover gate via
1646
+ data-topo-chrome-fullscreen-hover (R703 leaf-element pattern,
1647
+ sibling to R718 reset's gate). */
1648
+ @keyframes anet-topo-chrome-fullscreen-breath-kf {
1649
+ 0%, 100% { opacity: 1; }
1650
+ 50% { opacity: 0.93; }
1651
+ }
1652
+ .anet-topo-chrome-fullscreen-breath {
1653
+ animation: anet-topo-chrome-fullscreen-breath-kf 25s ease-in-out infinite;
1654
+ }
1655
+ .anet-topo-chrome-fullscreen-breath[data-topo-chrome-fullscreen-hover="true"] {
1656
+ animation: none;
1657
+ }
1658
+ @media (prefers-reduced-motion: reduce) {
1659
+ .anet-topo-chrome-fullscreen-breath { animation: none; }
1660
+ }
1661
+
1619
1662
  /* ─────────────────────────────────────────────────────────────────────
1620
1663
  Round 29 — prefers-reduced-motion a11y sweep
1621
1664
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.232",
3
+ "version": "0.5.3-preview.234",
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,121 @@
1
+ /* Round 719 — chrome fullscreen button respiratory anchor at 25 s.
2
+ * 6th anchor on the chrome-strip pattern, completing the ATOMIC-CONTROL
3
+ * DUO with R718 reset (21 s + 25 s, parity 7% alpha range). Shape
4
+ * advances "tiered-with-quartet" → "tiered-with-quintet". 25 = 5²,
5
+ * coprime with every other rolodex cadence (no other factor-5 anywhere)
6
+ * — new slowest cadence on the rolodex.
7
+ *
8
+ * Assertions:
9
+ * - fullscreen button present with breath class + breath-cadence "25s"
10
+ * - hover attr defaults to "false" at rest (gate inactive)
11
+ * - CSS @keyframes 0%,100% opacity:1, 50% opacity:0.93 (parity to R718)
12
+ * - .anet-topo-chrome-fullscreen-breath rule binds 25s cadence
13
+ * - hover-gate selector `[data-topo-chrome-fullscreen-hover="true"]`
14
+ * - prefers-reduced-motion guard present
15
+ * - R710 rolodex catalog includes "25": ["fullscreen button"]
16
+ * - R717 patterns chrome-strip entry has cadence 25 + anchor
17
+ * "fullscreen button" + shape "tiered-with-quintet"
18
+ * - duo cadences (21, 25) both present in chrome-strip cadences
19
+ */
20
+ import { chromium } from 'playwright';
21
+ import { readFileSync } from 'node:fs';
22
+
23
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
24
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
25
+
26
+ const browser = await chromium.launch({ headless: true });
27
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
28
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
29
+ await ctx.addInitScript(() => {
30
+ try {
31
+ localStorage.setItem('anet-theme', 'cyber');
32
+ localStorage.setItem('anet-topo-layout', 'ring');
33
+ sessionStorage.setItem('anet_v3_auth', '1');
34
+ } catch {}
35
+ });
36
+ await ctx.route('**/api/hub/status*', async (route) => {
37
+ const r = await route.fetch();
38
+ const b = await r.json();
39
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
40
+ const mk = (alias) => ({
41
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
42
+ network_id: nid, project_dir: null,
43
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
44
+ });
45
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
46
+ });
47
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
48
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
49
+ const page = await ctx.newPage();
50
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
51
+ await page.waitForSelector('[data-topo-chrome-fullscreen]', { timeout: 15000, state: 'attached' });
52
+ await page.waitForTimeout(300);
53
+
54
+ const runtimeState = await page.evaluate(() => {
55
+ const btn = document.querySelector('[data-topo-chrome-fullscreen]');
56
+ if (!btn) return null;
57
+ const cs = getComputedStyle(btn);
58
+ const svg = document.querySelector('[data-topo-canvas-aria]');
59
+ return {
60
+ has_class: btn.classList.contains('anet-topo-chrome-fullscreen-breath'),
61
+ breath_attr: btn.getAttribute('data-topo-chrome-fullscreen-breath'),
62
+ hover_attr: btn.getAttribute('data-topo-chrome-fullscreen-hover'),
63
+ anim_name: cs.animationName,
64
+ anim_duration: cs.animationDuration,
65
+ rolodex_attr: svg?.getAttribute('data-topo-respiratory-rolodex') ?? null,
66
+ patterns_attr: svg?.getAttribute('data-topo-respiratory-patterns') ?? null,
67
+ };
68
+ });
69
+
70
+ await browser.close();
71
+
72
+ const cssSrc = readFileSync('/home/vansin/agent-network-dashboard/app/globals.css', 'utf8');
73
+ const cssKfNorm = /@keyframes anet-topo-chrome-fullscreen-breath-kf\s*\{[\s\S]*?0%,\s*100%\s*\{[\s\S]*?opacity:\s*1\s*;?[\s\S]*?\}/.test(cssSrc);
74
+ const cssKfMid = /@keyframes anet-topo-chrome-fullscreen-breath-kf\s*\{[\s\S]*?50%\s*\{[\s\S]*?opacity:\s*0\.93/.test(cssSrc);
75
+ const cssBind25 = /\.anet-topo-chrome-fullscreen-breath\s*\{[\s\S]*?animation:\s*anet-topo-chrome-fullscreen-breath-kf\s+25s\s+ease-in-out\s+infinite/.test(cssSrc);
76
+ const cssHoverGate = /\.anet-topo-chrome-fullscreen-breath\[data-topo-chrome-fullscreen-hover="true"\]\s*\{\s*animation:\s*none/.test(cssSrc);
77
+ const cssReducedMotion = /@media\s*\(prefers-reduced-motion:\s*reduce\)\s*\{[\s\S]*?\.anet-topo-chrome-fullscreen-breath\s*\{\s*animation:\s*none/.test(cssSrc);
78
+
79
+ const runtimeAnim = runtimeState?.anim_name === 'anet-topo-chrome-fullscreen-breath-kf' || runtimeState?.anim_name === 'none';
80
+
81
+ let rolodex = null;
82
+ let patterns = null;
83
+ try {
84
+ rolodex = JSON.parse(runtimeState?.rolodex_attr ?? '');
85
+ patterns = JSON.parse(runtimeState?.patterns_attr ?? '');
86
+ } catch {}
87
+ const rolodexHas25 = !!rolodex && Array.isArray(rolodex['25']) && rolodex['25'].includes('fullscreen button');
88
+ const chromeStripEntry = Array.isArray(patterns) ? patterns.find(p => p.name === 'chrome-strip') : null;
89
+ const patternsChromeStripHas25AndFullscreen =
90
+ !!chromeStripEntry
91
+ && Array.isArray(chromeStripEntry.cadences) && chromeStripEntry.cadences.includes(25)
92
+ && Array.isArray(chromeStripEntry.anchors) && chromeStripEntry.anchors.includes('fullscreen button')
93
+ && chromeStripEntry.shape === 'tiered-with-quintet';
94
+ const atomicDuoBothPresent =
95
+ !!chromeStripEntry
96
+ && chromeStripEntry.cadences.includes(21)
97
+ && chromeStripEntry.cadences.includes(25)
98
+ && chromeStripEntry.anchors.includes('reset button')
99
+ && chromeStripEntry.anchors.includes('fullscreen button');
100
+
101
+ const results = {
102
+ button_present: !!runtimeState,
103
+ has_breath_class: runtimeState?.has_class === true,
104
+ breath_attr_25s: runtimeState?.breath_attr === '25s',
105
+ rest_not_hover: runtimeState?.hover_attr === 'false',
106
+ runtime_anim_ok: runtimeAnim,
107
+ css_keyframes_norm: cssKfNorm,
108
+ css_keyframes_mid_0_93: cssKfMid,
109
+ css_class_binds_25s: cssBind25,
110
+ css_hover_gate_present: cssHoverGate,
111
+ css_reduced_motion_guard: cssReducedMotion,
112
+ rolodex_has_25_fullscreen: rolodexHas25,
113
+ patterns_chrome_strip_6_anchors: patternsChromeStripHas25AndFullscreen,
114
+ atomic_control_duo_complete: atomicDuoBothPresent,
115
+ };
116
+ const ok = Object.values(results).every(Boolean);
117
+ console.log(`${ok ? '✅' : '❌'} R719 chrome fullscreen button breath (6th chrome-strip anchor, atomic-control DUO complete @ 25s):`,
118
+ JSON.stringify(results, null, 2),
119
+ `\n runtime: ${JSON.stringify({ has_class: runtimeState?.has_class, breath_attr: runtimeState?.breath_attr, hover_attr: runtimeState?.hover_attr, anim_name: runtimeState?.anim_name, anim_duration: runtimeState?.anim_duration })}`,
120
+ `\n chrome-strip pattern: ${JSON.stringify(chromeStripEntry)}`);
121
+ process.exit(ok ? 0 : 1);
@@ -71,7 +71,7 @@ const validShape = Array.isArray(patterns)
71
71
  && typeof p.name === 'string' && p.name.length > 0
72
72
  && Array.isArray(p.cadences) && p.cadences.length > 0 && p.cadences.every(c => typeof c === 'number' && c > 0)
73
73
  && Array.isArray(p.anchors) && p.anchors.length > 0 && p.anchors.every(a => typeof a === 'string' && a.length > 0)
74
- && typeof p.shape === 'string' && ['trio-with-envelope', 'parity', 'tiered-with-trio', 'tiered-with-quartet', 'coprime-nested-pair', 'baseline-pair'].includes(p.shape))
74
+ && typeof p.shape === 'string' && ['trio-with-envelope', 'parity', 'tiered-with-trio', 'tiered-with-quartet', 'tiered-with-quintet', 'coprime-nested-pair', 'baseline-pair'].includes(p.shape))
75
75
  : false;
76
76
 
77
77
  const totalAnchorCount = Array.isArray(patterns)
@@ -0,0 +1,119 @@
1
+ /* Round 720 — tiers catalog attr on canvas root. 4TH orthogonal
2
+ * meta-doc axis on the breath family, joining:
3
+ * R710 data-topo-respiratory-rolodex (cadence axis)
4
+ * R716 data-topo-respiratory-dual-axis-surfaces (axis axis)
5
+ * R717 data-topo-respiratory-patterns (pattern axis)
6
+ * R720 data-topo-respiratory-tiers (tier axis) ← this round
7
+ *
8
+ * Tiers partition the 18-anchor family into 7 mutually-exclusive
9
+ * functional-role buckets. Cross-check against R710 rolodex: the
10
+ * union of all tier anchor lists must equal the flat rolodex
11
+ * anchor set (each anchor belongs to exactly 1 tier).
12
+ *
13
+ * Assertions:
14
+ * - attr present on root <svg>
15
+ * - JSON parses to Array of exactly 7 entries
16
+ * - shape: each entry has {name, anchors}
17
+ * - tier names match expected set (alphabetical sort)
18
+ * - total anchor count across tiers = 18
19
+ * - mutual exclusivity: no anchor appears in 2 tiers
20
+ * - rolodex coverage: every rolodex anchor appears in exactly 1 tier
21
+ * - rolodex tightness: every tier-listed anchor appears in rolodex
22
+ */
23
+ import { chromium } from 'playwright';
24
+ import { readFileSync } from 'node:fs';
25
+
26
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
27
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
28
+
29
+ const browser = await chromium.launch({ headless: true });
30
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
31
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
32
+ await ctx.addInitScript(() => {
33
+ try {
34
+ localStorage.setItem('anet-theme', 'cyber');
35
+ localStorage.setItem('anet-topo-layout', 'ring');
36
+ sessionStorage.setItem('anet_v3_auth', '1');
37
+ } catch {}
38
+ });
39
+ await ctx.route('**/api/hub/status*', async (route) => {
40
+ const r = await route.fetch();
41
+ const b = await r.json();
42
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
43
+ const mk = (alias) => ({
44
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
45
+ network_id: nid, project_dir: null,
46
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
47
+ });
48
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
49
+ });
50
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
51
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
52
+ const page = await ctx.newPage();
53
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
54
+ await page.waitForSelector('[data-topo-canvas-aria]', { timeout: 15000, state: 'attached' });
55
+ await page.waitForTimeout(300);
56
+
57
+ const runtimeAttrs = await page.evaluate(() => {
58
+ const svg = document.querySelector('[data-topo-canvas-aria]');
59
+ return {
60
+ tiers: svg?.getAttribute('data-topo-respiratory-tiers') ?? null,
61
+ rolodex: svg?.getAttribute('data-topo-respiratory-rolodex') ?? null,
62
+ };
63
+ });
64
+
65
+ await browser.close();
66
+
67
+ let tiers = null;
68
+ let rolodex = null;
69
+ let parseError = null;
70
+ try {
71
+ tiers = JSON.parse(runtimeAttrs.tiers ?? '');
72
+ rolodex = JSON.parse(runtimeAttrs.rolodex ?? '');
73
+ } catch (e) {
74
+ parseError = String(e);
75
+ }
76
+
77
+ const validShape = Array.isArray(tiers)
78
+ ? tiers.every(t => t && typeof t === 'object'
79
+ && typeof t.name === 'string' && t.name.length > 0
80
+ && Array.isArray(t.anchors) && t.anchors.length > 0
81
+ && t.anchors.every(a => typeof a === 'string' && a.length > 0))
82
+ : false;
83
+
84
+ const tierNames = Array.isArray(tiers) ? tiers.map(t => t.name).sort() : [];
85
+ const expectedNames = ['atomic-control', 'background', 'canvas-brand', 'control-wrapper', 'data', 'panel-title', 'title-block'];
86
+
87
+ const flatTierAnchors = Array.isArray(tiers)
88
+ ? tiers.flatMap(t => Array.isArray(t.anchors) ? t.anchors : [])
89
+ : [];
90
+ const tierAnchorSet = new Set(flatTierAnchors);
91
+ const mutualExclusivity = flatTierAnchors.length === tierAnchorSet.size;
92
+
93
+ const rolodexAnchors = rolodex && typeof rolodex === 'object'
94
+ ? Object.values(rolodex).flat()
95
+ : [];
96
+ const rolodexSet = new Set(rolodexAnchors);
97
+
98
+ const rolodexCoverage = [...rolodexSet].every(a => tierAnchorSet.has(a));
99
+ const tierTightness = [...tierAnchorSet].every(a => rolodexSet.has(a));
100
+
101
+ const results = {
102
+ attr_present: !!runtimeAttrs.tiers,
103
+ json_parses: tiers !== null && parseError === null,
104
+ is_array: Array.isArray(tiers),
105
+ has_7_entries: Array.isArray(tiers) && tiers.length === 7,
106
+ shape_valid: validShape,
107
+ tier_names_match: JSON.stringify(tierNames) === JSON.stringify(expectedNames),
108
+ total_anchors_18: flatTierAnchors.length === 18,
109
+ mutual_exclusivity: mutualExclusivity,
110
+ rolodex_coverage: rolodexCoverage,
111
+ tier_tightness: tierTightness,
112
+ };
113
+ const ok = Object.values(results).every(Boolean);
114
+ console.log(`${ok ? '✅' : '❌'} R720 respiratory tiers catalog attr (4th meta-doc axis — breath family quadrilateral):`,
115
+ JSON.stringify(results, null, 2),
116
+ `\n tiers: ${JSON.stringify(tiers)}`,
117
+ parseError ? `\n parseError: ${parseError}` : '',
118
+ `\n rolodex anchors: ${rolodexAnchors.length} · tier anchors: ${flatTierAnchors.length} · unique: ${tierAnchorSet.size}`);
119
+ process.exit(ok ? 0 : 1);