@memlab/mcp-server 2.18.1 → 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 +30 -16
- package/bin/.eslintrc.js +26 -0
- package/bin/memlab-cli.js +313 -0
- 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/artifact-classes.d.ts +86 -0
- package/dist/artifact-classes.d.ts.map +1 -0
- package/dist/artifact-classes.js +261 -0
- package/dist/artifact-classes.js.map +1 -0
- package/dist/capture-mode.d.ts +60 -0
- package/dist/capture-mode.d.ts.map +1 -0
- package/dist/capture-mode.js +39 -0
- package/dist/capture-mode.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/guardrail.d.ts.map +1 -1
- package/dist/guardrail.js +13 -0
- package/dist/guardrail.js.map +1 -1
- 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 +109 -2
- package/dist/heap-state.d.ts.map +1 -1
- package/dist/heap-state.js +194 -3
- package/dist/heap-state.js.map +1 -1
- package/dist/index.js +102 -1
- package/dist/index.js.map +1 -1
- package/dist/progress.d.ts +25 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +46 -0
- package/dist/progress.js.map +1 -0
- 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/result-handles.d.ts +11 -0
- package/dist/result-handles.d.ts.map +1 -0
- package/dist/result-handles.js +77 -0
- package/dist/result-handles.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 +55 -0
- package/dist/string-index.d.ts.map +1 -0
- package/dist/string-index.js +99 -0
- package/dist/string-index.js.map +1 -0
- package/dist/tool-registry.d.ts +42 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +20 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/tools/analyze-run.d.ts +12 -0
- package/dist/tools/analyze-run.d.ts.map +1 -0
- package/dist/tools/analyze-run.js +404 -0
- package/dist/tools/analyze-run.js.map +1 -0
- 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 +30 -0
- package/dist/tools/app-heap.d.ts.map +1 -0
- package/dist/tools/app-heap.js +106 -0
- package/dist/tools/app-heap.js.map +1 -0
- 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 +12 -0
- package/dist/tools/batch.d.ts.map +1 -0
- package/dist/tools/batch.js +196 -0
- package/dist/tools/batch.js.map +1 -0
- 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 +240 -14
- 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/class-histogram.d.ts.map +1 -1
- package/dist/tools/class-histogram.js +14 -3
- package/dist/tools/class-histogram.js.map +1 -1
- 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 +55 -0
- package/dist/tools/collection-trend.d.ts.map +1 -0
- package/dist/tools/collection-trend.js +315 -0
- package/dist/tools/collection-trend.js.map +1 -0
- package/dist/tools/detached-dom.d.ts +5 -0
- package/dist/tools/detached-dom.d.ts.map +1 -1
- package/dist/tools/detached-dom.js +368 -22
- package/dist/tools/detached-dom.js.map +1 -1
- package/dist/tools/dev-artifacts.d.ts +62 -6
- package/dist/tools/dev-artifacts.d.ts.map +1 -1
- package/dist/tools/dev-artifacts.js +685 -24
- 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/dominator-attribution.d.ts +12 -0
- package/dist/tools/dominator-attribution.d.ts.map +1 -0
- package/dist/tools/dominator-attribution.js +189 -0
- package/dist/tools/dominator-attribution.js.map +1 -0
- package/dist/tools/dominator-chain.d.ts +12 -0
- package/dist/tools/dominator-chain.d.ts.map +1 -0
- package/dist/tools/dominator-chain.js +92 -0
- package/dist/tools/dominator-chain.js.map +1 -0
- package/dist/tools/duplicate-objects.d.ts +12 -0
- package/dist/tools/duplicate-objects.d.ts.map +1 -0
- package/dist/tools/duplicate-objects.js +172 -0
- package/dist/tools/duplicate-objects.js.map +1 -0
- package/dist/tools/duplicated-strings.d.ts.map +1 -1
- package/dist/tools/duplicated-strings.js +49 -40
- 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 +79 -0
- package/dist/tools/eval.d.ts.map +1 -1
- package/dist/tools/eval.js +2523 -197
- 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 +12 -0
- package/dist/tools/explain-delta.d.ts.map +1 -0
- package/dist/tools/explain-delta.js +221 -0
- package/dist/tools/explain-delta.js.map +1 -0
- package/dist/tools/find-nodes-by-class.d.ts.map +1 -1
- package/dist/tools/find-nodes-by-class.js +112 -13
- package/dist/tools/find-nodes-by-class.js.map +1 -1
- package/dist/tools/finding-index.d.ts +203 -0
- package/dist/tools/finding-index.d.ts.map +1 -0
- package/dist/tools/finding-index.js +566 -0
- package/dist/tools/finding-index.js.map +1 -0
- package/dist/tools/for-each.d.ts.map +1 -1
- package/dist/tools/for-each.js +15 -3
- package/dist/tools/for-each.js.map +1 -1
- package/dist/tools/get-referrers.d.ts.map +1 -1
- package/dist/tools/get-referrers.js +17 -0
- package/dist/tools/get-referrers.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/hunt-report.d.ts +12 -0
- package/dist/tools/hunt-report.d.ts.map +1 -0
- package/dist/tools/hunt-report.js +186 -0
- package/dist/tools/hunt-report.js.map +1 -0
- package/dist/tools/hypothesis.d.ts +12 -0
- package/dist/tools/hypothesis.d.ts.map +1 -0
- package/dist/tools/hypothesis.js +280 -0
- package/dist/tools/hypothesis.js.map +1 -0
- 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 +116 -50
- 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 +33 -0
- package/dist/tools/ladder.d.ts.map +1 -0
- package/dist/tools/ladder.js +266 -0
- package/dist/tools/ladder.js.map +1 -0
- package/dist/tools/largest-objects.d.ts.map +1 -1
- package/dist/tools/largest-objects.js +6 -2
- package/dist/tools/largest-objects.js.map +1 -1
- package/dist/tools/leak-report.d.ts +35 -0
- package/dist/tools/leak-report.d.ts.map +1 -0
- package/dist/tools/leak-report.js +398 -0
- package/dist/tools/leak-report.js.map +1 -0
- package/dist/tools/load-snapshot.d.ts +29 -0
- package/dist/tools/load-snapshot.d.ts.map +1 -1
- package/dist/tools/load-snapshot.js +294 -23
- package/dist/tools/load-snapshot.js.map +1 -1
- package/dist/tools/map-entries.d.ts +12 -0
- package/dist/tools/map-entries.d.ts.map +1 -0
- package/dist/tools/map-entries.js +139 -0
- package/dist/tools/map-entries.js.map +1 -0
- package/dist/tools/match-object.d.ts +12 -0
- package/dist/tools/match-object.d.ts.map +1 -0
- package/dist/tools/match-object.js +165 -0
- package/dist/tools/match-object.js.map +1 -0
- 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/object-shape.d.ts.map +1 -1
- package/dist/tools/object-shape.js +53 -5
- package/dist/tools/object-shape.js.map +1 -1
- package/dist/tools/population-diff.d.ts +57 -0
- package/dist/tools/population-diff.d.ts.map +1 -0
- package/dist/tools/population-diff.js +338 -0
- package/dist/tools/population-diff.js.map +1 -0
- 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-layers.d.ts +23 -0
- package/dist/tools/retainer-layers.d.ts.map +1 -0
- package/dist/tools/retainer-layers.js +179 -0
- package/dist/tools/retainer-layers.js.map +1 -0
- package/dist/tools/retainer-summary.d.ts +18 -0
- package/dist/tools/retainer-summary.d.ts.map +1 -1
- package/dist/tools/retainer-summary.js +210 -51
- 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 +14 -2
- 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/search-nodes.d.ts.map +1 -1
- package/dist/tools/search-nodes.js +5 -1
- package/dist/tools/search-nodes.js.map +1 -1
- package/dist/tools/search-strings.d.ts.map +1 -1
- package/dist/tools/search-strings.js +53 -7
- package/dist/tools/search-strings.js.map +1 -1
- package/dist/tools/sequence-analysis.d.ts +53 -0
- package/dist/tools/sequence-analysis.d.ts.map +1 -1
- package/dist/tools/sequence-analysis.js +313 -89
- 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/shape-histogram.d.ts.map +1 -1
- package/dist/tools/shape-histogram.js +9 -2
- 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 +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 +7 -5
- package/dist/tools/string-patterns.js.map +1 -1
- package/dist/tools/tools-index.d.ts +12 -0
- package/dist/tools/tools-index.d.ts.map +1 -0
- package/dist/tools/tools-index.js +492 -0
- package/dist/tools/tools-index.js.map +1 -0
- 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 +23 -0
- package/dist/tools/verify-fix.d.ts.map +1 -0
- package/dist/tools/verify-fix.js +219 -0
- package/dist/tools/verify-fix.js.map +1 -0
- package/dist/tools/weakmap-entries.d.ts.map +1 -1
- package/dist/tools/weakmap-entries.js +6 -1
- package/dist/tools/weakmap-entries.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 +238 -3
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +507 -15
- package/dist/utils.js.map +1 -1
- package/package.json +7 -6
package/dist/heap-state.d.ts
CHANGED
|
@@ -22,17 +22,58 @@ export interface SnapshotMetadata {
|
|
|
22
22
|
edgeCount: number;
|
|
23
23
|
totalSize: number;
|
|
24
24
|
env: SnapshotEnv;
|
|
25
|
+
/**
|
|
26
|
+
* True when the snapshot was parsed WITHOUT memlab's path/dominator pass
|
|
27
|
+
* (`memlab_load_snapshot({light: true})`). Roughly halves load time, at the
|
|
28
|
+
* cost of `retainedSize`, `dominatorNode` and `pathEdge` being absent — see
|
|
29
|
+
* {@link getSnapshot}.
|
|
30
|
+
*/
|
|
31
|
+
light: boolean;
|
|
25
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Drop the least-recently-used resident snapshot, never the current one.
|
|
35
|
+
* Returns its metadata, or null when there is nothing else to evict.
|
|
36
|
+
*
|
|
37
|
+
* Used by the loader's memory-headroom guard: with `keep_previous`, several
|
|
38
|
+
* full graphs stay resident, and the load that tips the process over is the one
|
|
39
|
+
* that dies — taking every resident snapshot with it. Evicting the coldest one
|
|
40
|
+
* first turns an OOM crash into a slower session.
|
|
41
|
+
*/
|
|
42
|
+
export declare function evictLeastRecentlyUsed(): SnapshotMetadata | null;
|
|
43
|
+
/**
|
|
44
|
+
* Returns the mutable scratch object for the current snapshot, creating it on
|
|
45
|
+
* first use. Node ids and any derived index are only valid for the snapshot they
|
|
46
|
+
* were built from, so the scratch is keyed to the active handle.
|
|
47
|
+
*/
|
|
48
|
+
export declare function getEvalScratch(): Record<string, unknown>;
|
|
26
49
|
/**
|
|
27
50
|
* Session-level output controls to trim repeated boilerplate tokens.
|
|
28
51
|
* - `quietHeader`: when true, the per-call snapshot header is printed only
|
|
29
52
|
* once per loaded snapshot instead of on every tool result.
|
|
30
53
|
* - `suppressSuggestions`: when true, tools omit their "Suggested next steps"
|
|
31
54
|
* trailers.
|
|
55
|
+
*
|
|
56
|
+
* `quietHeader` DEFAULTS ON. The header is worth exactly one printing per
|
|
57
|
+
* snapshot — after that it is the same line on every call, and an investigation
|
|
58
|
+
* makes dozens. Measured over one session: ~30 loads and far more tool calls,
|
|
59
|
+
* all repeating a line the caller already knew. Opting back in is
|
|
60
|
+
* `memlab_snapshots({quiet_header: false})`.
|
|
61
|
+
*
|
|
62
|
+
* Note this only governs the SESSION header. A tool that read snapshots by path
|
|
63
|
+
* passes its own header explicitly (see `pathsHeader`), and that is a per-call
|
|
64
|
+
* fact rather than boilerplate, so it is never suppressed by this.
|
|
32
65
|
*/
|
|
33
66
|
export interface SessionConfig {
|
|
34
67
|
quietHeader: boolean;
|
|
35
68
|
suppressSuggestions: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Trim the high-volume, low-decision sections of a report.
|
|
71
|
+
*
|
|
72
|
+
* The per-tool flags (`summary_only`, `show_breakdown`, ...) each cover one
|
|
73
|
+
* tool and are spelled differently in each, so trimming a whole round means
|
|
74
|
+
* remembering N names. This is one switch for the session.
|
|
75
|
+
*/
|
|
76
|
+
terse: boolean;
|
|
36
77
|
}
|
|
37
78
|
export declare function getSessionConfig(): SessionConfig;
|
|
38
79
|
export declare function setSessionConfig(patch: Partial<SessionConfig>): SessionConfig;
|
|
@@ -42,7 +83,52 @@ export declare function setSessionConfig(patch: Partial<SessionConfig>): Session
|
|
|
42
83
|
* whether to prepend the snapshot header.
|
|
43
84
|
*/
|
|
44
85
|
export declare function shouldEmitHeader(): boolean;
|
|
45
|
-
export declare function
|
|
86
|
+
export declare function shouldEmitNote(key: string): boolean;
|
|
87
|
+
/** True if `key` has already been emitted, without marking it. */
|
|
88
|
+
export declare function noteAlreadyEmitted(key: string): boolean;
|
|
89
|
+
/** Force the standing notes to print again (used by `repeat_notes`). */
|
|
90
|
+
export declare function resetEmittedNotes(): void;
|
|
91
|
+
/**
|
|
92
|
+
* Named results saved from `memlab_eval` (`save_as` / `helpers.save`).
|
|
93
|
+
*
|
|
94
|
+
* SESSION-scoped, deliberately not snapshot-scoped. Comparing a baseline scan
|
|
95
|
+
* against a final scan is the central job of a leak hunt, and the previous
|
|
96
|
+
* per-snapshot scratch dropped the baseline the moment the next rung was loaded
|
|
97
|
+
* — i.e. exactly when it became useful. The handle each value was saved against
|
|
98
|
+
* is recorded alongside it, because node ids are per-capture: `helpers.load`
|
|
99
|
+
* refuses a cross-snapshot read unless the caller says the value is portable.
|
|
100
|
+
*/
|
|
101
|
+
interface SavedResult {
|
|
102
|
+
value: unknown;
|
|
103
|
+
handle: string;
|
|
104
|
+
}
|
|
105
|
+
export declare function setSavedResult(name: string, value: unknown, handle: string): void;
|
|
106
|
+
export declare function getSavedResult(name: string): SavedResult | undefined;
|
|
107
|
+
export declare function listSavedResults(): Array<{
|
|
108
|
+
name: string;
|
|
109
|
+
handle: string;
|
|
110
|
+
}>;
|
|
111
|
+
/**
|
|
112
|
+
* The current snapshot.
|
|
113
|
+
*
|
|
114
|
+
* A LIGHT snapshot (loaded with `light: true`) has no dominator tree, no
|
|
115
|
+
* retained sizes and no shortest-path edges. On such a snapshot `retainedSize`
|
|
116
|
+
* reads 0 and `dominatorNode` / `pathEdge` are absent — which does not throw, it
|
|
117
|
+
* silently produces zeros and empty traces. A tool that reported those as
|
|
118
|
+
* results would be confidently wrong, which is worse than refusing.
|
|
119
|
+
*
|
|
120
|
+
* So light access is DENY-BY-DEFAULT and must be opted into per call site with
|
|
121
|
+
* `{allowLight: true}`, by tools that read only counts, names, types, self
|
|
122
|
+
* sizes, string values or edges. Enforcing it here rather than in the tool
|
|
123
|
+
* wrapper is deliberate: this is the one funnel every tool goes through,
|
|
124
|
+
* including tools dispatched in-process by `memlab_batch`, which bypass the
|
|
125
|
+
* guardrail wrapper entirely.
|
|
126
|
+
*/
|
|
127
|
+
export declare function getSnapshot(opts?: {
|
|
128
|
+
allowLight?: boolean;
|
|
129
|
+
}): IHeapSnapshot;
|
|
130
|
+
/** True when the current snapshot was loaded without the dominator pass. */
|
|
131
|
+
export declare function isLightSnapshot(): boolean;
|
|
46
132
|
export declare function getFilePath(): string | null;
|
|
47
133
|
export declare function getSnapshotEnv(): SnapshotEnv;
|
|
48
134
|
export declare function getSnapshotMetadata(): SnapshotMetadata | null;
|
|
@@ -57,7 +143,9 @@ export declare function getSnapshotMetadata(): SnapshotMetadata | null;
|
|
|
57
143
|
* preserving the single-resident memory profile. When false, keep
|
|
58
144
|
* previously-loaded snapshots resident for diffing/comparison.
|
|
59
145
|
*/
|
|
60
|
-
export declare function setSnapshot(snapshot: IHeapSnapshot, filePath: string, metadata: Omit<SnapshotMetadata, 'filePath' | 'handle'
|
|
146
|
+
export declare function setSnapshot(snapshot: IHeapSnapshot, filePath: string, metadata: Omit<SnapshotMetadata, 'filePath' | 'handle' | 'light'> & {
|
|
147
|
+
light?: boolean;
|
|
148
|
+
}, opts?: {
|
|
61
149
|
alias?: string;
|
|
62
150
|
replace?: boolean;
|
|
63
151
|
}): SnapshotMetadata;
|
|
@@ -69,9 +157,28 @@ export declare function listSnapshots(): SnapshotMetadata[];
|
|
|
69
157
|
* in P2403258184 §3).
|
|
70
158
|
*/
|
|
71
159
|
export declare function clearAllSnapshots(): void;
|
|
160
|
+
/**
|
|
161
|
+
* A resident snapshot loaded from this exact path, if any.
|
|
162
|
+
*
|
|
163
|
+
* The point of a snapshot cache is to not re-parse a file this process already
|
|
164
|
+
* has in memory; that check has to key on the resolved path, since the handle is
|
|
165
|
+
* derived from the file name and may have been disambiguated.
|
|
166
|
+
*/
|
|
167
|
+
export declare function findResidentByPath(filePath: string): SnapshotMetadata | null;
|
|
168
|
+
/**
|
|
169
|
+
* Drop every resident snapshot except `handle`, which becomes current.
|
|
170
|
+
*
|
|
171
|
+
* Used by the load cache-hit path so a hit is indistinguishable from a real load
|
|
172
|
+
* apart from speed: a replace-mode load unloads the others, and a hit must do
|
|
173
|
+
* the same or the two paths leave different state behind.
|
|
174
|
+
*/
|
|
175
|
+
export declare function retainOnlySnapshot(handle: string): boolean;
|
|
72
176
|
export declare function getCurrentHandle(): string | null;
|
|
73
177
|
export declare function getSnapshotByHandle(handle: string): IHeapSnapshot | null;
|
|
74
178
|
export declare function getMetadataByHandle(handle: string): SnapshotMetadata | null;
|
|
75
179
|
export declare function setCurrentSnapshot(handle: string): boolean;
|
|
76
180
|
export declare function removeSnapshot(handle: string): boolean;
|
|
181
|
+
/** Is the session asking for trimmed, decision-only output? */
|
|
182
|
+
export declare function isTerse(): boolean;
|
|
183
|
+
export {};
|
|
77
184
|
//# sourceMappingURL=heap-state.d.ts.map
|
package/dist/heap-state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heap-state.d.ts","sourceRoot":"","sources":["../src/heap-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAGhD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAgCzD,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"heap-state.d.ts","sourceRoot":"","sources":["../src/heap-state.ts"],"names":[],"mappings":"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"}
|
package/dist/heap-state.js
CHANGED
|
@@ -42,9 +42,76 @@ function instrumentSnapshot(snapshot) {
|
|
|
42
42
|
// don't take an explicit snapshot argument.
|
|
43
43
|
const loaded = new Map();
|
|
44
44
|
let currentHandle = null;
|
|
45
|
+
// Monotonic access stamp per handle, for LRU eviction under memory pressure.
|
|
46
|
+
// A counter rather than a clock: two snapshots can be touched inside the same
|
|
47
|
+
// millisecond, and only the ORDER matters here.
|
|
48
|
+
const lastUsed = new Map();
|
|
49
|
+
let useCounter = 0;
|
|
50
|
+
function touch(handle) {
|
|
51
|
+
if (handle != null)
|
|
52
|
+
lastUsed.set(handle, ++useCounter);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Drop the least-recently-used resident snapshot, never the current one.
|
|
56
|
+
* Returns its metadata, or null when there is nothing else to evict.
|
|
57
|
+
*
|
|
58
|
+
* Used by the loader's memory-headroom guard: with `keep_previous`, several
|
|
59
|
+
* full graphs stay resident, and the load that tips the process over is the one
|
|
60
|
+
* that dies — taking every resident snapshot with it. Evicting the coldest one
|
|
61
|
+
* first turns an OOM crash into a slower session.
|
|
62
|
+
*/
|
|
63
|
+
export function evictLeastRecentlyUsed() {
|
|
64
|
+
let victim = null;
|
|
65
|
+
let victimStamp = Infinity;
|
|
66
|
+
for (const handle of loaded.keys()) {
|
|
67
|
+
if (handle === currentHandle)
|
|
68
|
+
continue;
|
|
69
|
+
const stamp = lastUsed.get(handle) ?? 0;
|
|
70
|
+
if (stamp < victimStamp) {
|
|
71
|
+
victimStamp = stamp;
|
|
72
|
+
victim = handle;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (victim == null)
|
|
76
|
+
return null;
|
|
77
|
+
const meta = loaded.get(victim)?.metadata ?? null;
|
|
78
|
+
loaded.delete(victim);
|
|
79
|
+
lastUsed.delete(victim);
|
|
80
|
+
dropEvalScratch(victim);
|
|
81
|
+
return meta;
|
|
82
|
+
}
|
|
83
|
+
// Per-snapshot scratch space for memlab_eval sessions: lets a custom script
|
|
84
|
+
// build an index once (e.g. class/typename → ids) and reuse it across
|
|
85
|
+
// subsequent eval calls instead of re-scanning millions of nodes every time.
|
|
86
|
+
// Keyed by handle so switching snapshots never crosses the streams; dropped
|
|
87
|
+
// when the snapshot is replaced/unloaded so a stale index can't outlive its
|
|
88
|
+
// snapshot.
|
|
89
|
+
const evalScratch = new Map();
|
|
90
|
+
/**
|
|
91
|
+
* Returns the mutable scratch object for the current snapshot, creating it on
|
|
92
|
+
* first use. Node ids and any derived index are only valid for the snapshot they
|
|
93
|
+
* were built from, so the scratch is keyed to the active handle.
|
|
94
|
+
*/
|
|
95
|
+
export function getEvalScratch() {
|
|
96
|
+
const key = currentHandle ?? '__none__';
|
|
97
|
+
let s = evalScratch.get(key);
|
|
98
|
+
if (!s) {
|
|
99
|
+
s = {};
|
|
100
|
+
evalScratch.set(key, s);
|
|
101
|
+
}
|
|
102
|
+
return s;
|
|
103
|
+
}
|
|
104
|
+
function dropEvalScratch(handle) {
|
|
105
|
+
if (handle == null) {
|
|
106
|
+
evalScratch.clear();
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
evalScratch.delete(handle);
|
|
110
|
+
}
|
|
45
111
|
const sessionConfig = {
|
|
46
|
-
quietHeader:
|
|
112
|
+
quietHeader: true,
|
|
47
113
|
suppressSuggestions: false,
|
|
114
|
+
terse: false,
|
|
48
115
|
};
|
|
49
116
|
// Tracks whether the header has been emitted since the current snapshot was
|
|
50
117
|
// loaded/activated, so `quietHeader` can print it exactly once.
|
|
@@ -58,6 +125,8 @@ export function setSessionConfig(patch) {
|
|
|
58
125
|
if (patch.suppressSuggestions != null) {
|
|
59
126
|
sessionConfig.suppressSuggestions = patch.suppressSuggestions;
|
|
60
127
|
}
|
|
128
|
+
if (patch.terse != null)
|
|
129
|
+
sessionConfig.terse = patch.terse;
|
|
61
130
|
return sessionConfig;
|
|
62
131
|
}
|
|
63
132
|
/**
|
|
@@ -73,6 +142,46 @@ export function shouldEmitHeader() {
|
|
|
73
142
|
headerEmitted = true;
|
|
74
143
|
return true;
|
|
75
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Standing explanatory notes — artifact-family write-ups, capture-mode caveats,
|
|
147
|
+
* "a candidate is not a verdict" — are the same text on every call, and a trend
|
|
148
|
+
* tool gets called many times per investigation (8 times in one measured
|
|
149
|
+
* session). The information is worth stating; restating it is not. Returns true
|
|
150
|
+
* the FIRST time a key is seen in this server process and false thereafter, so
|
|
151
|
+
* a caller can print the long form once and a one-line pointer after that.
|
|
152
|
+
*
|
|
153
|
+
* Session-scoped on purpose, not per-snapshot: the reader is the same agent
|
|
154
|
+
* across snapshots, and re-teaching it the same caveat when it switches rungs is
|
|
155
|
+
* exactly the repetition being removed.
|
|
156
|
+
*/
|
|
157
|
+
const emittedNotes = new Set();
|
|
158
|
+
export function shouldEmitNote(key) {
|
|
159
|
+
if (emittedNotes.has(key))
|
|
160
|
+
return false;
|
|
161
|
+
emittedNotes.add(key);
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
/** True if `key` has already been emitted, without marking it. */
|
|
165
|
+
export function noteAlreadyEmitted(key) {
|
|
166
|
+
return emittedNotes.has(key);
|
|
167
|
+
}
|
|
168
|
+
/** Force the standing notes to print again (used by `repeat_notes`). */
|
|
169
|
+
export function resetEmittedNotes() {
|
|
170
|
+
emittedNotes.clear();
|
|
171
|
+
}
|
|
172
|
+
const savedResults = new Map();
|
|
173
|
+
export function setSavedResult(name, value, handle) {
|
|
174
|
+
savedResults.set(name, { value, handle });
|
|
175
|
+
}
|
|
176
|
+
export function getSavedResult(name) {
|
|
177
|
+
return savedResults.get(name);
|
|
178
|
+
}
|
|
179
|
+
export function listSavedResults() {
|
|
180
|
+
return [...savedResults.entries()].map(([name, r]) => ({
|
|
181
|
+
name,
|
|
182
|
+
handle: r.handle,
|
|
183
|
+
}));
|
|
184
|
+
}
|
|
76
185
|
function uniqueHandle(base) {
|
|
77
186
|
// Sanitize to a short slug, then disambiguate against existing handles.
|
|
78
187
|
const slug = base
|
|
@@ -87,14 +196,42 @@ function uniqueHandle(base) {
|
|
|
87
196
|
i++;
|
|
88
197
|
return `${slug}#${i}`;
|
|
89
198
|
}
|
|
90
|
-
|
|
199
|
+
/**
|
|
200
|
+
* The current snapshot.
|
|
201
|
+
*
|
|
202
|
+
* A LIGHT snapshot (loaded with `light: true`) has no dominator tree, no
|
|
203
|
+
* retained sizes and no shortest-path edges. On such a snapshot `retainedSize`
|
|
204
|
+
* reads 0 and `dominatorNode` / `pathEdge` are absent — which does not throw, it
|
|
205
|
+
* silently produces zeros and empty traces. A tool that reported those as
|
|
206
|
+
* results would be confidently wrong, which is worse than refusing.
|
|
207
|
+
*
|
|
208
|
+
* So light access is DENY-BY-DEFAULT and must be opted into per call site with
|
|
209
|
+
* `{allowLight: true}`, by tools that read only counts, names, types, self
|
|
210
|
+
* sizes, string values or edges. Enforcing it here rather than in the tool
|
|
211
|
+
* wrapper is deliberate: this is the one funnel every tool goes through,
|
|
212
|
+
* including tools dispatched in-process by `memlab_batch`, which bypass the
|
|
213
|
+
* guardrail wrapper entirely.
|
|
214
|
+
*/
|
|
215
|
+
export function getSnapshot(opts) {
|
|
91
216
|
const entry = currentHandle ? loaded.get(currentHandle) : undefined;
|
|
92
217
|
if (!entry) {
|
|
93
218
|
throw new Error('No heap snapshot loaded. Use memlab_load_snapshot first.');
|
|
94
219
|
}
|
|
220
|
+
if (entry.metadata.light && !opts?.allowLight) {
|
|
221
|
+
throw new Error(`Snapshot "${entry.metadata.handle}" was loaded in LIGHT mode, which skips the dominator/retained-size pass — this analysis needs it. ` +
|
|
222
|
+
'Light mode supports count / name / type / self-size / string queries only: memlab_class_histogram (with include_retained_size:false), memlab_search_nodes (without min_retained_size), memlab_search_strings, memlab_string_patterns, plus memlab_snapshot_header and memlab_snapshots, which do not read the graph. ' +
|
|
223
|
+
`Reload for full analysis: memlab_load_snapshot({file_path: "${entry.metadata.filePath}"}).`);
|
|
224
|
+
}
|
|
225
|
+
touch(currentHandle);
|
|
95
226
|
instrumentSnapshot(entry.snapshot);
|
|
96
227
|
return entry.snapshot;
|
|
97
228
|
}
|
|
229
|
+
/** True when the current snapshot was loaded without the dominator pass. */
|
|
230
|
+
export function isLightSnapshot() {
|
|
231
|
+
if (!currentHandle)
|
|
232
|
+
return false;
|
|
233
|
+
return loaded.get(currentHandle)?.metadata.light === true;
|
|
234
|
+
}
|
|
98
235
|
export function getFilePath() {
|
|
99
236
|
if (!currentHandle)
|
|
100
237
|
return null;
|
|
@@ -125,11 +262,18 @@ export function setSnapshot(snapshot, filePath, metadata, opts = {}) {
|
|
|
125
262
|
const replace = opts.replace ?? true;
|
|
126
263
|
if (replace) {
|
|
127
264
|
loaded.clear();
|
|
265
|
+
dropEvalScratch(null);
|
|
128
266
|
}
|
|
129
267
|
const handle = uniqueHandle(opts.alias || metadata.fileName);
|
|
130
|
-
const full = {
|
|
268
|
+
const full = {
|
|
269
|
+
handle,
|
|
270
|
+
filePath,
|
|
271
|
+
...metadata,
|
|
272
|
+
light: metadata.light === true,
|
|
273
|
+
};
|
|
131
274
|
loaded.set(handle, { snapshot, metadata: full });
|
|
132
275
|
currentHandle = handle;
|
|
276
|
+
touch(handle);
|
|
133
277
|
headerEmitted = false;
|
|
134
278
|
return full;
|
|
135
279
|
}
|
|
@@ -144,9 +288,47 @@ export function listSnapshots() {
|
|
|
144
288
|
*/
|
|
145
289
|
export function clearAllSnapshots() {
|
|
146
290
|
loaded.clear();
|
|
291
|
+
lastUsed.clear();
|
|
292
|
+
dropEvalScratch(null);
|
|
147
293
|
currentHandle = null;
|
|
148
294
|
headerEmitted = false;
|
|
149
295
|
}
|
|
296
|
+
/**
|
|
297
|
+
* A resident snapshot loaded from this exact path, if any.
|
|
298
|
+
*
|
|
299
|
+
* The point of a snapshot cache is to not re-parse a file this process already
|
|
300
|
+
* has in memory; that check has to key on the resolved path, since the handle is
|
|
301
|
+
* derived from the file name and may have been disambiguated.
|
|
302
|
+
*/
|
|
303
|
+
export function findResidentByPath(filePath) {
|
|
304
|
+
for (const { metadata } of loaded.values()) {
|
|
305
|
+
if (metadata.filePath === filePath)
|
|
306
|
+
return metadata;
|
|
307
|
+
}
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Drop every resident snapshot except `handle`, which becomes current.
|
|
312
|
+
*
|
|
313
|
+
* Used by the load cache-hit path so a hit is indistinguishable from a real load
|
|
314
|
+
* apart from speed: a replace-mode load unloads the others, and a hit must do
|
|
315
|
+
* the same or the two paths leave different state behind.
|
|
316
|
+
*/
|
|
317
|
+
export function retainOnlySnapshot(handle) {
|
|
318
|
+
if (!loaded.has(handle))
|
|
319
|
+
return false;
|
|
320
|
+
for (const h of [...loaded.keys()]) {
|
|
321
|
+
if (h === handle)
|
|
322
|
+
continue;
|
|
323
|
+
loaded.delete(h);
|
|
324
|
+
lastUsed.delete(h);
|
|
325
|
+
dropEvalScratch(h);
|
|
326
|
+
}
|
|
327
|
+
currentHandle = handle;
|
|
328
|
+
touch(handle);
|
|
329
|
+
headerEmitted = false;
|
|
330
|
+
return true;
|
|
331
|
+
}
|
|
150
332
|
export function getCurrentHandle() {
|
|
151
333
|
return currentHandle;
|
|
152
334
|
}
|
|
@@ -160,15 +342,24 @@ export function setCurrentSnapshot(handle) {
|
|
|
160
342
|
if (!loaded.has(handle))
|
|
161
343
|
return false;
|
|
162
344
|
currentHandle = handle;
|
|
345
|
+
touch(handle);
|
|
163
346
|
headerEmitted = false;
|
|
164
347
|
return true;
|
|
165
348
|
}
|
|
166
349
|
export function removeSnapshot(handle) {
|
|
167
350
|
const existed = loaded.delete(handle);
|
|
351
|
+
if (existed) {
|
|
352
|
+
lastUsed.delete(handle);
|
|
353
|
+
dropEvalScratch(handle);
|
|
354
|
+
}
|
|
168
355
|
if (existed && currentHandle === handle) {
|
|
169
356
|
currentHandle = loaded.size > 0 ? [...loaded.keys()][0] : null;
|
|
170
357
|
headerEmitted = false;
|
|
171
358
|
}
|
|
172
359
|
return existed;
|
|
173
360
|
}
|
|
361
|
+
/** Is the session asking for trimmed, decision-only output? */
|
|
362
|
+
export function isTerse() {
|
|
363
|
+
return sessionConfig.terse;
|
|
364
|
+
}
|
|
174
365
|
//# sourceMappingURL=heap-state.js.map
|
package/dist/heap-state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heap-state.js","sourceRoot":"","sources":["../src/heap-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAIlD,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,iFAAiF;AACjF,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAE3C,SAAS,mBAAmB,CAAC,UAAmB,EAAE,OAAiB;IACjE,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO;IAC1D,MAAM,CAAC,GAAG,UAAqC,CAAC;IAChD,IAAI,CAAC,CAAC,YAAY,CAAC;QAAE,OAAO;IAC5B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE,SAAS;QACvC,MAAM,IAAI,GAAI,EAAoD,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAgC,EAAE,EAAE,CAC1C,IAAI,CAAC,CAAC,GAAG,IAAe,EAAE,EAAE;YAC1B,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAuB;IACjD,MAAM,CAAC,GAAG,QAAyD,CAAC;IACpE,mBAAmB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC9D,mBAAmB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,CAAC;
|
|
1
|
+
{"version":3,"file":"heap-state.js","sourceRoot":"","sources":["../src/heap-state.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -55,6 +55,7 @@ import { registerReferrerSummary } from './tools/referrer-summary.js';
|
|
|
55
55
|
import { registerEventListenerLeaks } from './tools/event-listener-leaks.js';
|
|
56
56
|
import { registerFindByShape } from './tools/find-by-shape.js';
|
|
57
57
|
import { registerWeakMapEntries } from './tools/weakmap-entries.js';
|
|
58
|
+
import { registerMapEntries } from './tools/map-entries.js';
|
|
58
59
|
import { registerGetValue } from './tools/get-value.js';
|
|
59
60
|
import { registerGetString } from './tools/get-string.js';
|
|
60
61
|
import { registerSearchStrings } from './tools/search-strings.js';
|
|
@@ -67,10 +68,60 @@ import { registerGrowthSignals } from './tools/growth-signals.js';
|
|
|
67
68
|
import { registerServerStatus } from './tools/server-status.js';
|
|
68
69
|
import { registerDevArtifacts } from './tools/dev-artifacts.js';
|
|
69
70
|
import { registerSequenceAnalysis } from './tools/sequence-analysis.js';
|
|
71
|
+
import { registerLadderProbe } from './tools/ladder-probe.js';
|
|
72
|
+
import { registerCensusDiff } from './tools/census-diff.js';
|
|
73
|
+
import { registerArtifactBudget } from './tools/artifact-budget.js';
|
|
74
|
+
import { registerLeakReport } from './tools/leak-report.js';
|
|
75
|
+
import { registerMatchObject } from './tools/match-object.js';
|
|
76
|
+
import { registerExplainDelta } from './tools/explain-delta.js';
|
|
77
|
+
import { registerHypothesis } from './tools/hypothesis.js';
|
|
78
|
+
import { registerLadder } from './tools/ladder.js';
|
|
79
|
+
import { registerFindingIndex } from './tools/finding-index.js';
|
|
80
|
+
import { registerAppHeap } from './tools/app-heap.js';
|
|
81
|
+
import { registerHuntReport } from './tools/hunt-report.js';
|
|
70
82
|
import { registerEventRegistry } from './tools/event-registry.js';
|
|
83
|
+
import { registerChainWalk } from './tools/chain-walk.js';
|
|
84
|
+
import { registerPopulationVsOwners } from './tools/population-vs-owners.js';
|
|
85
|
+
import { registerDominatorChain } from './tools/dominator-chain.js';
|
|
86
|
+
import { registerDuplicateObjects } from './tools/duplicate-objects.js';
|
|
87
|
+
import { registerRetainerLayers } from './tools/retainer-layers.js';
|
|
88
|
+
import { registerBatch } from './tools/batch.js';
|
|
89
|
+
import { registerPopulationDiff } from './tools/population-diff.js';
|
|
90
|
+
import { registerDominatorAttribution } from './tools/dominator-attribution.js';
|
|
91
|
+
import { registerCollectionTrend } from './tools/collection-trend.js';
|
|
92
|
+
import { registerCollectionDiff } from './tools/collection-diff.js';
|
|
93
|
+
import { registerModuleAttribution } from './tools/module-attribution.js';
|
|
94
|
+
import { registerScriptCensus } from './tools/script-census.js';
|
|
95
|
+
import { registerAsyncCensus } from './tools/async-census.js';
|
|
96
|
+
import { registerWeakRefCensus } from './tools/weakref-census.js';
|
|
97
|
+
import { registerPropertyNames } from './tools/property-names.js';
|
|
98
|
+
import { registerVerifyFix } from './tools/verify-fix.js';
|
|
99
|
+
import { registerToolsIndex } from './tools/tools-index.js';
|
|
100
|
+
import { registerAnalyzeRun } from './tools/analyze-run.js';
|
|
101
|
+
import { registerEvalAcross } from './tools/eval-across.js';
|
|
102
|
+
import { registerSettleCheck } from './tools/settle-check.js';
|
|
103
|
+
import { registerUnitCost } from './tools/unit-cost.js';
|
|
104
|
+
import { registerIdentify } from './tools/identify.js';
|
|
105
|
+
import { registerWhatIf } from './tools/what-if.js';
|
|
106
|
+
import { registerMetric } from './tools/metric.js';
|
|
107
|
+
import { registerTraceAll } from './tools/trace-all.js';
|
|
108
|
+
import { registerRetainerDiff } from './tools/retainer-diff.js';
|
|
109
|
+
import { registerAppConfig } from './tools/app-config.js';
|
|
110
|
+
import { registerIdentityDiff } from './tools/identity-diff.js';
|
|
111
|
+
import { registerNextMeasurement } from './tools/next-measurement.js';
|
|
112
|
+
import { registerReplicate } from './tools/replicate.js';
|
|
113
|
+
import { registerRoundAudit } from './tools/round-audit.js';
|
|
114
|
+
import { registerDomAudit } from './tools/dom-audit.js';
|
|
115
|
+
import { registerSparseElements } from './tools/sparse-elements.js';
|
|
116
|
+
import { registerAnonymizeSnapshot } from './tools/anonymize-snapshot.js';
|
|
117
|
+
import { registerRoundDigest } from './tools/round-digest.js';
|
|
118
|
+
import { registerReactOwners } from './tools/react-owners.js';
|
|
119
|
+
import { registerReactUpdateQueues } from './tools/react-update-queues.js';
|
|
120
|
+
import { registerIdSpaceAudit } from './tools/id-space-audit.js';
|
|
121
|
+
import { SERVER_VERSION } from './server-version.js';
|
|
71
122
|
const server = new McpServer({
|
|
72
123
|
name: 'memlab',
|
|
73
|
-
version:
|
|
124
|
+
version: SERVER_VERSION, // single source: src/server-version.ts
|
|
74
125
|
});
|
|
75
126
|
// Wrap every tool with a wall-clock guardrail (default 90s, override per-call
|
|
76
127
|
// with timeout_ms or globally with MEMLAB_ANALYSIS_TIMEOUT_MS). Must run before
|
|
@@ -113,6 +164,7 @@ registerReferrerSummary(server);
|
|
|
113
164
|
registerEventListenerLeaks(server);
|
|
114
165
|
registerFindByShape(server);
|
|
115
166
|
registerWeakMapEntries(server);
|
|
167
|
+
registerMapEntries(server);
|
|
116
168
|
registerGetValue(server);
|
|
117
169
|
registerGetString(server);
|
|
118
170
|
registerSearchStrings(server);
|
|
@@ -127,7 +179,56 @@ registerGrowthSignals(server);
|
|
|
127
179
|
registerServerStatus(server);
|
|
128
180
|
registerDevArtifacts(server);
|
|
129
181
|
registerSequenceAnalysis(server);
|
|
182
|
+
registerLadderProbe(server);
|
|
183
|
+
registerCensusDiff(server);
|
|
184
|
+
registerArtifactBudget(server);
|
|
185
|
+
registerLeakReport(server);
|
|
186
|
+
registerMatchObject(server);
|
|
187
|
+
registerExplainDelta(server);
|
|
188
|
+
registerHypothesis(server);
|
|
189
|
+
registerLadder(server);
|
|
190
|
+
registerFindingIndex(server);
|
|
191
|
+
registerAppHeap(server);
|
|
192
|
+
registerHuntReport(server);
|
|
130
193
|
registerEventRegistry(server);
|
|
194
|
+
registerChainWalk(server);
|
|
195
|
+
registerPopulationVsOwners(server);
|
|
196
|
+
registerDominatorChain(server);
|
|
197
|
+
registerDuplicateObjects(server);
|
|
198
|
+
registerRetainerLayers(server);
|
|
199
|
+
registerBatch(server);
|
|
200
|
+
registerPopulationDiff(server);
|
|
201
|
+
registerDominatorAttribution(server);
|
|
202
|
+
registerCollectionTrend(server);
|
|
203
|
+
registerCollectionDiff(server);
|
|
204
|
+
registerModuleAttribution(server);
|
|
205
|
+
registerScriptCensus(server);
|
|
206
|
+
registerAsyncCensus(server);
|
|
207
|
+
registerWeakRefCensus(server);
|
|
208
|
+
registerPropertyNames(server);
|
|
209
|
+
registerVerifyFix(server);
|
|
210
|
+
registerToolsIndex(server);
|
|
211
|
+
registerAnalyzeRun(server);
|
|
212
|
+
registerEvalAcross(server);
|
|
213
|
+
registerSettleCheck(server);
|
|
214
|
+
registerUnitCost(server);
|
|
215
|
+
registerIdentify(server);
|
|
216
|
+
registerWhatIf(server);
|
|
217
|
+
registerMetric(server);
|
|
218
|
+
registerTraceAll(server);
|
|
219
|
+
registerRetainerDiff(server);
|
|
220
|
+
registerAppConfig(server);
|
|
221
|
+
registerIdentityDiff(server);
|
|
222
|
+
registerNextMeasurement(server);
|
|
223
|
+
registerReplicate(server);
|
|
224
|
+
registerRoundAudit(server);
|
|
225
|
+
registerDomAudit(server);
|
|
226
|
+
registerSparseElements(server);
|
|
227
|
+
registerAnonymizeSnapshot(server);
|
|
228
|
+
registerRoundDigest(server);
|
|
229
|
+
registerReactOwners(server);
|
|
230
|
+
registerReactUpdateQueues(server);
|
|
231
|
+
registerIdSpaceAudit(server);
|
|
131
232
|
async function main() {
|
|
132
233
|
const transport = new StdioServerTransport();
|
|
133
234
|
await server.connect(transport);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAC,oBAAoB,EAAC,MAAM,2CAA2C,CAAC;AAC/E,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,MAAM,EAAC,MAAM,EAAE,aAAa,EAAC,GAAG,UAAU,CAAC;AAC3C,OAAO,EAAC,wBAAwB,EAAC,MAAM,gBAAgB,CAAC;AAExD,qEAAqE;AACrE,qEAAqE;AACrE,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;AAE3C,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAC,wBAAwB,EAAC,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,yBAAyB,EAAC,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAC,wBAAwB,EAAC,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,wBAAwB,EAAC,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAC,yBAAyB,EAAC,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,0BAA0B,EAAC,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,2BAA2B,EAAC,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAC,2BAA2B,EAAC,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAC,4BAA4B,EAAC,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,wBAAwB,EAAC,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,0BAA0B,EAAC,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,wBAAwB,EAAC,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,4BAA4B,EAAC,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,yBAAyB,EAAC,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,yBAAyB,EAAC,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,yBAAyB,EAAC,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,cAAc,EAAE,uCAAuC;CACjE,CAAC,CAAC;AAEH,8EAA8E;AAC9E,gFAAgF;AAChF,0DAA0D;AAC1D,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAEjC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,eAAe,CAAC,MAAM,CAAC,CAAC;AACxB,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAClC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAClC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,eAAe,CAAC,MAAM,CAAC,CAAC;AACxB,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACnC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzB,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,YAAY,CAAC,MAAM,CAAC,CAAC;AACrB,eAAe,CAAC,MAAM,CAAC,CAAC;AACxB,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACpC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACpC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACrC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,cAAc,CAAC,MAAM,CAAC,CAAC;AACvB,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,eAAe,CAAC,MAAM,CAAC,CAAC;AACxB,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACnC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,aAAa,CAAC,MAAM,CAAC,CAAC;AACtB,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACrC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAClC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzB,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzB,cAAc,CAAC,MAAM,CAAC,CAAC;AACvB,cAAc,CAAC,MAAM,CAAC,CAAC;AACvB,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzB,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzB,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAClC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAClC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAE7B,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
export interface ProgressReporter {
|
|
11
|
+
/**
|
|
12
|
+
* Report entry into a phase. `step` is 1-based and `total` is the expected
|
|
13
|
+
* number of phases, so a host can render a determinate bar.
|
|
14
|
+
*/
|
|
15
|
+
phase(step: number, total: number, message: string): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Build a reporter from a tool handler's `extra` argument.
|
|
19
|
+
*
|
|
20
|
+
* Tolerates a missing or empty `extra`: tools dispatched in-process by
|
|
21
|
+
* `memlab_batch` are called with `{}`, and a reporter that threw there would
|
|
22
|
+
* turn a progress nicety into a batch-wide failure.
|
|
23
|
+
*/
|
|
24
|
+
export declare function makeProgressReporter(extra: unknown, label: string): ProgressReporter;
|
|
25
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqCH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3D;AASD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAsBlB"}
|