memorydetective 1.14.0 → 1.15.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/CHANGELOG.md +13 -0
- package/README.md +4 -2
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/analyzeEnergyImpact.d.ts +69 -0
- package/dist/tools/analyzeEnergyImpact.js +239 -0
- package/dist/tools/analyzeEnergyImpact.js.map +1 -0
- package/dist/tools/analyzeLeakTimeline.d.ts +75 -0
- package/dist/tools/analyzeLeakTimeline.js +213 -0
- package/dist/tools/analyzeLeakTimeline.js.map +1 -0
- package/dist/tools/analyzeMemoryFootprint.d.ts +72 -0
- package/dist/tools/analyzeMemoryFootprint.js +234 -0
- package/dist/tools/analyzeMemoryFootprint.js.map +1 -0
- package/dist/tools/inspectTrace.js +12 -0
- package/dist/tools/inspectTrace.js.map +1 -1
- package/dist/tools/replayScenario.d.ts +16 -0
- package/dist/tools/replayScenario.js +66 -0
- package/dist/tools/replayScenario.js.map +1 -1
- package/dist/tools/summarizeTrace.d.ts +6 -3
- package/dist/tools/summarizeTrace.js +49 -2
- package/dist/tools/summarizeTrace.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.15.0] - 2026-05-15
|
|
10
|
+
|
|
11
|
+
Schema coverage + verify-fix UX release. v1.14 fixed the trace-side pipeline and shipped network coverage. v1.15 closes the remaining trace schemas the analyzer pipeline didn't cover (memory-footprint, energy-impact, xctrace leaks-as-time-series), folds network into summarizeTrace's synthesis chain, and gives replayScenario the screenshot-per-step capability DebugSwift inspired. 5 items landed across the same day. Suite 626 -> 666 (+40). 40 MCP tools.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **`analyzeMemoryFootprint` MCP tool (38th, `[mg.trace]`).** Parses the `memory-footprint` schema. Returns peak resident bytes (RAM in use), peak dirty bytes (the OOM-kill discriminator on iOS), peak virtual bytes, per-sample timeline. Distinct from `analyzeAllocations` (cumulative malloc bytes by category): this is process-level VM state. The "why is my app getting jetsam-killed?" investigation. Flags peak dirty above 200 MB as approaching jetsam territory on smaller devices. Resilient to column-name drift (resident / resident-bytes / phys / phys-footprint, dirty / private-dirty, etc.). `formatBytes` helper exported.
|
|
16
|
+
- **`analyzeEnergyImpact` MCP tool (39th, `[mg.trace]`).** Parses the `energy-impact` schema. Returns per-sample bucket classification (idle / passive / active / high), aggregate wakeup count, active-state ratio, top-N by energy cost. Distinct from `analyzeTimeProfile` (CPU sampling): this reads the OS power-management subsystem directly. The "why is my app draining battery?" investigation. `normalizeBucket` helper handles xctrace's varying string conventions (idle / Passive / active / HIGH / foreground / background) plus an `unknown` fallback.
|
|
17
|
+
- **`analyzeLeakTimeline` MCP tool (40th, `[mg.trace]`).** Parses the xctrace `leaks` schema (the instrument, distinct from `leaks(1)` CLI snapshot). Returns per-class first-seen-at timestamp, peak instance count, peak bytes, event count. Time-series view that answers "when in the recording did the leak first appear?" which a snapshot cannot. Flags multiple leaking classes as "suggests a shared cause" to nudge the agent toward investigating shared retainers (notification center, KVO global, etc.).
|
|
18
|
+
- **`summarizeTrace` now chains `analyzeNetworkActivity`.** Sixth `buildAreaSummary` runs the new network analyzer in parallel. Markdown card gains a Network section between App launch and Cross-correlations, with a duration / method / status / bytes / URL table plus a top-hosts-by-request-count bullet list. Section is omitted when schema-absent. `buildHeadline` surfaces a slow network request (>= 3000ms) as the headline only when hangs, launch, and hitches are quiet. `focus: "network"` is a new valid enum value on the input.
|
|
19
|
+
- **`replayScenario` captures simulator screenshots per step.** New `screenshotDir?: string` input. When provided, each scenario step writes a PNG to `<screenshotDir>/iteration-{N}_step-{M}.png` via `xcrun simctl io <udid> screenshot`. No `axe` dependency for screenshots. DebugSwift-inspired: their leak detector shows the leaked view, this gives the same context to verify-fix loops. `captureSimulatorScreenshot` helper exported. Failures non-fatal (surfaced on `failures[]`, scenario continues).
|
|
20
|
+
- **`SupportStatusKind` enum extended** with `memory-footprint`, `energy-impact`, `leak-events` to back the three new analyzers.
|
|
21
|
+
|
|
9
22
|
## [1.14.0] - 2026-05-15
|
|
10
23
|
|
|
11
24
|
Trace-side reliability + breadth release. v1.13 shipped `summarizeTrace`, the trace-to-summary-card-in-one-call play. v1.14 fixes two parser bugs that were causing it to return empty results against real Apple-produced traces, expands schema coverage to include hang risks + network activity, robustens the analyzer pipeline against future xctrace schema renames, and adds three opt-in UX paths around the macOS 26.x xctrace wedge regression (pre-flight probe, auto-open Instruments, README callout). Plus FLEX-inspired memgraph size view on `countAlive` and an MLeaksFinder + DebugSwift-inspired whitelist on `verifyFix`. 11 changes landed across one day. Suite 546 -> 626 (+80 tests). 37 MCP tools.
|
package/README.md
CHANGED
|
@@ -17,9 +17,11 @@
|
|
|
17
17
|
- **MCP-native.** Plugs into Claude Code, Claude Desktop, Cursor, Cline, and any other MCP client. The agent drives the full investigate → classify → suggest-fix loop without you opening Instruments.
|
|
18
18
|
- **Honest about its limits.** No mocked outputs, no over-promises. Hangs analysis works clean from `xctrace`; sample-level Time Profile is parsed when `xctrace` symbolicates the trace and returns a structured workaround notice when it can't (the underlying `xctrace` SIGSEGV on heavy unsymbolicated traces is an Apple-side limitation we surface explicitly). Memory Graph capture works on Mac apps and iOS simulator; physical iOS devices still need Xcode.
|
|
19
19
|
|
|
20
|
-
> **What's new in v1.
|
|
20
|
+
> **What's new in v1.15** (2026-05-15): schema coverage + verify-fix UX release. Three new MCP trace tools fill the remaining schema gap: `analyzeMemoryFootprint` (38th, VM resident / dirty / virtual + jetsam diagnosis), `analyzeEnergyImpact` (39th, battery drain investigation via the energy-impact schema), `analyzeLeakTimeline` (40th, xctrace's leaks instrument as a time series with per-class first-seen-at + peakCount). `summarizeTrace` now chains `analyzeNetworkActivity` so the trace-to-summary-card-in-one-call play covers network alongside hangs / hitches / time-profile / allocations / launch. `replayScenario` captures simulator screenshots per step into a configurable directory (DebugSwift-inspired "what was on screen when this happened?" for verify-fix loops). 626 → 666 tests. 40 MCP tools.
|
|
21
21
|
>
|
|
22
|
-
> **Also recent
|
|
22
|
+
> **Also recent (v1.14)**: trace-side reliability release. Fixed two parser bugs against real Apple traces (`inspectTrace` --toc switch, `analyzeTimeProfile` symbol extraction). Added `analyzeNetworkActivity` (37th tool). Extended `analyzeHangs` to read the `hang-risks` schema. Pattern-matching schema discovery refactor across all 5 trace analyzers. Unified `supportStatus[]` surface. Three opt-in UX paths around the macOS 26.x xctrace `--time-limit` regression: 2-second pre-flight probe, auto-open Instruments.app, README + USAGE callout. FLEX-inspired `countAlive` size view. MLeaksFinder + DebugSwift-inspired `verifyFix` whitelist with curated default list.
|
|
23
|
+
>
|
|
24
|
+
> **Earlier**: v1.13 shipped `summarizeTrace` + `/summarize-trace` MCP prompt. v1.12 completed reference-tree propagation across countAlive / findRetainers / verifyFix and added auto cross-schema correlation in analyzeHangs. v1.11 added inspectTrace, diffMemgraphs reference-tree, and CLI abandoned-memory mini-table. v1.10 closed the notelet retro feedback loop. v1.9 shipped analyzeAbandonedMemory, detectLeaksInXCTest, cleanupTraces, mainThreadViolations. Full notes in [CHANGELOG](./CHANGELOG.md).
|
|
23
25
|
|
|
24
26
|
> **Heads up for macOS 26.x users:** Apple shipped a `task_for_pid` kernel regression on macOS 26.x that blocks `leaks --outputGraph`, `heap`, AND `xctrace --template Allocations` against iOS simulator processes regardless of `MallocStackLogging`. Even Xcode's "View Memory Graph Hierarchy" hits it unless `Malloc Stack Logging` is enabled in the scheme's Diagnostics tab. memorydetective surfaces this as a proactive `platformAdvisory` on the first capture-class tool call, plus a `workaroundNotice` with `issue: "macos-26-task-for-pid-broken"` if `leaks` is invoked. **The most reliable workaround today is to target an iOS 18 simulator runtime** (install via Xcode > Settings > Platforms > +iOS 18.x). Empirically validated in the [notelet investigation](https://github.com/carloshpdoc/memorydetective/blob/main/CHANGELOG.md#unreleased) 2026-05-12 where three independent CLI memory-introspection paths all failed before iOS 18 was identified as the working escape hatch. Set `MEMORYDETECTIVE_SUPPRESS_PLATFORM_ADVISORY=1` to silence the notice once you have settled on a workaround.
|
|
25
27
|
|
package/dist/index.js
CHANGED
|
@@ -23,6 +23,9 @@ import { analyzeAnimationHitches, analyzeAnimationHitchesSchema, } from "./tools
|
|
|
23
23
|
import { analyzeAllocations, analyzeAllocationsSchema, } from "./tools/analyzeAllocations.js";
|
|
24
24
|
import { analyzeAppLaunch, analyzeAppLaunchSchema, } from "./tools/analyzeAppLaunch.js";
|
|
25
25
|
import { analyzeNetworkActivity, analyzeNetworkActivitySchema, } from "./tools/analyzeNetworkActivity.js";
|
|
26
|
+
import { analyzeMemoryFootprint, analyzeMemoryFootprintSchema, } from "./tools/analyzeMemoryFootprint.js";
|
|
27
|
+
import { analyzeEnergyImpact, analyzeEnergyImpactSchema, } from "./tools/analyzeEnergyImpact.js";
|
|
28
|
+
import { analyzeLeakTimeline, analyzeLeakTimelineSchema, } from "./tools/analyzeLeakTimeline.js";
|
|
26
29
|
import { renderCycleGraph, renderCycleGraphSchema, } from "./tools/renderCycleGraph.js";
|
|
27
30
|
import { logShow, logShowSchema, logStream, logStreamSchema, } from "./tools/logShow.js";
|
|
28
31
|
import { detectLeaksInXCUITest, detectLeaksInXCUITestSchema, } from "./tools/detectLeaksInXCUITest.js";
|
|
@@ -259,6 +262,30 @@ server.registerTool("analyzeNetworkActivity", {
|
|
|
259
262
|
const result = await analyzeNetworkActivity(input);
|
|
260
263
|
return formatMcpResponse(result, "analyzeNetworkActivity", input.outputFormat);
|
|
261
264
|
});
|
|
265
|
+
server.registerTool("analyzeMemoryFootprint", {
|
|
266
|
+
title: "Analyze process VM footprint (resident / dirty / virtual)",
|
|
267
|
+
description: "[mg.trace] Parse the `memory-footprint` schema from a `.trace` recorded with Allocations or System Trace template. Returns peak resident bytes (RAM in use), peak dirty bytes (the OOM-kill discriminator on iOS), peak VM regions, per-sample timeline. Distinct from analyzeAllocations (cumulative malloc bytes by category). Use when investigating 'why is my app getting jetsam-killed?'. v1.15+.",
|
|
268
|
+
inputSchema: analyzeMemoryFootprintSchema.shape,
|
|
269
|
+
}, async (input) => {
|
|
270
|
+
const result = await analyzeMemoryFootprint(input);
|
|
271
|
+
return formatMcpResponse(result, "analyzeMemoryFootprint", input.outputFormat);
|
|
272
|
+
});
|
|
273
|
+
server.registerTool("analyzeEnergyImpact", {
|
|
274
|
+
title: "Analyze energy use / battery drain from an Energy Log trace",
|
|
275
|
+
description: "[mg.trace] Parse the `energy-impact` schema from a `.trace` recorded with an Energy Log template. Returns per-sample bucket classification (idle / passive / active / high), aggregate wakeup count, active-state ratio, top-N samples by energy cost. The 'why is my app draining battery?' investigation. Distinct from analyzeTimeProfile (CPU sampling); reads the OS power-management subsystem directly. v1.15+.",
|
|
276
|
+
inputSchema: analyzeEnergyImpactSchema.shape,
|
|
277
|
+
}, async (input) => {
|
|
278
|
+
const result = await analyzeEnergyImpact(input);
|
|
279
|
+
return formatMcpResponse(result, "analyzeEnergyImpact", input.outputFormat);
|
|
280
|
+
});
|
|
281
|
+
server.registerTool("analyzeLeakTimeline", {
|
|
282
|
+
title: "Analyze leaks as a time series (xctrace Leaks instrument)",
|
|
283
|
+
description: "[mg.trace] Parse the `leaks` schema from a `.trace` recorded with a Leaks template. Distinct from leaks(1) CLI (snapshot): this is a time series of leak events captured throughout the recording. Returns per-class first-seen-at timestamp, peak instance count, peak bytes, event count. Useful for answering 'when in the timeline did the leak appear?' which the snapshot CLI cannot. v1.15+.",
|
|
284
|
+
inputSchema: analyzeLeakTimelineSchema.shape,
|
|
285
|
+
}, async (input) => {
|
|
286
|
+
const result = await analyzeLeakTimeline(input);
|
|
287
|
+
return formatMcpResponse(result, "analyzeLeakTimeline", input.outputFormat);
|
|
288
|
+
});
|
|
262
289
|
server.registerTool("renderCycleGraph", {
|
|
263
290
|
title: "Render a retain cycle as Mermaid or DOT graph",
|
|
264
291
|
description: "[mg.render] Read a `.memgraph`, pick a ROOT CYCLE by index, and emit the chain as a Mermaid graph definition (default — embeddable in markdown / GitHub) or a Graphviz DOT file. App-level classes are highlighted; CYCLE BACK terminators are styled distinctly. Use `cycleIndex` to render cycles other than the first.",
|
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":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `analyzeEnergyImpact`: parses xctrace's energy-impact schema. v1.15 item D.
|
|
3
|
+
*
|
|
4
|
+
* The "why is my app draining battery?" investigation. iOS's Energy
|
|
5
|
+
* Log buckets samples into idle / passive / active / high categories
|
|
6
|
+
* and counts wakeups. Background apps that keep CPU active for too long
|
|
7
|
+
* burn battery and get throttled by the OS. wearables / location apps /
|
|
8
|
+
* background-fetch users are the typical audience for this analyzer.
|
|
9
|
+
*
|
|
10
|
+
* Distinct from analyzeTimeProfile (CPU sampling) which tells you which
|
|
11
|
+
* functions are hot but not how that maps to power draw. The energy
|
|
12
|
+
* schema is a different sensor: it reads from the OS power-management
|
|
13
|
+
* subsystem directly.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from "zod";
|
|
16
|
+
import type { DataStatus, SupportStatus } from "../types.js";
|
|
17
|
+
export declare const analyzeEnergyImpactSchema: z.ZodObject<{
|
|
18
|
+
tracePath: z.ZodString;
|
|
19
|
+
topN: z.ZodDefault<z.ZodNumber>;
|
|
20
|
+
outputFormat: z.ZodOptional<z.ZodEnum<["markdown", "json", "both", "verify-fix-table"]>>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
tracePath: string;
|
|
23
|
+
topN: number;
|
|
24
|
+
outputFormat?: "markdown" | "json" | "both" | "verify-fix-table" | undefined;
|
|
25
|
+
}, {
|
|
26
|
+
tracePath: string;
|
|
27
|
+
outputFormat?: "markdown" | "json" | "both" | "verify-fix-table" | undefined;
|
|
28
|
+
topN?: number | undefined;
|
|
29
|
+
}>;
|
|
30
|
+
export type AnalyzeEnergyImpactInput = z.infer<typeof analyzeEnergyImpactSchema>;
|
|
31
|
+
export type EnergyBucket = "idle" | "passive" | "active" | "high" | "unknown";
|
|
32
|
+
export interface EnergySample {
|
|
33
|
+
startNs: number;
|
|
34
|
+
startFmt?: string;
|
|
35
|
+
/** Apple's energy bucket classification. */
|
|
36
|
+
bucket: EnergyBucket;
|
|
37
|
+
/** Wakeups per second when present. */
|
|
38
|
+
wakeups?: number;
|
|
39
|
+
/** Raw energy cost score when xctrace exposes one (varies by Xcode version). */
|
|
40
|
+
cost?: number;
|
|
41
|
+
/** Optional sample-level label / event name. */
|
|
42
|
+
label?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface AnalyzeEnergyImpactResult {
|
|
45
|
+
ok: boolean;
|
|
46
|
+
tracePath: string;
|
|
47
|
+
totals: {
|
|
48
|
+
rows: number;
|
|
49
|
+
/** Aggregate wakeups across all samples. */
|
|
50
|
+
totalWakeups: number;
|
|
51
|
+
/** Ratio of samples in `active` + `high` buckets vs total. 0 means fully idle. */
|
|
52
|
+
activeRatio: number;
|
|
53
|
+
/** Per-bucket sample counts. */
|
|
54
|
+
bucketCounts: Record<EnergyBucket, number>;
|
|
55
|
+
};
|
|
56
|
+
/** Top N samples by energy cost desc. */
|
|
57
|
+
topByCost: EnergySample[];
|
|
58
|
+
diagnosis: string;
|
|
59
|
+
/** @deprecated v1.14 item I. Use `supportStatus[]`. */
|
|
60
|
+
status: DataStatus;
|
|
61
|
+
/** v1.14+. Unified per-area status. */
|
|
62
|
+
supportStatus: SupportStatus[];
|
|
63
|
+
}
|
|
64
|
+
/** Normalize whatever string xctrace puts in the bucket column to our
|
|
65
|
+
* canonical enum. v1.15. Exported for testing. */
|
|
66
|
+
export declare function normalizeBucket(raw: string | undefined): EnergyBucket;
|
|
67
|
+
/** Pure: turn the energy-impact XML into the analyzed result. */
|
|
68
|
+
export declare function analyzeEnergyImpactFromXml(xml: string, tracePath: string, topN?: number): AnalyzeEnergyImpactResult;
|
|
69
|
+
export declare function analyzeEnergyImpact(input: AnalyzeEnergyImpactInput): Promise<AnalyzeEnergyImpactResult>;
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `analyzeEnergyImpact`: parses xctrace's energy-impact schema. v1.15 item D.
|
|
3
|
+
*
|
|
4
|
+
* The "why is my app draining battery?" investigation. iOS's Energy
|
|
5
|
+
* Log buckets samples into idle / passive / active / high categories
|
|
6
|
+
* and counts wakeups. Background apps that keep CPU active for too long
|
|
7
|
+
* burn battery and get throttled by the OS. wearables / location apps /
|
|
8
|
+
* background-fetch users are the typical audience for this analyzer.
|
|
9
|
+
*
|
|
10
|
+
* Distinct from analyzeTimeProfile (CPU sampling) which tells you which
|
|
11
|
+
* functions are hot but not how that maps to power draw. The energy
|
|
12
|
+
* schema is a different sensor: it reads from the OS power-management
|
|
13
|
+
* subsystem directly.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from "zod";
|
|
16
|
+
import { existsSync } from "node:fs";
|
|
17
|
+
import { resolve as resolvePath } from "node:path";
|
|
18
|
+
import { runCommand } from "../runtime/exec.js";
|
|
19
|
+
import { fetchDiscoveredSchemas } from "../parsers/schemaDiscovery.js";
|
|
20
|
+
import { parseXctraceXml, asNumber, asFormatted, } from "../parsers/xctraceXml.js";
|
|
21
|
+
import { outputFormatField } from "../runtime/responseFormatter.js";
|
|
22
|
+
export const analyzeEnergyImpactSchema = z.object({
|
|
23
|
+
tracePath: z
|
|
24
|
+
.string()
|
|
25
|
+
.min(1)
|
|
26
|
+
.describe("Absolute path to a `.trace` bundle recorded with an Energy Log template that includes the energy-impact instrument."),
|
|
27
|
+
topN: z
|
|
28
|
+
.number()
|
|
29
|
+
.int()
|
|
30
|
+
.positive()
|
|
31
|
+
.default(10)
|
|
32
|
+
.describe("Return the top N samples ranked by energy cost descending (default 10)."),
|
|
33
|
+
outputFormat: outputFormatField,
|
|
34
|
+
});
|
|
35
|
+
function pickNumber(row, keys) {
|
|
36
|
+
for (const k of keys) {
|
|
37
|
+
const v = asNumber(row[k]);
|
|
38
|
+
if (typeof v === "number" && Number.isFinite(v))
|
|
39
|
+
return v;
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
function pickString(row, keys) {
|
|
44
|
+
for (const k of keys) {
|
|
45
|
+
const v = asFormatted(row[k]);
|
|
46
|
+
if (v && v.trim().length > 0)
|
|
47
|
+
return v.trim();
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
/** Normalize whatever string xctrace puts in the bucket column to our
|
|
52
|
+
* canonical enum. v1.15. Exported for testing. */
|
|
53
|
+
export function normalizeBucket(raw) {
|
|
54
|
+
if (!raw)
|
|
55
|
+
return "unknown";
|
|
56
|
+
const lc = raw.toLowerCase();
|
|
57
|
+
if (lc.includes("idle"))
|
|
58
|
+
return "idle";
|
|
59
|
+
if (lc.includes("high"))
|
|
60
|
+
return "high";
|
|
61
|
+
if (lc.includes("active") || lc.includes("foreground"))
|
|
62
|
+
return "active";
|
|
63
|
+
if (lc.includes("passive") || lc.includes("background"))
|
|
64
|
+
return "passive";
|
|
65
|
+
return "unknown";
|
|
66
|
+
}
|
|
67
|
+
/** Pure: turn the energy-impact XML into the analyzed result. */
|
|
68
|
+
export function analyzeEnergyImpactFromXml(xml, tracePath, topN = 10) {
|
|
69
|
+
const tables = parseXctraceXml(xml);
|
|
70
|
+
const table = tables.find((t) => t.schema === "energy-impact" ||
|
|
71
|
+
/energy-impact/i.test(t.schema) ||
|
|
72
|
+
/power-draw/i.test(t.schema));
|
|
73
|
+
if (!table) {
|
|
74
|
+
return {
|
|
75
|
+
ok: true,
|
|
76
|
+
tracePath,
|
|
77
|
+
totals: {
|
|
78
|
+
rows: 0,
|
|
79
|
+
totalWakeups: 0,
|
|
80
|
+
activeRatio: 0,
|
|
81
|
+
bucketCounts: {
|
|
82
|
+
idle: 0,
|
|
83
|
+
passive: 0,
|
|
84
|
+
active: 0,
|
|
85
|
+
high: 0,
|
|
86
|
+
unknown: 0,
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
topByCost: [],
|
|
90
|
+
diagnosis: "No energy-impact table found in the trace.",
|
|
91
|
+
status: "not_present",
|
|
92
|
+
supportStatus: [
|
|
93
|
+
{
|
|
94
|
+
kind: "energy-impact",
|
|
95
|
+
status: "not_present",
|
|
96
|
+
reason: "Schema absent from the trace TOC.",
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const samples = [];
|
|
102
|
+
for (const row of table.rows) {
|
|
103
|
+
const startNs = pickNumber(row, ["time", "sample-time", "event-time", "start"]) ?? 0;
|
|
104
|
+
const wakeups = pickNumber(row, [
|
|
105
|
+
"wakeups",
|
|
106
|
+
"wakeups-per-sec",
|
|
107
|
+
"wakeups-rate",
|
|
108
|
+
]);
|
|
109
|
+
const cost = pickNumber(row, [
|
|
110
|
+
"cost",
|
|
111
|
+
"energy-cost",
|
|
112
|
+
"energy",
|
|
113
|
+
"power",
|
|
114
|
+
"power-cost",
|
|
115
|
+
]);
|
|
116
|
+
const bucketRaw = pickString(row, [
|
|
117
|
+
"bucket",
|
|
118
|
+
"energy-bucket",
|
|
119
|
+
"category",
|
|
120
|
+
"state",
|
|
121
|
+
]);
|
|
122
|
+
const label = pickString(row, ["label", "event", "event-type"]);
|
|
123
|
+
samples.push({
|
|
124
|
+
startNs,
|
|
125
|
+
...(asFormatted(row.time) ? { startFmt: asFormatted(row.time) } : {}),
|
|
126
|
+
bucket: normalizeBucket(bucketRaw),
|
|
127
|
+
...(wakeups != null ? { wakeups } : {}),
|
|
128
|
+
...(cost != null ? { cost } : {}),
|
|
129
|
+
...(label ? { label } : {}),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
const bucketCounts = {
|
|
133
|
+
idle: 0,
|
|
134
|
+
passive: 0,
|
|
135
|
+
active: 0,
|
|
136
|
+
high: 0,
|
|
137
|
+
unknown: 0,
|
|
138
|
+
};
|
|
139
|
+
let totalWakeups = 0;
|
|
140
|
+
for (const s of samples) {
|
|
141
|
+
bucketCounts[s.bucket] += 1;
|
|
142
|
+
if (s.wakeups != null)
|
|
143
|
+
totalWakeups += s.wakeups;
|
|
144
|
+
}
|
|
145
|
+
const activeRatio = samples.length > 0
|
|
146
|
+
? (bucketCounts.active + bucketCounts.high) / samples.length
|
|
147
|
+
: 0;
|
|
148
|
+
const topByCost = [...samples]
|
|
149
|
+
.sort((a, b) => (b.cost ?? 0) - (a.cost ?? 0))
|
|
150
|
+
.slice(0, topN);
|
|
151
|
+
return {
|
|
152
|
+
ok: true,
|
|
153
|
+
tracePath,
|
|
154
|
+
totals: {
|
|
155
|
+
rows: samples.length,
|
|
156
|
+
totalWakeups,
|
|
157
|
+
activeRatio,
|
|
158
|
+
bucketCounts,
|
|
159
|
+
},
|
|
160
|
+
topByCost,
|
|
161
|
+
diagnosis: buildDiagnosis(samples.length, totalWakeups, activeRatio, bucketCounts),
|
|
162
|
+
status: "available",
|
|
163
|
+
supportStatus: [
|
|
164
|
+
{
|
|
165
|
+
kind: "energy-impact",
|
|
166
|
+
status: "available",
|
|
167
|
+
sourceSchemas: ["energy-impact"],
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
function buildDiagnosis(rows, totalWakeups, activeRatio, bucketCounts) {
|
|
173
|
+
if (rows === 0) {
|
|
174
|
+
return "No energy-impact samples in the recording.";
|
|
175
|
+
}
|
|
176
|
+
const parts = [];
|
|
177
|
+
parts.push(`${rows} energy samples.`);
|
|
178
|
+
if (totalWakeups > 0) {
|
|
179
|
+
parts.push(`${totalWakeups.toLocaleString()} total wakeups.`);
|
|
180
|
+
}
|
|
181
|
+
const activePct = (activeRatio * 100).toFixed(1);
|
|
182
|
+
parts.push(`Active+high: ${activePct}% of samples.`);
|
|
183
|
+
if (bucketCounts.high > 0) {
|
|
184
|
+
parts.push(`${bucketCounts.high} sample${bucketCounts.high === 1 ? "" : "s"} in the 'high' bucket.`);
|
|
185
|
+
}
|
|
186
|
+
if (activeRatio > 0.5) {
|
|
187
|
+
parts.push("Over half the recording in active or high power state. Heavy battery drain.");
|
|
188
|
+
}
|
|
189
|
+
else if (totalWakeups > 500 && bucketCounts.idle / rows > 0.5) {
|
|
190
|
+
parts.push("High wakeup count despite idle bucket dominance. Likely background timer / notification storm.");
|
|
191
|
+
}
|
|
192
|
+
return parts.join(" ");
|
|
193
|
+
}
|
|
194
|
+
export async function analyzeEnergyImpact(input) {
|
|
195
|
+
const tracePath = resolvePath(input.tracePath);
|
|
196
|
+
if (!existsSync(tracePath)) {
|
|
197
|
+
throw new Error(`Trace bundle not found: ${tracePath}`);
|
|
198
|
+
}
|
|
199
|
+
const { energy: schemaName } = await fetchDiscoveredSchemas(runCommand, tracePath, ["energy"]);
|
|
200
|
+
const result = await runCommand("xcrun", [
|
|
201
|
+
"xctrace",
|
|
202
|
+
"export",
|
|
203
|
+
"--input",
|
|
204
|
+
tracePath,
|
|
205
|
+
"--xpath",
|
|
206
|
+
`/trace-toc/run/data/table[@schema="${schemaName}"]`,
|
|
207
|
+
], { timeoutMs: 5 * 60_000 });
|
|
208
|
+
if (result.code !== 0) {
|
|
209
|
+
return {
|
|
210
|
+
ok: true,
|
|
211
|
+
tracePath,
|
|
212
|
+
totals: {
|
|
213
|
+
rows: 0,
|
|
214
|
+
totalWakeups: 0,
|
|
215
|
+
activeRatio: 0,
|
|
216
|
+
bucketCounts: {
|
|
217
|
+
idle: 0,
|
|
218
|
+
passive: 0,
|
|
219
|
+
active: 0,
|
|
220
|
+
high: 0,
|
|
221
|
+
unknown: 0,
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
topByCost: [],
|
|
225
|
+
diagnosis: "Energy-impact schema not exportable from this trace (likely recorded with a non-Energy template).",
|
|
226
|
+
status: "not_present",
|
|
227
|
+
supportStatus: [
|
|
228
|
+
{
|
|
229
|
+
kind: "energy-impact",
|
|
230
|
+
status: "not_exportable",
|
|
231
|
+
reason: "xctrace export failed for the energy schema family.",
|
|
232
|
+
sourceSchemas: [schemaName],
|
|
233
|
+
},
|
|
234
|
+
],
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
return analyzeEnergyImpactFromXml(result.stdout, tracePath, input.topN ?? 10);
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=analyzeEnergyImpact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeEnergyImpact.js","sourceRoot":"","sources":["../../src/tools/analyzeEnergyImpact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `analyzeLeakTimeline`: parses xctrace's leaks schema (the time-series
|
|
3
|
+
* instrument), distinct from `leaks(1)` CLI which is a snapshot. v1.15
|
|
4
|
+
* item E.
|
|
5
|
+
*
|
|
6
|
+
* The xctrace `leaks` instrument samples the heap periodically during
|
|
7
|
+
* recording and emits one row per leak event. Unlike leaks(1) (which
|
|
8
|
+
* gives you "what is leaked NOW") this gives you "when did the leak
|
|
9
|
+
* first appear, how did it grow, when did it peak?" Useful for fixing
|
|
10
|
+
* leaks that only fire under certain user flows.
|
|
11
|
+
*
|
|
12
|
+
* Output:
|
|
13
|
+
* - per-class first-seen-at timestamp
|
|
14
|
+
* - growth rate (instances over time)
|
|
15
|
+
* - peak instance count
|
|
16
|
+
* - aggregate event count
|
|
17
|
+
*/
|
|
18
|
+
import { z } from "zod";
|
|
19
|
+
import type { DataStatus, SupportStatus } from "../types.js";
|
|
20
|
+
export declare const analyzeLeakTimelineSchema: z.ZodObject<{
|
|
21
|
+
tracePath: z.ZodString;
|
|
22
|
+
topN: z.ZodDefault<z.ZodNumber>;
|
|
23
|
+
outputFormat: z.ZodOptional<z.ZodEnum<["markdown", "json", "both", "verify-fix-table"]>>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
tracePath: string;
|
|
26
|
+
topN: number;
|
|
27
|
+
outputFormat?: "markdown" | "json" | "both" | "verify-fix-table" | undefined;
|
|
28
|
+
}, {
|
|
29
|
+
tracePath: string;
|
|
30
|
+
outputFormat?: "markdown" | "json" | "both" | "verify-fix-table" | undefined;
|
|
31
|
+
topN?: number | undefined;
|
|
32
|
+
}>;
|
|
33
|
+
export type AnalyzeLeakTimelineInput = z.infer<typeof analyzeLeakTimelineSchema>;
|
|
34
|
+
export interface LeakEvent {
|
|
35
|
+
startNs: number;
|
|
36
|
+
startFmt?: string;
|
|
37
|
+
className: string;
|
|
38
|
+
/** Cumulative count of this class at this point in the recording. */
|
|
39
|
+
cumulativeCount?: number;
|
|
40
|
+
/** Bytes leaked at this point when xctrace exposes a size column. */
|
|
41
|
+
totalBytes?: number;
|
|
42
|
+
}
|
|
43
|
+
export interface LeakClassSummary {
|
|
44
|
+
className: string;
|
|
45
|
+
/** Timestamp the class first appeared as a leak. */
|
|
46
|
+
firstSeenAtNs: number;
|
|
47
|
+
firstSeenAtFmt?: string;
|
|
48
|
+
/** Highest cumulativeCount observed across all events. */
|
|
49
|
+
peakCount: number;
|
|
50
|
+
/** Highest totalBytes observed across all events. */
|
|
51
|
+
peakBytes: number;
|
|
52
|
+
/** Total events emitted for this class. */
|
|
53
|
+
eventCount: number;
|
|
54
|
+
}
|
|
55
|
+
export interface AnalyzeLeakTimelineResult {
|
|
56
|
+
ok: boolean;
|
|
57
|
+
tracePath: string;
|
|
58
|
+
totals: {
|
|
59
|
+
rows: number;
|
|
60
|
+
/** Distinct class count across the timeline. */
|
|
61
|
+
classes: number;
|
|
62
|
+
/** Latest timestamp seen, useful as a "leaks were still growing" check. */
|
|
63
|
+
lastEventNs?: number;
|
|
64
|
+
};
|
|
65
|
+
/** Top N classes ranked by peakCount desc. */
|
|
66
|
+
topClasses: LeakClassSummary[];
|
|
67
|
+
diagnosis: string;
|
|
68
|
+
/** @deprecated v1.14 item I. Use `supportStatus[]`. */
|
|
69
|
+
status: DataStatus;
|
|
70
|
+
/** v1.14+. Unified per-area status. */
|
|
71
|
+
supportStatus: SupportStatus[];
|
|
72
|
+
}
|
|
73
|
+
/** Pure: turn the leaks XML into the timeline analysis. */
|
|
74
|
+
export declare function analyzeLeakTimelineFromXml(xml: string, tracePath: string, topN?: number): AnalyzeLeakTimelineResult;
|
|
75
|
+
export declare function analyzeLeakTimeline(input: AnalyzeLeakTimelineInput): Promise<AnalyzeLeakTimelineResult>;
|