@memlab/mcp-server 2.1.0 → 2.3.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 (162) hide show
  1. package/README.md +88 -3
  2. package/dist/analysis-budget.d.ts +71 -0
  3. package/dist/analysis-budget.d.ts.map +1 -0
  4. package/dist/analysis-budget.js +118 -0
  5. package/dist/analysis-budget.js.map +1 -0
  6. package/dist/guardrail.d.ts +24 -0
  7. package/dist/guardrail.d.ts.map +1 -0
  8. package/dist/guardrail.js +65 -0
  9. package/dist/guardrail.js.map +1 -0
  10. package/dist/heap-state.d.ts +46 -1
  11. package/dist/heap-state.d.ts.map +1 -1
  12. package/dist/heap-state.js +142 -10
  13. package/dist/heap-state.js.map +1 -1
  14. package/dist/index.js +36 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/tools/array-group-by.d.ts +12 -0
  17. package/dist/tools/array-group-by.d.ts.map +1 -0
  18. package/dist/tools/array-group-by.js +191 -0
  19. package/dist/tools/array-group-by.js.map +1 -0
  20. package/dist/tools/auto-investigate.d.ts.map +1 -1
  21. package/dist/tools/auto-investigate.js +999 -37
  22. package/dist/tools/auto-investigate.js.map +1 -1
  23. package/dist/tools/cache-analysis.d.ts.map +1 -1
  24. package/dist/tools/cache-analysis.js +438 -21
  25. package/dist/tools/cache-analysis.js.map +1 -1
  26. package/dist/tools/check-health.d.ts.map +1 -1
  27. package/dist/tools/check-health.js +261 -1
  28. package/dist/tools/check-health.js.map +1 -1
  29. package/dist/tools/class-histogram.d.ts.map +1 -1
  30. package/dist/tools/class-histogram.js +142 -33
  31. package/dist/tools/class-histogram.js.map +1 -1
  32. package/dist/tools/closure-inspection.d.ts.map +1 -1
  33. package/dist/tools/closure-inspection.js +238 -25
  34. package/dist/tools/closure-inspection.js.map +1 -1
  35. package/dist/tools/detached-dom.d.ts.map +1 -1
  36. package/dist/tools/detached-dom.js +25 -3
  37. package/dist/tools/detached-dom.js.map +1 -1
  38. package/dist/tools/dev-artifacts.d.ts +33 -0
  39. package/dist/tools/dev-artifacts.d.ts.map +1 -0
  40. package/dist/tools/dev-artifacts.js +165 -0
  41. package/dist/tools/dev-artifacts.js.map +1 -0
  42. package/dist/tools/diff-snapshots.d.ts.map +1 -1
  43. package/dist/tools/diff-snapshots.js +113 -18
  44. package/dist/tools/diff-snapshots.js.map +1 -1
  45. package/dist/tools/duplicated-strings.d.ts.map +1 -1
  46. package/dist/tools/duplicated-strings.js +74 -12
  47. package/dist/tools/duplicated-strings.js.map +1 -1
  48. package/dist/tools/eval.d.ts.map +1 -1
  49. package/dist/tools/eval.js +189 -10
  50. package/dist/tools/eval.js.map +1 -1
  51. package/dist/tools/event-listener-leaks.d.ts.map +1 -1
  52. package/dist/tools/event-listener-leaks.js +235 -13
  53. package/dist/tools/event-listener-leaks.js.map +1 -1
  54. package/dist/tools/event-registry.d.ts +12 -0
  55. package/dist/tools/event-registry.d.ts.map +1 -0
  56. package/dist/tools/event-registry.js +183 -0
  57. package/dist/tools/event-registry.js.map +1 -0
  58. package/dist/tools/find-by-property.d.ts.map +1 -1
  59. package/dist/tools/find-by-property.js +113 -31
  60. package/dist/tools/find-by-property.js.map +1 -1
  61. package/dist/tools/find-by-shape.d.ts +12 -0
  62. package/dist/tools/find-by-shape.d.ts.map +1 -0
  63. package/dist/tools/find-by-shape.js +178 -0
  64. package/dist/tools/find-by-shape.js.map +1 -0
  65. package/dist/tools/find-nodes-by-class.d.ts.map +1 -1
  66. package/dist/tools/find-nodes-by-class.js +50 -6
  67. package/dist/tools/find-nodes-by-class.js.map +1 -1
  68. package/dist/tools/for-each.d.ts.map +1 -1
  69. package/dist/tools/for-each.js +1 -1
  70. package/dist/tools/for-each.js.map +1 -1
  71. package/dist/tools/get-node.d.ts.map +1 -1
  72. package/dist/tools/get-node.js +6 -0
  73. package/dist/tools/get-node.js.map +1 -1
  74. package/dist/tools/get-string.d.ts +12 -0
  75. package/dist/tools/get-string.d.ts.map +1 -0
  76. package/dist/tools/get-string.js +223 -0
  77. package/dist/tools/get-string.js.map +1 -0
  78. package/dist/tools/get-value.d.ts +12 -0
  79. package/dist/tools/get-value.d.ts.map +1 -0
  80. package/dist/tools/get-value.js +152 -0
  81. package/dist/tools/get-value.js.map +1 -0
  82. package/dist/tools/global-variables.d.ts.map +1 -1
  83. package/dist/tools/global-variables.js +54 -34
  84. package/dist/tools/global-variables.js.map +1 -1
  85. package/dist/tools/growth-signals.d.ts +12 -0
  86. package/dist/tools/growth-signals.d.ts.map +1 -0
  87. package/dist/tools/growth-signals.js +211 -0
  88. package/dist/tools/growth-signals.js.map +1 -0
  89. package/dist/tools/intern-opportunities.d.ts +12 -0
  90. package/dist/tools/intern-opportunities.d.ts.map +1 -0
  91. package/dist/tools/intern-opportunities.js +289 -0
  92. package/dist/tools/intern-opportunities.js.map +1 -0
  93. package/dist/tools/load-snapshot.d.ts +10 -0
  94. package/dist/tools/load-snapshot.d.ts.map +1 -1
  95. package/dist/tools/load-snapshot.js +152 -15
  96. package/dist/tools/load-snapshot.js.map +1 -1
  97. package/dist/tools/object-cost-breakdown.d.ts +12 -0
  98. package/dist/tools/object-cost-breakdown.d.ts.map +1 -0
  99. package/dist/tools/object-cost-breakdown.js +439 -0
  100. package/dist/tools/object-cost-breakdown.js.map +1 -0
  101. package/dist/tools/object-shape.d.ts.map +1 -1
  102. package/dist/tools/object-shape.js +95 -2
  103. package/dist/tools/object-shape.js.map +1 -1
  104. package/dist/tools/pinch-points.d.ts.map +1 -1
  105. package/dist/tools/pinch-points.js +9 -9
  106. package/dist/tools/pinch-points.js.map +1 -1
  107. package/dist/tools/property-distribution.d.ts +12 -0
  108. package/dist/tools/property-distribution.d.ts.map +1 -0
  109. package/dist/tools/property-distribution.js +168 -0
  110. package/dist/tools/property-distribution.js.map +1 -0
  111. package/dist/tools/quick-diagnosis.d.ts.map +1 -1
  112. package/dist/tools/quick-diagnosis.js +56 -19
  113. package/dist/tools/quick-diagnosis.js.map +1 -1
  114. package/dist/tools/retainer-summary.d.ts.map +1 -1
  115. package/dist/tools/retainer-summary.js +90 -5
  116. package/dist/tools/retainer-summary.js.map +1 -1
  117. package/dist/tools/retainer-trace.d.ts.map +1 -1
  118. package/dist/tools/retainer-trace.js +74 -22
  119. package/dist/tools/retainer-trace.js.map +1 -1
  120. package/dist/tools/search-nodes.d.ts.map +1 -1
  121. package/dist/tools/search-nodes.js +10 -3
  122. package/dist/tools/search-nodes.js.map +1 -1
  123. package/dist/tools/search-strings.d.ts +12 -0
  124. package/dist/tools/search-strings.d.ts.map +1 -0
  125. package/dist/tools/search-strings.js +182 -0
  126. package/dist/tools/search-strings.js.map +1 -0
  127. package/dist/tools/sequence-analysis.d.ts +12 -0
  128. package/dist/tools/sequence-analysis.d.ts.map +1 -0
  129. package/dist/tools/sequence-analysis.js +234 -0
  130. package/dist/tools/sequence-analysis.js.map +1 -0
  131. package/dist/tools/server-status.d.ts +12 -0
  132. package/dist/tools/server-status.d.ts.map +1 -0
  133. package/dist/tools/server-status.js +41 -0
  134. package/dist/tools/server-status.js.map +1 -0
  135. package/dist/tools/shape-histogram.d.ts.map +1 -1
  136. package/dist/tools/shape-histogram.js +61 -16
  137. package/dist/tools/shape-histogram.js.map +1 -1
  138. package/dist/tools/sliced-strings.d.ts.map +1 -1
  139. package/dist/tools/sliced-strings.js +16 -11
  140. package/dist/tools/sliced-strings.js.map +1 -1
  141. package/dist/tools/snapshot-summary.d.ts.map +1 -1
  142. package/dist/tools/snapshot-summary.js +55 -13
  143. package/dist/tools/snapshot-summary.js.map +1 -1
  144. package/dist/tools/snapshots.d.ts +12 -0
  145. package/dist/tools/snapshots.d.ts.map +1 -0
  146. package/dist/tools/snapshots.js +93 -0
  147. package/dist/tools/snapshots.js.map +1 -0
  148. package/dist/tools/stale-collections.d.ts.map +1 -1
  149. package/dist/tools/stale-collections.js +248 -7
  150. package/dist/tools/stale-collections.js.map +1 -1
  151. package/dist/tools/trace-dominators.d.ts.map +1 -1
  152. package/dist/tools/trace-dominators.js +28 -1
  153. package/dist/tools/trace-dominators.js.map +1 -1
  154. package/dist/tools/weakmap-entries.d.ts +12 -0
  155. package/dist/tools/weakmap-entries.d.ts.map +1 -0
  156. package/dist/tools/weakmap-entries.js +156 -0
  157. package/dist/tools/weakmap-entries.js.map +1 -0
  158. package/dist/utils.d.ts +81 -2
  159. package/dist/utils.d.ts.map +1 -1
  160. package/dist/utils.js +303 -35
  161. package/dist/utils.js.map +1 -1
  162. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"event-listener-leaks.js","sourceRoot":"","sources":["../../src/tools/event-listener-leaks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-listener-leaks.js","sourceRoot":"","sources":["../../src/tools/event-listener-leaks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
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 { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
11
+ export declare function registerEventRegistry(server: McpServer): void;
12
+ //# sourceMappingURL=event-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-registry.d.ts","sourceRoot":"","sources":["../../src/tools/event-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AA4CvE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoK7D"}
@@ -0,0 +1,183 @@
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 { getSnapshot } from '../heap-state.js';
12
+ import { formatNumber, markdownTable, errorResult, toolResult, makeScanBudget, ScanTimeoutError, } from '../utils.js';
13
+ const CALLBACK_PROPS = new Set(['callback', 'fn', 'handler', 'listener']);
14
+ const CONTEXT_PROPS = new Set(['context', 'ctx', 'this', 'target', 'scope']);
15
+ // Extract {callback, context} listeners (or bare closures) from an Array node.
16
+ function listenersFromArray(arr) {
17
+ const out = [];
18
+ for (const e of arr.references) {
19
+ if (e.type !== 'element')
20
+ continue;
21
+ const entry = e.toNode;
22
+ if (entry.id <= 3)
23
+ continue;
24
+ if (entry.type === 'closure') {
25
+ out.push({ callbackId: entry.id, contextId: 0 });
26
+ }
27
+ else if (entry.type === 'object') {
28
+ let cb = 0;
29
+ let ctx = 0;
30
+ for (const pe of entry.references) {
31
+ const pn = String(pe.name_or_index);
32
+ if (CALLBACK_PROPS.has(pn))
33
+ cb = pe.toNode.id;
34
+ else if (CONTEXT_PROPS.has(pn))
35
+ ctx = pe.toNode.id;
36
+ }
37
+ if (cb > 0)
38
+ out.push({ callbackId: cb, contextId: ctx });
39
+ }
40
+ }
41
+ return out;
42
+ }
43
+ export function registerEventRegistry(server) {
44
+ server.tool('memlab_event_registry', 'Detector for per-model event registries (Backbone/Marionette/observer style): objects mapping event names to arrays of {callback, context} listeners, e.g. `{"change:name": [{callback, context}], "add": [...]}`. Reports top event names by total listener count, the listeners-per-host distribution, and a structural-vs-leak verdict (one listener per host = O(hosts) structural baseline; the same callback instance bound to the same host/event more than once = a re-subscription leak). Complements memlab_event_listener_leaks by understanding the registry structure across many hosts.', {
45
+ min_events: z
46
+ .number()
47
+ .optional()
48
+ .default(2)
49
+ .describe('Minimum number of event-name->listener-array properties for an object to count as a registry container (default 2).'),
50
+ limit: z
51
+ .number()
52
+ .optional()
53
+ .default(20)
54
+ .describe('Maximum number of event names to report (default 20).'),
55
+ timeout_ms: z
56
+ .number()
57
+ .optional()
58
+ .default(45000)
59
+ .describe('Wall-clock scan budget (default 45000); returns partial results on very large browser heaps instead of hanging.'),
60
+ }, async ({ min_events, limit, timeout_ms }) => {
61
+ try {
62
+ const snapshot = getSnapshot();
63
+ const budget = makeScanBudget(timeout_ms);
64
+ let timedOut = false;
65
+ // Per event-name aggregates across ALL registry containers.
66
+ const perEvent = new Map();
67
+ let containerCount = 0;
68
+ const perHostTotals = [];
69
+ let totalListenersAll = 0;
70
+ let totalDuplicateExtra = 0;
71
+ try {
72
+ snapshot.nodes.forEach(node => {
73
+ budget.tick();
74
+ if (node.id <= 3 || node.type !== 'object')
75
+ return;
76
+ // A registry container has >= min_events properties whose target is
77
+ // an Array of listeners.
78
+ let eventProps = 0;
79
+ let hostListeners = 0;
80
+ const localEvents = [];
81
+ for (const edge of node.references) {
82
+ if (edge.type !== 'property')
83
+ continue;
84
+ const target = edge.toNode;
85
+ if (target.type !== 'object' || target.name !== 'Array')
86
+ continue;
87
+ const listeners = listenersFromArray(target);
88
+ if (listeners.length === 0)
89
+ continue;
90
+ eventProps++;
91
+ hostListeners += listeners.length;
92
+ localEvents.push({
93
+ name: String(edge.name_or_index),
94
+ listeners,
95
+ });
96
+ }
97
+ if (eventProps < min_events)
98
+ return;
99
+ containerCount++;
100
+ perHostTotals.push(hostListeners);
101
+ totalListenersAll += hostListeners;
102
+ for (const ev of localEvents) {
103
+ const e = perEvent.get(ev.name) ?? {
104
+ totalListeners: 0,
105
+ hosts: 0,
106
+ duplicatePairs: 0,
107
+ };
108
+ e.totalListeners += ev.listeners.length;
109
+ e.hosts++;
110
+ // Duplicates WITHIN this host/event = same callback+context twice.
111
+ const seen = new Map();
112
+ for (const l of ev.listeners) {
113
+ const key = `${l.callbackId}\0${l.contextId}`;
114
+ seen.set(key, (seen.get(key) ?? 0) + 1);
115
+ }
116
+ for (const c of seen.values()) {
117
+ if (c > 1) {
118
+ e.duplicatePairs += c - 1;
119
+ totalDuplicateExtra += c - 1;
120
+ }
121
+ }
122
+ perEvent.set(ev.name, e);
123
+ }
124
+ });
125
+ }
126
+ catch (e) {
127
+ if (e instanceof ScanTimeoutError)
128
+ timedOut = true;
129
+ else
130
+ throw e;
131
+ }
132
+ if (containerCount === 0) {
133
+ return toolResult(`No per-model event registries found (objects with >= ${min_events} event-name -> listener-array properties).` +
134
+ (timedOut ? ' (scan timed out before completing)' : '') +
135
+ ' Try memlab_event_listener_leaks for _events/_listeners-style containers.');
136
+ }
137
+ perHostTotals.sort((a, b) => a - b);
138
+ const median = perHostTotals[Math.floor(perHostTotals.length / 2)];
139
+ const maxPerHost = perHostTotals[perHostTotals.length - 1];
140
+ const avgPerHost = totalListenersAll / containerCount;
141
+ const topEvents = [...perEvent.entries()]
142
+ .sort((a, b) => b[1].totalListeners - a[1].totalListeners)
143
+ .slice(0, limit);
144
+ // Structural vs leak: if duplicates are rare relative to total, the
145
+ // accumulation is O(hosts) structural (one listener per host/event);
146
+ // many duplicates => real re-subscription leak.
147
+ const dupRatio = totalListenersAll > 0 ? totalDuplicateExtra / totalListenersAll : 0;
148
+ const verdict = totalDuplicateExtra === 0
149
+ ? '**Structural (not a leak):** every listener is a distinct callback/context on its host — this is the expected O(hosts) baseline (one listener per model per event).'
150
+ : dupRatio < 0.01
151
+ ? `**Mostly structural:** ${formatNumber(totalDuplicateExtra)} duplicate registration(s) (${(dupRatio * 100).toFixed(2)}%) — small re-subscription effect, likely benign.`
152
+ : `**⚠ Re-subscription leak:** ${formatNumber(totalDuplicateExtra)} duplicate registration(s) (${(dupRatio * 100).toFixed(1)}%) — the same callback instance is bound to the same host/event repeatedly (missing \`.off()\`/unsubscribe).`;
153
+ const lines = [
154
+ '## Event Registry Analysis',
155
+ '',
156
+ `${formatNumber(containerCount)} registry host(s), ${formatNumber(totalListenersAll)} total listeners.`,
157
+ `Listeners per host: avg ${avgPerHost.toFixed(1)}, median ${formatNumber(median)}, max ${formatNumber(maxPerHost)}.`,
158
+ '',
159
+ verdict,
160
+ '',
161
+ '### Top event names by total listeners',
162
+ '',
163
+ ];
164
+ const headers = ['Event', 'Total listeners', 'Hosts', 'Duplicates'];
165
+ const rightCols = new Set([1, 2, 3]);
166
+ const rows = topEvents.map(([name, e]) => [
167
+ name.length > 40 ? name.slice(0, 37) + '…' : name,
168
+ formatNumber(e.totalListeners),
169
+ formatNumber(e.hosts),
170
+ formatNumber(e.duplicatePairs),
171
+ ]);
172
+ lines.push(markdownTable(headers, rows, rightCols));
173
+ if (timedOut) {
174
+ lines.push('', `⚠ Scan hit the ${timeout_ms}ms budget — results are partial. Raise timeout_ms for full coverage.`);
175
+ }
176
+ return toolResult(lines.join('\n'));
177
+ }
178
+ catch (err) {
179
+ return errorResult(err);
180
+ }
181
+ });
182
+ }
183
+ //# sourceMappingURL=event-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-registry.js","sourceRoot":"","sources":["../../src/tools/event-registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"find-by-property.d.ts","sourceRoot":"","sources":["../../src/tools/find-by-property.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAavE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+G9D"}
1
+ {"version":3,"file":"find-by-property.d.ts","sourceRoot":"","sources":["../../src/tools/find-by-property.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAkBvE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkN9D"}
@@ -7,11 +7,17 @@
7
7
  * @format
8
8
  * @oncall memory_lab
9
9
  */
10
+ import memlabCore from '@memlab/core';
11
+ const { utils, NumericSet } = memlabCore;
10
12
  import { z } from 'zod';
11
13
  import { getSnapshot } from '../heap-state.js';
12
- import { serializeNodeSummary, isNodeWorthInspecting, formatNodeSummaryTable, errorResult, toolResult, } from '../utils.js';
14
+ import { serializeNodeSummary, isNodeWorthInspecting, formatNodeSummaryTable, formatNumber, formatBytes, errorResult, toolResult, makeScanBudget, ScanTimeoutError, } from '../utils.js';
13
15
  export function registerFindByProperty(server) {
14
- server.tool('memlab_find_by_property', 'Find all objects that have a specific property name (outgoing edge). Useful for identifying objects with React internals (__reactFiber$, __reactProps$), custom data structures, or framework-specific markers. Results sorted by retained size.', {
16
+ server.tool('memlab_find_by_property', 'Find all objects that have a specific property name (outgoing edge). Useful for identifying ' +
17
+ 'objects with React internals (__reactFiber$, __reactProps$), custom data structures, or ' +
18
+ 'framework-specific markers. Use property_value_node_id for reverse referrer lookup — ' +
19
+ 'finding all objects whose named property points to a specific node (e.g., "which objects ' +
20
+ 'have their callback property pointing to closure @700467?"). Results sorted by retained size.', {
15
21
  property_name: z
16
22
  .string()
17
23
  .describe('The property/edge name to search for (e.g., "__reactFiber$", "cache", "data")'),
@@ -19,18 +25,35 @@ export function registerFindByProperty(server) {
19
25
  .string()
20
26
  .optional()
21
27
  .describe('Filter by the string value of the property target. Exact match by default; prefix with "/" for regex (e.g., "/^Left$/"). Only matches string-type target nodes.'),
28
+ property_value_node_id: z
29
+ .number()
30
+ .optional()
31
+ .describe('Filter by the target node ID of the property. Finds all objects whose named property points to this specific node. ' +
32
+ 'Essential for reverse referrer lookup — e.g., find all objects whose "callback" property points to closure @700467.'),
22
33
  edge_type: z
23
34
  .string()
24
35
  .optional()
25
36
  .describe('Optional edge type filter (property, element, context, internal)'),
37
+ output_mode: z
38
+ .enum(['full', 'count', 'ids'])
39
+ .optional()
40
+ .default('full')
41
+ .describe('Output verbosity: "full" returns node summaries (default), "count" returns only the total count and aggregate retained size, "ids" returns only node IDs'),
26
42
  limit: z
27
43
  .number()
28
44
  .optional()
29
45
  .default(20)
30
46
  .describe('Maximum number of results (default 20)'),
31
- }, async ({ property_name, property_value, edge_type, limit }) => {
47
+ timeout_ms: z
48
+ .number()
49
+ .optional()
50
+ .default(45000)
51
+ .describe('Wall-clock budget for the full-heap scan (default 45000). On very large browser heaps the scan returns partial results with a note instead of running for many minutes.'),
52
+ }, async ({ property_name, property_value, property_value_node_id, edge_type, output_mode, limit, timeout_ms, }) => {
32
53
  try {
33
54
  const snapshot = getSnapshot();
55
+ const budget = makeScanBudget(timeout_ms);
56
+ let timedOut = false;
34
57
  // Use prefix matching for names ending with $ (React dynamic suffixes)
35
58
  const isPrefix = property_name.endsWith('$');
36
59
  let valueRegex = null;
@@ -47,11 +70,14 @@ export function registerFindByProperty(server) {
47
70
  valueExact = property_value;
48
71
  }
49
72
  }
50
- const results = [];
51
- snapshot.nodes.forEach(node => {
52
- if (!isNodeWorthInspecting(node))
53
- return;
54
- const hasProperty = node.references.some(edge => {
73
+ const filterDesc = `"${property_name}"` +
74
+ (property_value ? ` = "${property_value}"` : '') +
75
+ (property_value_node_id != null
76
+ ? ` -> @${property_value_node_id}`
77
+ : '') +
78
+ (edge_type ? ` (edge type: ${edge_type})` : '');
79
+ const matchesProperty = (node) => {
80
+ return node.references.some(edge => {
55
81
  const edgeName = String(edge.name_or_index);
56
82
  const nameMatch = isPrefix
57
83
  ? edgeName.startsWith(property_name)
@@ -60,6 +86,10 @@ export function registerFindByProperty(server) {
60
86
  return false;
61
87
  if (edge_type && edge.type !== edge_type)
62
88
  return false;
89
+ if (property_value_node_id != null) {
90
+ if (edge.toNode.id !== property_value_node_id)
91
+ return false;
92
+ }
63
93
  if (valueExact != null || valueRegex != null) {
64
94
  const target = edge.toNode;
65
95
  if (!target.isString)
@@ -75,33 +105,85 @@ export function registerFindByProperty(server) {
75
105
  }
76
106
  return true;
77
107
  });
78
- if (!hasProperty)
79
- return;
80
- // Insertion sort to keep top N by retained size
81
- const size = node.retainedSize;
82
- let inserted = false;
83
- for (let i = 0; i < results.length; i++) {
84
- if (size > results[i].retainedSize) {
85
- results.splice(i, 0, node);
86
- inserted = true;
87
- break;
88
- }
89
- }
90
- if (!inserted) {
91
- results.push(node);
108
+ };
109
+ const timeoutNote = `\n\n⚠ Scan hit the ${timeout_ms}ms budget and returned PARTIAL results. Narrow the query (add edge_type, a more specific property_name), raise timeout_ms, or prefer an indexed tool. Browser heaps with millions of native/InternalNode nodes are slow to full-scan.`;
110
+ if (output_mode === 'count') {
111
+ let totalCount = 0;
112
+ const nodeIds = new NumericSet();
113
+ try {
114
+ snapshot.nodes.forEach(node => {
115
+ budget.tick();
116
+ if (!isNodeWorthInspecting(node))
117
+ return;
118
+ if (!matchesProperty(node))
119
+ return;
120
+ totalCount++;
121
+ nodeIds.add(node.id);
122
+ });
92
123
  }
93
- if (results.length > limit) {
94
- results.length = limit;
124
+ catch (e) {
125
+ if (e instanceof ScanTimeoutError)
126
+ timedOut = true;
127
+ else
128
+ throw e;
95
129
  }
96
- });
97
- const summaries = results.map(serializeNodeSummary);
98
- const filterDesc = `"${property_name}"` +
99
- (property_value ? ` = "${property_value}"` : '') +
100
- (edge_type ? ` (edge type: ${edge_type})` : '');
101
- if (summaries.length === 0) {
130
+ // Dominator-aware aggregate: property-matching objects can nest on the
131
+ // dominator tree, so a raw sum of retainedSize would double-count and
132
+ // can exceed 100% of heap. On a timeout this reflects the partial set.
133
+ const totalRetained = utils.aggregateDominatorMetrics(nodeIds, snapshot, () => true, (node) => node.retainedSize);
134
+ return toolResult(`Objects with property ${filterDesc}: ${formatNumber(totalCount)}${timedOut ? '+' : ''} total, ${formatBytes(totalRetained)} aggregate retained size (dominator-deduplicated)` +
135
+ (timedOut ? timeoutNote : ''));
136
+ }
137
+ const results = [];
138
+ let totalCount = 0;
139
+ try {
140
+ snapshot.nodes.forEach(node => {
141
+ budget.tick();
142
+ if (!isNodeWorthInspecting(node))
143
+ return;
144
+ if (!matchesProperty(node))
145
+ return;
146
+ totalCount++;
147
+ if (output_mode === 'ids') {
148
+ results.push(node);
149
+ return;
150
+ }
151
+ const size = node.retainedSize;
152
+ let inserted = false;
153
+ for (let i = 0; i < results.length; i++) {
154
+ if (size > results[i].retainedSize) {
155
+ results.splice(i, 0, node);
156
+ inserted = true;
157
+ break;
158
+ }
159
+ }
160
+ if (!inserted) {
161
+ results.push(node);
162
+ }
163
+ if (results.length > limit) {
164
+ results.length = limit;
165
+ }
166
+ });
167
+ }
168
+ catch (e) {
169
+ if (e instanceof ScanTimeoutError)
170
+ timedOut = true;
171
+ else
172
+ throw e;
173
+ }
174
+ if (totalCount === 0) {
102
175
  return toolResult(`No objects found with property ${filterDesc}`);
103
176
  }
104
- return toolResult(`Found ${summaries.length} objects with property ${filterDesc}\n\n${formatNodeSummaryTable(summaries)}`);
177
+ if (output_mode === 'ids') {
178
+ const sorted = results
179
+ .sort((a, b) => b.retainedSize - a.retainedSize)
180
+ .slice(0, limit);
181
+ return toolResult(`Found ${formatNumber(totalCount)}${timedOut ? '+' : ''} objects with property ${filterDesc} (showing ${sorted.length} IDs)\n\nIDs: ${sorted.map(n => n.id).join(', ')}` +
182
+ (timedOut ? timeoutNote : ''));
183
+ }
184
+ const summaries = results.map(serializeNodeSummary);
185
+ return toolResult(`Found ${formatNumber(totalCount)}${timedOut ? '+' : ''} objects with property ${filterDesc} (showing top ${summaries.length})\n\n${formatNodeSummaryTable(summaries)}` +
186
+ (timedOut ? timeoutNote : ''));
105
187
  }
106
188
  catch (err) {
107
189
  return errorResult(err);
@@ -1 +1 @@
1
- {"version":3,"file":"find-by-property.js","sourceRoot":"","sources":["../../src/tools/find-by-property.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-by-property.js","sourceRoot":"","sources":["../../src/tools/find-by-property.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
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 { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
11
+ export declare function registerFindByShape(server: McpServer): void;
12
+ //# sourceMappingURL=find-by-shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-by-shape.d.ts","sourceRoot":"","sources":["../../src/tools/find-by-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAgBvE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuN3D"}