memorydetective 1.13.0 → 1.14.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 +33 -0
- package/README.md +6 -2
- package/USAGE.md +29 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/parsers/schemaDiscovery.d.ts +88 -0
- package/dist/parsers/schemaDiscovery.js +144 -0
- package/dist/parsers/schemaDiscovery.js.map +1 -0
- package/dist/parsers/xctraceXml.d.ts +5 -0
- package/dist/parsers/xctraceXml.js +3 -0
- package/dist/parsers/xctraceXml.js.map +1 -1
- package/dist/tools/analyzeAllocations.d.ts +5 -1
- package/dist/tools/analyzeAllocations.js +17 -1
- package/dist/tools/analyzeAllocations.js.map +1 -1
- package/dist/tools/analyzeAnimationHitches.d.ts +5 -1
- package/dist/tools/analyzeAnimationHitches.js +17 -1
- package/dist/tools/analyzeAnimationHitches.js.map +1 -1
- package/dist/tools/analyzeAppLaunch.d.ts +3 -0
- package/dist/tools/analyzeAppLaunch.js +17 -1
- package/dist/tools/analyzeAppLaunch.js.map +1 -1
- package/dist/tools/analyzeHangs.d.ts +63 -3
- package/dist/tools/analyzeHangs.js +143 -19
- package/dist/tools/analyzeHangs.js.map +1 -1
- package/dist/tools/analyzeNetworkActivity.d.ts +99 -0
- package/dist/tools/analyzeNetworkActivity.js +312 -0
- package/dist/tools/analyzeNetworkActivity.js.map +1 -0
- package/dist/tools/analyzeTimeProfile.d.ts +10 -1
- package/dist/tools/analyzeTimeProfile.js +63 -8
- package/dist/tools/analyzeTimeProfile.js.map +1 -1
- package/dist/tools/countAlive.d.ts +35 -1
- package/dist/tools/countAlive.js +124 -29
- package/dist/tools/countAlive.js.map +1 -1
- package/dist/tools/inspectTrace.js +112 -18
- package/dist/tools/inspectTrace.js.map +1 -1
- package/dist/tools/recordTimeProfile.d.ts +83 -0
- package/dist/tools/recordTimeProfile.js +135 -0
- package/dist/tools/recordTimeProfile.js.map +1 -1
- package/dist/tools/replayScenario.d.ts +4 -4
- package/dist/tools/summarizeTrace.d.ts +2 -2
- package/dist/tools/verifyFix.d.ts +27 -0
- package/dist/tools/verifyFix.js +78 -4
- package/dist/tools/verifyFix.js.map +1 -1
- package/dist/types.d.ts +28 -0
- package/package.json +2 -2
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { existsSync, mkdirSync } from "node:fs";
|
|
3
|
+
import { spawn } from "node:child_process";
|
|
3
4
|
import { resolve as resolvePath, dirname, isAbsolute as isAbsolutePath, join as joinPath, } from "node:path";
|
|
4
5
|
import { runCommand } from "../runtime/exec.js";
|
|
5
6
|
import { getSecurityFlags, maxRecordingExceededMessage, } from "../runtime/securityFlags.js";
|
|
7
|
+
import { getPlatformAdvisory } from "../runtime/platformCheck.js";
|
|
6
8
|
/**
|
|
7
9
|
* Base shape, exposed so the MCP layer can read `.shape` (ZodEffects from
|
|
8
10
|
* `.superRefine()` doesn't expose shape).
|
|
@@ -91,6 +93,115 @@ const XCTRACE_TIMEOUT_GRACE_SEC = 30;
|
|
|
91
93
|
* when xctrace is wedged.
|
|
92
94
|
*/
|
|
93
95
|
const XCTRACE_GRACEFUL_KILL_MS = 10_000;
|
|
96
|
+
const PREFLIGHT_TIME_LIMIT_SEC = 2;
|
|
97
|
+
const PREFLIGHT_WRAPPER_TIMEOUT_MS = (PREFLIGHT_TIME_LIMIT_SEC + 6) * 1000;
|
|
98
|
+
const PREFLIGHT_GRACEFUL_KILL_MS = 2000;
|
|
99
|
+
/**
|
|
100
|
+
* Returns true when a pre-flight probe should run before the user's
|
|
101
|
+
* actual recording. v1.14 item H.
|
|
102
|
+
*
|
|
103
|
+
* - `MEMORYDETECTIVE_PREFLIGHT_XCTRACE=1` forces preflight on.
|
|
104
|
+
* - `MEMORYDETECTIVE_PREFLIGHT_XCTRACE=0` forces it off.
|
|
105
|
+
* - Default: auto-enabled when host is macOS 26.x AND target is a
|
|
106
|
+
* simulator AND attach mode (`--attach`, not `--launch`). The set of
|
|
107
|
+
* configurations where the regression is known to fire.
|
|
108
|
+
*
|
|
109
|
+
* The `osPlatform` and `osRelease` params are threaded through to
|
|
110
|
+
* `getPlatformAdvisory` so tests can simulate non-macOS-26 hosts even
|
|
111
|
+
* when running on a real macOS 26.x machine.
|
|
112
|
+
*/
|
|
113
|
+
export function shouldPreflightXctrace(input, env = process.env, osPlatform, osRelease) {
|
|
114
|
+
const explicit = env.MEMORYDETECTIVE_PREFLIGHT_XCTRACE;
|
|
115
|
+
if (explicit === "1")
|
|
116
|
+
return true;
|
|
117
|
+
if (explicit === "0")
|
|
118
|
+
return false;
|
|
119
|
+
// Auto: only when the known-broken combination applies.
|
|
120
|
+
const onMacOS26 = getPlatformAdvisory(env, osPlatform, osRelease) != null;
|
|
121
|
+
const isSimTarget = !!input.simulatorId && !input.deviceId;
|
|
122
|
+
const isAttachMode = !input.launchBundleId;
|
|
123
|
+
return onMacOS26 && isSimTarget && isAttachMode;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Runs the 2-second probe. Reuses runCommand's timeout wrapper with the
|
|
127
|
+
* same SIGINT-first / SIGKILL-fallback shape that the full recording
|
|
128
|
+
* uses, so the probe's salvage behavior matches the real path.
|
|
129
|
+
*
|
|
130
|
+
* The output bundle is placed at `<output>.preflight` to keep it
|
|
131
|
+
* recognizable in cleanup tools and not collide with the user's actual
|
|
132
|
+
* output path.
|
|
133
|
+
*/
|
|
134
|
+
export async function preflightXctraceRecord(input, resolvedOutput) {
|
|
135
|
+
const probeOutput = `${resolvedOutput}.preflight`;
|
|
136
|
+
const probeInput = {
|
|
137
|
+
...input,
|
|
138
|
+
durationSec: PREFLIGHT_TIME_LIMIT_SEC,
|
|
139
|
+
output: probeOutput,
|
|
140
|
+
};
|
|
141
|
+
const args = buildXctraceArgs(probeInput);
|
|
142
|
+
const probeOutDir = dirname(probeOutput);
|
|
143
|
+
if (!existsSync(probeOutDir)) {
|
|
144
|
+
mkdirSync(probeOutDir, { recursive: true });
|
|
145
|
+
}
|
|
146
|
+
const start = Date.now();
|
|
147
|
+
const result = await runCommand("xcrun", args, {
|
|
148
|
+
timeoutMs: PREFLIGHT_WRAPPER_TIMEOUT_MS,
|
|
149
|
+
timeoutSignal: "SIGINT",
|
|
150
|
+
gracefulKillAfterMs: PREFLIGHT_GRACEFUL_KILL_MS,
|
|
151
|
+
});
|
|
152
|
+
const durationMs = Date.now() - start;
|
|
153
|
+
if (result.timedOut) {
|
|
154
|
+
return {
|
|
155
|
+
healthy: false,
|
|
156
|
+
reason: `Pre-flight probe wedged: 2s recording exceeded ${PREFLIGHT_WRAPPER_TIMEOUT_MS / 1000}s wrapper window without exiting. The same wedge will hit the full recording.`,
|
|
157
|
+
durationMs,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if (result.code !== 0) {
|
|
161
|
+
return {
|
|
162
|
+
healthy: false,
|
|
163
|
+
reason: `Pre-flight probe exited non-zero (code ${result.code}): ${(result.stderr || result.stdout || "").slice(0, 200)}`,
|
|
164
|
+
durationMs,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
return { healthy: true, durationMs };
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* v1.14 item J. When a `recordTimeProfile` call times out, optionally
|
|
171
|
+
* launch the partial `.trace` in Instruments.app so the user has a GUI
|
|
172
|
+
* escape hatch. Returns `true` when `open -a Instruments <tracePath>`
|
|
173
|
+
* was spawned, `false` otherwise.
|
|
174
|
+
*
|
|
175
|
+
* Gated on `MEMORYDETECTIVE_AUTO_OPEN_INSTRUMENTS=1` to avoid spamming
|
|
176
|
+
* the user's GUI on unattended runs and CI. Also requires the trace
|
|
177
|
+
* bundle to exist on disk (xctrace's SIGINT path may have failed to
|
|
178
|
+
* write anything).
|
|
179
|
+
*
|
|
180
|
+
* The `open` invocation is fire-and-forget: `detached: true` + `unref()`
|
|
181
|
+
* so the recording tool returns immediately. Failures to launch
|
|
182
|
+
* Instruments.app are swallowed; the user is no worse off than without
|
|
183
|
+
* the flag enabled.
|
|
184
|
+
*
|
|
185
|
+
* Exported so the env-gating logic can be tested without spawning
|
|
186
|
+
* Instruments in test runs.
|
|
187
|
+
*/
|
|
188
|
+
export function maybeOpenInInstruments(tracePath) {
|
|
189
|
+
if (process.env.MEMORYDETECTIVE_AUTO_OPEN_INSTRUMENTS !== "1")
|
|
190
|
+
return false;
|
|
191
|
+
if (!existsSync(tracePath))
|
|
192
|
+
return false;
|
|
193
|
+
try {
|
|
194
|
+
const child = spawn("open", ["-a", "Instruments", tracePath], {
|
|
195
|
+
detached: true,
|
|
196
|
+
stdio: "ignore",
|
|
197
|
+
});
|
|
198
|
+
child.unref();
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
94
205
|
/** Pure: build the xctrace argv for the given input. Exposed for testing. */
|
|
95
206
|
export function buildXctraceArgs(input) {
|
|
96
207
|
const args = ["xctrace", "record", "--template", input.template];
|
|
@@ -132,6 +243,28 @@ export async function recordTimeProfile(input) {
|
|
|
132
243
|
// parent.
|
|
133
244
|
mkdirSync(outDir, { recursive: true });
|
|
134
245
|
}
|
|
246
|
+
// v1.14 item H. Pre-flight the xctrace `--time-limit` ignore regression
|
|
247
|
+
// before spending the user's durationSec on a wedge. Gated to macOS 26.x
|
|
248
|
+
// simulator targets in attach mode by default; opt-in / opt-out via
|
|
249
|
+
// MEMORYDETECTIVE_PREFLIGHT_XCTRACE.
|
|
250
|
+
if (shouldPreflightXctrace({ ...input, output })) {
|
|
251
|
+
const probe = await preflightXctraceRecord({ ...input, output }, output);
|
|
252
|
+
if (!probe.healthy) {
|
|
253
|
+
return {
|
|
254
|
+
ok: false,
|
|
255
|
+
command: `xcrun ${buildXctraceArgs({ ...input, output }).join(" ")}`,
|
|
256
|
+
output,
|
|
257
|
+
durationSec: input.durationSec,
|
|
258
|
+
template: input.template,
|
|
259
|
+
recordingTimedOut: true,
|
|
260
|
+
workaroundNotice: {
|
|
261
|
+
issue: "xctrace-time-limit-ignored",
|
|
262
|
+
message: `Pre-flight probe detected the xctrace wedge in ${probe.durationMs}ms. Skipping the full ${input.durationSec}s recording so you do not pay the wrapper timeout. ${probe.reason ?? ""}`,
|
|
263
|
+
fallbacks: XCTRACE_TIMEOUT_FALLBACKS,
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
135
268
|
const args = buildXctraceArgs({ ...input, output });
|
|
136
269
|
// External timeout wrapper. xctrace itself receives `--time-limit Ns`, so
|
|
137
270
|
// the normal exit path is xctrace finishing on its own at N seconds. The
|
|
@@ -147,6 +280,7 @@ export async function recordTimeProfile(input) {
|
|
|
147
280
|
gracefulKillAfterMs: XCTRACE_GRACEFUL_KILL_MS,
|
|
148
281
|
});
|
|
149
282
|
if (result.timedOut) {
|
|
283
|
+
const openedInInstrumentsApp = maybeOpenInInstruments(output);
|
|
150
284
|
return {
|
|
151
285
|
ok: false,
|
|
152
286
|
command: `xcrun ${args.join(" ")}`,
|
|
@@ -160,6 +294,7 @@ export async function recordTimeProfile(input) {
|
|
|
160
294
|
message: XCTRACE_TIMEOUT_MESSAGE,
|
|
161
295
|
fallbacks: XCTRACE_TIMEOUT_FALLBACKS,
|
|
162
296
|
},
|
|
297
|
+
openedInInstrumentsApp,
|
|
163
298
|
};
|
|
164
299
|
}
|
|
165
300
|
if (result.code !== 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordTimeProfile.js","sourceRoot":"","sources":["../../src/tools/recordTimeProfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,OAAO,EACP,UAAU,IAAI,cAAc,EAC5B,IAAI,IAAI,QAAQ,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"recordTimeProfile.js","sourceRoot":"","sources":["../../src/tools/recordTimeProfile.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,9 +33,9 @@ declare const actionSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
|
33
33
|
durationMs: z.ZodDefault<z.ZodNumber>;
|
|
34
34
|
}, "strip", z.ZodTypeAny, {
|
|
35
35
|
type: "swipe";
|
|
36
|
+
durationMs: number;
|
|
36
37
|
from: [number, number];
|
|
37
38
|
to: [number, number];
|
|
38
|
-
durationMs: number;
|
|
39
39
|
}, {
|
|
40
40
|
type: "swipe";
|
|
41
41
|
from: [number, number];
|
|
@@ -85,9 +85,9 @@ export declare const replayScenarioShape: {
|
|
|
85
85
|
durationMs: z.ZodDefault<z.ZodNumber>;
|
|
86
86
|
}, "strip", z.ZodTypeAny, {
|
|
87
87
|
type: "swipe";
|
|
88
|
+
durationMs: number;
|
|
88
89
|
from: [number, number];
|
|
89
90
|
to: [number, number];
|
|
90
|
-
durationMs: number;
|
|
91
91
|
}, {
|
|
92
92
|
type: "swipe";
|
|
93
93
|
from: [number, number];
|
|
@@ -140,9 +140,9 @@ export declare const replayScenarioSchema: z.ZodObject<{
|
|
|
140
140
|
durationMs: z.ZodDefault<z.ZodNumber>;
|
|
141
141
|
}, "strip", z.ZodTypeAny, {
|
|
142
142
|
type: "swipe";
|
|
143
|
+
durationMs: number;
|
|
143
144
|
from: [number, number];
|
|
144
145
|
to: [number, number];
|
|
145
|
-
durationMs: number;
|
|
146
146
|
}, {
|
|
147
147
|
type: "swipe";
|
|
148
148
|
from: [number, number];
|
|
@@ -180,9 +180,9 @@ export declare const replayScenarioSchema: z.ZodObject<{
|
|
|
180
180
|
coords?: [number, number] | undefined;
|
|
181
181
|
} | {
|
|
182
182
|
type: "swipe";
|
|
183
|
+
durationMs: number;
|
|
183
184
|
from: [number, number];
|
|
184
185
|
to: [number, number];
|
|
185
|
-
durationMs: number;
|
|
186
186
|
} | {
|
|
187
187
|
type: "wait";
|
|
188
188
|
seconds: number;
|
|
@@ -37,11 +37,11 @@ export declare const summarizeTraceSchema: z.ZodObject<{
|
|
|
37
37
|
verbose: z.ZodDefault<z.ZodBoolean>;
|
|
38
38
|
}, "strip", z.ZodTypeAny, {
|
|
39
39
|
tracePath: string;
|
|
40
|
-
focus: "
|
|
40
|
+
focus: "allocations" | "all" | "hangs" | "hitches" | "launch";
|
|
41
41
|
verbose: boolean;
|
|
42
42
|
}, {
|
|
43
43
|
tracePath: string;
|
|
44
|
-
focus?: "
|
|
44
|
+
focus?: "allocations" | "all" | "hangs" | "hitches" | "launch" | undefined;
|
|
45
45
|
verbose?: boolean | undefined;
|
|
46
46
|
}>;
|
|
47
47
|
export type SummarizeTraceInput = z.infer<typeof summarizeTraceSchema>;
|
|
@@ -14,21 +14,40 @@ import type { LeaksReport, NextCallSuggestion } from "../types.js";
|
|
|
14
14
|
* Designed for CI gating: a build script can check `overallVerdict` and
|
|
15
15
|
* fail the merge if the pattern resolved by the PR has regressed.
|
|
16
16
|
*/
|
|
17
|
+
/**
|
|
18
|
+
* v1.14 item M. Default list of classes that legitimately stay alive
|
|
19
|
+
* across before/after snapshots in normal iOS app activity. Sourced from
|
|
20
|
+
* DebugSwift's `Performance.LeakDetector.swift` `_ignoredViewControllerClassNames`,
|
|
21
|
+
* `_ignoredViewClassNames`, and `_ignoredWindowClassNames` curated lists
|
|
22
|
+
* (FLEXTool fork lineage via Janneman84/LeakedViewControllerDetector).
|
|
23
|
+
*
|
|
24
|
+
* When these appear in `regressionClasses[]` we surface them under
|
|
25
|
+
* `expectedAlive[]` for transparency but don't let them flip the verdict
|
|
26
|
+
* to FAIL. Users can extend via `expectedAliveClasses` input or disable
|
|
27
|
+
* with `disableDefaultWhitelist: true` for strict matching.
|
|
28
|
+
*/
|
|
29
|
+
export declare const DEFAULT_EXPECTED_ALIVE_CLASSES: readonly string[];
|
|
17
30
|
export declare const verifyFixSchema: z.ZodObject<{
|
|
18
31
|
before: z.ZodString;
|
|
19
32
|
after: z.ZodString;
|
|
20
33
|
expectedPatternId: z.ZodOptional<z.ZodString>;
|
|
34
|
+
expectedAliveClasses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
35
|
+
disableDefaultWhitelist: z.ZodDefault<z.ZodBoolean>;
|
|
21
36
|
verbosity: z.ZodDefault<z.ZodEnum<["compact", "normal", "full"]>>;
|
|
22
37
|
}, "strip", z.ZodTypeAny, {
|
|
23
38
|
verbosity: "compact" | "normal" | "full";
|
|
24
39
|
after: string;
|
|
25
40
|
before: string;
|
|
41
|
+
disableDefaultWhitelist: boolean;
|
|
26
42
|
expectedPatternId?: string | undefined;
|
|
43
|
+
expectedAliveClasses?: string[] | undefined;
|
|
27
44
|
}, {
|
|
28
45
|
after: string;
|
|
29
46
|
before: string;
|
|
30
47
|
verbosity?: "compact" | "normal" | "full" | undefined;
|
|
31
48
|
expectedPatternId?: string | undefined;
|
|
49
|
+
expectedAliveClasses?: string[] | undefined;
|
|
50
|
+
disableDefaultWhitelist?: boolean | undefined;
|
|
32
51
|
}>;
|
|
33
52
|
export type VerifyFixInput = z.infer<typeof verifyFixSchema>;
|
|
34
53
|
export interface PatternResolution {
|
|
@@ -93,6 +112,14 @@ export interface VerifyFixResult {
|
|
|
93
112
|
* entries of `analyzeAbandonedMemory.actionableGrowth[]`.
|
|
94
113
|
*/
|
|
95
114
|
regressionClasses?: AbandonedMemoryEntry[];
|
|
115
|
+
/**
|
|
116
|
+
* v1.14+. Class names from the effective whitelist
|
|
117
|
+
* (DEFAULT_EXPECTED_ALIVE_CLASSES + user-supplied) that DID appear in
|
|
118
|
+
* the raw regression set before filtering. Surfaced for transparency:
|
|
119
|
+
* the agent can see which "regressions" were intentionally ignored.
|
|
120
|
+
* Empty array when nothing was filtered. Absent when no fallback ran.
|
|
121
|
+
*/
|
|
122
|
+
expectedAlive?: string[];
|
|
96
123
|
}
|
|
97
124
|
/** Pure function: compute verifyFix result from two parsed reports. */
|
|
98
125
|
export declare function verifyFromReports(beforeReport: LeaksReport, afterReport: LeaksReport, beforePath: string, afterPath: string, input: VerifyFixInput): VerifyFixResult;
|
package/dist/tools/verifyFix.js
CHANGED
|
@@ -17,6 +17,34 @@ import { analyzeAbandonedMemory, } from "./analyzeAbandonedMemory.js";
|
|
|
17
17
|
* Designed for CI gating: a build script can check `overallVerdict` and
|
|
18
18
|
* fail the merge if the pattern resolved by the PR has regressed.
|
|
19
19
|
*/
|
|
20
|
+
/**
|
|
21
|
+
* v1.14 item M. Default list of classes that legitimately stay alive
|
|
22
|
+
* across before/after snapshots in normal iOS app activity. Sourced from
|
|
23
|
+
* DebugSwift's `Performance.LeakDetector.swift` `_ignoredViewControllerClassNames`,
|
|
24
|
+
* `_ignoredViewClassNames`, and `_ignoredWindowClassNames` curated lists
|
|
25
|
+
* (FLEXTool fork lineage via Janneman84/LeakedViewControllerDetector).
|
|
26
|
+
*
|
|
27
|
+
* When these appear in `regressionClasses[]` we surface them under
|
|
28
|
+
* `expectedAlive[]` for transparency but don't let them flip the verdict
|
|
29
|
+
* to FAIL. Users can extend via `expectedAliveClasses` input or disable
|
|
30
|
+
* with `disableDefaultWhitelist: true` for strict matching.
|
|
31
|
+
*/
|
|
32
|
+
export const DEFAULT_EXPECTED_ALIVE_CLASSES = [
|
|
33
|
+
// ViewControllers Apple keeps alive for system functions.
|
|
34
|
+
"UICompatibilityInputViewController",
|
|
35
|
+
"_SFAppPasswordSavingViewController",
|
|
36
|
+
"UIKeyboardHiddenViewController_Save",
|
|
37
|
+
"_UIAlertControllerTextFieldViewController",
|
|
38
|
+
"UISystemInputAssistantViewController",
|
|
39
|
+
"UIPredictionViewController",
|
|
40
|
+
// Internal views with persistent backing.
|
|
41
|
+
"PLTileContainerView",
|
|
42
|
+
"CAMPreviewView",
|
|
43
|
+
"_UIPointerInteractionAssistantEffectContainerView",
|
|
44
|
+
// Windows the OS retains.
|
|
45
|
+
"UIRemoteKeyboardWindow",
|
|
46
|
+
"UITextEffectsWindow",
|
|
47
|
+
];
|
|
20
48
|
export const verifyFixSchema = z.object({
|
|
21
49
|
before: z
|
|
22
50
|
.string()
|
|
@@ -30,6 +58,14 @@ export const verifyFixSchema = z.object({
|
|
|
30
58
|
.string()
|
|
31
59
|
.optional()
|
|
32
60
|
.describe("If provided, the verdict is gated on whether this specific patternId disappeared from `after`. Defaults to checking every classified pattern."),
|
|
61
|
+
expectedAliveClasses: z
|
|
62
|
+
.array(z.string().min(1))
|
|
63
|
+
.optional()
|
|
64
|
+
.describe("v1.14+. Class names (substrings) that legitimately stay alive across the before/after snapshots. Singletons, framework registrars, persistent caches. When a class in this list appears in regressionClasses[], it is moved to expectedAlive[] and does not flip the verdict to FAIL. Merged with the curated default list (DebugSwift's ignoredViewControllerClassNames + ignoredViewClassNames + ignoredWindowClassNames) unless `disableDefaultWhitelist: true`."),
|
|
65
|
+
disableDefaultWhitelist: z
|
|
66
|
+
.boolean()
|
|
67
|
+
.default(false)
|
|
68
|
+
.describe("v1.14+. When true, the curated DEFAULT_EXPECTED_ALIVE_CLASSES list is NOT applied. Only the user-supplied expectedAliveClasses (if any) is used. Useful for strict regression mode in tests where every alive class should be evaluated."),
|
|
33
69
|
verbosity: z
|
|
34
70
|
.enum(["compact", "normal", "full"])
|
|
35
71
|
.default("compact"),
|
|
@@ -227,7 +263,30 @@ const ABANDONED_MEMORY_TOPN = 100;
|
|
|
227
263
|
* Returns null when even the abandoned-memory path can't run (paths
|
|
228
264
|
* inaccessible, etc.); the caller falls back to the cycle-pattern result.
|
|
229
265
|
*/
|
|
230
|
-
|
|
266
|
+
/**
|
|
267
|
+
* Build the effective expected-alive whitelist by merging the curated
|
|
268
|
+
* default list (unless disabled) with the user-supplied set. Returns a
|
|
269
|
+
* lowercase Set for case-insensitive substring matching. v1.14.
|
|
270
|
+
*/
|
|
271
|
+
function buildExpectedAliveSet(userSupplied, disableDefault) {
|
|
272
|
+
const base = disableDefault ? [] : DEFAULT_EXPECTED_ALIVE_CLASSES;
|
|
273
|
+
const all = [...base, ...(userSupplied ?? [])];
|
|
274
|
+
return new Set(all.map((s) => s.toLowerCase()));
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Returns true when the className matches any entry in the whitelist
|
|
278
|
+
* (substring match, case-insensitive). v1.14.
|
|
279
|
+
*/
|
|
280
|
+
function isExpectedAlive(className, whitelist) {
|
|
281
|
+
if (whitelist.size === 0)
|
|
282
|
+
return false;
|
|
283
|
+
const lc = className.toLowerCase();
|
|
284
|
+
for (const w of whitelist)
|
|
285
|
+
if (lc.includes(w))
|
|
286
|
+
return true;
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
async function buildAbandonedMemoryFallback(beforePath, afterPath, expectedAliveWhitelist) {
|
|
231
290
|
let amResult;
|
|
232
291
|
try {
|
|
233
292
|
amResult = await analyzeAbandonedMemory({
|
|
@@ -240,7 +299,20 @@ async function buildAbandonedMemoryFallback(beforePath, afterPath) {
|
|
|
240
299
|
return null;
|
|
241
300
|
}
|
|
242
301
|
const freedClasses = (amResult.actionableShrinkage ?? []).filter((e) => Math.abs(e.delta) >= ACTIONABLE_DELTA_THRESHOLD);
|
|
243
|
-
|
|
302
|
+
// Partition raw regression set into "really regressed" vs "in the
|
|
303
|
+
// expected-alive whitelist" so the verdict ignores the latter while
|
|
304
|
+
// surfacing them on the response for transparency.
|
|
305
|
+
const rawRegressions = (amResult.actionableGrowth ?? []).filter((e) => Math.abs(e.delta) >= ACTIONABLE_DELTA_THRESHOLD);
|
|
306
|
+
const regressionClasses = [];
|
|
307
|
+
const expectedAlive = [];
|
|
308
|
+
for (const entry of rawRegressions) {
|
|
309
|
+
if (isExpectedAlive(entry.className, expectedAliveWhitelist)) {
|
|
310
|
+
expectedAlive.push(entry.className);
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
regressionClasses.push(entry);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
244
316
|
// Magnitude check: a fix that frees thousands of instances and incidentally
|
|
245
317
|
// grows a hundred Swift Metadata / pthread_mutex_t / ObjC class table
|
|
246
318
|
// entries (these scale with app activity, not user code) should be PASS,
|
|
@@ -292,7 +364,7 @@ async function buildAbandonedMemoryFallback(beforePath, afterPath) {
|
|
|
292
364
|
diagnosis =
|
|
293
365
|
"No actionable class-count changes between snapshots (|delta| < 10). Either both snapshots are clean or the workflow did not exercise the targeted code.";
|
|
294
366
|
}
|
|
295
|
-
return { verdict, freedClasses, regressionClasses, diagnosis };
|
|
367
|
+
return { verdict, freedClasses, regressionClasses, expectedAlive, diagnosis };
|
|
296
368
|
}
|
|
297
369
|
export async function verifyFix(input) {
|
|
298
370
|
const [{ report: beforeReport, resolvedPath: bp }, { report: afterReport, resolvedPath: ap },] = await Promise.all([
|
|
@@ -306,11 +378,13 @@ export async function verifyFix(input) {
|
|
|
306
378
|
// cycle-pattern path takes precedence when patterns DO fire, so this
|
|
307
379
|
// is a strict fallback.
|
|
308
380
|
if (result.patternResolution.length === 0) {
|
|
309
|
-
const
|
|
381
|
+
const whitelist = buildExpectedAliveSet(input.expectedAliveClasses, input.disableDefaultWhitelist ?? false);
|
|
382
|
+
const fallback = await buildAbandonedMemoryFallback(input.before, input.after, whitelist);
|
|
310
383
|
if (fallback) {
|
|
311
384
|
result.verdictSource = "abandoned-memory";
|
|
312
385
|
result.freedClasses = fallback.freedClasses;
|
|
313
386
|
result.regressionClasses = fallback.regressionClasses;
|
|
387
|
+
result.expectedAlive = fallback.expectedAlive;
|
|
314
388
|
result.overallVerdict = fallback.verdict;
|
|
315
389
|
result.diagnosis = fallback.diagnosis;
|
|
316
390
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyFix.js","sourceRoot":"","sources":["../../src/tools/verifyFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EACL,mBAAmB,GAEpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EACL,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AAGrC;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,sDAAsD,CAAC;IACnE,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,4CAA4C,CAAC;IACzD,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,+IAA+I,CAChJ;IACH,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;SACnC,OAAO,CAAC,SAAS,CAAC;CACtB,CAAC,CAAC;AA8DH,SAAS,gBAAgB,CACvB,MAAmB,EACnB,SAAoB;IAEpB,MAAM,GAAG,GAAG,IAAI,GAAG,EAA4B,CAAC;IAChD,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI;YAAE,SAAS;QAEvC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC9C,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1C,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;gBAAE,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;YACtE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC7D,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC;YACP,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS;YACnC,WAAW,EAAE,IAAI,CAAC,OAAO;YACzB,KAAK;YACL,WAAW;SACZ,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,iBAAiB,CAC/B,YAAyB,EACzB,WAAwB,EACxB,UAAkB,EAClB,SAAiB,EACjB,KAAqB;IAErB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC;IAC/C,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS;QAC7B,GAAG,eAAe,CAAC,IAAI,EAAE;QACzB,GAAG,cAAc,CAAC,IAAI,EAAE;KACzB,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAwB,EAAE,CAAC;IAClD,IAAI,YAAY,GAAiC,MAAM,CAAC;IAExD,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAE9C,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;QAEzD,mEAAmE;QACnE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,SAAS;YACvB,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,QAAQ;YACtB,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,MAAM,cAAc,GAA2B,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;YAC/B,IAAI,KAAK,GAAG,CAAC;gBAAE,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC7C,CAAC;QAED,IAAI,OAAqC,CAAC;QAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,MAAM,CAAC;aAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;YAAE,OAAO,GAAG,SAAS,CAAC;aAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YACrE,OAAO,GAAG,MAAM,CAAC,CAAC,gCAAgC;;YAC/C,OAAO,GAAG,MAAM,CAAC,CAAC,eAAe;QAEtC,iBAAiB,CAAC,IAAI,CAAC;YACrB,SAAS,EAAE,EAAE;YACb,MAAM,EAAE;gBACN,KAAK,EAAE,SAAS,CAAC,MAAM;gBACvB,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aACnD;YACD,KAAK,EAAE;gBACL,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAClD;YACD,OAAO;YACP,UAAU;YACV,cAAc;SACf,CAAC,CAAC;QAEH,IAAI,OAAO,KAAK,MAAM;YAAE,YAAY,GAAG,MAAM,CAAC;aACzC,IAAI,OAAO,KAAK,SAAS,IAAI,YAAY,KAAK,MAAM;YACvD,YAAY,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,6EAA6E;IAC7E,gEAAgE;IAChE,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACrD,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG,KAAK,CAAC,iBAAiB;QACpD,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,iBAAiB,CAAC;YACpE,EAAE,OAAO,IAAI,MAAM;QACvB,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,SAAS,GAAG,cAAc,CAC9B,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,CAAC,iBAAiB,CACxB,CAAC;IAEF,MAAM,kBAAkB,GAAyB,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IACvE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,kBAAkB,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACzB,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,oFAAoF;SAC5G,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE;YACN,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,SAAS;YACxC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,gBAAgB;SACjD;QACD,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS;YACvC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,gBAAgB;SAChD;QACD,MAAM,EAAE;YACN,cAAc,EACZ,WAAW,CAAC,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS;YAC9D,UAAU,EACR,WAAW,CAAC,MAAM,CAAC,gBAAgB;gBACnC,YAAY,CAAC,MAAM,CAAC,gBAAgB;SACvC;QACD,iBAAiB;QACjB,cAAc,EAAE,YAAY;QAC5B,GAAG,CAAC,sBAAsB;YACxB,CAAC,CAAC,EAAE,sBAAsB,EAAE;YAC5B,CAAC,CAAC,EAAE,CAAC;QACP,SAAS;QACT,GAAG,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,WAAgC,EAChC,eAAyD,EACzD,UAA8B;IAE9B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,4CAA4C,CAAC;IACtD,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAC1B,CAAC,CACF,CAAC;IAEF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,MAAM,WAAW,QAAQ,CAAC,MAAM,cAAc,KAAK,CAAC,MAAM,QAAQ,CAC7E,CAAC;IACF,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CACR,uBAAuB,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CACxF,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CACR,sBAAsB,UAAU,OAAO,eAAe,IAAI,gCAAgC,GAAG,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CACR,gBAAgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAEtC;;;0EAG0E;AAC1E,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC;;;;;;;;;;;;;;;;;GAiBG;AACH,KAAK,UAAU,4BAA4B,CACzC,UAAkB,EAClB,SAAiB;IAUjB,IAAI,QAA4D,CAAC;IACjE,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,sBAAsB,CAAC;YACtC,UAAU;YACV,SAAS;YACT,IAAI,EAAE,qBAAqB;SAC5B,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,MAAM,CAC9D,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,0BAA0B,CACvD,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,MAAM,CAChE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,0BAA0B,CACvD,CAAC;IACF,4EAA4E;IAC5E,sEAAsE;IACtE,yEAAyE;IACzE,4CAA4C;IAC5C,EAAE;IACF,6EAA6E;IAC7E,iDAAiD;IACjD,uBAAuB;IACvB,EAAE;IACF,oEAAoE;IACpE,oEAAoE;IACpE,mEAAmE;IACnE,oEAAoE;IACpE,kEAAkE;IAClE,mBAAmB;IACnB,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAC/B,CAAC,CACF,CAAC;IACF,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAC/B,CAAC,CACF,CAAC;IACF,MAAM,yBAAyB,GAAG,CAAC,CAAC;IAEpC,IAAI,OAAoC,CAAC;IACzC,IAAI,SAAiB,CAAC;IACtB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,GAAG,MAAM,CAAC;QACjB,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,SAAS,GAAG,gDAAgD,YAAY,CAAC,MAAM,SAAS,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,0BAA0B,QAAQ,CAAC,SAAS,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAC;IACrM,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,OAAO,GAAG,MAAM,CAAC;QACjB,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACrC,SAAS,GAAG,wBAAwB,iBAAiB,CAAC,MAAM,SAAS,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,yBAAyB,OAAO,CAAC,SAAS,QAAQ,OAAO,CAAC,KAAK,2CAA2C,CAAC;IAC5N,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,IAAI,cAAc,IAAI,eAAe,GAAG,yBAAyB,EAAE,CAAC;YAClE,OAAO,GAAG,MAAM,CAAC;YACjB,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,SAAS,GAAG,gDAAgD,cAAc,CAAC,cAAc,EAAE,2CAA2C,eAAe,CAAC,cAAc,EAAE,0HAA0H,QAAQ,CAAC,SAAS,OAAO,QAAQ,CAAC,KAAK,gFAAgF,CAAC;QAC1Z,CAAC;aAAM,IACL,eAAe,IAAI,cAAc,GAAG,yBAAyB,EAC7D,CAAC;YACD,OAAO,GAAG,MAAM,CAAC;YACjB,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACrC,SAAS,GAAG,eAAe,eAAe,CAAC,cAAc,EAAE,kCAAkC,cAAc,CAAC,cAAc,EAAE,oCAAoC,OAAO,CAAC,SAAS,QAAQ,OAAO,CAAC,KAAK,IAAI,CAAC;QAC7M,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,SAAS,CAAC;YACpB,SAAS,GAAG,iBAAiB,YAAY,CAAC,MAAM,SAAS,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,cAAc,CAAC,cAAc,EAAE,mBAAmB,iBAAiB,CAAC,MAAM,UAAU,eAAe,CAAC,cAAc,EAAE,oKAAoK,CAAC;QACpY,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,MAAM,CAAC;QACjB,SAAS;YACP,yJAAyJ,CAAC;IAC9J,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAqB;IACnD,MAAM,CACJ,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE,EAC1C,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE,EAC1C,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpB,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9B,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;KAC9B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAE3E,qEAAqE;IACrE,mEAAmE;IACnE,kEAAkE;IAClE,qEAAqE;IACrE,wBAAwB;IACxB,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,aAAa,GAAG,kBAAkB,CAAC;YAC1C,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC5C,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;YACtD,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;YACzC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,aAAa,GAAG,eAAe,CAAC;QACzC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,aAAa,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"verifyFix.js","sourceRoot":"","sources":["../../src/tools/verifyFix.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -75,6 +75,34 @@ export interface LeaksReport {
|
|
|
75
75
|
* all, not just "exists but cannot be read".
|
|
76
76
|
*/
|
|
77
77
|
export type DataStatus = "available" | "partial" | "not_exportable" | "not_present";
|
|
78
|
+
/**
|
|
79
|
+
* v1.14 item I. Unified per-area status surface across trace analyzers.
|
|
80
|
+
*
|
|
81
|
+
* Pre-v1.14 each analyzer had its own variation: `status: DataStatus`,
|
|
82
|
+
* an optional `notice` string for the SIGSEGV path, and ad-hoc fields
|
|
83
|
+
* for things like time-profile's workaround text. Agents had to know
|
|
84
|
+
* each shape to branch correctly. The unified `supportStatus[]` puts
|
|
85
|
+
* everything in one array of records so an LLM driver can iterate over
|
|
86
|
+
* the result without knowing the analyzer's history.
|
|
87
|
+
*
|
|
88
|
+
* Mirrors XcodeTraceMCP's `supportStatus[]` shape so cross-tool
|
|
89
|
+
* tooling can be consistent. Old `status` / `notice` fields stay on
|
|
90
|
+
* each analyzer's result as deprecated aliases for backwards compat;
|
|
91
|
+
* we'll drop them in a future major bump.
|
|
92
|
+
*
|
|
93
|
+
* `failed` is reserved for hard exceptions caught during the analyze
|
|
94
|
+
* step, distinct from `not_exportable` (xctrace ran but refused) and
|
|
95
|
+
* `not_present` (schema absent from the trace TOC).
|
|
96
|
+
*/
|
|
97
|
+
export type SupportStatusKind = "potential-hangs" | "hang-risks" | "animation-hitches" | "time-profile" | "allocations" | "app-launch" | "network-connections";
|
|
98
|
+
export interface SupportStatus {
|
|
99
|
+
kind: SupportStatusKind;
|
|
100
|
+
status: "available" | "partial" | "not_exportable" | "not_present" | "failed";
|
|
101
|
+
/** Free-text reason: workaround tip, xctrace stderr snippet, etc. */
|
|
102
|
+
reason?: string;
|
|
103
|
+
/** Schema names this entry sourced from (e.g. ["potential-hangs", "hang-risks"]). */
|
|
104
|
+
sourceSchemas?: string[];
|
|
105
|
+
}
|
|
78
106
|
/**
|
|
79
107
|
* HATEOAS-style hint that an LLM agent can chain after the current tool's
|
|
80
108
|
* result. We pre-populate `args` from the current response so the agent can
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memorydetective",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.14.0",
|
|
4
4
|
"mcpName": "io.github.carloshpdoc/memorydetective",
|
|
5
|
-
"description": "MCP server for iOS leak hunting and performance investigation.
|
|
5
|
+
"description": "MCP server for iOS leak hunting and performance investigation. 37 tools across .memgraph and .trace files, 36-pattern retain-cycle classifier with Swift fixTemplate snippets, abandoned-memory diff for KVO/NotificationCenter/cache shapes that escape leaks(1), per-test CI gate (detectLeaksInXCTest + detectLeaksInXCUITest with self-contained HTML reports), main-thread violation classifier on analyzeHangs, single-call build+boot+launch for the macOS 26.x leaks --outputGraph regression, replayScenario + captureScenarioState verify-fix loop, compareTracesByPattern CI gate on hangs/hitches/launch regressions, SourceKit-LSP source bridging. macOS only (depends on leaks(1) and xctrace).",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
8
|
"memorydetective": "dist/index.js"
|