@memlab/mcp-server 2.52.0 → 2.86.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.
Files changed (277) hide show
  1. package/README.md +22 -2
  2. package/dist/anonymized-snapshot.d.ts +75 -0
  3. package/dist/anonymized-snapshot.d.ts.map +1 -0
  4. package/dist/anonymized-snapshot.js +101 -0
  5. package/dist/anonymized-snapshot.js.map +1 -0
  6. package/dist/eval-hints.d.ts +41 -0
  7. package/dist/eval-hints.d.ts.map +1 -0
  8. package/dist/eval-hints.js +115 -0
  9. package/dist/eval-hints.js.map +1 -0
  10. package/dist/heap-budget.d.ts +32 -0
  11. package/dist/heap-budget.d.ts.map +1 -0
  12. package/dist/heap-budget.js +90 -0
  13. package/dist/heap-budget.js.map +1 -0
  14. package/dist/heap-shapes.d.ts +148 -0
  15. package/dist/heap-shapes.d.ts.map +1 -0
  16. package/dist/heap-shapes.js +193 -0
  17. package/dist/heap-shapes.js.map +1 -0
  18. package/dist/heap-state.d.ts +20 -0
  19. package/dist/heap-state.d.ts.map +1 -1
  20. package/dist/heap-state.js +8 -1
  21. package/dist/heap-state.js.map +1 -1
  22. package/dist/index.js +64 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/react-shapes.d.ts +42 -0
  25. package/dist/react-shapes.d.ts.map +1 -0
  26. package/dist/react-shapes.js +149 -0
  27. package/dist/react-shapes.js.map +1 -0
  28. package/dist/server-version.d.ts +19 -0
  29. package/dist/server-version.d.ts.map +1 -0
  30. package/dist/server-version.js +19 -0
  31. package/dist/server-version.js.map +1 -0
  32. package/dist/snapshot-borrow.d.ts +67 -0
  33. package/dist/snapshot-borrow.d.ts.map +1 -0
  34. package/dist/snapshot-borrow.js +113 -0
  35. package/dist/snapshot-borrow.js.map +1 -0
  36. package/dist/string-index.d.ts.map +1 -1
  37. package/dist/string-index.js +8 -0
  38. package/dist/string-index.js.map +1 -1
  39. package/dist/tools/analyze-run.d.ts.map +1 -1
  40. package/dist/tools/analyze-run.js +79 -18
  41. package/dist/tools/analyze-run.js.map +1 -1
  42. package/dist/tools/anonymize-snapshot.d.ts +12 -0
  43. package/dist/tools/anonymize-snapshot.d.ts.map +1 -0
  44. package/dist/tools/anonymize-snapshot.js +159 -0
  45. package/dist/tools/anonymize-snapshot.js.map +1 -0
  46. package/dist/tools/app-config.d.ts +12 -0
  47. package/dist/tools/app-config.d.ts.map +1 -0
  48. package/dist/tools/app-config.js +217 -0
  49. package/dist/tools/app-config.js.map +1 -0
  50. package/dist/tools/app-heap.d.ts +18 -0
  51. package/dist/tools/app-heap.d.ts.map +1 -1
  52. package/dist/tools/app-heap.js +12 -46
  53. package/dist/tools/app-heap.js.map +1 -1
  54. package/dist/tools/artifact-budget.d.ts +12 -0
  55. package/dist/tools/artifact-budget.d.ts.map +1 -0
  56. package/dist/tools/artifact-budget.js +219 -0
  57. package/dist/tools/artifact-budget.js.map +1 -0
  58. package/dist/tools/async-census.d.ts +12 -0
  59. package/dist/tools/async-census.d.ts.map +1 -0
  60. package/dist/tools/async-census.js +243 -0
  61. package/dist/tools/async-census.js.map +1 -0
  62. package/dist/tools/auto-investigate.d.ts.map +1 -1
  63. package/dist/tools/auto-investigate.js +54 -5
  64. package/dist/tools/auto-investigate.js.map +1 -1
  65. package/dist/tools/batch.d.ts.map +1 -1
  66. package/dist/tools/batch.js +33 -5
  67. package/dist/tools/batch.js.map +1 -1
  68. package/dist/tools/cache-analysis.d.ts +15 -0
  69. package/dist/tools/cache-analysis.d.ts.map +1 -1
  70. package/dist/tools/cache-analysis.js +85 -10
  71. package/dist/tools/cache-analysis.js.map +1 -1
  72. package/dist/tools/census-diff.d.ts +55 -0
  73. package/dist/tools/census-diff.d.ts.map +1 -0
  74. package/dist/tools/census-diff.js +228 -0
  75. package/dist/tools/census-diff.js.map +1 -0
  76. package/dist/tools/chain-walk.d.ts +12 -0
  77. package/dist/tools/chain-walk.d.ts.map +1 -0
  78. package/dist/tools/chain-walk.js +184 -0
  79. package/dist/tools/chain-walk.js.map +1 -0
  80. package/dist/tools/collection-diff.d.ts +44 -0
  81. package/dist/tools/collection-diff.d.ts.map +1 -0
  82. package/dist/tools/collection-diff.js +343 -0
  83. package/dist/tools/collection-diff.js.map +1 -0
  84. package/dist/tools/collection-trend.d.ts.map +1 -1
  85. package/dist/tools/collection-trend.js +2 -2
  86. package/dist/tools/collection-trend.js.map +1 -1
  87. package/dist/tools/detached-dom.d.ts +3 -0
  88. package/dist/tools/detached-dom.d.ts.map +1 -1
  89. package/dist/tools/detached-dom.js +78 -3
  90. package/dist/tools/detached-dom.js.map +1 -1
  91. package/dist/tools/dev-artifacts.d.ts.map +1 -1
  92. package/dist/tools/dev-artifacts.js +221 -3
  93. package/dist/tools/dev-artifacts.js.map +1 -1
  94. package/dist/tools/diff-snapshots.d.ts.map +1 -1
  95. package/dist/tools/diff-snapshots.js +18 -2
  96. package/dist/tools/diff-snapshots.js.map +1 -1
  97. package/dist/tools/dom-audit.d.ts +37 -0
  98. package/dist/tools/dom-audit.d.ts.map +1 -0
  99. package/dist/tools/dom-audit.js +247 -0
  100. package/dist/tools/dom-audit.js.map +1 -0
  101. package/dist/tools/duplicated-strings.d.ts.map +1 -1
  102. package/dist/tools/duplicated-strings.js +3 -2
  103. package/dist/tools/duplicated-strings.js.map +1 -1
  104. package/dist/tools/eval-across.d.ts +12 -0
  105. package/dist/tools/eval-across.d.ts.map +1 -0
  106. package/dist/tools/eval-across.js +135 -0
  107. package/dist/tools/eval-across.js.map +1 -0
  108. package/dist/tools/eval.d.ts +78 -0
  109. package/dist/tools/eval.d.ts.map +1 -1
  110. package/dist/tools/eval.js +2270 -701
  111. package/dist/tools/eval.js.map +1 -1
  112. package/dist/tools/event-listener-leaks.d.ts.map +1 -1
  113. package/dist/tools/event-listener-leaks.js +42 -17
  114. package/dist/tools/event-listener-leaks.js.map +1 -1
  115. package/dist/tools/event-registry.d.ts.map +1 -1
  116. package/dist/tools/event-registry.js +42 -8
  117. package/dist/tools/event-registry.js.map +1 -1
  118. package/dist/tools/explain-delta.d.ts.map +1 -1
  119. package/dist/tools/explain-delta.js +61 -10
  120. package/dist/tools/explain-delta.js.map +1 -1
  121. package/dist/tools/finding-index.d.ts +181 -0
  122. package/dist/tools/finding-index.d.ts.map +1 -1
  123. package/dist/tools/finding-index.js +343 -24
  124. package/dist/tools/finding-index.js.map +1 -1
  125. package/dist/tools/get-value.d.ts +16 -0
  126. package/dist/tools/get-value.d.ts.map +1 -1
  127. package/dist/tools/get-value.js +96 -2
  128. package/dist/tools/get-value.js.map +1 -1
  129. package/dist/tools/hypothesis.d.ts.map +1 -1
  130. package/dist/tools/hypothesis.js +117 -58
  131. package/dist/tools/hypothesis.js.map +1 -1
  132. package/dist/tools/id-space-audit.d.ts +12 -0
  133. package/dist/tools/id-space-audit.d.ts.map +1 -0
  134. package/dist/tools/id-space-audit.js +262 -0
  135. package/dist/tools/id-space-audit.js.map +1 -0
  136. package/dist/tools/identify.d.ts +12 -0
  137. package/dist/tools/identify.d.ts.map +1 -0
  138. package/dist/tools/identify.js +205 -0
  139. package/dist/tools/identify.js.map +1 -0
  140. package/dist/tools/identity-diff.d.ts +12 -0
  141. package/dist/tools/identity-diff.d.ts.map +1 -0
  142. package/dist/tools/identity-diff.js +188 -0
  143. package/dist/tools/identity-diff.js.map +1 -0
  144. package/dist/tools/intern-opportunities.d.ts.map +1 -1
  145. package/dist/tools/intern-opportunities.js +4 -3
  146. package/dist/tools/intern-opportunities.js.map +1 -1
  147. package/dist/tools/ladder-probe.d.ts +65 -0
  148. package/dist/tools/ladder-probe.d.ts.map +1 -0
  149. package/dist/tools/ladder-probe.js +445 -0
  150. package/dist/tools/ladder-probe.js.map +1 -0
  151. package/dist/tools/ladder.d.ts.map +1 -1
  152. package/dist/tools/ladder.js +5 -5
  153. package/dist/tools/ladder.js.map +1 -1
  154. package/dist/tools/leak-report.d.ts +23 -0
  155. package/dist/tools/leak-report.d.ts.map +1 -1
  156. package/dist/tools/leak-report.js +153 -11
  157. package/dist/tools/leak-report.js.map +1 -1
  158. package/dist/tools/load-snapshot.d.ts +11 -0
  159. package/dist/tools/load-snapshot.d.ts.map +1 -1
  160. package/dist/tools/load-snapshot.js +83 -10
  161. package/dist/tools/load-snapshot.js.map +1 -1
  162. package/dist/tools/metric.d.ts +13 -0
  163. package/dist/tools/metric.d.ts.map +1 -0
  164. package/dist/tools/metric.js +185 -0
  165. package/dist/tools/metric.js.map +1 -0
  166. package/dist/tools/module-attribution.d.ts +36 -0
  167. package/dist/tools/module-attribution.d.ts.map +1 -0
  168. package/dist/tools/module-attribution.js +235 -0
  169. package/dist/tools/module-attribution.js.map +1 -0
  170. package/dist/tools/next-measurement.d.ts +26 -0
  171. package/dist/tools/next-measurement.d.ts.map +1 -0
  172. package/dist/tools/next-measurement.js +149 -0
  173. package/dist/tools/next-measurement.js.map +1 -0
  174. package/dist/tools/object-cost-breakdown.d.ts.map +1 -1
  175. package/dist/tools/object-cost-breakdown.js +64 -0
  176. package/dist/tools/object-cost-breakdown.js.map +1 -1
  177. package/dist/tools/population-vs-owners.d.ts +12 -0
  178. package/dist/tools/population-vs-owners.d.ts.map +1 -0
  179. package/dist/tools/population-vs-owners.js +183 -0
  180. package/dist/tools/population-vs-owners.js.map +1 -0
  181. package/dist/tools/property-names.d.ts +29 -0
  182. package/dist/tools/property-names.d.ts.map +1 -0
  183. package/dist/tools/property-names.js +131 -0
  184. package/dist/tools/property-names.js.map +1 -0
  185. package/dist/tools/quick-diagnosis.d.ts.map +1 -1
  186. package/dist/tools/quick-diagnosis.js +7 -1
  187. package/dist/tools/quick-diagnosis.js.map +1 -1
  188. package/dist/tools/react-owners.d.ts +12 -0
  189. package/dist/tools/react-owners.d.ts.map +1 -0
  190. package/dist/tools/react-owners.js +167 -0
  191. package/dist/tools/react-owners.js.map +1 -0
  192. package/dist/tools/react-update-queues.d.ts +12 -0
  193. package/dist/tools/react-update-queues.d.ts.map +1 -0
  194. package/dist/tools/react-update-queues.js +173 -0
  195. package/dist/tools/react-update-queues.js.map +1 -0
  196. package/dist/tools/replicate.d.ts +49 -0
  197. package/dist/tools/replicate.d.ts.map +1 -0
  198. package/dist/tools/replicate.js +241 -0
  199. package/dist/tools/replicate.js.map +1 -0
  200. package/dist/tools/retainer-diff.d.ts +12 -0
  201. package/dist/tools/retainer-diff.d.ts.map +1 -0
  202. package/dist/tools/retainer-diff.js +168 -0
  203. package/dist/tools/retainer-diff.js.map +1 -0
  204. package/dist/tools/retainer-summary.d.ts +17 -0
  205. package/dist/tools/retainer-summary.d.ts.map +1 -1
  206. package/dist/tools/retainer-summary.js +85 -22
  207. package/dist/tools/retainer-summary.js.map +1 -1
  208. package/dist/tools/retainer-trace.d.ts.map +1 -1
  209. package/dist/tools/retainer-trace.js +11 -1
  210. package/dist/tools/retainer-trace.js.map +1 -1
  211. package/dist/tools/round-audit.d.ts +66 -0
  212. package/dist/tools/round-audit.d.ts.map +1 -0
  213. package/dist/tools/round-audit.js +258 -0
  214. package/dist/tools/round-audit.js.map +1 -0
  215. package/dist/tools/round-digest.d.ts +12 -0
  216. package/dist/tools/round-digest.d.ts.map +1 -0
  217. package/dist/tools/round-digest.js +190 -0
  218. package/dist/tools/round-digest.js.map +1 -0
  219. package/dist/tools/script-census.d.ts +12 -0
  220. package/dist/tools/script-census.d.ts.map +1 -0
  221. package/dist/tools/script-census.js +182 -0
  222. package/dist/tools/script-census.js.map +1 -0
  223. package/dist/tools/sequence-analysis.d.ts +4 -0
  224. package/dist/tools/sequence-analysis.d.ts.map +1 -1
  225. package/dist/tools/sequence-analysis.js +53 -9
  226. package/dist/tools/sequence-analysis.js.map +1 -1
  227. package/dist/tools/server-status.d.ts.map +1 -1
  228. package/dist/tools/server-status.js +4 -1
  229. package/dist/tools/server-status.js.map +1 -1
  230. package/dist/tools/settle-check.d.ts +12 -0
  231. package/dist/tools/settle-check.d.ts.map +1 -0
  232. package/dist/tools/settle-check.js +188 -0
  233. package/dist/tools/settle-check.js.map +1 -0
  234. package/dist/tools/sliced-strings.d.ts.map +1 -1
  235. package/dist/tools/sliced-strings.js +2 -1
  236. package/dist/tools/sliced-strings.js.map +1 -1
  237. package/dist/tools/snapshots.d.ts.map +1 -1
  238. package/dist/tools/snapshots.js +24 -6
  239. package/dist/tools/snapshots.js.map +1 -1
  240. package/dist/tools/sparse-elements.d.ts +12 -0
  241. package/dist/tools/sparse-elements.d.ts.map +1 -0
  242. package/dist/tools/sparse-elements.js +215 -0
  243. package/dist/tools/sparse-elements.js.map +1 -0
  244. package/dist/tools/stale-collections.d.ts +17 -0
  245. package/dist/tools/stale-collections.d.ts.map +1 -1
  246. package/dist/tools/stale-collections.js +28 -0
  247. package/dist/tools/stale-collections.js.map +1 -1
  248. package/dist/tools/string-patterns.d.ts.map +1 -1
  249. package/dist/tools/string-patterns.js +2 -1
  250. package/dist/tools/string-patterns.js.map +1 -1
  251. package/dist/tools/tools-index.d.ts.map +1 -1
  252. package/dist/tools/tools-index.js +155 -5
  253. package/dist/tools/tools-index.js.map +1 -1
  254. package/dist/tools/trace-all.d.ts +42 -0
  255. package/dist/tools/trace-all.d.ts.map +1 -0
  256. package/dist/tools/trace-all.js +263 -0
  257. package/dist/tools/trace-all.js.map +1 -0
  258. package/dist/tools/unit-cost.d.ts +12 -0
  259. package/dist/tools/unit-cost.d.ts.map +1 -0
  260. package/dist/tools/unit-cost.js +219 -0
  261. package/dist/tools/unit-cost.js.map +1 -0
  262. package/dist/tools/verify-fix.d.ts.map +1 -1
  263. package/dist/tools/verify-fix.js +11 -3
  264. package/dist/tools/verify-fix.js.map +1 -1
  265. package/dist/tools/weakref-census.d.ts +15 -0
  266. package/dist/tools/weakref-census.d.ts.map +1 -0
  267. package/dist/tools/weakref-census.js +147 -0
  268. package/dist/tools/weakref-census.js.map +1 -0
  269. package/dist/tools/what-if.d.ts +12 -0
  270. package/dist/tools/what-if.d.ts.map +1 -0
  271. package/dist/tools/what-if.js +285 -0
  272. package/dist/tools/what-if.js.map +1 -0
  273. package/dist/utils.d.ts +92 -2
  274. package/dist/utils.d.ts.map +1 -1
  275. package/dist/utils.js +172 -5
  276. package/dist/utils.js.map +1 -1
  277. package/package.json +3 -3
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @format
8
+ * @oncall memory_lab
9
+ */
10
+ import { z } from 'zod';
11
+ import { getCurrentHandle, getMetadataByHandle, getSnapshotByHandle, listSnapshots, } from '../heap-state.js';
12
+ import { clusterByRetainerPath, renderClusterChain, selectPopulation, } from './trace-all.js';
13
+ import { errorResult, formatNumber, markdownTable, toolResult, } from '../utils.js';
14
+ export function registerRetainerDiff(server) {
15
+ server.tool('memlab_retainer_diff', 'A population grew between two snapshots — did it grow along the SAME retention path, or did a new one appear?\n\n' +
16
+ 'This is the question a count diff cannot answer and the one that decides what to fix. "42,000 → 61,000 listener records" is consistent with two completely different bugs: an existing owner accumulating faster, or a second owner that did not exist before. A count, a class histogram and a population diff all read identically in the two cases.\n\n' +
17
+ 'Clusters the full population by retainer path in BOTH snapshots and reports paths that are new, grew, shrank or vanished. Both snapshots must be resident (load with `keep_previous: true`); the active snapshot is not changed.', {
18
+ before_handle: z
19
+ .string()
20
+ .describe('Handle of the earlier snapshot (memlab_snapshots lists them).'),
21
+ after_handle: z.string().describe('Handle of the later snapshot.'),
22
+ class_name: z
23
+ .string()
24
+ .optional()
25
+ .describe('Population: every instance of this class.'),
26
+ shape: z
27
+ .array(z.string())
28
+ .optional()
29
+ .describe('Population: every object carrying ALL of these properties — the selector that survives minification, and the one to use here since node ids and class names are not comparable across captures.'),
30
+ framework_filter: z
31
+ .boolean()
32
+ .optional()
33
+ .default(true)
34
+ .describe('Collapse V8/framework internals out of the path signature so structurally identical application paths compare equal (default true).'),
35
+ limit: z
36
+ .number()
37
+ .optional()
38
+ .default(10)
39
+ .describe('Rows in the change table (default 10).'),
40
+ max_depth: z
41
+ .number()
42
+ .optional()
43
+ .describe('Compare on the first N hops from the GC ROOT instead of the whole path. Defaults to the whole path; use 5-7 when the full-depth signature fragments into roughly one path per object (a per-chat property edge or a per-event listener array does that), which otherwise makes every path look new or vanished.'),
44
+ max_trace: z
45
+ .number()
46
+ .optional()
47
+ .default(200000)
48
+ .describe('Per-snapshot bound on nodes traced (default 200,000).'),
49
+ }, async ({ before_handle, after_handle, class_name, shape, framework_filter, limit, max_depth, max_trace, }) => {
50
+ try {
51
+ if ((class_name == null) === (shape == null || shape.length === 0)) {
52
+ return errorResult(new Error('Pass exactly one of class_name / shape. Node ids are per-capture and cannot select a population in two snapshots, which is why node_ids is not accepted here.'));
53
+ }
54
+ const resolve = (h) => {
55
+ const snap = getSnapshotByHandle(h);
56
+ const meta = getMetadataByHandle(h);
57
+ if (snap == null || meta == null) {
58
+ const available = listSnapshots()
59
+ .map(m => m.handle)
60
+ .join(', ');
61
+ throw new Error(`No resident snapshot with handle "${h}". Resident: ${available === '' ? '(none)' : available}. Load both rungs with memlab_load_snapshot({keep_previous: true}).`);
62
+ }
63
+ if (meta.light) {
64
+ throw new Error(`Snapshot "${h}" was loaded with light: true, which skips the path/dominator pass — there are no retainer paths to compare. Reload it with light: false.`);
65
+ }
66
+ return { snap, meta };
67
+ };
68
+ const before = resolve(before_handle);
69
+ const after = resolve(after_handle);
70
+ if (before_handle === after_handle) {
71
+ return errorResult(new Error('before_handle and after_handle are the same snapshot.'));
72
+ }
73
+ const sel = { className: class_name, shape };
74
+ const b = clusterByRetainerPath(selectPopulation(before.snap, sel), framework_filter, max_trace, max_depth);
75
+ const a = clusterByRetainerPath(selectPopulation(after.snap, sel), framework_filter, max_trace, max_depth);
76
+ if (b.clusters.length === 0 && a.clusters.length === 0) {
77
+ return toolResult('The population is empty (or unreachable) in both snapshots — nothing to compare. Check the selector with `memlab_class_histogram` / `memlab_shape_histogram` on each handle.');
78
+ }
79
+ const beforeByKey = new Map(b.clusters.map(c => [c.key, c]));
80
+ const afterByKey = new Map(a.clusters.map(c => [c.key, c]));
81
+ const rows = [];
82
+ for (const key of new Set([
83
+ ...beforeByKey.keys(),
84
+ ...afterByKey.keys(),
85
+ ])) {
86
+ const bc = beforeByKey.get(key);
87
+ const ac = afterByKey.get(key);
88
+ const representative = ac ?? bc;
89
+ if (representative == null)
90
+ continue;
91
+ const beforeCount = bc?.count ?? 0;
92
+ const afterCount = ac?.count ?? 0;
93
+ if (beforeCount === afterCount)
94
+ continue;
95
+ rows.push({
96
+ key,
97
+ before: beforeCount,
98
+ after: afterCount,
99
+ delta: afterCount - beforeCount,
100
+ chain: renderClusterChain(representative.steps),
101
+ exampleAfter: ac?.exampleIds[0] ?? null,
102
+ });
103
+ }
104
+ rows.sort((x, y) => Math.abs(y.delta) - Math.abs(x.delta));
105
+ const bTotal = b.traced;
106
+ const aTotal = a.traced;
107
+ const label = class_name != null
108
+ ? `class \`${class_name}\``
109
+ : `shape \`{${(shape ?? []).join(', ')}}\``;
110
+ const lines = [
111
+ `## Retention paths for ${label}: ${before.meta.fileName} → ${after.meta.fileName}`,
112
+ '',
113
+ `Population: **${formatNumber(bTotal)} → ${formatNumber(aTotal)}** traced objects (${aTotal - bTotal >= 0 ? '+' : ''}${formatNumber(aTotal - bTotal)}), across **${formatNumber(b.clusters.length)} → ${formatNumber(a.clusters.length)}** distinct paths.`,
114
+ ];
115
+ if (b.truncated || a.truncated) {
116
+ lines.push('', `⚠ The ${formatNumber(max_trace)}-node trace bound was hit in ${b.truncated && a.truncated ? 'both snapshots' : b.truncated ? 'the BEFORE snapshot' : 'the AFTER snapshot'}, so the counts below are of a partial sweep and the two sides may not be comparable. Raise \`max_trace\`.`);
117
+ }
118
+ if (max_depth == null &&
119
+ Math.max(b.clusters.length, a.clusters.length) >
120
+ Math.max(bTotal, aTotal) * 0.5) {
121
+ lines.push('', `⚠ ${formatNumber(a.clusters.length)} paths for ${formatNumber(aTotal)} objects — the full-depth signature is keying on a per-instance hop, so paths do not line up across captures and almost everything below will read as new or vanished. Re-run with \`max_depth: 5\` (or 6-7) to compare owners rather than instances.`);
122
+ }
123
+ if (rows.length === 0) {
124
+ lines.push('', '**Every path holds exactly the same count in both snapshots.** The population did not change along any retention path — if a total did change, it changed somewhere this selector does not cover.');
125
+ return toolResult(lines.join('\n'));
126
+ }
127
+ const newPaths = rows.filter(r => r.before === 0);
128
+ const grown = rows.filter(r => r.before > 0 && r.delta > 0);
129
+ const gone = rows.filter(r => r.after === 0);
130
+ lines.push('', newPaths.length > 0
131
+ ? `**${formatNumber(newPaths.length)} path(s) are NEW**, holding ${formatNumber(newPaths.reduce((s, r) => s + r.after, 0))} object(s) that had no counterpart in the earlier snapshot. A new path is a different bug from an existing one accumulating: the owner did not exist before, so a fix aimed at the pre-existing owner will not touch it.`
132
+ : `**No new paths.** All of the change is existing owners holding more or fewer objects, so the retention MECHANISM is unchanged and the question is what is driving the rate.`);
133
+ if (grown.length > 0 && newPaths.length > 0) {
134
+ lines.push('', `${formatNumber(grown.length)} pre-existing path(s) also grew, by ${formatNumber(grown.reduce((s, r) => s + r.delta, 0))} object(s) in total — both mechanisms are active, so sizing a fix against either one alone will over-promise.`);
135
+ }
136
+ lines.push('', markdownTable(['Change', 'Before', 'After', 'Δ', 'Example'], rows
137
+ .slice(0, limit)
138
+ .map(r => [
139
+ r.before === 0
140
+ ? 'NEW'
141
+ : r.after === 0
142
+ ? 'gone'
143
+ : r.delta > 0
144
+ ? 'grew'
145
+ : 'shrank',
146
+ formatNumber(r.before),
147
+ formatNumber(r.after),
148
+ `${r.delta >= 0 ? '+' : ''}${formatNumber(r.delta)}`,
149
+ r.exampleAfter != null ? `@${r.exampleAfter}` : '—',
150
+ ]), new Set([1, 2, 3])));
151
+ if (rows.length > limit) {
152
+ lines.push('', `_${formatNumber(rows.length - limit)} further changed path(s) not shown; raise \`limit\`._`);
153
+ }
154
+ rows.slice(0, Math.min(limit, 5)).forEach((r, i) => {
155
+ lines.push('', `### ${i + 1}. ${r.before === 0 ? 'NEW' : r.after === 0 ? 'gone' : r.delta > 0 ? 'grew' : 'shrank'} ${formatNumber(r.before)} → ${formatNumber(r.after)}`, '', r.chain);
156
+ });
157
+ if (gone.length > 0) {
158
+ lines.push('', `_${formatNumber(gone.length)} path(s) present before and absent after (${formatNumber(gone.reduce((s, x) => s + x.before, 0))} objects). That is usually a genuine release, but it is also what a differently-shaped path looks like after a code change renamed something in it — the signature includes class names._`);
159
+ }
160
+ lines.push('', '_Paths are matched by structural signature, so a rename anywhere along a chain reads as one path vanishing and another appearing. Bytes are not compared here — use `memlab_what_if` on a cluster for what a fix at one owner would free._', '', `Active snapshot unchanged (${getCurrentHandle() ?? 'none'}).`);
161
+ return toolResult(lines.join('\n'));
162
+ }
163
+ catch (err) {
164
+ return errorResult(err);
165
+ }
166
+ });
167
+ }
168
+ //# sourceMappingURL=retainer-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retainer-diff.js","sourceRoot":"","sources":["../../src/tools/retainer-diff.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,23 @@
8
8
  * @oncall memory_lab
9
9
  */
10
10
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
11
+ import type { IHeapNode } from '@memlab/core';
12
+ export interface TraceStep {
13
+ name: string;
14
+ type: string;
15
+ edgeName?: string;
16
+ }
17
+ export declare function getRetainerTrace(node: IHeapNode): TraceStep[] | null;
18
+ export declare function traceToKey(steps: TraceStep[], frameworkFilter: boolean): string;
19
+ /**
20
+ * Shorten one hop's label without changing which node it names.
21
+ *
22
+ * Order matters: elide C++ template arguments FIRST (that is where the bytes
23
+ * are and the elision is information-preserving about the outer type), and only
24
+ * then fall back to a blunt truncation.
25
+ */
26
+ export declare function shortenPath(name: string): string;
27
+ export declare function formatTraceChain(steps: TraceStep[]): string;
11
28
  export declare const COMPACT_GAP_MARKER = "\u22EF";
12
29
  export declare function registerRetainerSummary(server: McpServer): void;
13
30
  //# sourceMappingURL=retainer-summary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retainer-summary.d.ts","sourceRoot":"","sources":["../../src/tools/retainer-summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAwIvE,eAAO,MAAM,kBAAkB,WAAM,CAAC;AAgDtC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqb/D"}
1
+ {"version":3,"file":"retainer-summary.d.ts","sourceRoot":"","sources":["../../src/tools/retainer-summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAC,SAAS,EAAY,MAAM,cAAc,CAAC;AAcvD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA6BD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,IAAI,CAuBpE;AAmBD,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,EAAE,OAAO,GACvB,MAAM,CAaR;AAiBD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqBhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAe3D;AAKD,eAAO,MAAM,kBAAkB,WAAM,CAAC;AAgDtC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4d/D"}
@@ -10,7 +10,7 @@
10
10
  import { z } from 'zod';
11
11
  import { getSnapshot } from '../heap-state.js';
12
12
  import { resolveSavedNodeIds } from '../result-handles.js';
13
- import { collapseRepeatedLabels, filterLargestObjects, formatBytes, truncateDomToTag, errorResult, toolResult, } from '../utils.js';
13
+ import { abbreviateBlinkTypeName, collapseRepeatedLabels, errorResult, filterLargestObjectsCounted, formatBytes, toolResult, truncateDomToTag, } from '../utils.js';
14
14
  const FRAMEWORK_PATTERNS = new Set([
15
15
  'system / Context',
16
16
  'system / PromiseReaction',
@@ -41,7 +41,7 @@ function isFrameworkStep(step) {
41
41
  return true;
42
42
  return false;
43
43
  }
44
- function getRetainerTrace(node) {
44
+ export function getRetainerTrace(node) {
45
45
  if (!node.hasPathEdge)
46
46
  return null;
47
47
  const visited = new Set([node.id]);
@@ -80,7 +80,7 @@ function normalizeEdgeName(name) {
80
80
  function normalizeStepName(name) {
81
81
  return name.replace(/ @\d+\b/g, ' @…');
82
82
  }
83
- function traceToKey(steps, frameworkFilter) {
83
+ export function traceToKey(steps, frameworkFilter) {
84
84
  const filtered = frameworkFilter
85
85
  ? steps.filter((s, i) => i === 0 || i === steps.length - 1 || !isFrameworkStep(s))
86
86
  : steps;
@@ -91,23 +91,51 @@ function traceToKey(steps, frameworkFilter) {
91
91
  })
92
92
  .join(' ');
93
93
  }
94
- function shortenPath(name) {
94
+ /**
95
+ * Hard ceiling on ONE hop's label.
96
+ *
97
+ * Blink template names are the reason this exists. A single Oilpan collection
98
+ * node renders as ~600 characters of nested template arguments and write-barrier
99
+ * policies, e.g.
100
+ * `blink::HeapHashTableBacking<blink::HashTable<cppgc::internal::BasicMember<
101
+ * blink::SVGSVGElement, cppgc::internal::StrongMemberTag, …>>>`. A sampled
102
+ * summary is dozens of hops across dozens of paths, so this is not a cosmetic
103
+ * problem: `memlab_retainer_summary` at `sample: 8, compact: true` produced
104
+ * **86,700 characters** and exceeded the tool-result limit outright, i.e. the
105
+ * tool could not be used at the sample size it is meant for.
106
+ */
107
+ const MAX_STEP_NAME_LEN = 90;
108
+ /**
109
+ * Shorten one hop's label without changing which node it names.
110
+ *
111
+ * Order matters: elide C++ template arguments FIRST (that is where the bytes
112
+ * are and the elision is information-preserving about the outer type), and only
113
+ * then fall back to a blunt truncation.
114
+ */
115
+ export function shortenPath(name) {
95
116
  const isDomLike = name.includes('class="') ||
96
117
  name.includes('aria-') ||
97
118
  name.startsWith('<') ||
98
119
  name.startsWith('Detached <');
99
120
  if (isDomLike)
100
121
  return truncateDomToTag(name);
101
- if (name.length <= 40)
102
- return name;
103
- const parts = name.split('/');
104
- if (parts.length <= 2)
105
- return name;
106
- const fileName = parts[parts.length - 1];
107
- const dir = parts[parts.length - 2];
108
- return `…/${dir}/${fileName}`;
122
+ const abbreviated = abbreviateBlinkTypeName(name);
123
+ if (abbreviated.length <= 40)
124
+ return abbreviated;
125
+ const parts = abbreviated.split('/');
126
+ if (parts.length > 2) {
127
+ const fileName = parts[parts.length - 1];
128
+ const dir = parts[parts.length - 2];
129
+ const short = `…/${dir}/${fileName}`;
130
+ return short.length <= MAX_STEP_NAME_LEN
131
+ ? short
132
+ : `${short.slice(0, MAX_STEP_NAME_LEN)}…`;
133
+ }
134
+ return abbreviated.length <= MAX_STEP_NAME_LEN
135
+ ? abbreviated
136
+ : `${abbreviated.slice(0, MAX_STEP_NAME_LEN)}…`;
109
137
  }
110
- function formatTraceChain(steps) {
138
+ export function formatTraceChain(steps) {
111
139
  // Fold runs of identical `Name (type) --edge-->` hops. A linked structure
112
140
  // (e.g. a React update queue's `.next` chain) otherwise renders hundreds of
113
141
  // byte-identical hops, which is pure token cost.
@@ -115,7 +143,10 @@ function formatTraceChain(steps) {
115
143
  for (let i = 0; i < steps.length; i++) {
116
144
  const s = steps[i];
117
145
  const edge = s.edgeName != null && i < steps.length - 1 ? ` --${s.edgeName}--> ` : '';
118
- hops.push(`${s.name} (${s.type})${edge}`);
146
+ // Same ceiling as the compact formatter: the full chain is the FATTER of
147
+ // the two renderings, so leaving it unbounded means the non-compact path
148
+ // blows the result limit even sooner than the compact one did.
149
+ hops.push(`${shortenPath(s.name)} (${s.type})${edge}`);
119
150
  }
120
151
  return collapseRepeatedLabels(hops).join('');
121
152
  }
@@ -218,6 +249,10 @@ export function registerRetainerSummary(server) {
218
249
  const snapshot = getSnapshot();
219
250
  let nodes;
220
251
  let label;
252
+ // How many nodes MATCHED, as opposed to how many were traced. Without
253
+ // it, a verdict drawn from the top 5 reads the same whether the
254
+ // population was 5 or 23,918.
255
+ let population = 0;
221
256
  // A saved result stands in for an explicit id list (see
222
257
  // result-handles.ts): same code path, ids never printed.
223
258
  const effectiveNodeIds = node_ids && node_ids.length > 0
@@ -232,11 +267,13 @@ export function registerRetainerSummary(server) {
232
267
  if (node)
233
268
  nodes.push(node);
234
269
  }
270
+ // Explicit ids ARE the population; nothing was sampled away.
271
+ population = nodes.length;
235
272
  label = `${nodes.length} specified node(s)`;
236
273
  }
237
274
  else if (shape && shape.length > 0) {
238
275
  const requiredProps = new Set(shape);
239
- nodes = filterLargestObjects(snapshot, node => {
276
+ ({ nodes, matched: population } = filterLargestObjectsCounted(snapshot, node => {
240
277
  if (node.type !== 'object' || node.id <= 3)
241
278
  return false;
242
279
  const foundProps = new Set();
@@ -248,20 +285,20 @@ export function registerRetainerSummary(server) {
248
285
  }
249
286
  }
250
287
  return foundProps.size === requiredProps.size;
251
- }, sample);
288
+ }, sample));
252
289
  label = `shape {${shape.join(', ')}}`;
253
290
  }
254
291
  else if (name_prefix) {
255
- nodes = filterLargestObjects(snapshot, node => node.name.startsWith(name_prefix), sample);
292
+ ({ nodes, matched: population } = filterLargestObjectsCounted(snapshot, node => node.name.startsWith(name_prefix), sample));
256
293
  label = `prefix "${name_prefix}"`;
257
294
  }
258
295
  else if (class_name) {
259
296
  // Try exact match first
260
- nodes = filterLargestObjects(snapshot, node => node.name === class_name, sample);
297
+ ({ nodes, matched: population } = filterLargestObjectsCounted(snapshot, node => node.name === class_name, sample));
261
298
  // Fall back to substring match (handles V8 detached DOM names
262
299
  // like "Detached <div>" which contain angle brackets)
263
300
  if (nodes.length === 0) {
264
- nodes = filterLargestObjects(snapshot, node => node.name.includes(class_name), sample);
301
+ ({ nodes, matched: population } = filterLargestObjectsCounted(snapshot, node => node.name.includes(class_name), sample));
265
302
  }
266
303
  label = `"${class_name}"`;
267
304
  }
@@ -327,15 +364,37 @@ export function registerRetainerSummary(server) {
327
364
  if (earlyStop)
328
365
  modifiers.push('early termination — high confidence');
329
366
  const modStr = modifiers.length > 0 ? `, ${modifiers.join(', ')}` : '';
367
+ // The fraction, not the count, is what licenses a conclusion. Below
368
+ // this the tool states what it saw and refuses to generalize from it.
369
+ const REPRESENTATIVE_FRACTION = 0.2;
370
+ const coverage = population > 0 ? totalSampled / population : 1;
371
+ const representative = population <= totalSampled || coverage >= REPRESENTATIVE_FRACTION;
372
+ const ofPopulation = population > totalSampled
373
+ ? ` of ${population} matching — ${(coverage * 100).toFixed(1)}% sampled`
374
+ : '';
330
375
  const lines = [
331
- `Retainer summary for ${label} (${totalSampled} sampled${modStr})`,
376
+ `Retainer summary for ${label} (${totalSampled} sampled${ofPopulation}${modStr})`,
332
377
  '',
333
378
  ];
334
379
  if (sorted.length === 1) {
335
380
  const conf = earlyStop
336
381
  ? ' (early termination — all samples matched)'
337
382
  : '';
338
- lines.push(`**All ${sorted[0].count} sampled instances share the same retainer pattern** — likely a single root cause.${conf}`, '');
383
+ if (representative) {
384
+ lines.push(`**All ${sorted[0].count} sampled instances share the same retainer pattern** — likely a single root cause.${conf}`, '');
385
+ }
386
+ else {
387
+ // Refusing the "single root cause" phrasing here is the point. A
388
+ // measured case reported it from 5 samples where the full
389
+ // population held 1,468 distinct paths, the largest covering 2.2%
390
+ // — and a dismissal written from that verdict names the wrong
391
+ // artifact family.
392
+ lines.push(`**All ${sorted[0].count} sampled instances share the same retainer pattern**, but they are ` +
393
+ `only ${(coverage * 100).toFixed(1)}% of the ${population} matching nodes.${conf}`, '', `> ⚠️ **This does NOT establish a single root cause.** The sample is picked by retained ` +
394
+ `size, so it is biased toward whichever subtree is largest, and a uniform top-${totalSampled} ` +
395
+ `is routine in populations that hold thousands of distinct paths. Run ` +
396
+ `\`memlab_trace_all\` over the full population before making that claim, or raise \`sample\`.`, '');
397
+ }
339
398
  }
340
399
  else {
341
400
  // Filled in after the render-dedup pass below, so the count reflects
@@ -418,7 +477,11 @@ export function registerRetainerSummary(server) {
418
477
  : '';
419
478
  lines[patternHeaderIndex] =
420
479
  merged.length === 1
421
- ? `**All ${totalSampled} sampled instances share ONE retainer path** — a single root cause:${collapsedNote}`
480
+ ? representative
481
+ ? `**All ${totalSampled} sampled instances share ONE retainer path** — a single root cause:${collapsedNote}`
482
+ : `**All ${totalSampled} sampled instances share ONE retainer path**, but that is only ` +
483
+ `${(coverage * 100).toFixed(1)}% of the ${population} matching nodes — NOT evidence of a ` +
484
+ `single root cause. Confirm with \`memlab_trace_all\` over the full population.${collapsedNote}`
422
485
  : `**${merged.length} distinct retainer patterns found**${collapsedNote}`;
423
486
  }
424
487
  for (let i = 0; i < merged.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"retainer-summary.js","sourceRoot":"","sources":["../../src/tools/retainer-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retainer-summary.js","sourceRoot":"","sources":["../../src/tools/retainer-summary.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"retainer-trace.d.ts","sourceRoot":"","sources":["../../src/tools/retainer-trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAmCvE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmT7D"}
1
+ {"version":3,"file":"retainer-trace.d.ts","sourceRoot":"","sources":["../../src/tools/retainer-trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAqCvE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6T7D"}
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { z } from 'zod';
11
11
  import { getSnapshot } from '../heap-state.js';
12
- import { formatBytes, formatNodeInline, collapseRepeatedRuns, formatRetainerTree, isNodeWorthInspecting, instrumentationRetainerNote, errorResult, toolResult, } from '../utils.js';
12
+ import { formatBytes, formatNodeInline, collapseRepeatedRuns, formatRetainerTree, isNodeWorthInspecting, instrumentationRetainerNote, errorResult, toolResult, parseEphemeronEdge, ephemeronCaveat, } from '../utils.js';
13
13
  // async/await desugars to a repeating retainer ladder: each suspended `await`
14
14
  // frame is a `Promise → system / Context → Generator` triplet, and a deep async
15
15
  // stack repeats it dozens of times with identical retained sizes. Folding the
@@ -209,6 +209,16 @@ export function registerRetainerTrace(server) {
209
209
  if (instrNote) {
210
210
  lines.push(`⚠ ${instrNote}`, '');
211
211
  }
212
+ // A hop through a WeakMap key→value pair does not explain retention.
213
+ // Checked from the TARGET end backwards, because the last hop is the
214
+ // one that invalidates the conclusion outright.
215
+ for (let i = reverseItems.length - 1; i >= 0; i--) {
216
+ const eph = parseEphemeronEdge(reverseItems[i].edgeName);
217
+ if (!eph)
218
+ continue;
219
+ lines.push(ephemeronCaveat(eph, i === reverseItems.length - 1), '');
220
+ break;
221
+ }
212
222
  if (show_sizes) {
213
223
  // Top-down indented tree: GC root at the top, each node retained by
214
224
  // the one above it. Single, unambiguous reading direction (no mixing
@@ -1 +1 @@
1
- {"version":3,"file":"retainer-trace.js","sourceRoot":"","sources":["../../src/tools/retainer-trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retainer-trace.js","sourceRoot":"","sources":["../../src/tools/retainer-trace.ts"],"names":[],"mappings":"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"}