@sleep2agi/agent-network-dashboard 0.5.3-preview.254 → 0.5.3-preview.256

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +5 -5
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +2 -2
  14. package/.next/server/app/_not-found.rsc +2 -2
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/admin.html +2 -2
  23. package/.next/server/app/admin.rsc +2 -2
  24. package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
  25. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  27. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  29. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  30. package/.next/server/app/index.html +2 -2
  31. package/.next/server/app/index.rsc +3 -3
  32. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  33. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  34. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  35. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  36. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  37. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/login.html +2 -2
  39. package/.next/server/app/login.rsc +3 -3
  40. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  41. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  45. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  46. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/logs.html +2 -2
  48. package/.next/server/app/logs.rsc +2 -2
  49. package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
  50. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  52. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  53. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  54. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  55. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/messages.html +2 -2
  57. package/.next/server/app/messages.rsc +2 -2
  58. package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
  59. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  60. package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
  61. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  62. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  63. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  64. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/node.html +2 -2
  66. package/.next/server/app/node.rsc +2 -2
  67. package/.next/server/app/node.segments/_full.segment.rsc +2 -2
  68. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  69. package/.next/server/app/node.segments/_index.segment.rsc +2 -2
  70. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  71. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  72. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  73. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/nodes.html +2 -2
  75. package/.next/server/app/nodes.rsc +2 -2
  76. package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
  77. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  78. package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
  79. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  80. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  81. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  82. package/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/server-logs.html +2 -2
  85. package/.next/server/app/server-logs.rsc +2 -2
  86. package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
  87. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  88. package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
  89. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  90. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  91. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  93. package/.next/server/app/settings/networks.html +2 -2
  94. package/.next/server/app/settings/networks.rsc +2 -2
  95. package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
  96. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  97. package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
  98. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  99. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  100. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  101. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  102. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/settings/tokens.html +2 -2
  105. package/.next/server/app/settings/tokens.rsc +2 -2
  106. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
  109. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  110. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  111. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  112. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  113. package/.next/server/app/settings.html +2 -2
  114. package/.next/server/app/settings.rsc +3 -3
  115. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  116. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  117. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  118. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  119. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  120. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  121. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/tasks.html +2 -2
  124. package/.next/server/app/tasks.rsc +2 -2
  125. package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
  126. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  127. package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
  128. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  129. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  130. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  131. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
  132. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  133. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +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/{0kxp3b9ooqo9w.css → 0-7ma47rnbr6l.css} +1 -1
  143. package/.next/static/chunks/{0-t50keogxsg1.js → 0lz0d3xp-akmx.js} +1 -1
  144. package/.next/static/chunks/{0~4k1nbapvia1.js → 0mbz6_9.awtny.js} +3 -3
  145. package/.next/static/chunks/{11hzac0zl0f91.js → 0xu6mniq9hov9.js} +1 -1
  146. package/.next/static/chunks/{0u.ob15vjha6u.js → 0ypxu9tjas5ii.js} +1 -1
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +53 -1
  150. package/app/globals.css +31 -0
  151. package/package.json +1 -1
  152. package/scripts/topo-animation-temporal-modes-catalog-test.mjs +145 -0
  153. package/scripts/topo-title-block-entrance-animation-test.mjs +127 -0
  154. /package/.next/static/{0ShBgwMviORwHuIMhcMPr → iXL-5CIRUR5NRzD1e0XT-}/_buildManifest.js +0 -0
  155. /package/.next/static/{0ShBgwMviORwHuIMhcMPr → iXL-5CIRUR5NRzD1e0XT-}/_clientMiddlewareManifest.js +0 -0
  156. /package/.next/static/{0ShBgwMviORwHuIMhcMPr → iXL-5CIRUR5NRzD1e0XT-}/_ssgManifest.js +0 -0
@@ -0,0 +1,127 @@
1
+ /* Round 742 — title-block entrance animation. 2nd member of the
2
+ * entrance family (after R740 canvas root). Staggered choreography:
3
+ * R740 canvas 0 → 600 ms scale 0.99 → 1, opacity 0.8 → 1
4
+ * R742 title-block 200 → 700 ms translateY -4 → 0, opacity 0.7 → 1
5
+ *
6
+ * Assertions:
7
+ * - .anet-topo-title-block-entrance class on title-block wrapper
8
+ * - data-topo-section-titleblock-entrance="true"
9
+ * - CSS @keyframes 0% translateY(-4px) opacity 0.7 → 100% translateY(0) opacity 1
10
+ * - .anet-topo-title-block-entrance binds 500ms ease-out 200ms delay
11
+ * - animation NOT infinite (runtime iteration count === '1')
12
+ * - prefers-reduced-motion guard present
13
+ * - Animation completes within ~900ms (200ms delay + 500ms + 200ms buffer)
14
+ * → after 900ms wait, computed transform is identity & opacity = 1
15
+ * - Existing R706 envelope-breath class still composed (regression)
16
+ * - R741 catalog one-shot-mount.members === 2, includes title-block in examples
17
+ * - R740 canvas entrance still present (regression)
18
+ */
19
+ import { chromium } from 'playwright';
20
+ import { readFileSync } from 'node:fs';
21
+
22
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
23
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
24
+
25
+ const browser = await chromium.launch({ headless: true });
26
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
27
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
28
+ await ctx.addInitScript(() => {
29
+ try {
30
+ localStorage.setItem('anet-theme', 'cyber');
31
+ localStorage.setItem('anet-topo-layout', 'ring');
32
+ sessionStorage.setItem('anet_v3_auth', '1');
33
+ } catch {}
34
+ });
35
+ await ctx.route('**/api/hub/status*', async (route) => {
36
+ const r = await route.fetch();
37
+ const b = await r.json();
38
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
39
+ const mk = (alias) => ({
40
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
41
+ network_id: nid, project_dir: null,
42
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
43
+ });
44
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
45
+ });
46
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
47
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
48
+ const page = await ctx.newPage();
49
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
50
+ await page.waitForSelector('[data-topo-section-titleblock-group]', { timeout: 15000, state: 'attached' });
51
+ /* Wait for both R740 (0-600ms) and R742 (200-700ms) animations to
52
+ * complete plus a safety buffer. */
53
+ await page.waitForTimeout(900);
54
+
55
+ const state = await page.evaluate(() => {
56
+ const tb = document.querySelector('[data-topo-section-titleblock-group]');
57
+ const svg = document.querySelector('[data-topo-canvas-aria]');
58
+ if (!tb) return null;
59
+ const cs = getComputedStyle(tb);
60
+ return {
61
+ has_entrance_class: tb.classList.contains('anet-topo-title-block-entrance'),
62
+ entrance_attr: tb.getAttribute('data-topo-section-titleblock-entrance'),
63
+ envelope_breath_kept: tb.classList.contains('anet-topo-title-block-envelope-breath'),
64
+ anim_name: cs.animationName,
65
+ anim_duration: cs.animationDuration,
66
+ anim_delay: cs.animationDelay,
67
+ anim_iteration: cs.animationIterationCount,
68
+ computed_transform: cs.transform,
69
+ computed_opacity: cs.opacity,
70
+ canvas_entrance_class: svg?.classList.contains('anet-topo-canvas-entrance') ?? null,
71
+ temporal_modes: svg?.getAttribute('data-topo-animation-temporal-modes') ?? null,
72
+ };
73
+ });
74
+
75
+ await browser.close();
76
+
77
+ const cssSrc = readFileSync('/home/vansin/agent-network-dashboard/app/globals.css', 'utf8');
78
+ const cssKfStart = /@keyframes anet-topo-title-block-entrance-kf\s*\{[\s\S]*?0%\s*\{[\s\S]*?transform:\s*translateY\(-4px\)[\s\S]*?opacity:\s*0\.7/.test(cssSrc);
79
+ const cssKfEnd = /@keyframes anet-topo-title-block-entrance-kf\s*\{[\s\S]*?100%\s*\{[\s\S]*?transform:\s*translateY\(0\)[\s\S]*?opacity:\s*1/.test(cssSrc);
80
+ const cssClassBound = /\.anet-topo-title-block-entrance\s*\{[\s\S]*?animation:\s*anet-topo-title-block-entrance-kf\s+500ms\s+ease-out\s+200ms\s+backwards/.test(cssSrc);
81
+ const cssReducedMotion = /@media\s*\(prefers-reduced-motion:\s*reduce\)\s*\{[\s\S]*?\.anet-topo-title-block-entrance\s*\{\s*animation:\s*none/.test(cssSrc);
82
+
83
+ const transformSettled = state?.computed_transform === 'none'
84
+ || state?.computed_transform === 'matrix(1, 0, 0, 1, 0, 0)';
85
+ /* The title-block carries TWO animations via the R742 compound:
86
+ * 1. entrance one-shot, 500ms — settles after ~700ms
87
+ * 2. envelope-breath infinite, 11s — opacity 0.92 ↔ 1 forever (R706)
88
+ * After the entrance completes, opacity is governed by the ongoing
89
+ * envelope breath, so it sits SOMEWHERE in [0.92, 1] — never exactly
90
+ * 1 at a random sample. Assert opacity ∈ [0.90, 1.00] (the R706
91
+ * breath band with a small tolerance) rather than === 1. */
92
+ const opacityInBreathBand = (() => {
93
+ const o = parseFloat(state?.computed_opacity ?? '0');
94
+ return o >= 0.90 && o <= 1.0;
95
+ })();
96
+ /* The compound animation's FIRST entry is the one-shot entrance;
97
+ * the SECOND is the infinite breath. Verify the entrance part is
98
+ * one-shot by checking the first iteration-count token === '1'. */
99
+ const entranceIsOneShot = (state?.anim_iteration ?? '').split(',')[0].trim() === '1';
100
+ const entranceIsFirstInCompound = (state?.anim_name ?? '').split(',')[0].trim() === 'anet-topo-title-block-entrance-kf';
101
+
102
+ let modes = null;
103
+ try { modes = JSON.parse(state?.temporal_modes ?? ''); } catch {}
104
+ const oneShot = Array.isArray(modes) ? modes.find(m => m.mode === 'one-shot-mount') : null;
105
+ const oneShotHas2 = oneShot?.members === 2 && Array.isArray(oneShot?.examples) && oneShot.examples.includes('title-block');
106
+
107
+ const results = {
108
+ has_entrance_class: state?.has_entrance_class === true,
109
+ entrance_attr_true: state?.entrance_attr === 'true',
110
+ envelope_breath_kept: state?.envelope_breath_kept === true,
111
+ css_keyframe_start: cssKfStart,
112
+ css_keyframe_end: cssKfEnd,
113
+ css_class_binds_500ms_delay_200: cssClassBound,
114
+ css_reduced_motion_guard: cssReducedMotion,
115
+ entrance_part_is_one_shot: entranceIsOneShot,
116
+ entrance_first_in_compound: entranceIsFirstInCompound,
117
+ transform_settled: transformSettled,
118
+ opacity_in_breath_band: opacityInBreathBand,
119
+ r740_canvas_entrance_kept: state?.canvas_entrance_class === true,
120
+ r741_one_shot_members_now_2: oneShotHas2,
121
+ };
122
+ const ok = Object.values(results).every(Boolean);
123
+ console.log(`${ok ? '✅' : '❌'} R742 title-block entrance animation (2nd one-shot member, staggered after canvas):`,
124
+ JSON.stringify(results, null, 2),
125
+ `\n state: ${JSON.stringify(state)}`,
126
+ `\n one-shot entry: ${JSON.stringify(oneShot)}`);
127
+ process.exit(ok ? 0 : 1);