@sdods/contracts 0.2.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.
@@ -0,0 +1,931 @@
1
+ import { z } from 'zod';
2
+ export declare const LayerSchema: z.ZodEnum<{
3
+ ui: "ui";
4
+ api: "api";
5
+ hybrid: "hybrid";
6
+ recorded: "recorded";
7
+ }>;
8
+ export declare const BrowserSchema: z.ZodEnum<{
9
+ chromium: "chromium";
10
+ firefox: "firefox";
11
+ webkit: "webkit";
12
+ "mobile-chrome": "mobile-chrome";
13
+ "mobile-safari": "mobile-safari";
14
+ }>;
15
+ export declare const ShotPolicySchema: z.ZodEnum<{
16
+ off: "off";
17
+ "on-failure": "on-failure";
18
+ scenario: "scenario";
19
+ step: "step";
20
+ visual: "visual";
21
+ }>;
22
+ export declare const SlugSchema: z.ZodString;
23
+ export declare const DataSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
24
+ type: z.ZodLiteral<"csv">;
25
+ path: z.ZodString;
26
+ fallback: z.ZodOptional<z.ZodString>;
27
+ }, z.core.$strip>, z.ZodObject<{
28
+ type: z.ZodLiteral<"json">;
29
+ path: z.ZodString;
30
+ fallback: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>, z.ZodObject<{
32
+ type: z.ZodLiteral<"yaml">;
33
+ path: z.ZodString;
34
+ fallback: z.ZodOptional<z.ZodString>;
35
+ }, z.core.$strip>, z.ZodObject<{
36
+ type: z.ZodLiteral<"db">;
37
+ table: z.ZodString;
38
+ envColumn: z.ZodDefault<z.ZodString>;
39
+ }, z.core.$strip>, z.ZodObject<{
40
+ type: z.ZodLiteral<"openapi">;
41
+ spec: z.ZodString;
42
+ schema: z.ZodString;
43
+ }, z.core.$strip>], "type">;
44
+ export type DataSource = z.infer<typeof DataSourceSchema>;
45
+ export declare const UserPoolSchema: z.ZodObject<{
46
+ dataset: z.ZodString;
47
+ roleColumn: z.ZodDefault<z.ZodString>;
48
+ leaseStore: z.ZodDefault<z.ZodEnum<{
49
+ file: "file";
50
+ db: "db";
51
+ }>>;
52
+ leaseTtlMs: z.ZodDefault<z.ZodNumber>;
53
+ }, z.core.$strip>;
54
+ export declare const AuthStrategySchema: z.ZodEnum<{
55
+ custom: "custom";
56
+ none: "none";
57
+ form: "form";
58
+ token: "token";
59
+ "oauth-client-credentials": "oauth-client-credentials";
60
+ sso: "sso";
61
+ }>;
62
+ export declare const AuthFormSchema: z.ZodObject<{
63
+ loginPath: z.ZodDefault<z.ZodString>;
64
+ usernameSelector: z.ZodString;
65
+ passwordSelector: z.ZodString;
66
+ submitSelector: z.ZodString;
67
+ readySelector: z.ZodOptional<z.ZodString>;
68
+ readyUrl: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strip>;
70
+ export declare const ProjectAuthSchema: z.ZodObject<{
71
+ strategy: z.ZodDefault<z.ZodEnum<{
72
+ custom: "custom";
73
+ none: "none";
74
+ form: "form";
75
+ token: "token";
76
+ "oauth-client-credentials": "oauth-client-credentials";
77
+ sso: "sso";
78
+ }>>;
79
+ storageState: z.ZodDefault<z.ZodBoolean>;
80
+ maxAgeMinutes: z.ZodDefault<z.ZodNumber>;
81
+ form: z.ZodOptional<z.ZodObject<{
82
+ loginPath: z.ZodDefault<z.ZodString>;
83
+ usernameSelector: z.ZodString;
84
+ passwordSelector: z.ZodString;
85
+ submitSelector: z.ZodString;
86
+ readySelector: z.ZodOptional<z.ZodString>;
87
+ readyUrl: z.ZodOptional<z.ZodString>;
88
+ }, z.core.$strip>>;
89
+ tokenPlacement: z.ZodOptional<z.ZodObject<{
90
+ kind: z.ZodDefault<z.ZodEnum<{
91
+ localStorage: "localStorage";
92
+ cookie: "cookie";
93
+ header: "header";
94
+ }>>;
95
+ name: z.ZodDefault<z.ZodString>;
96
+ prefix: z.ZodDefault<z.ZodString>;
97
+ }, z.core.$strip>>;
98
+ }, z.core.$strip>;
99
+ export declare const ScreenshotConfigSchema: z.ZodObject<{
100
+ policy: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodEnum<{
101
+ off: "off";
102
+ "on-failure": "on-failure";
103
+ scenario: "scenario";
104
+ step: "step";
105
+ visual: "visual";
106
+ }>>>;
107
+ fullPage: z.ZodDefault<z.ZodBoolean>;
108
+ mask: z.ZodDefault<z.ZodArray<z.ZodString>>;
109
+ viewport: z.ZodDefault<z.ZodObject<{
110
+ width: z.ZodNumber;
111
+ height: z.ZodNumber;
112
+ }, z.core.$strip>>;
113
+ onlyOnFailure: z.ZodDefault<z.ZodBoolean>;
114
+ }, z.core.$strip>;
115
+ export declare const HealConfigSchema: z.ZodObject<{
116
+ enabled: z.ZodDefault<z.ZodBoolean>;
117
+ primaryTimeoutMs: z.ZodDefault<z.ZodNumber>;
118
+ probeTimeoutMs: z.ZodDefault<z.ZodNumber>;
119
+ minScore: z.ZodDefault<z.ZodNumber>;
120
+ actions: z.ZodDefault<z.ZodArray<z.ZodEnum<{
121
+ check: "check";
122
+ click: "click";
123
+ fill: "fill";
124
+ select: "select";
125
+ assert: "assert";
126
+ hover: "hover";
127
+ }>>>;
128
+ }, z.core.$strip>;
129
+ export declare const TimeoutsSchema: z.ZodObject<{
130
+ test: z.ZodDefault<z.ZodNumber>;
131
+ expect: z.ZodDefault<z.ZodNumber>;
132
+ action: z.ZodDefault<z.ZodNumber>;
133
+ navigation: z.ZodDefault<z.ZodNumber>;
134
+ api: z.ZodDefault<z.ZodNumber>;
135
+ }, z.core.$strip>;
136
+ export declare const RetriesSchema: z.ZodObject<{
137
+ ci: z.ZodDefault<z.ZodNumber>;
138
+ local: z.ZodDefault<z.ZodNumber>;
139
+ byTag: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
140
+ }, z.core.$strip>;
141
+ export declare const PerfBudgetsSchema: z.ZodObject<{
142
+ pageLoadMs: z.ZodOptional<z.ZodNumber>;
143
+ lcpMs: z.ZodOptional<z.ZodNumber>;
144
+ fcpMs: z.ZodOptional<z.ZodNumber>;
145
+ ttfbMs: z.ZodOptional<z.ZodNumber>;
146
+ apiP95Ms: z.ZodOptional<z.ZodNumber>;
147
+ }, z.core.$strip>;
148
+ export declare const GitHubIntegrationSchema: z.ZodObject<{
149
+ enabled: z.ZodDefault<z.ZodBoolean>;
150
+ owner: z.ZodOptional<z.ZodString>;
151
+ repo: z.ZodOptional<z.ZodString>;
152
+ checkRun: z.ZodDefault<z.ZodBoolean>;
153
+ prComment: z.ZodDefault<z.ZodBoolean>;
154
+ createIssueOnFailure: z.ZodDefault<z.ZodEnum<{
155
+ never: "never";
156
+ smoke: "smoke";
157
+ always: "always";
158
+ }>>;
159
+ closeOnPass: z.ZodDefault<z.ZodBoolean>;
160
+ labels: z.ZodDefault<z.ZodArray<z.ZodString>>;
161
+ tokenEnv: z.ZodDefault<z.ZodString>;
162
+ uploadToRelease: z.ZodOptional<z.ZodString>;
163
+ }, z.core.$strip>;
164
+ export declare const JiraIntegrationSchema: z.ZodObject<{
165
+ enabled: z.ZodDefault<z.ZodBoolean>;
166
+ baseUrl: z.ZodOptional<z.ZodString>;
167
+ projectKey: z.ZodOptional<z.ZodString>;
168
+ issueType: z.ZodDefault<z.ZodString>;
169
+ authMode: z.ZodDefault<z.ZodEnum<{
170
+ basic: "basic";
171
+ bearer: "bearer";
172
+ }>>;
173
+ emailEnv: z.ZodDefault<z.ZodString>;
174
+ tokenEnv: z.ZodDefault<z.ZodString>;
175
+ createIssueOnFailure: z.ZodDefault<z.ZodEnum<{
176
+ never: "never";
177
+ smoke: "smoke";
178
+ always: "always";
179
+ }>>;
180
+ transitionOnPass: z.ZodOptional<z.ZodString>;
181
+ linkTaggedScenarios: z.ZodDefault<z.ZodBoolean>;
182
+ labels: z.ZodDefault<z.ZodArray<z.ZodString>>;
183
+ maxAttachmentMb: z.ZodDefault<z.ZodNumber>;
184
+ }, z.core.$strip>;
185
+ export declare const IntegrationsSchema: z.ZodObject<{
186
+ github: z.ZodOptional<z.ZodObject<{
187
+ enabled: z.ZodDefault<z.ZodBoolean>;
188
+ owner: z.ZodOptional<z.ZodString>;
189
+ repo: z.ZodOptional<z.ZodString>;
190
+ checkRun: z.ZodDefault<z.ZodBoolean>;
191
+ prComment: z.ZodDefault<z.ZodBoolean>;
192
+ createIssueOnFailure: z.ZodDefault<z.ZodEnum<{
193
+ never: "never";
194
+ smoke: "smoke";
195
+ always: "always";
196
+ }>>;
197
+ closeOnPass: z.ZodDefault<z.ZodBoolean>;
198
+ labels: z.ZodDefault<z.ZodArray<z.ZodString>>;
199
+ tokenEnv: z.ZodDefault<z.ZodString>;
200
+ uploadToRelease: z.ZodOptional<z.ZodString>;
201
+ }, z.core.$strip>>;
202
+ jira: z.ZodOptional<z.ZodObject<{
203
+ enabled: z.ZodDefault<z.ZodBoolean>;
204
+ baseUrl: z.ZodOptional<z.ZodString>;
205
+ projectKey: z.ZodOptional<z.ZodString>;
206
+ issueType: z.ZodDefault<z.ZodString>;
207
+ authMode: z.ZodDefault<z.ZodEnum<{
208
+ basic: "basic";
209
+ bearer: "bearer";
210
+ }>>;
211
+ emailEnv: z.ZodDefault<z.ZodString>;
212
+ tokenEnv: z.ZodDefault<z.ZodString>;
213
+ createIssueOnFailure: z.ZodDefault<z.ZodEnum<{
214
+ never: "never";
215
+ smoke: "smoke";
216
+ always: "always";
217
+ }>>;
218
+ transitionOnPass: z.ZodOptional<z.ZodString>;
219
+ linkTaggedScenarios: z.ZodDefault<z.ZodBoolean>;
220
+ labels: z.ZodDefault<z.ZodArray<z.ZodString>>;
221
+ maxAttachmentMb: z.ZodDefault<z.ZodNumber>;
222
+ }, z.core.$strip>>;
223
+ custom: z.ZodDefault<z.ZodArray<z.ZodObject<{
224
+ module: z.ZodString;
225
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
226
+ }, z.core.$strip>>>;
227
+ }, z.core.$strip>;
228
+ export declare const McpServerSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
229
+ transport: z.ZodLiteral<"stdio">;
230
+ command: z.ZodString;
231
+ args: z.ZodDefault<z.ZodArray<z.ZodString>>;
232
+ envFrom: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
233
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
234
+ enabled: z.ZodDefault<z.ZodBoolean>;
235
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
236
+ }, z.core.$strip>, z.ZodObject<{
237
+ transport: z.ZodLiteral<"http">;
238
+ url: z.ZodString;
239
+ headersFrom: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
240
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
241
+ enabled: z.ZodDefault<z.ZodBoolean>;
242
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
243
+ }, z.core.$strip>], "transport">;
244
+ export declare const McpConfigSchema: z.ZodObject<{
245
+ servers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
246
+ transport: z.ZodLiteral<"stdio">;
247
+ command: z.ZodString;
248
+ args: z.ZodDefault<z.ZodArray<z.ZodString>>;
249
+ envFrom: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
250
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
251
+ enabled: z.ZodDefault<z.ZodBoolean>;
252
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
253
+ }, z.core.$strip>, z.ZodObject<{
254
+ transport: z.ZodLiteral<"http">;
255
+ url: z.ZodString;
256
+ headersFrom: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
257
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
258
+ enabled: z.ZodDefault<z.ZodBoolean>;
259
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
260
+ }, z.core.$strip>], "transport">>>;
261
+ }, z.core.$strip>;
262
+ /** Settings for a model server you run yourself: Ollama, vLLM, LM Studio, llama.cpp. */
263
+ export declare const LocalLlmConfigSchema: z.ZodDefault<z.ZodObject<{
264
+ baseUrl: z.ZodOptional<z.ZodString>;
265
+ contextTokens: z.ZodOptional<z.ZodNumber>;
266
+ temperature: z.ZodOptional<z.ZodNumber>;
267
+ requestTimeoutMs: z.ZodDefault<z.ZodNumber>;
268
+ keepAlive: z.ZodDefault<z.ZodString>;
269
+ }, z.core.$strip>>;
270
+ export declare const AgentsConfigSchema: z.ZodObject<{
271
+ provider: z.ZodOptional<z.ZodEnum<{
272
+ claude: "claude";
273
+ "claude-code": "claude-code";
274
+ codex: "codex";
275
+ "openai-compatible": "openai-compatible";
276
+ ollama: "ollama";
277
+ fake: "fake";
278
+ }>>;
279
+ profile: z.ZodDefault<z.ZodEnum<{
280
+ auto: "auto";
281
+ full: "full";
282
+ small: "small";
283
+ }>>;
284
+ models: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
285
+ maxTurns: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
286
+ budgetUsd: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
287
+ maxRunsPerJob: z.ZodDefault<z.ZodNumber>;
288
+ sourceRoots: z.ZodDefault<z.ZodArray<z.ZodString>>;
289
+ local: z.ZodDefault<z.ZodObject<{
290
+ baseUrl: z.ZodOptional<z.ZodString>;
291
+ contextTokens: z.ZodOptional<z.ZodNumber>;
292
+ temperature: z.ZodOptional<z.ZodNumber>;
293
+ requestTimeoutMs: z.ZodDefault<z.ZodNumber>;
294
+ keepAlive: z.ZodDefault<z.ZodString>;
295
+ }, z.core.$strip>>;
296
+ }, z.core.$strip>;
297
+ export declare const ScheduleSchema: z.ZodObject<{
298
+ name: z.ZodString;
299
+ cron: z.ZodString;
300
+ timezone: z.ZodDefault<z.ZodString>;
301
+ env: z.ZodOptional<z.ZodString>;
302
+ tags: z.ZodOptional<z.ZodString>;
303
+ layers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
304
+ ui: "ui";
305
+ api: "api";
306
+ hybrid: "hybrid";
307
+ recorded: "recorded";
308
+ }>>>;
309
+ browsers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
310
+ chromium: "chromium";
311
+ firefox: "firefox";
312
+ webkit: "webkit";
313
+ "mobile-chrome": "mobile-chrome";
314
+ "mobile-safari": "mobile-safari";
315
+ }>>>;
316
+ workers: z.ZodOptional<z.ZodNumber>;
317
+ harMode: z.ZodOptional<z.ZodEnum<{
318
+ off: "off";
319
+ update: "update";
320
+ replay: "replay";
321
+ }>>;
322
+ overlap: z.ZodDefault<z.ZodEnum<{
323
+ skip: "skip";
324
+ queue: "queue";
325
+ "cancel-previous": "cancel-previous";
326
+ }>>;
327
+ jitterSeconds: z.ZodDefault<z.ZodNumber>;
328
+ catchUp: z.ZodDefault<z.ZodBoolean>;
329
+ enabled: z.ZodDefault<z.ZodBoolean>;
330
+ notify: z.ZodDefault<z.ZodArray<z.ZodEnum<{
331
+ github: "github";
332
+ jira: "jira";
333
+ webhook: "webhook";
334
+ }>>>;
335
+ retentionRuns: z.ZodOptional<z.ZodNumber>;
336
+ }, z.core.$strip>;
337
+ /**
338
+ * Hierarchy: organization → workspace → project → module.
339
+ * A module is a feature area of an application (auth, inventory, checkout …) that owns a
340
+ * features directory, default tags and an owner. A process is a named, repeatable run recipe
341
+ * (pr-check, nightly-regression, release-gate …) that pins tags/layers/browsers/env and a trigger.
342
+ */
343
+ export declare const OrganizationSchema: z.ZodObject<{
344
+ slug: z.ZodString;
345
+ name: z.ZodString;
346
+ description: z.ZodOptional<z.ZodString>;
347
+ url: z.ZodOptional<z.ZodString>;
348
+ }, z.core.$strip>;
349
+ export declare const WorkspaceSchema: z.ZodObject<{
350
+ slug: z.ZodString;
351
+ name: z.ZodString;
352
+ description: z.ZodOptional<z.ZodString>;
353
+ organization: z.ZodOptional<z.ZodString>;
354
+ }, z.core.$strip>;
355
+ export declare const TestingTypeSchema: z.ZodEnum<{
356
+ visual: "visual";
357
+ smoke: "smoke";
358
+ functional: "functional";
359
+ regression: "regression";
360
+ sanity: "sanity";
361
+ integration: "integration";
362
+ contract: "contract";
363
+ accessibility: "accessibility";
364
+ performance: "performance";
365
+ security: "security";
366
+ "data-driven": "data-driven";
367
+ exploratory: "exploratory";
368
+ }>;
369
+ export declare const ModuleSchema: z.ZodObject<{
370
+ name: z.ZodString;
371
+ title: z.ZodOptional<z.ZodString>;
372
+ description: z.ZodOptional<z.ZodString>;
373
+ path: z.ZodOptional<z.ZodString>;
374
+ layers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
375
+ ui: "ui";
376
+ api: "api";
377
+ hybrid: "hybrid";
378
+ recorded: "recorded";
379
+ }>>>;
380
+ testingTypes: z.ZodDefault<z.ZodArray<z.ZodEnum<{
381
+ visual: "visual";
382
+ smoke: "smoke";
383
+ functional: "functional";
384
+ regression: "regression";
385
+ sanity: "sanity";
386
+ integration: "integration";
387
+ contract: "contract";
388
+ accessibility: "accessibility";
389
+ performance: "performance";
390
+ security: "security";
391
+ "data-driven": "data-driven";
392
+ exploratory: "exploratory";
393
+ }>>>;
394
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
395
+ owner: z.ZodOptional<z.ZodString>;
396
+ jiraComponent: z.ZodOptional<z.ZodString>;
397
+ routes: z.ZodDefault<z.ZodArray<z.ZodString>>;
398
+ endpoints: z.ZodDefault<z.ZodArray<z.ZodString>>;
399
+ }, z.core.$strip>;
400
+ export declare const ProcessTriggerSchema: z.ZodEnum<{
401
+ webhook: "webhook";
402
+ manual: "manual";
403
+ pr: "pr";
404
+ merge: "merge";
405
+ nightly: "nightly";
406
+ release: "release";
407
+ schedule: "schedule";
408
+ }>;
409
+ export declare const ProcessSchema: z.ZodObject<{
410
+ name: z.ZodString;
411
+ title: z.ZodOptional<z.ZodString>;
412
+ description: z.ZodOptional<z.ZodString>;
413
+ trigger: z.ZodDefault<z.ZodEnum<{
414
+ webhook: "webhook";
415
+ manual: "manual";
416
+ pr: "pr";
417
+ merge: "merge";
418
+ nightly: "nightly";
419
+ release: "release";
420
+ schedule: "schedule";
421
+ }>>;
422
+ env: z.ZodOptional<z.ZodString>;
423
+ tags: z.ZodOptional<z.ZodString>;
424
+ layers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
425
+ ui: "ui";
426
+ api: "api";
427
+ hybrid: "hybrid";
428
+ recorded: "recorded";
429
+ }>>>;
430
+ browsers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
431
+ chromium: "chromium";
432
+ firefox: "firefox";
433
+ webkit: "webkit";
434
+ "mobile-chrome": "mobile-chrome";
435
+ "mobile-safari": "mobile-safari";
436
+ }>>>;
437
+ modules: z.ZodOptional<z.ZodArray<z.ZodString>>;
438
+ workers: z.ZodOptional<z.ZodNumber>;
439
+ retries: z.ZodOptional<z.ZodNumber>;
440
+ harMode: z.ZodOptional<z.ZodEnum<{
441
+ off: "off";
442
+ update: "update";
443
+ replay: "replay";
444
+ }>>;
445
+ failOnFlaky: z.ZodDefault<z.ZodBoolean>;
446
+ gates: z.ZodDefault<z.ZodObject<{
447
+ minPassRate: z.ZodOptional<z.ZodNumber>;
448
+ maxFlaky: z.ZodOptional<z.ZodNumber>;
449
+ perfBudgets: z.ZodDefault<z.ZodBoolean>;
450
+ a11y: z.ZodDefault<z.ZodBoolean>;
451
+ }, z.core.$strip>>;
452
+ notify: z.ZodDefault<z.ZodArray<z.ZodEnum<{
453
+ github: "github";
454
+ jira: "jira";
455
+ webhook: "webhook";
456
+ }>>>;
457
+ schedule: z.ZodOptional<z.ZodString>;
458
+ }, z.core.$strip>;
459
+ export declare const ProjectConfigSchema: z.ZodObject<{
460
+ slug: z.ZodString;
461
+ name: z.ZodString;
462
+ description: z.ZodOptional<z.ZodString>;
463
+ organization: z.ZodOptional<z.ZodString>;
464
+ workspace: z.ZodOptional<z.ZodString>;
465
+ modules: z.ZodDefault<z.ZodArray<z.ZodObject<{
466
+ name: z.ZodString;
467
+ title: z.ZodOptional<z.ZodString>;
468
+ description: z.ZodOptional<z.ZodString>;
469
+ path: z.ZodOptional<z.ZodString>;
470
+ layers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
471
+ ui: "ui";
472
+ api: "api";
473
+ hybrid: "hybrid";
474
+ recorded: "recorded";
475
+ }>>>;
476
+ testingTypes: z.ZodDefault<z.ZodArray<z.ZodEnum<{
477
+ visual: "visual";
478
+ smoke: "smoke";
479
+ functional: "functional";
480
+ regression: "regression";
481
+ sanity: "sanity";
482
+ integration: "integration";
483
+ contract: "contract";
484
+ accessibility: "accessibility";
485
+ performance: "performance";
486
+ security: "security";
487
+ "data-driven": "data-driven";
488
+ exploratory: "exploratory";
489
+ }>>>;
490
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
491
+ owner: z.ZodOptional<z.ZodString>;
492
+ jiraComponent: z.ZodOptional<z.ZodString>;
493
+ routes: z.ZodDefault<z.ZodArray<z.ZodString>>;
494
+ endpoints: z.ZodDefault<z.ZodArray<z.ZodString>>;
495
+ }, z.core.$strip>>>;
496
+ processes: z.ZodDefault<z.ZodArray<z.ZodObject<{
497
+ name: z.ZodString;
498
+ title: z.ZodOptional<z.ZodString>;
499
+ description: z.ZodOptional<z.ZodString>;
500
+ trigger: z.ZodDefault<z.ZodEnum<{
501
+ webhook: "webhook";
502
+ manual: "manual";
503
+ pr: "pr";
504
+ merge: "merge";
505
+ nightly: "nightly";
506
+ release: "release";
507
+ schedule: "schedule";
508
+ }>>;
509
+ env: z.ZodOptional<z.ZodString>;
510
+ tags: z.ZodOptional<z.ZodString>;
511
+ layers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
512
+ ui: "ui";
513
+ api: "api";
514
+ hybrid: "hybrid";
515
+ recorded: "recorded";
516
+ }>>>;
517
+ browsers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
518
+ chromium: "chromium";
519
+ firefox: "firefox";
520
+ webkit: "webkit";
521
+ "mobile-chrome": "mobile-chrome";
522
+ "mobile-safari": "mobile-safari";
523
+ }>>>;
524
+ modules: z.ZodOptional<z.ZodArray<z.ZodString>>;
525
+ workers: z.ZodOptional<z.ZodNumber>;
526
+ retries: z.ZodOptional<z.ZodNumber>;
527
+ harMode: z.ZodOptional<z.ZodEnum<{
528
+ off: "off";
529
+ update: "update";
530
+ replay: "replay";
531
+ }>>;
532
+ failOnFlaky: z.ZodDefault<z.ZodBoolean>;
533
+ gates: z.ZodDefault<z.ZodObject<{
534
+ minPassRate: z.ZodOptional<z.ZodNumber>;
535
+ maxFlaky: z.ZodOptional<z.ZodNumber>;
536
+ perfBudgets: z.ZodDefault<z.ZodBoolean>;
537
+ a11y: z.ZodDefault<z.ZodBoolean>;
538
+ }, z.core.$strip>>;
539
+ notify: z.ZodDefault<z.ZodArray<z.ZodEnum<{
540
+ github: "github";
541
+ jira: "jira";
542
+ webhook: "webhook";
543
+ }>>>;
544
+ schedule: z.ZodOptional<z.ZodString>;
545
+ }, z.core.$strip>>>;
546
+ layers: z.ZodArray<z.ZodEnum<{
547
+ ui: "ui";
548
+ api: "api";
549
+ hybrid: "hybrid";
550
+ recorded: "recorded";
551
+ }>>;
552
+ browsers: z.ZodDefault<z.ZodArray<z.ZodEnum<{
553
+ chromium: "chromium";
554
+ firefox: "firefox";
555
+ webkit: "webkit";
556
+ "mobile-chrome": "mobile-chrome";
557
+ "mobile-safari": "mobile-safari";
558
+ }>>>;
559
+ channel: z.ZodOptional<z.ZodEnum<{
560
+ chrome: "chrome";
561
+ msedge: "msedge";
562
+ "chrome-beta": "chrome-beta";
563
+ "msedge-beta": "msedge-beta";
564
+ }>>;
565
+ testIdAttribute: z.ZodDefault<z.ZodString>;
566
+ routes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
567
+ tags: z.ZodDefault<z.ZodObject<{
568
+ suites: z.ZodDefault<z.ZodArray<z.ZodString>>;
569
+ extra: z.ZodDefault<z.ZodArray<z.ZodString>>;
570
+ roles: z.ZodDefault<z.ZodArray<z.ZodString>>;
571
+ }, z.core.$strip>>;
572
+ envs: z.ZodObject<{
573
+ default: z.ZodString;
574
+ available: z.ZodArray<z.ZodString>;
575
+ }, z.core.$strip>;
576
+ data: z.ZodDefault<z.ZodObject<{
577
+ sources: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
578
+ type: z.ZodLiteral<"csv">;
579
+ path: z.ZodString;
580
+ fallback: z.ZodOptional<z.ZodString>;
581
+ }, z.core.$strip>, z.ZodObject<{
582
+ type: z.ZodLiteral<"json">;
583
+ path: z.ZodString;
584
+ fallback: z.ZodOptional<z.ZodString>;
585
+ }, z.core.$strip>, z.ZodObject<{
586
+ type: z.ZodLiteral<"yaml">;
587
+ path: z.ZodString;
588
+ fallback: z.ZodOptional<z.ZodString>;
589
+ }, z.core.$strip>, z.ZodObject<{
590
+ type: z.ZodLiteral<"db">;
591
+ table: z.ZodString;
592
+ envColumn: z.ZodDefault<z.ZodString>;
593
+ }, z.core.$strip>, z.ZodObject<{
594
+ type: z.ZodLiteral<"openapi">;
595
+ spec: z.ZodString;
596
+ schema: z.ZodString;
597
+ }, z.core.$strip>], "type">>>;
598
+ factories: z.ZodOptional<z.ZodString>;
599
+ userPool: z.ZodOptional<z.ZodObject<{
600
+ dataset: z.ZodString;
601
+ roleColumn: z.ZodDefault<z.ZodString>;
602
+ leaseStore: z.ZodDefault<z.ZodEnum<{
603
+ file: "file";
604
+ db: "db";
605
+ }>>;
606
+ leaseTtlMs: z.ZodDefault<z.ZodNumber>;
607
+ }, z.core.$strip>>;
608
+ }, z.core.$strip>>;
609
+ auth: z.ZodDefault<z.ZodObject<{
610
+ strategy: z.ZodDefault<z.ZodEnum<{
611
+ custom: "custom";
612
+ none: "none";
613
+ form: "form";
614
+ token: "token";
615
+ "oauth-client-credentials": "oauth-client-credentials";
616
+ sso: "sso";
617
+ }>>;
618
+ storageState: z.ZodDefault<z.ZodBoolean>;
619
+ maxAgeMinutes: z.ZodDefault<z.ZodNumber>;
620
+ form: z.ZodOptional<z.ZodObject<{
621
+ loginPath: z.ZodDefault<z.ZodString>;
622
+ usernameSelector: z.ZodString;
623
+ passwordSelector: z.ZodString;
624
+ submitSelector: z.ZodString;
625
+ readySelector: z.ZodOptional<z.ZodString>;
626
+ readyUrl: z.ZodOptional<z.ZodString>;
627
+ }, z.core.$strip>>;
628
+ tokenPlacement: z.ZodOptional<z.ZodObject<{
629
+ kind: z.ZodDefault<z.ZodEnum<{
630
+ localStorage: "localStorage";
631
+ cookie: "cookie";
632
+ header: "header";
633
+ }>>;
634
+ name: z.ZodDefault<z.ZodString>;
635
+ prefix: z.ZodDefault<z.ZodString>;
636
+ }, z.core.$strip>>;
637
+ }, z.core.$strip>>;
638
+ screenshots: z.ZodDefault<z.ZodObject<{
639
+ policy: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodEnum<{
640
+ off: "off";
641
+ "on-failure": "on-failure";
642
+ scenario: "scenario";
643
+ step: "step";
644
+ visual: "visual";
645
+ }>>>;
646
+ fullPage: z.ZodDefault<z.ZodBoolean>;
647
+ mask: z.ZodDefault<z.ZodArray<z.ZodString>>;
648
+ viewport: z.ZodDefault<z.ZodObject<{
649
+ width: z.ZodNumber;
650
+ height: z.ZodNumber;
651
+ }, z.core.$strip>>;
652
+ onlyOnFailure: z.ZodDefault<z.ZodBoolean>;
653
+ }, z.core.$strip>>;
654
+ heal: z.ZodDefault<z.ZodObject<{
655
+ enabled: z.ZodDefault<z.ZodBoolean>;
656
+ primaryTimeoutMs: z.ZodDefault<z.ZodNumber>;
657
+ probeTimeoutMs: z.ZodDefault<z.ZodNumber>;
658
+ minScore: z.ZodDefault<z.ZodNumber>;
659
+ actions: z.ZodDefault<z.ZodArray<z.ZodEnum<{
660
+ check: "check";
661
+ click: "click";
662
+ fill: "fill";
663
+ select: "select";
664
+ assert: "assert";
665
+ hover: "hover";
666
+ }>>>;
667
+ }, z.core.$strip>>;
668
+ timeouts: z.ZodDefault<z.ZodObject<{
669
+ test: z.ZodDefault<z.ZodNumber>;
670
+ expect: z.ZodDefault<z.ZodNumber>;
671
+ action: z.ZodDefault<z.ZodNumber>;
672
+ navigation: z.ZodDefault<z.ZodNumber>;
673
+ api: z.ZodDefault<z.ZodNumber>;
674
+ }, z.core.$strip>>;
675
+ retries: z.ZodDefault<z.ZodObject<{
676
+ ci: z.ZodDefault<z.ZodNumber>;
677
+ local: z.ZodDefault<z.ZodNumber>;
678
+ byTag: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
679
+ }, z.core.$strip>>;
680
+ perf: z.ZodDefault<z.ZodObject<{
681
+ budgets: z.ZodDefault<z.ZodObject<{
682
+ pageLoadMs: z.ZodOptional<z.ZodNumber>;
683
+ lcpMs: z.ZodOptional<z.ZodNumber>;
684
+ fcpMs: z.ZodOptional<z.ZodNumber>;
685
+ ttfbMs: z.ZodOptional<z.ZodNumber>;
686
+ apiP95Ms: z.ZodOptional<z.ZodNumber>;
687
+ }, z.core.$strip>>;
688
+ }, z.core.$strip>>;
689
+ integrations: z.ZodDefault<z.ZodObject<{
690
+ github: z.ZodOptional<z.ZodObject<{
691
+ enabled: z.ZodDefault<z.ZodBoolean>;
692
+ owner: z.ZodOptional<z.ZodString>;
693
+ repo: z.ZodOptional<z.ZodString>;
694
+ checkRun: z.ZodDefault<z.ZodBoolean>;
695
+ prComment: z.ZodDefault<z.ZodBoolean>;
696
+ createIssueOnFailure: z.ZodDefault<z.ZodEnum<{
697
+ never: "never";
698
+ smoke: "smoke";
699
+ always: "always";
700
+ }>>;
701
+ closeOnPass: z.ZodDefault<z.ZodBoolean>;
702
+ labels: z.ZodDefault<z.ZodArray<z.ZodString>>;
703
+ tokenEnv: z.ZodDefault<z.ZodString>;
704
+ uploadToRelease: z.ZodOptional<z.ZodString>;
705
+ }, z.core.$strip>>;
706
+ jira: z.ZodOptional<z.ZodObject<{
707
+ enabled: z.ZodDefault<z.ZodBoolean>;
708
+ baseUrl: z.ZodOptional<z.ZodString>;
709
+ projectKey: z.ZodOptional<z.ZodString>;
710
+ issueType: z.ZodDefault<z.ZodString>;
711
+ authMode: z.ZodDefault<z.ZodEnum<{
712
+ basic: "basic";
713
+ bearer: "bearer";
714
+ }>>;
715
+ emailEnv: z.ZodDefault<z.ZodString>;
716
+ tokenEnv: z.ZodDefault<z.ZodString>;
717
+ createIssueOnFailure: z.ZodDefault<z.ZodEnum<{
718
+ never: "never";
719
+ smoke: "smoke";
720
+ always: "always";
721
+ }>>;
722
+ transitionOnPass: z.ZodOptional<z.ZodString>;
723
+ linkTaggedScenarios: z.ZodDefault<z.ZodBoolean>;
724
+ labels: z.ZodDefault<z.ZodArray<z.ZodString>>;
725
+ maxAttachmentMb: z.ZodDefault<z.ZodNumber>;
726
+ }, z.core.$strip>>;
727
+ custom: z.ZodDefault<z.ZodArray<z.ZodObject<{
728
+ module: z.ZodString;
729
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
730
+ }, z.core.$strip>>>;
731
+ }, z.core.$strip>>;
732
+ mcp: z.ZodDefault<z.ZodObject<{
733
+ servers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
734
+ transport: z.ZodLiteral<"stdio">;
735
+ command: z.ZodString;
736
+ args: z.ZodDefault<z.ZodArray<z.ZodString>>;
737
+ envFrom: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
738
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
739
+ enabled: z.ZodDefault<z.ZodBoolean>;
740
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
741
+ }, z.core.$strip>, z.ZodObject<{
742
+ transport: z.ZodLiteral<"http">;
743
+ url: z.ZodString;
744
+ headersFrom: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
745
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
746
+ enabled: z.ZodDefault<z.ZodBoolean>;
747
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
748
+ }, z.core.$strip>], "transport">>>;
749
+ }, z.core.$strip>>;
750
+ agents: z.ZodDefault<z.ZodObject<{
751
+ provider: z.ZodOptional<z.ZodEnum<{
752
+ claude: "claude";
753
+ "claude-code": "claude-code";
754
+ codex: "codex";
755
+ "openai-compatible": "openai-compatible";
756
+ ollama: "ollama";
757
+ fake: "fake";
758
+ }>>;
759
+ profile: z.ZodDefault<z.ZodEnum<{
760
+ auto: "auto";
761
+ full: "full";
762
+ small: "small";
763
+ }>>;
764
+ models: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
765
+ maxTurns: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
766
+ budgetUsd: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
767
+ maxRunsPerJob: z.ZodDefault<z.ZodNumber>;
768
+ sourceRoots: z.ZodDefault<z.ZodArray<z.ZodString>>;
769
+ local: z.ZodDefault<z.ZodObject<{
770
+ baseUrl: z.ZodOptional<z.ZodString>;
771
+ contextTokens: z.ZodOptional<z.ZodNumber>;
772
+ temperature: z.ZodOptional<z.ZodNumber>;
773
+ requestTimeoutMs: z.ZodDefault<z.ZodNumber>;
774
+ keepAlive: z.ZodDefault<z.ZodString>;
775
+ }, z.core.$strip>>;
776
+ }, z.core.$strip>>;
777
+ schedules: z.ZodDefault<z.ZodArray<z.ZodObject<{
778
+ name: z.ZodString;
779
+ cron: z.ZodString;
780
+ timezone: z.ZodDefault<z.ZodString>;
781
+ env: z.ZodOptional<z.ZodString>;
782
+ tags: z.ZodOptional<z.ZodString>;
783
+ layers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
784
+ ui: "ui";
785
+ api: "api";
786
+ hybrid: "hybrid";
787
+ recorded: "recorded";
788
+ }>>>;
789
+ browsers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
790
+ chromium: "chromium";
791
+ firefox: "firefox";
792
+ webkit: "webkit";
793
+ "mobile-chrome": "mobile-chrome";
794
+ "mobile-safari": "mobile-safari";
795
+ }>>>;
796
+ workers: z.ZodOptional<z.ZodNumber>;
797
+ harMode: z.ZodOptional<z.ZodEnum<{
798
+ off: "off";
799
+ update: "update";
800
+ replay: "replay";
801
+ }>>;
802
+ overlap: z.ZodDefault<z.ZodEnum<{
803
+ skip: "skip";
804
+ queue: "queue";
805
+ "cancel-previous": "cancel-previous";
806
+ }>>;
807
+ jitterSeconds: z.ZodDefault<z.ZodNumber>;
808
+ catchUp: z.ZodDefault<z.ZodBoolean>;
809
+ enabled: z.ZodDefault<z.ZodBoolean>;
810
+ notify: z.ZodDefault<z.ZodArray<z.ZodEnum<{
811
+ github: "github";
812
+ jira: "jira";
813
+ webhook: "webhook";
814
+ }>>>;
815
+ retentionRuns: z.ZodOptional<z.ZodNumber>;
816
+ }, z.core.$strip>>>;
817
+ reports: z.ZodDefault<z.ZodObject<{
818
+ cucumberHtml: z.ZodDefault<z.ZodBoolean>;
819
+ allure: z.ZodDefault<z.ZodBoolean>;
820
+ junit: z.ZodDefault<z.ZodBoolean>;
821
+ }, z.core.$strip>>;
822
+ ci: z.ZodDefault<z.ZodObject<{
823
+ enabled: z.ZodDefault<z.ZodBoolean>;
824
+ env: z.ZodOptional<z.ZodString>;
825
+ tags: z.ZodOptional<z.ZodString>;
826
+ browsers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
827
+ chromium: "chromium";
828
+ firefox: "firefox";
829
+ webkit: "webkit";
830
+ "mobile-chrome": "mobile-chrome";
831
+ "mobile-safari": "mobile-safari";
832
+ }>>>;
833
+ }, z.core.$strip>>;
834
+ }, z.core.$strip>;
835
+ /** Root `sdods.workspace.yaml`: names the organization and workspace every project in the repo belongs to. */
836
+ export declare const WorkspaceFileSchema: z.ZodObject<{
837
+ organization: z.ZodObject<{
838
+ slug: z.ZodString;
839
+ name: z.ZodString;
840
+ description: z.ZodOptional<z.ZodString>;
841
+ url: z.ZodOptional<z.ZodString>;
842
+ }, z.core.$strip>;
843
+ workspaces: z.ZodArray<z.ZodObject<{
844
+ slug: z.ZodString;
845
+ name: z.ZodString;
846
+ description: z.ZodOptional<z.ZodString>;
847
+ organization: z.ZodOptional<z.ZodString>;
848
+ }, z.core.$strip>>;
849
+ defaultWorkspace: z.ZodString;
850
+ defaults: z.ZodDefault<z.ZodObject<{
851
+ browsers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
852
+ chromium: "chromium";
853
+ firefox: "firefox";
854
+ webkit: "webkit";
855
+ "mobile-chrome": "mobile-chrome";
856
+ "mobile-safari": "mobile-safari";
857
+ }>>>;
858
+ suites: z.ZodOptional<z.ZodArray<z.ZodString>>;
859
+ testIdAttribute: z.ZodOptional<z.ZodString>;
860
+ processes: z.ZodDefault<z.ZodArray<z.ZodObject<{
861
+ name: z.ZodString;
862
+ title: z.ZodOptional<z.ZodString>;
863
+ description: z.ZodOptional<z.ZodString>;
864
+ trigger: z.ZodDefault<z.ZodEnum<{
865
+ webhook: "webhook";
866
+ manual: "manual";
867
+ pr: "pr";
868
+ merge: "merge";
869
+ nightly: "nightly";
870
+ release: "release";
871
+ schedule: "schedule";
872
+ }>>;
873
+ env: z.ZodOptional<z.ZodString>;
874
+ tags: z.ZodOptional<z.ZodString>;
875
+ layers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
876
+ ui: "ui";
877
+ api: "api";
878
+ hybrid: "hybrid";
879
+ recorded: "recorded";
880
+ }>>>;
881
+ browsers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
882
+ chromium: "chromium";
883
+ firefox: "firefox";
884
+ webkit: "webkit";
885
+ "mobile-chrome": "mobile-chrome";
886
+ "mobile-safari": "mobile-safari";
887
+ }>>>;
888
+ modules: z.ZodOptional<z.ZodArray<z.ZodString>>;
889
+ workers: z.ZodOptional<z.ZodNumber>;
890
+ retries: z.ZodOptional<z.ZodNumber>;
891
+ harMode: z.ZodOptional<z.ZodEnum<{
892
+ off: "off";
893
+ update: "update";
894
+ replay: "replay";
895
+ }>>;
896
+ failOnFlaky: z.ZodDefault<z.ZodBoolean>;
897
+ gates: z.ZodDefault<z.ZodObject<{
898
+ minPassRate: z.ZodOptional<z.ZodNumber>;
899
+ maxFlaky: z.ZodOptional<z.ZodNumber>;
900
+ perfBudgets: z.ZodDefault<z.ZodBoolean>;
901
+ a11y: z.ZodDefault<z.ZodBoolean>;
902
+ }, z.core.$strip>>;
903
+ notify: z.ZodDefault<z.ZodArray<z.ZodEnum<{
904
+ github: "github";
905
+ jira: "jira";
906
+ webhook: "webhook";
907
+ }>>>;
908
+ schedule: z.ZodOptional<z.ZodString>;
909
+ }, z.core.$strip>>>;
910
+ }, z.core.$strip>>;
911
+ }, z.core.$strip>;
912
+ export type WorkspaceFile = z.infer<typeof WorkspaceFileSchema>;
913
+ export type Organization = z.infer<typeof OrganizationSchema>;
914
+ export type Workspace = z.infer<typeof WorkspaceSchema>;
915
+ export type ModuleConfig = z.infer<typeof ModuleSchema>;
916
+ export type ProcessConfig = z.infer<typeof ProcessSchema>;
917
+ export type TestingType = z.infer<typeof TestingTypeSchema>;
918
+ export type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
919
+ export type ProjectConfigInput = z.input<typeof ProjectConfigSchema>;
920
+ export type ScreenshotConfig = z.infer<typeof ScreenshotConfigSchema>;
921
+ export type HealConfig = z.infer<typeof HealConfigSchema>;
922
+ export type TimeoutsConfig = z.infer<typeof TimeoutsSchema>;
923
+ export type ProjectAuthConfig = z.infer<typeof ProjectAuthSchema>;
924
+ export type McpServerConfig = z.infer<typeof McpServerSchema>;
925
+ export type ScheduleConfig = z.infer<typeof ScheduleSchema>;
926
+ export type GitHubIntegrationConfig = z.infer<typeof GitHubIntegrationSchema>;
927
+ export type JiraIntegrationConfig = z.infer<typeof JiraIntegrationSchema>;
928
+ export type Layer = z.infer<typeof LayerSchema>;
929
+ export type BrowserName = z.infer<typeof BrowserSchema>;
930
+ export type ShotPolicy = z.infer<typeof ShotPolicySchema>;
931
+ //# sourceMappingURL=project.d.ts.map