@memlab/mcp-server 2.52.0 → 2.86.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/README.md +22 -2
  2. package/dist/anonymized-snapshot.d.ts +75 -0
  3. package/dist/anonymized-snapshot.d.ts.map +1 -0
  4. package/dist/anonymized-snapshot.js +101 -0
  5. package/dist/anonymized-snapshot.js.map +1 -0
  6. package/dist/eval-hints.d.ts +41 -0
  7. package/dist/eval-hints.d.ts.map +1 -0
  8. package/dist/eval-hints.js +115 -0
  9. package/dist/eval-hints.js.map +1 -0
  10. package/dist/heap-budget.d.ts +32 -0
  11. package/dist/heap-budget.d.ts.map +1 -0
  12. package/dist/heap-budget.js +90 -0
  13. package/dist/heap-budget.js.map +1 -0
  14. package/dist/heap-shapes.d.ts +148 -0
  15. package/dist/heap-shapes.d.ts.map +1 -0
  16. package/dist/heap-shapes.js +193 -0
  17. package/dist/heap-shapes.js.map +1 -0
  18. package/dist/heap-state.d.ts +20 -0
  19. package/dist/heap-state.d.ts.map +1 -1
  20. package/dist/heap-state.js +8 -1
  21. package/dist/heap-state.js.map +1 -1
  22. package/dist/index.js +64 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/react-shapes.d.ts +42 -0
  25. package/dist/react-shapes.d.ts.map +1 -0
  26. package/dist/react-shapes.js +149 -0
  27. package/dist/react-shapes.js.map +1 -0
  28. package/dist/server-version.d.ts +19 -0
  29. package/dist/server-version.d.ts.map +1 -0
  30. package/dist/server-version.js +19 -0
  31. package/dist/server-version.js.map +1 -0
  32. package/dist/snapshot-borrow.d.ts +67 -0
  33. package/dist/snapshot-borrow.d.ts.map +1 -0
  34. package/dist/snapshot-borrow.js +113 -0
  35. package/dist/snapshot-borrow.js.map +1 -0
  36. package/dist/string-index.d.ts.map +1 -1
  37. package/dist/string-index.js +8 -0
  38. package/dist/string-index.js.map +1 -1
  39. package/dist/tools/analyze-run.d.ts.map +1 -1
  40. package/dist/tools/analyze-run.js +79 -18
  41. package/dist/tools/analyze-run.js.map +1 -1
  42. package/dist/tools/anonymize-snapshot.d.ts +12 -0
  43. package/dist/tools/anonymize-snapshot.d.ts.map +1 -0
  44. package/dist/tools/anonymize-snapshot.js +159 -0
  45. package/dist/tools/anonymize-snapshot.js.map +1 -0
  46. package/dist/tools/app-config.d.ts +12 -0
  47. package/dist/tools/app-config.d.ts.map +1 -0
  48. package/dist/tools/app-config.js +217 -0
  49. package/dist/tools/app-config.js.map +1 -0
  50. package/dist/tools/app-heap.d.ts +18 -0
  51. package/dist/tools/app-heap.d.ts.map +1 -1
  52. package/dist/tools/app-heap.js +12 -46
  53. package/dist/tools/app-heap.js.map +1 -1
  54. package/dist/tools/artifact-budget.d.ts +12 -0
  55. package/dist/tools/artifact-budget.d.ts.map +1 -0
  56. package/dist/tools/artifact-budget.js +219 -0
  57. package/dist/tools/artifact-budget.js.map +1 -0
  58. package/dist/tools/async-census.d.ts +12 -0
  59. package/dist/tools/async-census.d.ts.map +1 -0
  60. package/dist/tools/async-census.js +243 -0
  61. package/dist/tools/async-census.js.map +1 -0
  62. package/dist/tools/auto-investigate.d.ts.map +1 -1
  63. package/dist/tools/auto-investigate.js +54 -5
  64. package/dist/tools/auto-investigate.js.map +1 -1
  65. package/dist/tools/batch.d.ts.map +1 -1
  66. package/dist/tools/batch.js +33 -5
  67. package/dist/tools/batch.js.map +1 -1
  68. package/dist/tools/cache-analysis.d.ts +15 -0
  69. package/dist/tools/cache-analysis.d.ts.map +1 -1
  70. package/dist/tools/cache-analysis.js +85 -10
  71. package/dist/tools/cache-analysis.js.map +1 -1
  72. package/dist/tools/census-diff.d.ts +55 -0
  73. package/dist/tools/census-diff.d.ts.map +1 -0
  74. package/dist/tools/census-diff.js +228 -0
  75. package/dist/tools/census-diff.js.map +1 -0
  76. package/dist/tools/chain-walk.d.ts +12 -0
  77. package/dist/tools/chain-walk.d.ts.map +1 -0
  78. package/dist/tools/chain-walk.js +184 -0
  79. package/dist/tools/chain-walk.js.map +1 -0
  80. package/dist/tools/collection-diff.d.ts +44 -0
  81. package/dist/tools/collection-diff.d.ts.map +1 -0
  82. package/dist/tools/collection-diff.js +343 -0
  83. package/dist/tools/collection-diff.js.map +1 -0
  84. package/dist/tools/collection-trend.d.ts.map +1 -1
  85. package/dist/tools/collection-trend.js +2 -2
  86. package/dist/tools/collection-trend.js.map +1 -1
  87. package/dist/tools/detached-dom.d.ts +3 -0
  88. package/dist/tools/detached-dom.d.ts.map +1 -1
  89. package/dist/tools/detached-dom.js +78 -3
  90. package/dist/tools/detached-dom.js.map +1 -1
  91. package/dist/tools/dev-artifacts.d.ts.map +1 -1
  92. package/dist/tools/dev-artifacts.js +221 -3
  93. package/dist/tools/dev-artifacts.js.map +1 -1
  94. package/dist/tools/diff-snapshots.d.ts.map +1 -1
  95. package/dist/tools/diff-snapshots.js +18 -2
  96. package/dist/tools/diff-snapshots.js.map +1 -1
  97. package/dist/tools/dom-audit.d.ts +37 -0
  98. package/dist/tools/dom-audit.d.ts.map +1 -0
  99. package/dist/tools/dom-audit.js +247 -0
  100. package/dist/tools/dom-audit.js.map +1 -0
  101. package/dist/tools/duplicated-strings.d.ts.map +1 -1
  102. package/dist/tools/duplicated-strings.js +3 -2
  103. package/dist/tools/duplicated-strings.js.map +1 -1
  104. package/dist/tools/eval-across.d.ts +12 -0
  105. package/dist/tools/eval-across.d.ts.map +1 -0
  106. package/dist/tools/eval-across.js +135 -0
  107. package/dist/tools/eval-across.js.map +1 -0
  108. package/dist/tools/eval.d.ts +78 -0
  109. package/dist/tools/eval.d.ts.map +1 -1
  110. package/dist/tools/eval.js +2270 -701
  111. package/dist/tools/eval.js.map +1 -1
  112. package/dist/tools/event-listener-leaks.d.ts.map +1 -1
  113. package/dist/tools/event-listener-leaks.js +42 -17
  114. package/dist/tools/event-listener-leaks.js.map +1 -1
  115. package/dist/tools/event-registry.d.ts.map +1 -1
  116. package/dist/tools/event-registry.js +42 -8
  117. package/dist/tools/event-registry.js.map +1 -1
  118. package/dist/tools/explain-delta.d.ts.map +1 -1
  119. package/dist/tools/explain-delta.js +61 -10
  120. package/dist/tools/explain-delta.js.map +1 -1
  121. package/dist/tools/finding-index.d.ts +181 -0
  122. package/dist/tools/finding-index.d.ts.map +1 -1
  123. package/dist/tools/finding-index.js +343 -24
  124. package/dist/tools/finding-index.js.map +1 -1
  125. package/dist/tools/get-value.d.ts +16 -0
  126. package/dist/tools/get-value.d.ts.map +1 -1
  127. package/dist/tools/get-value.js +96 -2
  128. package/dist/tools/get-value.js.map +1 -1
  129. package/dist/tools/hypothesis.d.ts.map +1 -1
  130. package/dist/tools/hypothesis.js +117 -58
  131. package/dist/tools/hypothesis.js.map +1 -1
  132. package/dist/tools/id-space-audit.d.ts +12 -0
  133. package/dist/tools/id-space-audit.d.ts.map +1 -0
  134. package/dist/tools/id-space-audit.js +262 -0
  135. package/dist/tools/id-space-audit.js.map +1 -0
  136. package/dist/tools/identify.d.ts +12 -0
  137. package/dist/tools/identify.d.ts.map +1 -0
  138. package/dist/tools/identify.js +205 -0
  139. package/dist/tools/identify.js.map +1 -0
  140. package/dist/tools/identity-diff.d.ts +12 -0
  141. package/dist/tools/identity-diff.d.ts.map +1 -0
  142. package/dist/tools/identity-diff.js +188 -0
  143. package/dist/tools/identity-diff.js.map +1 -0
  144. package/dist/tools/intern-opportunities.d.ts.map +1 -1
  145. package/dist/tools/intern-opportunities.js +4 -3
  146. package/dist/tools/intern-opportunities.js.map +1 -1
  147. package/dist/tools/ladder-probe.d.ts +65 -0
  148. package/dist/tools/ladder-probe.d.ts.map +1 -0
  149. package/dist/tools/ladder-probe.js +445 -0
  150. package/dist/tools/ladder-probe.js.map +1 -0
  151. package/dist/tools/ladder.d.ts.map +1 -1
  152. package/dist/tools/ladder.js +5 -5
  153. package/dist/tools/ladder.js.map +1 -1
  154. package/dist/tools/leak-report.d.ts +23 -0
  155. package/dist/tools/leak-report.d.ts.map +1 -1
  156. package/dist/tools/leak-report.js +153 -11
  157. package/dist/tools/leak-report.js.map +1 -1
  158. package/dist/tools/load-snapshot.d.ts +11 -0
  159. package/dist/tools/load-snapshot.d.ts.map +1 -1
  160. package/dist/tools/load-snapshot.js +83 -10
  161. package/dist/tools/load-snapshot.js.map +1 -1
  162. package/dist/tools/metric.d.ts +13 -0
  163. package/dist/tools/metric.d.ts.map +1 -0
  164. package/dist/tools/metric.js +185 -0
  165. package/dist/tools/metric.js.map +1 -0
  166. package/dist/tools/module-attribution.d.ts +36 -0
  167. package/dist/tools/module-attribution.d.ts.map +1 -0
  168. package/dist/tools/module-attribution.js +235 -0
  169. package/dist/tools/module-attribution.js.map +1 -0
  170. package/dist/tools/next-measurement.d.ts +26 -0
  171. package/dist/tools/next-measurement.d.ts.map +1 -0
  172. package/dist/tools/next-measurement.js +149 -0
  173. package/dist/tools/next-measurement.js.map +1 -0
  174. package/dist/tools/object-cost-breakdown.d.ts.map +1 -1
  175. package/dist/tools/object-cost-breakdown.js +64 -0
  176. package/dist/tools/object-cost-breakdown.js.map +1 -1
  177. package/dist/tools/population-vs-owners.d.ts +12 -0
  178. package/dist/tools/population-vs-owners.d.ts.map +1 -0
  179. package/dist/tools/population-vs-owners.js +183 -0
  180. package/dist/tools/population-vs-owners.js.map +1 -0
  181. package/dist/tools/property-names.d.ts +29 -0
  182. package/dist/tools/property-names.d.ts.map +1 -0
  183. package/dist/tools/property-names.js +131 -0
  184. package/dist/tools/property-names.js.map +1 -0
  185. package/dist/tools/quick-diagnosis.d.ts.map +1 -1
  186. package/dist/tools/quick-diagnosis.js +7 -1
  187. package/dist/tools/quick-diagnosis.js.map +1 -1
  188. package/dist/tools/react-owners.d.ts +12 -0
  189. package/dist/tools/react-owners.d.ts.map +1 -0
  190. package/dist/tools/react-owners.js +167 -0
  191. package/dist/tools/react-owners.js.map +1 -0
  192. package/dist/tools/react-update-queues.d.ts +12 -0
  193. package/dist/tools/react-update-queues.d.ts.map +1 -0
  194. package/dist/tools/react-update-queues.js +173 -0
  195. package/dist/tools/react-update-queues.js.map +1 -0
  196. package/dist/tools/replicate.d.ts +49 -0
  197. package/dist/tools/replicate.d.ts.map +1 -0
  198. package/dist/tools/replicate.js +241 -0
  199. package/dist/tools/replicate.js.map +1 -0
  200. package/dist/tools/retainer-diff.d.ts +12 -0
  201. package/dist/tools/retainer-diff.d.ts.map +1 -0
  202. package/dist/tools/retainer-diff.js +168 -0
  203. package/dist/tools/retainer-diff.js.map +1 -0
  204. package/dist/tools/retainer-summary.d.ts +17 -0
  205. package/dist/tools/retainer-summary.d.ts.map +1 -1
  206. package/dist/tools/retainer-summary.js +85 -22
  207. package/dist/tools/retainer-summary.js.map +1 -1
  208. package/dist/tools/retainer-trace.d.ts.map +1 -1
  209. package/dist/tools/retainer-trace.js +11 -1
  210. package/dist/tools/retainer-trace.js.map +1 -1
  211. package/dist/tools/round-audit.d.ts +66 -0
  212. package/dist/tools/round-audit.d.ts.map +1 -0
  213. package/dist/tools/round-audit.js +258 -0
  214. package/dist/tools/round-audit.js.map +1 -0
  215. package/dist/tools/round-digest.d.ts +12 -0
  216. package/dist/tools/round-digest.d.ts.map +1 -0
  217. package/dist/tools/round-digest.js +190 -0
  218. package/dist/tools/round-digest.js.map +1 -0
  219. package/dist/tools/script-census.d.ts +12 -0
  220. package/dist/tools/script-census.d.ts.map +1 -0
  221. package/dist/tools/script-census.js +182 -0
  222. package/dist/tools/script-census.js.map +1 -0
  223. package/dist/tools/sequence-analysis.d.ts +4 -0
  224. package/dist/tools/sequence-analysis.d.ts.map +1 -1
  225. package/dist/tools/sequence-analysis.js +53 -9
  226. package/dist/tools/sequence-analysis.js.map +1 -1
  227. package/dist/tools/server-status.d.ts.map +1 -1
  228. package/dist/tools/server-status.js +4 -1
  229. package/dist/tools/server-status.js.map +1 -1
  230. package/dist/tools/settle-check.d.ts +12 -0
  231. package/dist/tools/settle-check.d.ts.map +1 -0
  232. package/dist/tools/settle-check.js +188 -0
  233. package/dist/tools/settle-check.js.map +1 -0
  234. package/dist/tools/sliced-strings.d.ts.map +1 -1
  235. package/dist/tools/sliced-strings.js +2 -1
  236. package/dist/tools/sliced-strings.js.map +1 -1
  237. package/dist/tools/snapshots.d.ts.map +1 -1
  238. package/dist/tools/snapshots.js +24 -6
  239. package/dist/tools/snapshots.js.map +1 -1
  240. package/dist/tools/sparse-elements.d.ts +12 -0
  241. package/dist/tools/sparse-elements.d.ts.map +1 -0
  242. package/dist/tools/sparse-elements.js +215 -0
  243. package/dist/tools/sparse-elements.js.map +1 -0
  244. package/dist/tools/stale-collections.d.ts +17 -0
  245. package/dist/tools/stale-collections.d.ts.map +1 -1
  246. package/dist/tools/stale-collections.js +28 -0
  247. package/dist/tools/stale-collections.js.map +1 -1
  248. package/dist/tools/string-patterns.d.ts.map +1 -1
  249. package/dist/tools/string-patterns.js +2 -1
  250. package/dist/tools/string-patterns.js.map +1 -1
  251. package/dist/tools/tools-index.d.ts.map +1 -1
  252. package/dist/tools/tools-index.js +155 -5
  253. package/dist/tools/tools-index.js.map +1 -1
  254. package/dist/tools/trace-all.d.ts +42 -0
  255. package/dist/tools/trace-all.d.ts.map +1 -0
  256. package/dist/tools/trace-all.js +263 -0
  257. package/dist/tools/trace-all.js.map +1 -0
  258. package/dist/tools/unit-cost.d.ts +12 -0
  259. package/dist/tools/unit-cost.d.ts.map +1 -0
  260. package/dist/tools/unit-cost.js +219 -0
  261. package/dist/tools/unit-cost.js.map +1 -0
  262. package/dist/tools/verify-fix.d.ts.map +1 -1
  263. package/dist/tools/verify-fix.js +11 -3
  264. package/dist/tools/verify-fix.js.map +1 -1
  265. package/dist/tools/weakref-census.d.ts +15 -0
  266. package/dist/tools/weakref-census.d.ts.map +1 -0
  267. package/dist/tools/weakref-census.js +147 -0
  268. package/dist/tools/weakref-census.js.map +1 -0
  269. package/dist/tools/what-if.d.ts +12 -0
  270. package/dist/tools/what-if.d.ts.map +1 -0
  271. package/dist/tools/what-if.js +285 -0
  272. package/dist/tools/what-if.js.map +1 -0
  273. package/dist/utils.d.ts +92 -2
  274. package/dist/utils.d.ts.map +1 -1
  275. package/dist/utils.js +172 -5
  276. package/dist/utils.js.map +1 -1
  277. package/package.json +3 -3
@@ -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
- return fetchedFromManifold
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
- const highDups = [...stringCounts.entries()]
366
- .filter(([val, count]) => count >= 1000 && !isNoisyDupKey(val))
367
- .sort((a, b) => b[1] - a[1])
368
- .slice(0, 3);
369
- for (const [val, count] of highDups) {
370
- const display = val.length > 40 ? val.slice(0, 40) + '…' : val;
371
- warnings.push(`⚠ "${display}" duplicated ${formatNumber(count)} times`);
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. Defaults to ${LOCAL_FILE_SIZE_LIMIT_MB} for local files; for snapshots fetched from Manifold (a bare Nest snapshot filename or a manifold:// URL) it defaults to ${MANIFOLD_FETCH_SIZE_LIMIT_MB} the analyzer's safe ceiling since server captures routinely exceed ${LOCAL_FILE_SIZE_LIMIT_MB} MB. Pass an explicit value to override either default (e.g. raise it if your Node.js process has extra memory via --max-old-space-size). Snapshots larger than the effective limit return an error instead of risking an OOM crash.`),
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"}