reflection-check 0.0.3 → 0.0.5

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/dist/cli.js CHANGED
@@ -14,7 +14,7 @@ export function createCli() {
14
14
  program
15
15
  .name('reflection')
16
16
  .description('Evidence-backed rendered UI validation.')
17
- .version('0.0.3')
17
+ .version('0.0.5')
18
18
  .configureOutput({
19
19
  outputError: (message, write) => write(message)
20
20
  });
@@ -79,9 +79,30 @@ function printConfigSummary(config, serverReachability) {
79
79
  ? `Design contract: ${design.enabled === false ? 'disabled' : 'enabled'}, ${formatCount(design.commands.length, 'command')}`
80
80
  : 'Design contract: not configured');
81
81
  const component = config.contracts.component;
82
- console.log(component
83
- ? `Component contract: ${component.enabled === false ? 'disabled' : 'enabled'}, ${formatCount(component.cases.length, 'case')}`
84
- : 'Component contract: not configured');
82
+ if (component) {
83
+ const runtime = describeComponentRuntime(component);
84
+ console.log(`Component contract: ${component.enabled === false ? 'disabled' : 'enabled'}, ${formatCount(component.cases.length, 'case')}, runtime ${runtime}`);
85
+ if (component.portal) {
86
+ console.log(`Component portal: readyUrl ${component.portal.readyUrl}, reuseExisting ${component.portal.reuseExisting}, timeoutMs ${component.portal.timeoutMs}`);
87
+ }
88
+ }
89
+ else {
90
+ console.log('Component contract: not configured');
91
+ }
92
+ }
93
+ function describeComponentRuntime(component) {
94
+ const hasStorybookCases = component.cases.some((visualCase) => Boolean(visualCase.storyId));
95
+ const hasPortalCases = component.cases.some((visualCase) => Boolean(visualCase.path));
96
+ if (hasStorybookCases && hasPortalCases) {
97
+ return 'mixed';
98
+ }
99
+ if (hasPortalCases) {
100
+ return 'portal';
101
+ }
102
+ if (hasStorybookCases) {
103
+ return 'storybook';
104
+ }
105
+ return 'none';
85
106
  }
86
107
  async function checkConfiguredServerReachability(config) {
87
108
  const readyUrl = config.contracts.browser?.server?.readyUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,19 @@
1
1
  import type { ArtifactStore } from '../../core/artifact-store.js';
2
2
  import type { CheckResult } from '../../core/report-schema.js';
3
3
  import type { ServerConfig } from '../../core/server-manager.js';
4
+ import { type ViewportSize } from '../../integrations/playwright/context-factory.js';
5
+ import { type PortalConfig } from '../../integrations/portal/server.js';
4
6
  import type { VisualThreshold } from '../visual/thresholds.js';
7
+ export type ComponentSource = 'storybook' | 'portal';
5
8
  export type ComponentVisualCase = {
6
9
  id: string;
7
- storyId: string;
10
+ storyId?: string | undefined;
11
+ path?: string | undefined;
8
12
  baseline: string;
9
13
  baselineRoot?: string | undefined;
10
14
  viewport?: string | undefined;
15
+ viewportSize?: ViewportSize | undefined;
16
+ framing?: ComponentFraming | undefined;
11
17
  threshold?: VisualThreshold | undefined;
12
18
  blocking?: boolean | undefined;
13
19
  strict?: boolean | undefined;
@@ -22,9 +28,16 @@ export type ComponentBrowserState = {
22
28
  waitMs?: number | undefined;
23
29
  };
24
30
  };
31
+ export type ComponentFraming = {
32
+ rootSelector?: string | undefined;
33
+ background?: string | undefined;
34
+ align: 'center' | 'start';
35
+ padding: number;
36
+ };
25
37
  export type ComponentVisualContractConfig = {
26
38
  enabled?: boolean | undefined;
27
- storybook: ServerConfig;
39
+ storybook?: ServerConfig | undefined;
40
+ portal?: PortalConfig | undefined;
28
41
  cases: ComponentVisualCase[];
29
42
  };
30
43
  export declare function runComponentVisualContract(config: ComponentVisualContractConfig | undefined, store: ArtifactStore): Promise<CheckResult[]>;
@@ -3,6 +3,7 @@ import { dirname } from 'node:path';
3
3
  import { createBaselineStore, createMissingBaselineCheck } from '../../core/baseline-store.js';
4
4
  import { createBrowserContext } from '../../integrations/playwright/context-factory.js';
5
5
  import { launchBrowser } from '../../integrations/playwright/browser-manager.js';
6
+ import { startReflectionPortalServer } from '../../integrations/portal/server.js';
6
7
  import { startStorybookServer } from '../../integrations/storybook/server.js';
7
8
  import { resolveStoryUrl } from '../../integrations/storybook/story-url.js';
8
9
  import { comparePngImages } from '../visual/image-diff.js';
@@ -10,27 +11,73 @@ export async function runComponentVisualContract(config, store) {
10
11
  if (!config || config.enabled === false || config.cases.length === 0) {
11
12
  return [];
12
13
  }
13
- const storybook = await startStorybookServer(config.storybook, {
14
- cwd: process.cwd(),
15
- logPath: store.resolveRunPath('server/storybook.log')
16
- });
14
+ const storybookCases = config.cases.filter(isStorybookCase);
15
+ const portalCases = config.cases.filter(isPortalCase);
16
+ if (storybookCases.length > 0 && !config.storybook) {
17
+ throw new Error('Storybook component visual cases require component.storybook.');
18
+ }
19
+ if (portalCases.length > 0 && !config.portal) {
20
+ throw new Error('Portal component visual cases require component.portal.');
21
+ }
22
+ const storybook = storybookCases.length > 0 && config.storybook
23
+ ? await startStorybookServer(config.storybook, {
24
+ cwd: process.cwd(),
25
+ logPath: store.resolveRunPath('server/storybook.log')
26
+ })
27
+ : undefined;
28
+ const portal = portalCases.length > 0 && config.portal
29
+ ? await startReflectionPortalServer(config.portal, portalCases.map((visualCase) => ({
30
+ id: visualCase.id,
31
+ path: visualCase.path,
32
+ viewport: visualCase.viewport ?? 'component',
33
+ viewportSize: visualCase.viewportSize,
34
+ framing: resolveComponentFraming(visualCase.framing, 'portal')
35
+ })), {
36
+ cwd: process.cwd(),
37
+ rootDir: store.resolveRunPath('server/portal')
38
+ })
39
+ : undefined;
17
40
  const browser = await launchBrowser();
18
41
  try {
19
42
  const checks = [];
20
- for (const visualCase of config.cases) {
43
+ for (const visualCase of storybookCases) {
44
+ if (!storybook)
45
+ continue;
21
46
  const storyUrl = resolveStoryUrl(storybook.index, storybook.baseUrl, visualCase.storyId);
22
- checks.push(await runComponentVisualCase({ visualCase, storyUrl, store, browser }));
47
+ checks.push(await runComponentVisualCase({
48
+ visualCase,
49
+ componentSource: 'storybook',
50
+ targetUrl: storyUrl,
51
+ targetLabel: visualCase.storyId,
52
+ store,
53
+ browser
54
+ }));
55
+ }
56
+ for (const visualCase of portalCases) {
57
+ if (!portal)
58
+ continue;
59
+ const portalUrl = new URL(visualCase.path, portal.baseUrl).toString();
60
+ checks.push(await runComponentVisualCase({
61
+ visualCase,
62
+ componentSource: 'portal',
63
+ targetUrl: portalUrl,
64
+ targetLabel: visualCase.path,
65
+ store,
66
+ browser
67
+ }));
23
68
  }
24
69
  return checks;
25
70
  }
26
71
  finally {
27
72
  await browser.close();
28
- await storybook.server.stop();
73
+ await storybook?.server.stop();
74
+ await portal?.server.stop();
29
75
  }
30
76
  }
31
77
  async function runComponentVisualCase(input) {
32
78
  const viewport = input.visualCase.viewport ?? 'component';
33
- const target = `${input.visualCase.storyId} ${viewport}`;
79
+ const viewportSize = input.visualCase.viewportSize;
80
+ const target = `${input.targetLabel} ${viewport}`;
34
81
  const baselinePath = resolveCaseBaselinePath(input.visualCase);
35
82
  const blocking = input.visualCase.blocking === true || input.visualCase.strict === true;
36
83
  const strict = input.visualCase.strict === true || input.visualCase.blocking === true;
@@ -40,58 +87,95 @@ async function runComponentVisualCase(input) {
40
87
  target,
41
88
  baselinePath: input.visualCase.baseline,
42
89
  blocking,
43
- metadata: createComponentStateMetadata(input.visualCase)
90
+ metadata: {
91
+ ...createComponentSourceMetadata(input),
92
+ ...createComponentMetadata(input.visualCase, input.componentSource)
93
+ }
44
94
  });
45
95
  }
46
96
  const artifactBase = `visual/${input.visualCase.id}`;
47
97
  const expectedArtifact = await input.store.writeBuffer(`${artifactBase}/expected.png`, await readFile(baselinePath));
48
- const actualArtifact = await captureComponentScreenshot({
49
- browser: input.browser,
50
- store: input.store,
51
- path: `${artifactBase}/actual.png`,
52
- storyUrl: input.storyUrl,
53
- viewport,
54
- browserState: input.visualCase.browserState
55
- });
56
- const diffRelativePath = `${artifactBase}/diff.png`;
57
- const diffPath = input.store.resolveRunPath(diffRelativePath);
58
- await mkdir(dirname(diffPath), { recursive: true });
59
- const result = await comparePngImages({
60
- expectedPath: baselinePath,
61
- actualPath: input.store.resolveRunPath(actualArtifact.path),
62
- diffPath,
63
- ...(input.visualCase.threshold ? { threshold: input.visualCase.threshold } : {}),
64
- strict
65
- });
66
- const diffArtifact = result.diffPath ? await input.store.describeArtifact(diffRelativePath, 'visual-diff', 'diff') : undefined;
67
- const severity = result.status === 'fail' && blocking ? 'blocking' : 'review';
68
- return {
69
- id: `visual.${input.visualCase.id}`,
70
- suite: 'visual',
71
- target,
72
- status: result.status,
73
- severity,
74
- summary: createComponentVisualSummary(input.visualCase.id, result),
75
- artifacts: [expectedArtifact, actualArtifact, ...(diffArtifact ? [diffArtifact] : [])],
76
- metadata: {
77
- ...result,
78
- storyId: input.visualCase.storyId,
79
- storyUrl: input.storyUrl,
98
+ try {
99
+ const actualArtifact = await captureComponentScreenshot({
100
+ browser: input.browser,
101
+ store: input.store,
102
+ path: `${artifactBase}/actual.png`,
103
+ targetUrl: input.targetUrl,
104
+ componentSource: input.componentSource,
80
105
  viewport,
81
- baselinePath: input.visualCase.baseline,
82
- ...createComponentStateMetadata(input.visualCase)
83
- },
84
- ...(result.status === 'pass'
85
- ? {}
86
- : { suggestedNextStep: 'Inspect expected, actual, and diff artifacts. If intentional, update only this component visual baseline.' })
87
- };
106
+ viewportSize,
107
+ framing: resolveComponentFraming(input.visualCase.framing, input.componentSource),
108
+ browserState: input.visualCase.browserState
109
+ });
110
+ const diffRelativePath = `${artifactBase}/diff.png`;
111
+ const diffPath = input.store.resolveRunPath(diffRelativePath);
112
+ await mkdir(dirname(diffPath), { recursive: true });
113
+ const result = await comparePngImages({
114
+ expectedPath: baselinePath,
115
+ actualPath: input.store.resolveRunPath(actualArtifact.path),
116
+ diffPath,
117
+ ...(input.visualCase.threshold ? { threshold: input.visualCase.threshold } : {}),
118
+ strict
119
+ });
120
+ const diffArtifact = result.diffPath ? await input.store.describeArtifact(diffRelativePath, 'visual-diff', 'diff') : undefined;
121
+ const severity = result.status === 'fail' && blocking ? 'blocking' : 'review';
122
+ return {
123
+ id: `visual.${input.visualCase.id}`,
124
+ suite: 'visual',
125
+ target,
126
+ status: result.status,
127
+ severity,
128
+ summary: createComponentVisualSummary(input.visualCase.id, result),
129
+ artifacts: [expectedArtifact, actualArtifact, ...(diffArtifact ? [diffArtifact] : [])],
130
+ metadata: {
131
+ ...result,
132
+ ...createComponentSourceMetadata(input),
133
+ viewport,
134
+ baselinePath: input.visualCase.baseline,
135
+ ...createComponentMetadata(input.visualCase, input.componentSource)
136
+ },
137
+ ...(result.status === 'pass'
138
+ ? {}
139
+ : { suggestedNextStep: 'Inspect expected, actual, and diff artifacts. If intentional, update only this component visual baseline.' })
140
+ };
141
+ }
142
+ catch (error) {
143
+ const summary = `${input.visualCase.id} component visual capture failed: ${error instanceof Error ? error.message : String(error)}`;
144
+ return {
145
+ id: `visual.${input.visualCase.id}`,
146
+ suite: 'visual',
147
+ target,
148
+ status: 'fail',
149
+ severity: blocking ? 'blocking' : 'review',
150
+ summary,
151
+ artifacts: [expectedArtifact],
152
+ metadata: {
153
+ classification: 'tool-error',
154
+ ...createComponentSourceMetadata(input),
155
+ viewport,
156
+ baselinePath: input.visualCase.baseline,
157
+ ...createComponentMetadata(input.visualCase, input.componentSource)
158
+ },
159
+ suggestedNextStep: 'Fix the component visual runtime setup, then rerun Reflection.'
160
+ };
161
+ }
88
162
  }
89
163
  async function captureComponentScreenshot(input) {
90
- const context = await createBrowserContext(input.browser, input.viewport);
164
+ const context = await createBrowserContext(input.browser, input.viewport, input.viewportSize);
91
165
  try {
92
166
  const page = await context.newPage();
93
- await page.goto(input.storyUrl, { waitUntil: 'domcontentloaded' });
167
+ await page.goto(input.targetUrl, { waitUntil: 'domcontentloaded' });
94
168
  await page.waitForLoadState('networkidle', { timeout: 2_000 }).catch(() => undefined);
169
+ if (input.componentSource === 'portal') {
170
+ await waitForPortalReady(page);
171
+ if (!input.viewportSize) {
172
+ throw new Error('Portal component visual cases require viewportSize.');
173
+ }
174
+ await assertPortalFrameDimensions(page, input.viewportSize);
175
+ }
176
+ else if (input.framing) {
177
+ await applyComponentFraming(page, input.framing);
178
+ }
95
179
  if (input.browserState) {
96
180
  await applyBrowserState(page, input.browserState);
97
181
  }
@@ -101,6 +185,61 @@ async function captureComponentScreenshot(input) {
101
185
  await context.close();
102
186
  }
103
187
  }
188
+ async function applyComponentFraming(page, framing) {
189
+ await page.locator(framing.rootSelector).waitFor({ state: 'attached', timeout: 2_000 });
190
+ const background = framing.background ? `background: ${framing.background} !important;` : '';
191
+ const alignment = framing.align === 'center'
192
+ ? 'display: grid !important; place-items: center !important;'
193
+ : 'display: block !important;';
194
+ await page.addStyleTag({
195
+ content: `
196
+ html,
197
+ body {
198
+ margin: 0 !important;
199
+ width: 100% !important;
200
+ min-width: 100% !important;
201
+ height: 100% !important;
202
+ min-height: 100% !important;
203
+ overflow: hidden !important;
204
+ ${background}
205
+ }
206
+
207
+ ${framing.rootSelector} {
208
+ box-sizing: border-box !important;
209
+ width: 100% !important;
210
+ min-width: 100% !important;
211
+ height: 100% !important;
212
+ min-height: 100% !important;
213
+ margin: 0 !important;
214
+ padding: ${framing.padding}px !important;
215
+ ${background}
216
+ ${alignment}
217
+ }
218
+ `
219
+ });
220
+ }
221
+ async function waitForPortalReady(page) {
222
+ await page.waitForFunction(() => {
223
+ const portalState = globalThis;
224
+ return portalState.__reflectionPortalReady === true || typeof portalState.__reflectionPortalError === 'string';
225
+ }, undefined, { timeout: 5_000 });
226
+ const portalError = await page.evaluate(() => {
227
+ const portalState = globalThis;
228
+ return portalState.__reflectionPortalError;
229
+ });
230
+ if (portalError) {
231
+ throw new Error(portalError);
232
+ }
233
+ }
234
+ async function assertPortalFrameDimensions(page, viewportSize) {
235
+ const frame = await page.locator('#reflection-root').boundingBox({ timeout: 2_000 });
236
+ if (!frame) {
237
+ throw new Error('Reflection portal frame #reflection-root was not found.');
238
+ }
239
+ if (frame.width !== viewportSize.width || frame.height !== viewportSize.height) {
240
+ throw new Error(`Reflection portal frame rendered ${frame.width}x${frame.height}, expected ${viewportSize.width}x${viewportSize.height}.`);
241
+ }
242
+ }
104
243
  async function applyBrowserState(page, browserState) {
105
244
  if (browserState.animationStabilization.disableAnimations !== false) {
106
245
  await page.addStyleTag({ content: '*, *::before, *::after { animation: none !important; transition: none !important; }' });
@@ -115,13 +254,40 @@ async function applyBrowserState(page, browserState) {
115
254
  await page.waitForTimeout(browserState.animationStabilization.waitMs);
116
255
  }
117
256
  }
118
- function createComponentStateMetadata(visualCase) {
257
+ function createComponentStateMetadata(visualCase, componentSource) {
119
258
  return {
120
- statePolicy: visualCase.browserState ? 'browser-forced-with-stabilization' : 'story-controlled',
259
+ statePolicy: visualCase.browserState ? 'browser-forced-with-stabilization' : componentSource === 'portal' ? 'portal-controlled' : 'story-controlled',
121
260
  ...(visualCase.stateNote ? { stateNote: visualCase.stateNote } : {}),
122
261
  ...(visualCase.browserState ? { browserState: visualCase.browserState } : {})
123
262
  };
124
263
  }
264
+ function createComponentMetadata(visualCase, componentSource) {
265
+ const framing = resolveComponentFraming(visualCase.framing, componentSource);
266
+ return {
267
+ ...(visualCase.viewportSize ? { viewportSize: visualCase.viewportSize } : {}),
268
+ ...(framing ? { framing } : {}),
269
+ ...createComponentStateMetadata(visualCase, componentSource)
270
+ };
271
+ }
272
+ function createComponentSourceMetadata(input) {
273
+ return {
274
+ componentSource: input.componentSource,
275
+ ...(input.visualCase.storyId ? { storyId: input.visualCase.storyId, storyUrl: input.targetUrl } : {}),
276
+ ...(input.visualCase.path ? { path: input.visualCase.path, portalUrl: input.targetUrl } : {})
277
+ };
278
+ }
279
+ function resolveComponentFraming(framing, componentSource) {
280
+ if (!framing && componentSource === 'portal') {
281
+ return { rootSelector: '#reflection-root', align: 'center', padding: 0 };
282
+ }
283
+ if (!framing) {
284
+ return undefined;
285
+ }
286
+ return {
287
+ ...framing,
288
+ rootSelector: framing.rootSelector ?? (componentSource === 'portal' ? '#reflection-root' : '#storybook-root')
289
+ };
290
+ }
125
291
  function resolveCaseBaselinePath(visualCase) {
126
292
  const store = createBaselineStore(visualCase.baselineRoot ? { rootDir: visualCase.baselineRoot } : {});
127
293
  return store.resolveBaselinePath(visualCase.baseline);
@@ -144,4 +310,10 @@ function createComponentVisualSummary(id, result) {
144
310
  }
145
311
  return `${id} differs from approved component visual baseline by ${(result.diffRatio * 100).toFixed(2)}% (${result.diffPixels} pixels)${result.thresholdReason ? `, exceeding ${result.thresholdReason}` : ''}.`;
146
312
  }
313
+ function isStorybookCase(visualCase) {
314
+ return typeof visualCase.storyId === 'string';
315
+ }
316
+ function isPortalCase(visualCase) {
317
+ return typeof visualCase.path === 'string' && visualCase.viewportSize !== undefined;
318
+ }
147
319
  //# sourceMappingURL=component-visual-contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-visual-contract.js","sourceRoot":"","sources":["../../../src/contracts/component/component-visual-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-visual-contract.js","sourceRoot":"","sources":["../../../src/contracts/component/component-visual-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ViewportSize } from '../../integrations/playwright/context-factory.js';
2
+ export type ReflectionPortalFraming = {
3
+ background?: string | undefined;
4
+ align: 'center' | 'start';
5
+ padding: number;
6
+ };
7
+ export type ReflectionPortalMountInput = {
8
+ id: string;
9
+ path: string;
10
+ root: HTMLElement;
11
+ viewport: string;
12
+ viewportSize: ViewportSize;
13
+ framing: ReflectionPortalFraming;
14
+ };
15
+ export type ReflectionPortalCleanup = void | (() => void);
16
+ export type ReflectionPortalMountResult = ReflectionPortalCleanup | Promise<ReflectionPortalCleanup>;
17
+ export type ReflectionPortalMount = (input: ReflectionPortalMountInput) => ReflectionPortalMountResult;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=portal-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal-entry.js","sourceRoot":"","sources":["../../../src/contracts/component/portal-entry.ts"],"names":[],"mappings":""}
@@ -94,16 +94,37 @@ declare const ReflectionConfigSchema: z.ZodObject<{
94
94
  }, z.core.$strip>>;
95
95
  component: z.ZodOptional<z.ZodObject<{
96
96
  enabled: z.ZodDefault<z.ZodBoolean>;
97
- storybook: z.ZodObject<{
97
+ storybook: z.ZodOptional<z.ZodObject<{
98
98
  command: z.ZodString;
99
99
  readyUrl: z.ZodString;
100
100
  reuseExisting: z.ZodDefault<z.ZodBoolean>;
101
101
  timeoutMs: z.ZodDefault<z.ZodNumber>;
102
- }, z.core.$strip>;
102
+ }, z.core.$strip>>;
103
+ portal: z.ZodOptional<z.ZodObject<{
104
+ entry: z.ZodString;
105
+ readyUrl: z.ZodString;
106
+ reuseExisting: z.ZodDefault<z.ZodBoolean>;
107
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
108
+ viteConfig: z.ZodOptional<z.ZodString>;
109
+ }, z.core.$strip>>;
103
110
  cases: z.ZodDefault<z.ZodArray<z.ZodObject<{
104
111
  id: z.ZodString;
105
- storyId: z.ZodString;
112
+ storyId: z.ZodOptional<z.ZodString>;
113
+ path: z.ZodOptional<z.ZodString>;
106
114
  viewport: z.ZodDefault<z.ZodString>;
115
+ viewportSize: z.ZodOptional<z.ZodObject<{
116
+ width: z.ZodNumber;
117
+ height: z.ZodNumber;
118
+ }, z.core.$strip>>;
119
+ framing: z.ZodOptional<z.ZodObject<{
120
+ rootSelector: z.ZodOptional<z.ZodString>;
121
+ background: z.ZodOptional<z.ZodString>;
122
+ align: z.ZodDefault<z.ZodEnum<{
123
+ center: "center";
124
+ start: "start";
125
+ }>>;
126
+ padding: z.ZodDefault<z.ZodNumber>;
127
+ }, z.core.$strip>>;
107
128
  baseline: z.ZodString;
108
129
  baselineRoot: z.ZodOptional<z.ZodString>;
109
130
  threshold: z.ZodOptional<z.ZodObject<{