memorydetective 1.16.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/parsers/schemaDiscovery.d.ts +26 -0
  3. package/dist/parsers/schemaDiscovery.js +40 -11
  4. package/dist/parsers/schemaDiscovery.js.map +1 -1
  5. package/dist/runtime/parseBooleanEnv.d.ts +22 -0
  6. package/dist/runtime/parseBooleanEnv.js +47 -0
  7. package/dist/runtime/parseBooleanEnv.js.map +1 -0
  8. package/dist/runtime/platformCheck.js +4 -1
  9. package/dist/runtime/platformCheck.js.map +1 -1
  10. package/dist/runtime/securityFlags.js +3 -1
  11. package/dist/runtime/securityFlags.js.map +1 -1
  12. package/dist/tools/analyzeEnergyImpact.d.ts +7 -1
  13. package/dist/tools/analyzeEnergyImpact.js +9 -3
  14. package/dist/tools/analyzeEnergyImpact.js.map +1 -1
  15. package/dist/tools/analyzeHangs.js +21 -12
  16. package/dist/tools/analyzeHangs.js.map +1 -1
  17. package/dist/tools/analyzeLeakTimeline.js +27 -10
  18. package/dist/tools/analyzeLeakTimeline.js.map +1 -1
  19. package/dist/tools/analyzeMemoryFootprint.js +1 -2
  20. package/dist/tools/analyzeMemoryFootprint.js.map +1 -1
  21. package/dist/tools/analyzeNetworkActivity.d.ts +6 -1
  22. package/dist/tools/analyzeNetworkActivity.js +13 -1
  23. package/dist/tools/analyzeNetworkActivity.js.map +1 -1
  24. package/dist/tools/cleanupTraces.js +2 -1
  25. package/dist/tools/cleanupTraces.js.map +1 -1
  26. package/dist/tools/countAlive.d.ts +51 -5
  27. package/dist/tools/countAlive.js +140 -11
  28. package/dist/tools/countAlive.js.map +1 -1
  29. package/dist/tools/inspectTrace.js +22 -1
  30. package/dist/tools/inspectTrace.js.map +1 -1
  31. package/dist/tools/recordTimeProfile.d.ts +24 -0
  32. package/dist/tools/recordTimeProfile.js +38 -5
  33. package/dist/tools/recordTimeProfile.js.map +1 -1
  34. package/dist/tools/recordViaInstrumentsApp.d.ts +25 -0
  35. package/dist/tools/recordViaInstrumentsApp.js +97 -23
  36. package/dist/tools/recordViaInstrumentsApp.js.map +1 -1
  37. package/dist/tools/verifyFix.d.ts +18 -3
  38. package/dist/tools/verifyFix.js +51 -31
  39. package/dist/tools/verifyFix.js.map +1 -1
  40. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"inspectTrace.js","sourceRoot":"","sources":["../../src/tools/inspectTrace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspectTrace.js","sourceRoot":"","sources":["../../src/tools/inspectTrace.ts"],"names":[],"mappings":"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"}
@@ -81,6 +81,17 @@ export interface RecordTimeProfileResult {
81
81
  * fail to export it. Inspect `workaroundNotice` for the recovery path.
82
82
  */
83
83
  recordingTimedOut?: boolean;
84
+ /**
85
+ * v1.17 B-09. Reports whether the .trace bundle on disk is
86
+ * salvageable. `unknown` when recording succeeded normally
87
+ * (the caller can run inspectTrace to confirm). `salvageable` when
88
+ * a timeout / SIGINT path produced a bundle with the canonical
89
+ * Trace1.run/MANIFEST.plist marker (xctrace flushed cleanly).
90
+ * `wedged` when the bundle is missing MANIFEST.plist (the macOS 26.x
91
+ * regression signature; xctrace export will reject it). Use this to
92
+ * branch without re-checking the filesystem.
93
+ */
94
+ bundleStatus?: "unknown" | "salvageable" | "wedged";
84
95
  /**
85
96
  * Present when `recordingTimedOut` is true. Documents the
86
97
  * `xctrace --time-limit` regression observed on macOS 26.x simulators
@@ -151,6 +162,19 @@ export declare function shouldPreflightXctrace(input: RecordTimeProfileInput, en
151
162
  * output path.
152
163
  */
153
164
  export declare function preflightXctraceRecord(input: RecordTimeProfileInput, resolvedOutput: string): Promise<PreflightResult>;
165
+ /**
166
+ * v1.17 B-09. Classify a `.trace` bundle on disk by the canonical
167
+ * markers xctrace writes. The `MANIFEST.plist` file under `Trace1.run/`
168
+ * is the marker of a complete export; absent means xctrace was killed
169
+ * before flushing (the macOS 26.x wedge signature).
170
+ *
171
+ * Returns `unknown` when the path doesn't exist (caller error).
172
+ * Used by recordTimeProfile to surface `bundleStatus` on the response.
173
+ *
174
+ * Exported so other tools (recordViaInstrumentsApp, etc.) can share
175
+ * the heuristic.
176
+ */
177
+ export declare function classifyBundleOnDisk(tracePath: string): "unknown" | "salvageable" | "wedged";
154
178
  /**
155
179
  * v1.14 item J. When a `recordTimeProfile` call times out, optionally
156
180
  * launch the partial `.trace` in Instruments.app so the user has a GUI
@@ -5,6 +5,7 @@ import { resolve as resolvePath, dirname, isAbsolute as isAbsolutePath, join as
5
5
  import { runCommand } from "../runtime/exec.js";
6
6
  import { getSecurityFlags, maxRecordingExceededMessage, } from "../runtime/securityFlags.js";
7
7
  import { getPlatformAdvisory } from "../runtime/platformCheck.js";
8
+ import { parseBooleanEnv } from "../runtime/parseBooleanEnv.js";
8
9
  /**
9
10
  * Base shape, exposed so the MCP layer can read `.shape` (ZodEffects from
10
11
  * `.superRefine()` doesn't expose shape).
@@ -111,11 +112,12 @@ const PREFLIGHT_GRACEFUL_KILL_MS = 2000;
111
112
  * when running on a real macOS 26.x machine.
112
113
  */
113
114
  export function shouldPreflightXctrace(input, env = process.env, osPlatform, osRelease) {
115
+ // v1.17 B-03: accept the strtobool set, not just "1" / "0". Empty / unset
116
+ // falls through to the auto-detection arm.
114
117
  const explicit = env.MEMORYDETECTIVE_PREFLIGHT_XCTRACE;
115
- if (explicit === "1")
116
- return true;
117
- if (explicit === "0")
118
- return false;
118
+ if (explicit != null && explicit.trim() !== "") {
119
+ return parseBooleanEnv(explicit, false, "MEMORYDETECTIVE_PREFLIGHT_XCTRACE");
120
+ }
119
121
  // Auto: only when the known-broken combination applies.
120
122
  const onMacOS26 = getPlatformAdvisory(env, osPlatform, osRelease) != null;
121
123
  const isSimTarget = !!input.simulatorId && !input.deviceId;
@@ -166,6 +168,24 @@ export async function preflightXctraceRecord(input, resolvedOutput) {
166
168
  }
167
169
  return { healthy: true, durationMs };
168
170
  }
171
+ /**
172
+ * v1.17 B-09. Classify a `.trace` bundle on disk by the canonical
173
+ * markers xctrace writes. The `MANIFEST.plist` file under `Trace1.run/`
174
+ * is the marker of a complete export; absent means xctrace was killed
175
+ * before flushing (the macOS 26.x wedge signature).
176
+ *
177
+ * Returns `unknown` when the path doesn't exist (caller error).
178
+ * Used by recordTimeProfile to surface `bundleStatus` on the response.
179
+ *
180
+ * Exported so other tools (recordViaInstrumentsApp, etc.) can share
181
+ * the heuristic.
182
+ */
183
+ export function classifyBundleOnDisk(tracePath) {
184
+ if (!existsSync(tracePath))
185
+ return "unknown";
186
+ const manifest = `${tracePath}/Trace1.run/MANIFEST.plist`;
187
+ return existsSync(manifest) ? "salvageable" : "wedged";
188
+ }
169
189
  /**
170
190
  * v1.14 item J. When a `recordTimeProfile` call times out, optionally
171
191
  * launch the partial `.trace` in Instruments.app so the user has a GUI
@@ -186,10 +206,19 @@ export async function preflightXctraceRecord(input, resolvedOutput) {
186
206
  * Instruments in test runs.
187
207
  */
188
208
  export function maybeOpenInInstruments(tracePath) {
189
- if (process.env.MEMORYDETECTIVE_AUTO_OPEN_INSTRUMENTS !== "1")
209
+ if (!parseBooleanEnv(process.env.MEMORYDETECTIVE_AUTO_OPEN_INSTRUMENTS, false, "MEMORYDETECTIVE_AUTO_OPEN_INSTRUMENTS")) {
190
210
  return false;
211
+ }
191
212
  if (!existsSync(tracePath))
192
213
  return false;
214
+ // v1.17 B-04: skip the open when the bundle is a wedged shell.
215
+ // A complete xctrace export writes Trace1.run/MANIFEST.plist; a wedge
216
+ // produces only Trace1.run/RunIssues.storedata. Opening a wedge in
217
+ // Instruments shows a Document Missing Template Error dialog, which
218
+ // is worse UX than just not opening.
219
+ const manifest = `${tracePath}/Trace1.run/MANIFEST.plist`;
220
+ if (!existsSync(manifest))
221
+ return false;
193
222
  try {
194
223
  const child = spawn("open", ["-a", "Instruments", tracePath], {
195
224
  detached: true,
@@ -281,6 +310,9 @@ export async function recordTimeProfile(input) {
281
310
  });
282
311
  if (result.timedOut) {
283
312
  const openedInInstrumentsApp = maybeOpenInInstruments(output);
313
+ // v1.17 B-09: classify the bundle before returning so the caller
314
+ // does not need to re-check the filesystem.
315
+ const bundleStatus = classifyBundleOnDisk(output);
284
316
  return {
285
317
  ok: false,
286
318
  command: `xcrun ${args.join(" ")}`,
@@ -295,6 +327,7 @@ export async function recordTimeProfile(input) {
295
327
  fallbacks: XCTRACE_TIMEOUT_FALLBACKS,
296
328
  },
297
329
  openedInInstrumentsApp,
330
+ bundleStatus,
298
331
  };
299
332
  }
300
333
  if (result.code !== 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"recordTimeProfile.js","sourceRoot":"","sources":["../../src/tools/recordTimeProfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordTimeProfile.js","sourceRoot":"","sources":["../../src/tools/recordTimeProfile.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,15 @@ export interface RecordViaInstrumentsAppResult {
45
45
  instructions: string[];
46
46
  /** True when the watcher gave up before finding a new `.trace`. */
47
47
  timedOut?: boolean;
48
+ /**
49
+ * v1.17 B-01. True when the trace was detected via the Instruments.app
50
+ * AppleScript document query, NOT via the filesystem watcher. Means
51
+ * the user saved the .trace OUTSIDE the configured `watchDir`. The
52
+ * `tracePath` still resolves correctly; this flag explains the
53
+ * detection path so callers can suggest "next time save to <watchDir>"
54
+ * or update their watcher config.
55
+ */
56
+ savedOutsideWatchDir?: boolean;
48
57
  /** Wall-clock seconds the user spent recording (start of watcher to detection). */
49
58
  elapsedSec: number;
50
59
  /** Chained inspectTrace summary when the recording was found AND was readable. */
@@ -78,4 +87,20 @@ export declare function isStable(candidatePath: string, nowMs: number, stableFor
78
87
  * Exported for testing.
79
88
  */
80
89
  export declare function buildInstructions(template: string, watchDir: string): string[];
90
+ /**
91
+ * v1.17 B-01: query Instruments.app for the file paths of currently
92
+ * open documents via AppleScript. Used as a cross-check during the
93
+ * poll loop: if the user saves a `.trace` OUTSIDE `watchDir`, the
94
+ * directory watcher misses it, but Instruments.app will have the new
95
+ * document open and we can read its `file` property.
96
+ *
97
+ * Returns an array of absolute POSIX paths. Empty array when Instruments
98
+ * is not running, has no documents open, or the AppleScript fails.
99
+ *
100
+ * Exported for testing.
101
+ */
102
+ export declare function queryInstrumentsDocumentPaths(exec: (cmd: string, args: string[]) => Promise<{
103
+ code: number;
104
+ stdout: string;
105
+ }>): Promise<string[]>;
81
106
  export declare function recordViaInstrumentsApp(input: RecordViaInstrumentsAppInput): Promise<RecordViaInstrumentsAppResult>;
@@ -21,6 +21,7 @@ import { z } from "zod";
21
21
  import { existsSync, mkdirSync, statSync, readdirSync } from "node:fs";
22
22
  import { resolve as resolvePath, join as joinPath } from "node:path";
23
23
  import { spawn } from "node:child_process";
24
+ import { runCommand } from "../runtime/exec.js";
24
25
  import { getSecurityFlags } from "../runtime/securityFlags.js";
25
26
  import { inspectTrace } from "./inspectTrace.js";
26
27
  export const recordViaInstrumentsAppSchema = z.object({
@@ -111,6 +112,45 @@ export function buildInstructions(template, watchDir) {
111
112
  `Once saved, this tool detects the new \`.trace\` bundle (within ~10 seconds) and returns its path.`,
112
113
  ];
113
114
  }
115
+ /**
116
+ * v1.17 B-01: query Instruments.app for the file paths of currently
117
+ * open documents via AppleScript. Used as a cross-check during the
118
+ * poll loop: if the user saves a `.trace` OUTSIDE `watchDir`, the
119
+ * directory watcher misses it, but Instruments.app will have the new
120
+ * document open and we can read its `file` property.
121
+ *
122
+ * Returns an array of absolute POSIX paths. Empty array when Instruments
123
+ * is not running, has no documents open, or the AppleScript fails.
124
+ *
125
+ * Exported for testing.
126
+ */
127
+ export async function queryInstrumentsDocumentPaths(exec) {
128
+ const script = [
129
+ 'tell application "Instruments"',
130
+ " set docs to every document",
131
+ " set out to {}",
132
+ " repeat with d in docs",
133
+ " try",
134
+ " set f to file of d",
135
+ " set end of out to POSIX path of f",
136
+ " end try",
137
+ " end repeat",
138
+ " return out",
139
+ "end tell",
140
+ ].join("\n");
141
+ try {
142
+ const result = await exec("osascript", ["-e", script]);
143
+ if (result.code !== 0)
144
+ return [];
145
+ return result.stdout
146
+ .split(/[,\n]/)
147
+ .map((s) => s.trim())
148
+ .filter((s) => s.endsWith(".trace"));
149
+ }
150
+ catch {
151
+ return [];
152
+ }
153
+ }
114
154
  /**
115
155
  * Spawn `open -a Instruments` fire-and-forget. v1.16. Returns immediately;
116
156
  * Instruments.app launch takes a few seconds and the user interacts with
@@ -140,6 +180,38 @@ function sleep(ms) {
140
180
  }
141
181
  const POLL_INTERVAL_MS = 5_000;
142
182
  const STABLE_FOR_MS = 10_000;
183
+ /**
184
+ * v1.17 B-01 helper: assemble the success-path response when a new
185
+ * `.trace` is detected via either the filesystem watcher OR the
186
+ * Instruments.app AppleScript document query. Shared between both
187
+ * detection paths to keep the shape consistent.
188
+ */
189
+ async function buildSuccessResult(candidate, watchDir, instructions, startMs, savedOutsideWatchDir) {
190
+ const elapsedSec = Math.round((Date.now() - startMs) / 1000);
191
+ let inspection;
192
+ try {
193
+ inspection = await inspectTrace({ tracePath: candidate });
194
+ }
195
+ catch {
196
+ // Inspection failure is non-fatal.
197
+ }
198
+ const detectedVia = savedOutsideWatchDir
199
+ ? "Instruments.app GUI (user saved outside watchDir)"
200
+ : `watchDir \`${watchDir}\``;
201
+ const diagnosis = inspection
202
+ ? `Captured \`${candidate}\` after ${elapsedSec}s via ${detectedVia}. ${inspection.schemas.length} schemas in the TOC.`
203
+ : `Captured \`${candidate}\` after ${elapsedSec}s via ${detectedVia}. Inspect failed; pass the path to inspectTrace manually.`;
204
+ return {
205
+ ok: true,
206
+ tracePath: candidate,
207
+ watchDir,
208
+ instructions,
209
+ elapsedSec,
210
+ ...(inspection ? { inspection } : {}),
211
+ ...(savedOutsideWatchDir ? { savedOutsideWatchDir: true } : {}),
212
+ diagnosis,
213
+ };
214
+ }
143
215
  export async function recordViaInstrumentsApp(input) {
144
216
  const security = getSecurityFlags();
145
217
  const watchDir = resolvePath(input.watchDir ?? security.traceRoot);
@@ -153,37 +225,39 @@ export async function recordViaInstrumentsApp(input) {
153
225
  ? new Set(input.preexistingTraces.map((p) => resolvePath(p)))
154
226
  : snapshotTracesInDir(watchDir);
155
227
  openInstrumentsApp();
228
+ // v1.17 B-01: also baseline the Instruments-open-document set so we
229
+ // can detect a NEW trace that's open in the GUI even when the user
230
+ // saves it outside our watchDir. The osascript adapter for the
231
+ // queryInstrumentsDocumentPaths function uses runCommand.
232
+ const oscAdapter = (cmd, args) => runCommand(cmd, args, { timeoutMs: 8_000 });
233
+ const instrumentsBaseline = new Set(await queryInstrumentsDocumentPaths(oscAdapter));
156
234
  const start = Date.now();
157
235
  while (Date.now() - start < timeoutMs) {
236
+ // Path A: directory watcher. Detects saves under watchDir.
158
237
  const current = snapshotTracesInDir(watchDir);
159
238
  const fresh = detectNewTraces(current, baseline);
160
- // Pick the first stable new trace (oldest mtime that is also stable).
161
239
  for (const candidate of fresh) {
162
240
  if (isStable(candidate, Date.now(), STABLE_FOR_MS)) {
163
- const elapsedSec = Math.round((Date.now() - start) / 1000);
164
- // Best-effort: chain into inspectTrace so the caller sees an
165
- // immediate summary. Failures here do not invalidate the
166
- // recording itself; we just omit the field.
167
- let inspection;
168
- try {
169
- inspection = await inspectTrace({ tracePath: candidate });
170
- }
171
- catch {
172
- // Inspection failure is non-fatal.
173
- }
174
- return {
175
- ok: true,
176
- tracePath: candidate,
177
- watchDir,
178
- instructions,
179
- elapsedSec,
180
- ...(inspection ? { inspection } : {}),
181
- diagnosis: inspection
182
- ? `Captured \`${candidate}\` after ${elapsedSec}s. ${inspection.schemas.length} schemas in the TOC.`
183
- : `Captured \`${candidate}\` after ${elapsedSec}s. Inspect failed; pass the path to inspectTrace manually.`,
184
- };
241
+ return await buildSuccessResult(candidate, watchDir, instructions, start,
242
+ /* savedOutsideWatchDir */ false);
185
243
  }
186
244
  }
245
+ // Path B (v1.17 B-01): Instruments AppleScript document query.
246
+ // Detects saves OUTSIDE watchDir that the directory watcher misses.
247
+ // Only treats as success when the new document path exists AND is
248
+ // stable for the same window the directory watcher uses.
249
+ const docs = await queryInstrumentsDocumentPaths(oscAdapter);
250
+ for (const docPath of docs) {
251
+ if (instrumentsBaseline.has(docPath))
252
+ continue;
253
+ const resolvedDoc = resolvePath(docPath);
254
+ if (!existsSync(resolvedDoc))
255
+ continue;
256
+ if (!isStable(resolvedDoc, Date.now(), STABLE_FOR_MS))
257
+ continue;
258
+ return await buildSuccessResult(resolvedDoc, watchDir, instructions, start,
259
+ /* savedOutsideWatchDir */ !resolvedDoc.startsWith(watchDir));
260
+ }
187
261
  await sleep(POLL_INTERVAL_MS);
188
262
  }
189
263
  const elapsedSec = Math.round((Date.now() - start) / 1000);
@@ -1 +1 @@
1
- {"version":3,"file":"recordViaInstrumentsApp.js","sourceRoot":"","sources":["../../src/tools/recordViaInstrumentsApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordViaInstrumentsApp.js","sourceRoot":"","sources":["../../src/tools/recordViaInstrumentsApp.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,16 @@ export declare const verifyFixSchema: z.ZodObject<{
31
31
  before: z.ZodString;
32
32
  after: z.ZodString;
33
33
  expectedPatternId: z.ZodOptional<z.ZodString>;
34
- expectedAliveClasses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
34
+ expectedAliveClasses: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
35
+ pattern: z.ZodString;
36
+ mode: z.ZodDefault<z.ZodEnum<["exact", "substring", "regex"]>>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ pattern: string;
39
+ mode: "exact" | "substring" | "regex";
40
+ }, {
41
+ pattern: string;
42
+ mode?: "exact" | "substring" | "regex" | undefined;
43
+ }>]>, "many">>;
35
44
  disableDefaultWhitelist: z.ZodDefault<z.ZodBoolean>;
36
45
  verbosity: z.ZodDefault<z.ZodEnum<["compact", "normal", "full"]>>;
37
46
  }, "strip", z.ZodTypeAny, {
@@ -40,13 +49,19 @@ export declare const verifyFixSchema: z.ZodObject<{
40
49
  before: string;
41
50
  disableDefaultWhitelist: boolean;
42
51
  expectedPatternId?: string | undefined;
43
- expectedAliveClasses?: string[] | undefined;
52
+ expectedAliveClasses?: (string | {
53
+ pattern: string;
54
+ mode: "exact" | "substring" | "regex";
55
+ })[] | undefined;
44
56
  }, {
45
57
  after: string;
46
58
  before: string;
47
59
  verbosity?: "compact" | "normal" | "full" | undefined;
48
60
  expectedPatternId?: string | undefined;
49
- expectedAliveClasses?: string[] | undefined;
61
+ expectedAliveClasses?: (string | {
62
+ pattern: string;
63
+ mode?: "exact" | "substring" | "regex" | undefined;
64
+ })[] | undefined;
50
65
  disableDefaultWhitelist?: boolean | undefined;
51
66
  }>;
52
67
  export type VerifyFixInput = z.infer<typeof verifyFixSchema>;
@@ -59,9 +59,15 @@ export const verifyFixSchema = z.object({
59
59
  .optional()
60
60
  .describe("If provided, the verdict is gated on whether this specific patternId disappeared from `after`. Defaults to checking every classified pattern."),
61
61
  expectedAliveClasses: z
62
- .array(z.string().min(1))
62
+ .array(z.union([
63
+ z.string().min(1),
64
+ z.object({
65
+ pattern: z.string().min(1),
66
+ mode: z.enum(["exact", "substring", "regex"]).default("substring"),
67
+ }),
68
+ ]))
63
69
  .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`."),
70
+ .describe("v1.14+. Class names 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.\n\nEach entry can be a plain string (treated as case-insensitive substring, the v1.14 default behavior) OR an object `{ pattern: string, mode?: \"exact\" | \"substring\" | \"regex\" }` (v1.17+). Modes:\n- `exact`: case-insensitive full-string equality. Use for system class names that are stable.\n- `substring`: case-insensitive substring match (the v1.14 default).\n- `regex`: JavaScript regex (anchors / flags as written in the pattern). Use for nuanced class-name shapes.\n\nMerged with the curated default list (DebugSwift's ignoredViewControllerClassNames + ignoredViewClassNames + ignoredWindowClassNames, all `mode: \"exact\"`) unless `disableDefaultWhitelist: true`."),
65
71
  disableDefaultWhitelist: z
66
72
  .boolean()
67
73
  .default(false)
@@ -245,45 +251,59 @@ const ACTIONABLE_DELTA_THRESHOLD = 10;
245
251
  * slice of the deltas, not just the top-25 outliers. The response is
246
252
  * capped further by callers if they pass through `formatMcpResponse`. */
247
253
  const ABANDONED_MEMORY_TOPN = 100;
248
- /**
249
- * v1.12 fallback path: when classified-cycle data is absent from BOTH
250
- * snapshots, the v1.11 verifyFix returned `overallVerdict: "PASS"` with
251
- * no patterns. Useless for the user. Now we chain into
252
- * `analyzeAbandonedMemory` and emit a verdict based on heap-wide class
253
- * deltas:
254
- *
255
- * - At least one actionableShrinkage entry with |delta| >= 10 AND
256
- * actionableGrowth empty (or below threshold): PASS with freedClasses.
257
- * - actionableGrowth non-empty AND actionableShrinkage below threshold:
258
- * FAIL with regressionClasses.
259
- * - Both non-empty above threshold: PARTIAL with both.
260
- * - Both empty / below threshold: PASS with empty freedClasses (clean
261
- * state, no measurable change).
262
- *
263
- * Returns null when even the abandoned-memory path can't run (paths
264
- * inaccessible, etc.); the caller falls back to the cycle-pattern result.
265
- */
254
+ function normalizeWhitelistEntry(entry, defaultMode = "substring") {
255
+ if (typeof entry === "string") {
256
+ return { pattern: entry, mode: defaultMode };
257
+ }
258
+ const mode = entry.mode ?? defaultMode;
259
+ const rule = { pattern: entry.pattern, mode };
260
+ if (mode === "regex") {
261
+ try {
262
+ rule.compiled = new RegExp(entry.pattern);
263
+ }
264
+ catch {
265
+ // Invalid regex: degrade to substring match silently. The user's
266
+ // intent is "filter this", and substring is the safest fallback.
267
+ rule.mode = "substring";
268
+ }
269
+ }
270
+ return rule;
271
+ }
266
272
  /**
267
273
  * 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.
274
+ * default list (unless disabled) with the user-supplied set. v1.14;
275
+ * v1.17 B-02 added per-entry match modes (exact / substring / regex).
270
276
  */
271
277
  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()));
278
+ const base = disableDefault
279
+ ? []
280
+ : DEFAULT_EXPECTED_ALIVE_CLASSES.map((pattern) => normalizeWhitelistEntry({ pattern, mode: "exact" }, "exact"));
281
+ const supplied = (userSupplied ?? []).map((e) => normalizeWhitelistEntry(e));
282
+ return [...base, ...supplied];
275
283
  }
276
284
  /**
277
- * Returns true when the className matches any entry in the whitelist
278
- * (substring match, case-insensitive). v1.14.
285
+ * Returns true when the className matches any entry in the whitelist.
286
+ * Each entry uses its configured match mode. v1.14; v1.17 B-02.
279
287
  */
280
288
  function isExpectedAlive(className, whitelist) {
281
- if (whitelist.size === 0)
289
+ if (whitelist.length === 0)
282
290
  return false;
283
291
  const lc = className.toLowerCase();
284
- for (const w of whitelist)
285
- if (lc.includes(w))
286
- return true;
292
+ for (const rule of whitelist) {
293
+ if (rule.mode === "exact") {
294
+ if (lc === rule.pattern.toLowerCase())
295
+ return true;
296
+ }
297
+ else if (rule.mode === "regex") {
298
+ if (rule.compiled && rule.compiled.test(className))
299
+ return true;
300
+ }
301
+ else {
302
+ // substring (default)
303
+ if (lc.includes(rule.pattern.toLowerCase()))
304
+ return true;
305
+ }
306
+ }
287
307
  return false;
288
308
  }
289
309
  async function buildAbandonedMemoryFallback(beforePath, afterPath, expectedAliveWhitelist) {