memorydetective 1.6.0 → 1.8.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 +49 -0
- package/README.md +76 -34
- package/USAGE.md +112 -41
- package/dist/index.js +43 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/axe.d.ts +86 -0
- package/dist/runtime/axe.js +249 -0
- package/dist/runtime/axe.js.map +1 -0
- package/dist/runtime/buildSettings.d.ts +27 -0
- package/dist/runtime/buildSettings.js +88 -0
- package/dist/runtime/buildSettings.js.map +1 -0
- package/dist/runtime/exec.d.ts +8 -1
- package/dist/runtime/exec.js +8 -2
- package/dist/runtime/exec.js.map +1 -1
- package/dist/runtime/fixTemplates.d.ts +27 -0
- package/dist/runtime/fixTemplates.js +757 -0
- package/dist/runtime/fixTemplates.js.map +1 -0
- package/dist/runtime/simctl.d.ts +68 -0
- package/dist/runtime/simctl.js +194 -0
- package/dist/runtime/simctl.js.map +1 -0
- package/dist/runtime/staticAnalysisHints.js +8 -0
- package/dist/runtime/staticAnalysisHints.js.map +1 -1
- package/dist/tools/bootAndLaunchForLeakInvestigation.d.ts +166 -0
- package/dist/tools/bootAndLaunchForLeakInvestigation.js +367 -0
- package/dist/tools/bootAndLaunchForLeakInvestigation.js.map +1 -0
- package/dist/tools/captureMemgraph.d.ts +29 -1
- package/dist/tools/captureMemgraph.js +148 -6
- package/dist/tools/captureMemgraph.js.map +1 -1
- package/dist/tools/captureScenarioState.d.ts +77 -0
- package/dist/tools/captureScenarioState.js +159 -0
- package/dist/tools/captureScenarioState.js.map +1 -0
- package/dist/tools/classifyCycle.d.ts +7 -0
- package/dist/tools/classifyCycle.js +31 -0
- package/dist/tools/classifyCycle.js.map +1 -1
- package/dist/tools/compareTracesByPattern.d.ts +112 -0
- package/dist/tools/compareTracesByPattern.js +312 -0
- package/dist/tools/compareTracesByPattern.js.map +1 -0
- package/dist/tools/detectLeaksInXCUITest.d.ts +2 -2
- package/dist/tools/getInvestigationPlaybook.d.ts +15 -0
- package/dist/tools/getInvestigationPlaybook.js +24 -1
- package/dist/tools/getInvestigationPlaybook.js.map +1 -1
- package/dist/tools/replayScenario.d.ts +243 -0
- package/dist/tools/replayScenario.js +187 -0
- package/dist/tools/replayScenario.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composite snapshot for verify-fix loops: capture a memgraph + screenshot +
|
|
3
|
+
* UI tree from the current simulator state into one labeled bundle. The
|
|
4
|
+
* intended workflow is `captureScenarioState({label:"before"})` → run a fix
|
|
5
|
+
* (or further repro via replayScenario) → `captureScenarioState({label:"after"})`
|
|
6
|
+
* → diffMemgraphs across the two outputs.
|
|
7
|
+
*
|
|
8
|
+
* Each sub-capture (memgraph, screenshot, uiTree) is best-effort: if one
|
|
9
|
+
* fails, the others still proceed and the failure is surfaced via
|
|
10
|
+
* `subFailures` so the caller has partial state instead of nothing.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
import { type WorkaroundNotice } from "./captureMemgraph.js";
|
|
14
|
+
export declare const captureScenarioStateShape: {
|
|
15
|
+
readonly simulatorUDID: z.ZodString;
|
|
16
|
+
readonly pid: z.ZodOptional<z.ZodNumber>;
|
|
17
|
+
readonly appName: z.ZodOptional<z.ZodString>;
|
|
18
|
+
readonly outputDir: z.ZodString;
|
|
19
|
+
readonly label: z.ZodDefault<z.ZodString>;
|
|
20
|
+
readonly include: z.ZodDefault<z.ZodArray<z.ZodEnum<["memgraph", "screenshot", "uiTree"]>, "many">>;
|
|
21
|
+
};
|
|
22
|
+
export declare const captureScenarioStateSchema: z.ZodEffects<z.ZodObject<{
|
|
23
|
+
readonly simulatorUDID: z.ZodString;
|
|
24
|
+
readonly pid: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
readonly appName: z.ZodOptional<z.ZodString>;
|
|
26
|
+
readonly outputDir: z.ZodString;
|
|
27
|
+
readonly label: z.ZodDefault<z.ZodString>;
|
|
28
|
+
readonly include: z.ZodDefault<z.ZodArray<z.ZodEnum<["memgraph", "screenshot", "uiTree"]>, "many">>;
|
|
29
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
|
+
simulatorUDID: string;
|
|
31
|
+
label: string;
|
|
32
|
+
outputDir: string;
|
|
33
|
+
include: ("screenshot" | "memgraph" | "uiTree")[];
|
|
34
|
+
pid?: number | undefined;
|
|
35
|
+
appName?: string | undefined;
|
|
36
|
+
}, {
|
|
37
|
+
simulatorUDID: string;
|
|
38
|
+
outputDir: string;
|
|
39
|
+
pid?: number | undefined;
|
|
40
|
+
appName?: string | undefined;
|
|
41
|
+
label?: string | undefined;
|
|
42
|
+
include?: ("screenshot" | "memgraph" | "uiTree")[] | undefined;
|
|
43
|
+
}>, {
|
|
44
|
+
simulatorUDID: string;
|
|
45
|
+
label: string;
|
|
46
|
+
outputDir: string;
|
|
47
|
+
include: ("screenshot" | "memgraph" | "uiTree")[];
|
|
48
|
+
pid?: number | undefined;
|
|
49
|
+
appName?: string | undefined;
|
|
50
|
+
}, {
|
|
51
|
+
simulatorUDID: string;
|
|
52
|
+
outputDir: string;
|
|
53
|
+
pid?: number | undefined;
|
|
54
|
+
appName?: string | undefined;
|
|
55
|
+
label?: string | undefined;
|
|
56
|
+
include?: ("screenshot" | "memgraph" | "uiTree")[] | undefined;
|
|
57
|
+
}>;
|
|
58
|
+
export type CaptureScenarioStateInput = z.infer<typeof captureScenarioStateSchema>;
|
|
59
|
+
export interface CaptureScenarioSubFailure {
|
|
60
|
+
kind: "memgraph" | "screenshot" | "uiTree";
|
|
61
|
+
reason: string;
|
|
62
|
+
}
|
|
63
|
+
export interface CaptureScenarioStateResult {
|
|
64
|
+
ok: boolean;
|
|
65
|
+
label: string;
|
|
66
|
+
outputDir: string;
|
|
67
|
+
memgraphPath?: string;
|
|
68
|
+
screenshotPath?: string;
|
|
69
|
+
uiTreePath?: string;
|
|
70
|
+
/** Surfaced from captureMemgraph when leaks fails with a known issue. */
|
|
71
|
+
memgraphWorkaroundNotice?: WorkaroundNotice;
|
|
72
|
+
subFailures: CaptureScenarioSubFailure[];
|
|
73
|
+
warnings?: string[];
|
|
74
|
+
}
|
|
75
|
+
export declare function captureScenarioState(input: CaptureScenarioStateInput): Promise<CaptureScenarioStateResult>;
|
|
76
|
+
/** Pure: replace filesystem-unsafe characters in a label. Exposed for tests. */
|
|
77
|
+
export declare function sanitizeLabel(label: string): string;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composite snapshot for verify-fix loops: capture a memgraph + screenshot +
|
|
3
|
+
* UI tree from the current simulator state into one labeled bundle. The
|
|
4
|
+
* intended workflow is `captureScenarioState({label:"before"})` → run a fix
|
|
5
|
+
* (or further repro via replayScenario) → `captureScenarioState({label:"after"})`
|
|
6
|
+
* → diffMemgraphs across the two outputs.
|
|
7
|
+
*
|
|
8
|
+
* Each sub-capture (memgraph, screenshot, uiTree) is best-effort: if one
|
|
9
|
+
* fails, the others still proceed and the failure is surfaced via
|
|
10
|
+
* `subFailures` so the caller has partial state instead of nothing.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
14
|
+
import { writeFile } from "node:fs/promises";
|
|
15
|
+
import { join as joinPath, resolve as resolvePath } from "node:path";
|
|
16
|
+
import { captureMemgraph, } from "./captureMemgraph.js";
|
|
17
|
+
import { takeScreenshot } from "../runtime/simctl.js";
|
|
18
|
+
import { checkAxeAvailable, describeUI } from "../runtime/axe.js";
|
|
19
|
+
export const captureScenarioStateShape = {
|
|
20
|
+
simulatorUDID: z
|
|
21
|
+
.string()
|
|
22
|
+
.min(1)
|
|
23
|
+
.describe("UDID of the booted simulator hosting the target app. Used for screenshot + UI tree captures."),
|
|
24
|
+
pid: z
|
|
25
|
+
.number()
|
|
26
|
+
.int()
|
|
27
|
+
.positive()
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("PID of the host-side app process. Mutually exclusive with `appName`. Pass the value returned by bootAndLaunchForLeakInvestigation."),
|
|
30
|
+
appName: z
|
|
31
|
+
.string()
|
|
32
|
+
.optional()
|
|
33
|
+
.describe("App executable name as visible in pgrep. Mutually exclusive with `pid`."),
|
|
34
|
+
outputDir: z
|
|
35
|
+
.string()
|
|
36
|
+
.min(1)
|
|
37
|
+
.describe("Absolute directory where the snapshot files are written. Created if it does not exist."),
|
|
38
|
+
label: z
|
|
39
|
+
.string()
|
|
40
|
+
.min(1)
|
|
41
|
+
.default("snapshot")
|
|
42
|
+
.describe("Filename prefix for the captured artifacts. Use \"before\" / \"after\" for verify-fix flows."),
|
|
43
|
+
include: z
|
|
44
|
+
.array(z.enum(["memgraph", "screenshot", "uiTree"]))
|
|
45
|
+
.default(["memgraph", "screenshot", "uiTree"])
|
|
46
|
+
.describe("Which artifacts to capture. Default captures all three."),
|
|
47
|
+
};
|
|
48
|
+
export const captureScenarioStateSchema = z
|
|
49
|
+
.object(captureScenarioStateShape)
|
|
50
|
+
.superRefine((val, ctx) => {
|
|
51
|
+
const targets = [val.pid, val.appName].filter((v) => v !== undefined).length;
|
|
52
|
+
if (targets !== 1) {
|
|
53
|
+
ctx.addIssue({
|
|
54
|
+
code: z.ZodIssueCode.custom,
|
|
55
|
+
message: "Provide exactly one of `pid` or `appName`.",
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
export async function captureScenarioState(input) {
|
|
60
|
+
const outputDir = resolvePath(input.outputDir);
|
|
61
|
+
if (!existsSync(outputDir)) {
|
|
62
|
+
mkdirSync(outputDir, { recursive: true });
|
|
63
|
+
}
|
|
64
|
+
const subFailures = [];
|
|
65
|
+
const warnings = [];
|
|
66
|
+
const safeLabel = sanitizeLabel(input.label);
|
|
67
|
+
let memgraphPath;
|
|
68
|
+
let memgraphWorkaroundNotice;
|
|
69
|
+
if (input.include.includes("memgraph")) {
|
|
70
|
+
const target = joinPath(outputDir, `${safeLabel}.memgraph`);
|
|
71
|
+
try {
|
|
72
|
+
const result = await captureMemgraph({
|
|
73
|
+
...(input.pid ? { pid: input.pid } : {}),
|
|
74
|
+
...(input.appName ? { appName: input.appName } : {}),
|
|
75
|
+
output: target,
|
|
76
|
+
});
|
|
77
|
+
if (result.ok && result.output) {
|
|
78
|
+
memgraphPath = result.output;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
memgraphWorkaroundNotice = result.workaroundNotice;
|
|
82
|
+
subFailures.push({
|
|
83
|
+
kind: "memgraph",
|
|
84
|
+
reason: result.workaroundNotice?.message ??
|
|
85
|
+
result.stderr ??
|
|
86
|
+
"captureMemgraph reported ok:false without a workaroundNotice.",
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (result.warnings) {
|
|
90
|
+
warnings.push(...result.warnings);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
subFailures.push({
|
|
95
|
+
kind: "memgraph",
|
|
96
|
+
reason: err.message,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
let screenshotPath;
|
|
101
|
+
if (input.include.includes("screenshot")) {
|
|
102
|
+
const target = joinPath(outputDir, `${safeLabel}.png`);
|
|
103
|
+
try {
|
|
104
|
+
await takeScreenshot(input.simulatorUDID, target);
|
|
105
|
+
screenshotPath = target;
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
subFailures.push({
|
|
109
|
+
kind: "screenshot",
|
|
110
|
+
reason: err.message,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
let uiTreePath;
|
|
115
|
+
if (input.include.includes("uiTree")) {
|
|
116
|
+
const target = joinPath(outputDir, `${safeLabel}.ui.json`);
|
|
117
|
+
const availability = await checkAxeAvailable();
|
|
118
|
+
if (!availability.available) {
|
|
119
|
+
subFailures.push({
|
|
120
|
+
kind: "uiTree",
|
|
121
|
+
reason: availability.installHint ??
|
|
122
|
+
"axe CLI not found. uiTree capture requires axe.",
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
try {
|
|
127
|
+
const tree = await describeUI(input.simulatorUDID);
|
|
128
|
+
await writeFile(target, JSON.stringify(tree, null, 2), "utf8");
|
|
129
|
+
uiTreePath = target;
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
subFailures.push({
|
|
133
|
+
kind: "uiTree",
|
|
134
|
+
reason: err.message,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const ok = subFailures.length === 0;
|
|
140
|
+
return {
|
|
141
|
+
ok,
|
|
142
|
+
label: input.label,
|
|
143
|
+
outputDir,
|
|
144
|
+
...(memgraphPath ? { memgraphPath } : {}),
|
|
145
|
+
...(screenshotPath ? { screenshotPath } : {}),
|
|
146
|
+
...(uiTreePath ? { uiTreePath } : {}),
|
|
147
|
+
...(memgraphWorkaroundNotice ? { memgraphWorkaroundNotice } : {}),
|
|
148
|
+
subFailures,
|
|
149
|
+
...(warnings.length > 0 ? { warnings } : {}),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/** Pure: replace filesystem-unsafe characters in a label. Exposed for tests. */
|
|
153
|
+
export function sanitizeLabel(label) {
|
|
154
|
+
return label
|
|
155
|
+
.replace(/[\/\\:*?"<>|\s]+/g, "-")
|
|
156
|
+
.replace(/^-+|-+$/g, "")
|
|
157
|
+
.slice(0, 64) || "snapshot";
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=captureScenarioState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captureScenarioState.js","sourceRoot":"","sources":["../../src/tools/captureScenarioState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { type StaticAnalysisHint } from "../runtime/staticAnalysisHints.js";
|
|
3
|
+
import { type FixTemplate } from "../runtime/fixTemplates.js";
|
|
3
4
|
import type { CycleNode, LeaksReport, NextCallSuggestion } from "../types.js";
|
|
4
5
|
export declare const classifyCycleSchema: z.ZodObject<{
|
|
5
6
|
path: z.ZodString;
|
|
@@ -29,6 +30,12 @@ export interface PatternMatch {
|
|
|
29
30
|
* rule exists. Populated for every catalog pattern.
|
|
30
31
|
*/
|
|
31
32
|
staticAnalysisHint?: StaticAnalysisHint;
|
|
33
|
+
/**
|
|
34
|
+
* Optional Swift code template showing typical before/after for the fix.
|
|
35
|
+
* Populated for every catalog pattern. The agent adapts the snippet to
|
|
36
|
+
* the user's actual type/method names via the SourceKit-LSP tools.
|
|
37
|
+
*/
|
|
38
|
+
fixTemplate?: FixTemplate;
|
|
32
39
|
}
|
|
33
40
|
export interface CycleClassification {
|
|
34
41
|
rootClass: string;
|
|
@@ -3,6 +3,7 @@ import { runLeaksAndParse } from "../runtime/leaks.js";
|
|
|
3
3
|
import { rootCyclesOnly, walkCycles } from "../parsers/leaksOutput.js";
|
|
4
4
|
import { pickPrimaryAppClass, suggestionsForClassification, } from "../runtime/suggestions.js";
|
|
5
5
|
import { getStaticAnalysisHint, } from "../runtime/staticAnalysisHints.js";
|
|
6
|
+
import { getFixTemplate, } from "../runtime/fixTemplates.js";
|
|
6
7
|
export const classifyCycleSchema = z.object({
|
|
7
8
|
path: z.string().min(1).describe("Absolute path to a `.memgraph` file."),
|
|
8
9
|
maxResults: z
|
|
@@ -475,6 +476,34 @@ export const PATTERNS = [
|
|
|
475
476
|
return null;
|
|
476
477
|
},
|
|
477
478
|
},
|
|
479
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
480
|
+
// v1.7 catalog — SwiftData + Actor cycle (deferred from v1.6 as low
|
|
481
|
+
// priority). Apple fixed at the framework level in iOS 18 beta 1
|
|
482
|
+
// (FB13844786) but the user-code shape persists on older targets.
|
|
483
|
+
// Source: Apple Developer Forums #748042.
|
|
484
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
485
|
+
{
|
|
486
|
+
id: "swiftdata.modelcontext-actor-cycle",
|
|
487
|
+
name: "SwiftData ModelContext retained by actor through DefaultSerialModelExecutor",
|
|
488
|
+
fixHint: "An `Actor` instance retains a `DefaultSerialModelExecutor`, which retains a `ModelContext`, which (via the executor's reference back to the actor for serialization) closes a cycle. Apple fixed the framework-level shape in iOS 18 beta 1 (FB13844786), but the bug reproduces in user code on older targets and in some custom executor patterns. Fix: prefer `@ModelActor`-generated executors over hand-rolled ones; or, when you must roll your own, hold the `ModelContext` weakly inside the executor and re-resolve it per operation rather than caching it. Always provide a `deinit` on the actor that calls `try? context.save()` and explicitly clears the executor reference.",
|
|
489
|
+
match: (_root, allClasses) => {
|
|
490
|
+
const classes = Array.from(allClasses);
|
|
491
|
+
const hasModelContext = classes.some((c) => c.includes("ModelContext") ||
|
|
492
|
+
c.includes("ModelContainer") ||
|
|
493
|
+
c.includes("PersistentModel"));
|
|
494
|
+
const hasExecutor = classes.some((c) => c.includes("DefaultSerialModelExecutor") ||
|
|
495
|
+
c.includes("ModelActor") ||
|
|
496
|
+
c.includes("ModelExecutor"));
|
|
497
|
+
const hasActor = classes.some((c) => c.includes("Actor") || c.includes("_Concurrency.Actor"));
|
|
498
|
+
if (hasModelContext && hasExecutor && hasActor)
|
|
499
|
+
return "high";
|
|
500
|
+
if (hasModelContext && hasExecutor)
|
|
501
|
+
return "medium";
|
|
502
|
+
if (hasModelContext)
|
|
503
|
+
return "low";
|
|
504
|
+
return null;
|
|
505
|
+
},
|
|
506
|
+
},
|
|
478
507
|
];
|
|
479
508
|
/** Pure: classify each ROOT CYCLE in the parsed report. */
|
|
480
509
|
export function classifyReport(report, maxResults = 20) {
|
|
@@ -494,6 +523,7 @@ export function classifyReport(report, maxResults = 20) {
|
|
|
494
523
|
const conf = p.match(root, allClasses);
|
|
495
524
|
if (conf) {
|
|
496
525
|
const hint = getStaticAnalysisHint(p.id);
|
|
526
|
+
const template = getFixTemplate(p.id);
|
|
497
527
|
matches.push({
|
|
498
528
|
patternId: p.id,
|
|
499
529
|
name: p.name,
|
|
@@ -501,6 +531,7 @@ export function classifyReport(report, maxResults = 20) {
|
|
|
501
531
|
reason: `Pattern ${p.id} matched`,
|
|
502
532
|
fixHint: p.fixHint,
|
|
503
533
|
...(hint ? { staticAnalysisHint: hint } : {}),
|
|
534
|
+
...(template ? { fixTemplate: template } : {}),
|
|
504
535
|
});
|
|
505
536
|
}
|
|
506
537
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classifyCycle.js","sourceRoot":"","sources":["../../src/tools/classifyCycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"classifyCycle.js","sourceRoot":"","sources":["../../src/tools/classifyCycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type AnalyzeHangsResult } from "./analyzeHangs.js";
|
|
3
|
+
import { type AnalyzeAnimationHitchesResult } from "./analyzeAnimationHitches.js";
|
|
4
|
+
import { type AnalyzeAppLaunchResult } from "./analyzeAppLaunch.js";
|
|
5
|
+
import type { NextCallSuggestion } from "../types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Trace-side counterpart to `verifyFix` (which works on `.memgraph`).
|
|
8
|
+
* Compares before/after `.trace` bundles for a specific perf category
|
|
9
|
+
* (hangs, animation-hitches, app-launch) and returns a per-category
|
|
10
|
+
* PASS/PARTIAL/FAIL verdict + numerical deltas.
|
|
11
|
+
*
|
|
12
|
+
* Designed for CI gating: a build script can run a hangs-fix PR's
|
|
13
|
+
* before/after traces through this tool and fail the merge if the
|
|
14
|
+
* regression target isn't met.
|
|
15
|
+
*
|
|
16
|
+
* Composes with the underlying analyzers — same data shape, just
|
|
17
|
+
* surfaced as a diff.
|
|
18
|
+
*/
|
|
19
|
+
export declare const compareTracesByPatternSchema: z.ZodObject<{
|
|
20
|
+
before: z.ZodString;
|
|
21
|
+
after: z.ZodString;
|
|
22
|
+
category: z.ZodEnum<["hangs", "animation-hitches", "app-launch"]>;
|
|
23
|
+
thresholds: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
24
|
+
hangsMaxLongestMs: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
hitchesMaxLongestMs: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
appLaunchMaxTotalMs: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
hangsMaxLongestMs?: number | undefined;
|
|
29
|
+
hitchesMaxLongestMs?: number | undefined;
|
|
30
|
+
appLaunchMaxTotalMs?: number | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
hangsMaxLongestMs?: number | undefined;
|
|
33
|
+
hitchesMaxLongestMs?: number | undefined;
|
|
34
|
+
appLaunchMaxTotalMs?: number | undefined;
|
|
35
|
+
}>>>;
|
|
36
|
+
hangsMinDurationMs: z.ZodDefault<z.ZodNumber>;
|
|
37
|
+
hitchesMinDurationMs: z.ZodDefault<z.ZodNumber>;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
before: string;
|
|
40
|
+
after: string;
|
|
41
|
+
category: "animation-hitches" | "app-launch" | "hangs";
|
|
42
|
+
thresholds: {
|
|
43
|
+
hangsMaxLongestMs?: number | undefined;
|
|
44
|
+
hitchesMaxLongestMs?: number | undefined;
|
|
45
|
+
appLaunchMaxTotalMs?: number | undefined;
|
|
46
|
+
};
|
|
47
|
+
hangsMinDurationMs: number;
|
|
48
|
+
hitchesMinDurationMs: number;
|
|
49
|
+
}, {
|
|
50
|
+
before: string;
|
|
51
|
+
after: string;
|
|
52
|
+
category: "animation-hitches" | "app-launch" | "hangs";
|
|
53
|
+
thresholds?: {
|
|
54
|
+
hangsMaxLongestMs?: number | undefined;
|
|
55
|
+
hitchesMaxLongestMs?: number | undefined;
|
|
56
|
+
appLaunchMaxTotalMs?: number | undefined;
|
|
57
|
+
} | undefined;
|
|
58
|
+
hangsMinDurationMs?: number | undefined;
|
|
59
|
+
hitchesMinDurationMs?: number | undefined;
|
|
60
|
+
}>;
|
|
61
|
+
export type CompareTracesByPatternInput = z.infer<typeof compareTracesByPatternSchema>;
|
|
62
|
+
export type Verdict = "PASS" | "PARTIAL" | "FAIL";
|
|
63
|
+
export interface CategoryComparison {
|
|
64
|
+
count: number;
|
|
65
|
+
longestMs: number;
|
|
66
|
+
averageMs: number;
|
|
67
|
+
totalMs: number;
|
|
68
|
+
}
|
|
69
|
+
export interface CompareTracesByPatternResult {
|
|
70
|
+
ok: boolean;
|
|
71
|
+
before: string;
|
|
72
|
+
after: string;
|
|
73
|
+
category: "hangs" | "animation-hitches" | "app-launch";
|
|
74
|
+
verdict: Verdict;
|
|
75
|
+
beforeStats: CategoryComparison;
|
|
76
|
+
afterStats: CategoryComparison;
|
|
77
|
+
delta: {
|
|
78
|
+
count: number;
|
|
79
|
+
longestMs: number;
|
|
80
|
+
averageMs: number;
|
|
81
|
+
totalMs: number;
|
|
82
|
+
};
|
|
83
|
+
thresholdApplied: {
|
|
84
|
+
field: string;
|
|
85
|
+
value: number;
|
|
86
|
+
};
|
|
87
|
+
diagnosis: string;
|
|
88
|
+
suggestedNextCalls?: NextCallSuggestion[];
|
|
89
|
+
}
|
|
90
|
+
/** Pure: build the comparison from two analyzer results. */
|
|
91
|
+
export declare function compareHangs(before: AnalyzeHangsResult, after: AnalyzeHangsResult, thresholdLongestMs: number): {
|
|
92
|
+
beforeStats: CategoryComparison;
|
|
93
|
+
afterStats: CategoryComparison;
|
|
94
|
+
delta: CompareTracesByPatternResult["delta"];
|
|
95
|
+
verdict: Verdict;
|
|
96
|
+
};
|
|
97
|
+
/** Pure: same shape as `compareHangs` for animation-hitches. */
|
|
98
|
+
export declare function compareAnimationHitches(before: AnalyzeAnimationHitchesResult, after: AnalyzeAnimationHitchesResult, thresholdLongestMs: number): {
|
|
99
|
+
beforeStats: CategoryComparison;
|
|
100
|
+
afterStats: CategoryComparison;
|
|
101
|
+
delta: CompareTracesByPatternResult["delta"];
|
|
102
|
+
verdict: Verdict;
|
|
103
|
+
};
|
|
104
|
+
/** Pure: app-launch comparison. The "count" field reflects launch-event count
|
|
105
|
+
* (typically 1 per trace); the meaningful number is `totalMs`. */
|
|
106
|
+
export declare function compareAppLaunch(before: AnalyzeAppLaunchResult, after: AnalyzeAppLaunchResult, thresholdTotalMs: number): {
|
|
107
|
+
beforeStats: CategoryComparison;
|
|
108
|
+
afterStats: CategoryComparison;
|
|
109
|
+
delta: CompareTracesByPatternResult["delta"];
|
|
110
|
+
verdict: Verdict;
|
|
111
|
+
};
|
|
112
|
+
export declare function compareTracesByPattern(input: CompareTracesByPatternInput): Promise<CompareTracesByPatternResult>;
|