@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
@@ -57,7 +57,7 @@ const RING_CAPACITY_PROP_RE = /^_?(?:capacity|log_?capacity|max_?size|buffer_?si
57
57
  * Biased towards under-detection: a missed ring is a false leak candidate the
58
58
  * caller can dismiss, while a wrongly-detected one drops a real leak silently.
59
59
  */
60
- function looksLikeRingBuffer(owner) {
60
+ export function looksLikeRingBuffer(owner) {
61
61
  if (!owner)
62
62
  return false;
63
63
  let hasAmbiguousCursor = false;
@@ -191,6 +191,23 @@ function approxEntryCount(node) {
191
191
  }
192
192
  return node.edge_count;
193
193
  }
194
+ /**
195
+ * Entry and slot counts, plus the table's allocated CAPACITY in slots.
196
+ *
197
+ * Capacity comes from the backing store's BYTE SIZE (8 bytes per slot on 64-bit
198
+ * V8), not from its edge count — the edge count is the number of live entries,
199
+ * i.e. the numerator. The distinction matters because V8 never shrinks a hash
200
+ * table: `EphemeronHashTable` in particular keeps whatever capacity it ever
201
+ * reached for the lifetime of the isolate, so a table can be mostly empty and
202
+ * still be one of the largest objects in the heap.
203
+ *
204
+ * Measured on one app, the same WeakMap across two rounds:
205
+ * 2,097,172 B / 262,144 slots / 2,989 live = 1.14% occupancy
206
+ * 8,388,628 B / 1,048,576 slots / 7,564 live = 0.72% occupancy
207
+ * It quadrupled in bytes while live entries only 2.5x'd. Reporting bytes alone
208
+ * invites "the cache grew"; reporting occupancy says "this is stale capacity",
209
+ * which is a different and cheaper fix.
210
+ */
194
211
  function countEntries(node) {
195
212
  if (node.name === 'Map' || node.name === 'Set') {
196
213
  for (const edge of node.references) {
@@ -198,6 +215,7 @@ function countEntries(node) {
198
215
  if ((eName === 'table' || eName === 'backing_store') &&
199
216
  (edge.toNode.type === 'array' || edge.toNode.type === 'hidden')) {
200
217
  const tableNode = edge.toNode;
218
+ const capacitySlots = Math.round((tableNode.self_size ?? 0) / 8);
201
219
  let filledSlots = 0;
202
220
  let totalSlots = 0;
203
221
  for (const e of tableNode.references) {
@@ -216,7 +234,7 @@ function countEntries(node) {
216
234
  totalSlots = filledSlots;
217
235
  }
218
236
  const entries = node.name === 'Map' ? Math.floor(filledSlots / 2) : filledSlots;
219
- return { entries, tableSlots: filledSlots };
237
+ return { entries, tableSlots: filledSlots, capacitySlots };
220
238
  }
221
239
  }
222
240
  // Fallback: count non-internal outgoing edges as a proxy for entries
@@ -228,12 +246,12 @@ function countEntries(node) {
228
246
  }
229
247
  if (propertyCount > 0) {
230
248
  const entries = node.name === 'Map' ? Math.floor(propertyCount / 2) : propertyCount;
231
- return { entries, tableSlots: propertyCount };
249
+ return { entries, tableSlots: propertyCount, capacitySlots: propertyCount };
232
250
  }
233
- return { entries: 0, tableSlots: 0 };
251
+ return { entries: 0, tableSlots: 0, capacitySlots: 0 };
234
252
  }
235
253
  const count = node.edge_count;
236
- return { entries: count, tableSlots: count };
254
+ return { entries: count, tableSlots: count, capacitySlots: count };
237
255
  }
238
256
  function hasWeakRefEntries(node) {
239
257
  for (const edge of node.references) {
@@ -374,7 +392,12 @@ export function registerCacheAnalysis(server) {
374
392
  .describe('Use compact one-line format for sampled entries (default true). ' +
375
393
  'Shows "key_type → value_shape" instead of full object descriptions. ' +
376
394
  'Set to false for verbose entry details.'),
377
- }, async ({ limit, min_entries, min_retained_size, collection_types, detect_object_caches, detect_identical_entries, sample_entries, compact_samples, }) => {
395
+ summary_only: z
396
+ .boolean()
397
+ .optional()
398
+ .default(false)
399
+ .describe('Headline counts and totals ONLY — no ranked table, no per-entry samples, no "long but small" section (default false). Use after the first call in a session, when the ranked table has already been read and only the totals are wanted.'),
400
+ }, async ({ limit, min_entries, min_retained_size, collection_types, detect_object_caches, detect_identical_entries, sample_entries, compact_samples, summary_only, }) => {
378
401
  try {
379
402
  const snapshot = getSnapshot();
380
403
  const meta = getSnapshotMetadata();
@@ -395,7 +418,7 @@ export function registerCacheAnalysis(server) {
395
418
  const bigEnough = node.retainedSize >= min_retained_size;
396
419
  if (!bigEnough && approxEntryCount(node) < min_entries)
397
420
  return;
398
- const { entries: entryCount, tableSlots } = countEntries(node);
421
+ const { entries: entryCount, tableSlots, capacitySlots, } = countEntries(node);
399
422
  if (entryCount < min_entries)
400
423
  return;
401
424
  if (!bigEnough) {
@@ -417,6 +440,7 @@ export function registerCacheAnalysis(server) {
417
440
  collectionType: node.name,
418
441
  entryCount,
419
442
  tableSlots,
443
+ capacitySlots,
420
444
  retainedSize: node.retainedSize,
421
445
  selfSize: node.self_size,
422
446
  ownerName: owner.name,
@@ -554,6 +578,10 @@ export function registerCacheAnalysis(server) {
554
578
  collectionType: cacheType,
555
579
  entryCount: dataEntryCount,
556
580
  tableSlots: dataEntryCount,
581
+ // Ad-hoc object caches have no hash table; capacity == entries so
582
+ // the occupancy column stays quiet for them rather than reporting
583
+ // a meaningless 100%.
584
+ capacitySlots: dataEntryCount,
557
585
  retainedSize: node.retainedSize,
558
586
  selfSize: node.self_size,
559
587
  ownerName: owner.name,
@@ -589,6 +617,7 @@ export function registerCacheAnalysis(server) {
589
617
  collectionType: 'Global registry',
590
618
  entryCount: target.edge_count,
591
619
  tableSlots: target.edge_count,
620
+ capacitySlots: target.edge_count,
592
621
  retainedSize: target.retainedSize,
593
622
  selfSize: target.self_size,
594
623
  ownerName: node.name,
@@ -639,12 +668,26 @@ export function registerCacheAnalysis(server) {
639
668
  }
640
669
  const hasAnyFramework = caches.some(c => c.framework !== '');
641
670
  const hasSlotDifference = caches.some(c => c.tableSlots !== c.entryCount);
671
+ // Occupancy is only meaningful when the table's allocated capacity is
672
+ // actually known and bigger than what is live in it.
673
+ const occupancyOf = (c) => c.capacitySlots > 0 && c.capacitySlots >= c.tableSlots
674
+ ? c.tableSlots / c.capacitySlots
675
+ : null;
676
+ const hasOccupancy = caches.some(c => {
677
+ const o = occupancyOf(c);
678
+ return o != null && o < 0.9;
679
+ });
680
+ const staleCapacity = caches.filter(c => {
681
+ const o = occupancyOf(c);
682
+ return o != null && o < 0.25 && c.retainedSize >= 262144;
683
+ });
642
684
  const headers = [
643
685
  'ID',
644
686
  'Type',
645
687
  'Kind',
646
688
  'Entries',
647
689
  ...(hasSlotDifference ? ['Table Slots'] : []),
690
+ ...(hasOccupancy ? ['Capacity', 'Occupancy'] : []),
648
691
  'Retained',
649
692
  '% Heap',
650
693
  'Owner',
@@ -652,9 +695,12 @@ export function registerCacheAnalysis(server) {
652
695
  'Weak?',
653
696
  ...(hasAnyFramework ? ['Framework'] : []),
654
697
  ];
655
- const rightCols = hasSlotDifference
656
- ? new Set([3, 4, 5, 6])
657
- : new Set([3, 4, 5]);
698
+ const numericFrom = 3;
699
+ const numericCount = 1 + (hasSlotDifference ? 1 : 0) + (hasOccupancy ? 2 : 0) + 2;
700
+ const rightCols = new Set();
701
+ for (let i = numericFrom; i < numericFrom + numericCount; i++) {
702
+ rightCols.add(i);
703
+ }
658
704
  const rows = caches.map(c => {
659
705
  const pct = totalSize > 0
660
706
  ? ((c.retainedSize / totalSize) * 100).toFixed(1) + '%'
@@ -665,6 +711,15 @@ export function registerCacheAnalysis(server) {
665
711
  c.classification,
666
712
  formatNumber(c.entryCount),
667
713
  ...(hasSlotDifference ? [formatNumber(c.tableSlots)] : []),
714
+ ...(hasOccupancy
715
+ ? [
716
+ c.capacitySlots > 0 ? formatNumber(c.capacitySlots) : '—',
717
+ (() => {
718
+ const o = occupancyOf(c);
719
+ return o == null ? '—' : `${(o * 100).toFixed(1)}%`;
720
+ })(),
721
+ ]
722
+ : []),
668
723
  formatBytes(c.retainedSize),
669
724
  pct,
670
725
  c.ownerName,
@@ -675,11 +730,31 @@ export function registerCacheAnalysis(server) {
675
730
  });
676
731
  const totalRetained = caches.reduce((sum, c) => sum + c.retainedSize, 0);
677
732
  const cacheLike = caches.filter(c => c.classification === 'cache-like').length;
733
+ if (summary_only) {
734
+ return toolResult([
735
+ `Cache analysis: ${caches.length} large collection(s) (${cacheLike} cache-like, ${caches.length - cacheLike} plain collection/working-set), ${formatBytes(totalRetained)} total retained`,
736
+ '',
737
+ `Largest: \`${caches[0].ownerName}\` — ${formatNumber(caches[0].entryCount)} entries, ${formatBytes(caches[0].retainedSize)}.`,
738
+ '',
739
+ `_summary_only: the ${formatNumber(rows.length)}-row ranked table and the per-entry samples are withheld. Re-run with \`summary_only: false\` for them._`,
740
+ ].join('\n'));
741
+ }
678
742
  const lines = [
679
743
  `Cache analysis: ${caches.length} large collection(s) (${cacheLike} cache-like, ${caches.length - cacheLike} plain collection/working-set), ${formatBytes(totalRetained)} total retained`,
680
744
  '',
681
745
  markdownTable(headers, rows, rightCols),
682
746
  '',
747
+ ...(staleCapacity.length > 0
748
+ ? [
749
+ `⚠ **${staleCapacity.length} table(s) below 25% occupancy — this is STALE CAPACITY, not live data.** ` +
750
+ 'V8 never shrinks a hash table: an `EphemeronHashTable` (WeakMap/WeakSet) in particular keeps whatever capacity it ever reached for the lifetime of the isolate, so a table that once peaked large stays large after its entries die. ' +
751
+ 'The fix is not eviction (the entries are already gone) — it is to stop the peak happening, or to rebuild the collection so the table is reallocated at its real size:',
752
+ ...staleCapacity
753
+ .slice(0, 6)
754
+ .map(c => `- \`@${c.nodeId}\` ${c.ownerName}.${c.ownerEdge} — ${formatBytes(c.retainedSize)} holding ${formatNumber(c.tableSlots)} of ~${formatNumber(c.capacitySlots)} slots`),
755
+ '',
756
+ ]
757
+ : []),
683
758
  '**Kind:**',
684
759
  '- **cache-like** — named like a cache, owned by a cache class, or carrying TTL/maxSize config. Missing eviction here is a likely leak.',
685
760
  '- **collection** — a plain large Map/Set/Array or per-request working set. Large is not the same as leaking; confirm it is actually retained across requests before treating it as a leak.',
@@ -1 +1 @@
1
- {"version":3,"file":"cache-analysis.js","sourceRoot":"","sources":["../../src/tools/cache-analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache-analysis.js","sourceRoot":"","sources":["../../src/tools/cache-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
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 type { IHeapSnapshot } from '@memlab/core';
11
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
12
+ export type CensusKind = 'detached' | 'listeners';
13
+ export interface Census {
14
+ /** class / callback name -> count */
15
+ counts: Map<string, number>;
16
+ total: number;
17
+ }
18
+ /**
19
+ * Detached DOM, bucketed by element tag.
20
+ *
21
+ * Only PINNED nodes are counted, matching `memlab_detached_dom`. Detached nodes
22
+ * with no retainer path are GC-eligible rather than leaked, and their count
23
+ * swings with whatever the collector happened to have done before the capture —
24
+ * including them makes every diff look noisy and hides the rows that moved.
25
+ */
26
+ export declare function censusDetached(snapshot: IHeapSnapshot): Census;
27
+ /**
28
+ * Listener records — objects carrying both a callback-ish and a context-ish
29
+ * property — bucketed by callback function name.
30
+ *
31
+ * Bucketing by CALLBACK rather than by host is deliberate. A listener leak shows
32
+ * up as the same handler registered N times; the host is usually a single
33
+ * long-lived emitter whose count never moves, so a host-keyed census reports
34
+ * "1 → 1" for exactly the leak it was run to find.
35
+ */
36
+ export declare function censusListeners(snapshot: IHeapSnapshot): Census;
37
+ /**
38
+ * Keep a census row readable without losing which row it is.
39
+ *
40
+ * Blink's C++ template names (`blink::BasicHeapVector<...>`) run to hundreds of
41
+ * characters and a table of them costs more tokens than the counts it exists to
42
+ * show — one census eval blew the result cap on exactly this. Elide the type
43
+ * arguments first, since the head of the name is the identifying part, and only
44
+ * hard-truncate if it is still too long.
45
+ */
46
+ export declare function clampKey(key: string): string;
47
+ export interface DiffRow {
48
+ key: string;
49
+ baseline: number;
50
+ target: number;
51
+ delta: number;
52
+ }
53
+ export declare function diffCensus(baseline: Census, target: Census): DiffRow[];
54
+ export declare function registerCensusDiff(server: McpServer): void;
55
+ //# sourceMappingURL=census-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"census-diff.d.ts","sourceRoot":"","sources":["../../src/tools/census-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAY,aAAa,EAAC,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAqCvE,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAElD,MAAM,WAAW,MAAM;IACrB,qCAAqC;IACrC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAWD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAO9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAoB/D;AAID;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAetE;AA6DD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwG1D"}
@@ -0,0 +1,228 @@
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 { armScanBudgetFor, resolveRungs, scaledTimeoutMs, withSnapshotAt, } from '../snapshot-borrow.js';
12
+ import { abbreviateBlinkTypeName, errorResult, formatNumber, markdownTable, pathsHeader, toolResult, } from '../utils.js';
13
+ import { extractElementTag, isDetachedDOMNode, isPinned, } from './detached-dom.js';
14
+ /**
15
+ * A census is a per-CLASS population at one point in the ladder; a census DIFF
16
+ * is the same census taken at two points and compared row by row.
17
+ *
18
+ * This exists because the diff, not the totals, is the evidence. Two totals that
19
+ * match ("777 detached at both ends") are consistent with a leak that swapped
20
+ * one population for another of equal size, which is a real and observed shape.
21
+ * The per-class rows are what turn "no leak" from a guess into a finding — and
22
+ * the negative result is the common case, so the cheap version of it has to be
23
+ * one call rather than a hand-written thirty-line eval per round.
24
+ */
25
+ const CALLBACK_PROPS = new Set(['callback', 'fn', 'handler', 'listener']);
26
+ const CONTEXT_PROPS = new Set(['context', 'ctx', 'this', 'target']);
27
+ function emptyCensus() {
28
+ return { counts: new Map(), total: 0 };
29
+ }
30
+ function bump(census, key) {
31
+ census.counts.set(key, (census.counts.get(key) ?? 0) + 1);
32
+ census.total += 1;
33
+ }
34
+ /**
35
+ * Detached DOM, bucketed by element tag.
36
+ *
37
+ * Only PINNED nodes are counted, matching `memlab_detached_dom`. Detached nodes
38
+ * with no retainer path are GC-eligible rather than leaked, and their count
39
+ * swings with whatever the collector happened to have done before the capture —
40
+ * including them makes every diff look noisy and hides the rows that moved.
41
+ */
42
+ export function censusDetached(snapshot) {
43
+ const census = emptyCensus();
44
+ snapshot.nodes.forEach((node) => {
45
+ if (!isDetachedDOMNode(node) || !isPinned(node))
46
+ return;
47
+ bump(census, extractElementTag(node.name));
48
+ });
49
+ return census;
50
+ }
51
+ /**
52
+ * Listener records — objects carrying both a callback-ish and a context-ish
53
+ * property — bucketed by callback function name.
54
+ *
55
+ * Bucketing by CALLBACK rather than by host is deliberate. A listener leak shows
56
+ * up as the same handler registered N times; the host is usually a single
57
+ * long-lived emitter whose count never moves, so a host-keyed census reports
58
+ * "1 → 1" for exactly the leak it was run to find.
59
+ */
60
+ export function censusListeners(snapshot) {
61
+ const census = emptyCensus();
62
+ snapshot.nodes.forEach((node) => {
63
+ if (node.type !== 'object' || node.id <= 3)
64
+ return;
65
+ let callbackName = null;
66
+ let hasContext = false;
67
+ for (const edge of node.references) {
68
+ const name = String(edge.name_or_index);
69
+ if (CALLBACK_PROPS.has(name) && edge.toNode.type === 'closure') {
70
+ callbackName =
71
+ edge.toNode.name.length > 0 ? edge.toNode.name : '(anonymous)';
72
+ }
73
+ else if (CONTEXT_PROPS.has(name)) {
74
+ hasContext = true;
75
+ }
76
+ }
77
+ if (callbackName != null && hasContext) {
78
+ bump(census, callbackName);
79
+ }
80
+ });
81
+ return census;
82
+ }
83
+ const MAX_KEY_LEN = 60;
84
+ /**
85
+ * Keep a census row readable without losing which row it is.
86
+ *
87
+ * Blink's C++ template names (`blink::BasicHeapVector<...>`) run to hundreds of
88
+ * characters and a table of them costs more tokens than the counts it exists to
89
+ * show — one census eval blew the result cap on exactly this. Elide the type
90
+ * arguments first, since the head of the name is the identifying part, and only
91
+ * hard-truncate if it is still too long.
92
+ */
93
+ export function clampKey(key) {
94
+ const abbreviated = abbreviateBlinkTypeName(key);
95
+ return abbreviated.length > MAX_KEY_LEN
96
+ ? `${abbreviated.slice(0, MAX_KEY_LEN - 1)}\u2026`
97
+ : abbreviated;
98
+ }
99
+ export function diffCensus(baseline, target) {
100
+ const keys = new Set([...baseline.counts.keys(), ...target.counts.keys()]);
101
+ const rows = [];
102
+ for (const key of keys) {
103
+ const b = baseline.counts.get(key) ?? 0;
104
+ const t = target.counts.get(key) ?? 0;
105
+ rows.push({ key, baseline: b, target: t, delta: t - b });
106
+ }
107
+ // Largest movers first in both directions: a class that SHRANK by 200 is as
108
+ // informative as one that grew by 200, and sorting on the signed delta would
109
+ // bury it at the bottom.
110
+ rows.sort((a, b) => Math.abs(b.delta) - Math.abs(a.delta) || b.target - a.target);
111
+ return rows;
112
+ }
113
+ function renderKind(kind, baseline, target, topN) {
114
+ const rows = diffCensus(baseline, target);
115
+ const moved = rows.filter(r => r.delta !== 0);
116
+ const label = kind === 'detached' ? 'Detached DOM (pinned)' : 'Listener records';
117
+ const keyHeader = kind === 'detached' ? 'Element' : 'Callback';
118
+ const lines = [];
119
+ lines.push(`### ${label}`);
120
+ lines.push('');
121
+ lines.push(`Totals: **${formatNumber(baseline.total)} → ${formatNumber(target.total)}** ` +
122
+ `(Δ ${target.total - baseline.total >= 0 ? '+' : ''}${formatNumber(target.total - baseline.total)}) ` +
123
+ `across ${formatNumber(rows.length)} distinct ${kind === 'detached' ? 'element type(s)' : 'callback(s)'}.`);
124
+ lines.push('');
125
+ if (moved.length === 0) {
126
+ lines.push(`**IDENTICAL** — every one of the ${formatNumber(rows.length)} rows is unchanged. ` +
127
+ 'This is the strong form of a negative result: not merely equal totals, but no ' +
128
+ 'population swapped for another of the same size.');
129
+ return lines;
130
+ }
131
+ lines.push(markdownTable([keyHeader, 'Baseline', 'Target', 'Δ'], moved
132
+ .slice(0, topN)
133
+ .map(r => [
134
+ clampKey(r.key),
135
+ formatNumber(r.baseline),
136
+ formatNumber(r.target),
137
+ `${r.delta >= 0 ? '+' : ''}${formatNumber(r.delta)}`,
138
+ ]), new Set([1, 2, 3])));
139
+ if (moved.length > topN) {
140
+ lines.push('');
141
+ lines.push(`_… ${formatNumber(moved.length - topN)} further changed row(s) omitted; raise \`top_n\` to see them._`);
142
+ }
143
+ lines.push('');
144
+ lines.push(`${formatNumber(moved.length)} of ${formatNumber(rows.length)} rows changed; ` +
145
+ `${formatNumber(rows.length - moved.length)} identical.`);
146
+ return lines;
147
+ }
148
+ export function registerCensusDiff(server) {
149
+ server.tool('memlab_census_diff', 'Take the detached-DOM and listener-record census at TWO rungs and diff them per class / per callback in one call. ' +
150
+ 'This is the mandated baseline-vs-final comparison: run the census on BOTH ends and compare the per-class distribution, not just the two totals.\n\n' +
151
+ 'Two totals that match are NOT a negative result — they are also consistent with one population being swapped for another of the same size, which is a real observed shape. ' +
152
+ 'The per-row diff is what makes the negative claim: "777 nodes across 66 classes, zero change on every one" is a finding; "777 at both ends" is a guess.\n\n' +
153
+ 'Replaces the ~30-line eval that otherwise gets rewritten every round (build {class -> count} on each rung, diff the maps by hand), and loads one graph at a time so it works on a ladder of 250-540 MB captures.', {
154
+ baseline: z
155
+ .string()
156
+ .describe('Path to the EARLY rung. Local path, manifold:// URL, or bare filename.'),
157
+ target: z
158
+ .string()
159
+ .describe('Path to the LATE rung, compared against the baseline.'),
160
+ kinds: z
161
+ .array(z.enum(['detached', 'listeners']))
162
+ .optional()
163
+ .default(['detached', 'listeners'])
164
+ .describe('Which censuses to take. Both by default, which is what the protocol asks for.'),
165
+ top_n: z
166
+ .number()
167
+ .int()
168
+ .min(1)
169
+ .optional()
170
+ .default(25)
171
+ .describe('Maximum CHANGED rows to print per kind. Unchanged rows are counted, never listed.'),
172
+ max_file_size_mb: z
173
+ .number()
174
+ .optional()
175
+ .describe('Per-file size ceiling, matching memlab_load_snapshot.'),
176
+ }, async ({ baseline, target, kinds, top_n, max_file_size_mb }) => {
177
+ try {
178
+ const { rungs, largestMB } = resolveRungs([baseline, target], max_file_size_mb);
179
+ const [baseRung, targetRung] = rungs;
180
+ // Both censuses are full-heap walks, so they run against the same 90s
181
+ // scan guardrail every other tool does. Scale it from the largest
182
+ // capture or a big ladder loses a rung to the guardrail rather than to
183
+ // anything about the heap.
184
+ const scanBudgetMs = scaledTimeoutMs(largestMB);
185
+ const take = (snapshot) => {
186
+ const out = {
187
+ detached: emptyCensus(),
188
+ listeners: emptyCensus(),
189
+ };
190
+ // One pass per kind, but only for the kinds asked for: the listener
191
+ // walk visits every object's edges and is the expensive half.
192
+ if (kinds.includes('detached'))
193
+ out.detached = censusDetached(snapshot);
194
+ if (kinds.includes('listeners'))
195
+ out.listeners = censusListeners(snapshot);
196
+ return out;
197
+ };
198
+ armScanBudgetFor(scanBudgetMs);
199
+ const baseCensus = await withSnapshotAt(baseRung.localPath, take);
200
+ armScanBudgetFor(scanBudgetMs);
201
+ const targetCensus = await withSnapshotAt(targetRung.localPath, take);
202
+ const lines = [];
203
+ lines.push('## Census diff');
204
+ lines.push('');
205
+ lines.push(`- baseline: \`${baseRung.label}\``);
206
+ lines.push(`- target: \`${targetRung.label}\``);
207
+ lines.push('');
208
+ let anyMoved = false;
209
+ for (const kind of kinds) {
210
+ const rows = diffCensus(baseCensus[kind], targetCensus[kind]);
211
+ if (rows.some(r => r.delta !== 0))
212
+ anyMoved = true;
213
+ lines.push(...renderKind(kind, baseCensus[kind], targetCensus[kind], top_n));
214
+ lines.push('');
215
+ }
216
+ lines.push(anyMoved
217
+ ? '_A changed row is a population, not yet a leak. Trace a sample with `memlab_retainer_trace` and check ' +
218
+ '`memlab_dev_artifacts` before attributing it — React DEV and Fast Refresh populations grow across a ladder too._'
219
+ : '_Nothing moved in either census. Record this: an unchanged per-class distribution across the ladder is the ' +
220
+ 'strongest cheap evidence that a suspected leak is not in the DOM or listener population at all._');
221
+ return toolResult(lines.join('\n'), pathsHeader(rungs.map(r => r.label)));
222
+ }
223
+ catch (e) {
224
+ return errorResult(e instanceof Error ? e : new Error(String(e)));
225
+ }
226
+ });
227
+ }
228
+ //# sourceMappingURL=census-diff.js.map