@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
|
@@ -9,7 +9,11 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { z } from 'zod';
|
|
11
11
|
import { getSnapshot, getSnapshotMetadata, getSessionConfig, } from '../heap-state.js';
|
|
12
|
+
import { withAnonymizedBanner } from '../anonymized-snapshot.js';
|
|
12
13
|
import { formatBytes, formatNumber, markdownTable, errorResult, toolResult, } from '../utils.js';
|
|
14
|
+
import { collectDevRoots, computeReachableWithoutDevRoots, } from './dev-artifacts.js';
|
|
15
|
+
import { buildStringIndex } from '../string-index.js';
|
|
16
|
+
import { classifyNonProductionString, isHarnessToolManifestShape, } from '../artifact-classes.js';
|
|
13
17
|
// V8 splits a single logical object's storage across several internal backing
|
|
14
18
|
// structures: a `system / PropertyArray` (named props once the object grows past
|
|
15
19
|
// the inline slot count), `(object properties)` / `(object elements)` arrays, and
|
|
@@ -150,7 +154,7 @@ function isFrameworkOwned(propertyName, parentShape, parentShapeProps) {
|
|
|
150
154
|
export function registerInternOpportunities(server) {
|
|
151
155
|
server.tool('memlab_intern_opportunities', 'Identify string interning opportunities by grouping duplicated strings by the property name and parent object shape that holds them. Shows total savings per (property × shape) combination — the key metric for deciding where to add a string interning pool. Also surfaces ARRAY-ELEMENT / columnar duplication (strings held as elements of a rowsAsArray / string[][] result buffer — a common Nest mysql2/Drizzle shape) as first-class groups keyed by column index and array-owner shape, folded into the within-load headline; these are marked with a filled square and fixed by interning at the array-construction/parse site. The within-load figure is split at the canonical 128-char intern cap into cappable (<=128 chars, what the recommended fix reclaims) vs over-cap (longer strings the cap skips), so the headline matches what a compliant fix actually reclaims. Replaces the manual workflow of: duplicated_strings → retainer_summary → codebase grep. ' +
|
|
152
156
|
'Retention-aware: flags groups whose duplicated instances are ALSO held by another structure (e.g. a raw array/matrix) as "co-retained" — interning the property there reclaims ~0, so the savings are reported separately and you must dedupe the shared source instead. ' +
|
|
153
|
-
'The headline "within-load capturable" figure also excludes framework/infra-owned strings (HTTP headers, cookies, auth tokens, Next.js URL/cache context) and low-ROI groups (high-cardinality + long strings, where the intern pool costs more than it saves), reporting each in its own bucket; and it flags concatenated-string (rope) buildup, which is accumulation rather than duplication and cannot be interned. ' +
|
|
157
|
+
'The headline "within-load capturable" figure also excludes framework/infra-owned strings (HTTP headers, cookies, auth tokens, Next.js URL/cache context), measurement-harness content (the CDP/devtools bridge injected to drive the session — an injected bundle can be the single largest "opportunity" in a driven snapshot while reclaiming nothing in production), and low-ROI groups (high-cardinality + long strings, where the intern pool costs more than it saves), reporting each in its own bucket; and it flags concatenated-string (rope) buildup, which is accumulation rather than duplication and cannot be interned. ' +
|
|
154
158
|
'⚠ Full-heap scan (builds string-duplication groups) — slow and memory-heavy on very large heaps (millions of nodes); raise min_copies / min_savings to bound it.', {
|
|
155
159
|
limit: z
|
|
156
160
|
.number()
|
|
@@ -177,45 +181,35 @@ export function registerInternOpportunities(server) {
|
|
|
177
181
|
const snapshot = getSnapshot();
|
|
178
182
|
const meta = getSnapshotMetadata();
|
|
179
183
|
const totalSize = meta?.totalSize ?? 0;
|
|
180
|
-
// Step 1:
|
|
181
|
-
|
|
182
|
-
//
|
|
183
|
-
//
|
|
184
|
-
//
|
|
185
|
-
//
|
|
186
|
-
//
|
|
187
|
-
//
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
entry.count++;
|
|
206
|
-
entry.totalSize += node.retainedSize;
|
|
207
|
-
if (entry.exampleIds.length < 20) {
|
|
208
|
-
entry.exampleIds.push(node.id);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
stringMap.set(value, {
|
|
213
|
-
count: 1,
|
|
214
|
-
totalSize: node.retainedSize,
|
|
215
|
-
exampleIds: [node.id],
|
|
216
|
-
});
|
|
217
|
-
}
|
|
184
|
+
// Step 1: per-value string duplication index.
|
|
185
|
+
//
|
|
186
|
+
// Shared with memlab_duplicated_strings and cached per snapshot, so the
|
|
187
|
+
// two tools (routinely run back to back) walk the string nodes once
|
|
188
|
+
// between them rather than once each. The dev-root reachability pass is
|
|
189
|
+
// requested here because only this tool needs it: strings retained ONLY
|
|
190
|
+
// through a dev/automation root — overwhelmingly the attached
|
|
191
|
+
// inspector's console holding dev-build log records — cannot be
|
|
192
|
+
// reclaimed by an intern pool in production, and counting them inflates
|
|
193
|
+
// the headline saving.
|
|
194
|
+
//
|
|
195
|
+
// `(concatenated string)` (cons/rope) nodes are counted by the same
|
|
196
|
+
// index: a heap dominated by them is string ACCUMULATION (repeated `+=`
|
|
197
|
+
// / join into a long-lived buffer), NOT value duplication, and
|
|
198
|
+
// interning cannot help. Flagging the pattern beats reporting a tiny
|
|
199
|
+
// interning win against it. (Feedback round 7 §4.)
|
|
200
|
+
const devRoots = collectDevRoots(snapshot);
|
|
201
|
+
const productionReachable = devRoots.byId.size > 0
|
|
202
|
+
? computeReachableWithoutDevRoots(snapshot, devRoots)
|
|
203
|
+
: null;
|
|
204
|
+
const isDevOnlyNode = (node) => productionReachable != null &&
|
|
205
|
+
productionReachable[node.nodeIndex] === 0;
|
|
206
|
+
const stringIndex = buildStringIndex(snapshot, {
|
|
207
|
+
withDevOnly: true,
|
|
208
|
+
isDevOnlyNode,
|
|
218
209
|
});
|
|
210
|
+
const stringMap = stringIndex.byValue;
|
|
211
|
+
const concatStringCount = stringIndex.concatStringCount;
|
|
212
|
+
const concatStringSize = stringIndex.concatStringSize;
|
|
219
213
|
// Step 2: For duplicated strings, sample referrers to get property × shape
|
|
220
214
|
const groupMap = new Map();
|
|
221
215
|
for (const [value, stats] of stringMap) {
|
|
@@ -383,6 +377,8 @@ export function registerInternOpportunities(server) {
|
|
|
383
377
|
const scaleFactor = stats.count / samplesProcessed;
|
|
384
378
|
const trueCount = Math.round(dist.sampledCount * scaleFactor);
|
|
385
379
|
const trueSize = stats.totalSize * (dist.sampledCount / samplesProcessed);
|
|
380
|
+
const devOnlyShare = stats.count > 0 ? stats.devOnlyCount / stats.count : 0;
|
|
381
|
+
const trueDevOnly = trueCount * devOnlyShare;
|
|
386
382
|
const existing = groupMap.get(groupKey);
|
|
387
383
|
if (existing) {
|
|
388
384
|
const strEntry = existing.strings.get(value);
|
|
@@ -398,6 +394,7 @@ export function registerInternOpportunities(server) {
|
|
|
398
394
|
}
|
|
399
395
|
existing.totalCopies += trueCount;
|
|
400
396
|
existing.totalSize += trueSize;
|
|
397
|
+
existing.devOnlyCopies += trueDevOnly;
|
|
401
398
|
existing.groupSamples += dist.sampledCount;
|
|
402
399
|
existing.coRetainedSamples += dist.coRetainedCount;
|
|
403
400
|
if (!existing.coRetainedVia && dist.coRetainedVia) {
|
|
@@ -419,6 +416,7 @@ export function registerInternOpportunities(server) {
|
|
|
419
416
|
strings: new Map([[value, { count: trueCount, size: trueSize }]]),
|
|
420
417
|
totalCopies: trueCount,
|
|
421
418
|
totalSize: trueSize,
|
|
419
|
+
devOnlyCopies: trueDevOnly,
|
|
422
420
|
exampleParentId: dist.parentId,
|
|
423
421
|
groupSamples: dist.sampledCount,
|
|
424
422
|
coRetainedSamples: dist.coRetainedCount,
|
|
@@ -436,6 +434,12 @@ export function registerInternOpportunities(server) {
|
|
|
436
434
|
let savingsIfInterned = 0;
|
|
437
435
|
let savingsCappable = 0;
|
|
438
436
|
let savingsOverCap = 0;
|
|
437
|
+
// Savings attributable to harness-injected string CONTENT. Compared
|
|
438
|
+
// against savingsIfInterned below rather than tripping on the first
|
|
439
|
+
// match, so one stray bridge string in an otherwise-app group does
|
|
440
|
+
// not relabel the whole group.
|
|
441
|
+
let savingsHarness = 0;
|
|
442
|
+
let harnessWhat;
|
|
439
443
|
const topStrings = [];
|
|
440
444
|
for (const [value, strStats] of g.strings) {
|
|
441
445
|
if (strStats.count > 1) {
|
|
@@ -448,6 +452,16 @@ export function registerInternOpportunities(server) {
|
|
|
448
452
|
savingsCappable += s;
|
|
449
453
|
else
|
|
450
454
|
savingsOverCap += s;
|
|
455
|
+
const nonProd = classifyNonProductionString(value);
|
|
456
|
+
if (nonProd != null) {
|
|
457
|
+
savingsHarness += s;
|
|
458
|
+
if (!harnessWhat) {
|
|
459
|
+
harnessWhat =
|
|
460
|
+
nonProd.kind === 'dev-build'
|
|
461
|
+
? `${nonProd.what} — DEV build only, absent in production`
|
|
462
|
+
: nonProd.what;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
451
465
|
}
|
|
452
466
|
topStrings.push({
|
|
453
467
|
value,
|
|
@@ -462,6 +476,16 @@ export function registerInternOpportunities(server) {
|
|
|
462
476
|
// another structure — interning the property alone reclaims ~0.
|
|
463
477
|
const coRetained = g.coRetainedSamples > 0 &&
|
|
464
478
|
g.coRetainedSamples >= g.groupSamples * 0.5;
|
|
479
|
+
// Harness by CONTENT (majority of the group's savings sits in
|
|
480
|
+
// bridge-injected strings) or by SHAPE (the parent is one of the
|
|
481
|
+
// bridge's tool-manifest entries, whose long `.description` strings a
|
|
482
|
+
// per-load pool would happily "save"). The shape test is what catches
|
|
483
|
+
// the manifest — its descriptions are ordinary English and no content
|
|
484
|
+
// signature can distinguish them from app copy.
|
|
485
|
+
const harnessShape = isHarnessToolManifestShape(g.parentShapeProps);
|
|
486
|
+
const harness = harnessShape ||
|
|
487
|
+
(savingsIfInterned > 0 &&
|
|
488
|
+
savingsHarness >= savingsIfInterned * 0.5);
|
|
465
489
|
groups.push({
|
|
466
490
|
propertyName: g.propertyName,
|
|
467
491
|
parentShape: g.parentShapeKey,
|
|
@@ -479,6 +503,15 @@ export function registerInternOpportunities(server) {
|
|
|
479
503
|
coRetainedVia: coRetained ? g.coRetainedVia : undefined,
|
|
480
504
|
lowRoi: isLowRoiGroup(g.strings.size, g.totalCopies, g.totalSize),
|
|
481
505
|
frameworkOwned: isFrameworkOwned(g.propertyName, g.parentShapeKey, g.parentShapeProps),
|
|
506
|
+
// Majority-dev-only rather than any-dev-only: a group can legitimately
|
|
507
|
+
// mix a few console-held copies with real app data, and only a group
|
|
508
|
+
// that is essentially all inspector-held should leave the headline.
|
|
509
|
+
devOnly: g.totalCopies > 0 && g.devOnlyCopies / g.totalCopies >= 0.8,
|
|
510
|
+
harness,
|
|
511
|
+
harnessWhat: harness
|
|
512
|
+
? (harnessWhat ??
|
|
513
|
+
'automation/devtools bridge tool manifest (.description strings)')
|
|
514
|
+
: undefined,
|
|
482
515
|
});
|
|
483
516
|
}
|
|
484
517
|
groups.sort((a, b) => b.savingsIfInterned - a.savingsIfInterned);
|
|
@@ -513,7 +546,7 @@ export function registerInternOpportunities(server) {
|
|
|
513
546
|
.join('\n');
|
|
514
547
|
msg += `\n\n⚠ However, ${formatNumber(arrayDupes.length)} value(s) are heavily duplicated (~${formatBytes(totalDup)} total) but were NOT surfaced as property groups above. This is expected when they are held as ARRAY ELEMENTS / columnar rows (e.g. a string[][] query-result buffer) rather than object properties — but it can also happen when their property groups fell below the min_copies / min_savings thresholds. If they are array elements, interning at the array-construction (parse) site collapses them; if they are properties, lower the thresholds to surface the group. Top:\n${top}\nUse memlab_search_strings to locate where each is built and confirm how it is held.`;
|
|
515
548
|
}
|
|
516
|
-
return toolResult(msg);
|
|
549
|
+
return toolResult(withAnonymizedBanner(snapshot, msg));
|
|
517
550
|
}
|
|
518
551
|
// Detect partial interning patterns (Feedback #3) and, while we're here,
|
|
519
552
|
// mark which groups' savings are CROSS-load (not capturable by a per-load
|
|
@@ -563,6 +596,15 @@ export function registerInternOpportunities(server) {
|
|
|
563
596
|
// is retention-then-ROI; every non-`within` bucket is excluded from the
|
|
564
597
|
// within-load headline regardless of which one a group lands in.
|
|
565
598
|
const bucketOf = (g) => {
|
|
599
|
+
// Checked before everything else: harness content is not the
|
|
600
|
+
// application's memory at all — it is the rig injected to observe it —
|
|
601
|
+
// so no other classification of it is meaningful.
|
|
602
|
+
if (g.harness)
|
|
603
|
+
return 'harness';
|
|
604
|
+
// Retention through a dev root means interning reclaims nothing in
|
|
605
|
+
// production, whatever the property is named.
|
|
606
|
+
if (g.devOnly)
|
|
607
|
+
return 'devOnly';
|
|
566
608
|
if (g.frameworkOwned)
|
|
567
609
|
return 'framework';
|
|
568
610
|
if (g.coRetained)
|
|
@@ -579,7 +621,9 @@ export function registerInternOpportunities(server) {
|
|
|
579
621
|
const coRetainedSavings = sumBucket('coRetained');
|
|
580
622
|
const crossLoadSavings = sumBucket('crossLoad');
|
|
581
623
|
const frameworkSavings = sumBucket('framework');
|
|
624
|
+
const devOnlySavings = sumBucket('devOnly');
|
|
582
625
|
const lowRoiSavings = sumBucket('lowRoi');
|
|
626
|
+
const harnessSavings = sumBucket('harness');
|
|
583
627
|
const withinLoadSavings = sumBucket('within');
|
|
584
628
|
// Within the capturable bucket, split by the canonical 128-char cap so the
|
|
585
629
|
// headline reports what a COMPLIANT fix reclaims, not the raw total that
|
|
@@ -600,7 +644,9 @@ export function registerInternOpportunities(server) {
|
|
|
600
644
|
crossLoadSavings +
|
|
601
645
|
coRetainedSavings +
|
|
602
646
|
frameworkSavings +
|
|
603
|
-
|
|
647
|
+
devOnlySavings +
|
|
648
|
+
lowRoiSavings +
|
|
649
|
+
harnessSavings;
|
|
604
650
|
const pctOf = (n) => totalSize > 0
|
|
605
651
|
? ` (${((n / totalSize) * 100).toFixed(1)}% of heap)`
|
|
606
652
|
: '';
|
|
@@ -642,7 +688,7 @@ export function registerInternOpportunities(server) {
|
|
|
642
688
|
// produce a malformed label, so only prefix `.` for named properties.
|
|
643
689
|
const label = g.arrayElement ? g.propertyName : `.${g.propertyName}`;
|
|
644
690
|
return [
|
|
645
|
-
`${label}${g.arrayElement ? ' ▦' : ''}${g.coRetained ? ' ⚠' : ''}${g.crossLoad ? ' ⤫' : ''}${g.frameworkOwned ? ' ▤' : ''}${g.lowRoi ? ' ▽' : ''}`,
|
|
691
|
+
`${label}${g.arrayElement ? ' ▦' : ''}${g.coRetained ? ' ⚠' : ''}${g.crossLoad ? ' ⤫' : ''}${g.devOnly ? ' 🛠' : ''}${g.harness ? ' 🧪' : ''}${g.frameworkOwned ? ' ▤' : ''}${g.lowRoi ? ' ▽' : ''}`,
|
|
646
692
|
shape,
|
|
647
693
|
formatNumber(g.uniqueStrings),
|
|
648
694
|
formatNumber(g.totalCopies),
|
|
@@ -707,18 +753,21 @@ export function registerInternOpportunities(server) {
|
|
|
707
753
|
coRetainedSavings >= crossLoadSavings &&
|
|
708
754
|
coRetainedSavings >= frameworkSavings &&
|
|
709
755
|
coRetainedSavings >= lowRoiSavings &&
|
|
756
|
+
coRetainedSavings >= harnessSavings &&
|
|
710
757
|
coRetainedSavings > 0) {
|
|
711
758
|
verdict = `Verdict: mostly **co-retained** (${formatBytes(coRetainedSavings)}) — interning the property won't help; dedupe at the shared source.`;
|
|
712
759
|
}
|
|
713
760
|
else if (crossLoadSavings >= withinLoadSavings &&
|
|
714
761
|
crossLoadSavings >= frameworkSavings &&
|
|
715
762
|
crossLoadSavings >= lowRoiSavings &&
|
|
763
|
+
crossLoadSavings >= harnessSavings &&
|
|
716
764
|
crossLoadSavings > 0) {
|
|
717
765
|
verdict = `Verdict: mostly **cross-load** (${formatBytes(crossLoadSavings)}) — a per-request pool won't collapse it; needs a shared/module-scope pool or a retention fix.`;
|
|
718
766
|
}
|
|
719
767
|
else if (withinLoadSavings > 0 &&
|
|
720
768
|
withinLoadSavings >= frameworkSavings &&
|
|
721
|
-
withinLoadSavings >= lowRoiSavings
|
|
769
|
+
withinLoadSavings >= lowRoiSavings &&
|
|
770
|
+
withinLoadSavings >= harnessSavings) {
|
|
722
771
|
// Lead with the ≤128-char cappable figure — the amount the canonical
|
|
723
772
|
// intern fix actually reclaims — not the raw within-load total that also
|
|
724
773
|
// counts over-cap strings the fix skips (feedback §3).
|
|
@@ -730,11 +779,15 @@ export function registerInternOpportunities(server) {
|
|
|
730
779
|
: '';
|
|
731
780
|
verdict = `Verdict: **${formatBytes(withinCappable)} cappable** by the canonical ≤${CANONICAL_CAP_CHARS}-char per-load/per-request intern pool at the parse boundary${capNote}.${columnarNote}`;
|
|
732
781
|
}
|
|
733
|
-
else if (frameworkSavings + lowRoiSavings > 0) {
|
|
734
|
-
// Framework/low-ROI dominate (each ≥ the within-load figure).
|
|
735
|
-
// them so a small capturable remainder isn't mistaken for the
|
|
736
|
-
// but still name that remainder when nonzero so it isn't
|
|
782
|
+
else if (frameworkSavings + lowRoiSavings + harnessSavings > 0) {
|
|
783
|
+
// Framework/low-ROI/harness dominate (each ≥ the within-load figure).
|
|
784
|
+
// Lead with them so a small capturable remainder isn't mistaken for the
|
|
785
|
+
// headline, but still name that remainder when nonzero so it isn't
|
|
786
|
+
// hidden.
|
|
737
787
|
const parts = [];
|
|
788
|
+
if (harnessSavings > 0) {
|
|
789
|
+
parts.push('measurement-harness content (the injected automation/devtools bridge — not application memory)');
|
|
790
|
+
}
|
|
738
791
|
if (frameworkSavings > 0) {
|
|
739
792
|
parts.push('framework/infra-owned (headers/cookies/tokens)');
|
|
740
793
|
}
|
|
@@ -777,6 +830,17 @@ export function registerInternOpportunities(server) {
|
|
|
777
830
|
if (frameworkSavings > 0) {
|
|
778
831
|
headerLines.push(`- **▤ Framework/infra-owned (HTTP headers, cookies, auth tokens, Next.js URL/cache context — not app data; out of scope for an app-level intern pool): ${formatBytes(frameworkSavings)}${pctOf(frameworkSavings)}**`);
|
|
779
832
|
}
|
|
833
|
+
if (devOnlySavings > 0) {
|
|
834
|
+
headerLines.push(`- **🛠 Dev/automation-retained (held only via the attached inspector's console or another dev root — reclaims NOTHING in production; do not chase): ${formatBytes(devOnlySavings)}${pctOf(devOnlySavings)}**`);
|
|
835
|
+
}
|
|
836
|
+
if (harnessSavings > 0) {
|
|
837
|
+
const whats = [
|
|
838
|
+
...new Set(shown
|
|
839
|
+
.filter(g => g.harness && g.harnessWhat)
|
|
840
|
+
.map(g => g.harnessWhat)),
|
|
841
|
+
];
|
|
842
|
+
headerLines.push(`- **🧪 Measurement-harness content (${whats.join('; ')}) — the CDP/devtools bridge injected into the page to drive this session, NOT application memory; interning it reclaims nothing in production: ${formatBytes(harnessSavings)}${pctOf(harnessSavings)}**`);
|
|
843
|
+
}
|
|
780
844
|
if (lowRoiSavings > 0) {
|
|
781
845
|
headerLines.push(`- **▽ Low-ROI (high-cardinality, few repeats + long strings — a per-load pool retains a large unique set for a small collapse; usually skip): ${formatBytes(lowRoiSavings)}${pctOf(lowRoiSavings)}**`);
|
|
782
846
|
}
|
|
@@ -794,9 +858,11 @@ export function registerInternOpportunities(server) {
|
|
|
794
858
|
if (coRetainedGroups.length > 0 ||
|
|
795
859
|
crossLoadSavings > 0 ||
|
|
796
860
|
frameworkSavings > 0 ||
|
|
861
|
+
devOnlySavings > 0 ||
|
|
862
|
+
harnessSavings > 0 ||
|
|
797
863
|
lowRoiSavings > 0 ||
|
|
798
864
|
hasArrayElement) {
|
|
799
|
-
lines.push("▦ = array element (columnar / rowsAsArray — intern at the parse site); ⚠ = co-retained (interning won't reclaim); ⤫ = cross-load (high Dup ×, needs shared pool); ▤ = framework/infra-owned (not app data); ▽ = low-ROI (high-cardinality + long; usually skip).", '');
|
|
865
|
+
lines.push("▦ = array element (columnar / rowsAsArray — intern at the parse site); ⚠ = co-retained (interning won't reclaim); ⤫ = cross-load (high Dup ×, needs shared pool); ▤ = framework/infra-owned (not app data); 🛠 = dev/automation-retained (inspector console — reclaims nothing in production); 🧪 = measurement-harness content (injected automation/devtools bridge — not app memory); ▽ = low-ROI (high-cardinality + long; usually skip).", '');
|
|
800
866
|
}
|
|
801
867
|
// Triage mode: stop after the headline split + ranked table. Drops the
|
|
802
868
|
// per-group string lists, partial-interning detail, and the fix recipe
|
|
@@ -811,7 +877,7 @@ export function registerInternOpportunities(server) {
|
|
|
811
877
|
: g.parentShape;
|
|
812
878
|
lines.push(`- ⚠ \`.${g.propertyName}\` on \`${shape}\` — ${formatBytes(g.savingsIfInterned)} co-retained via **${g.coRetainedVia ?? 'another structure'}**`);
|
|
813
879
|
}
|
|
814
|
-
return toolResult(lines.join('\n'));
|
|
880
|
+
return toolResult(withAnonymizedBanner(snapshot, lines.join('\n')));
|
|
815
881
|
}
|
|
816
882
|
// Co-retained groups: interning the property frees ~0 (Feedback round 4 §1).
|
|
817
883
|
if (coRetainedGroups.length > 0) {
|
|
@@ -860,7 +926,7 @@ export function registerInternOpportunities(server) {
|
|
|
860
926
|
]
|
|
861
927
|
: []));
|
|
862
928
|
}
|
|
863
|
-
return toolResult(lines.join('\n'));
|
|
929
|
+
return toolResult(withAnonymizedBanner(snapshot, lines.join('\n')));
|
|
864
930
|
}
|
|
865
931
|
catch (err) {
|
|
866
932
|
return errorResult(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intern-opportunities.js","sourceRoot":"","sources":["../../src/tools/intern-opportunities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"intern-opportunities.js","sourceRoot":"","sources":["../../src/tools/intern-opportunities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
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
|
+
/**
|
|
12
|
+
* Pull a single number out of whatever the probe returned.
|
|
13
|
+
*
|
|
14
|
+
* `memlab_eval` renders `result` as text, so the value has to be recovered
|
|
15
|
+
* rather than read. A bare number is the documented contract; a one-key object
|
|
16
|
+
* (`{count: 42}`) is accepted because that is what people write by reflex.
|
|
17
|
+
*
|
|
18
|
+
* Anything else is REFUSED rather than guessed. An earlier version fell back to
|
|
19
|
+
* "take the last number in the output", which turned `result = {a: 1, b: 2}`
|
|
20
|
+
* into the value 2 — a plausible series built from the wrong field. A probe
|
|
21
|
+
* that silently measures something other than what was asked is worse than one
|
|
22
|
+
* that errors, because the rate it produces looks exactly as trustworthy as a
|
|
23
|
+
* real one.
|
|
24
|
+
*/
|
|
25
|
+
export declare function extractNumber(text: string): number | null;
|
|
26
|
+
export interface LinearFit {
|
|
27
|
+
slope: number;
|
|
28
|
+
intercept: number;
|
|
29
|
+
r2: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Least-squares fit of value against x.
|
|
33
|
+
*
|
|
34
|
+
* r-squared is the point. "Grew at every step" is a weak claim on four rungs —
|
|
35
|
+
* it is one bit of information and any noisy upward drift satisfies it. A slope
|
|
36
|
+
* with r2 ~= 1.0 says the population is a linear function of interaction count,
|
|
37
|
+
* which is the actual shape of an unbounded per-cycle leak and is what
|
|
38
|
+
* distinguishes it from a cache filling toward a plateau.
|
|
39
|
+
*
|
|
40
|
+
* A perfectly flat series has zero variance to explain; r2 is reported as 1
|
|
41
|
+
* there because "the line explains the data" is true and the alternative (NaN,
|
|
42
|
+
* from 0/0) reads as a failure when the answer is a clean negative.
|
|
43
|
+
*/
|
|
44
|
+
export declare function linearFit(xs: number[], ys: number[]): LinearFit;
|
|
45
|
+
export declare function verdictFor(values: number[], fit: LinearFit): string;
|
|
46
|
+
type ProbeOutcome = {
|
|
47
|
+
value: number | null;
|
|
48
|
+
error: string | null;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Run EVERY metric against one rung, inside a single load of that rung.
|
|
52
|
+
*
|
|
53
|
+
* The load is what costs: a 300 MB capture takes far longer to parse and build
|
|
54
|
+
* dominators for than any probe takes to run against it. Measured usage of this
|
|
55
|
+
* tool is a dozen calls over the same ladder, each asking a one-line question —
|
|
56
|
+
* `helpers.byClass(X).length` — and each re-loading every rung. Batching the
|
|
57
|
+
* metrics collapses that to one pass over the ladder.
|
|
58
|
+
*/
|
|
59
|
+
export declare function probeRung(localPath: string, metrics: Array<{
|
|
60
|
+
name: string;
|
|
61
|
+
code: string;
|
|
62
|
+
}>, timeoutMs: number, maxNodes: number): Promise<Map<string, ProbeOutcome>>;
|
|
63
|
+
export declare function registerLadderProbe(server: McpServer): void;
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=ladder-probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ladder-probe.d.ts","sourceRoot":"","sources":["../../src/tools/ladder-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AA8BvE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2CzD;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAkB/D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAkEnE;AASD,KAAK,YAAY,GAAG;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAC,CAAC;AAEjE;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC,EAC5C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAwCpC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8S3D"}
|