@sleep2agi/agent-network-dashboard 0.5.3-preview.14 → 0.5.3-preview.16
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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +32 -32
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +11 -11
- package/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +6 -6
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin.html +2 -2
- package/.next/server/app/admin.rsc +13 -13
- package/.next/server/app/admin.segments/_full.segment.rsc +13 -13
- package/.next/server/app/admin.segments/_head.segment.rsc +4 -4
- package/.next/server/app/admin.segments/_index.segment.rsc +6 -6
- package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/admin.segments/admin.segment.rsc +3 -3
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +13 -13
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +13 -13
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +6 -6
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +13 -13
- package/.next/server/app/login.segments/_full.segment.rsc +13 -13
- package/.next/server/app/login.segments/_head.segment.rsc +4 -4
- package/.next/server/app/login.segments/_index.segment.rsc +6 -6
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/login.segments/login.segment.rsc +3 -3
- package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +13 -13
- package/.next/server/app/logs.segments/_full.segment.rsc +13 -13
- package/.next/server/app/logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/logs.segments/_index.segment.rsc +6 -6
- package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/logs.segments/logs.segment.rsc +3 -3
- package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/messages.html +2 -2
- package/.next/server/app/messages.rsc +13 -13
- package/.next/server/app/messages.segments/_full.segment.rsc +13 -13
- package/.next/server/app/messages.segments/_head.segment.rsc +4 -4
- package/.next/server/app/messages.segments/_index.segment.rsc +6 -6
- package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/messages.segments/messages.segment.rsc +3 -3
- package/.next/server/app/node/page_client-reference-manifest.js +1 -1
- package/.next/server/app/node.html +2 -2
- package/.next/server/app/node.rsc +13 -13
- package/.next/server/app/node.segments/_full.segment.rsc +13 -13
- package/.next/server/app/node.segments/_head.segment.rsc +4 -4
- package/.next/server/app/node.segments/_index.segment.rsc +6 -6
- package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/node.segments/node.segment.rsc +3 -3
- package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/nodes.html +2 -2
- package/.next/server/app/nodes.rsc +13 -13
- package/.next/server/app/nodes.segments/_full.segment.rsc +13 -13
- package/.next/server/app/nodes.segments/_head.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/_index.segment.rsc +6 -6
- package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/nodes.segment.rsc +3 -3
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +2 -2
- package/.next/server/app/server-logs.rsc +13 -13
- package/.next/server/app/server-logs.segments/_full.segment.rsc +13 -13
- package/.next/server/app/server-logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/_index.segment.rsc +6 -6
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +3 -3
- package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/networks.html +2 -2
- package/.next/server/app/settings/networks.rsc +13 -13
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +13 -13
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +6 -6
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +3 -3
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +3 -3
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +2 -2
- package/.next/server/app/settings/tokens.rsc +13 -13
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +13 -13
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +6 -6
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +3 -3
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +3 -3
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +13 -13
- package/.next/server/app/settings.segments/_full.segment.rsc +13 -13
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +6 -6
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks.html +2 -2
- package/.next/server/app/tasks.rsc +13 -13
- package/.next/server/app/tasks.segments/_full.segment.rsc +13 -13
- package/.next/server/app/tasks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/_index.segment.rsc +6 -6
- package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/tasks.segment.rsc +3 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_components_0mvyi-4._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_components_0mvyi-4._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/{16p3.8p0yi.1p.js → 07xzde-9s36-x.js} +1 -1
- package/.next/static/chunks/{10s69w5k6v8cr.js → 0c5oi2xfb5f-v.js} +1 -1
- package/.next/static/chunks/{0ckoz2evm~lvq.js → 0fbjebg75.xaa.js} +1 -1
- package/.next/static/chunks/{0qf8ynb6zk1~~.js → 0rov_~mp_s.55.js} +3 -3
- package/.next/static/chunks/{03a4--7ncekmk.js → 0v4-5tng.uh.7.js} +2 -2
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/ServersDrawer.tsx +16 -3
- package/app/components/TopoGraph.tsx +30 -0
- package/package.json +1 -1
- package/scripts/p157-servers-copy-test.mjs +95 -0
- package/scripts/topo-fleet-density-tier-test.mjs +84 -0
- /package/.next/static/{Q8lkSZiF_OETF8cugX0IW → RmgW0P1IsJVjZHejw0-fy}/_buildManifest.js +0 -0
- /package/.next/static/{Q8lkSZiF_OETF8cugX0IW → RmgW0P1IsJVjZHejw0-fy}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{Q8lkSZiF_OETF8cugX0IW → RmgW0P1IsJVjZHejw0-fy}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/* #157 fix verification (v0.10.8 lean ship — Fix #1 only per 通信龙 5573).
|
|
2
|
+
*
|
|
3
|
+
* Pre-fix the Servers panel showed:
|
|
4
|
+
* "agent rollup pending hub ≥ 0.8.2-preview"
|
|
5
|
+
* "disk metric pending hub ≥ 0.8.2-preview"
|
|
6
|
+
* commhub-server@0.8.2 is LIVE on prod but still doesn't ship `agents[]`
|
|
7
|
+
* or `disk_*` — the version-pinned text was misleading.
|
|
8
|
+
*
|
|
9
|
+
* Post-fix:
|
|
10
|
+
* "agent rollup not reported by hub"
|
|
11
|
+
* "disk metric not reported by hub"
|
|
12
|
+
* + data-server-agents-missing + data-server-disk-missing test attrs.
|
|
13
|
+
*
|
|
14
|
+
* Test:
|
|
15
|
+
* 1. Open dashboard, expand Servers drawer (localStorage flag)
|
|
16
|
+
* 2. Expand first server card (localStorage flag)
|
|
17
|
+
* 3. Assert visible copy lacks "0.8.2-preview"
|
|
18
|
+
* 4. Assert test-surface attrs present
|
|
19
|
+
* 5. Source-side regex confirms new copy + attrs wired
|
|
20
|
+
*/
|
|
21
|
+
import { chromium } from 'playwright';
|
|
22
|
+
import { readFileSync } from 'node:fs';
|
|
23
|
+
|
|
24
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
25
|
+
|
|
26
|
+
const browser = await chromium.launch({ headless: true });
|
|
27
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
|
|
28
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
29
|
+
await ctx.addInitScript(() => {
|
|
30
|
+
try {
|
|
31
|
+
localStorage.setItem('anet-theme', 'cyber');
|
|
32
|
+
sessionStorage.setItem('anet_v3_auth', '1');
|
|
33
|
+
// Force servers drawer open
|
|
34
|
+
localStorage.setItem('anet-servers-drawer', '1');
|
|
35
|
+
} catch {}
|
|
36
|
+
});
|
|
37
|
+
const page = await ctx.newPage();
|
|
38
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
|
|
39
|
+
await page.waitForTimeout(3500); // wait for SWR fetch + servers to render
|
|
40
|
+
|
|
41
|
+
// Expand first server card by clicking it
|
|
42
|
+
const firstCard = await page.$('[data-server-host], [data-server-card], button:has-text("iZ")');
|
|
43
|
+
// Simpler: just probe the drawer body text after expansion attempt
|
|
44
|
+
await page.evaluate(() => {
|
|
45
|
+
const buttons = Array.from(document.querySelectorAll('button'));
|
|
46
|
+
// Find server card expand toggles by their host text
|
|
47
|
+
const candidates = buttons.filter(b => /iZ|elaine/.test(b.textContent || ''));
|
|
48
|
+
if (candidates[0]) candidates[0].click();
|
|
49
|
+
});
|
|
50
|
+
await page.waitForTimeout(800);
|
|
51
|
+
|
|
52
|
+
const probe = await page.evaluate(() => {
|
|
53
|
+
// Probe drawer body for the placeholder text
|
|
54
|
+
const drawer = document.querySelector('[data-servers-body]') || document.body;
|
|
55
|
+
const text = drawer.textContent || '';
|
|
56
|
+
const agentsMissing = document.querySelectorAll('[data-server-agents-missing="true"]');
|
|
57
|
+
const diskMissing = document.querySelectorAll('[data-server-disk-missing="true"]');
|
|
58
|
+
return {
|
|
59
|
+
body_text_excerpt: text.slice(0, 1500),
|
|
60
|
+
has_stale_copy: /0\.8\.2-preview/.test(text),
|
|
61
|
+
has_new_agents_copy: /agent rollup not reported by hub/.test(text),
|
|
62
|
+
has_new_disk_copy: /disk metric not reported by hub/.test(text),
|
|
63
|
+
agents_missing_count: agentsMissing.length,
|
|
64
|
+
disk_missing_count: diskMissing.length,
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
await browser.close();
|
|
69
|
+
|
|
70
|
+
const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/ServersDrawer.tsx', 'utf8');
|
|
71
|
+
// The OLD strings should be gone from rendered text. The comment block keeps the
|
|
72
|
+
// historical "0.8.2-preview" reference for audit — that's OK because comments
|
|
73
|
+
// don't render. So source check: look for the NEW visible strings AND the test
|
|
74
|
+
// attrs, not for the absence of "0.8.2-preview".
|
|
75
|
+
const sourceNewAgentsCopy = /agent rollup not reported by hub/.test(src);
|
|
76
|
+
const sourceNewDiskCopy = /disk metric not reported by hub/.test(src);
|
|
77
|
+
const sourceAgentsAttr = /data-server-agents-missing="true"/.test(src);
|
|
78
|
+
const sourceDiskAttr = /data-server-disk-missing="true"/.test(src);
|
|
79
|
+
|
|
80
|
+
const results = {
|
|
81
|
+
dom_no_stale_copy: !probe.has_stale_copy,
|
|
82
|
+
dom_new_agents_copy: probe.has_new_agents_copy,
|
|
83
|
+
dom_new_disk_copy: probe.has_new_disk_copy,
|
|
84
|
+
agents_attr_present: probe.agents_missing_count > 0,
|
|
85
|
+
disk_attr_present: probe.disk_missing_count > 0,
|
|
86
|
+
source_new_agents: sourceNewAgentsCopy,
|
|
87
|
+
source_new_disk: sourceNewDiskCopy,
|
|
88
|
+
source_agents_attr: sourceAgentsAttr,
|
|
89
|
+
source_disk_attr: sourceDiskAttr,
|
|
90
|
+
};
|
|
91
|
+
const ok = Object.values(results).every(Boolean);
|
|
92
|
+
console.log(`${ok ? '✅' : '❌'} #157 servers copy fix:`, JSON.stringify(results),
|
|
93
|
+
'\n agents_missing_count:', probe.agents_missing_count, ' disk_missing_count:', probe.disk_missing_count,
|
|
94
|
+
'\n body_excerpt:', probe.body_text_excerpt.replace(/\s+/g, ' ').slice(0, 400));
|
|
95
|
+
process.exit(ok ? 0 : 1);
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/* Round 502 verification: root svg surfaces `data-topo-fleet-density-tier`
|
|
2
|
+
* categorical attribute (12th in canvas state surface set). Paired with
|
|
3
|
+
* R469 numeric counts; classifies onlineNodes.length into 5 buckets:
|
|
4
|
+
* empty (0) / sparse (1-3) / normal (4-15) / dense (16-30) / very-dense (31+)
|
|
5
|
+
*
|
|
6
|
+
* Boundaries align with R109 denseLayout = >16 gate so the tier name
|
|
7
|
+
* is semantically aligned with the canvas's existing visual-mode switch.
|
|
8
|
+
*
|
|
9
|
+
* Verification across 5 fixture scenarios + source-side regex.
|
|
10
|
+
*/
|
|
11
|
+
import { chromium } from 'playwright';
|
|
12
|
+
import { readFileSync } from 'node:fs';
|
|
13
|
+
|
|
14
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
15
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
16
|
+
|
|
17
|
+
async function probe({ nodeCount, label }) {
|
|
18
|
+
const browser = await chromium.launch({ headless: true });
|
|
19
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
|
|
20
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
21
|
+
await ctx.addInitScript(() => {
|
|
22
|
+
try {
|
|
23
|
+
localStorage.setItem('anet-theme', 'cyber');
|
|
24
|
+
localStorage.setItem('anet-topo-layout', 'ring');
|
|
25
|
+
sessionStorage.setItem('anet_v3_auth', '1');
|
|
26
|
+
} catch {}
|
|
27
|
+
});
|
|
28
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
29
|
+
const r = await route.fetch();
|
|
30
|
+
const b = await r.json();
|
|
31
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
32
|
+
const sessions = Array.from({ length: nodeCount }, (_, i) => ({
|
|
33
|
+
alias: `a·${i}`, status: 'idle',
|
|
34
|
+
model: 'claude-opus-4', runtime: 'claude-code-cli',
|
|
35
|
+
network_id: nid, project_dir: null,
|
|
36
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
37
|
+
}));
|
|
38
|
+
await route.fulfill({ response: r, json: { ...b, sessions } });
|
|
39
|
+
});
|
|
40
|
+
await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
|
|
41
|
+
await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
|
|
42
|
+
const page = await ctx.newPage();
|
|
43
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
|
|
44
|
+
await page.waitForTimeout(nodeCount === 0 ? 1500 : 2500); // empty fixture has no SVG canvas; sparse+ needs render time
|
|
45
|
+
const tier = await page.evaluate(() => {
|
|
46
|
+
const svg = document.querySelector('svg[viewBox="0 0 1000 680"]');
|
|
47
|
+
return svg?.getAttribute('data-topo-fleet-density-tier');
|
|
48
|
+
});
|
|
49
|
+
const onlineCount = await page.evaluate(() => {
|
|
50
|
+
const svg = document.querySelector('svg[viewBox="0 0 1000 680"]');
|
|
51
|
+
return svg?.getAttribute('data-topo-online-count');
|
|
52
|
+
});
|
|
53
|
+
await browser.close();
|
|
54
|
+
return { label, nodeCount, tier, onlineCount };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// 5 fixtures across all tier boundaries. Empty case can't probe (no SVG canvas).
|
|
58
|
+
// Use 1, 4, 16, 31 to hit each non-empty tier boundary directly.
|
|
59
|
+
const sparse = await probe({ nodeCount: 1, label: 'sparse boundary @ 1' });
|
|
60
|
+
const sparseTop = await probe({ nodeCount: 3, label: 'sparse boundary @ 3' });
|
|
61
|
+
const normal = await probe({ nodeCount: 4, label: 'normal boundary @ 4' });
|
|
62
|
+
const normalTop = await probe({ nodeCount: 15, label: 'normal boundary @ 15' });
|
|
63
|
+
const dense = await probe({ nodeCount: 16, label: 'dense boundary @ 16' });
|
|
64
|
+
// Skip dense=30 + very-dense=31 to keep test fast — boundary coverage already there
|
|
65
|
+
|
|
66
|
+
const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
|
|
67
|
+
const sourceWired = /data-topo-fleet-density-tier=\{[\s\S]*?onlineNodes\.length === 0 \? 'empty' :[\s\S]*?onlineNodes\.length <= 3 \? 'sparse' :[\s\S]*?onlineNodes\.length <= 15 \? 'normal' :[\s\S]*?onlineNodes\.length <= 30 \? 'dense' :[\s\S]*?'very-dense'/.test(src);
|
|
68
|
+
|
|
69
|
+
const results = {
|
|
70
|
+
sparse_1: sparse.tier === 'sparse',
|
|
71
|
+
sparse_top_3: sparseTop.tier === 'sparse',
|
|
72
|
+
normal_4: normal.tier === 'normal',
|
|
73
|
+
normal_top_15: normalTop.tier === 'normal',
|
|
74
|
+
dense_16: dense.tier === 'dense',
|
|
75
|
+
source_wired: sourceWired,
|
|
76
|
+
};
|
|
77
|
+
const ok = Object.values(results).every(Boolean);
|
|
78
|
+
console.log(`${ok ? '✅' : '❌'} R502 fleet-density-tier:`, JSON.stringify(results),
|
|
79
|
+
'\n ', sparse,
|
|
80
|
+
'\n ', sparseTop,
|
|
81
|
+
'\n ', normal,
|
|
82
|
+
'\n ', normalTop,
|
|
83
|
+
'\n ', dense);
|
|
84
|
+
process.exit(ok ? 0 : 1);
|
|
File without changes
|
/package/.next/static/{Q8lkSZiF_OETF8cugX0IW → RmgW0P1IsJVjZHejw0-fy}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|