@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.
- package/README.md +88 -3
- package/dist/analysis-budget.d.ts +71 -0
- package/dist/analysis-budget.d.ts.map +1 -0
- package/dist/analysis-budget.js +118 -0
- package/dist/analysis-budget.js.map +1 -0
- package/dist/guardrail.d.ts +24 -0
- package/dist/guardrail.d.ts.map +1 -0
- package/dist/guardrail.js +65 -0
- package/dist/guardrail.js.map +1 -0
- package/dist/heap-state.d.ts +46 -1
- package/dist/heap-state.d.ts.map +1 -1
- package/dist/heap-state.js +142 -10
- package/dist/heap-state.js.map +1 -1
- package/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/dist/tools/array-group-by.d.ts +12 -0
- package/dist/tools/array-group-by.d.ts.map +1 -0
- package/dist/tools/array-group-by.js +191 -0
- package/dist/tools/array-group-by.js.map +1 -0
- package/dist/tools/auto-investigate.d.ts.map +1 -1
- package/dist/tools/auto-investigate.js +999 -37
- package/dist/tools/auto-investigate.js.map +1 -1
- package/dist/tools/cache-analysis.d.ts.map +1 -1
- package/dist/tools/cache-analysis.js +438 -21
- package/dist/tools/cache-analysis.js.map +1 -1
- package/dist/tools/check-health.d.ts.map +1 -1
- package/dist/tools/check-health.js +261 -1
- package/dist/tools/check-health.js.map +1 -1
- package/dist/tools/class-histogram.d.ts.map +1 -1
- package/dist/tools/class-histogram.js +142 -33
- package/dist/tools/class-histogram.js.map +1 -1
- package/dist/tools/closure-inspection.d.ts.map +1 -1
- package/dist/tools/closure-inspection.js +238 -25
- package/dist/tools/closure-inspection.js.map +1 -1
- package/dist/tools/detached-dom.d.ts.map +1 -1
- package/dist/tools/detached-dom.js +25 -3
- package/dist/tools/detached-dom.js.map +1 -1
- package/dist/tools/dev-artifacts.d.ts +33 -0
- package/dist/tools/dev-artifacts.d.ts.map +1 -0
- package/dist/tools/dev-artifacts.js +165 -0
- package/dist/tools/dev-artifacts.js.map +1 -0
- package/dist/tools/diff-snapshots.d.ts.map +1 -1
- package/dist/tools/diff-snapshots.js +113 -18
- package/dist/tools/diff-snapshots.js.map +1 -1
- package/dist/tools/duplicated-strings.d.ts.map +1 -1
- package/dist/tools/duplicated-strings.js +74 -12
- package/dist/tools/duplicated-strings.js.map +1 -1
- package/dist/tools/eval.d.ts.map +1 -1
- package/dist/tools/eval.js +189 -10
- package/dist/tools/eval.js.map +1 -1
- package/dist/tools/event-listener-leaks.d.ts.map +1 -1
- package/dist/tools/event-listener-leaks.js +235 -13
- package/dist/tools/event-listener-leaks.js.map +1 -1
- package/dist/tools/event-registry.d.ts +12 -0
- package/dist/tools/event-registry.d.ts.map +1 -0
- package/dist/tools/event-registry.js +183 -0
- package/dist/tools/event-registry.js.map +1 -0
- package/dist/tools/find-by-property.d.ts.map +1 -1
- package/dist/tools/find-by-property.js +113 -31
- package/dist/tools/find-by-property.js.map +1 -1
- package/dist/tools/find-by-shape.d.ts +12 -0
- package/dist/tools/find-by-shape.d.ts.map +1 -0
- package/dist/tools/find-by-shape.js +178 -0
- package/dist/tools/find-by-shape.js.map +1 -0
- package/dist/tools/find-nodes-by-class.d.ts.map +1 -1
- package/dist/tools/find-nodes-by-class.js +50 -6
- package/dist/tools/find-nodes-by-class.js.map +1 -1
- package/dist/tools/for-each.d.ts.map +1 -1
- package/dist/tools/for-each.js +1 -1
- package/dist/tools/for-each.js.map +1 -1
- package/dist/tools/get-node.d.ts.map +1 -1
- package/dist/tools/get-node.js +6 -0
- package/dist/tools/get-node.js.map +1 -1
- package/dist/tools/get-string.d.ts +12 -0
- package/dist/tools/get-string.d.ts.map +1 -0
- package/dist/tools/get-string.js +223 -0
- package/dist/tools/get-string.js.map +1 -0
- package/dist/tools/get-value.d.ts +12 -0
- package/dist/tools/get-value.d.ts.map +1 -0
- package/dist/tools/get-value.js +152 -0
- package/dist/tools/get-value.js.map +1 -0
- package/dist/tools/global-variables.d.ts.map +1 -1
- package/dist/tools/global-variables.js +54 -34
- package/dist/tools/global-variables.js.map +1 -1
- package/dist/tools/growth-signals.d.ts +12 -0
- package/dist/tools/growth-signals.d.ts.map +1 -0
- package/dist/tools/growth-signals.js +211 -0
- package/dist/tools/growth-signals.js.map +1 -0
- package/dist/tools/intern-opportunities.d.ts +12 -0
- package/dist/tools/intern-opportunities.d.ts.map +1 -0
- package/dist/tools/intern-opportunities.js +289 -0
- package/dist/tools/intern-opportunities.js.map +1 -0
- package/dist/tools/load-snapshot.d.ts +10 -0
- package/dist/tools/load-snapshot.d.ts.map +1 -1
- package/dist/tools/load-snapshot.js +152 -15
- package/dist/tools/load-snapshot.js.map +1 -1
- package/dist/tools/object-cost-breakdown.d.ts +12 -0
- package/dist/tools/object-cost-breakdown.d.ts.map +1 -0
- package/dist/tools/object-cost-breakdown.js +439 -0
- package/dist/tools/object-cost-breakdown.js.map +1 -0
- package/dist/tools/object-shape.d.ts.map +1 -1
- package/dist/tools/object-shape.js +95 -2
- package/dist/tools/object-shape.js.map +1 -1
- package/dist/tools/pinch-points.d.ts.map +1 -1
- package/dist/tools/pinch-points.js +9 -9
- package/dist/tools/pinch-points.js.map +1 -1
- package/dist/tools/property-distribution.d.ts +12 -0
- package/dist/tools/property-distribution.d.ts.map +1 -0
- package/dist/tools/property-distribution.js +168 -0
- package/dist/tools/property-distribution.js.map +1 -0
- package/dist/tools/quick-diagnosis.d.ts.map +1 -1
- package/dist/tools/quick-diagnosis.js +56 -19
- package/dist/tools/quick-diagnosis.js.map +1 -1
- package/dist/tools/retainer-summary.d.ts.map +1 -1
- package/dist/tools/retainer-summary.js +90 -5
- package/dist/tools/retainer-summary.js.map +1 -1
- package/dist/tools/retainer-trace.d.ts.map +1 -1
- package/dist/tools/retainer-trace.js +74 -22
- package/dist/tools/retainer-trace.js.map +1 -1
- package/dist/tools/search-nodes.d.ts.map +1 -1
- package/dist/tools/search-nodes.js +10 -3
- package/dist/tools/search-nodes.js.map +1 -1
- package/dist/tools/search-strings.d.ts +12 -0
- package/dist/tools/search-strings.d.ts.map +1 -0
- package/dist/tools/search-strings.js +182 -0
- package/dist/tools/search-strings.js.map +1 -0
- package/dist/tools/sequence-analysis.d.ts +12 -0
- package/dist/tools/sequence-analysis.d.ts.map +1 -0
- package/dist/tools/sequence-analysis.js +234 -0
- package/dist/tools/sequence-analysis.js.map +1 -0
- package/dist/tools/server-status.d.ts +12 -0
- package/dist/tools/server-status.d.ts.map +1 -0
- package/dist/tools/server-status.js +41 -0
- package/dist/tools/server-status.js.map +1 -0
- package/dist/tools/shape-histogram.d.ts.map +1 -1
- package/dist/tools/shape-histogram.js +61 -16
- package/dist/tools/shape-histogram.js.map +1 -1
- package/dist/tools/sliced-strings.d.ts.map +1 -1
- package/dist/tools/sliced-strings.js +16 -11
- package/dist/tools/sliced-strings.js.map +1 -1
- package/dist/tools/snapshot-summary.d.ts.map +1 -1
- package/dist/tools/snapshot-summary.js +55 -13
- package/dist/tools/snapshot-summary.js.map +1 -1
- package/dist/tools/snapshots.d.ts +12 -0
- package/dist/tools/snapshots.d.ts.map +1 -0
- package/dist/tools/snapshots.js +93 -0
- package/dist/tools/snapshots.js.map +1 -0
- package/dist/tools/stale-collections.d.ts.map +1 -1
- package/dist/tools/stale-collections.js +248 -7
- package/dist/tools/stale-collections.js.map +1 -1
- package/dist/tools/trace-dominators.d.ts.map +1 -1
- package/dist/tools/trace-dominators.js +28 -1
- package/dist/tools/trace-dominators.js.map +1 -1
- package/dist/tools/weakmap-entries.d.ts +12 -0
- package/dist/tools/weakmap-entries.d.ts.map +1 -0
- package/dist/tools/weakmap-entries.js +156 -0
- package/dist/tools/weakmap-entries.js.map +1 -0
- package/dist/utils.d.ts +81 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +303 -35
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
package/dist/utils.js
CHANGED
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
* @format
|
|
8
8
|
* @oncall memory_lab
|
|
9
9
|
*/
|
|
10
|
-
import { getSnapshotMetadata } from './heap-state.js';
|
|
10
|
+
import { getSnapshotMetadata, getSessionConfig, shouldEmitHeader, } from './heap-state.js';
|
|
11
|
+
// ScanTimeoutError / makeScanBudget moved to analysis-budget.ts (shared, no
|
|
12
|
+
// import cycle). Re-exported here so existing `from '../utils.js'` imports in
|
|
13
|
+
// the tools keep working unchanged.
|
|
14
|
+
import { ScanTimeoutError, makeScanBudget, tickAnalysis, } from './analysis-budget.js';
|
|
15
|
+
export { ScanTimeoutError, makeScanBudget };
|
|
11
16
|
function truncateDomClasses(name) {
|
|
12
17
|
const classMatch = name.match(/^(.*?\s)class="([^"]*)"(.*)$/);
|
|
13
18
|
if (!classMatch)
|
|
@@ -32,18 +37,51 @@ function preferUsefulAttributes(name, maxLen) {
|
|
|
32
37
|
}
|
|
33
38
|
return name;
|
|
34
39
|
}
|
|
35
|
-
export function
|
|
36
|
-
|
|
40
|
+
export function truncateDomToTag(name) {
|
|
41
|
+
const detached = name.startsWith('Detached ') ? 'Detached ' : '';
|
|
42
|
+
const nameWithoutDetached = detached ? name.slice(9) : name;
|
|
43
|
+
const tag = nameWithoutDetached.match(/^<(\w+)/)?.[1] ??
|
|
44
|
+
nameWithoutDetached.match(/^(\w+)/)?.[1] ??
|
|
45
|
+
'';
|
|
46
|
+
if (!tag)
|
|
47
|
+
return name;
|
|
48
|
+
const testId = name.match(/data-testid="([^"]*)"/);
|
|
49
|
+
if (testId)
|
|
50
|
+
return `${detached}<${tag} ${testId[0]}>`;
|
|
51
|
+
const id = name.match(/ id="([^"]*)"/);
|
|
52
|
+
if (id)
|
|
53
|
+
return `${detached}<${tag} ${id[0]}>`;
|
|
54
|
+
const ariaLabel = name.match(/aria-label="([^"]*)"/);
|
|
55
|
+
if (ariaLabel) {
|
|
56
|
+
const label = ariaLabel[1];
|
|
57
|
+
const shortLabel = label.length > 30 ? label.slice(0, 30) + '…' : label;
|
|
58
|
+
return `${detached}<${tag} aria-label="${shortLabel}">`;
|
|
59
|
+
}
|
|
60
|
+
return `${detached}<${tag}>`;
|
|
61
|
+
}
|
|
62
|
+
export function truncateNodeName(name, type, selfSize, maxLen = 150, aggressiveDom = false) {
|
|
63
|
+
if (type === 'string' ||
|
|
64
|
+
type === 'concatenated string' ||
|
|
65
|
+
type === 'sliced string') {
|
|
37
66
|
if (name.length <= maxLen)
|
|
38
67
|
return name;
|
|
39
68
|
return `${name.slice(0, maxLen)}… (${formatBytes(selfSize)} total)`;
|
|
40
69
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
70
|
+
const isDomLike = name.includes('class="') ||
|
|
71
|
+
name.includes('aria-') ||
|
|
72
|
+
name.startsWith('<') ||
|
|
73
|
+
name.startsWith('Detached <');
|
|
74
|
+
if (isDomLike) {
|
|
75
|
+
if (aggressiveDom)
|
|
76
|
+
return truncateDomToTag(name);
|
|
77
|
+
if (name.length > maxLen) {
|
|
78
|
+
let processed = preferUsefulAttributes(name, maxLen);
|
|
79
|
+
processed = truncateDomClasses(processed);
|
|
80
|
+
if (processed.length <= maxLen)
|
|
81
|
+
return processed;
|
|
82
|
+
return `${processed.slice(0, maxLen)}…`;
|
|
83
|
+
}
|
|
84
|
+
return name;
|
|
47
85
|
}
|
|
48
86
|
if (name.length <= maxLen)
|
|
49
87
|
return name;
|
|
@@ -127,6 +165,68 @@ export function isNodeWorthInspecting(node) {
|
|
|
127
165
|
}
|
|
128
166
|
return true;
|
|
129
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Property names that mark a "freshness" timestamp on a TTL/warm cache wrapper
|
|
170
|
+
* object (e.g. `{entries, loadedAt}`, `{items, timestamp}`). Their presence next
|
|
171
|
+
* to a large array/Map means the collection was loaded as a point-in-time
|
|
172
|
+
* snapshot, not appended to over time. Shared by cache-analysis (to recognize
|
|
173
|
+
* the cache shape) and growth-signals (to suppress the append-only
|
|
174
|
+
* false-positive on load-once caches). Feedback round 4 §B/§C.
|
|
175
|
+
*/
|
|
176
|
+
export const FRESHNESS_TIMESTAMP_PROPS = new Set([
|
|
177
|
+
'timestamp',
|
|
178
|
+
'loadedAt',
|
|
179
|
+
'loaded_at',
|
|
180
|
+
'ts',
|
|
181
|
+
'cachedAt',
|
|
182
|
+
'cached_at',
|
|
183
|
+
'fetchedAt',
|
|
184
|
+
'fetched_at',
|
|
185
|
+
'lastFetched',
|
|
186
|
+
'lastLoaded',
|
|
187
|
+
'lastUpdated',
|
|
188
|
+
'updatedAt',
|
|
189
|
+
'expiresAt',
|
|
190
|
+
'expiry',
|
|
191
|
+
]);
|
|
192
|
+
/**
|
|
193
|
+
* True when `node` (typically a large Array/Map) is held by a wrapper object
|
|
194
|
+
* that also carries a freshness-timestamp sibling property — i.e. it is the data
|
|
195
|
+
* side of a `{entries, loadedAt}`-style TTL/warm cache, loaded once rather than
|
|
196
|
+
* grown unboundedly.
|
|
197
|
+
*/
|
|
198
|
+
export function hasFreshnessTimestampSibling(node) {
|
|
199
|
+
for (const ref of node.referrers) {
|
|
200
|
+
if (ref.type !== 'property')
|
|
201
|
+
continue;
|
|
202
|
+
const parent = ref.fromNode;
|
|
203
|
+
if (!parent)
|
|
204
|
+
continue;
|
|
205
|
+
for (const edge of parent.references) {
|
|
206
|
+
if (edge.type === 'property' &&
|
|
207
|
+
FRESHNESS_TIMESTAMP_PROPS.has(String(edge.name_or_index))) {
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Heuristic: does a (JSON-ish) string look like a cached *failure* response?
|
|
216
|
+
* Cached error payloads are both wasted memory and a signal that an upstream
|
|
217
|
+
* dependency is failing — surfacing them links a memory finding to a likely
|
|
218
|
+
* correctness bug. Conservative: requires a JSON-object/array head plus an
|
|
219
|
+
* explicit failure marker. Feedback round 4 §D.
|
|
220
|
+
*/
|
|
221
|
+
export function looksLikeFailurePayload(value) {
|
|
222
|
+
const head = value.length > 4096 ? value.slice(0, 4096) : value;
|
|
223
|
+
const trimmed = head.trimStart();
|
|
224
|
+
if (!(trimmed.startsWith('{') || trimmed.startsWith('[')))
|
|
225
|
+
return false;
|
|
226
|
+
return (/\bUNKNOWN_FAILURE\b/.test(head) ||
|
|
227
|
+
/"status"\s*:\s*"[^"]*(?:FAILURE|FAILED|ERROR)/i.test(head) ||
|
|
228
|
+
/"error"\s*:\s*"(?!null)[^"]+/i.test(head));
|
|
229
|
+
}
|
|
130
230
|
export function filterLargestObjects(snapshot, filter, limit) {
|
|
131
231
|
let result = [];
|
|
132
232
|
snapshot.nodes.forEach(node => {
|
|
@@ -149,38 +249,195 @@ export function filterLargestObjects(snapshot, filter, limit) {
|
|
|
149
249
|
return result;
|
|
150
250
|
}
|
|
151
251
|
export function queryNodes(snapshot, filter, opts) {
|
|
152
|
-
const { limit, offset, outputMode } = opts;
|
|
252
|
+
const { limit, offset, outputMode, budget } = opts;
|
|
253
|
+
let timedOut = false;
|
|
153
254
|
if (outputMode === 'count') {
|
|
154
255
|
let total = 0;
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
256
|
+
try {
|
|
257
|
+
snapshot.nodes.forEach(node => {
|
|
258
|
+
budget?.tick();
|
|
259
|
+
if (filter(node))
|
|
260
|
+
total++;
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
catch (e) {
|
|
264
|
+
if (e instanceof ScanTimeoutError)
|
|
265
|
+
timedOut = true;
|
|
266
|
+
else
|
|
267
|
+
throw e;
|
|
268
|
+
}
|
|
269
|
+
return { total_count: total, timed_out: timedOut || undefined };
|
|
160
270
|
}
|
|
161
271
|
// Collect all matching nodes sorted by retained size desc
|
|
162
272
|
const sorted = [];
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
273
|
+
try {
|
|
274
|
+
snapshot.nodes.forEach(node => {
|
|
275
|
+
budget?.tick();
|
|
276
|
+
if (!filter(node))
|
|
277
|
+
return;
|
|
278
|
+
const size = node.retainedSize;
|
|
279
|
+
let i;
|
|
280
|
+
for (i = sorted.length - 1; i >= 0; --i) {
|
|
281
|
+
if (sorted[i].retainedSize >= size) {
|
|
282
|
+
sorted.splice(i + 1, 0, node);
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (i < 0) {
|
|
287
|
+
sorted.unshift(node);
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
catch (e) {
|
|
292
|
+
if (e instanceof ScanTimeoutError)
|
|
293
|
+
timedOut = true;
|
|
294
|
+
else
|
|
295
|
+
throw e;
|
|
296
|
+
}
|
|
297
|
+
const total_count = sorted.length;
|
|
298
|
+
const sliced = sorted.slice(offset, offset + limit);
|
|
299
|
+
if (outputMode === 'ids') {
|
|
300
|
+
return {
|
|
301
|
+
total_count,
|
|
302
|
+
ids: sliced.map(n => n.id),
|
|
303
|
+
timed_out: timedOut || undefined,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
return {
|
|
307
|
+
total_count,
|
|
308
|
+
nodes: sliced.map(serializeNodeSummary),
|
|
309
|
+
timed_out: timedOut || undefined,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Dominator-deduped retained size for a set of nodes, with a BOUNDED upward
|
|
314
|
+
* dominator walk (default 500 steps, mirroring auto-investigate's
|
|
315
|
+
* `isDominatorAncestor` maxWalk). For each node we walk up its dominator chain
|
|
316
|
+
* looking for another in-set ancestor; if one is found the node is dominated
|
|
317
|
+
* (its bytes are already counted by that ancestor) so we skip it, otherwise we
|
|
318
|
+
* add its retained size.
|
|
319
|
+
*
|
|
320
|
+
* Unlike `@memlab/core`'s `aggregateDominatorMetrics`, the walk is capped and
|
|
321
|
+
* allocates no per-node Set, so a pathological deep dominator chain (e.g. a long
|
|
322
|
+
* PromiseReaction linked list) cannot make this blow up. Trade-off: if a node's
|
|
323
|
+
* nearest in-set dominator is deeper than `maxWalk`, we conservatively KEEP it
|
|
324
|
+
* (treat it as maximal), which can OVER-count — so `exact` is returned `false`
|
|
325
|
+
* whenever any node's walk was truncated, letting callers mark the figure as an
|
|
326
|
+
* upper bound. Calls `tickAnalysis()` per node so it also honors the wall-clock
|
|
327
|
+
* guardrail.
|
|
328
|
+
*/
|
|
329
|
+
export function boundedDominatorRetainedSize(ids, snapshot, maxWalk = 500) {
|
|
330
|
+
let retained = 0;
|
|
331
|
+
let exact = true;
|
|
332
|
+
for (const id of ids) {
|
|
333
|
+
tickAnalysis();
|
|
334
|
+
const node = snapshot.getNodeById(id);
|
|
335
|
+
if (!node)
|
|
336
|
+
continue;
|
|
337
|
+
let dominated = false;
|
|
338
|
+
let truncated = false;
|
|
339
|
+
let cur = node.dominatorNode ?? null;
|
|
340
|
+
let steps = 0;
|
|
341
|
+
while (cur) {
|
|
342
|
+
if (steps >= maxWalk) {
|
|
343
|
+
truncated = true;
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
if (cur.id === node.id)
|
|
347
|
+
break; // reached self
|
|
348
|
+
if (ids.has(cur.id)) {
|
|
349
|
+
dominated = true;
|
|
171
350
|
break;
|
|
172
351
|
}
|
|
352
|
+
const next = cur.dominatorNode ?? null;
|
|
353
|
+
if (next && next.id === cur.id)
|
|
354
|
+
break; // root self-loop
|
|
355
|
+
cur = next;
|
|
356
|
+
steps++;
|
|
173
357
|
}
|
|
174
|
-
if (
|
|
175
|
-
|
|
358
|
+
if (!dominated) {
|
|
359
|
+
retained += node.retainedSize;
|
|
360
|
+
if (truncated)
|
|
361
|
+
exact = false;
|
|
176
362
|
}
|
|
363
|
+
}
|
|
364
|
+
return { retained, exact };
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Best-effort detection of which app a Node snapshot came from, by tallying the
|
|
368
|
+
* `/app(s)/<name>/` segment in bundle paths embedded throughout the heap (string
|
|
369
|
+
* node values, function/script names). Returns the most common segment, or null
|
|
370
|
+
* if nothing decisive is found (Feedback round 3 §3d).
|
|
371
|
+
*/
|
|
372
|
+
export function detectAppName(snapshot) {
|
|
373
|
+
const counts = new Map();
|
|
374
|
+
const re = /\/apps?\/([A-Za-z0-9_.-]{2,40})\//;
|
|
375
|
+
const skip = new Set([
|
|
376
|
+
'node_modules',
|
|
377
|
+
'dist',
|
|
378
|
+
'src',
|
|
379
|
+
'build',
|
|
380
|
+
'lib',
|
|
381
|
+
'packages',
|
|
382
|
+
'common',
|
|
383
|
+
'shared',
|
|
384
|
+
]);
|
|
385
|
+
snapshot.nodes.forEach(node => {
|
|
386
|
+
const name = node.name;
|
|
387
|
+
if (!name || name.indexOf('/app') === -1)
|
|
388
|
+
return;
|
|
389
|
+
const m = re.exec(name);
|
|
390
|
+
if (!m)
|
|
391
|
+
return;
|
|
392
|
+
const seg = m[1];
|
|
393
|
+
if (skip.has(seg))
|
|
394
|
+
return;
|
|
395
|
+
counts.set(seg, (counts.get(seg) ?? 0) + 1);
|
|
177
396
|
});
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
397
|
+
let best = null;
|
|
398
|
+
let bestN = 0;
|
|
399
|
+
for (const [k, v] of counts) {
|
|
400
|
+
if (v > bestN) {
|
|
401
|
+
best = k;
|
|
402
|
+
bestN = v;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return bestN >= 3 ? best : null;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Recognize retainer paths that route through runtime instrumentation — a
|
|
409
|
+
* patched global `console`, OpenTelemetry context chains, structured loggers,
|
|
410
|
+
* etc. Such paths are frequently reported as the GC owner even though the
|
|
411
|
+
* *logical* owner (a module cache, an OTel logger, a source-map cache) lives
|
|
412
|
+
* elsewhere and is only incidentally reachable via the instrumentation's
|
|
413
|
+
* captured-closure → `context` → `previous` → `Context` chain. Returns a short
|
|
414
|
+
* annotation when the path looks instrumentation-routed, else null
|
|
415
|
+
* (Feedback round 3 §3a).
|
|
416
|
+
*/
|
|
417
|
+
export function instrumentationRetainerNote(steps) {
|
|
418
|
+
let viaConsole = false;
|
|
419
|
+
let viaOtel = false;
|
|
420
|
+
for (const s of steps) {
|
|
421
|
+
const n = s.name ?? '';
|
|
422
|
+
const e = s.edgeName ?? '';
|
|
423
|
+
if (n === 'console' || e === 'console')
|
|
424
|
+
viaConsole = true;
|
|
425
|
+
if (/Logger|loggerConfigurator|DiagConsole/i.test(n))
|
|
426
|
+
viaConsole = true;
|
|
427
|
+
if (/opentelemetry|@opentelemetry|otel/i.test(n) || /otel/i.test(e)) {
|
|
428
|
+
viaOtel = true;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
// The misleading shape is console/logger → captured closure → Context chain
|
|
432
|
+
// linked by `previous` pointers.
|
|
433
|
+
const hasContextChain = steps.some(s => s.name === 'system / Context' || s.edgeName === 'previous');
|
|
434
|
+
if (viaConsole && hasContextChain) {
|
|
435
|
+
return '(reached via patched `console` / instrumentation context chain — likely NOT the logical owner; the real owner is usually a module cache or logger reached another way)';
|
|
182
436
|
}
|
|
183
|
-
|
|
437
|
+
if (viaOtel && hasContextChain) {
|
|
438
|
+
return '(reached via OpenTelemetry instrumentation context chain — likely NOT the logical owner)';
|
|
439
|
+
}
|
|
440
|
+
return null;
|
|
184
441
|
}
|
|
185
442
|
export function formatBytes(bytes) {
|
|
186
443
|
if (!Number.isFinite(bytes) || bytes < 0)
|
|
@@ -233,22 +490,25 @@ export function formatNodeSummaryTable(nodes) {
|
|
|
233
490
|
return markdownTable(headers, rows, rightCols);
|
|
234
491
|
}
|
|
235
492
|
export function formatQueryNodesResult(result, offset) {
|
|
493
|
+
const partial = result.timed_out
|
|
494
|
+
? '\n\n⚠ Scan hit its time budget and returned PARTIAL results (counts shown are a lower bound). Raise timeout_ms, add filters, or use an indexed tool — large browser heaps are slow to full-scan.'
|
|
495
|
+
: '';
|
|
236
496
|
if (result.nodes != null) {
|
|
237
497
|
if (result.nodes.length === 0) {
|
|
238
|
-
return `No matching nodes found (total: ${formatNumber(result.total_count)})`;
|
|
498
|
+
return `No matching nodes found (total: ${formatNumber(result.total_count)})${partial}`;
|
|
239
499
|
}
|
|
240
500
|
const lines = [`Total: ${formatNumber(result.total_count)} nodes\n`];
|
|
241
501
|
lines.push(formatNodeSummaryTable(result.nodes));
|
|
242
|
-
return lines.join('\n');
|
|
502
|
+
return lines.join('\n') + partial;
|
|
243
503
|
}
|
|
244
504
|
if (result.ids != null) {
|
|
245
505
|
const lines = [
|
|
246
506
|
`Total: ${formatNumber(result.total_count)} | Showing ${formatNumber(result.ids.length)} (offset ${offset ?? 0})`,
|
|
247
507
|
];
|
|
248
508
|
lines.push(`IDs: ${result.ids.join(', ')}`);
|
|
249
|
-
return lines.join('\n');
|
|
509
|
+
return lines.join('\n') + partial;
|
|
250
510
|
}
|
|
251
|
-
return `Total matching nodes: ${formatNumber(result.total_count)}`;
|
|
511
|
+
return `Total matching nodes: ${formatNumber(result.total_count)}${partial}`;
|
|
252
512
|
}
|
|
253
513
|
export function snapshotHeader() {
|
|
254
514
|
const meta = getSnapshotMetadata();
|
|
@@ -265,10 +525,18 @@ export function textResult(text) {
|
|
|
265
525
|
return { content: [{ type: 'text', text }] };
|
|
266
526
|
}
|
|
267
527
|
export function toolResult(text) {
|
|
268
|
-
const header = snapshotHeader();
|
|
528
|
+
const header = shouldEmitHeader() ? snapshotHeader() : '';
|
|
269
529
|
const body = header ? `${header}\n\n${text}` : text;
|
|
270
530
|
return { content: [{ type: 'text', text: body }] };
|
|
271
531
|
}
|
|
532
|
+
/**
|
|
533
|
+
* Whether tools should omit "Suggested next steps" / "How to fix" trailers.
|
|
534
|
+
* Honors the session-level `suppressSuggestions` config so callers can trim
|
|
535
|
+
* repeated boilerplate tokens across a long investigation.
|
|
536
|
+
*/
|
|
537
|
+
export function suggestionsSuppressed() {
|
|
538
|
+
return getSessionConfig().suppressSuggestions;
|
|
539
|
+
}
|
|
272
540
|
export function jsonResult(data) {
|
|
273
541
|
return textResult(JSON.stringify(data, null, 2));
|
|
274
542
|
}
|
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":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,4EAA4E;AAC5E,8EAA8E;AAC9E,oCAAoC;AACpC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,gBAAgB,EAAE,cAAc,EAAC,CAAC;AAgC1C,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjE,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,GAAG,MAAM,UAAU,IAAI,MAAM,SAAS,CAAC,MAAM,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,MAAc;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAEnE,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QACtC,OAAO,GAAG,QAAQ,IAAI,GAAG,IAAI,SAAS,GAAG,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,GAAG,GACP,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,EAAE,CAAC;IACL,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACnD,IAAI,MAAM;QAAE,OAAO,GAAG,QAAQ,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;IAEtD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACvC,IAAI,EAAE;QAAE,OAAO,GAAG,QAAQ,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACxE,OAAO,GAAG,QAAQ,IAAI,GAAG,gBAAgB,UAAU,IAAI,CAAC;IAC1D,CAAC;IAED,OAAO,GAAG,QAAQ,IAAI,GAAG,GAAG,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,IAAY,EACZ,QAAgB,EAChB,MAAM,GAAG,GAAG,EACZ,aAAa,GAAG,KAAK;IAErB,IACE,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,qBAAqB;QAC9B,IAAI,KAAK,eAAe,EACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;IACtE,CAAC;IAED,MAAM,SAAS,GACb,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAChC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,aAAa;YAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YACzB,IAAI,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACrD,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM;gBAAE,OAAO,SAAS,CAAC;YACjD,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAe;IAClD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;QAC5D,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,YAAY;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,MAAM,MAAM,GAAe;QACzB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;QAC5D,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,YAAY;QAChC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,IAAI;QAC5C,QAAQ,EAAE,IAAI;KACf,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC1B,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,CAAC,QAAQ,GAAG;YAChB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAChC,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QACrC,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QACrC,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,OAAO;IACP,QAAQ;IACR,MAAM;IACN,WAAW;IACX,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,wBAAwB;IACxB,kBAAkB;IAClB,oBAAoB;IACpB,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAwB,IAAI,GAAG,CAAC;IACpE,WAAW;IACX,UAAU;IACV,WAAW;IACX,IAAI;IACJ,UAAU;IACV,WAAW;IACX,WAAW;IACX,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,aAAa;IACb,WAAW;IACX,WAAW;IACX,QAAQ;CACT,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAe;IAC1D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACrC,IACE,IAAI,CAAC,IAAI,KAAK,UAAU;gBACxB,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EACzD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IACjC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,OAAO,CACL,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,gDAAgD,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3D,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAAuB,EACvB,MAAoC,EACpC,KAAa;IAEb,IAAI,MAAM,GAAgB,EAAE,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/B,IAAI,CAAS,CAAC;QACd,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC9B,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAWD,MAAM,UAAU,UAAU,CACxB,QAAuB,EACvB,MAAoC,EACpC,IAKC;IAED,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC;IACjD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC;YACH,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5B,MAAM,EAAE,IAAI,EAAE,CAAC;gBACf,IAAI,MAAM,CAAC,IAAI,CAAC;oBAAE,KAAK,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,gBAAgB;gBAAE,QAAQ,GAAG,IAAI,CAAC;;gBAC9C,MAAM,CAAC,CAAC;QACf,CAAC;QACD,OAAO,EAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,IAAI,SAAS,EAAC,CAAC;IAChE,CAAC;IAED,0DAA0D;IAC1D,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,MAAM,EAAE,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;YAC/B,IAAI,CAAS,CAAC;YACd,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACxC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;oBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC9B,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACV,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,gBAAgB;YAAE,QAAQ,GAAG,IAAI,CAAC;;YAC9C,MAAM,CAAC,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IAEpD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO;YACL,WAAW;YACX,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,SAAS,EAAE,QAAQ,IAAI,SAAS;SACjC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,WAAW;QACX,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACvC,SAAS,EAAE,QAAQ,IAAI,SAAS;KACjC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,4BAA4B,CAC1C,GAAkB,EAClB,QAAuB,EACvB,OAAO,GAAG,GAAG;IAEb,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,YAAY,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,GAAG,GAAqB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;QACvD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;gBACrB,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;YACD,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;gBAAE,MAAM,CAAC,eAAe;YAC9C,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAqB,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC;YACzD,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE;gBAAE,MAAM,CAAC,iBAAiB;YACxD,GAAG,GAAG,IAAI,CAAC;YACX,KAAK,EAAE,CAAC;QACV,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;YAC9B,IAAI,SAAS;gBAAE,KAAK,GAAG,KAAK,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAAuB;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,EAAE,GAAG,mCAAmC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC;QACnB,cAAc;QACd,MAAM;QACN,KAAK;QACL,OAAO;QACP,KAAK;QACL,UAAU;QACV,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO;QACjD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;YACd,IAAI,GAAG,CAAC,CAAC;YACT,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAA+C;IAE/C,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;YAAE,UAAU,GAAG,IAAI,CAAC;QAC1D,IAAI,wCAAwC,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,UAAU,GAAG,IAAI,CAAC;QACxE,IAAI,oCAAoC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,4EAA4E;IAC5E,iCAAiC;IACjC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,CAChE,CAAC;IACF,IAAI,UAAU,IAAI,eAAe,EAAE,CAAC;QAClC,OAAO,wKAAwK,CAAC;IAClL,CAAC;IACD,IAAI,OAAO,IAAI,eAAe,EAAE,CAAC;QAC/B,OAAO,0FAA0F,CAAC;IACpG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;QAC5B,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAiB,EACjB,IAAgB,EAChB,UAAwB;IAExB,wBAAwB;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAC1D,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,KAAe,EAAE,EAAE,CACpD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,UAAU,GACd,IAAI;QACJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACxE,IAAI,CAAC;IACP,MAAM,aAAa,GACjB,GAAG;QACH,MAAM;aACH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACZ,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CACjE;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtC,IAAI,CAAC,GAAG,CAAC;QACZ,GAAG,CAAC;IACN,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,GAAG,CAAC,EAAE,CACJ,IAAI;QACJ,GAAG;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1D,IAAI,CAAC,KAAK,CAAC;QACd,IAAI,CACP,CAAC;IAEF,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,EAAU,EACV,IAAY,EACZ,IAAY,EACZ,QAAiB;IAEjB,MAAM,WAAW,GACf,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,OAAO,IAAI,EAAE,IAAI,WAAW,KAAK,IAAI,GAAG,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAoB;IACzD,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,EAAE,EAAE;QACV,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI;QACN,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACxB,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;KAC7B,CAAC,CAAC;IACH,OAAO,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAwB,EACxB,MAAe;IAEf,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS;QAC9B,CAAC,CAAC,kMAAkM;QACpM,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,mCAAmC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC;QAC1F,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,UAAU,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG;YACZ,UAAU,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,MAAM,IAAI,CAAC,GAAG;SAClH,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACpC,CAAC;IACD,OAAO,yBAAyB,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,QAAQ,GACZ,IAAI,CAAC,GAAG,KAAK,SAAS;QACpB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM;YACnB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,CAAC;IAClB,OAAO,eAAe,IAAI,CAAC,QAAQ,KAAK,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,QAAQ,GAAG,CAAC;AAC7H,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,EAAC,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAe,EAAE,IAAI,EAAC,CAAC,EAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,OAAO,EAAC,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,gBAAgB,EAAE,CAAC,mBAAmB,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO;QACL,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAC,CAAC;QACzD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memlab/mcp-server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.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>",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"node": ">= 18.0.0"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@memlab/core": "^2.0.
|
|
35
|
-
"@memlab/heap-analysis": "^2.0.
|
|
34
|
+
"@memlab/core": "^2.0.3",
|
|
35
|
+
"@memlab/heap-analysis": "^2.0.3",
|
|
36
36
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
37
37
|
"zod": "^3.25.76"
|
|
38
38
|
},
|