@sleep2agi/agent-network-dashboard 0.4.6-preview.240 → 0.4.6-preview.241

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 (142) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +4 -4
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/server/app/_not-found.html +1 -1
  14. package/.next/server/app/_not-found.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  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 +1 -1
  21. package/.next/server/app/admin.html +1 -1
  22. package/.next/server/app/admin.rsc +1 -1
  23. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  28. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  29. package/.next/server/app/index.html +2 -2
  30. package/.next/server/app/index.rsc +2 -2
  31. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  33. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  35. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  36. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/login.html +2 -2
  38. package/.next/server/app/login.rsc +2 -2
  39. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  40. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  43. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  45. package/.next/server/app/logs.html +1 -1
  46. package/.next/server/app/logs.rsc +1 -1
  47. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  52. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  53. package/.next/server/app/messages.html +1 -1
  54. package/.next/server/app/messages.rsc +1 -1
  55. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  60. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  61. package/.next/server/app/node.html +1 -1
  62. package/.next/server/app/node.rsc +1 -1
  63. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  68. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  69. package/.next/server/app/nodes.html +1 -1
  70. package/.next/server/app/nodes.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  76. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  77. package/.next/server/app/page_client-reference-manifest.js +1 -1
  78. package/.next/server/app/server-logs.html +1 -1
  79. package/.next/server/app/server-logs.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  84. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  85. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  86. package/.next/server/app/settings/networks.html +1 -1
  87. package/.next/server/app/settings/networks.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  94. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  95. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  96. package/.next/server/app/settings/tokens.html +1 -1
  97. package/.next/server/app/settings/tokens.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  103. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  104. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  105. package/.next/server/app/settings.html +2 -2
  106. package/.next/server/app/settings.rsc +2 -2
  107. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  108. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  110. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  111. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  112. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  113. package/.next/server/app/tasks.html +1 -1
  114. package/.next/server/app/tasks.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  119. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  120. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  121. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  123. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  126. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  127. package/.next/server/middleware-build-manifest.js +3 -3
  128. package/.next/server/pages/404.html +1 -1
  129. package/.next/server/pages/500.html +1 -1
  130. package/.next/server/server-reference-manifest.js +1 -1
  131. package/.next/server/server-reference-manifest.json +1 -1
  132. package/.next/static/chunks/{0ywq17o6g3he5.js → 024piwrreh8f2.js} +1 -1
  133. package/.next/static/chunks/{098y3q8._x_f1.js → 0q_r1c.28sp9o.js} +1 -1
  134. package/.next/static/chunks/{0prsuuo6ys6he.js → 0~xtfu.pii43f.js} +1 -1
  135. package/.next/trace +2 -2
  136. package/.next/trace-build +1 -1
  137. package/app/components/TopoGraph.tsx +16 -1
  138. package/package.json +1 -1
  139. package/scripts/topo-vendor-chip-tabular-test.mjs +89 -0
  140. /package/.next/static/{xTpsoTIOr85gWd2QOaJxr → f3jrAQcha7Ds5s5805MtC}/_buildManifest.js +0 -0
  141. /package/.next/static/{xTpsoTIOr85gWd2QOaJxr → f3jrAQcha7Ds5s5805MtC}/_clientMiddlewareManifest.js +0 -0
  142. /package/.next/static/{xTpsoTIOr85gWd2QOaJxr → f3jrAQcha7Ds5s5805MtC}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":12521599,"timestamp":86774832121,"id":14,"parentId":1,"tags":{},"startTime":1778894747078,"traceId":"f4846168b12efd2d"},{"name":"turbopack-build-events","duration":114,"timestamp":86775340345,"id":15,"parentId":1,"tags":{},"startTime":1778894747587,"traceId":"f4846168b12efd2d"},{"name":"run-typescript","duration":15838494,"timestamp":86787370203,"id":16,"parentId":1,"tags":{},"startTime":1778894759616,"traceId":"f4846168b12efd2d"},{"name":"static-check","duration":1244768,"timestamp":86803478182,"id":19,"parentId":1,"tags":{},"startTime":1778894775724,"traceId":"f4846168b12efd2d"},{"name":"static-generation","duration":847992,"timestamp":86804754684,"id":105,"parentId":1,"tags":{},"startTime":1778894777001,"traceId":"f4846168b12efd2d"},{"name":"telemetry-flush","duration":28892,"timestamp":86805647765,"id":114,"parentId":1,"tags":{},"startTime":1778894777894,"traceId":"f4846168b12efd2d"},{"name":"next-build","duration":31198890,"timestamp":86774477809,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778894746724,"traceId":"f4846168b12efd2d"}]
1
+ [{"name":"run-turbopack","duration":11285314,"timestamp":87198558526,"id":14,"parentId":1,"tags":{},"startTime":1778895170805,"traceId":"663214f164c3f4d7"},{"name":"turbopack-build-events","duration":110,"timestamp":87198985660,"id":15,"parentId":1,"tags":{},"startTime":1778895171232,"traceId":"663214f164c3f4d7"},{"name":"run-typescript","duration":13651873,"timestamp":87209857016,"id":16,"parentId":1,"tags":{},"startTime":1778895182103,"traceId":"663214f164c3f4d7"},{"name":"static-check","duration":1631219,"timestamp":87223738454,"id":19,"parentId":1,"tags":{},"startTime":1778895195985,"traceId":"663214f164c3f4d7"},{"name":"static-generation","duration":1027382,"timestamp":87225388959,"id":105,"parentId":1,"tags":{},"startTime":1778895197635,"traceId":"663214f164c3f4d7"},{"name":"telemetry-flush","duration":10420,"timestamp":87226488404,"id":114,"parentId":1,"tags":{},"startTime":1778895198735,"traceId":"663214f164c3f4d7"},{"name":"next-build","duration":28236152,"timestamp":87198262719,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778895170509,"traceId":"663214f164c3f4d7"}]
@@ -2145,8 +2145,23 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2145
2145
  role="button"
2146
2146
  tabIndex={0}
2147
2147
  aria-pressed={isPinned}
2148
- className="inline-flex items-baseline gap-0.5 px-1 rounded anet-topo-chip-focus"
2148
+ /* Round 234 / Loop: vendor letter chip picks up
2149
+ tabular-nums to lock the ':N' suffix's digit
2150
+ width. Each vendor chip renders 'A:3', 'C:2',
2151
+ etc. inline at gap-0.5 — when one vendor's
2152
+ count rolls 9→10 the chip widens by the digit
2153
+ glyph delta and pushes downstream chips right,
2154
+ making the row visibly jitter. 8th surface
2155
+ in the info-density tabular-nums sweep,
2156
+ completing the HTML chip-side coverage after
2157
+ R232 working/online/active-links chips. The
2158
+ digit lives in the inner <span> at line 2194,
2159
+ but font-variant-numeric inherits, so applying
2160
+ it at the outer chip span reaches every
2161
+ descendant glyph for free. */
2162
+ className="tabular-nums inline-flex items-baseline gap-0.5 px-1 rounded anet-topo-chip-focus"
2149
2163
  data-vendor-letter={v.initial}
2164
+ data-vendor-letter-count={v.count}
2150
2165
  data-vendor-pinned={isPinned ? 'true' : 'false'}
2151
2166
  data-vendor-hovered={hoveredVendor === v.initial ? 'true' : 'false'}
2152
2167
  data-vendor-aliases={aliases.join(',')}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.4.6-preview.240",
3
+ "version": "0.4.6-preview.241",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,89 @@
1
+ /* Round 234 verification: vendor letter chip (the inline chips
2
+ * showing 'A:3', 'C:2', etc. listing per-vendor session counts)
3
+ * picks up the Tailwind `tabular-nums` utility so its ':N' suffix
4
+ * digit doesn't reflow the chip row at the 9→10 boundary.
5
+ *
6
+ * 8th surface in the info-density tabular-nums sweep, completing
7
+ * the HTML chip-side after R232's working/online/active-links.
8
+ *
9
+ * Scenario: 4 working agents split across two vendors — 3 on
10
+ * claude-opus-4 (initial 'A') and 1 on gpt-4 (initial 'O') — so
11
+ * vendorDist.length === 2, which is the condition gating the
12
+ * chip strip render (line ~2116, `vendorDist.length > 1 && ...`).
13
+ * Expect two chips: A:3 and O:1.
14
+ */
15
+ import { chromium } from 'playwright';
16
+ import { readFileSync } from 'node:fs';
17
+
18
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
19
+ const browser = await chromium.launch({ headless: true });
20
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
21
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
22
+ await ctx.addInitScript(() => {
23
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
24
+ });
25
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
26
+ await ctx.route('**/api/hub/status*', async (route) => {
27
+ const r = await route.fetch();
28
+ const b = await r.json();
29
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
30
+ const mk = (alias, model) => ({
31
+ alias, status: 'working', model, runtime: 'claude-code-cli',
32
+ network_id: nid, project_dir: null,
33
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
34
+ });
35
+ // Mix 3 claude-opus-4 (vendor 'A') + 1 gpt-4 (vendor 'O') so
36
+ // vendorDist.length === 2 — chip strip render gate (line ~2116).
37
+ await route.fulfill({ response: r, json: { ...b, sessions: [
38
+ mk('alpha', 'claude-opus-4'),
39
+ mk('beta', 'claude-opus-4'),
40
+ mk('gamma', 'claude-opus-4'),
41
+ mk('delta', 'gpt-4'),
42
+ ] } });
43
+ });
44
+ await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: [] } }));
45
+ await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
46
+
47
+ const page = await ctx.newPage();
48
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
49
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
50
+ await page.waitForSelector('[data-vendor-letter]', { timeout: 10000, state: 'attached' });
51
+ await page.waitForTimeout(300);
52
+
53
+ const out = await page.evaluate(() => {
54
+ const chips = Array.from(document.querySelectorAll('[data-vendor-letter]'));
55
+ return chips.map((c) => ({
56
+ initial: c.getAttribute('data-vendor-letter'),
57
+ countAttr: c.getAttribute('data-vendor-letter-count'),
58
+ classListHas: c.className.split(/\s+/).includes('tabular-nums'),
59
+ fontVarNumeric: getComputedStyle(c).fontVariantNumeric,
60
+ text: (c.textContent || '').trim(),
61
+ // Inner ':N' suffix span — verify font-variant-numeric inherits
62
+ innerFvn: (() => {
63
+ const inner = c.querySelectorAll('span');
64
+ // last span is the gray ':N' suffix
65
+ const last = inner[inner.length - 1];
66
+ return last ? getComputedStyle(last).fontVariantNumeric : null;
67
+ })(),
68
+ }));
69
+ });
70
+ await browser.close();
71
+
72
+ const hasTab = (s) => /tabular-nums/.test(s || '');
73
+
74
+ // Build a map of initial → count from the chips we found.
75
+ const countByInitial = Object.fromEntries(out.map(o => [o.initial, o.countAttr]));
76
+ const results = {
77
+ two_chips: out.length === 2,
78
+ all_have_initial: out.every(o => typeof o.initial === 'string' && o.initial.length === 1),
79
+ anthropic_count_3: countByInitial['A'] === '3',
80
+ openai_count_1: countByInitial['O'] === '1',
81
+ all_class_utility: out.every(o => o.classListHas === true),
82
+ all_fvn_tabular: out.every(o => hasTab(o.fontVarNumeric)),
83
+ all_inner_fvn_inherits: out.every(o => hasTab(o.innerFvn)),
84
+ texts_match_counts: out.every(o => new RegExp(`:${o.countAttr}$`).test(o.text)),
85
+ };
86
+ const ok = Object.values(results).every(Boolean);
87
+ console.log(`${ok ? '✅' : '❌'} vendor chip tabular:`, JSON.stringify(results),
88
+ '\n chips:', out);
89
+ process.exit(ok ? 0 : 1);