@qawolf/api-contracts 0.63.0 → 0.65.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 (60) hide show
  1. package/dist/v1/agent/send.d.ts +1 -0
  2. package/dist/v1/agent/send.d.ts.map +1 -1
  3. package/dist/v1/agent/send.js +3 -0
  4. package/dist/v1/agent/send.js.map +1 -1
  5. package/dist/v1/deployment/didNotRunReason.d.ts +24 -0
  6. package/dist/v1/deployment/didNotRunReason.d.ts.map +1 -0
  7. package/dist/v1/deployment/didNotRunReason.js +48 -0
  8. package/dist/v1/deployment/didNotRunReason.js.map +1 -0
  9. package/dist/v1/deployment/index.d.ts +24 -2
  10. package/dist/v1/deployment/index.d.ts.map +1 -1
  11. package/dist/v1/deployment/listTriggerEvaluations.d.ts +23 -1
  12. package/dist/v1/deployment/listTriggerEvaluations.d.ts.map +1 -1
  13. package/dist/v1/deployment/listTriggerEvaluations.js +4 -2
  14. package/dist/v1/deployment/listTriggerEvaluations.js.map +1 -1
  15. package/dist/v1/deployment/reportStatus.d.ts +1 -1
  16. package/dist/v1/deployment/reportStatus.js +2 -2
  17. package/dist/v1/deployment/reportStatus.js.map +1 -1
  18. package/dist/v1/index.d.ts +813 -277
  19. package/dist/v1/index.d.ts.map +1 -1
  20. package/dist/v1/index.js +2 -0
  21. package/dist/v1/index.js.map +1 -1
  22. package/dist/v1/run/triage.d.ts +51 -0
  23. package/dist/v1/run/triage.d.ts.map +1 -0
  24. package/dist/v1/run/triage.js +55 -0
  25. package/dist/v1/run/triage.js.map +1 -0
  26. package/dist/v1/runner/catalog.d.ts +232 -119
  27. package/dist/v1/runner/catalog.d.ts.map +1 -1
  28. package/dist/v1/runner/catalog.js +2 -0
  29. package/dist/v1/runner/catalog.js.map +1 -1
  30. package/dist/v1/runner/recording.d.ts +332 -0
  31. package/dist/v1/runner/recording.d.ts.map +1 -0
  32. package/dist/v1/runner/recording.js +113 -0
  33. package/dist/v1/runner/recording.js.map +1 -0
  34. package/dist/v1/runnerReexports.d.ts +1 -0
  35. package/dist/v1/runnerReexports.d.ts.map +1 -1
  36. package/dist/v1/runnerReexports.js +1 -0
  37. package/dist/v1/runnerReexports.js.map +1 -1
  38. package/dist/v1/trigger/configuration.d.ts +12 -0
  39. package/dist/v1/trigger/configuration.d.ts.map +1 -1
  40. package/dist/v1/trigger/configuration.js +16 -1
  41. package/dist/v1/trigger/configuration.js.map +1 -1
  42. package/dist/v1/trigger/configurationRules.d.ts +1 -0
  43. package/dist/v1/trigger/configurationRules.d.ts.map +1 -1
  44. package/dist/v1/trigger/configurationRules.js +26 -5
  45. package/dist/v1/trigger/configurationRules.js.map +1 -1
  46. package/dist/v1/trigger/create.d.ts +22 -0
  47. package/dist/v1/trigger/create.d.ts.map +1 -1
  48. package/dist/v1/trigger/find.d.ts +11 -0
  49. package/dist/v1/trigger/find.d.ts.map +1 -1
  50. package/dist/v1/trigger/get.d.ts +11 -0
  51. package/dist/v1/trigger/get.d.ts.map +1 -1
  52. package/dist/v1/trigger/index.d.ts +88 -0
  53. package/dist/v1/trigger/index.d.ts.map +1 -1
  54. package/dist/v1/trigger/lifecycle.d.ts +22 -0
  55. package/dist/v1/trigger/lifecycle.d.ts.map +1 -1
  56. package/dist/v1/trigger/resource.d.ts +11 -0
  57. package/dist/v1/trigger/resource.d.ts.map +1 -1
  58. package/dist/v1/trigger/update.d.ts +22 -0
  59. package/dist/v1/trigger/update.d.ts.map +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1,332 @@
1
+ import { z } from "zod";
2
+ import type { PublicIdSchema } from "../ids.js";
3
+ export declare const recordingIdSchema: z.ZodUUID;
4
+ export declare const runnerRecordingCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
5
+ action: z.ZodLiteral<"start">;
6
+ recordingId: z.ZodUUID;
7
+ }, z.core.$strict>, z.ZodObject<{
8
+ action: z.ZodLiteral<"stop">;
9
+ recordingId: z.ZodUUID;
10
+ }, z.core.$strict>, z.ZodObject<{
11
+ action: z.ZodLiteral<"auto">;
12
+ enabled: z.ZodBoolean;
13
+ }, z.core.$strict>, z.ZodObject<{
14
+ action: z.ZodLiteral<"status">;
15
+ }, z.core.$strict>], "action">;
16
+ export declare const runnerRecordingSchema: z.ZodObject<{
17
+ endedAt: z.ZodISODateTime;
18
+ id: z.ZodUUID;
19
+ mode: z.ZodEnum<{
20
+ manual: "manual";
21
+ automatic: "automatic";
22
+ }>;
23
+ runIds: z.ZodArray<z.ZodString>;
24
+ runnerId: z.ZodString;
25
+ runnerInstanceId: z.ZodUUID;
26
+ startedAt: z.ZodISODateTime;
27
+ status: z.ZodEnum<{
28
+ failed: "failed";
29
+ ready: "ready";
30
+ }>;
31
+ version: z.ZodLiteral<1>;
32
+ }, z.core.$strip>;
33
+ export declare const runnerRecordingStateSchema: z.ZodObject<{
34
+ active: z.ZodOptional<z.ZodObject<{
35
+ id: z.ZodUUID;
36
+ mode: z.ZodEnum<{
37
+ manual: "manual";
38
+ automatic: "automatic";
39
+ }>;
40
+ startedAt: z.ZodISODateTime;
41
+ }, z.core.$strip>>;
42
+ auto: z.ZodEnum<{
43
+ default: "default";
44
+ on: "on";
45
+ off: "off";
46
+ }>;
47
+ }, z.core.$strip>;
48
+ export declare const runnerRecordingResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
49
+ outcome: z.ZodLiteral<"success">;
50
+ recording: z.ZodOptional<z.ZodObject<{
51
+ endedAt: z.ZodISODateTime;
52
+ id: z.ZodUUID;
53
+ mode: z.ZodEnum<{
54
+ manual: "manual";
55
+ automatic: "automatic";
56
+ }>;
57
+ runIds: z.ZodArray<z.ZodString>;
58
+ runnerId: z.ZodString;
59
+ runnerInstanceId: z.ZodUUID;
60
+ startedAt: z.ZodISODateTime;
61
+ status: z.ZodEnum<{
62
+ failed: "failed";
63
+ ready: "ready";
64
+ }>;
65
+ version: z.ZodLiteral<1>;
66
+ }, z.core.$strip>>;
67
+ state: z.ZodObject<{
68
+ active: z.ZodOptional<z.ZodObject<{
69
+ id: z.ZodUUID;
70
+ mode: z.ZodEnum<{
71
+ manual: "manual";
72
+ automatic: "automatic";
73
+ }>;
74
+ startedAt: z.ZodISODateTime;
75
+ }, z.core.$strip>>;
76
+ auto: z.ZodEnum<{
77
+ default: "default";
78
+ on: "on";
79
+ off: "off";
80
+ }>;
81
+ }, z.core.$strip>;
82
+ }, z.core.$strip>, z.ZodObject<{
83
+ failureReason: z.ZodEnum<{
84
+ "runner-unreachable": "runner-unreachable";
85
+ "screen-not-ready": "screen-not-ready";
86
+ unsupported: "unsupported";
87
+ "recording-in-progress": "recording-in-progress";
88
+ "recording-not-found": "recording-not-found";
89
+ "recording-id-used": "recording-id-used";
90
+ "recording-failed": "recording-failed";
91
+ }>;
92
+ outcome: z.ZodLiteral<"failure">;
93
+ }, z.core.$strip>], "outcome">;
94
+ export type RunnerRecording = z.infer<typeof runnerRecordingSchema>;
95
+ export type RunnerRecordingCommand = z.infer<typeof runnerRecordingCommandSchema>;
96
+ export type RunnerRecordingResult = z.infer<typeof runnerRecordingResultSchema>;
97
+ export type RunnerRecordingState = z.infer<typeof runnerRecordingStateSchema>;
98
+ export declare const makeRecordOnRunnerContract: <WorkspaceId extends PublicIdSchema>(ids: {
99
+ workspace: WorkspaceId;
100
+ }) => {
101
+ readonly annotations: {
102
+ readonly destructiveHint: false;
103
+ readonly openWorldHint: false;
104
+ readonly readOnlyHint: false;
105
+ };
106
+ readonly description: "Control video recording on a Playwright runner. Start requires a caller-generated UUID; stop targets that UUID so retries cannot stop a later recording. Manual capture spans runs and suppresses automatic capture. Auto settings affect subsequent full runs. The URL opens recording history after the runner terminates. Videos may be unavailable after abrupt pod loss.";
107
+ readonly input: z.ZodObject<{
108
+ command: z.ZodDiscriminatedUnion<[z.ZodObject<{
109
+ action: z.ZodLiteral<"start">;
110
+ recordingId: z.ZodUUID;
111
+ }, z.core.$strict>, z.ZodObject<{
112
+ action: z.ZodLiteral<"stop">;
113
+ recordingId: z.ZodUUID;
114
+ }, z.core.$strict>, z.ZodObject<{
115
+ action: z.ZodLiteral<"auto">;
116
+ enabled: z.ZodBoolean;
117
+ }, z.core.$strict>, z.ZodObject<{
118
+ action: z.ZodLiteral<"status">;
119
+ }, z.core.$strict>], "action">;
120
+ id: z.ZodString;
121
+ workspaceId: z.ZodOptional<WorkspaceId>;
122
+ }, z.core.$strip>;
123
+ readonly kind: "write";
124
+ readonly name: "runner.record";
125
+ readonly output: z.ZodObject<{
126
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
127
+ outcome: z.ZodLiteral<"success">;
128
+ recording: z.ZodOptional<z.ZodObject<{
129
+ endedAt: z.ZodISODateTime;
130
+ id: z.ZodUUID;
131
+ mode: z.ZodEnum<{
132
+ manual: "manual";
133
+ automatic: "automatic";
134
+ }>;
135
+ runIds: z.ZodArray<z.ZodString>;
136
+ runnerId: z.ZodString;
137
+ runnerInstanceId: z.ZodUUID;
138
+ startedAt: z.ZodISODateTime;
139
+ status: z.ZodEnum<{
140
+ failed: "failed";
141
+ ready: "ready";
142
+ }>;
143
+ version: z.ZodLiteral<1>;
144
+ }, z.core.$strip>>;
145
+ state: z.ZodObject<{
146
+ active: z.ZodOptional<z.ZodObject<{
147
+ id: z.ZodUUID;
148
+ mode: z.ZodEnum<{
149
+ manual: "manual";
150
+ automatic: "automatic";
151
+ }>;
152
+ startedAt: z.ZodISODateTime;
153
+ }, z.core.$strip>>;
154
+ auto: z.ZodEnum<{
155
+ default: "default";
156
+ on: "on";
157
+ off: "off";
158
+ }>;
159
+ }, z.core.$strip>;
160
+ }, z.core.$strip>, z.ZodObject<{
161
+ failureReason: z.ZodEnum<{
162
+ "runner-unreachable": "runner-unreachable";
163
+ "screen-not-ready": "screen-not-ready";
164
+ unsupported: "unsupported";
165
+ "recording-in-progress": "recording-in-progress";
166
+ "recording-not-found": "recording-not-found";
167
+ "recording-id-used": "recording-id-used";
168
+ "recording-failed": "recording-failed";
169
+ }>;
170
+ outcome: z.ZodLiteral<"failure">;
171
+ }, z.core.$strip>], "outcome">;
172
+ url: z.ZodURL;
173
+ }, z.core.$strip>;
174
+ };
175
+ export declare const makeRunnerRecordingsContract: <WorkspaceId extends PublicIdSchema>(ids: {
176
+ workspace: WorkspaceId;
177
+ }) => {
178
+ readonly annotations: {
179
+ readonly destructiveHint: false;
180
+ readonly openWorldHint: false;
181
+ readonly readOnlyHint: true;
182
+ };
183
+ readonly description: "Read a runner's finalized recordings from workspace storage, including after the runner terminates. Omit recordingId to list recordings in storage-key order; follow nextPageToken for more. An empty list for a specific recording means it is not published or does not exist. Video URLs expire; platform URLs remain stable.";
184
+ readonly input: z.ZodObject<{
185
+ id: z.ZodString;
186
+ pageToken: z.ZodOptional<z.ZodString>;
187
+ recordingId: z.ZodOptional<z.ZodUUID>;
188
+ workspaceId: z.ZodOptional<WorkspaceId>;
189
+ }, z.core.$strip>;
190
+ readonly kind: "read";
191
+ readonly name: "runner.recordings";
192
+ readonly output: z.ZodObject<{
193
+ nextPageToken: z.ZodOptional<z.ZodString>;
194
+ recordings: z.ZodArray<z.ZodObject<{
195
+ endedAt: z.ZodISODateTime;
196
+ id: z.ZodUUID;
197
+ mode: z.ZodEnum<{
198
+ manual: "manual";
199
+ automatic: "automatic";
200
+ }>;
201
+ runIds: z.ZodArray<z.ZodString>;
202
+ runnerId: z.ZodString;
203
+ runnerInstanceId: z.ZodUUID;
204
+ startedAt: z.ZodISODateTime;
205
+ status: z.ZodEnum<{
206
+ failed: "failed";
207
+ ready: "ready";
208
+ }>;
209
+ version: z.ZodLiteral<1>;
210
+ url: z.ZodURL;
211
+ videoUrl: z.ZodOptional<z.ZodURL>;
212
+ }, z.core.$strip>>;
213
+ }, z.core.$strip>;
214
+ };
215
+ export declare function makeRecordingContracts<WorkspaceId extends PublicIdSchema>(ids: {
216
+ workspace: WorkspaceId;
217
+ }): {
218
+ record: {
219
+ readonly annotations: {
220
+ readonly destructiveHint: false;
221
+ readonly openWorldHint: false;
222
+ readonly readOnlyHint: false;
223
+ };
224
+ readonly description: "Control video recording on a Playwright runner. Start requires a caller-generated UUID; stop targets that UUID so retries cannot stop a later recording. Manual capture spans runs and suppresses automatic capture. Auto settings affect subsequent full runs. The URL opens recording history after the runner terminates. Videos may be unavailable after abrupt pod loss.";
225
+ readonly input: z.ZodObject<{
226
+ command: z.ZodDiscriminatedUnion<[z.ZodObject<{
227
+ action: z.ZodLiteral<"start">;
228
+ recordingId: z.ZodUUID;
229
+ }, z.core.$strict>, z.ZodObject<{
230
+ action: z.ZodLiteral<"stop">;
231
+ recordingId: z.ZodUUID;
232
+ }, z.core.$strict>, z.ZodObject<{
233
+ action: z.ZodLiteral<"auto">;
234
+ enabled: z.ZodBoolean;
235
+ }, z.core.$strict>, z.ZodObject<{
236
+ action: z.ZodLiteral<"status">;
237
+ }, z.core.$strict>], "action">;
238
+ id: z.ZodString;
239
+ workspaceId: z.ZodOptional<WorkspaceId>;
240
+ }, z.core.$strip>;
241
+ readonly kind: "write";
242
+ readonly name: "runner.record";
243
+ readonly output: z.ZodObject<{
244
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
245
+ outcome: z.ZodLiteral<"success">;
246
+ recording: z.ZodOptional<z.ZodObject<{
247
+ endedAt: z.ZodISODateTime;
248
+ id: z.ZodUUID;
249
+ mode: z.ZodEnum<{
250
+ manual: "manual";
251
+ automatic: "automatic";
252
+ }>;
253
+ runIds: z.ZodArray<z.ZodString>;
254
+ runnerId: z.ZodString;
255
+ runnerInstanceId: z.ZodUUID;
256
+ startedAt: z.ZodISODateTime;
257
+ status: z.ZodEnum<{
258
+ failed: "failed";
259
+ ready: "ready";
260
+ }>;
261
+ version: z.ZodLiteral<1>;
262
+ }, z.core.$strip>>;
263
+ state: z.ZodObject<{
264
+ active: z.ZodOptional<z.ZodObject<{
265
+ id: z.ZodUUID;
266
+ mode: z.ZodEnum<{
267
+ manual: "manual";
268
+ automatic: "automatic";
269
+ }>;
270
+ startedAt: z.ZodISODateTime;
271
+ }, z.core.$strip>>;
272
+ auto: z.ZodEnum<{
273
+ default: "default";
274
+ on: "on";
275
+ off: "off";
276
+ }>;
277
+ }, z.core.$strip>;
278
+ }, z.core.$strip>, z.ZodObject<{
279
+ failureReason: z.ZodEnum<{
280
+ "runner-unreachable": "runner-unreachable";
281
+ "screen-not-ready": "screen-not-ready";
282
+ unsupported: "unsupported";
283
+ "recording-in-progress": "recording-in-progress";
284
+ "recording-not-found": "recording-not-found";
285
+ "recording-id-used": "recording-id-used";
286
+ "recording-failed": "recording-failed";
287
+ }>;
288
+ outcome: z.ZodLiteral<"failure">;
289
+ }, z.core.$strip>], "outcome">;
290
+ url: z.ZodURL;
291
+ }, z.core.$strip>;
292
+ };
293
+ recordings: {
294
+ readonly annotations: {
295
+ readonly destructiveHint: false;
296
+ readonly openWorldHint: false;
297
+ readonly readOnlyHint: true;
298
+ };
299
+ readonly description: "Read a runner's finalized recordings from workspace storage, including after the runner terminates. Omit recordingId to list recordings in storage-key order; follow nextPageToken for more. An empty list for a specific recording means it is not published or does not exist. Video URLs expire; platform URLs remain stable.";
300
+ readonly input: z.ZodObject<{
301
+ id: z.ZodString;
302
+ pageToken: z.ZodOptional<z.ZodString>;
303
+ recordingId: z.ZodOptional<z.ZodUUID>;
304
+ workspaceId: z.ZodOptional<WorkspaceId>;
305
+ }, z.core.$strip>;
306
+ readonly kind: "read";
307
+ readonly name: "runner.recordings";
308
+ readonly output: z.ZodObject<{
309
+ nextPageToken: z.ZodOptional<z.ZodString>;
310
+ recordings: z.ZodArray<z.ZodObject<{
311
+ endedAt: z.ZodISODateTime;
312
+ id: z.ZodUUID;
313
+ mode: z.ZodEnum<{
314
+ manual: "manual";
315
+ automatic: "automatic";
316
+ }>;
317
+ runIds: z.ZodArray<z.ZodString>;
318
+ runnerId: z.ZodString;
319
+ runnerInstanceId: z.ZodUUID;
320
+ startedAt: z.ZodISODateTime;
321
+ status: z.ZodEnum<{
322
+ failed: "failed";
323
+ ready: "ready";
324
+ }>;
325
+ version: z.ZodLiteral<1>;
326
+ url: z.ZodURL;
327
+ videoUrl: z.ZodOptional<z.ZodURL>;
328
+ }, z.core.$strip>>;
329
+ }, z.core.$strip>;
330
+ };
331
+ };
332
+ //# sourceMappingURL=recording.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/recording.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIhD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,eAAO,MAAM,4BAA4B;;;;;;;;;;;8BAQvC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;iBAUhC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;iBASrC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAkBtC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC1C,OAAO,4BAA4B,CACpC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,0BAA0B,GACrC,WAAW,SAAS,cAAc,EAClC,KAAK;IACL,SAAS,EAAE,WAAW,CAAC;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BA,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,WAAW,SAAS,cAAc,EAClC,KAAK;IACL,SAAS,EAAE,WAAW,CAAC;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCA,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,WAAW,SAAS,cAAc,EAClC,GAAG,EAAE;IAAE,SAAS,EAAE,WAAW,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKhC"}
@@ -0,0 +1,113 @@
1
+ import { z } from "zod";
2
+ import { runnerIdSchema, runnerWorkspaceIdDescription } from "./identity.js";
3
+ export const recordingIdSchema = z.uuid();
4
+ export const runnerRecordingCommandSchema = z.discriminatedUnion("action", [
5
+ z.strictObject({
6
+ action: z.literal("start"),
7
+ recordingId: recordingIdSchema,
8
+ }),
9
+ z.strictObject({ action: z.literal("stop"), recordingId: recordingIdSchema }),
10
+ z.strictObject({ action: z.literal("auto"), enabled: z.boolean() }),
11
+ z.strictObject({ action: z.literal("status") }),
12
+ ]);
13
+ export const runnerRecordingSchema = z.object({
14
+ endedAt: z.iso.datetime(),
15
+ id: recordingIdSchema,
16
+ mode: z.enum(["manual", "automatic"]),
17
+ runIds: z.array(z.string()),
18
+ runnerId: runnerIdSchema,
19
+ runnerInstanceId: z.uuid(),
20
+ startedAt: z.iso.datetime(),
21
+ status: z.enum(["ready", "failed"]),
22
+ version: z.literal(1),
23
+ });
24
+ export const runnerRecordingStateSchema = z.object({
25
+ active: z
26
+ .object({
27
+ id: recordingIdSchema,
28
+ mode: z.enum(["manual", "automatic"]),
29
+ startedAt: z.iso.datetime(),
30
+ })
31
+ .optional(),
32
+ auto: z.enum(["on", "off", "default"]),
33
+ });
34
+ export const runnerRecordingResultSchema = z.discriminatedUnion("outcome", [
35
+ z.object({
36
+ outcome: z.literal("success"),
37
+ recording: runnerRecordingSchema.optional(),
38
+ state: runnerRecordingStateSchema,
39
+ }),
40
+ z.object({
41
+ failureReason: z.enum([
42
+ "unsupported",
43
+ "screen-not-ready",
44
+ "recording-in-progress",
45
+ "recording-not-found",
46
+ "recording-id-used",
47
+ "runner-unreachable",
48
+ "recording-failed",
49
+ ]),
50
+ outcome: z.literal("failure"),
51
+ }),
52
+ ]);
53
+ export const makeRecordOnRunnerContract = (ids) => {
54
+ const input = z.object({
55
+ command: runnerRecordingCommandSchema,
56
+ id: runnerIdSchema,
57
+ workspaceId: ids.workspace
58
+ .optional()
59
+ .describe(runnerWorkspaceIdDescription),
60
+ });
61
+ const output = z.object({
62
+ result: runnerRecordingResultSchema,
63
+ url: z.url(),
64
+ });
65
+ return {
66
+ annotations: {
67
+ destructiveHint: false,
68
+ openWorldHint: false,
69
+ readOnlyHint: false,
70
+ },
71
+ description: "Control video recording on a Playwright runner. Start requires a caller-generated UUID; stop targets that UUID so retries cannot stop a later recording. Manual capture spans runs and suppresses automatic capture. Auto settings affect subsequent full runs. The URL opens recording history after the runner terminates. Videos may be unavailable after abrupt pod loss.",
72
+ input,
73
+ kind: "write",
74
+ name: "runner.record",
75
+ output,
76
+ };
77
+ };
78
+ export const makeRunnerRecordingsContract = (ids) => {
79
+ const input = z.object({
80
+ id: runnerIdSchema,
81
+ pageToken: z.string().max(4096).optional(),
82
+ recordingId: recordingIdSchema.optional(),
83
+ workspaceId: ids.workspace
84
+ .optional()
85
+ .describe(runnerWorkspaceIdDescription),
86
+ });
87
+ const output = z.object({
88
+ nextPageToken: z.string().optional(),
89
+ recordings: z.array(runnerRecordingSchema.extend({
90
+ url: z.url(),
91
+ videoUrl: z.url().optional(),
92
+ })),
93
+ });
94
+ return {
95
+ annotations: {
96
+ destructiveHint: false,
97
+ openWorldHint: false,
98
+ readOnlyHint: true,
99
+ },
100
+ description: "Read a runner's finalized recordings from workspace storage, including after the runner terminates. Omit recordingId to list recordings in storage-key order; follow nextPageToken for more. An empty list for a specific recording means it is not published or does not exist. Video URLs expire; platform URLs remain stable.",
101
+ input,
102
+ kind: "read",
103
+ name: "runner.recordings",
104
+ output,
105
+ };
106
+ };
107
+ export function makeRecordingContracts(ids) {
108
+ return {
109
+ record: makeRecordOnRunnerContract(ids),
110
+ recordings: makeRunnerRecordingsContract(ids),
111
+ };
112
+ }
113
+ //# sourceMappingURL=recording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording.js","sourceRoot":"","sources":["../../../src/v1/runner/recording.ts"],"names":[],"mappings":"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"}
@@ -9,5 +9,6 @@ export { type JournalEntry, type JournalStream, type KnownJournalStream, type Re
9
9
  export { type RunFiles, maxRunFilesByteLength, maxRunnerRequestEncodedByteLength, runFilesByteLength, runFilesSchema, } from "./runner/payloadSize.js";
10
10
  export { maxActionErrorMessageLength } from "./runner/performAction.js";
11
11
  export { type ActionStepResult, type FailedActionStep, type PerformedActionStep, outOfTimeFailureReason, unconfirmedFailureReason, } from "./runner/performActions.js";
12
+ export { type RunnerRecording, type RunnerRecordingCommand, type RunnerRecordingResult, type RunnerRecordingState, recordingIdSchema, runnerRecordingCommandSchema, runnerRecordingResultSchema, runnerRecordingSchema, runnerRecordingStateSchema, } from "./runner/recording.js";
12
13
  export { type RunSelection, runSelectionSchema, } from "./runner/runSelection.js";
13
14
  //# sourceMappingURL=runnerReexports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runnerReexports.d.ts","sourceRoot":"","sources":["../../src/v1/runnerReexports.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,oBAAoB,EACpB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,aAAa,EAClB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAC3B,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,oBAAoB,EACzB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,QAAQ,EACb,qBAAqB,EACrB,iCAAiC,EACjC,kBAAkB,EAClB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,YAAY,EACjB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"runnerReexports.d.ts","sourceRoot":"","sources":["../../src/v1/runnerReexports.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,oBAAoB,EACpB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,aAAa,EAClB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAC3B,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,oBAAoB,EACzB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,QAAQ,EACb,qBAAqB,EACrB,iCAAiC,EACjC,kBAAkB,EAClB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,4BAA4B,EAC5B,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,KAAK,YAAY,EACjB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC"}
@@ -21,5 +21,6 @@ export { journalEntrySchema, journalStreamSchema, knownJournalStreams, maxJourna
21
21
  export { maxRunFilesByteLength, maxRunnerRequestEncodedByteLength, runFilesByteLength, runFilesSchema, } from "./runner/payloadSize.js";
22
22
  export { maxActionErrorMessageLength } from "./runner/performAction.js";
23
23
  export { outOfTimeFailureReason, unconfirmedFailureReason, } from "./runner/performActions.js";
24
+ export { recordingIdSchema, runnerRecordingCommandSchema, runnerRecordingResultSchema, runnerRecordingSchema, runnerRecordingStateSchema, } from "./runner/recording.js";
24
25
  export { runSelectionSchema, } from "./runner/runSelection.js";
25
26
  //# sourceMappingURL=runnerReexports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runnerReexports.js","sourceRoot":"","sources":["../../src/v1/runnerReexports.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,yEAAyE;AACzE,qDAAqD;AACrD,OAAO,EAEL,oBAAoB,EACpB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,4EAA4E;AAC5E,+EAA+E;AAC/E,6DAA6D;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,gFAAgF;AAChF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,gFAAgF;AAChF,yEAAyE;AACzE,OAAO,EAML,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,qBAAqB,EACrB,iCAAiC,EACjC,kBAAkB,EAClB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAIL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,kBAAkB,GACnB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"runnerReexports.js","sourceRoot":"","sources":["../../src/v1/runnerReexports.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,yEAAyE;AACzE,qDAAqD;AACrD,OAAO,EAEL,oBAAoB,EACpB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,4EAA4E;AAC5E,+EAA+E;AAC/E,6DAA6D;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,gFAAgF;AAChF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,gFAAgF;AAChF,yEAAyE;AACzE,OAAO,EAML,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,qBAAqB,EACrB,iCAAiC,EACjC,kBAAkB,EAClB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAIL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAKL,iBAAiB,EACjB,4BAA4B,EAC5B,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,kBAAkB,GACnB,MAAM,0BAA0B,CAAC"}
@@ -49,6 +49,7 @@ export declare const makeTriggerActionSchema: <FlowId extends PublicIdSchema>(id
49
49
  createSuite: "createSuite";
50
50
  generativeSuite: "generativeSuite";
51
51
  }>>;
52
+ runConcurrencyLimit: z.ZodOptional<z.ZodString>;
52
53
  tagNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
53
54
  }, z.core.$strip>;
54
55
  /**
@@ -71,6 +72,7 @@ export declare const makeTriggerScheduleFields: <EnvironmentIdSchema extends Pub
71
72
  createSuite: "createSuite";
72
73
  generativeSuite: "generativeSuite";
73
74
  }>>;
75
+ runConcurrencyLimit: z.ZodOptional<z.ZodString>;
74
76
  tagNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
75
77
  }, z.core.$strip>;
76
78
  cadence: z.ZodEnum<{
@@ -87,6 +89,15 @@ export declare const makeTriggerScheduleFields: <EnvironmentIdSchema extends Pub
87
89
  saturday: "saturday";
88
90
  sunday: "sunday";
89
91
  }>>;
92
+ daysOfWeek: z.ZodOptional<z.ZodArray<z.ZodEnum<{
93
+ monday: "monday";
94
+ tuesday: "tuesday";
95
+ wednesday: "wednesday";
96
+ thursday: "thursday";
97
+ friday: "friday";
98
+ saturday: "saturday";
99
+ sunday: "sunday";
100
+ }>>>;
90
101
  environmentId: EnvironmentIdSchema;
91
102
  minuteOfHour: z.ZodOptional<z.ZodNumber>;
92
103
  timeOfDay: z.ZodOptional<z.ZodString>;
@@ -109,6 +120,7 @@ export declare const makeTriggerDeploymentFields: <EnvironmentId extends PublicI
109
120
  createSuite: "createSuite";
110
121
  generativeSuite: "generativeSuite";
111
122
  }>>;
123
+ runConcurrencyLimit: z.ZodOptional<z.ZodString>;
112
124
  tagNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
113
125
  }, z.core.$strip>;
114
126
  branchPattern: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../../src/v1/trigger/configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAkBhD;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,oBAAoB;;;;EAEW,CAAC;AAE7C,eAAO,MAAM,sBAAsB;;;;;;;;EAU0B,CAAC;AAE9D,eAAO,MAAM,uBAAuB;;;EAIjC,CAAC;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,SAAS,cAAc,EAAE,KAAK;IAC1E,IAAI,EAAE,MAAM,CAAC;CACd;;;;;;;;;iBAwBoD,CAAC;AAEtD;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,GACpC,mBAAmB,SAAS,cAAc,EAC1C,MAAM,SAAS,cAAc,EAC7B,KAAK;IACL,aAAa,EAAE,mBAAmB,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,aAAa,SAAS,cAAc,EACpC,MAAM,SAAS,cAAc,EAC7B,KAAK;IACL,WAAW,EAAE,aAAa,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;;;;;;;;;;;;;;;CA2BC,CAAC"}
1
+ {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../../src/v1/trigger/configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAkBhD;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,oBAAoB;;;;EAEW,CAAC;AAE7C,eAAO,MAAM,sBAAsB;;;;;;;;EAU0B,CAAC;AAE9D,eAAO,MAAM,uBAAuB;;;EAIjC,CAAC;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,SAAS,cAAc,EAAE,KAAK;IAC1E,IAAI,EAAE,MAAM,CAAC;CACd;;;;;;;;;;iBAiCoD,CAAC;AAEtD;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,GACpC,mBAAmB,SAAS,cAAc,EAC1C,MAAM,SAAS,cAAc,EAC7B,KAAK;IACL,aAAa,EAAE,mBAAmB,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,aAAa,SAAS,cAAc,EACpC,MAAM,SAAS,cAAc,EAC7B,KAAK;IACL,WAAW,EAAE,aAAa,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;;;;;;;;;;;;;;;;CA2BC,CAAC"}
@@ -69,6 +69,13 @@ export const makeTriggerActionSchema = (ids) => z
69
69
  .optional()
70
70
  .describe("Whether QA Wolf investigates failures in the resulting runs. Defaults to true."),
71
71
  kind: triggerActionKindSchema.default("createSuite"),
72
+ runConcurrencyLimit: z
73
+ .string()
74
+ .trim()
75
+ .min(1)
76
+ .max(255)
77
+ .optional()
78
+ .describe("How many runs of the resulting suite may execute at once: a whole number from 1 to 1000, \"unlimited\", or a concurrency expression, which the server validates. It replaces the environment's limit rather than capping below it. Omit it to leave the environment's limit in charge."),
72
79
  tagNames: z
73
80
  .array(z.string().min(1))
74
81
  .default([])
@@ -89,6 +96,14 @@ export const makeTriggerScheduleFields = (ids) => ({
89
96
  dayOfWeek: triggerDayOfWeekSchema
90
97
  .optional()
91
98
  .describe("The day a weekly schedule fires on, read in timezoneId. Required when cadence is weekly."),
99
+ daysOfWeek: z
100
+ .array(triggerDayOfWeekSchema)
101
+ .min(1)
102
+ .refine((daysOfWeek) => new Set(daysOfWeek).size === daysOfWeek.length, {
103
+ message: "Expected each day to be named at most once.",
104
+ })
105
+ .optional()
106
+ .describe("The only days an hourly or daily schedule fires on, read in timezoneId. Name each day at most once. Omitting it fires on every day."),
92
107
  environmentId: ids.environmentId.describe("The environment the scheduled runs happen in."),
93
108
  minuteOfHour: z
94
109
  .number()
@@ -107,7 +122,7 @@ export const makeTriggerScheduleFields = (ids) => ({
107
122
  .min(1)
108
123
  .refine(isTimezone, "Expected an IANA timezone, such as America/New_York.")
109
124
  .optional()
110
- .describe("The IANA timezone that timeOfDay is read in, such as America/New_York. Required when cadence is daily or weekly."),
125
+ .describe("The IANA timezone the schedule is read in, such as America/New_York. Required when cadence is daily or weekly, and when an hourly schedule names daysOfWeek, whose day boundaries it sets. An hourly schedule firing on every day needs none, and is read in America/Los_Angeles."),
111
126
  });
112
127
  /**
113
128
  * Fields that say which deployments a deployment trigger fires for. Every
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../src/v1/trigger/configuration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../src/v1/trigger/configuration.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ type ScheduleShape = {
16
16
  action: Action;
17
17
  cadence: "daily" | "hourly" | "weekly";
18
18
  dayOfWeek?: string | undefined;
19
+ daysOfWeek?: string[] | undefined;
19
20
  kind: "schedule";
20
21
  minuteOfHour?: number | undefined;
21
22
  timeOfDay?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"configurationRules.d.ts","sourceRoot":"","sources":["../../../src/v1/trigger/configurationRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;;;;;GAMG;AAEH,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,IAAI,EAAE,aAAa,GAAG,iBAAiB,CAAC;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAIF,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAqHF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,OAAO,eAAe,GAAG,aAAa,EACtC,KAAK,CAAC,CAAC,aAAa,KACnB,IAG8B,CAAC"}
1
+ {"version":3,"file":"configurationRules.d.ts","sourceRoot":"","sources":["../../../src/v1/trigger/configurationRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;;;;;GAMG;AAEH,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,IAAI,EAAE,aAAa,GAAG,iBAAiB,CAAC;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AASF,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AA+IF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,OAAO,eAAe,GAAG,aAAa,EACtC,KAAK,CAAC,CAAC,aAAa,KACnB,IAG8B,CAAC"}