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.
Files changed (45) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +76 -34
  3. package/USAGE.md +112 -41
  4. package/dist/index.js +43 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/runtime/axe.d.ts +86 -0
  7. package/dist/runtime/axe.js +249 -0
  8. package/dist/runtime/axe.js.map +1 -0
  9. package/dist/runtime/buildSettings.d.ts +27 -0
  10. package/dist/runtime/buildSettings.js +88 -0
  11. package/dist/runtime/buildSettings.js.map +1 -0
  12. package/dist/runtime/exec.d.ts +8 -1
  13. package/dist/runtime/exec.js +8 -2
  14. package/dist/runtime/exec.js.map +1 -1
  15. package/dist/runtime/fixTemplates.d.ts +27 -0
  16. package/dist/runtime/fixTemplates.js +757 -0
  17. package/dist/runtime/fixTemplates.js.map +1 -0
  18. package/dist/runtime/simctl.d.ts +68 -0
  19. package/dist/runtime/simctl.js +194 -0
  20. package/dist/runtime/simctl.js.map +1 -0
  21. package/dist/runtime/staticAnalysisHints.js +8 -0
  22. package/dist/runtime/staticAnalysisHints.js.map +1 -1
  23. package/dist/tools/bootAndLaunchForLeakInvestigation.d.ts +166 -0
  24. package/dist/tools/bootAndLaunchForLeakInvestigation.js +367 -0
  25. package/dist/tools/bootAndLaunchForLeakInvestigation.js.map +1 -0
  26. package/dist/tools/captureMemgraph.d.ts +29 -1
  27. package/dist/tools/captureMemgraph.js +148 -6
  28. package/dist/tools/captureMemgraph.js.map +1 -1
  29. package/dist/tools/captureScenarioState.d.ts +77 -0
  30. package/dist/tools/captureScenarioState.js +159 -0
  31. package/dist/tools/captureScenarioState.js.map +1 -0
  32. package/dist/tools/classifyCycle.d.ts +7 -0
  33. package/dist/tools/classifyCycle.js +31 -0
  34. package/dist/tools/classifyCycle.js.map +1 -1
  35. package/dist/tools/compareTracesByPattern.d.ts +112 -0
  36. package/dist/tools/compareTracesByPattern.js +312 -0
  37. package/dist/tools/compareTracesByPattern.js.map +1 -0
  38. package/dist/tools/detectLeaksInXCUITest.d.ts +2 -2
  39. package/dist/tools/getInvestigationPlaybook.d.ts +15 -0
  40. package/dist/tools/getInvestigationPlaybook.js +24 -1
  41. package/dist/tools/getInvestigationPlaybook.js.map +1 -1
  42. package/dist/tools/replayScenario.d.ts +243 -0
  43. package/dist/tools/replayScenario.js +187 -0
  44. package/dist/tools/replayScenario.js.map +1 -0
  45. 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>;