@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.
Files changed (186) hide show
  1. package/README.md +8 -14
  2. package/bin/.eslintrc.js +26 -0
  3. package/bin/memlab-cli.js +313 -0
  4. package/dist/artifact-classes.d.ts +86 -0
  5. package/dist/artifact-classes.d.ts.map +1 -0
  6. package/dist/artifact-classes.js +261 -0
  7. package/dist/artifact-classes.js.map +1 -0
  8. package/dist/capture-mode.d.ts +60 -0
  9. package/dist/capture-mode.d.ts.map +1 -0
  10. package/dist/capture-mode.js +39 -0
  11. package/dist/capture-mode.js.map +1 -0
  12. package/dist/guardrail.d.ts.map +1 -1
  13. package/dist/guardrail.js +13 -0
  14. package/dist/guardrail.js.map +1 -1
  15. package/dist/heap-state.d.ts +89 -2
  16. package/dist/heap-state.d.ts.map +1 -1
  17. package/dist/heap-state.js +186 -2
  18. package/dist/heap-state.js.map +1 -1
  19. package/dist/index.js +39 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/progress.d.ts +25 -0
  22. package/dist/progress.d.ts.map +1 -0
  23. package/dist/progress.js +46 -0
  24. package/dist/progress.js.map +1 -0
  25. package/dist/result-handles.d.ts +11 -0
  26. package/dist/result-handles.d.ts.map +1 -0
  27. package/dist/result-handles.js +77 -0
  28. package/dist/result-handles.js.map +1 -0
  29. package/dist/string-index.d.ts +55 -0
  30. package/dist/string-index.d.ts.map +1 -0
  31. package/dist/string-index.js +91 -0
  32. package/dist/string-index.js.map +1 -0
  33. package/dist/tool-registry.d.ts +42 -0
  34. package/dist/tool-registry.d.ts.map +1 -0
  35. package/dist/tool-registry.js +20 -0
  36. package/dist/tool-registry.js.map +1 -0
  37. package/dist/tools/analyze-run.d.ts +12 -0
  38. package/dist/tools/analyze-run.d.ts.map +1 -0
  39. package/dist/tools/analyze-run.js +343 -0
  40. package/dist/tools/analyze-run.js.map +1 -0
  41. package/dist/tools/app-heap.d.ts +12 -0
  42. package/dist/tools/app-heap.d.ts.map +1 -0
  43. package/dist/tools/app-heap.js +140 -0
  44. package/dist/tools/app-heap.js.map +1 -0
  45. package/dist/tools/batch.d.ts +12 -0
  46. package/dist/tools/batch.d.ts.map +1 -0
  47. package/dist/tools/batch.js +168 -0
  48. package/dist/tools/batch.js.map +1 -0
  49. package/dist/tools/cache-analysis.d.ts.map +1 -1
  50. package/dist/tools/cache-analysis.js +156 -5
  51. package/dist/tools/cache-analysis.js.map +1 -1
  52. package/dist/tools/class-histogram.d.ts.map +1 -1
  53. package/dist/tools/class-histogram.js +14 -3
  54. package/dist/tools/class-histogram.js.map +1 -1
  55. package/dist/tools/collection-trend.d.ts +55 -0
  56. package/dist/tools/collection-trend.d.ts.map +1 -0
  57. package/dist/tools/collection-trend.js +315 -0
  58. package/dist/tools/collection-trend.js.map +1 -0
  59. package/dist/tools/detached-dom.d.ts +2 -0
  60. package/dist/tools/detached-dom.d.ts.map +1 -1
  61. package/dist/tools/detached-dom.js +291 -20
  62. package/dist/tools/detached-dom.js.map +1 -1
  63. package/dist/tools/dev-artifacts.d.ts +62 -6
  64. package/dist/tools/dev-artifacts.d.ts.map +1 -1
  65. package/dist/tools/dev-artifacts.js +466 -23
  66. package/dist/tools/dev-artifacts.js.map +1 -1
  67. package/dist/tools/dominator-attribution.d.ts +12 -0
  68. package/dist/tools/dominator-attribution.d.ts.map +1 -0
  69. package/dist/tools/dominator-attribution.js +189 -0
  70. package/dist/tools/dominator-attribution.js.map +1 -0
  71. package/dist/tools/dominator-chain.d.ts +12 -0
  72. package/dist/tools/dominator-chain.d.ts.map +1 -0
  73. package/dist/tools/dominator-chain.js +92 -0
  74. package/dist/tools/dominator-chain.js.map +1 -0
  75. package/dist/tools/duplicate-objects.d.ts +12 -0
  76. package/dist/tools/duplicate-objects.d.ts.map +1 -0
  77. package/dist/tools/duplicate-objects.js +172 -0
  78. package/dist/tools/duplicate-objects.js.map +1 -0
  79. package/dist/tools/duplicated-strings.d.ts.map +1 -1
  80. package/dist/tools/duplicated-strings.js +46 -38
  81. package/dist/tools/duplicated-strings.js.map +1 -1
  82. package/dist/tools/eval.d.ts +1 -0
  83. package/dist/tools/eval.d.ts.map +1 -1
  84. package/dist/tools/eval.js +785 -28
  85. package/dist/tools/eval.js.map +1 -1
  86. package/dist/tools/explain-delta.d.ts +12 -0
  87. package/dist/tools/explain-delta.d.ts.map +1 -0
  88. package/dist/tools/explain-delta.js +170 -0
  89. package/dist/tools/explain-delta.js.map +1 -0
  90. package/dist/tools/find-nodes-by-class.d.ts.map +1 -1
  91. package/dist/tools/find-nodes-by-class.js +112 -13
  92. package/dist/tools/find-nodes-by-class.js.map +1 -1
  93. package/dist/tools/finding-index.d.ts +22 -0
  94. package/dist/tools/finding-index.d.ts.map +1 -0
  95. package/dist/tools/finding-index.js +247 -0
  96. package/dist/tools/finding-index.js.map +1 -0
  97. package/dist/tools/for-each.d.ts.map +1 -1
  98. package/dist/tools/for-each.js +15 -3
  99. package/dist/tools/for-each.js.map +1 -1
  100. package/dist/tools/get-referrers.d.ts.map +1 -1
  101. package/dist/tools/get-referrers.js +17 -0
  102. package/dist/tools/get-referrers.js.map +1 -1
  103. package/dist/tools/hunt-report.d.ts +12 -0
  104. package/dist/tools/hunt-report.d.ts.map +1 -0
  105. package/dist/tools/hunt-report.js +186 -0
  106. package/dist/tools/hunt-report.js.map +1 -0
  107. package/dist/tools/hypothesis.d.ts +12 -0
  108. package/dist/tools/hypothesis.d.ts.map +1 -0
  109. package/dist/tools/hypothesis.js +221 -0
  110. package/dist/tools/hypothesis.js.map +1 -0
  111. package/dist/tools/intern-opportunities.d.ts.map +1 -1
  112. package/dist/tools/intern-opportunities.js +112 -47
  113. package/dist/tools/intern-opportunities.js.map +1 -1
  114. package/dist/tools/ladder.d.ts +33 -0
  115. package/dist/tools/ladder.d.ts.map +1 -0
  116. package/dist/tools/ladder.js +266 -0
  117. package/dist/tools/ladder.js.map +1 -0
  118. package/dist/tools/largest-objects.d.ts.map +1 -1
  119. package/dist/tools/largest-objects.js +6 -2
  120. package/dist/tools/largest-objects.js.map +1 -1
  121. package/dist/tools/leak-report.d.ts +12 -0
  122. package/dist/tools/leak-report.d.ts.map +1 -0
  123. package/dist/tools/leak-report.js +256 -0
  124. package/dist/tools/leak-report.js.map +1 -0
  125. package/dist/tools/load-snapshot.d.ts +18 -0
  126. package/dist/tools/load-snapshot.d.ts.map +1 -1
  127. package/dist/tools/load-snapshot.js +211 -13
  128. package/dist/tools/load-snapshot.js.map +1 -1
  129. package/dist/tools/map-entries.d.ts +12 -0
  130. package/dist/tools/map-entries.d.ts.map +1 -0
  131. package/dist/tools/map-entries.js +139 -0
  132. package/dist/tools/map-entries.js.map +1 -0
  133. package/dist/tools/match-object.d.ts +12 -0
  134. package/dist/tools/match-object.d.ts.map +1 -0
  135. package/dist/tools/match-object.js +165 -0
  136. package/dist/tools/match-object.js.map +1 -0
  137. package/dist/tools/object-shape.d.ts.map +1 -1
  138. package/dist/tools/object-shape.js +53 -5
  139. package/dist/tools/object-shape.js.map +1 -1
  140. package/dist/tools/population-diff.d.ts +57 -0
  141. package/dist/tools/population-diff.d.ts.map +1 -0
  142. package/dist/tools/population-diff.js +338 -0
  143. package/dist/tools/population-diff.js.map +1 -0
  144. package/dist/tools/retainer-layers.d.ts +23 -0
  145. package/dist/tools/retainer-layers.d.ts.map +1 -0
  146. package/dist/tools/retainer-layers.js +179 -0
  147. package/dist/tools/retainer-layers.js.map +1 -0
  148. package/dist/tools/retainer-summary.d.ts +1 -0
  149. package/dist/tools/retainer-summary.d.ts.map +1 -1
  150. package/dist/tools/retainer-summary.js +128 -32
  151. package/dist/tools/retainer-summary.js.map +1 -1
  152. package/dist/tools/retainer-trace.d.ts.map +1 -1
  153. package/dist/tools/retainer-trace.js +4 -2
  154. package/dist/tools/retainer-trace.js.map +1 -1
  155. package/dist/tools/search-nodes.d.ts.map +1 -1
  156. package/dist/tools/search-nodes.js +5 -1
  157. package/dist/tools/search-nodes.js.map +1 -1
  158. package/dist/tools/search-strings.d.ts.map +1 -1
  159. package/dist/tools/search-strings.js +53 -7
  160. package/dist/tools/search-strings.js.map +1 -1
  161. package/dist/tools/sequence-analysis.d.ts +49 -0
  162. package/dist/tools/sequence-analysis.d.ts.map +1 -1
  163. package/dist/tools/sequence-analysis.js +266 -86
  164. package/dist/tools/sequence-analysis.js.map +1 -1
  165. package/dist/tools/shape-histogram.d.ts.map +1 -1
  166. package/dist/tools/shape-histogram.js +9 -2
  167. package/dist/tools/shape-histogram.js.map +1 -1
  168. package/dist/tools/string-patterns.d.ts.map +1 -1
  169. package/dist/tools/string-patterns.js +5 -4
  170. package/dist/tools/string-patterns.js.map +1 -1
  171. package/dist/tools/tools-index.d.ts +12 -0
  172. package/dist/tools/tools-index.d.ts.map +1 -0
  173. package/dist/tools/tools-index.js +342 -0
  174. package/dist/tools/tools-index.js.map +1 -0
  175. package/dist/tools/verify-fix.d.ts +23 -0
  176. package/dist/tools/verify-fix.d.ts.map +1 -0
  177. package/dist/tools/verify-fix.js +211 -0
  178. package/dist/tools/verify-fix.js.map +1 -0
  179. package/dist/tools/weakmap-entries.d.ts.map +1 -1
  180. package/dist/tools/weakmap-entries.js +6 -1
  181. package/dist/tools/weakmap-entries.js.map +1 -1
  182. package/dist/utils.d.ts +146 -1
  183. package/dist/utils.d.ts.map +1 -1
  184. package/dist/utils.js +335 -10
  185. package/dist/utils.js.map +1 -1
  186. package/package.json +5 -4
package/dist/utils.js CHANGED
@@ -7,7 +7,7 @@
7
7
  * @format
8
8
  * @oncall memory_lab
9
9
  */
10
- import { getSnapshotMetadata, getSessionConfig, shouldEmitHeader, } from './heap-state.js';
10
+ import { getSnapshotMetadata, getSessionConfig, isLightSnapshot, shouldEmitHeader, } from './heap-state.js';
11
11
  // ScanTimeoutError / makeScanBudget moved to analysis-budget.ts (shared, no
12
12
  // import cycle). Re-exported here so existing `from '../utils.js'` imports in
13
13
  // the tools keep working unchanged.
@@ -59,6 +59,36 @@ export function truncateDomToTag(name) {
59
59
  }
60
60
  return `${detached}<${tag}>`;
61
61
  }
62
+ // Marker left in place of elided C++ template arguments. Distinctive enough to
63
+ // detect when rendering a legend, and short enough to be worth the swap.
64
+ export const BLINK_TEMPLATE_ELISION = '<…>';
65
+ // A Blink/cppgc type name carries its whole template instantiation, and one hop
66
+ // of a retainer trace can be 400+ tokens of
67
+ // `blink::HeapHashTableBacking<blink::HashTable<cppgc::internal::BasicMember<…>>>`.
68
+ // The information a reader acts on is the OUTER type; the arguments are noise
69
+ // that crowds out the rest of the trace. Collapse everything from the first `<`
70
+ // to the matching final `>` into one marker, keeping any suffix after it.
71
+ //
72
+ // Deliberately conservative: only applied to `::`-qualified C++ names (so a JS
73
+ // class that happens to contain `<` is untouched), and only when the name is
74
+ // long enough for the elision to be worth it — abbreviating
75
+ // `blink::Foo<Bar>` into something barely shorter just costs information.
76
+ const CPP_TEMPLATE_MIN_LEN = 48;
77
+ export function abbreviateBlinkTypeName(name) {
78
+ if (name.length < CPP_TEMPLATE_MIN_LEN)
79
+ return name;
80
+ if (!name.includes('::') || !name.includes('<'))
81
+ return name;
82
+ const open = name.indexOf('<');
83
+ const close = name.lastIndexOf('>');
84
+ if (close <= open)
85
+ return name;
86
+ const head = name.slice(0, open);
87
+ const tail = name.slice(close + 1);
88
+ const abbreviated = `${head}${BLINK_TEMPLATE_ELISION}${tail}`;
89
+ // Never let the "abbreviation" be longer than what it replaced.
90
+ return abbreviated.length < name.length ? abbreviated : name;
91
+ }
62
92
  export function truncateNodeName(name, type, selfSize, maxLen = 150, aggressiveDom = false) {
63
93
  if (type === 'string' ||
64
94
  type === 'concatenated string' ||
@@ -83,9 +113,10 @@ export function truncateNodeName(name, type, selfSize, maxLen = 150, aggressiveD
83
113
  }
84
114
  return name;
85
115
  }
86
- if (name.length <= maxLen)
87
- return name;
88
- return `${name.slice(0, maxLen)}…`;
116
+ const abbreviated = abbreviateBlinkTypeName(name);
117
+ if (abbreviated.length <= maxLen)
118
+ return abbreviated;
119
+ return `${abbreviated.slice(0, maxLen)}…`;
89
120
  }
90
121
  export function serializeNodeSummary(node) {
91
122
  return {
@@ -153,11 +184,21 @@ const NODE_NAME_BLOCK_LIST = new Set([
153
184
  '(External strings)',
154
185
  '(Builtins)',
155
186
  ]);
156
- export function isNodeWorthInspecting(node) {
187
+ /**
188
+ * Whether a node is worth showing in a default "interesting objects" listing.
189
+ *
190
+ * `NODE_TYPE_BLOCK_LIST` exists to keep noise out of the DEFAULT view — it is not
191
+ * meant to make those types unreachable. When a caller explicitly asks for one
192
+ * of them (e.g. `largest_objects({node_type: 'array'})`), honour the request:
193
+ * otherwise the filter silently returns zero rows for `array`, `native`, `code`,
194
+ * `synthetic` and `hidden`, which reads as "there are none" on a heap that
195
+ * plainly contains 100k+ of them.
196
+ */
197
+ export function isNodeWorthInspecting(node, opts) {
157
198
  if (node.id <= 3) {
158
199
  return false;
159
200
  }
160
- if (NODE_TYPE_BLOCK_LIST.has(node.type)) {
201
+ if (!opts?.allowBlockedTypes && NODE_TYPE_BLOCK_LIST.has(node.type)) {
161
202
  return false;
162
203
  }
163
204
  if (NODE_NAME_BLOCK_LIST.has(node.name)) {
@@ -413,6 +454,159 @@ export function boundedDominatorRetainedSize(ids, snapshot, maxWalk = 500) {
413
454
  }
414
455
  return { retained, exact };
415
456
  }
457
+ /**
458
+ * Collect the object-valued slots of a Map/Set/WeakMap backing store, sorted by
459
+ * their true FixedArray slot index.
460
+ *
461
+ * V8 stores entries in an OrderedHashMap/OrderedHashSet reachable via the
462
+ * `table` (or `backing_store`) edge. Browser (Chromium) snapshots type the
463
+ * key/value slot edges as `internal` with a numeric name (the array index);
464
+ * Node snapshots type them `element`. The header counts and hash-chain links are
465
+ * inline SMIs, which emit NO edge at all — so the slot indices are NOT
466
+ * contiguous, and the GAPS are meaningful (they mark SMI-valued or deleted
467
+ * slots). Returning the slots WITH their indices lets callers pair by index
468
+ * instead of by position, which is what makes the pairing correct when some
469
+ * values are SMIs (see `enumerateMapEntries`).
470
+ */
471
+ export function collectBackingSlots(node) {
472
+ const out = [];
473
+ for (const edge of node.references) {
474
+ const eName = String(edge.name_or_index);
475
+ if (eName !== 'table' && eName !== 'backing_store')
476
+ continue;
477
+ const backing = edge.toNode;
478
+ for (const te of backing.references) {
479
+ // Skip the backing store's hidden-class pointer and any hidden edges; the
480
+ // remaining element/internal edges are the real key/value slots.
481
+ if (te.type === 'hidden' || String(te.name_or_index) === 'map')
482
+ continue;
483
+ const idx = Number(te.name_or_index);
484
+ if (!Number.isFinite(idx))
485
+ continue;
486
+ const target = te.toNode;
487
+ // `the_hole` marks a deleted/empty backing-store slot; oddball roots
488
+ // (id<=3) are not real entries. Do NOT skip `undefined`: an explicit
489
+ // `undefined` value/element is a real entry, and dropping it would make it
490
+ // indistinguishable from an inline-primitive gap (mis-reported as absent).
491
+ if (target.id <= 3 || target.name === 'the_hole') {
492
+ continue;
493
+ }
494
+ out.push({ idx, node: target });
495
+ }
496
+ break;
497
+ }
498
+ out.sort((a, b) => a.idx - b.idx);
499
+ return out;
500
+ }
501
+ /**
502
+ * Enumerate a Map/WeakMap's (key, value) entries.
503
+ *
504
+ * V8 lays each entry out as consecutive slots `[key, value, chain]` (the chain
505
+ * link is an inline SMI, so it emits no edge). We therefore pair a key with the
506
+ * value in the immediately-following slot INDEX (`key.idx + 1`). When no slot
507
+ * exists at `key.idx + 1`, the value was an inline SMI/primitive and we emit
508
+ * `value: null` — instead of mispairing the key with the NEXT entry's key, which
509
+ * is what naive "consecutive object edges = key,value" pairing does whenever a
510
+ * Map has SMI values (a real correctness bug on browser heaps).
511
+ */
512
+ export function enumerateMapEntries(node) {
513
+ const slots = collectBackingSlots(node);
514
+ const entries = [];
515
+ let i = 0;
516
+ while (i < slots.length) {
517
+ const key = slots[i];
518
+ const next = slots[i + 1];
519
+ if (next && next.idx === key.idx + 1) {
520
+ entries.push({ key: key.node, value: next.node });
521
+ i += 2;
522
+ }
523
+ else {
524
+ // Value slot absent at key.idx+1 → the value was an inline SMI/primitive.
525
+ entries.push({ key: key.node, value: null });
526
+ i += 1;
527
+ }
528
+ }
529
+ return entries;
530
+ }
531
+ /** Enumerate a Set's elements (every occupied backing-store slot). */
532
+ export function enumerateSetElements(node) {
533
+ return collectBackingSlots(node).map(s => s.node);
534
+ }
535
+ /**
536
+ * Property names that identify an individual record rather than describe its
537
+ * content — always unique per instance, so INCLUDING them in a content
538
+ * signature defeats duplicate detection (every record looks distinct). Excluded
539
+ * by default from `objectContentSignature`. `id`/`__id`/`__ref` are Relay/GraphQL
540
+ * data-id fields; `key`/`clientMutationId` are common per-instance keys.
541
+ */
542
+ export const IDENTITY_PROPS = new Set([
543
+ 'id',
544
+ '__id',
545
+ '__ref',
546
+ 'key',
547
+ 'clientMutationId',
548
+ ]);
549
+ /**
550
+ * A stable, shallow content signature for an object: the sorted set of property
551
+ * names, each annotated with its scalar value (strings capped) or a marker for
552
+ * object/array-valued properties. Two objects with the same signature are
553
+ * structurally identical at one level — the basis for duplicate-record
554
+ * detection (`memlab_duplicate_objects`) and ad-hoc dedup checks in eval.
555
+ *
556
+ * By default per-instance identity fields (`IDENTITY_PROPS`: id/__id/__ref/…) are
557
+ * EXCLUDED so records that differ only by their data-id still collapse together
558
+ * — pass `ignoreProps` to override the set (e.g. `new Set()` to include them).
559
+ *
560
+ * String, boolean, null and object-valued properties are captured (objects
561
+ * generically as `o`, so nested content is not compared).
562
+ *
563
+ * Caveat — numeric values are NOT captured: the V8 heap-snapshot format does not
564
+ * store the actual value of a number field (SMI nodes are `smi number`,
565
+ * heap-numbers are `heap number` — the IEEE-754/int value is not accessible; see
566
+ * `tools/get-value.ts`). A numeric property therefore contributes only a generic
567
+ * `<name>=n` marker, so two objects differing ONLY in a numeric field hash to the
568
+ * same signature and are reported as duplicates. Treat numeric-heavy records
569
+ * accordingly (or compare their values via another tool).
570
+ */
571
+ export function objectContentSignature(node, opts = {}) {
572
+ const maxLen = opts.maxStringLen ?? 40;
573
+ const ignore = opts.ignoreProps ?? IDENTITY_PROPS;
574
+ const parts = [];
575
+ for (const edge of node.references) {
576
+ // Hidden-class ("map") and other internal edges are already excluded by the
577
+ // `edge.type !== 'property'` guard above, so no explicit `map` name skip is
578
+ // needed (it would only hide a legitimate user property literally named "map").
579
+ if (edge.type !== 'property')
580
+ continue;
581
+ const name = String(edge.name_or_index);
582
+ if (name === '__proto__')
583
+ continue;
584
+ if (ignore.has(name))
585
+ continue;
586
+ const t = edge.toNode;
587
+ if (t.isString) {
588
+ const v = t.toStringNode()?.stringValue ?? '';
589
+ parts.push(`${name}=s:${v.length > maxLen ? v.slice(0, maxLen) : v}`);
590
+ }
591
+ else if (t.type === 'number' || t.name === 'heap number') {
592
+ // Numeric values are NOT recoverable from the snapshot format (SMI /
593
+ // heap-number nodes carry no value — see get-value.ts), so we can only
594
+ // record that the property is a number, not distinguish by value.
595
+ parts.push(`${name}=n`);
596
+ }
597
+ else if (t.name === 'true' ||
598
+ t.name === 'false' ||
599
+ t.name === 'null' ||
600
+ t.name === 'undefined') {
601
+ parts.push(`${name}=${t.name}`);
602
+ }
603
+ else {
604
+ parts.push(`${name}=o`);
605
+ }
606
+ }
607
+ parts.sort();
608
+ return parts.join('|');
609
+ }
416
610
  /**
417
611
  * Best-effort detection of which app a Node snapshot came from, by tallying the
418
612
  * `/app(s)/<name>/` segment in bundle paths embedded throughout the heap (string
@@ -527,6 +721,89 @@ export function formatNodeInline(id, name, type, selfSize) {
527
721
  const displayName = selfSize != null ? truncateNodeName(name, type, selfSize, 80) : name;
528
722
  return `@${id} ${displayName} (${type})`;
529
723
  }
724
+ /**
725
+ * Collapse runs of consecutive same-class hops in a retainer path into a single
726
+ * step tagged with `repeatCount`.
727
+ *
728
+ * Linked structures (a React hook update queue's `pending → .next → .next → …`,
729
+ * intrusive lists, promise chains) produce paths that are hundreds of identical
730
+ * `Object → Object → Object` hops long. Rendering every hop costs thousands of
731
+ * tokens and tells the reader nothing the count doesn't: the interesting part is
732
+ * the chain's head, its length, and where it attaches. This keeps the first hop
733
+ * of each run (so the edge into the run is preserved) and folds the rest.
734
+ *
735
+ * Only runs of at least `minRun` are collapsed, so ordinary short paths render
736
+ * exactly as before.
737
+ */
738
+ export function collapseRepeatedRuns(steps, minRun = 3) {
739
+ if (steps.length < minRun)
740
+ return steps;
741
+ const key = (s) => `${s.type}::${s.name}`;
742
+ const out = [];
743
+ // The final step is the node the caller asked about. Never fold it into a
744
+ // run, or the trace stops showing the object under investigation and the
745
+ // "← retained object" marker lands on a summarised run instead.
746
+ const foldLimit = steps.length - 1;
747
+ let i = 0;
748
+ while (i < foldLimit) {
749
+ let j = i + 1;
750
+ while (j < foldLimit && key(steps[j]) === key(steps[i]))
751
+ j++;
752
+ const run = j - i;
753
+ if (run >= minRun) {
754
+ // Keep the first hop (carries the edge into the run) and the last hop's
755
+ // identity is the same class, so one step with a count is lossless enough.
756
+ out.push({ ...steps[i], repeatCount: run });
757
+ }
758
+ else {
759
+ for (let k = i; k < j; k++)
760
+ out.push(steps[k]);
761
+ }
762
+ i = j;
763
+ }
764
+ out.push(steps[foldLimit]);
765
+ return out;
766
+ }
767
+ /**
768
+ * Collapse runs of an identical rendered label, for formatters that have already
769
+ * reduced each hop to a string. Mirrors `collapseRepeatedRuns` for chain-style
770
+ * (`A → B → C`) renderers.
771
+ */
772
+ export function collapseRepeatedLabels(labels, minRun = 3) {
773
+ if (labels.length < minRun)
774
+ return labels;
775
+ const out = [];
776
+ // Mirror collapseRepeatedRuns: the last label is the target, keep it intact.
777
+ const foldLimit = labels.length - 1;
778
+ let i = 0;
779
+ while (i < foldLimit) {
780
+ let j = i + 1;
781
+ while (j < foldLimit && labels[j] === labels[i])
782
+ j++;
783
+ const run = j - i;
784
+ out.push(run >= minRun ? `${labels[i]} ×${run}` : labels[i]);
785
+ for (let k = i + 1; k < j && run < minRun; k++)
786
+ out.push(labels[k]);
787
+ i = j;
788
+ }
789
+ out.push(labels[foldLimit]);
790
+ return out;
791
+ }
792
+ /**
793
+ * One-line note describing what a tool's thresholds excluded from its own
794
+ * output. Printing this everywhere a default threshold exists prevents the
795
+ * failure mode where a tool reports "0" or "none found" and the reader takes it
796
+ * as "there is nothing there", when in fact everything interesting was below the
797
+ * cutoff. (A `dev_artifacts` run reporting `0 B` dev-only — because every
798
+ * console-retained string was under the 512 KB default — nearly landed a
799
+ * measurement artifact in a diff as a production leak.)
800
+ */
801
+ export function describeSkipped(examined, skipped, thresholdLabel) {
802
+ if (skipped <= 0) {
803
+ return `_Examined all ${formatNumber(examined)} candidates; no ${thresholdLabel} filter excluded anything._`;
804
+ }
805
+ return `_Examined ${formatNumber(examined)} candidates; **${formatNumber(skipped)} were skipped by ${thresholdLabel}** and are NOT reflected in the rows above. Lower it if you expect something smaller._`;
806
+ }
530
807
  function formatEdgeLabel(name) {
531
808
  const trimmed = name.length > 40 ? `${name.slice(0, 39)}…` : name;
532
809
  if (/^\d+$/.test(trimmed))
@@ -569,7 +846,10 @@ function formatRetainerLadder(steps, showSizes) {
569
846
  ? ` — ${formatBytes(s.retainedSize)}`
570
847
  : '';
571
848
  const nodeStr = formatNodeInline(s.id, s.name, s.type, s.selfSize);
572
- lines.push(`${nodeStr}${size}${retainerMarker(i, steps.length)}`);
849
+ const repeat = s.repeatCount && s.repeatCount > 1
850
+ ? ` ×${s.repeatCount} (chain of identical hops)`
851
+ : '';
852
+ lines.push(`${nodeStr}${repeat}${size}${retainerMarker(i, steps.length)}`);
573
853
  }
574
854
  return lines.join('\n');
575
855
  }
@@ -618,11 +898,18 @@ export function formatRetainerTree(steps, opts = {}) {
618
898
  ? ` — ${formatBytes(s.retainedSize)}`
619
899
  : '';
620
900
  const nodeStr = formatNodeInline(s.id, s.name, s.type, s.selfSize);
621
- lines.push(`${pad}${connector}${nodeStr}${size}${retainerMarker(i, steps.length)}`);
901
+ const repeat = s.repeatCount && s.repeatCount > 1
902
+ ? ` ×${s.repeatCount} (chain of identical hops)`
903
+ : '';
904
+ lines.push(`${pad}${connector}${nodeStr}${repeat}${size}${retainerMarker(i, steps.length)}`);
622
905
  }
623
906
  return lines.join('\n');
624
907
  }
625
908
  export function formatNodeSummaryTable(nodes) {
909
+ // On a light load there is no dominator pass, so every `retainedSize` reads
910
+ // 0. Printing "0 B" in a Retained Size column is a wrong answer wearing the
911
+ // costume of a right one; say the number does not exist instead.
912
+ const light = isLightSnapshot();
626
913
  const headers = ['ID', 'Name', 'Type', 'Self Size', 'Retained Size'];
627
914
  const rightCols = new Set([3, 4]);
628
915
  const rows = nodes.map(n => [
@@ -630,9 +917,22 @@ export function formatNodeSummaryTable(nodes) {
630
917
  n.name,
631
918
  n.type,
632
919
  formatBytes(n.self_size),
633
- formatBytes(n.retained_size),
920
+ light ? 'n/a (light)' : formatBytes(n.retained_size),
634
921
  ]);
635
- return markdownTable(headers, rows, rightCols);
922
+ return markdownTable(headers, rows, rightCols) + blinkLegend(rows.flat());
923
+ }
924
+ /**
925
+ * Legend for elided C++ template arguments, emitted only when something in the
926
+ * rendered output actually carries the marker — an unconditional legend is the
927
+ * same token tax the abbreviation exists to remove.
928
+ */
929
+ export function blinkLegend(rendered) {
930
+ for (const cell of rendered) {
931
+ if (typeof cell === 'string' && cell.includes(BLINK_TEMPLATE_ELISION)) {
932
+ return `\n\n_\`${BLINK_TEMPLATE_ELISION}\` = C++ template arguments elided; the outer type is what identifies the object. Use \`memlab_get_node\` for the full instantiated name._`;
933
+ }
934
+ }
935
+ return '';
636
936
  }
637
937
  export function formatQueryNodesResult(result, offset) {
638
938
  const partial = result.timed_out
@@ -655,6 +955,31 @@ export function formatQueryNodesResult(result, offset) {
655
955
  }
656
956
  return `Total matching nodes: ${formatNumber(result.total_count)}${partial}`;
657
957
  }
958
+ /**
959
+ * Build a name filter from a caller-supplied pattern.
960
+ *
961
+ * Interpreted as a case-insensitive regular expression, falling back to a plain
962
+ * case-insensitive substring test when the pattern is not valid regex — so a
963
+ * literal like `blink::UndoStep` works without escaping and a real pattern
964
+ * still works. An empty/absent pattern matches everything.
965
+ *
966
+ * Why this exists: answering "is `blink::UndoStep` present?" previously meant
967
+ * `class_histogram({node_type: "native", limit: 200})` and reading ~4 KB of
968
+ * table for one row. Filtering at the source is the difference between a
969
+ * yes/no answer and a page of output.
970
+ */
971
+ export function makeNamePatternTest(pattern) {
972
+ if (pattern == null || pattern.length === 0)
973
+ return () => true;
974
+ try {
975
+ const re = new RegExp(pattern, 'i');
976
+ return (name) => re.test(name);
977
+ }
978
+ catch {
979
+ const needle = pattern.toLowerCase();
980
+ return (name) => name.toLowerCase().includes(needle);
981
+ }
982
+ }
658
983
  export function snapshotHeader() {
659
984
  const meta = getSnapshotMetadata();
660
985
  if (!meta)
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memlab/mcp-server",
3
- "version": "2.18.1",
3
+ "version": "2.52.0",
4
4
  "license": "MIT",
5
5
  "description": "MCP server for MemLab heap snapshot analysis — gives AI coding assistants tools to explore JavaScript heap snapshots, find memory leaks, and identify optimization opportunities",
6
6
  "author": "Liang Gong <lgong@meta.com>",
@@ -20,7 +20,8 @@
20
20
  "main": "dist/index.js",
21
21
  "types": "dist/index.d.ts",
22
22
  "bin": {
23
- "memlab-mcp": "./bin/memlab-mcp.js"
23
+ "memlab-mcp": "./bin/memlab-mcp.js",
24
+ "memlab-cli": "./bin/memlab-cli.js"
24
25
  },
25
26
  "files": [
26
27
  "dist",
@@ -31,8 +32,8 @@
31
32
  "node": ">= 18.0.0"
32
33
  },
33
34
  "dependencies": {
34
- "@memlab/core": "^2.0.3",
35
- "@memlab/heap-analysis": "^2.0.3",
35
+ "@memlab/core": "^2.0.4",
36
+ "@memlab/heap-analysis": "^2.0.4",
36
37
  "@modelcontextprotocol/sdk": "^1.27.1",
37
38
  "zod": "^3.25.76"
38
39
  },