@memlab/mcp-server 2.18.1 → 2.52.0
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/README.md +8 -14
- package/bin/.eslintrc.js +26 -0
- package/bin/memlab-cli.js +313 -0
- package/dist/artifact-classes.d.ts +86 -0
- package/dist/artifact-classes.d.ts.map +1 -0
- package/dist/artifact-classes.js +261 -0
- package/dist/artifact-classes.js.map +1 -0
- package/dist/capture-mode.d.ts +60 -0
- package/dist/capture-mode.d.ts.map +1 -0
- package/dist/capture-mode.js +39 -0
- package/dist/capture-mode.js.map +1 -0
- package/dist/guardrail.d.ts.map +1 -1
- package/dist/guardrail.js +13 -0
- package/dist/guardrail.js.map +1 -1
- package/dist/heap-state.d.ts +89 -2
- package/dist/heap-state.d.ts.map +1 -1
- package/dist/heap-state.js +186 -2
- package/dist/heap-state.js.map +1 -1
- package/dist/index.js +39 -1
- package/dist/index.js.map +1 -1
- package/dist/progress.d.ts +25 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +46 -0
- package/dist/progress.js.map +1 -0
- package/dist/result-handles.d.ts +11 -0
- package/dist/result-handles.d.ts.map +1 -0
- package/dist/result-handles.js +77 -0
- package/dist/result-handles.js.map +1 -0
- package/dist/string-index.d.ts +55 -0
- package/dist/string-index.d.ts.map +1 -0
- package/dist/string-index.js +91 -0
- package/dist/string-index.js.map +1 -0
- package/dist/tool-registry.d.ts +42 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +20 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/tools/analyze-run.d.ts +12 -0
- package/dist/tools/analyze-run.d.ts.map +1 -0
- package/dist/tools/analyze-run.js +343 -0
- package/dist/tools/analyze-run.js.map +1 -0
- package/dist/tools/app-heap.d.ts +12 -0
- package/dist/tools/app-heap.d.ts.map +1 -0
- package/dist/tools/app-heap.js +140 -0
- package/dist/tools/app-heap.js.map +1 -0
- package/dist/tools/batch.d.ts +12 -0
- package/dist/tools/batch.d.ts.map +1 -0
- package/dist/tools/batch.js +168 -0
- package/dist/tools/batch.js.map +1 -0
- package/dist/tools/cache-analysis.d.ts.map +1 -1
- package/dist/tools/cache-analysis.js +156 -5
- package/dist/tools/cache-analysis.js.map +1 -1
- package/dist/tools/class-histogram.d.ts.map +1 -1
- package/dist/tools/class-histogram.js +14 -3
- package/dist/tools/class-histogram.js.map +1 -1
- package/dist/tools/collection-trend.d.ts +55 -0
- package/dist/tools/collection-trend.d.ts.map +1 -0
- package/dist/tools/collection-trend.js +315 -0
- package/dist/tools/collection-trend.js.map +1 -0
- package/dist/tools/detached-dom.d.ts +2 -0
- package/dist/tools/detached-dom.d.ts.map +1 -1
- package/dist/tools/detached-dom.js +291 -20
- package/dist/tools/detached-dom.js.map +1 -1
- package/dist/tools/dev-artifacts.d.ts +62 -6
- package/dist/tools/dev-artifacts.d.ts.map +1 -1
- package/dist/tools/dev-artifacts.js +466 -23
- package/dist/tools/dev-artifacts.js.map +1 -1
- package/dist/tools/dominator-attribution.d.ts +12 -0
- package/dist/tools/dominator-attribution.d.ts.map +1 -0
- package/dist/tools/dominator-attribution.js +189 -0
- package/dist/tools/dominator-attribution.js.map +1 -0
- package/dist/tools/dominator-chain.d.ts +12 -0
- package/dist/tools/dominator-chain.d.ts.map +1 -0
- package/dist/tools/dominator-chain.js +92 -0
- package/dist/tools/dominator-chain.js.map +1 -0
- package/dist/tools/duplicate-objects.d.ts +12 -0
- package/dist/tools/duplicate-objects.d.ts.map +1 -0
- package/dist/tools/duplicate-objects.js +172 -0
- package/dist/tools/duplicate-objects.js.map +1 -0
- package/dist/tools/duplicated-strings.d.ts.map +1 -1
- package/dist/tools/duplicated-strings.js +46 -38
- package/dist/tools/duplicated-strings.js.map +1 -1
- package/dist/tools/eval.d.ts +1 -0
- package/dist/tools/eval.d.ts.map +1 -1
- package/dist/tools/eval.js +785 -28
- package/dist/tools/eval.js.map +1 -1
- package/dist/tools/explain-delta.d.ts +12 -0
- package/dist/tools/explain-delta.d.ts.map +1 -0
- package/dist/tools/explain-delta.js +170 -0
- package/dist/tools/explain-delta.js.map +1 -0
- package/dist/tools/find-nodes-by-class.d.ts.map +1 -1
- package/dist/tools/find-nodes-by-class.js +112 -13
- package/dist/tools/find-nodes-by-class.js.map +1 -1
- package/dist/tools/finding-index.d.ts +22 -0
- package/dist/tools/finding-index.d.ts.map +1 -0
- package/dist/tools/finding-index.js +247 -0
- package/dist/tools/finding-index.js.map +1 -0
- package/dist/tools/for-each.d.ts.map +1 -1
- package/dist/tools/for-each.js +15 -3
- package/dist/tools/for-each.js.map +1 -1
- package/dist/tools/get-referrers.d.ts.map +1 -1
- package/dist/tools/get-referrers.js +17 -0
- package/dist/tools/get-referrers.js.map +1 -1
- package/dist/tools/hunt-report.d.ts +12 -0
- package/dist/tools/hunt-report.d.ts.map +1 -0
- package/dist/tools/hunt-report.js +186 -0
- package/dist/tools/hunt-report.js.map +1 -0
- package/dist/tools/hypothesis.d.ts +12 -0
- package/dist/tools/hypothesis.d.ts.map +1 -0
- package/dist/tools/hypothesis.js +221 -0
- package/dist/tools/hypothesis.js.map +1 -0
- package/dist/tools/intern-opportunities.d.ts.map +1 -1
- package/dist/tools/intern-opportunities.js +112 -47
- package/dist/tools/intern-opportunities.js.map +1 -1
- package/dist/tools/ladder.d.ts +33 -0
- package/dist/tools/ladder.d.ts.map +1 -0
- package/dist/tools/ladder.js +266 -0
- package/dist/tools/ladder.js.map +1 -0
- package/dist/tools/largest-objects.d.ts.map +1 -1
- package/dist/tools/largest-objects.js +6 -2
- package/dist/tools/largest-objects.js.map +1 -1
- package/dist/tools/leak-report.d.ts +12 -0
- package/dist/tools/leak-report.d.ts.map +1 -0
- package/dist/tools/leak-report.js +256 -0
- package/dist/tools/leak-report.js.map +1 -0
- package/dist/tools/load-snapshot.d.ts +18 -0
- package/dist/tools/load-snapshot.d.ts.map +1 -1
- package/dist/tools/load-snapshot.js +211 -13
- package/dist/tools/load-snapshot.js.map +1 -1
- package/dist/tools/map-entries.d.ts +12 -0
- package/dist/tools/map-entries.d.ts.map +1 -0
- package/dist/tools/map-entries.js +139 -0
- package/dist/tools/map-entries.js.map +1 -0
- package/dist/tools/match-object.d.ts +12 -0
- package/dist/tools/match-object.d.ts.map +1 -0
- package/dist/tools/match-object.js +165 -0
- package/dist/tools/match-object.js.map +1 -0
- package/dist/tools/object-shape.d.ts.map +1 -1
- package/dist/tools/object-shape.js +53 -5
- package/dist/tools/object-shape.js.map +1 -1
- package/dist/tools/population-diff.d.ts +57 -0
- package/dist/tools/population-diff.d.ts.map +1 -0
- package/dist/tools/population-diff.js +338 -0
- package/dist/tools/population-diff.js.map +1 -0
- package/dist/tools/retainer-layers.d.ts +23 -0
- package/dist/tools/retainer-layers.d.ts.map +1 -0
- package/dist/tools/retainer-layers.js +179 -0
- package/dist/tools/retainer-layers.js.map +1 -0
- package/dist/tools/retainer-summary.d.ts +1 -0
- package/dist/tools/retainer-summary.d.ts.map +1 -1
- package/dist/tools/retainer-summary.js +128 -32
- package/dist/tools/retainer-summary.js.map +1 -1
- package/dist/tools/retainer-trace.d.ts.map +1 -1
- package/dist/tools/retainer-trace.js +4 -2
- package/dist/tools/retainer-trace.js.map +1 -1
- package/dist/tools/search-nodes.d.ts.map +1 -1
- package/dist/tools/search-nodes.js +5 -1
- package/dist/tools/search-nodes.js.map +1 -1
- package/dist/tools/search-strings.d.ts.map +1 -1
- package/dist/tools/search-strings.js +53 -7
- package/dist/tools/search-strings.js.map +1 -1
- package/dist/tools/sequence-analysis.d.ts +49 -0
- package/dist/tools/sequence-analysis.d.ts.map +1 -1
- package/dist/tools/sequence-analysis.js +266 -86
- package/dist/tools/sequence-analysis.js.map +1 -1
- package/dist/tools/shape-histogram.d.ts.map +1 -1
- package/dist/tools/shape-histogram.js +9 -2
- package/dist/tools/shape-histogram.js.map +1 -1
- package/dist/tools/string-patterns.d.ts.map +1 -1
- package/dist/tools/string-patterns.js +5 -4
- package/dist/tools/string-patterns.js.map +1 -1
- package/dist/tools/tools-index.d.ts +12 -0
- package/dist/tools/tools-index.d.ts.map +1 -0
- package/dist/tools/tools-index.js +342 -0
- package/dist/tools/tools-index.js.map +1 -0
- package/dist/tools/verify-fix.d.ts +23 -0
- package/dist/tools/verify-fix.d.ts.map +1 -0
- package/dist/tools/verify-fix.js +211 -0
- package/dist/tools/verify-fix.js.map +1 -0
- package/dist/tools/weakmap-entries.d.ts.map +1 -1
- package/dist/tools/weakmap-entries.js +6 -1
- package/dist/tools/weakmap-entries.js.map +1 -1
- package/dist/utils.d.ts +146 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +335 -10
- package/dist/utils.js.map +1 -1
- package/package.json +5 -4
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { z } from 'zod';
|
|
11
11
|
import { getSnapshot } from '../heap-state.js';
|
|
12
|
-
import { formatBytes, errorResult, toolResult, looksLikeFailurePayload, } from '../utils.js';
|
|
12
|
+
import { formatBytes, errorResult, toolResult, looksLikeFailurePayload, suggestionsSuppressed, } from '../utils.js';
|
|
13
|
+
import { classifyNonProductionString } from '../artifact-classes.js';
|
|
14
|
+
import { buildStringIndex, stringIndexIsCached } from '../string-index.js';
|
|
13
15
|
export function registerDuplicatedStrings(server) {
|
|
14
16
|
server.tool('memlab_duplicated_strings', 'Find duplicated string instances in the heap. Shows strings that appear multiple times, ranked by total retained size — a common source of memory waste. Use after memlab_class_histogram shows high string counts. ' +
|
|
15
17
|
'⚠ Full-heap scan — slow and memory-heavy on very large heaps (millions of nodes); raise min_count to bound the work.', {
|
|
@@ -31,50 +33,29 @@ export function registerDuplicatedStrings(server) {
|
|
|
31
33
|
}, async ({ limit, min_count, include_node_ids }) => {
|
|
32
34
|
try {
|
|
33
35
|
const snapshot = getSnapshot();
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (node.name === 'system / SlicedString')
|
|
41
|
-
return;
|
|
42
|
-
const strNode = node.toStringNode();
|
|
43
|
-
if (!strNode)
|
|
44
|
-
return;
|
|
45
|
-
const value = strNode.stringValue;
|
|
46
|
-
const entry = stringMap.get(value);
|
|
47
|
-
if (entry) {
|
|
48
|
-
entry.count++;
|
|
49
|
-
entry.total_size += node.retainedSize;
|
|
50
|
-
if (entry.example_node_ids.length < 3) {
|
|
51
|
-
entry.example_node_ids.push(node.id);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
stringMap.set(value, {
|
|
56
|
-
count: 1,
|
|
57
|
-
total_size: node.retainedSize,
|
|
58
|
-
example_node_ids: [node.id],
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
});
|
|
36
|
+
// Shared with memlab_intern_opportunities, which needs the same
|
|
37
|
+
// value -> {count, size, ids} map. Cached per snapshot, so running the
|
|
38
|
+
// two back to back (the common case) walks every string node once
|
|
39
|
+
// instead of twice.
|
|
40
|
+
const reused = stringIndexIsCached();
|
|
41
|
+
const { byValue: stringMap } = buildStringIndex(snapshot);
|
|
62
42
|
const duplicated = Array.from(stringMap.entries())
|
|
63
43
|
.filter(([, stats]) => stats.count >= min_count)
|
|
64
|
-
.sort((a, b) => b[1].
|
|
44
|
+
.sort((a, b) => b[1].totalSize - a[1].totalSize)
|
|
65
45
|
.slice(0, limit)
|
|
66
46
|
.map(([value, stats]) => {
|
|
67
|
-
const per_copy_size = stats.count > 0 ? stats.
|
|
47
|
+
const per_copy_size = stats.count > 0 ? stats.totalSize / stats.count : 0;
|
|
68
48
|
const potential_savings = (stats.count - 1) * per_copy_size;
|
|
69
49
|
return {
|
|
70
50
|
value: value.length > 200 ? value.substring(0, 200) + '...' : value,
|
|
71
51
|
count: stats.count,
|
|
72
|
-
total_size: stats.
|
|
73
|
-
total_size_formatted: formatBytes(stats.
|
|
52
|
+
total_size: stats.totalSize,
|
|
53
|
+
total_size_formatted: formatBytes(stats.totalSize),
|
|
74
54
|
potential_savings,
|
|
75
|
-
example_node_ids: stats.
|
|
55
|
+
example_node_ids: stats.exampleIds.slice(0, 3),
|
|
76
56
|
field_context: null,
|
|
77
57
|
actionability: null,
|
|
58
|
+
harness_what: null,
|
|
78
59
|
};
|
|
79
60
|
});
|
|
80
61
|
if (duplicated.length === 0) {
|
|
@@ -131,7 +112,19 @@ export function registerDuplicatedStrings(server) {
|
|
|
131
112
|
}
|
|
132
113
|
}
|
|
133
114
|
}
|
|
134
|
-
|
|
115
|
+
// Non-production content outranks the app/framework split: whether it
|
|
116
|
+
// was injected by the measurement harness or exists only in a DEV
|
|
117
|
+
// build, it is not memory the shipped app has, so it must never be
|
|
118
|
+
// counted toward an interning win (see classifyNonProductionString).
|
|
119
|
+
const nonProd = classifyNonProductionString(d.value);
|
|
120
|
+
if (nonProd != null) {
|
|
121
|
+
d.actionability = 'harness';
|
|
122
|
+
d.harness_what =
|
|
123
|
+
nonProd.kind === 'dev-build'
|
|
124
|
+
? `${nonProd.what} — DEV build only, absent in production`
|
|
125
|
+
: nonProd.what;
|
|
126
|
+
}
|
|
127
|
+
else if (appCount > 0 && frameworkCount > 0) {
|
|
135
128
|
d.actionability = 'mixed';
|
|
136
129
|
}
|
|
137
130
|
else if (frameworkCount > 0) {
|
|
@@ -142,6 +135,8 @@ export function registerDuplicatedStrings(server) {
|
|
|
142
135
|
}
|
|
143
136
|
}
|
|
144
137
|
const appActionableCount = duplicated.filter(d => d.actionability === 'app' || d.actionability === 'mixed').length;
|
|
138
|
+
const harnessEntries = duplicated.filter(d => d.actionability === 'harness');
|
|
139
|
+
const harnessBytes = harnessEntries.reduce((sum, d) => sum + d.potential_savings, 0);
|
|
145
140
|
const lines = duplicated.map((d, i) => {
|
|
146
141
|
const val = d.value.length > 80 ? d.value.slice(0, 80) + '...' : d.value;
|
|
147
142
|
const nodeIdsPart = include_node_ids
|
|
@@ -150,7 +145,11 @@ export function registerDuplicatedStrings(server) {
|
|
|
150
145
|
const context = d.field_context
|
|
151
146
|
? `\n commonly held as: ${d.field_context}`
|
|
152
147
|
: '';
|
|
153
|
-
const actionLabel = d.actionability
|
|
148
|
+
const actionLabel = d.actionability === 'harness'
|
|
149
|
+
? ` [harness — ${d.harness_what ?? 'measurement harness'}; not app memory]`
|
|
150
|
+
: d.actionability
|
|
151
|
+
? ` [${d.actionability}]`
|
|
152
|
+
: '';
|
|
154
153
|
const savingsLabel = d.potential_savings > 0
|
|
155
154
|
? `, savings: ${formatBytes(d.potential_savings)}`
|
|
156
155
|
: '';
|
|
@@ -176,11 +175,20 @@ export function registerDuplicatedStrings(server) {
|
|
|
176
175
|
'Consider string interning with a `Map<string, string>` pool applied at ingestion time, ' +
|
|
177
176
|
'or deduplicating at the data source.');
|
|
178
177
|
}
|
|
179
|
-
|
|
178
|
+
// Harness content is excluded from the headline: the number a caller
|
|
179
|
+
// acts on must be reclaimable from the application.
|
|
180
|
+
const totalSavings = duplicated.reduce((sum, d) => d.actionability === 'harness' ? sum : sum + d.potential_savings, 0);
|
|
180
181
|
const summaryLine = appActionableCount > 0
|
|
181
182
|
? `${appActionableCount} of ${duplicated.length} entries are app-actionable`
|
|
182
183
|
: `${duplicated.length} entries (all framework-held)`;
|
|
183
|
-
const
|
|
184
|
+
const harnessNote = harnessEntries.length > 0
|
|
185
|
+
? `\n\n⚠️ **${harnessEntries.length} entr${harnessEntries.length === 1 ? 'y' : 'ies'} (${formatBytes(harnessBytes)}) excluded from the total as measurement-harness content** — the CDP/devtools bridge injected into the page to drive this session, not application memory. Interning it reclaims nothing in production.`
|
|
186
|
+
: '';
|
|
187
|
+
// The two string tools answer different questions and their outputs
|
|
188
|
+
// used to restate each other. Say which is which, once, and note that
|
|
189
|
+
// the expensive scan is shared rather than repeated.
|
|
190
|
+
const relatedNote = `\n\n_This is the raw per-VALUE duplication table. \`memlab_intern_opportunities\` groups the same strings by property x parent shape and estimates what a canonical intern pool would actually reclaim (accounting for co-retention and the length cap) — use it to decide whether to write the fix, and this to see the values. It reuses this snapshot's string scan${reused ? ', which was itself already cached' : ''}, so running both costs one pass over the string nodes, not two._`;
|
|
191
|
+
const body = `Duplicated strings (${summaryLine}):\n\n${lines.join('\n')}\n\n**Total interning savings: ${formatBytes(totalSavings)}** (if each string were stored only once, harness content excluded)${harnessNote}${suggestionsSuppressed() ? '' : relatedNote}`;
|
|
184
192
|
return toolResult(suggestions.length > 0
|
|
185
193
|
? `${body}\n\n---\n\n${suggestions.join('\n')}`
|
|
186
194
|
: body);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicated-strings.js","sourceRoot":"","sources":["../../src/tools/duplicated-strings.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,uBAAuB,
|
|
1
|
+
{"version":3,"file":"duplicated-strings.js","sourceRoot":"","sources":["../../src/tools/duplicated-strings.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/eval.d.ts
CHANGED
package/dist/tools/eval.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/tools/eval.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/tools/eval.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AA4EvE,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAMxC;AA0ID,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAy7BpD"}
|