@sleep2agi/agent-network-dashboard 0.5.3-preview.237 → 0.5.3-preview.239

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 (159) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +5 -5
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +2 -2
  14. package/.next/server/app/_not-found.rsc +2 -2
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/admin.html +2 -2
  23. package/.next/server/app/admin.rsc +2 -2
  24. package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
  25. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  27. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  29. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  30. package/.next/server/app/index.html +2 -2
  31. package/.next/server/app/index.rsc +3 -3
  32. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  33. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  34. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  35. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  36. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  37. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/login.html +2 -2
  39. package/.next/server/app/login.rsc +3 -3
  40. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  41. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  45. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  46. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/logs.html +2 -2
  48. package/.next/server/app/logs.rsc +2 -2
  49. package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
  50. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  52. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  53. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  54. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  55. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/messages.html +2 -2
  57. package/.next/server/app/messages.rsc +2 -2
  58. package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
  59. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  60. package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
  61. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  62. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  63. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  64. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/node.html +2 -2
  66. package/.next/server/app/node.rsc +2 -2
  67. package/.next/server/app/node.segments/_full.segment.rsc +2 -2
  68. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  69. package/.next/server/app/node.segments/_index.segment.rsc +2 -2
  70. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  71. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  72. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  73. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/nodes.html +2 -2
  75. package/.next/server/app/nodes.rsc +2 -2
  76. package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
  77. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  78. package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
  79. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  80. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  81. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  82. package/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/server-logs.html +2 -2
  85. package/.next/server/app/server-logs.rsc +2 -2
  86. package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
  87. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  88. package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
  89. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  90. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  91. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  93. package/.next/server/app/settings/networks.html +2 -2
  94. package/.next/server/app/settings/networks.rsc +2 -2
  95. package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
  96. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  97. package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
  98. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  99. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  100. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  101. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  102. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/settings/tokens.html +2 -2
  105. package/.next/server/app/settings/tokens.rsc +2 -2
  106. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
  109. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  110. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  111. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  112. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  113. package/.next/server/app/settings.html +2 -2
  114. package/.next/server/app/settings.rsc +3 -3
  115. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  116. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  117. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  118. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  119. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  120. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  121. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/tasks.html +2 -2
  124. package/.next/server/app/tasks.rsc +2 -2
  125. package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
  126. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  127. package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
  128. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  129. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  130. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  131. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  132. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  133. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
  134. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  135. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  136. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  137. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  138. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  139. package/.next/server/middleware-build-manifest.js +3 -3
  140. package/.next/server/pages/404.html +2 -2
  141. package/.next/server/pages/500.html +1 -1
  142. package/.next/static/chunks/{0lzwdtpbqeqj~.js → 01su03f_5rcrd.js} +1 -1
  143. package/.next/static/chunks/{11tk_38q_2lna.js → 05n0~r5~-ou2y.js} +1 -1
  144. package/.next/static/chunks/{17mz9c2sitd~k.js → 0j9354kv3o68q.js} +1 -1
  145. package/.next/static/chunks/{0p1leb36q03nh.js → 0th40yvc~_2.9.js} +1 -1
  146. package/.next/static/chunks/{0pe_uuf7xb81p.css → 0xam8-c13i0hj.css} +1 -1
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +25 -3
  150. package/app/globals.css +34 -2
  151. package/package.json +1 -1
  152. package/scripts/topo-h2-triple-axis-breath-test.mjs +138 -0
  153. package/scripts/topo-r717-triple-axis-pair-pattern-test.mjs +113 -0
  154. package/scripts/topo-respiratory-patterns-catalog-test.mjs +4 -4
  155. package/scripts/topo-respiratory-triple-axis-surfaces-catalog-test.mjs +15 -4
  156. package/scripts/topo-watermark-triple-axis-breath-test.mjs +8 -3
  157. /package/.next/static/{FyN8BEKFX8B6CZ118lWgU → DwDrN4gYUg689hlv_u98L}/_buildManifest.js +0 -0
  158. /package/.next/static/{FyN8BEKFX8B6CZ118lWgU → DwDrN4gYUg689hlv_u98L}/_clientMiddlewareManifest.js +0 -0
  159. /package/.next/static/{FyN8BEKFX8B6CZ118lWgU → DwDrN4gYUg689hlv_u98L}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":285,"timestamp":411441659496,"id":4,"parentId":1,"tags":{},"startTime":1779219413906,"traceId":"5a6f27f56ffc3218"},{"name":"load-custom-routes","duration":485,"timestamp":411441659928,"id":5,"parentId":1,"tags":{},"startTime":1779219413906,"traceId":"5a6f27f56ffc3218"},{"name":"create-dist-dir","duration":738,"timestamp":411441660456,"id":6,"parentId":1,"tags":{},"startTime":1779219413907,"traceId":"5a6f27f56ffc3218"},{"name":"clean","duration":32341,"timestamp":411441661847,"id":7,"parentId":1,"tags":{},"startTime":1779219413908,"traceId":"5a6f27f56ffc3218"},{"name":"discover-routes","duration":37145,"timestamp":411441781107,"id":8,"parentId":1,"tags":{},"startTime":1779219414027,"traceId":"5a6f27f56ffc3218"},{"name":"create-root-mapping","duration":182,"timestamp":411441818354,"id":9,"parentId":1,"tags":{},"startTime":1779219414065,"traceId":"5a6f27f56ffc3218"},{"name":"generate-route-types","duration":21086,"timestamp":411441821697,"id":10,"parentId":1,"tags":{},"startTime":1779219414068,"traceId":"5a6f27f56ffc3218"},{"name":"public-dir-conflict-check","duration":108,"timestamp":411441842874,"id":11,"parentId":1,"tags":{},"startTime":1779219414089,"traceId":"5a6f27f56ffc3218"},{"name":"generate-routes-manifest","duration":5154,"timestamp":411441843139,"id":12,"parentId":1,"tags":{},"startTime":1779219414089,"traceId":"5a6f27f56ffc3218"},{"name":"run-turbopack","duration":6924650,"timestamp":411441854418,"id":14,"parentId":1,"tags":{},"startTime":1779219414101,"traceId":"5a6f27f56ffc3218"},{"name":"turbopack-build-events","duration":138,"timestamp":411442220958,"id":15,"parentId":1,"tags":{},"startTime":1779219414467,"traceId":"5a6f27f56ffc3218"},{"name":"run-typescript","duration":10395024,"timestamp":411448789029,"id":16,"parentId":1,"tags":{},"startTime":1779219421035,"traceId":"5a6f27f56ffc3218"},{"name":"generate-required-server-files","duration":2525,"timestamp":411459185572,"id":18,"parentId":1,"tags":{},"startTime":1779219431432,"traceId":"5a6f27f56ffc3218"},{"name":"check-static-error-page","duration":15102,"timestamp":411459372334,"id":20,"parentId":19,"tags":{},"startTime":1779219431619,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":557967,"timestamp":411459391687,"id":65,"parentId":22,"tags":{},"startTime":1779219431638,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":574532,"timestamp":411459375297,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779219431622,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":562035,"timestamp":411459393396,"id":69,"parentId":28,"tags":{},"startTime":1779219431640,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":576804,"timestamp":411459378727,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779219431625,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":592461,"timestamp":411459393967,"id":72,"parentId":32,"tags":{},"startTime":1779219431640,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":607099,"timestamp":411459379428,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779219431626,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":605205,"timestamp":411459394190,"id":73,"parentId":33,"tags":{},"startTime":1779219431640,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":619932,"timestamp":411459379550,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779219431626,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":610288,"timestamp":411459392089,"id":68,"parentId":27,"tags":{},"startTime":1779219431638,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":623886,"timestamp":411459378574,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779219431625,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":612243,"timestamp":411459394276,"id":74,"parentId":34,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":626943,"timestamp":411459379651,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779219431626,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":617489,"timestamp":411459394352,"id":76,"parentId":36,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":631657,"timestamp":411459380260,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779219431627,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":625961,"timestamp":411459394383,"id":77,"parentId":37,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":639937,"timestamp":411459380463,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779219431627,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":627797,"timestamp":411459393721,"id":70,"parentId":29,"tags":{},"startTime":1779219431640,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":642719,"timestamp":411459378857,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779219431625,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":630868,"timestamp":411459391958,"id":67,"parentId":26,"tags":{},"startTime":1779219431638,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":644434,"timestamp":411459378438,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779219431625,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":630436,"timestamp":411459394396,"id":78,"parentId":38,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":644274,"timestamp":411459380602,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779219431627,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":632674,"timestamp":411459394410,"id":79,"parentId":39,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":646425,"timestamp":411459380702,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779219431627,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":633625,"timestamp":411459394422,"id":80,"parentId":40,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":647292,"timestamp":411459380799,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779219431627,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":645818,"timestamp":411459394430,"id":81,"parentId":42,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":659133,"timestamp":411459381200,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779219431627,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":649513,"timestamp":411459394311,"id":75,"parentId":35,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":664109,"timestamp":411459379770,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779219431626,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":652109,"timestamp":411459394470,"id":84,"parentId":46,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":663153,"timestamp":411459383478,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779219431630,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":659060,"timestamp":411459394457,"id":83,"parentId":45,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":671808,"timestamp":411459381768,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779219431628,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":663718,"timestamp":411459394491,"id":86,"parentId":48,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":674540,"timestamp":411459383728,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779219431630,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":667703,"timestamp":411459394501,"id":87,"parentId":49,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":678417,"timestamp":411459383835,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779219431630,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":670579,"timestamp":411459391846,"id":66,"parentId":25,"tags":{},"startTime":1779219431638,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":684207,"timestamp":411459378251,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779219431625,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":669947,"timestamp":411459394442,"id":82,"parentId":44,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":682782,"timestamp":411459381651,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779219431628,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":672229,"timestamp":411459394508,"id":88,"parentId":50,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":682864,"timestamp":411459383915,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779219431630,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":673146,"timestamp":411459394520,"id":89,"parentId":51,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":683732,"timestamp":411459383988,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779219431630,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":675399,"timestamp":411459393892,"id":71,"parentId":30,"tags":{},"startTime":1779219431640,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":690325,"timestamp":411459379020,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779219431625,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":678511,"timestamp":411459394479,"id":85,"parentId":47,"tags":{},"startTime":1779219431641,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":689426,"timestamp":411459383631,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779219431630,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":674307,"timestamp":411459399997,"id":92,"parentId":41,"tags":{},"startTime":1779219431646,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":693470,"timestamp":411459380895,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779219431627,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":680519,"timestamp":411459401445,"id":93,"parentId":43,"tags":{},"startTime":1779219431648,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":700675,"timestamp":411459381358,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779219431628,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":695684,"timestamp":411459397985,"id":90,"parentId":24,"tags":{},"startTime":1779219431644,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":717907,"timestamp":411459375818,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779219431622,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":695794,"timestamp":411459399150,"id":91,"parentId":31,"tags":{},"startTime":1779219431645,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":715844,"timestamp":411459379150,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779219431625,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":734460,"timestamp":411459403730,"id":95,"parentId":52,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":753867,"timestamp":411459384412,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779219431631,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":741593,"timestamp":411459403792,"id":100,"parentId":58,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":759367,"timestamp":411459386091,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779219431632,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":748600,"timestamp":411459403742,"id":96,"parentId":53,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":767824,"timestamp":411459384588,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779219431631,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":748830,"timestamp":411459403756,"id":97,"parentId":54,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":767888,"timestamp":411459384759,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779219431631,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":754157,"timestamp":411459403918,"id":101,"parentId":59,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":771850,"timestamp":411459386289,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779219431633,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":757262,"timestamp":411459403941,"id":102,"parentId":61,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":774387,"timestamp":411459386867,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779219431633,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":758803,"timestamp":411459403963,"id":104,"parentId":63,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":775666,"timestamp":411459387144,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779219431633,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":761866,"timestamp":411459403784,"id":99,"parentId":56,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":780453,"timestamp":411459385239,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779219431632,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":763233,"timestamp":411459403950,"id":103,"parentId":62,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":780230,"timestamp":411459386996,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779219431633,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":748131,"timestamp":411459420505,"id":105,"parentId":60,"tags":{},"startTime":1779219431667,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":782202,"timestamp":411459386464,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779219431633,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":767008,"timestamp":411459403771,"id":98,"parentId":55,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":785843,"timestamp":411459384973,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779219431631,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":719385,"timestamp":411459452803,"id":106,"parentId":57,"tags":{},"startTime":1779219431699,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":786729,"timestamp":411459385499,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779219431632,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":789019,"timestamp":411459391256,"id":64,"parentId":21,"tags":{},"startTime":1779219431638,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":806527,"timestamp":411459373781,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779219431620,"traceId":"5a6f27f56ffc3218"},{"name":"is-page-static","duration":791121,"timestamp":411459403698,"id":94,"parentId":23,"tags":{},"startTime":1779219431650,"traceId":"5a6f27f56ffc3218"},{"name":"check-page","duration":819272,"timestamp":411459375591,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779219431622,"traceId":"5a6f27f56ffc3218"},{"name":"static-check","duration":823395,"timestamp":411459371506,"id":19,"parentId":1,"tags":{},"startTime":1779219431618,"traceId":"5a6f27f56ffc3218"}]
2
- [{"name":"write-routes-manifest","duration":658,"timestamp":411460208073,"id":108,"parentId":1,"tags":{},"startTime":1779219432454,"traceId":"5a6f27f56ffc3218"},{"name":"load-dotenv","duration":69,"timestamp":411460220739,"id":111,"parentId":110,"tags":{},"startTime":1779219432467,"traceId":"5a6f27f56ffc3218"},{"name":"run-export-path-map","duration":779,"timestamp":411460224071,"id":112,"parentId":110,"tags":{},"startTime":1779219432470,"traceId":"5a6f27f56ffc3218"},{"name":"next-export","duration":622964,"timestamp":411460218904,"id":110,"parentId":1,"tags":{},"startTime":1779219432465,"traceId":"5a6f27f56ffc3218"},{"name":"move-exported-app-not-found-","duration":650,"timestamp":411460845607,"id":113,"parentId":109,"tags":{},"startTime":1779219433092,"traceId":"5a6f27f56ffc3218"},{"name":"move-exported-app-global-error-","duration":422,"timestamp":411460846402,"id":114,"parentId":109,"tags":{},"startTime":1779219433093,"traceId":"5a6f27f56ffc3218"},{"name":"static-generation","duration":636933,"timestamp":411460212340,"id":109,"parentId":1,"tags":{},"startTime":1779219432459,"traceId":"5a6f27f56ffc3218"},{"name":"write-routes-manifest","duration":522,"timestamp":411460849597,"id":115,"parentId":1,"tags":{},"startTime":1779219433096,"traceId":"5a6f27f56ffc3218"},{"name":"print-tree-view","duration":5012,"timestamp":411460871906,"id":116,"parentId":1,"tags":{},"startTime":1779219433118,"traceId":"5a6f27f56ffc3218"},{"name":"write-route-bundle-stats","duration":13482,"timestamp":411460876956,"id":117,"parentId":1,"tags":{},"startTime":1779219433123,"traceId":"5a6f27f56ffc3218"},{"name":"telemetry-flush","duration":17431,"timestamp":411460890473,"id":118,"parentId":1,"tags":{},"startTime":1779219433137,"traceId":"5a6f27f56ffc3218"},{"name":"next-build","duration":19300607,"timestamp":411441607334,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779219413854,"traceId":"5a6f27f56ffc3218"}]
1
+ [{"name":"generate-buildid","duration":251,"timestamp":412154290384,"id":4,"parentId":1,"tags":{},"startTime":1779220126537,"traceId":"3b9c1d48e983b93c"},{"name":"load-custom-routes","duration":521,"timestamp":412154290776,"id":5,"parentId":1,"tags":{},"startTime":1779220126537,"traceId":"3b9c1d48e983b93c"},{"name":"create-dist-dir","duration":646,"timestamp":412154291342,"id":6,"parentId":1,"tags":{},"startTime":1779220126538,"traceId":"3b9c1d48e983b93c"},{"name":"clean","duration":32448,"timestamp":412154292824,"id":7,"parentId":1,"tags":{},"startTime":1779220126539,"traceId":"3b9c1d48e983b93c"},{"name":"discover-routes","duration":26464,"timestamp":412154403723,"id":8,"parentId":1,"tags":{},"startTime":1779220126650,"traceId":"3b9c1d48e983b93c"},{"name":"create-root-mapping","duration":138,"timestamp":412154430253,"id":9,"parentId":1,"tags":{},"startTime":1779220126677,"traceId":"3b9c1d48e983b93c"},{"name":"generate-route-types","duration":20323,"timestamp":412154433216,"id":10,"parentId":1,"tags":{},"startTime":1779220126679,"traceId":"3b9c1d48e983b93c"},{"name":"public-dir-conflict-check","duration":97,"timestamp":412154453631,"id":11,"parentId":1,"tags":{},"startTime":1779220126700,"traceId":"3b9c1d48e983b93c"},{"name":"generate-routes-manifest","duration":5650,"timestamp":412154453841,"id":12,"parentId":1,"tags":{},"startTime":1779220126700,"traceId":"3b9c1d48e983b93c"},{"name":"run-turbopack","duration":6357953,"timestamp":412154465292,"id":14,"parentId":1,"tags":{},"startTime":1779220126712,"traceId":"3b9c1d48e983b93c"},{"name":"turbopack-build-events","duration":130,"timestamp":412154798958,"id":15,"parentId":1,"tags":{},"startTime":1779220127045,"traceId":"3b9c1d48e983b93c"},{"name":"run-typescript","duration":10191944,"timestamp":412160839645,"id":16,"parentId":1,"tags":{},"startTime":1779220133086,"traceId":"3b9c1d48e983b93c"},{"name":"generate-required-server-files","duration":3824,"timestamp":412171033572,"id":18,"parentId":1,"tags":{},"startTime":1779220143280,"traceId":"3b9c1d48e983b93c"},{"name":"check-static-error-page","duration":15680,"timestamp":412171239099,"id":20,"parentId":19,"tags":{},"startTime":1779220143485,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":505685,"timestamp":412171258777,"id":65,"parentId":22,"tags":{},"startTime":1779220143505,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":522314,"timestamp":412171242334,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779220143489,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":547913,"timestamp":412171259148,"id":68,"parentId":27,"tags":{},"startTime":1779220143505,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":561465,"timestamp":412171245702,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779220143492,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":553619,"timestamp":412171259728,"id":72,"parentId":32,"tags":{},"startTime":1779220143506,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":566919,"timestamp":412171246513,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779220143493,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":559335,"timestamp":412171259257,"id":69,"parentId":28,"tags":{},"startTime":1779220143506,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":572821,"timestamp":412171245831,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779220143492,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":565577,"timestamp":412171259519,"id":70,"parentId":29,"tags":{},"startTime":1779220143506,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":579214,"timestamp":412171245953,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779220143492,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":583194,"timestamp":412171263290,"id":74,"parentId":34,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":599816,"timestamp":412171246747,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779220143493,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":590326,"timestamp":412171263202,"id":73,"parentId":33,"tags":{},"startTime":1779220143509,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":607022,"timestamp":412171246639,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779220143493,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":600959,"timestamp":412171258357,"id":64,"parentId":21,"tags":{},"startTime":1779220143505,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":618663,"timestamp":412171240728,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779220143487,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":606174,"timestamp":412171259031,"id":67,"parentId":26,"tags":{},"startTime":1779220143505,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":619689,"timestamp":412171245584,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779220143492,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":602140,"timestamp":412171263319,"id":75,"parentId":35,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":618633,"timestamp":412171246860,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779220143493,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":612138,"timestamp":412171263409,"id":79,"parentId":39,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":627791,"timestamp":412171247809,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779220143494,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":622219,"timestamp":412171258913,"id":66,"parentId":25,"tags":{},"startTime":1779220143505,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":635778,"timestamp":412171245407,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779220143492,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":621442,"timestamp":412171263422,"id":80,"parentId":40,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":637003,"timestamp":412171247918,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779220143494,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":621914,"timestamp":412171263381,"id":77,"parentId":37,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":637780,"timestamp":412171247566,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779220143494,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":624901,"timestamp":412171263447,"id":82,"parentId":44,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":639631,"timestamp":412171248777,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779220143495,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":629776,"timestamp":412171263434,"id":81,"parentId":42,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":644974,"timestamp":412171248292,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779220143495,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":631252,"timestamp":412171263469,"id":84,"parentId":46,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":644050,"timestamp":412171250734,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779220143497,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":632773,"timestamp":412171263456,"id":83,"parentId":45,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":647365,"timestamp":412171248913,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779220143495,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":638106,"timestamp":412171263504,"id":87,"parentId":49,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":650470,"timestamp":412171251182,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779220143497,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":639573,"timestamp":412171263517,"id":88,"parentId":50,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":651866,"timestamp":412171251275,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779220143498,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":646742,"timestamp":412171263490,"id":86,"parentId":48,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":659223,"timestamp":412171251062,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779220143497,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":647135,"timestamp":412171263340,"id":76,"parentId":36,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":663136,"timestamp":412171247376,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779220143494,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":647353,"timestamp":412171263530,"id":89,"parentId":51,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":659582,"timestamp":412171251355,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779220143498,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":649457,"timestamp":412171267613,"id":90,"parentId":24,"tags":{},"startTime":1779220143514,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":674256,"timestamp":412171242870,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779220143489,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":640277,"timestamp":412171278656,"id":93,"parentId":43,"tags":{},"startTime":1779220143525,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":670513,"timestamp":412171248469,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779220143495,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":659231,"timestamp":412171263482,"id":85,"parentId":47,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":671837,"timestamp":412171250916,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779220143497,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":664718,"timestamp":412171259668,"id":71,"parentId":30,"tags":{},"startTime":1779220143506,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":678325,"timestamp":412171246114,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779220143492,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":662429,"timestamp":412171273135,"id":92,"parentId":41,"tags":{},"startTime":1779220143519,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":687581,"timestamp":412171248041,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779220143494,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":666245,"timestamp":412171272217,"id":91,"parentId":31,"tags":{},"startTime":1779220143518,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":692266,"timestamp":412171246249,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779220143493,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":690889,"timestamp":412171263399,"id":78,"parentId":38,"tags":{},"startTime":1779220143510,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":706650,"timestamp":412171247705,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779220143494,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":677625,"timestamp":412171285073,"id":100,"parentId":58,"tags":{},"startTime":1779220143531,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":709425,"timestamp":412171253335,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779220143500,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":685199,"timestamp":412171285196,"id":101,"parentId":59,"tags":{},"startTime":1779220143531,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":716892,"timestamp":412171253564,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779220143500,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":692672,"timestamp":412171285216,"id":102,"parentId":61,"tags":{},"startTime":1779220143531,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":723744,"timestamp":412171254219,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779220143500,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":707197,"timestamp":412171285230,"id":103,"parentId":62,"tags":{},"startTime":1779220143532,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":738113,"timestamp":412171254379,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779220143501,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":707656,"timestamp":412171285019,"id":96,"parentId":53,"tags":{},"startTime":1779220143531,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":742026,"timestamp":412171251915,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779220143498,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":709333,"timestamp":412171284954,"id":94,"parentId":23,"tags":{},"startTime":1779220143531,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":751724,"timestamp":412171242618,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779220143489,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":711695,"timestamp":412171284985,"id":95,"parentId":52,"tags":{},"startTime":1779220143531,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":744975,"timestamp":412171251756,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779220143498,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":701497,"timestamp":412171298624,"id":105,"parentId":57,"tags":{},"startTime":1779220143545,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":747395,"timestamp":412171252762,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779220143499,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":715652,"timestamp":412171285244,"id":104,"parentId":63,"tags":{},"startTime":1779220143532,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":746407,"timestamp":412171254530,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779220143501,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":696671,"timestamp":412171308423,"id":106,"parentId":60,"tags":{},"startTime":1779220143555,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":751394,"timestamp":412171253745,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779220143500,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":737346,"timestamp":412171285060,"id":99,"parentId":56,"tags":{},"startTime":1779220143531,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":769937,"timestamp":412171252522,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779220143499,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":740049,"timestamp":412171285046,"id":98,"parentId":55,"tags":{},"startTime":1779220143531,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":772846,"timestamp":412171252298,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779220143499,"traceId":"3b9c1d48e983b93c"},{"name":"is-page-static","duration":752082,"timestamp":412171285033,"id":97,"parentId":54,"tags":{},"startTime":1779220143531,"traceId":"3b9c1d48e983b93c"},{"name":"check-page","duration":785077,"timestamp":412171252089,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779220143498,"traceId":"3b9c1d48e983b93c"},{"name":"static-check","duration":799281,"timestamp":412171237929,"id":19,"parentId":1,"tags":{},"startTime":1779220143484,"traceId":"3b9c1d48e983b93c"}]
2
+ [{"name":"write-routes-manifest","duration":480,"timestamp":412172046613,"id":108,"parentId":1,"tags":{},"startTime":1779220144293,"traceId":"3b9c1d48e983b93c"},{"name":"load-dotenv","duration":46,"timestamp":412172058284,"id":111,"parentId":110,"tags":{},"startTime":1779220144305,"traceId":"3b9c1d48e983b93c"},{"name":"run-export-path-map","duration":530,"timestamp":412172061552,"id":112,"parentId":110,"tags":{},"startTime":1779220144308,"traceId":"3b9c1d48e983b93c"},{"name":"next-export","duration":580863,"timestamp":412172057024,"id":110,"parentId":1,"tags":{},"startTime":1779220144303,"traceId":"3b9c1d48e983b93c"},{"name":"move-exported-app-not-found-","duration":561,"timestamp":412172641161,"id":113,"parentId":109,"tags":{},"startTime":1779220144887,"traceId":"3b9c1d48e983b93c"},{"name":"move-exported-app-global-error-","duration":513,"timestamp":412172641839,"id":114,"parentId":109,"tags":{},"startTime":1779220144888,"traceId":"3b9c1d48e983b93c"},{"name":"static-generation","duration":593316,"timestamp":412172051178,"id":109,"parentId":1,"tags":{},"startTime":1779220144297,"traceId":"3b9c1d48e983b93c"},{"name":"write-routes-manifest","duration":1618,"timestamp":412172644780,"id":115,"parentId":1,"tags":{},"startTime":1779220144891,"traceId":"3b9c1d48e983b93c"},{"name":"print-tree-view","duration":4849,"timestamp":412172662357,"id":116,"parentId":1,"tags":{},"startTime":1779220144909,"traceId":"3b9c1d48e983b93c"},{"name":"write-route-bundle-stats","duration":12583,"timestamp":412172667243,"id":117,"parentId":1,"tags":{},"startTime":1779220144914,"traceId":"3b9c1d48e983b93c"},{"name":"telemetry-flush","duration":20437,"timestamp":412172679852,"id":118,"parentId":1,"tags":{},"startTime":1779220144926,"traceId":"3b9c1d48e983b93c"},{"name":"next-build","duration":18462814,"timestamp":412154237507,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779220126484,"traceId":"3b9c1d48e983b93c"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6924650,"timestamp":411441854418,"id":14,"parentId":1,"tags":{},"startTime":1779219414101,"traceId":"5a6f27f56ffc3218"},{"name":"turbopack-build-events","duration":138,"timestamp":411442220958,"id":15,"parentId":1,"tags":{},"startTime":1779219414467,"traceId":"5a6f27f56ffc3218"},{"name":"run-typescript","duration":10395024,"timestamp":411448789029,"id":16,"parentId":1,"tags":{},"startTime":1779219421035,"traceId":"5a6f27f56ffc3218"},{"name":"static-check","duration":823395,"timestamp":411459371506,"id":19,"parentId":1,"tags":{},"startTime":1779219431618,"traceId":"5a6f27f56ffc3218"},{"name":"static-generation","duration":636933,"timestamp":411460212340,"id":109,"parentId":1,"tags":{},"startTime":1779219432459,"traceId":"5a6f27f56ffc3218"},{"name":"telemetry-flush","duration":17431,"timestamp":411460890473,"id":118,"parentId":1,"tags":{},"startTime":1779219433137,"traceId":"5a6f27f56ffc3218"},{"name":"next-build","duration":19300607,"timestamp":411441607334,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779219413854,"traceId":"5a6f27f56ffc3218"}]
1
+ [{"name":"run-turbopack","duration":6357953,"timestamp":412154465292,"id":14,"parentId":1,"tags":{},"startTime":1779220126712,"traceId":"3b9c1d48e983b93c"},{"name":"turbopack-build-events","duration":130,"timestamp":412154798958,"id":15,"parentId":1,"tags":{},"startTime":1779220127045,"traceId":"3b9c1d48e983b93c"},{"name":"run-typescript","duration":10191944,"timestamp":412160839645,"id":16,"parentId":1,"tags":{},"startTime":1779220133086,"traceId":"3b9c1d48e983b93c"},{"name":"static-check","duration":799281,"timestamp":412171237929,"id":19,"parentId":1,"tags":{},"startTime":1779220143484,"traceId":"3b9c1d48e983b93c"},{"name":"static-generation","duration":593316,"timestamp":412172051178,"id":109,"parentId":1,"tags":{},"startTime":1779220144297,"traceId":"3b9c1d48e983b93c"},{"name":"telemetry-flush","duration":20437,"timestamp":412172679852,"id":118,"parentId":1,"tags":{},"startTime":1779220144926,"traceId":"3b9c1d48e983b93c"},{"name":"next-build","duration":18462814,"timestamp":412154237507,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779220126484,"traceId":"3b9c1d48e983b93c"}]
@@ -4933,7 +4933,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
4933
4933
  data-topo-respiratory-dual-axis-surfaces={JSON.stringify([
4934
4934
  { anchor: "kicker", cadence_s: 6, axes: ["opacity", "transform-scale", "text-shadow"] },
4935
4935
  { anchor: "zoom-level", cadence_s: 9, axes: ["opacity", "transform-scale"] },
4936
- { anchor: "H2", cadence_s: 10, axes: ["opacity", "transform-scale"] },
4936
+ { anchor: "H2", cadence_s: 10, axes: ["opacity", "transform-scale", "text-shadow"] },
4937
4937
  { anchor: "watermark", cadence_s: 6, axes: ["opacity", "letter-spacing", "text-shadow"] },
4938
4938
  { anchor: "recent", cadence_s: 8, axes: ["opacity", "font-size"] },
4939
4939
  { anchor: "legend", cadence_s: 8, axes: ["opacity", "font-size"] },
@@ -4974,12 +4974,33 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
4974
4974
  no DOM thrash. R710/R716 unchanged (each catalog is
4975
4975
  orthogonal). Future rounds: when adding a new structural
4976
4976
  pattern, append to this list as the doc step. */
4977
+ /* Round 724 / Loop — 6TH pattern entry added: `triple-axis-pair`.
4978
+ R721 made kicker the first triple-axis surface; R722 made
4979
+ watermark the second; R723 surfaced the triple-axis tier
4980
+ as its own catalog. R724 promotes the "6 s triple-axis
4981
+ pair" observation to a NAMED pattern in R717, completing
4982
+ the family's pattern-axis documentation of this structural
4983
+ motif (both 6 s, both with text-shadow, both sparse-hover
4984
+ read-target text).
4985
+
4986
+ Anchors overlap with prior patterns: kicker is also in
4987
+ "title-block" (cadences 5/6/10/11), watermark text is
4988
+ also in "canvas-brand-pair" (cadences 6/7/13/15). That
4989
+ non-exclusivity is INTENDED — patterns slice the family
4990
+ by STRUCTURAL SHAPE, not partition by tier. The "triple-
4991
+ axis-pair" pattern is orthogonal to the other 5: it
4992
+ groups by AXIS COUNT + CADENCE COINCIDENCE rather than
4993
+ by spatial role.
4994
+
4995
+ Cross-check (R724 test): the anchors here must equal
4996
+ R723's triple-axis-surfaces anchor set. */
4977
4997
  data-topo-respiratory-patterns={JSON.stringify([
4978
4998
  { name: "title-block", cadences: [5, 6, 10, 11], anchors: ["brand logo", "kicker", "H2 section title", "title-block envelope"], shape: "trio-with-envelope" },
4979
4999
  { name: "panel-pair", cadences: [8], anchors: ["recent title", "legend title"], shape: "parity" },
4980
5000
  { 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" },
4981
5001
  { name: "canvas-brand-pair", cadences: [6, 7, 13, 15], anchors: ["watermark text", "crescent inner", "crescent wrapper envelope", "watermark wrapper envelope"], shape: "coprime-nested-pair" },
4982
5002
  { name: "background", cadences: [3, 4], anchors: ["row hot", "hub idle"], shape: "baseline-pair" },
5003
+ { name: "triple-axis-pair", cadences: [6], anchors: ["kicker", "watermark text"], shape: "6s-triple-pair" },
4983
5004
  ])}
4984
5005
  /* Round 720 / Loop — 4TH orthogonal meta-doc catalog: tiers.
4985
5006
  Joins R710 (cadences) + R716 (axes) + R717 (patterns) to
@@ -5054,8 +5075,9 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5054
5075
  triple-axis surface arrives at a different cadence and
5055
5076
  requires the pattern to be the discriminator. */
5056
5077
  data-topo-respiratory-triple-axis-surfaces={JSON.stringify([
5057
- { anchor: "kicker", cadence_s: 6, axes: ["opacity", "transform-scale", "text-shadow"] },
5058
- { anchor: "watermark", cadence_s: 6, axes: ["opacity", "letter-spacing", "text-shadow"] },
5078
+ { anchor: "kicker", cadence_s: 6, axes: ["opacity", "transform-scale", "text-shadow"] },
5079
+ { anchor: "watermark", cadence_s: 6, axes: ["opacity", "letter-spacing", "text-shadow"] },
5080
+ { anchor: "H2", cadence_s: 10, axes: ["opacity", "transform-scale", "text-shadow"] },
5059
5081
  ])}
5060
5082
  data-topo-pinned-aspect={(() => {
5061
5083
  const aspects: string[] = [];
package/app/globals.css CHANGED
@@ -1423,9 +1423,41 @@ body {
1423
1423
  needing a second class or animation. Pattern budget: prefer single-
1424
1424
  axis on most anchors (visual hierarchy) and reserve dual-axis for
1425
1425
  primary identity surfaces (H2 here = first primary-identity dual). */
1426
+ /* Round 725 — H2 section title becomes the 3RD triple-axis surface,
1427
+ FIRST triple-axis member at a NON-6 s cadence (10 s). Establishes
1428
+ that the triple-axis TIER is multi-cadence rather than 6 s-locked —
1429
+ the R724 `triple-axis-pair` pattern stays valid for kicker+watermark
1430
+ at 6 s; H2 joins the triple-axis TIER as a solo 10 s member.
1431
+
1432
+ H2's prior dual-axis (R702 opacity + R711 transform-scale @ 10 s)
1433
+ gains a 3rd CSS-animated axis: text-shadow glow at 10 s in phase.
1434
+ Reads as a slow inhale glow on the section heading — calmer than
1435
+ the 6 s pair (kicker/watermark) because H2's slower cadence keeps
1436
+ the glow appearance interval at 5 s (vs 3 s for the 6 s tier).
1437
+
1438
+ Glow tuning vs kicker (R721) and watermark (R722):
1439
+ kicker blur 6 px, alpha 0.30 @ 6 s
1440
+ watermark blur 8 px, alpha 0.20 @ 6 s
1441
+ H2 blur 8 px, alpha 0.22 @ 10 s ← this round
1442
+ H2 sits between the two at alpha; its larger fontSize (section
1443
+ heading, much bigger than kicker/watermark) needs a wider blur
1444
+ (8 px to match watermark) but a slightly higher alpha than
1445
+ watermark (0.22 vs 0.20) because at H2's slower 10 s cadence the
1446
+ glow gets a longer dwell time at peak — proportionally tighter
1447
+ alpha would feel under-emphasised vs the 6 s pair's snappier peaks.
1448
+
1449
+ The triple-axis tier now has 3 members across 2 cadences:
1450
+ 6 s kicker + watermark (R724 "triple-axis-pair" pattern)
1451
+ 10 s H2 (solo)
1452
+ R725 doesn't add a new R717 pattern entry — H2 is a solo, not
1453
+ a pair. R723 catalog (triple-axis-surfaces) extends to 3 entries.
1454
+
1455
+ prefers-reduced-motion guard already in place on the existing
1456
+ R702 H2 breath class; this round's text-shadow axis joins the
1457
+ same animation rule and is neutralised by the same @media block. */
1426
1458
  @keyframes anet-topo-section-title-breath-kf {
1427
- 0%, 100% { opacity: 1; transform: scale(1); }
1428
- 50% { opacity: 0.88; transform: scale(0.997); }
1459
+ 0%, 100% { opacity: 1; transform: scale(1); text-shadow: none; }
1460
+ 50% { opacity: 0.88; transform: scale(0.997); text-shadow: 0 0 8px rgba(34, 211, 238, 0.22); }
1429
1461
  }
1430
1462
  .anet-topo-section-title-breath {
1431
1463
  animation: anet-topo-section-title-breath-kf 10s ease-in-out infinite;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.237",
3
+ "version": "0.5.3-preview.239",
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,138 @@
1
+ /* Round 725 — H2 section title becomes the 3RD triple-axis breath
2
+ * surface; FIRST triple-axis member at a NON-6 s cadence (10 s).
3
+ * Establishes that the triple-axis TIER is multi-cadence rather
4
+ * than 6 s-locked. R724's `triple-axis-pair` pattern stays valid
5
+ * (kicker + watermark still pair at 6 s); H2 joins the tier as a
6
+ * solo 10 s member.
7
+ *
8
+ * H2's 3 axes (all at 10 s in phase):
9
+ * R702 opacity (1 ↔ 0.88)
10
+ * R711 transform-scale (1 ↔ 0.997)
11
+ * R725 text-shadow (none ↔ 0 0 8 px rgba(34, 211, 238, 0.22))
12
+ *
13
+ * Glow tuning: 8 px blur (matches watermark) + 0.22 alpha (between
14
+ * kicker 0.30 and watermark 0.20). Wider blur for larger fontSize;
15
+ * slightly higher alpha than watermark because at 10 s the dwell
16
+ * time at peak is longer than the 6 s pair, so a tighter alpha
17
+ * would feel under-emphasised vs the snappier 6 s peaks.
18
+ *
19
+ * Assertions:
20
+ * - CSS keyframes 0%/100% has text-shadow: none with R702 opacity 1 + R711 scale(1)
21
+ * - CSS keyframes 50% has text-shadow: 0 0 8 px rgba(34, 211, 238, 0.22)
22
+ * with R702 opacity 0.88 + R711 scale(0.997)
23
+ * - .anet-topo-section-title-breath rule still binds 10 s cadence (R702 preserved)
24
+ * - prefers-reduced-motion guard still present
25
+ * - runtime H2 has the breath class
26
+ * - R716 catalog H2 entry axes = ["opacity", "transform-scale", "text-shadow"]
27
+ * - R723 catalog has 3 entries (was 2 pre-R725)
28
+ * - R723 catalog includes H2 with cadence 10 + axes triple
29
+ * - text-shadow now appears on 3 surfaces (kicker + watermark + H2)
30
+ * - the 6 s pair (kicker + watermark) is still INTACT inside R723
31
+ */
32
+ import { chromium } from 'playwright';
33
+ import { readFileSync } from 'node:fs';
34
+
35
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
36
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
37
+
38
+ const browser = await chromium.launch({ headless: true });
39
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
40
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
41
+ await ctx.addInitScript(() => {
42
+ try {
43
+ localStorage.setItem('anet-theme', 'cyber');
44
+ localStorage.setItem('anet-topo-layout', 'ring');
45
+ sessionStorage.setItem('anet_v3_auth', '1');
46
+ } catch {}
47
+ });
48
+ await ctx.route('**/api/hub/status*', async (route) => {
49
+ const r = await route.fetch();
50
+ const b = await r.json();
51
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
52
+ const mk = (alias) => ({
53
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
54
+ network_id: nid, project_dir: null,
55
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
56
+ });
57
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
58
+ });
59
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
60
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
61
+ const page = await ctx.newPage();
62
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
63
+ await page.waitForSelector('.anet-topo-section-title-breath', { timeout: 15000, state: 'attached' });
64
+ await page.waitForTimeout(300);
65
+
66
+ const runtimeState = await page.evaluate(() => {
67
+ const h2 = document.querySelector('.anet-topo-section-title-breath');
68
+ if (!h2) return null;
69
+ const cs = getComputedStyle(h2);
70
+ const svg = document.querySelector('[data-topo-canvas-aria]');
71
+ return {
72
+ has_class: h2.classList.contains('anet-topo-section-title-breath'),
73
+ anim_name: cs.animationName,
74
+ anim_duration: cs.animationDuration,
75
+ dual_axis: svg?.getAttribute('data-topo-respiratory-dual-axis-surfaces') ?? null,
76
+ triple_axis: svg?.getAttribute('data-topo-respiratory-triple-axis-surfaces') ?? null,
77
+ };
78
+ });
79
+
80
+ await browser.close();
81
+
82
+ const cssSrc = readFileSync('/home/vansin/agent-network-dashboard/app/globals.css', 'utf8');
83
+ const cssKf0_Triple = /@keyframes anet-topo-section-title-breath-kf\s*\{[\s\S]*?0%,\s*100%\s*\{[\s\S]*?opacity:\s*1[\s\S]*?transform:\s*scale\(1\)[\s\S]*?text-shadow:\s*none[\s\S]*?\}/.test(cssSrc);
84
+ const cssKf50_Triple = /@keyframes anet-topo-section-title-breath-kf\s*\{[\s\S]*?50%\s*\{[\s\S]*?opacity:\s*0\.88[\s\S]*?transform:\s*scale\(0\.997\)[\s\S]*?text-shadow:\s*0\s+0\s+8px\s+rgba\(34,\s*211,\s*238,\s*0\.22\)/.test(cssSrc);
85
+ const cssClassBound10s = /\.anet-topo-section-title-breath\s*\{[\s\S]*?animation:\s*anet-topo-section-title-breath-kf\s+10s\s+ease-in-out\s+infinite/.test(cssSrc);
86
+ const cssReducedMotion = /@media\s*\(prefers-reduced-motion:\s*reduce\)\s*\{[\s\S]*?\.anet-topo-section-title-breath\s*\{\s*animation:\s*none/.test(cssSrc);
87
+
88
+ const runtimeAnimOk = runtimeState?.anim_name === 'anet-topo-section-title-breath-kf' || runtimeState?.anim_name === 'none';
89
+
90
+ let dualAxisCatalog = null;
91
+ let tripleAxisCatalog = null;
92
+ try {
93
+ dualAxisCatalog = JSON.parse(runtimeState?.dual_axis ?? '');
94
+ tripleAxisCatalog = JSON.parse(runtimeState?.triple_axis ?? '');
95
+ } catch {}
96
+
97
+ const h2DualAxisEntry = Array.isArray(dualAxisCatalog) ? dualAxisCatalog.find(e => e.anchor === 'H2') : null;
98
+ const h2TripleAxes_inR716 = !!h2DualAxisEntry
99
+ && Array.isArray(h2DualAxisEntry.axes)
100
+ && JSON.stringify(h2DualAxisEntry.axes) === JSON.stringify(['opacity', 'transform-scale', 'text-shadow']);
101
+
102
+ const h2TripleEntry = Array.isArray(tripleAxisCatalog) ? tripleAxisCatalog.find(e => e.anchor === 'H2') : null;
103
+ const h2InTripleCatalog = !!h2TripleEntry
104
+ && h2TripleEntry.cadence_s === 10
105
+ && JSON.stringify(h2TripleEntry.axes) === JSON.stringify(['opacity', 'transform-scale', 'text-shadow']);
106
+
107
+ const textShadowAnchors = Array.isArray(dualAxisCatalog)
108
+ ? dualAxisCatalog.filter(e => Array.isArray(e.axes) && e.axes.includes('text-shadow')).map(e => e.anchor).sort()
109
+ : [];
110
+ const textShadowOnThree = JSON.stringify(textShadowAnchors) === JSON.stringify(['H2', 'kicker', 'watermark']);
111
+
112
+ const sixSecondAnchors = Array.isArray(tripleAxisCatalog)
113
+ ? tripleAxisCatalog.filter(e => e.cadence_s === 6).map(e => e.anchor).sort()
114
+ : [];
115
+ const sixSecondPairIntact = JSON.stringify(sixSecondAnchors) === JSON.stringify(['kicker', 'watermark']);
116
+
117
+ const results = {
118
+ h2_present: !!runtimeState,
119
+ has_breath_class: runtimeState?.has_class === true,
120
+ runtime_anim_h2_kf: runtimeAnimOk,
121
+ css_0_100_triple_axis: cssKf0_Triple,
122
+ css_50_triple_axis_with_glow: cssKf50_Triple,
123
+ css_class_binds_10s: cssClassBound10s,
124
+ css_reduced_motion_guard: cssReducedMotion,
125
+ r716_h2_three_axes: h2TripleAxes_inR716,
126
+ r723_three_entries: Array.isArray(tripleAxisCatalog) && tripleAxisCatalog.length === 3,
127
+ r723_h2_entry: h2InTripleCatalog,
128
+ text_shadow_on_three_surfaces: textShadowOnThree,
129
+ six_second_pair_still_intact: sixSecondPairIntact,
130
+ };
131
+ const ok = Object.values(results).every(Boolean);
132
+ console.log(`${ok ? '✅' : '❌'} R725 H2 triple-axis breath (3rd triple-axis surface, first non-6s @ 10s):`,
133
+ JSON.stringify(results, null, 2),
134
+ `\n H2 R716 entry: ${JSON.stringify(h2DualAxisEntry)}`,
135
+ `\n H2 R723 entry: ${JSON.stringify(h2TripleEntry)}`,
136
+ `\n text-shadow surfaces: ${JSON.stringify(textShadowAnchors)}`,
137
+ `\n 6s pair: ${JSON.stringify(sixSecondAnchors)}`);
138
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,113 @@
1
+ /* Round 724 — 6th entry added to R717 patterns catalog:
2
+ * `triple-axis-pair` with shape `6s-triple-pair`. Formalizes the
3
+ * structural motif previously implicit across R721/R722/R723:
4
+ * kicker + watermark text — both at 6 s, both with text-shadow as
5
+ * the 3rd axis, both sparse-hover read-target text.
6
+ *
7
+ * Cross-validates against R723 triple-axis-surfaces catalog (the
8
+ * authoritative axis-count index): the anchors in this pattern entry
9
+ * must equal R723's anchor set.
10
+ *
11
+ * Assertions:
12
+ * - R717 patterns has exactly 6 entries (was 5 before R724)
13
+ * - One entry named "triple-axis-pair" exists
14
+ * - Its cadences = [6]
15
+ * - Its shape = "6s-triple-pair"
16
+ * - Its anchors = ["kicker", "watermark text"] (order preserved)
17
+ * - Cross-check: R723 triple-axis-surfaces anchor set, after
18
+ * normalising "watermark" → "watermark text" (the R723 catalog
19
+ * uses the short anchor key; R717 uses the full rolodex anchor
20
+ * name), equals this pattern's anchors
21
+ * - Anchor non-exclusivity (intended): kicker also appears in
22
+ * "title-block" pattern; "watermark text" also appears in
23
+ * "canvas-brand-pair" pattern
24
+ */
25
+ import { chromium } from 'playwright';
26
+ import { readFileSync } from 'node:fs';
27
+
28
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
29
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
30
+
31
+ const browser = await chromium.launch({ headless: true });
32
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
33
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
34
+ await ctx.addInitScript(() => {
35
+ try {
36
+ localStorage.setItem('anet-theme', 'cyber');
37
+ localStorage.setItem('anet-topo-layout', 'ring');
38
+ sessionStorage.setItem('anet_v3_auth', '1');
39
+ } catch {}
40
+ });
41
+ await ctx.route('**/api/hub/status*', async (route) => {
42
+ const r = await route.fetch();
43
+ const b = await r.json();
44
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
45
+ const mk = (alias) => ({
46
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
47
+ network_id: nid, project_dir: null,
48
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
49
+ });
50
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
51
+ });
52
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
53
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
54
+ const page = await ctx.newPage();
55
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
56
+ await page.waitForSelector('[data-topo-canvas-aria]', { timeout: 15000, state: 'attached' });
57
+ await page.waitForTimeout(300);
58
+
59
+ const runtimeAttrs = await page.evaluate(() => {
60
+ const svg = document.querySelector('[data-topo-canvas-aria]');
61
+ return {
62
+ patterns: svg?.getAttribute('data-topo-respiratory-patterns') ?? null,
63
+ triple: svg?.getAttribute('data-topo-respiratory-triple-axis-surfaces') ?? null,
64
+ };
65
+ });
66
+
67
+ await browser.close();
68
+
69
+ let patterns = null;
70
+ let triple = null;
71
+ try {
72
+ patterns = JSON.parse(runtimeAttrs.patterns ?? '');
73
+ triple = JSON.parse(runtimeAttrs.triple ?? '');
74
+ } catch {}
75
+
76
+ const pairEntry = Array.isArray(patterns) ? patterns.find(p => p.name === 'triple-axis-pair') : null;
77
+ const titleBlockEntry = Array.isArray(patterns) ? patterns.find(p => p.name === 'title-block') : null;
78
+ const canvasBrandPairEntry = Array.isArray(patterns) ? patterns.find(p => p.name === 'canvas-brand-pair') : null;
79
+
80
+ /* R725 extended R723 to 3 entries (H2 added at 10 s). The strict
81
+ * equality between R723's anchor set and the R717 pair anchors no
82
+ * longer holds — R723 is the full triple-axis SUPERSET now, the
83
+ * pair is a subset. Widen the cross-check: every pair anchor must
84
+ * exist in R723 (mapping watermark → watermark text), AND R723's
85
+ * 6 s subset (members with cadence_s === 6) must equal the pair. */
86
+ const r723AnchorsNormalised = Array.isArray(triple)
87
+ ? triple.map(e => e.anchor === 'watermark' ? 'watermark text' : e.anchor)
88
+ : [];
89
+ const r723SixSecAnchorsNormalised = Array.isArray(triple)
90
+ ? triple.filter(e => e.cadence_s === 6).map(e => e.anchor === 'watermark' ? 'watermark text' : e.anchor).sort()
91
+ : [];
92
+ const pairAnchorsSorted = pairEntry?.anchors ? [...pairEntry.anchors].sort() : [];
93
+ const pairSubsetOfR723 = Array.isArray(pairEntry?.anchors)
94
+ && pairEntry.anchors.every(a => r723AnchorsNormalised.includes(a));
95
+ const r723SixSecondSubsetEqualsPair = JSON.stringify(r723SixSecAnchorsNormalised) === JSON.stringify(pairAnchorsSorted);
96
+
97
+ const results = {
98
+ patterns_has_6_entries: Array.isArray(patterns) && patterns.length === 6,
99
+ pair_entry_exists: !!pairEntry,
100
+ pair_cadences_is_6: JSON.stringify(pairEntry?.cadences) === JSON.stringify([6]),
101
+ pair_shape_correct: pairEntry?.shape === '6s-triple-pair',
102
+ pair_anchors_correct: JSON.stringify(pairEntry?.anchors) === JSON.stringify(['kicker', 'watermark text']),
103
+ pair_is_subset_of_r723: pairSubsetOfR723,
104
+ r723_6s_subset_equals_pair: r723SixSecondSubsetEqualsPair,
105
+ kicker_also_in_title_block: Array.isArray(titleBlockEntry?.anchors) && titleBlockEntry.anchors.includes('kicker'),
106
+ watermark_also_in_canvas_brand: Array.isArray(canvasBrandPairEntry?.anchors) && canvasBrandPairEntry.anchors.includes('watermark text'),
107
+ };
108
+ const ok = Object.values(results).every(Boolean);
109
+ console.log(`${ok ? '✅' : '❌'} R724 R717 patterns +1: triple-axis-pair (formalizes the 6s triple-axis pair structural motif):`,
110
+ JSON.stringify(results, null, 2),
111
+ `\n pair entry: ${JSON.stringify(pairEntry)}`,
112
+ `\n R723 anchors (normalised): ${JSON.stringify(r723AnchorsNormalised)}`);
113
+ 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', 'tiered-with-quintet', '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', '6s-triple-pair'].includes(p.shape))
75
75
  : false;
76
76
 
77
77
  const totalAnchorCount = Array.isArray(patterns)
@@ -86,16 +86,16 @@ const patternsCadences = Array.isArray(patterns)
86
86
  const allPatternCadencesInRolodex = [...patternsCadences].every(c => rolodexCadences.has(c));
87
87
 
88
88
  const patternNames = Array.isArray(patterns) ? patterns.map(p => p.name).sort() : [];
89
- const expectedNames = ['background', 'canvas-brand-pair', 'chrome-strip', 'panel-pair', 'title-block'];
89
+ const expectedNames = ['background', 'canvas-brand-pair', 'chrome-strip', 'panel-pair', 'title-block', 'triple-axis-pair'];
90
90
 
91
91
  const results = {
92
92
  attr_present: !!runtimeAttrs.patterns,
93
93
  json_parses: patterns !== null && parseError === null,
94
94
  is_array: Array.isArray(patterns),
95
- has_5_entries: Array.isArray(patterns) && patterns.length === 5,
95
+ has_6_entries: Array.isArray(patterns) && patterns.length === 6,
96
96
  pattern_names_match: JSON.stringify(patternNames) === JSON.stringify(expectedNames),
97
97
  shape_and_taxonomy_valid: validShape,
98
- total_anchors_count: totalAnchorCount >= 14 && totalAnchorCount <= 18, // pattern membership can have overlap counting
98
+ total_anchors_count: totalAnchorCount >= 14 && totalAnchorCount <= 20, // R724 +2 anchors (kicker + watermark text counted again under triple-axis-pair pattern)
99
99
  all_cadences_in_rolodex: allPatternCadencesInRolodex,
100
100
  };
101
101
  const ok = Object.values(results).every(Boolean);
@@ -86,7 +86,17 @@ const validShape = Array.isArray(triple)
86
86
  const anchors = Array.isArray(triple) ? triple.map(e => e.anchor).sort() : [];
87
87
  const allOpacityFirst = Array.isArray(triple) ? triple.every(e => e.axes[0] === 'opacity') : false;
88
88
  const allTextShadowThird = Array.isArray(triple) ? triple.every(e => e.axes[2] === 'text-shadow') : false;
89
- const allCadence6 = Array.isArray(triple) ? triple.every(e => e.cadence_s === 6) : false;
89
+ /* R725 added H2 at 10 s as the 3rd triple-axis surface — the tier
90
+ * is now multi-cadence rather than 6 s-locked. The 6 s pair (kicker
91
+ * + watermark) SUBSET still exists; the all-6 s invariant is retired
92
+ * in favour of "every cadence ∈ rolodex" + "6 s pair intact". */
93
+ const cadencesInRolodex = Array.isArray(triple)
94
+ ? triple.every(e => [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 21, 23, 25].includes(e.cadence_s))
95
+ : false;
96
+ const sixSecondAnchors = Array.isArray(triple)
97
+ ? triple.filter(e => e.cadence_s === 6).map(e => e.anchor).sort()
98
+ : [];
99
+ const sixSecondPairIntact = JSON.stringify(sixSecondAnchors) === JSON.stringify(['kicker', 'watermark']);
90
100
 
91
101
  const r716ByAnchor = new Map(Array.isArray(dualAxis)
92
102
  ? dualAxis.map(e => [e.anchor, e])
@@ -100,12 +110,13 @@ const results = {
100
110
  attr_present: !!runtimeAttrs.triple,
101
111
  json_parses: triple !== null && parseError === null,
102
112
  is_array: Array.isArray(triple),
103
- has_2_entries: Array.isArray(triple) && triple.length === 2,
113
+ has_3_entries: Array.isArray(triple) && triple.length === 3,
104
114
  shape_valid_three_axes: validShape,
105
- anchors_match_expected: JSON.stringify(anchors) === JSON.stringify(['kicker', 'watermark']),
115
+ anchors_match_expected: JSON.stringify(anchors) === JSON.stringify(['H2', 'kicker', 'watermark']),
106
116
  all_opacity_first: allOpacityFirst,
107
117
  all_text_shadow_third: allTextShadowThird,
108
- all_cadence_6s: allCadence6,
118
+ all_cadences_in_rolodex: cadencesInRolodex,
119
+ six_second_pair_intact: sixSecondPairIntact,
109
120
  back_compat_subset_of_r716: backCompatStrict,
110
121
  };
111
122
  const ok = Object.values(results).every(Boolean);
@@ -96,10 +96,15 @@ const tripleAxisSurfaces = Array.isArray(catalog)
96
96
  ? catalog.filter(e => Array.isArray(e.axes) && e.axes.length === 3)
97
97
  : [];
98
98
  const tripleAxisAnchorsSorted = tripleAxisSurfaces.map(e => e.anchor).sort();
99
+ /* R725 added H2 as a 3rd triple-axis surface at 10 s — the "6 s pair"
100
+ * subset still exists (kicker + watermark @ 6 s), but the catalog
101
+ * has 3 total entries now. Widen the assertion to verify the 6 s
102
+ * pair SUBSET is intact rather than asserting it's the whole set. */
103
+ const sixSecondMembers = tripleAxisSurfaces.filter(e => e.cadence_s === 6);
104
+ const sixSecondAnchorsSorted = sixSecondMembers.map(e => e.anchor).sort();
99
105
  const triple6sPair =
100
- tripleAxisSurfaces.length === 2
101
- && JSON.stringify(tripleAxisAnchorsSorted) === JSON.stringify(['kicker', 'watermark'])
102
- && tripleAxisSurfaces.every(e => e.cadence_s === 6);
106
+ sixSecondMembers.length === 2
107
+ && JSON.stringify(sixSecondAnchorsSorted) === JSON.stringify(['kicker', 'watermark']);
103
108
 
104
109
  const results = {
105
110
  watermark_present: !!runtimeState,