@memlab/mcp-server 2.52.0 → 2.86.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -2
- package/dist/anonymized-snapshot.d.ts +75 -0
- package/dist/anonymized-snapshot.d.ts.map +1 -0
- package/dist/anonymized-snapshot.js +101 -0
- package/dist/anonymized-snapshot.js.map +1 -0
- package/dist/eval-hints.d.ts +41 -0
- package/dist/eval-hints.d.ts.map +1 -0
- package/dist/eval-hints.js +115 -0
- package/dist/eval-hints.js.map +1 -0
- package/dist/heap-budget.d.ts +32 -0
- package/dist/heap-budget.d.ts.map +1 -0
- package/dist/heap-budget.js +90 -0
- package/dist/heap-budget.js.map +1 -0
- package/dist/heap-shapes.d.ts +148 -0
- package/dist/heap-shapes.d.ts.map +1 -0
- package/dist/heap-shapes.js +193 -0
- package/dist/heap-shapes.js.map +1 -0
- package/dist/heap-state.d.ts +20 -0
- package/dist/heap-state.d.ts.map +1 -1
- package/dist/heap-state.js +8 -1
- package/dist/heap-state.js.map +1 -1
- package/dist/index.js +64 -1
- package/dist/index.js.map +1 -1
- package/dist/react-shapes.d.ts +42 -0
- package/dist/react-shapes.d.ts.map +1 -0
- package/dist/react-shapes.js +149 -0
- package/dist/react-shapes.js.map +1 -0
- package/dist/server-version.d.ts +19 -0
- package/dist/server-version.d.ts.map +1 -0
- package/dist/server-version.js +19 -0
- package/dist/server-version.js.map +1 -0
- package/dist/snapshot-borrow.d.ts +67 -0
- package/dist/snapshot-borrow.d.ts.map +1 -0
- package/dist/snapshot-borrow.js +113 -0
- package/dist/snapshot-borrow.js.map +1 -0
- package/dist/string-index.d.ts.map +1 -1
- package/dist/string-index.js +8 -0
- package/dist/string-index.js.map +1 -1
- package/dist/tools/analyze-run.d.ts.map +1 -1
- package/dist/tools/analyze-run.js +79 -18
- package/dist/tools/analyze-run.js.map +1 -1
- package/dist/tools/anonymize-snapshot.d.ts +12 -0
- package/dist/tools/anonymize-snapshot.d.ts.map +1 -0
- package/dist/tools/anonymize-snapshot.js +159 -0
- package/dist/tools/anonymize-snapshot.js.map +1 -0
- package/dist/tools/app-config.d.ts +12 -0
- package/dist/tools/app-config.d.ts.map +1 -0
- package/dist/tools/app-config.js +217 -0
- package/dist/tools/app-config.js.map +1 -0
- package/dist/tools/app-heap.d.ts +18 -0
- package/dist/tools/app-heap.d.ts.map +1 -1
- package/dist/tools/app-heap.js +12 -46
- package/dist/tools/app-heap.js.map +1 -1
- package/dist/tools/artifact-budget.d.ts +12 -0
- package/dist/tools/artifact-budget.d.ts.map +1 -0
- package/dist/tools/artifact-budget.js +219 -0
- package/dist/tools/artifact-budget.js.map +1 -0
- package/dist/tools/async-census.d.ts +12 -0
- package/dist/tools/async-census.d.ts.map +1 -0
- package/dist/tools/async-census.js +243 -0
- package/dist/tools/async-census.js.map +1 -0
- package/dist/tools/auto-investigate.d.ts.map +1 -1
- package/dist/tools/auto-investigate.js +54 -5
- package/dist/tools/auto-investigate.js.map +1 -1
- package/dist/tools/batch.d.ts.map +1 -1
- package/dist/tools/batch.js +33 -5
- package/dist/tools/batch.js.map +1 -1
- package/dist/tools/cache-analysis.d.ts +15 -0
- package/dist/tools/cache-analysis.d.ts.map +1 -1
- package/dist/tools/cache-analysis.js +85 -10
- package/dist/tools/cache-analysis.js.map +1 -1
- package/dist/tools/census-diff.d.ts +55 -0
- package/dist/tools/census-diff.d.ts.map +1 -0
- package/dist/tools/census-diff.js +228 -0
- package/dist/tools/census-diff.js.map +1 -0
- package/dist/tools/chain-walk.d.ts +12 -0
- package/dist/tools/chain-walk.d.ts.map +1 -0
- package/dist/tools/chain-walk.js +184 -0
- package/dist/tools/chain-walk.js.map +1 -0
- package/dist/tools/collection-diff.d.ts +44 -0
- package/dist/tools/collection-diff.d.ts.map +1 -0
- package/dist/tools/collection-diff.js +343 -0
- package/dist/tools/collection-diff.js.map +1 -0
- package/dist/tools/collection-trend.d.ts.map +1 -1
- package/dist/tools/collection-trend.js +2 -2
- package/dist/tools/collection-trend.js.map +1 -1
- package/dist/tools/detached-dom.d.ts +3 -0
- package/dist/tools/detached-dom.d.ts.map +1 -1
- package/dist/tools/detached-dom.js +78 -3
- package/dist/tools/detached-dom.js.map +1 -1
- package/dist/tools/dev-artifacts.d.ts.map +1 -1
- package/dist/tools/dev-artifacts.js +221 -3
- package/dist/tools/dev-artifacts.js.map +1 -1
- package/dist/tools/diff-snapshots.d.ts.map +1 -1
- package/dist/tools/diff-snapshots.js +18 -2
- package/dist/tools/diff-snapshots.js.map +1 -1
- package/dist/tools/dom-audit.d.ts +37 -0
- package/dist/tools/dom-audit.d.ts.map +1 -0
- package/dist/tools/dom-audit.js +247 -0
- package/dist/tools/dom-audit.js.map +1 -0
- package/dist/tools/duplicated-strings.d.ts.map +1 -1
- package/dist/tools/duplicated-strings.js +3 -2
- package/dist/tools/duplicated-strings.js.map +1 -1
- package/dist/tools/eval-across.d.ts +12 -0
- package/dist/tools/eval-across.d.ts.map +1 -0
- package/dist/tools/eval-across.js +135 -0
- package/dist/tools/eval-across.js.map +1 -0
- package/dist/tools/eval.d.ts +78 -0
- package/dist/tools/eval.d.ts.map +1 -1
- package/dist/tools/eval.js +2270 -701
- 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 +42 -17
- package/dist/tools/event-listener-leaks.js.map +1 -1
- package/dist/tools/event-registry.d.ts.map +1 -1
- package/dist/tools/event-registry.js +42 -8
- package/dist/tools/event-registry.js.map +1 -1
- package/dist/tools/explain-delta.d.ts.map +1 -1
- package/dist/tools/explain-delta.js +61 -10
- package/dist/tools/explain-delta.js.map +1 -1
- package/dist/tools/finding-index.d.ts +181 -0
- package/dist/tools/finding-index.d.ts.map +1 -1
- package/dist/tools/finding-index.js +343 -24
- package/dist/tools/finding-index.js.map +1 -1
- package/dist/tools/get-value.d.ts +16 -0
- package/dist/tools/get-value.d.ts.map +1 -1
- package/dist/tools/get-value.js +96 -2
- package/dist/tools/get-value.js.map +1 -1
- package/dist/tools/hypothesis.d.ts.map +1 -1
- package/dist/tools/hypothesis.js +117 -58
- package/dist/tools/hypothesis.js.map +1 -1
- package/dist/tools/id-space-audit.d.ts +12 -0
- package/dist/tools/id-space-audit.d.ts.map +1 -0
- package/dist/tools/id-space-audit.js +262 -0
- package/dist/tools/id-space-audit.js.map +1 -0
- package/dist/tools/identify.d.ts +12 -0
- package/dist/tools/identify.d.ts.map +1 -0
- package/dist/tools/identify.js +205 -0
- package/dist/tools/identify.js.map +1 -0
- package/dist/tools/identity-diff.d.ts +12 -0
- package/dist/tools/identity-diff.d.ts.map +1 -0
- package/dist/tools/identity-diff.js +188 -0
- package/dist/tools/identity-diff.js.map +1 -0
- package/dist/tools/intern-opportunities.d.ts.map +1 -1
- package/dist/tools/intern-opportunities.js +4 -3
- package/dist/tools/intern-opportunities.js.map +1 -1
- package/dist/tools/ladder-probe.d.ts +65 -0
- package/dist/tools/ladder-probe.d.ts.map +1 -0
- package/dist/tools/ladder-probe.js +445 -0
- package/dist/tools/ladder-probe.js.map +1 -0
- package/dist/tools/ladder.d.ts.map +1 -1
- package/dist/tools/ladder.js +5 -5
- package/dist/tools/ladder.js.map +1 -1
- package/dist/tools/leak-report.d.ts +23 -0
- package/dist/tools/leak-report.d.ts.map +1 -1
- package/dist/tools/leak-report.js +153 -11
- package/dist/tools/leak-report.js.map +1 -1
- package/dist/tools/load-snapshot.d.ts +11 -0
- package/dist/tools/load-snapshot.d.ts.map +1 -1
- package/dist/tools/load-snapshot.js +83 -10
- package/dist/tools/load-snapshot.js.map +1 -1
- package/dist/tools/metric.d.ts +13 -0
- package/dist/tools/metric.d.ts.map +1 -0
- package/dist/tools/metric.js +185 -0
- package/dist/tools/metric.js.map +1 -0
- package/dist/tools/module-attribution.d.ts +36 -0
- package/dist/tools/module-attribution.d.ts.map +1 -0
- package/dist/tools/module-attribution.js +235 -0
- package/dist/tools/module-attribution.js.map +1 -0
- package/dist/tools/next-measurement.d.ts +26 -0
- package/dist/tools/next-measurement.d.ts.map +1 -0
- package/dist/tools/next-measurement.js +149 -0
- package/dist/tools/next-measurement.js.map +1 -0
- package/dist/tools/object-cost-breakdown.d.ts.map +1 -1
- package/dist/tools/object-cost-breakdown.js +64 -0
- package/dist/tools/object-cost-breakdown.js.map +1 -1
- package/dist/tools/population-vs-owners.d.ts +12 -0
- package/dist/tools/population-vs-owners.d.ts.map +1 -0
- package/dist/tools/population-vs-owners.js +183 -0
- package/dist/tools/population-vs-owners.js.map +1 -0
- package/dist/tools/property-names.d.ts +29 -0
- package/dist/tools/property-names.d.ts.map +1 -0
- package/dist/tools/property-names.js +131 -0
- package/dist/tools/property-names.js.map +1 -0
- package/dist/tools/quick-diagnosis.d.ts.map +1 -1
- package/dist/tools/quick-diagnosis.js +7 -1
- package/dist/tools/quick-diagnosis.js.map +1 -1
- package/dist/tools/react-owners.d.ts +12 -0
- package/dist/tools/react-owners.d.ts.map +1 -0
- package/dist/tools/react-owners.js +167 -0
- package/dist/tools/react-owners.js.map +1 -0
- package/dist/tools/react-update-queues.d.ts +12 -0
- package/dist/tools/react-update-queues.d.ts.map +1 -0
- package/dist/tools/react-update-queues.js +173 -0
- package/dist/tools/react-update-queues.js.map +1 -0
- package/dist/tools/replicate.d.ts +49 -0
- package/dist/tools/replicate.d.ts.map +1 -0
- package/dist/tools/replicate.js +241 -0
- package/dist/tools/replicate.js.map +1 -0
- package/dist/tools/retainer-diff.d.ts +12 -0
- package/dist/tools/retainer-diff.d.ts.map +1 -0
- package/dist/tools/retainer-diff.js +168 -0
- package/dist/tools/retainer-diff.js.map +1 -0
- package/dist/tools/retainer-summary.d.ts +17 -0
- package/dist/tools/retainer-summary.d.ts.map +1 -1
- package/dist/tools/retainer-summary.js +85 -22
- 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 +11 -1
- package/dist/tools/retainer-trace.js.map +1 -1
- package/dist/tools/round-audit.d.ts +66 -0
- package/dist/tools/round-audit.d.ts.map +1 -0
- package/dist/tools/round-audit.js +258 -0
- package/dist/tools/round-audit.js.map +1 -0
- package/dist/tools/round-digest.d.ts +12 -0
- package/dist/tools/round-digest.d.ts.map +1 -0
- package/dist/tools/round-digest.js +190 -0
- package/dist/tools/round-digest.js.map +1 -0
- package/dist/tools/script-census.d.ts +12 -0
- package/dist/tools/script-census.d.ts.map +1 -0
- package/dist/tools/script-census.js +182 -0
- package/dist/tools/script-census.js.map +1 -0
- package/dist/tools/sequence-analysis.d.ts +4 -0
- package/dist/tools/sequence-analysis.d.ts.map +1 -1
- package/dist/tools/sequence-analysis.js +53 -9
- package/dist/tools/sequence-analysis.js.map +1 -1
- package/dist/tools/server-status.d.ts.map +1 -1
- package/dist/tools/server-status.js +4 -1
- package/dist/tools/server-status.js.map +1 -1
- package/dist/tools/settle-check.d.ts +12 -0
- package/dist/tools/settle-check.d.ts.map +1 -0
- package/dist/tools/settle-check.js +188 -0
- package/dist/tools/settle-check.js.map +1 -0
- package/dist/tools/sliced-strings.d.ts.map +1 -1
- package/dist/tools/sliced-strings.js +2 -1
- package/dist/tools/sliced-strings.js.map +1 -1
- package/dist/tools/snapshots.d.ts.map +1 -1
- package/dist/tools/snapshots.js +24 -6
- package/dist/tools/snapshots.js.map +1 -1
- package/dist/tools/sparse-elements.d.ts +12 -0
- package/dist/tools/sparse-elements.d.ts.map +1 -0
- package/dist/tools/sparse-elements.js +215 -0
- package/dist/tools/sparse-elements.js.map +1 -0
- package/dist/tools/stale-collections.d.ts +17 -0
- package/dist/tools/stale-collections.d.ts.map +1 -1
- package/dist/tools/stale-collections.js +28 -0
- package/dist/tools/stale-collections.js.map +1 -1
- package/dist/tools/string-patterns.d.ts.map +1 -1
- package/dist/tools/string-patterns.js +2 -1
- package/dist/tools/string-patterns.js.map +1 -1
- package/dist/tools/tools-index.d.ts.map +1 -1
- package/dist/tools/tools-index.js +155 -5
- package/dist/tools/tools-index.js.map +1 -1
- package/dist/tools/trace-all.d.ts +42 -0
- package/dist/tools/trace-all.d.ts.map +1 -0
- package/dist/tools/trace-all.js +263 -0
- package/dist/tools/trace-all.js.map +1 -0
- package/dist/tools/unit-cost.d.ts +12 -0
- package/dist/tools/unit-cost.d.ts.map +1 -0
- package/dist/tools/unit-cost.js +219 -0
- package/dist/tools/unit-cost.js.map +1 -0
- package/dist/tools/verify-fix.d.ts.map +1 -1
- package/dist/tools/verify-fix.js +11 -3
- package/dist/tools/verify-fix.js.map +1 -1
- package/dist/tools/weakref-census.d.ts +15 -0
- package/dist/tools/weakref-census.d.ts.map +1 -0
- package/dist/tools/weakref-census.js +147 -0
- package/dist/tools/weakref-census.js.map +1 -0
- package/dist/tools/what-if.d.ts +12 -0
- package/dist/tools/what-if.d.ts.map +1 -0
- package/dist/tools/what-if.js +285 -0
- package/dist/tools/what-if.js.map +1 -0
- package/dist/utils.d.ts +92 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +172 -5
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
|
@@ -22,6 +22,7 @@ const { getFullHeapFromFile } = memlabHeapAnalysis;
|
|
|
22
22
|
const { utils: memlabUtils } = memlabCore;
|
|
23
23
|
import { setSnapshot, getSnapshotMetadata, setSessionConfig, listSnapshots, clearAllSnapshots, evictLeastRecentlyUsed, findResidentByPath, retainOnlySnapshot, setCurrentSnapshot, } from '../heap-state.js';
|
|
24
24
|
import { makeProgressReporter } from '../progress.js';
|
|
25
|
+
import { detectAnonymizedStrings } from '../anonymized-snapshot.js';
|
|
25
26
|
import { formatBytes, formatNumber, truncateNodeName, errorResult, textResult, suggestionsSuppressed, } from '../utils.js';
|
|
26
27
|
// The bucket the Nest auto-capture + the Manifold links in diffs use, so a
|
|
27
28
|
// bare snapshot filename resolves predictably (Feedback §7).
|
|
@@ -200,13 +201,28 @@ export function estimateMaxLoadableMB(counts, fileSizeMB, ceilings) {
|
|
|
200
201
|
* Resolve the effective max-file-size limit (MB). An explicit caller value always
|
|
201
202
|
* wins; otherwise default by source — Manifold-fetched server snapshots get the
|
|
202
203
|
* higher ceiling, local files keep the tighter guard.
|
|
204
|
+
*
|
|
205
|
+
* Both defaults are floors, not constants. They were sized for a 2 GB default
|
|
206
|
+
* old-space; on a server started with more heap they refuse files it could
|
|
207
|
+
* comfortably parse, and the refusal reads like a property of the snapshot
|
|
208
|
+
* rather than of the server's configuration. A 1.13 GB local browser capture
|
|
209
|
+
* on an 8 GB server is the case that matters: the guard fired, and the
|
|
210
|
+
* remedy — repeat the call with an explicit max_file_size_mb — has to be
|
|
211
|
+
* rediscovered every time, on every subsequent load call in the session.
|
|
212
|
+
* The cap therefore scales with the configured old-space limit and never
|
|
213
|
+
* drops below the historical fixed value.
|
|
203
214
|
*/
|
|
215
|
+
export const FILE_MB_PER_HEAP_MB = 0.25;
|
|
204
216
|
export function resolveMaxFileSizeMB(explicit, fetchedFromManifold) {
|
|
205
217
|
if (explicit != null)
|
|
206
218
|
return explicit;
|
|
207
|
-
|
|
219
|
+
const floor = fetchedFromManifold
|
|
208
220
|
? MANIFOLD_FETCH_SIZE_LIMIT_MB
|
|
209
221
|
: LOCAL_FILE_SIZE_LIMIT_MB;
|
|
222
|
+
const heapLimitMB = getOldSpaceLimitMB();
|
|
223
|
+
if (heapLimitMB <= 0)
|
|
224
|
+
return floor;
|
|
225
|
+
return Math.max(floor, Math.round(heapLimitMB * FILE_MB_PER_HEAP_MB));
|
|
210
226
|
}
|
|
211
227
|
/**
|
|
212
228
|
* Resolve a `file_path` that may be a local path, a `manifold://bucket/key`
|
|
@@ -362,13 +378,22 @@ function quickDiagnosis(snapshot, totalSelfSize, light = false) {
|
|
|
362
378
|
// but carry no signal (e.g. "5" ×3,372, "0" ×2,733). Require some length and
|
|
363
379
|
// non-numeric content to be worth flagging.
|
|
364
380
|
const isNoisyDupKey = (s) => s.length < 8 || /^[\s\d.,:+-]*$/.test(s);
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
381
|
+
// On an anonymised capture every string of a given length collapses to the
|
|
382
|
+
// same value, so this list reports the anonymiser rather than the app — and
|
|
383
|
+
// it is the first thing printed, before any tool has had a chance to warn.
|
|
384
|
+
const anonymized = detectAnonymizedStrings(snapshot).anonymized;
|
|
385
|
+
if (anonymized) {
|
|
386
|
+
warnings.push('⚠ Strings look ANONYMISED (content replaced, length preserved) — duplicate-string counts are collapsed by the anonymiser and are not app figures. Duplication/interning output is suppressed here and banner-flagged in the string tools.');
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
const highDups = [...stringCounts.entries()]
|
|
390
|
+
.filter(([val, count]) => count >= 1000 && !isNoisyDupKey(val))
|
|
391
|
+
.sort((a, b) => b[1] - a[1])
|
|
392
|
+
.slice(0, 3);
|
|
393
|
+
for (const [val, count] of highDups) {
|
|
394
|
+
const display = val.length > 40 ? val.slice(0, 40) + '…' : val;
|
|
395
|
+
warnings.push(`⚠ "${display}" duplicated ${formatNumber(count)} times`);
|
|
396
|
+
}
|
|
372
397
|
}
|
|
373
398
|
// Skipped on a light load: `findLargestObject` ranks by retainedSize, which
|
|
374
399
|
// is uncomputed there — every candidate would read 0 and the "retains N% of
|
|
@@ -408,6 +433,19 @@ function nextStepMenu() {
|
|
|
408
433
|
'- _Is X a leak?_ → `memlab_hypothesis`',
|
|
409
434
|
'- _Who owns the growth?_ → `memlab_explain_delta` (needs a baseline loaded with `keep_previous:true`)',
|
|
410
435
|
'- _What grew across the ladder?_ → `memlab_leak_report` / `memlab_sequence_analysis`',
|
|
436
|
+
// The five questions below are the ones people hand-write evals for. Each
|
|
437
|
+
// has had a dedicated tool for some time and each was still being answered
|
|
438
|
+
// by hand in a measured session, because nothing in the analysis path ever
|
|
439
|
+
// points at the catalogue: the flow starts at `leak_report` and the recipe
|
|
440
|
+
// names ~8 tools out of ~85. A pointer that only exists in a reference file
|
|
441
|
+
// is too weak to compete with just writing the eval.
|
|
442
|
+
'- _What is the rate of X, where X is MY population?_ → `memlab_ladder_probe` (any eval-expressible count across a ladder, with slope + r²) — not `memlab_eval` per rung',
|
|
443
|
+
'- _Did the detached/listener census change end to end?_ → `memlab_census_diff` (per-class, both rungs, one call)',
|
|
444
|
+
'- _How much of this is not the app?_ → `memlab_artifact_budget` (app vs bundle vs code vs dev vs JIT, and `app_delta` against a baseline)',
|
|
445
|
+
'- _How many listener records, by event or callback?_ → `memlab_event_registry`',
|
|
446
|
+
'- _Did this population change between two snapshots?_ → `memlab_population_diff`; _across a whole ladder?_ → `memlab_eval_across`',
|
|
447
|
+
'- _Is this collection growing?_ → `memlab_collection_trend`; _did my fix work?_ → `memlab_verify_fix`',
|
|
448
|
+
'- _Have we found this before?_ → `memlab_finding_index` (seed it with `action:"import"` first — an empty index answers NEW to everything)',
|
|
411
449
|
'- _What does this object pin?_ → `memlab_dominator_chain`, then `memlab_dominator_attribution`',
|
|
412
450
|
'- _Is it real or an artifact?_ → `memlab_dev_artifacts` (and `memlab_explain_delta` for JIT warmup, which it does not count)',
|
|
413
451
|
'- _Something else_ → `memlab_tools` lists every tool grouped by the question it answers',
|
|
@@ -438,7 +476,7 @@ export function registerLoadSnapshot(server) {
|
|
|
438
476
|
max_file_size_mb: z
|
|
439
477
|
.number()
|
|
440
478
|
.optional()
|
|
441
|
-
.describe(`Maximum file size in MB to attempt loading.
|
|
479
|
+
.describe(`Maximum file size in MB to attempt loading. The default scales with the server's configured --max-old-space-size (≈${FILE_MB_PER_HEAP_MB}× the old-space MB), floored at ${LOCAL_FILE_SIZE_LIMIT_MB} for local files and ${MANIFOLD_FETCH_SIZE_LIMIT_MB} for Manifold-fetched server captures (a bare Nest snapshot filename or a manifold:// URL), which routinely exceed the local floor. So an 8 GB server accepts a ~${Math.round(8192 * FILE_MB_PER_HEAP_MB)} MB local file without an override. Pass an explicit value to raise or lower it. Snapshots larger than the effective limit return an error instead of risking an OOM crash.`),
|
|
442
480
|
max_nodes: z
|
|
443
481
|
.number()
|
|
444
482
|
.optional()
|
|
@@ -666,6 +704,14 @@ export function registerLoadSnapshot(server) {
|
|
|
666
704
|
}
|
|
667
705
|
progress.phase(2, PHASES, `guards passed${estimateMB != null ? ` (projected ~${formatNumber(estimateMB)} MB, ~${formatNumber(headroomMB ?? 0)} MB free)` : ''}${evicted.length > 0 ? `, evicted ${evicted.join(', ')}` : ''}`);
|
|
668
706
|
progress.phase(3, PHASES, `parsing ${formatBytes(fileStat.size)} — this phase is synchronous and emits no further updates until it completes`);
|
|
707
|
+
// Baseline for the predicted-vs-actual calibration below, taken HERE
|
|
708
|
+
// rather than before the eviction loop. Evictions FREE memory while the
|
|
709
|
+
// load consumes it, so a baseline captured ahead of them measures the
|
|
710
|
+
// net of the two: the reported "actually consumed" understates the load
|
|
711
|
+
// by whatever was shed, and a correct estimate lands in the `< 0.5`
|
|
712
|
+
// branch that calls the guard over-conservative — the opposite of what
|
|
713
|
+
// this calibration point is for.
|
|
714
|
+
const headroomBeforeMB = getHeapHeadroomMB();
|
|
669
715
|
let snapshot;
|
|
670
716
|
try {
|
|
671
717
|
if (light) {
|
|
@@ -731,7 +777,7 @@ export function registerLoadSnapshot(server) {
|
|
|
731
777
|
: 'Unknown';
|
|
732
778
|
const lines = [];
|
|
733
779
|
if (previousMeta && !keep_previous) {
|
|
734
|
-
lines.push(`⚠ Replacing previously loaded snapshot "${previousMeta.fileName}"
|
|
780
|
+
lines.push(`⚠ Replacing previously loaded snapshot "${previousMeta.fileName}" — pass \`keep_previous: true\` to hold BOTH resident and diff them (memlab_diff_snapshots, memlab_explain_delta, memlab_identity_diff, memlab_population_diff all need two). An A/B that evicts its own baseline pays for a second full load of it.`);
|
|
735
781
|
}
|
|
736
782
|
if (fetchedFrom) {
|
|
737
783
|
lines.push(`Fetched from Manifold: ${fetchedFrom}`);
|
|
@@ -750,6 +796,33 @@ export function registerLoadSnapshot(server) {
|
|
|
750
796
|
if (headroomAfterMB != null) {
|
|
751
797
|
const limitMB = getOldSpaceLimitMB();
|
|
752
798
|
lines.push(`Memory: ~${formatNumber(headroomAfterMB)} MB of the ~${formatNumber(limitMB)} MB old-space limit still free after this load.`);
|
|
799
|
+
// Report PREDICTED vs ACTUAL. The ceilings and the file-size floor are
|
|
800
|
+
// all sized off `estimateLoadHeapMB`, so when it is wrong a loadable
|
|
801
|
+
// capture gets refused and the caller reaches for `force` — but it is
|
|
802
|
+
// fitted to a single measurement and nothing since has checked it.
|
|
803
|
+
// Every load is a free calibration point; recalibrating the constants
|
|
804
|
+
// on guesswork would be the wrong way to fix a safety guard.
|
|
805
|
+
if (estimateMB != null &&
|
|
806
|
+
headroomBeforeMB != null &&
|
|
807
|
+
estimateMB > 0) {
|
|
808
|
+
// A headroom delta is a LOWER BOUND on what the load cost, not a
|
|
809
|
+
// peak: a major GC during the parse returns transient allocation
|
|
810
|
+
// before the second reading, and the guard is sized against peak.
|
|
811
|
+
// Taking the baseline after any evictions removes the one bias that
|
|
812
|
+
// could be removed; this one cannot be, without sampling the parse,
|
|
813
|
+
// and the parse is a single uninterruptible block. So the low side
|
|
814
|
+
// is reported as "at least", and only the HIGH side — the dangerous
|
|
815
|
+
// direction, which GC cannot manufacture — is stated as a fact.
|
|
816
|
+
const atLeastMB = Math.max(0, headroomBeforeMB - headroomAfterMB);
|
|
817
|
+
const ratio = atLeastMB / estimateMB;
|
|
818
|
+
if (atLeastMB > 0 && (ratio > 1.5 || ratio < 0.5)) {
|
|
819
|
+
lines.push(`_Load-cost model: predicted ~${formatNumber(estimateMB)} MB, measured at least ~${formatNumber(atLeastMB)} MB (${ratio.toFixed(1)}x). ` +
|
|
820
|
+
(ratio < 0.5
|
|
821
|
+
? 'That is a floor, not a peak — a GC during the parse hides transient allocation — so read it as "the guard MAY be over-conservative for this shape of graph", and confirm across a few loads before retuning.'
|
|
822
|
+
: 'The guard UNDER-estimated this load, which is the dangerous direction — and since this figure is a floor, the real cost was at least this much. Treat the remaining headroom as smaller than it looks.') +
|
|
823
|
+
' `LOAD_BYTES_PER_NODE` / `LOAD_BYTES_PER_EDGE` in load-snapshot.ts are where this is fitted._');
|
|
824
|
+
}
|
|
825
|
+
}
|
|
753
826
|
}
|
|
754
827
|
const captured = extractCaptureTime(fileName);
|
|
755
828
|
if (captured) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-snapshot.js","sourceRoot":"","sources":["../../src/tools/load-snapshot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"load-snapshot.js","sourceRoot":"","sources":["../../src/tools/load-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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 metricStorePath(): string;
|
|
12
|
+
export declare function registerMetric(server: McpServer): void;
|
|
13
|
+
//# sourceMappingURL=metric.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric.d.ts","sourceRoot":"","sources":["../../src/tools/metric.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAuCvE,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAuCD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4KtD"}
|
|
@@ -0,0 +1,185 @@
|
|
|
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 fs from 'fs';
|
|
11
|
+
import os from 'os';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
import { getSnapshotMetadata } from '../heap-state.js';
|
|
15
|
+
import { errorResult, formatNumber, markdownTable, toolResult, } from '../utils.js';
|
|
16
|
+
const MAX_POINTS_PER_METRIC = 200;
|
|
17
|
+
export function metricStorePath() {
|
|
18
|
+
const dir = process.env.MEMLAB_STATE_DIR ?? path.join(os.homedir(), '.memlab');
|
|
19
|
+
return path.join(dir, 'metrics.json');
|
|
20
|
+
}
|
|
21
|
+
function readStore() {
|
|
22
|
+
const file = metricStorePath();
|
|
23
|
+
try {
|
|
24
|
+
const parsed = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
25
|
+
if (parsed?.version === 1 && parsed.metrics != null)
|
|
26
|
+
return parsed;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// A missing or corrupt store is not an error worth failing a measurement
|
|
30
|
+
// over — start a fresh one rather than losing the number being recorded.
|
|
31
|
+
}
|
|
32
|
+
return { version: 1, metrics: {} };
|
|
33
|
+
}
|
|
34
|
+
function writeStore(store) {
|
|
35
|
+
const file = metricStorePath();
|
|
36
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
37
|
+
fs.writeFileSync(file, JSON.stringify(store, null, 2));
|
|
38
|
+
}
|
|
39
|
+
function formatValue(p) {
|
|
40
|
+
return `${formatNumber(Math.round(p.value * 100) / 100)}${p.unit === '' ? '' : ` ${p.unit}`}`;
|
|
41
|
+
}
|
|
42
|
+
function trendLine(points) {
|
|
43
|
+
if (points.length < 2) {
|
|
44
|
+
return '_One point so far — record the same metric again after the next capture to get a trend._';
|
|
45
|
+
}
|
|
46
|
+
const first = points[0];
|
|
47
|
+
const last = points[points.length - 1];
|
|
48
|
+
if (first.unit !== last.unit) {
|
|
49
|
+
return `⚠ Units changed across points (\`${first.unit}\` → \`${last.unit}\`); the delta below is arithmetic only and may be meaningless.`;
|
|
50
|
+
}
|
|
51
|
+
const delta = last.value - first.value;
|
|
52
|
+
const pct = first.value !== 0 ? (delta / Math.abs(first.value)) * 100 : 0;
|
|
53
|
+
const dir = delta > 0 ? 'up' : delta < 0 ? 'down' : 'unchanged';
|
|
54
|
+
return `**${dir}** ${formatNumber(Math.abs(Math.round(delta * 100) / 100))} ${last.unit} across ${points.length} points (${first.label} → ${last.label})${first.value !== 0 ? `, ${pct >= 0 ? '+' : ''}${pct.toFixed(1)}%` : ''}.`;
|
|
55
|
+
}
|
|
56
|
+
export function registerMetric(server) {
|
|
57
|
+
server.tool('memlab_metric', 'Record a measurement under a name and keep it across sessions, so a number measured today can be compared with one measured next week.\n\n' +
|
|
58
|
+
'Snapshots are far too large to keep resident between sessions and node ids are per-capture, so the only thing that can persist is the measurement itself. Without this, every number from an earlier session lives in a transcript nobody reloads, and the before/after comparison that decides whether a fix worked either gets re-derived from scratch or skipped.\n\n' +
|
|
59
|
+
'Modes: `record` a named value, `history` for one metric with its trend, `list` for everything recorded, `forget` to drop one. Values are stored on disk under `~/.memlab/metrics.json` (override with `MEMLAB_STATE_DIR`).', {
|
|
60
|
+
mode: z
|
|
61
|
+
.enum(['record', 'history', 'list', 'forget'])
|
|
62
|
+
.optional()
|
|
63
|
+
.default('record')
|
|
64
|
+
.describe('What to do (default "record").'),
|
|
65
|
+
name: z
|
|
66
|
+
.string()
|
|
67
|
+
.optional()
|
|
68
|
+
.describe('Metric name — reuse the SAME name across sessions for anything you want to compare, e.g. "wa.listener_records" or "wa.heap_after_100_msgs".'),
|
|
69
|
+
value: z.number().optional().describe('The measured value to record.'),
|
|
70
|
+
unit: z
|
|
71
|
+
.string()
|
|
72
|
+
.optional()
|
|
73
|
+
.default('')
|
|
74
|
+
.describe('Unit for the value, e.g. "bytes", "MB", "objects", "per cycle". Recorded verbatim and compared on read, so keep it consistent for one metric.'),
|
|
75
|
+
label: z
|
|
76
|
+
.string()
|
|
77
|
+
.optional()
|
|
78
|
+
.describe('What this point describes — the build, gate state or rung, e.g. "gate off, 100 msgs". Defaults to the active snapshot\'s name.'),
|
|
79
|
+
note: z
|
|
80
|
+
.string()
|
|
81
|
+
.optional()
|
|
82
|
+
.describe('Optional free text: how it was measured, which tool call produced it, what to be careful about.'),
|
|
83
|
+
limit: z
|
|
84
|
+
.number()
|
|
85
|
+
.optional()
|
|
86
|
+
.default(20)
|
|
87
|
+
.describe('Rows to show in history/list (default 20).'),
|
|
88
|
+
}, async ({ mode, name, value, unit, label, note, limit }) => {
|
|
89
|
+
try {
|
|
90
|
+
const store = readStore();
|
|
91
|
+
if (mode === 'list') {
|
|
92
|
+
const names = Object.keys(store.metrics).sort();
|
|
93
|
+
if (names.length === 0) {
|
|
94
|
+
return toolResult(`No metrics recorded yet (store: \`${metricStorePath()}\`).\n\nRecord one with \`memlab_metric({name: "...", value: 123, unit: "objects"})\` — the point of it is the comparison you will want in a later session.`);
|
|
95
|
+
}
|
|
96
|
+
const rows = names.slice(0, limit).map(n => {
|
|
97
|
+
const points = store.metrics[n];
|
|
98
|
+
const last = points[points.length - 1];
|
|
99
|
+
return [
|
|
100
|
+
n,
|
|
101
|
+
formatNumber(points.length),
|
|
102
|
+
formatValue(last),
|
|
103
|
+
last.label,
|
|
104
|
+
];
|
|
105
|
+
});
|
|
106
|
+
return toolResult([
|
|
107
|
+
'## Recorded metrics',
|
|
108
|
+
'',
|
|
109
|
+
markdownTable(['Metric', 'Points', 'Latest', 'Latest label'], rows, new Set([1, 2])),
|
|
110
|
+
'',
|
|
111
|
+
`Store: \`${metricStorePath()}\`. Use \`memlab_metric({mode: "history", name})\` for the full series.`,
|
|
112
|
+
].join('\n'));
|
|
113
|
+
}
|
|
114
|
+
if (name == null || name === '') {
|
|
115
|
+
return errorResult(new Error('Pass `name` — every metric is identified by its name.'));
|
|
116
|
+
}
|
|
117
|
+
if (mode === 'forget') {
|
|
118
|
+
if (store.metrics[name] == null) {
|
|
119
|
+
return toolResult(`No metric named \`${name}\`; nothing to drop.`);
|
|
120
|
+
}
|
|
121
|
+
delete store.metrics[name];
|
|
122
|
+
writeStore(store);
|
|
123
|
+
return toolResult(`Dropped \`${name}\`.`);
|
|
124
|
+
}
|
|
125
|
+
if (mode === 'history') {
|
|
126
|
+
const points = store.metrics[name];
|
|
127
|
+
if (points == null || points.length === 0) {
|
|
128
|
+
return toolResult(`No points recorded for \`${name}\`. \`memlab_metric({mode: "list"})\` shows what is recorded.`);
|
|
129
|
+
}
|
|
130
|
+
const shown = points.slice(-limit);
|
|
131
|
+
const rows = shown.map(p => [
|
|
132
|
+
String(p.seq),
|
|
133
|
+
p.label,
|
|
134
|
+
formatValue(p),
|
|
135
|
+
p.note ?? '',
|
|
136
|
+
]);
|
|
137
|
+
return toolResult([
|
|
138
|
+
`## \`${name}\``,
|
|
139
|
+
'',
|
|
140
|
+
trendLine(points),
|
|
141
|
+
'',
|
|
142
|
+
markdownTable(['#', 'Label', 'Value', 'Note'], rows, new Set([2])),
|
|
143
|
+
points.length > shown.length
|
|
144
|
+
? `\n_Showing the last ${shown.length} of ${points.length} points._`
|
|
145
|
+
: '',
|
|
146
|
+
'',
|
|
147
|
+
'_Points are compared in the order they were recorded, which is not necessarily chronological order of the captures they describe — the label is the only thing that says what a point is._',
|
|
148
|
+
].join('\n'));
|
|
149
|
+
}
|
|
150
|
+
if (value == null) {
|
|
151
|
+
return errorResult(new Error('Pass `value` — the number to record under this name.'));
|
|
152
|
+
}
|
|
153
|
+
const meta = getSnapshotMetadata();
|
|
154
|
+
const points = store.metrics[name] ?? [];
|
|
155
|
+
const point = {
|
|
156
|
+
value,
|
|
157
|
+
unit: unit ?? '',
|
|
158
|
+
label: label ?? meta?.fileName ?? meta?.handle ?? 'unlabelled',
|
|
159
|
+
note,
|
|
160
|
+
seq: points.length + 1,
|
|
161
|
+
};
|
|
162
|
+
points.push(point);
|
|
163
|
+
// Bounded: a metric recorded in a loop should not grow the store
|
|
164
|
+
// without limit, and the oldest points are the least useful.
|
|
165
|
+
store.metrics[name] = points.slice(-MAX_POINTS_PER_METRIC);
|
|
166
|
+
writeStore(store);
|
|
167
|
+
const prev = points.length >= 2 ? points[points.length - 2] : null;
|
|
168
|
+
const lines = [
|
|
169
|
+
`Recorded \`${name}\` = **${formatValue(point)}** (${point.label}), point ${point.seq}.`,
|
|
170
|
+
];
|
|
171
|
+
if (prev != null && prev.unit === point.unit) {
|
|
172
|
+
const delta = point.value - prev.value;
|
|
173
|
+
lines.push('', `Previous point (${prev.label}): ${formatValue(prev)} — ${delta === 0 ? 'no change' : `${delta > 0 ? '+' : ''}${formatNumber(Math.round(delta * 100) / 100)} ${point.unit}`}.`);
|
|
174
|
+
}
|
|
175
|
+
if (point.label === 'unlabelled') {
|
|
176
|
+
lines.push('', '⚠ No label and no active snapshot, so this point records a number with nothing saying what it describes. Pass `label` — in a later session that is all there is to go on.');
|
|
177
|
+
}
|
|
178
|
+
return toolResult(lines.join('\n'));
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
return errorResult(err);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=metric.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric.js","sourceRoot":"","sources":["../../src/tools/metric.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
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 { IHeapNode, IHeapSnapshot } from '@memlab/core';
|
|
11
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
12
|
+
interface Registry {
|
|
13
|
+
node: IHeapNode;
|
|
14
|
+
edgeName: string;
|
|
15
|
+
/** module-export node id -> module id/name */
|
|
16
|
+
moduleByNodeId: Map<number, string>;
|
|
17
|
+
}
|
|
18
|
+
export declare function findModuleRegistries(snapshot: IHeapSnapshot): Registry[];
|
|
19
|
+
interface ModuleStat {
|
|
20
|
+
module: string;
|
|
21
|
+
selfBytes: number;
|
|
22
|
+
nodes: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* One pass with a memo indexed by `nodeIndex`: each node inherits its immediate
|
|
26
|
+
* dominator's module unless it IS a module export, so the whole heap is
|
|
27
|
+
* attributed in O(N) rather than one bounded walk per node.
|
|
28
|
+
*/
|
|
29
|
+
export declare function attributeByModule(snapshot: IHeapSnapshot, registries: Registry[]): {
|
|
30
|
+
stats: ModuleStat[];
|
|
31
|
+
attributed: number;
|
|
32
|
+
unattributed: number;
|
|
33
|
+
};
|
|
34
|
+
export declare function registerModuleAttribution(server: McpServer): void;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=module-attribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-attribution.d.ts","sourceRoot":"","sources":["../../src/tools/module-attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAgDvE,UAAU,QAAQ;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,GAAG,QAAQ,EAAE,CA0BxE;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,QAAQ,EAAE,GACrB;IAAC,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAC,CA+DjE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6GjE"}
|