@qawolf/api-contracts 0.71.0 → 0.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/v1/deployment/index.d.ts +4 -4
- package/dist/v1/deployment/listTriggerEvaluations.d.ts +4 -4
- package/dist/v1/deployment/verdict.d.ts +52 -1
- package/dist/v1/deployment/verdict.d.ts.map +1 -1
- package/dist/v1/deployment/verdict.js +10 -1
- package/dist/v1/deployment/verdict.js.map +1 -1
- package/dist/v1/deployment/verdictParts.d.ts +10 -0
- package/dist/v1/deployment/verdictParts.d.ts.map +1 -1
- package/dist/v1/deployment/verdictParts.js +8 -2
- package/dist/v1/deployment/verdictParts.js.map +1 -1
- package/dist/v1/ids.d.ts +2 -1
- package/dist/v1/ids.d.ts.map +1 -1
- package/dist/v1/ids.js +1 -0
- package/dist/v1/ids.js.map +1 -1
- package/dist/v1/index.d.ts +559 -15
- package/dist/v1/index.d.ts.map +1 -1
- package/dist/v1/index.js +7 -1
- package/dist/v1/index.js.map +1 -1
- package/dist/v1/issue/create.d.ts +24 -0
- package/dist/v1/issue/create.d.ts.map +1 -1
- package/dist/v1/issue/create.js +17 -4
- package/dist/v1/issue/create.js.map +1 -1
- package/dist/v1/issue/update.js +1 -1
- package/dist/v1/issue/update.js.map +1 -1
- package/dist/v1/run/find.d.ts +9 -1
- package/dist/v1/run/find.d.ts.map +1 -1
- package/dist/v1/run/find.js +6 -4
- package/dist/v1/run/find.js.map +1 -1
- package/dist/v1/run/get.d.ts +16 -1
- package/dist/v1/run/get.d.ts.map +1 -1
- package/dist/v1/run/get.js +5 -7
- package/dist/v1/run/get.js.map +1 -1
- package/dist/v1/run/getAttemptArtifacts.d.ts +196 -0
- package/dist/v1/run/getAttemptArtifacts.d.ts.map +1 -0
- package/dist/v1/run/getAttemptArtifacts.js +78 -0
- package/dist/v1/run/getAttemptArtifacts.js.map +1 -0
- package/dist/v1/run/summary.d.ts +13 -0
- package/dist/v1/run/summary.d.ts.map +1 -1
- package/dist/v1/run/summary.js +23 -2
- package/dist/v1/run/summary.js.map +1 -1
- package/dist/v1/runner/browserAction.d.ts +5 -0
- package/dist/v1/runner/browserAction.d.ts.map +1 -1
- package/dist/v1/runner/browserAction.js +5 -5
- package/dist/v1/runner/browserAction.js.map +1 -1
- package/dist/v1/runner/catalog.d.ts +38 -2
- package/dist/v1/runner/catalog.d.ts.map +1 -1
- package/dist/v1/runner/identity.d.ts +2 -0
- package/dist/v1/runner/identity.d.ts.map +1 -1
- package/dist/v1/runner/identity.js +1 -0
- package/dist/v1/runner/identity.js.map +1 -1
- package/dist/v1/runner/index.d.ts +2 -0
- package/dist/v1/runner/index.d.ts.map +1 -1
- package/dist/v1/runner/inspectMobile.d.ts +6 -0
- package/dist/v1/runner/inspectMobile.d.ts.map +1 -1
- package/dist/v1/runner/inspectMobile.js +5 -1
- package/dist/v1/runner/inspectMobile.js.map +1 -1
- package/dist/v1/runner/list.d.ts +1 -0
- package/dist/v1/runner/list.d.ts.map +1 -1
- package/dist/v1/runner/performAction.d.ts +32 -1
- package/dist/v1/runner/performAction.d.ts.map +1 -1
- package/dist/v1/runner/performAction.js +6 -4
- package/dist/v1/runner/performAction.js.map +1 -1
- package/dist/v1/runner/runFlow.d.ts +2 -0
- package/dist/v1/runner/runFlow.d.ts.map +1 -1
- package/dist/v1/runner/runnerAction.d.ts +74 -0
- package/dist/v1/runner/runnerAction.d.ts.map +1 -0
- package/dist/v1/runner/runnerAction.js +94 -0
- package/dist/v1/runner/runnerAction.js.map +1 -0
- package/dist/v1/runner/screen.d.ts +1 -1
- package/dist/v1/runner/screen.d.ts.map +1 -1
- package/dist/v1/runner/screen.js +1 -1
- package/dist/v1/runner/screen.js.map +1 -1
- package/dist/v1/runner/takeScreenshot.d.ts +1 -1
- package/dist/v1/runnerReexports.d.ts +1 -0
- package/dist/v1/runnerReexports.d.ts.map +1 -1
- package/dist/v1/runnerReexports.js +1 -0
- package/dist/v1/runnerReexports.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { PublicIdSchema } from "../ids.js";
|
|
3
|
+
export declare const makeGetRunAttemptArtifactsContract: <FlowId extends PublicIdSchema, RunId extends PublicIdSchema, RunAttemptId extends PublicIdSchema>(ids: {
|
|
4
|
+
flow: FlowId;
|
|
5
|
+
run: RunId;
|
|
6
|
+
runAttempt: RunAttemptId;
|
|
7
|
+
}) => {
|
|
8
|
+
readonly annotations: {
|
|
9
|
+
readonly destructiveHint: false;
|
|
10
|
+
readonly openWorldHint: false;
|
|
11
|
+
readonly readOnlyHint: true;
|
|
12
|
+
};
|
|
13
|
+
readonly description: "Get metadata and signed artifact URLs for one finished run attempt.";
|
|
14
|
+
readonly input: z.ZodObject<{
|
|
15
|
+
attemptId: RunAttemptId;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
readonly kind: "read";
|
|
18
|
+
readonly name: "run.getAttemptArtifacts";
|
|
19
|
+
readonly output: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
20
|
+
flowId: FlowId;
|
|
21
|
+
flowStatus: z.ZodEnum<{
|
|
22
|
+
failed: "failed";
|
|
23
|
+
queued: "queued";
|
|
24
|
+
running: "running";
|
|
25
|
+
passed: "passed";
|
|
26
|
+
canceled: "canceled";
|
|
27
|
+
}>;
|
|
28
|
+
retryContext: z.ZodObject<{
|
|
29
|
+
currentOrdinal: z.ZodNumber;
|
|
30
|
+
next: z.ZodOptional<z.ZodObject<{
|
|
31
|
+
attemptId: RunAttemptId;
|
|
32
|
+
status: z.ZodEnum<{
|
|
33
|
+
failed: "failed";
|
|
34
|
+
passed: "passed";
|
|
35
|
+
canceled: "canceled";
|
|
36
|
+
skipped: "skipped";
|
|
37
|
+
aborted: "aborted";
|
|
38
|
+
}>;
|
|
39
|
+
}, z.core.$strip>>;
|
|
40
|
+
previous: z.ZodOptional<z.ZodObject<{
|
|
41
|
+
attemptId: RunAttemptId;
|
|
42
|
+
status: z.ZodEnum<{
|
|
43
|
+
failed: "failed";
|
|
44
|
+
passed: "passed";
|
|
45
|
+
canceled: "canceled";
|
|
46
|
+
skipped: "skipped";
|
|
47
|
+
aborted: "aborted";
|
|
48
|
+
}>;
|
|
49
|
+
}, z.core.$strip>>;
|
|
50
|
+
total: z.ZodNumber;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
runId: RunId;
|
|
53
|
+
runStatus: z.ZodEnum<{
|
|
54
|
+
failed: "failed";
|
|
55
|
+
queued: "queued";
|
|
56
|
+
running: "running";
|
|
57
|
+
passed: "passed";
|
|
58
|
+
canceled: "canceled";
|
|
59
|
+
superseded: "superseded";
|
|
60
|
+
}>;
|
|
61
|
+
artifacts: z.ZodObject<{
|
|
62
|
+
logsUrl: z.ZodOptional<z.ZodURL>;
|
|
63
|
+
traceUrl: z.ZodOptional<z.ZodURL>;
|
|
64
|
+
videoUrl: z.ZodOptional<z.ZodURL>;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
artifactStatus: z.ZodLiteral<"signed">;
|
|
67
|
+
attempt: z.ZodObject<{
|
|
68
|
+
attemptId: RunAttemptId;
|
|
69
|
+
completedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
70
|
+
createdAt: z.ZodISODateTime;
|
|
71
|
+
error: z.ZodOptional<z.ZodString>;
|
|
72
|
+
startedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
73
|
+
kind: z.ZodLiteral<"automated">;
|
|
74
|
+
status: z.ZodEnum<{
|
|
75
|
+
failed: "failed";
|
|
76
|
+
passed: "passed";
|
|
77
|
+
canceled: "canceled";
|
|
78
|
+
skipped: "skipped";
|
|
79
|
+
aborted: "aborted";
|
|
80
|
+
}>;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
83
|
+
flowId: FlowId;
|
|
84
|
+
flowStatus: z.ZodEnum<{
|
|
85
|
+
failed: "failed";
|
|
86
|
+
queued: "queued";
|
|
87
|
+
running: "running";
|
|
88
|
+
passed: "passed";
|
|
89
|
+
canceled: "canceled";
|
|
90
|
+
}>;
|
|
91
|
+
retryContext: z.ZodObject<{
|
|
92
|
+
currentOrdinal: z.ZodNumber;
|
|
93
|
+
next: z.ZodOptional<z.ZodObject<{
|
|
94
|
+
attemptId: RunAttemptId;
|
|
95
|
+
status: z.ZodEnum<{
|
|
96
|
+
failed: "failed";
|
|
97
|
+
passed: "passed";
|
|
98
|
+
canceled: "canceled";
|
|
99
|
+
skipped: "skipped";
|
|
100
|
+
aborted: "aborted";
|
|
101
|
+
}>;
|
|
102
|
+
}, z.core.$strip>>;
|
|
103
|
+
previous: z.ZodOptional<z.ZodObject<{
|
|
104
|
+
attemptId: RunAttemptId;
|
|
105
|
+
status: z.ZodEnum<{
|
|
106
|
+
failed: "failed";
|
|
107
|
+
passed: "passed";
|
|
108
|
+
canceled: "canceled";
|
|
109
|
+
skipped: "skipped";
|
|
110
|
+
aborted: "aborted";
|
|
111
|
+
}>;
|
|
112
|
+
}, z.core.$strip>>;
|
|
113
|
+
total: z.ZodNumber;
|
|
114
|
+
}, z.core.$strip>;
|
|
115
|
+
runId: RunId;
|
|
116
|
+
runStatus: z.ZodEnum<{
|
|
117
|
+
failed: "failed";
|
|
118
|
+
queued: "queued";
|
|
119
|
+
running: "running";
|
|
120
|
+
passed: "passed";
|
|
121
|
+
canceled: "canceled";
|
|
122
|
+
superseded: "superseded";
|
|
123
|
+
}>;
|
|
124
|
+
artifacts: z.ZodObject<{}, z.core.$strict>;
|
|
125
|
+
artifactStatus: z.ZodLiteral<"signing-failed">;
|
|
126
|
+
attempt: z.ZodObject<{
|
|
127
|
+
attemptId: RunAttemptId;
|
|
128
|
+
completedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
129
|
+
createdAt: z.ZodISODateTime;
|
|
130
|
+
error: z.ZodOptional<z.ZodString>;
|
|
131
|
+
startedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
132
|
+
kind: z.ZodLiteral<"automated">;
|
|
133
|
+
status: z.ZodEnum<{
|
|
134
|
+
failed: "failed";
|
|
135
|
+
passed: "passed";
|
|
136
|
+
canceled: "canceled";
|
|
137
|
+
skipped: "skipped";
|
|
138
|
+
aborted: "aborted";
|
|
139
|
+
}>;
|
|
140
|
+
}, z.core.$strip>;
|
|
141
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
142
|
+
flowId: FlowId;
|
|
143
|
+
flowStatus: z.ZodEnum<{
|
|
144
|
+
failed: "failed";
|
|
145
|
+
queued: "queued";
|
|
146
|
+
running: "running";
|
|
147
|
+
passed: "passed";
|
|
148
|
+
canceled: "canceled";
|
|
149
|
+
}>;
|
|
150
|
+
retryContext: z.ZodObject<{
|
|
151
|
+
currentOrdinal: z.ZodNumber;
|
|
152
|
+
next: z.ZodOptional<z.ZodObject<{
|
|
153
|
+
attemptId: RunAttemptId;
|
|
154
|
+
status: z.ZodEnum<{
|
|
155
|
+
failed: "failed";
|
|
156
|
+
passed: "passed";
|
|
157
|
+
canceled: "canceled";
|
|
158
|
+
skipped: "skipped";
|
|
159
|
+
aborted: "aborted";
|
|
160
|
+
}>;
|
|
161
|
+
}, z.core.$strip>>;
|
|
162
|
+
previous: z.ZodOptional<z.ZodObject<{
|
|
163
|
+
attemptId: RunAttemptId;
|
|
164
|
+
status: z.ZodEnum<{
|
|
165
|
+
failed: "failed";
|
|
166
|
+
passed: "passed";
|
|
167
|
+
canceled: "canceled";
|
|
168
|
+
skipped: "skipped";
|
|
169
|
+
aborted: "aborted";
|
|
170
|
+
}>;
|
|
171
|
+
}, z.core.$strip>>;
|
|
172
|
+
total: z.ZodNumber;
|
|
173
|
+
}, z.core.$strip>;
|
|
174
|
+
runId: RunId;
|
|
175
|
+
runStatus: z.ZodEnum<{
|
|
176
|
+
failed: "failed";
|
|
177
|
+
queued: "queued";
|
|
178
|
+
running: "running";
|
|
179
|
+
passed: "passed";
|
|
180
|
+
canceled: "canceled";
|
|
181
|
+
superseded: "superseded";
|
|
182
|
+
}>;
|
|
183
|
+
artifacts: z.ZodObject<{}, z.core.$strict>;
|
|
184
|
+
artifactStatus: z.ZodLiteral<"not-captured">;
|
|
185
|
+
attempt: z.ZodObject<{
|
|
186
|
+
attemptId: RunAttemptId;
|
|
187
|
+
completedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
188
|
+
createdAt: z.ZodISODateTime;
|
|
189
|
+
error: z.ZodOptional<z.ZodString>;
|
|
190
|
+
startedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
191
|
+
kind: z.ZodLiteral<"manual">;
|
|
192
|
+
status: z.ZodLiteral<"passed">;
|
|
193
|
+
}, z.core.$strip>;
|
|
194
|
+
}, z.core.$strip>], "artifactStatus">;
|
|
195
|
+
};
|
|
196
|
+
//# sourceMappingURL=getAttemptArtifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAttemptArtifacts.d.ts","sourceRoot":"","sources":["../../../src/v1/run/getAttemptArtifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOhD,eAAO,MAAM,kCAAkC,GAC7C,MAAM,SAAS,cAAc,EAC7B,KAAK,SAAS,cAAc,EAC5B,YAAY,SAAS,cAAc,EACnC,KAAK;IACL,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,KAAK,CAAC;IACX,UAAU,EAAE,YAAY,CAAC;CAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFA,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { publicRunStatusValues, publicRunSummaryStatusValues, } from "./summary.js";
|
|
3
|
+
export const makeGetRunAttemptArtifactsContract = (ids) => {
|
|
4
|
+
const input = z.object({ attemptId: ids.runAttempt });
|
|
5
|
+
const attemptStatus = z.enum([
|
|
6
|
+
"passed",
|
|
7
|
+
"failed",
|
|
8
|
+
"canceled",
|
|
9
|
+
"aborted",
|
|
10
|
+
"skipped",
|
|
11
|
+
]);
|
|
12
|
+
const attemptNeighbor = z.object({
|
|
13
|
+
attemptId: ids.runAttempt,
|
|
14
|
+
status: attemptStatus,
|
|
15
|
+
});
|
|
16
|
+
const response = z.object({
|
|
17
|
+
flowId: ids.flow,
|
|
18
|
+
flowStatus: z.enum(publicRunStatusValues),
|
|
19
|
+
retryContext: z.object({
|
|
20
|
+
currentOrdinal: z.number().int().min(1),
|
|
21
|
+
next: attemptNeighbor.optional(),
|
|
22
|
+
previous: attemptNeighbor.optional(),
|
|
23
|
+
total: z.number().int().min(1),
|
|
24
|
+
}),
|
|
25
|
+
runId: ids.run,
|
|
26
|
+
runStatus: z.enum(publicRunSummaryStatusValues),
|
|
27
|
+
});
|
|
28
|
+
const attempt = z.object({
|
|
29
|
+
attemptId: ids.runAttempt,
|
|
30
|
+
completedAt: z.iso.datetime().optional(),
|
|
31
|
+
createdAt: z.iso.datetime(),
|
|
32
|
+
error: z.string().optional(),
|
|
33
|
+
startedAt: z.iso.datetime().optional(),
|
|
34
|
+
});
|
|
35
|
+
const output = z.discriminatedUnion("artifactStatus", [
|
|
36
|
+
response.extend({
|
|
37
|
+
artifacts: z.object({
|
|
38
|
+
logsUrl: z.url().optional(),
|
|
39
|
+
traceUrl: z.url().optional(),
|
|
40
|
+
videoUrl: z.url().optional(),
|
|
41
|
+
}),
|
|
42
|
+
artifactStatus: z.literal("signed"),
|
|
43
|
+
attempt: attempt.extend({
|
|
44
|
+
kind: z.literal("automated"),
|
|
45
|
+
status: attemptStatus,
|
|
46
|
+
}),
|
|
47
|
+
}),
|
|
48
|
+
response.extend({
|
|
49
|
+
artifacts: z.object({}).strict(),
|
|
50
|
+
artifactStatus: z.literal("signing-failed"),
|
|
51
|
+
attempt: attempt.extend({
|
|
52
|
+
kind: z.literal("automated"),
|
|
53
|
+
status: attemptStatus,
|
|
54
|
+
}),
|
|
55
|
+
}),
|
|
56
|
+
response.extend({
|
|
57
|
+
artifacts: z.object({}).strict(),
|
|
58
|
+
artifactStatus: z.literal("not-captured"),
|
|
59
|
+
attempt: attempt.extend({
|
|
60
|
+
kind: z.literal("manual"),
|
|
61
|
+
status: z.literal("passed"),
|
|
62
|
+
}),
|
|
63
|
+
}),
|
|
64
|
+
]);
|
|
65
|
+
return {
|
|
66
|
+
annotations: {
|
|
67
|
+
destructiveHint: false,
|
|
68
|
+
openWorldHint: false,
|
|
69
|
+
readOnlyHint: true,
|
|
70
|
+
},
|
|
71
|
+
description: "Get metadata and signed artifact URLs for one finished run attempt.",
|
|
72
|
+
input,
|
|
73
|
+
kind: "read",
|
|
74
|
+
name: "run.getAttemptArtifacts",
|
|
75
|
+
output,
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=getAttemptArtifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAttemptArtifacts.js","sourceRoot":"","sources":["../../../src/v1/run/getAttemptArtifacts.ts"],"names":[],"mappings":"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"}
|
package/dist/v1/run/summary.d.ts
CHANGED
|
@@ -2,6 +2,13 @@ import { z } from "zod";
|
|
|
2
2
|
import type { PublicIdSchema } from "../ids.js";
|
|
3
3
|
/** The public status vocabulary, shared by a run and by each of its flows. */
|
|
4
4
|
export declare const publicRunStatusValues: readonly ["queued", "running", "passed", "failed", "canceled"];
|
|
5
|
+
/**
|
|
6
|
+
* The run's own status vocabulary: the flow values plus the states only a
|
|
7
|
+
* whole run can be in. The deployment verdict's runs share it, so the two
|
|
8
|
+
* cannot disagree about a run; flow statuses and the `flowStatuses` filter
|
|
9
|
+
* keep the five shared values.
|
|
10
|
+
*/
|
|
11
|
+
export declare const publicRunSummaryStatusValues: readonly ["queued", "running", "passed", "failed", "canceled", "superseded"];
|
|
5
12
|
export declare const makeRunSummaryFields: <RunId extends PublicIdSchema>(ids: {
|
|
6
13
|
run: RunId;
|
|
7
14
|
}) => {
|
|
@@ -13,6 +20,7 @@ export declare const makeRunSummaryFields: <RunId extends PublicIdSchema>(ids: {
|
|
|
13
20
|
commitSha: z.ZodOptional<z.ZodString>;
|
|
14
21
|
commitUrl: z.ZodOptional<z.ZodString>;
|
|
15
22
|
}, z.core.$strip>;
|
|
23
|
+
needsReview: z.ZodOptional<z.ZodBoolean>;
|
|
16
24
|
runId: RunId;
|
|
17
25
|
status: z.ZodEnum<{
|
|
18
26
|
failed: "failed";
|
|
@@ -20,6 +28,11 @@ export declare const makeRunSummaryFields: <RunId extends PublicIdSchema>(ids: {
|
|
|
20
28
|
running: "running";
|
|
21
29
|
passed: "passed";
|
|
22
30
|
canceled: "canceled";
|
|
31
|
+
superseded: "superseded";
|
|
23
32
|
}>;
|
|
33
|
+
supersededBy: z.ZodOptional<z.ZodObject<{
|
|
34
|
+
runId: RunId;
|
|
35
|
+
url: z.ZodURL;
|
|
36
|
+
}, z.core.$strip>>;
|
|
24
37
|
};
|
|
25
38
|
//# sourceMappingURL=summary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/v1/run/summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,gEAMxB,CAAC;AAKX,eAAO,MAAM,oBAAoB,GAAI,KAAK,SAAS,cAAc,EAAE,KAAK;IACtE,GAAG,EAAE,KAAK,CAAC;CACZ
|
|
1
|
+
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/v1/run/summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,gEAMxB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,8EAG/B,CAAC;AAKX,eAAO,MAAM,oBAAoB,GAAI,KAAK,SAAS,cAAc,EAAE,KAAK;IACtE,GAAG,EAAE,KAAK,CAAC;CACZ;;;;;;;;;;;;;;;;;;;;;;;CAiDC,CAAC"}
|
package/dist/v1/run/summary.js
CHANGED
|
@@ -7,6 +7,16 @@ export const publicRunStatusValues = [
|
|
|
7
7
|
"failed",
|
|
8
8
|
"canceled",
|
|
9
9
|
];
|
|
10
|
+
/**
|
|
11
|
+
* The run's own status vocabulary: the flow values plus the states only a
|
|
12
|
+
* whole run can be in. The deployment verdict's runs share it, so the two
|
|
13
|
+
* cannot disagree about a run; flow statuses and the `flowStatuses` filter
|
|
14
|
+
* keep the five shared values.
|
|
15
|
+
*/
|
|
16
|
+
export const publicRunSummaryStatusValues = [
|
|
17
|
+
...publicRunStatusValues,
|
|
18
|
+
"superseded",
|
|
19
|
+
];
|
|
10
20
|
// The shared run summary fields. run.find returns them as rows. run.get adds
|
|
11
21
|
// the per-flow results to them. Both shapes come from this one factory, so
|
|
12
22
|
// the shapes cannot become different.
|
|
@@ -31,12 +41,23 @@ export const makeRunSummaryFields = (ids) => ({
|
|
|
31
41
|
.describe("Link to the commit on the code host."),
|
|
32
42
|
})
|
|
33
43
|
.describe("The branch and commit under test. The fields are present when a deploy notification started the run, and absent for runs started another way, for example manually or with run.create."),
|
|
44
|
+
needsReview: z
|
|
45
|
+
.boolean()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("True once every flow has finished its attempts and at least one failed flow still has no diagnosis, including one whose investigation carried over to a later run. `status` stays `running` until that failure is diagnosed, so a caller that is not waiting for a diagnosis can stop polling here and read the run's failed flows."),
|
|
34
48
|
// Deliberately not described here: run.find builds its rows from this factory
|
|
35
49
|
// too, and its rows answer no requested id, so wording about the id you asked
|
|
36
50
|
// for belongs on run.get alone.
|
|
37
51
|
runId: ids.run,
|
|
38
52
|
status: z
|
|
39
|
-
.enum(
|
|
40
|
-
.describe("Whole-run status, and the value to gate a pipeline on. Terminal statuses are passed, failed, and
|
|
53
|
+
.enum(publicRunSummaryStatusValues)
|
|
54
|
+
.describe("Whole-run status, and the value to gate a pipeline on. Terminal statuses are passed, failed, canceled, and superseded; poll until one is reached. `failed` means the run found a bug that is still open and serious enough to block — a lower-priority bug, or one since resolved, reads `passed`, and the per-flow diagnoses are still in `flows`. The run stays `running` while any investigation is unresolved, including one that carried over to a later run, so a terminal status always means a settled answer, and `needsReview` tells such a run apart from one that is still executing. `superseded` means a newer run replaced this one before it finished: it is not a pass, this run will never change again, and the verdict belongs to the run in `supersededBy`."),
|
|
55
|
+
supersededBy: z
|
|
56
|
+
.object({
|
|
57
|
+
runId: ids.run,
|
|
58
|
+
url: z.url().describe("Absolute URL of the replacement run's page."),
|
|
59
|
+
})
|
|
60
|
+
.optional()
|
|
61
|
+
.describe("The run that replaced this one, present only when `status` is `superseded`. A newer deployment to the same branch and environment (and service, when the deployment named one) cancels the older run's unfinished flows and takes over. Deduplication ignores the commit, so the replacement may be testing a later commit than this run did. Only the direct replacement is named; that run can itself be superseded."),
|
|
41
62
|
});
|
|
42
63
|
//# sourceMappingURL=summary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/v1/run/summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,8EAA8E;AAC9E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;CACF,CAAC;AAEX,6EAA6E;AAC7E,2EAA2E;AAC3E,sCAAsC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAA+B,GAElE,EAAE,EAAE,CAAC,CAAC;IACL,WAAW,EAAE,CAAC,CAAC,GAAG;SACf,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,+KAA+K,CAChL;IACH,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC3B,GAAG,EAAE,CAAC;SACH,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,wEAAwE;QACxE,uEAAuE;QACvE,sEAAsE;QACtE,mDAAmD;QACnD,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,sCAAsC,CAAC;KACpD,CAAC;SACD,QAAQ,CACP,wLAAwL,CACzL;IACH,8EAA8E;IAC9E,8EAA8E;IAC9E,gCAAgC;IAChC,KAAK,EAAE,GAAG,CAAC,GAAG;IACd,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/v1/run/summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,8EAA8E;AAC9E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;CACF,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,GAAG,qBAAqB;IACxB,YAAY;CACJ,CAAC;AAEX,6EAA6E;AAC7E,2EAA2E;AAC3E,sCAAsC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAA+B,GAElE,EAAE,EAAE,CAAC,CAAC;IACL,WAAW,EAAE,CAAC,CAAC,GAAG;SACf,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,+KAA+K,CAChL;IACH,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC3B,GAAG,EAAE,CAAC;SACH,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,wEAAwE;QACxE,uEAAuE;QACvE,sEAAsE;QACtE,mDAAmD;QACnD,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,sCAAsC,CAAC;KACpD,CAAC;SACD,QAAQ,CACP,wLAAwL,CACzL;IACH,WAAW,EAAE,CAAC;SACX,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,qUAAqU,CACtU;IACH,8EAA8E;IAC9E,8EAA8E;IAC9E,gCAAgC;IAChC,KAAK,EAAE,GAAG,CAAC,GAAG;IACd,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,4BAA4B,CAAC;SAClC,QAAQ,CACP,kvBAAkvB,CACnvB;IACH,YAAY,EAAE,CAAC;SACZ,MAAM,CAAC;QACN,KAAK,EAAE,GAAG,CAAC,GAAG;QACd,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;KACrE,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CACP,wZAAwZ,CACzZ;CACJ,CAAC,CAAC"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
export declare const screenCoordinateSchema: z.ZodInt;
|
|
3
|
+
export declare const screenPointSchema: z.ZodObject<{
|
|
4
|
+
x: z.ZodInt;
|
|
5
|
+
y: z.ZodInt;
|
|
6
|
+
}, z.core.$strict>;
|
|
2
7
|
/** The keyboard is held for 50 ms per character, so 200 of them is ten seconds. */
|
|
3
8
|
export declare const maxTypedTextLength = 200;
|
|
4
9
|
/** Only the two schemes a browser navigation means, matched on the parsed scheme. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserAction.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/browserAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"browserAction.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/browserAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,sBAAsB,UAA0C,CAAC;AAE9E,eAAO,MAAM,iBAAiB;;;kBAG5B,CAAC;AAOH,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAatC,qFAAqF;AACrF,eAAO,MAAM,kBAAkB,UAEH,CAAC;AAE7B,iFAAiF;AACjF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA+C9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
/**
|
|
3
|
-
* The
|
|
4
|
-
* the runner. Only ever tighten a bound: pods deploy separately, so a
|
|
5
|
-
* bound forwards actions an older pod rejects.
|
|
3
|
+
* The actions a browser runner performs, validated with the same schema by apex
|
|
4
|
+
* and the runner. Only ever tighten a bound: pods deploy separately, so a
|
|
5
|
+
* widened bound forwards actions an older pod rejects.
|
|
6
6
|
*
|
|
7
7
|
* `snake_case` on purpose: these are the computer-use tool names.
|
|
8
8
|
*/
|
|
9
9
|
/** A whole pixel on the runner's virtual desktop. */
|
|
10
10
|
const maxScreenCoordinate = 20_000;
|
|
11
|
-
const screenCoordinateSchema = z.int().min(0).max(maxScreenCoordinate);
|
|
12
|
-
const screenPointSchema = z.strictObject({
|
|
11
|
+
export const screenCoordinateSchema = z.int().min(0).max(maxScreenCoordinate);
|
|
12
|
+
export const screenPointSchema = z.strictObject({
|
|
13
13
|
x: screenCoordinateSchema,
|
|
14
14
|
y: screenCoordinateSchema,
|
|
15
15
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserAction.js","sourceRoot":"","sources":["../../../src/v1/runner/browserAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AAEH,qDAAqD;AACrD,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,MAAM,sBAAsB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"browserAction.js","sourceRoot":"","sources":["../../../src/v1/runner/browserAction.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,12 +40,14 @@ export declare const makeRunnerContracts: <FlowId extends PublicIdSchema, Worksp
|
|
|
40
40
|
playwright: "playwright";
|
|
41
41
|
android: "android";
|
|
42
42
|
ios: "ios";
|
|
43
|
+
windows: "windows";
|
|
43
44
|
}>;
|
|
44
45
|
runnerName: import("zod").ZodEnum<{
|
|
45
46
|
basic: "basic";
|
|
46
47
|
playwright: "playwright";
|
|
47
48
|
android: "android";
|
|
48
49
|
ios: "ios";
|
|
50
|
+
windows: "windows";
|
|
49
51
|
}>;
|
|
50
52
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
51
53
|
failureReason: import("zod").ZodLiteral<"needs-full-sync">;
|
|
@@ -85,7 +87,7 @@ export declare const makeRunnerContracts: <FlowId extends PublicIdSchema, Worksp
|
|
|
85
87
|
readonly openWorldHint: false;
|
|
86
88
|
readonly readOnlyHint: false;
|
|
87
89
|
};
|
|
88
|
-
readonly description: "Take one screenshot of an interactive runner's screen. On a runner with a browser the image is the whole virtual desktop, browser window and all; this refreshes the inactivity timer and can extend the runner's billed lifetime. On a mobile runner it is the device's own screen, re-encoded to JPEG on the pod so this contract reads one image format regardless of runner family. `screen-needs-a-run` if the runner's virtual desktop has never started. Waiting will not change this and retrying is pointless — call `runner.runFlow` with a flow that opens a browser, then ask for the screen again. On a runner image with a browser that has never run anything, any `runner.performAction` also starts the browser itself. Evaluating a snippet does not start the desktop. `screen-not-ready` if the runner has a screen that cannot serve this instant. Retry in a second or two: the desktop restarts when a run changes the display size, and it serves one see-or-act request at a time, so a screenshot or action already in flight is the usual reason. Do not submit a run to clear this — a run may restart the display and discard what is on it. `runner-has-no-screen` if this runner
|
|
90
|
+
readonly description: "Take one screenshot of an interactive runner's screen. On a runner with a browser the image is the whole virtual desktop, browser window and all; this refreshes the inactivity timer and can extend the runner's billed lifetime. On a mobile runner it is the device's own screen, re-encoded to JPEG on the pod so this contract reads one image format regardless of runner family. `screen-needs-a-run` if the runner's virtual desktop has never started. Waiting will not change this and retrying is pointless — call `runner.runFlow` with a flow that opens a browser, then ask for the screen again. On a runner image with a browser that has never run anything, any `runner.performAction` also starts the browser itself. Evaluating a snippet does not start the desktop. `screen-not-ready` if the runner has a screen that cannot serve this instant. Retry in a second or two: the desktop restarts when a run changes the display size, and it serves one see-or-act request at a time, so a screenshot or action already in flight is the usual reason. Do not submit a run to clear this — a run may restart the display and discard what is on it. `runner-has-no-screen` if this runner has no browser desktop to see or drive, and retrying will never help. Launch a `playwright` runner, or on `windows` use `runner.runFlow`. `runner-unreachable` if the runner could not be reached: it may still be starting, it may have terminated after inactivity, or it may be too busy to answer. Nothing was changed, so retrying is safe; if it persists, launch the runner again.";
|
|
89
91
|
readonly input: import("zod").ZodObject<{
|
|
90
92
|
id: import("zod").ZodString;
|
|
91
93
|
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
@@ -623,6 +625,7 @@ export declare const makeRunnerContracts: <FlowId extends PublicIdSchema, Worksp
|
|
|
623
625
|
playwright: "playwright";
|
|
624
626
|
android: "android";
|
|
625
627
|
ios: "ios";
|
|
628
|
+
windows: "windows";
|
|
626
629
|
}>>;
|
|
627
630
|
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
628
631
|
}, import("zod/v4/core").$strip>;
|
|
@@ -636,6 +639,7 @@ export declare const makeRunnerContracts: <FlowId extends PublicIdSchema, Worksp
|
|
|
636
639
|
playwright: "playwright";
|
|
637
640
|
android: "android";
|
|
638
641
|
ios: "ios";
|
|
642
|
+
windows: "windows";
|
|
639
643
|
}>;
|
|
640
644
|
url: import("zod").ZodURL;
|
|
641
645
|
alreadyRunning: import("zod").ZodBoolean;
|
|
@@ -664,6 +668,7 @@ export declare const makeRunnerContracts: <FlowId extends PublicIdSchema, Worksp
|
|
|
664
668
|
playwright: "playwright";
|
|
665
669
|
android: "android";
|
|
666
670
|
ios: "ios";
|
|
671
|
+
windows: "windows";
|
|
667
672
|
}>;
|
|
668
673
|
url: import("zod").ZodURL;
|
|
669
674
|
}, import("zod/v4/core").$strip>>;
|
|
@@ -675,7 +680,7 @@ export declare const makeRunnerContracts: <FlowId extends PublicIdSchema, Worksp
|
|
|
675
680
|
readonly openWorldHint: true;
|
|
676
681
|
readonly readOnlyHint: false;
|
|
677
682
|
};
|
|
678
|
-
readonly description: "Perform one raw
|
|
683
|
+
readonly description: "Perform one raw action on an interactive runner: click, double_click, move, drag, scroll, keypress, type, or navigate; on mobile, tap, swipe, fill, or type. One action per request, and the runner serves one at a time. A success means the action took effect. `action-failed`, with a reason, if it reached the runner and did not take effect. On a runner image with a browser, the first action on a runner that has never run anything starts its browser and waits for it, so it can take up to a minute to answer — no `runner.runFlow` is needed before acting; if the browser is still starting when the wait runs out, the answer is `screen-not-ready` and retrying converges. On a mobile runner, the same `screen-needs-a-run` and `screen-not-ready` outcomes mean no Appium session has started yet, or it did not answer this instant; `runner.runFlow` is what starts one, same as a browser. `screen-needs-a-run` if the browser could not be started that way — usually a runner whose runs all finished without starting its desktop; call `runner.runFlow` with a flow that opens a browser. `screen-not-ready` if the runner has a screen that cannot serve this instant. Retry in a second or two: the desktop restarts when a run changes the display size, and it serves one see-or-act request at a time, so a screenshot or action already in flight is the usual reason. Do not submit a run to clear this — a run may restart the display and discard what is on it. `runner-has-no-screen` if this runner has no browser desktop to see or drive, and retrying will never help. Launch a `playwright` runner, or on `windows` use `runner.runFlow`. `runner-unreachable` if the runner could not be reached: it may still be starting, it may have terminated after inactivity, or it may have stopped answering mid-action. This does not mean the action was not performed — take a screenshot before repeating it.";
|
|
679
684
|
readonly input: import("zod").ZodObject<{
|
|
680
685
|
action: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
681
686
|
button: import("zod").ZodLiteral<"left" | "right" | "wheel" | "back" | "forward">;
|
|
@@ -711,6 +716,36 @@ export declare const makeRunnerContracts: <FlowId extends PublicIdSchema, Worksp
|
|
|
711
716
|
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
712
717
|
text: import("zod").ZodString;
|
|
713
718
|
type: import("zod").ZodLiteral<"type">;
|
|
719
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
720
|
+
selector: import("zod").ZodOptional<import("zod").ZodString>;
|
|
721
|
+
strategy: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
722
|
+
"ios-predicate": "ios-predicate";
|
|
723
|
+
shadow: "shadow";
|
|
724
|
+
xpath: "xpath";
|
|
725
|
+
}>>;
|
|
726
|
+
type: import("zod").ZodLiteral<"tap">;
|
|
727
|
+
x: import("zod").ZodOptional<import("zod").ZodInt>;
|
|
728
|
+
y: import("zod").ZodOptional<import("zod").ZodInt>;
|
|
729
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
730
|
+
duration_ms: import("zod").ZodOptional<import("zod").ZodInt>;
|
|
731
|
+
from: import("zod").ZodObject<{
|
|
732
|
+
x: import("zod").ZodInt;
|
|
733
|
+
y: import("zod").ZodInt;
|
|
734
|
+
}, import("zod/v4/core").$strict>;
|
|
735
|
+
to: import("zod").ZodObject<{
|
|
736
|
+
x: import("zod").ZodInt;
|
|
737
|
+
y: import("zod").ZodInt;
|
|
738
|
+
}, import("zod/v4/core").$strict>;
|
|
739
|
+
type: import("zod").ZodLiteral<"swipe">;
|
|
740
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
741
|
+
selector: import("zod").ZodString;
|
|
742
|
+
strategy: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
743
|
+
"ios-predicate": "ios-predicate";
|
|
744
|
+
shadow: "shadow";
|
|
745
|
+
xpath: "xpath";
|
|
746
|
+
}>>;
|
|
747
|
+
text: import("zod").ZodString;
|
|
748
|
+
type: import("zod").ZodLiteral<"fill">;
|
|
714
749
|
}, import("zod/v4/core").$strict>], "type">;
|
|
715
750
|
id: import("zod").ZodString;
|
|
716
751
|
withScreenshot: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
@@ -733,6 +768,7 @@ export declare const makeRunnerContracts: <FlowId extends PublicIdSchema, Worksp
|
|
|
733
768
|
"screen-not-ready": "screen-not-ready";
|
|
734
769
|
"runner-has-no-screen": "runner-has-no-screen";
|
|
735
770
|
"action-not-supported-on-mobile": "action-not-supported-on-mobile";
|
|
771
|
+
"action-not-supported-on-browser": "action-not-supported-on-browser";
|
|
736
772
|
}>;
|
|
737
773
|
outcome: import("zod").ZodLiteral<"failure">;
|
|
738
774
|
}, import("zod/v4/core").$strip>], "failureReason">], "outcome">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAsBhD,eAAO,MAAM,mBAAmB,GAC9B,MAAM,SAAS,cAAc,EAC7B,WAAW,SAAS,cAAc,EAClC,KAAK;IACL,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,WAAW,CAAC;CACxB
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAsBhD,eAAO,MAAM,mBAAmB,GAC9B,MAAM,SAAS,cAAc,EAC7B,WAAW,SAAS,cAAc,EAClC,KAAK;IACL,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,WAAW,CAAC;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBC,CAAC"}
|
|
@@ -4,6 +4,7 @@ export declare const runnerNameSchema: z.ZodEnum<{
|
|
|
4
4
|
playwright: "playwright";
|
|
5
5
|
android: "android";
|
|
6
6
|
ios: "ios";
|
|
7
|
+
windows: "windows";
|
|
7
8
|
}>;
|
|
8
9
|
export type RunnerNameForPublicApi = z.infer<typeof runnerNameSchema>;
|
|
9
10
|
export declare const runnerWorkspaceRequirement = "Read it from whoami.";
|
|
@@ -19,6 +20,7 @@ export declare const makeRunnerSchema: () => z.ZodObject<{
|
|
|
19
20
|
playwright: "playwright";
|
|
20
21
|
android: "android";
|
|
21
22
|
ios: "ios";
|
|
23
|
+
windows: "windows";
|
|
22
24
|
}>;
|
|
23
25
|
url: z.ZodURL;
|
|
24
26
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;EAM3B,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEtE,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AAEjE,eAAO,MAAM,4BAA4B,8DAAuE,CAAC;AAEjH,eAAO,MAAM,cAAc,aAOxB,CAAC;AAEJ,eAAO,MAAM,oBAAoB,UAI9B,CAAC;AAEJ,2CAA2C;AAC3C,eAAO,MAAM,gBAAgB;;;;;;;;;;;iBAczB,CAAC"}
|
|
@@ -4,6 +4,7 @@ export const runnerNameSchema = z.enum([
|
|
|
4
4
|
"playwright",
|
|
5
5
|
"android",
|
|
6
6
|
"ios",
|
|
7
|
+
"windows",
|
|
7
8
|
]);
|
|
8
9
|
export const runnerWorkspaceRequirement = "Read it from whoami.";
|
|
9
10
|
export const runnerWorkspaceIdDescription = `The workspace the runner belongs to. ${runnerWorkspaceRequirement}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/v1/runner/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,OAAO;IACP,YAAY;IACZ,SAAS;IACT,KAAK;
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/v1/runner/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,OAAO;IACP,YAAY;IACZ,SAAS;IACT,KAAK;IACL,SAAS;CACV,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAAsB,CAAC;AAEjE,MAAM,CAAC,MAAM,4BAA4B,GAAG,wCAAwC,0BAA0B,EAAE,CAAC;AAEjH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,EAAE,CAAC;KACP,KAAK,CACJ,iCAAiC,EACjC,mHAAmH,CACpH,CAAC;AAEJ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,GAAG,EAAE;KACL,QAAQ,CACP,skBAAskB,CACvkB,CAAC;AAEJ,2CAA2C;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CACnC,CAAC,CAAC,MAAM,CAAC;IACP,cAAc,EAAE,CAAC;SACd,OAAO,EAAE;SACT,QAAQ,CACP,+IAA+I,CAChJ;IACH,EAAE,EAAE,cAAc,CAAC,QAAQ,CACzB,iDAAiD,CAClD;IACD,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CACnC,gIAAgI,CACjI;IACD,GAAG,EAAE,oBAAoB;CAC1B,CAAC,CAAC"}
|
|
@@ -17,6 +17,7 @@ export declare const makeLaunchRunnerContract: <WorkspaceId extends PublicIdSche
|
|
|
17
17
|
playwright: "playwright";
|
|
18
18
|
android: "android";
|
|
19
19
|
ios: "ios";
|
|
20
|
+
windows: "windows";
|
|
20
21
|
}>>;
|
|
21
22
|
workspaceId: z.ZodOptional<WorkspaceId>;
|
|
22
23
|
}, z.core.$strip>;
|
|
@@ -30,6 +31,7 @@ export declare const makeLaunchRunnerContract: <WorkspaceId extends PublicIdSche
|
|
|
30
31
|
playwright: "playwright";
|
|
31
32
|
android: "android";
|
|
32
33
|
ios: "ios";
|
|
34
|
+
windows: "windows";
|
|
33
35
|
}>;
|
|
34
36
|
url: z.ZodURL;
|
|
35
37
|
alreadyRunning: z.ZodBoolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAWhD,eAAO,MAAM,wBAAwB,GACnC,WAAW,SAAS,cAAc,EAClC,KAAK;IACL,SAAS,EAAE,WAAW,CAAC;CACxB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAWhD,eAAO,MAAM,wBAAwB,GACnC,WAAW,SAAS,cAAc,EAClC,KAAK;IACL,SAAS,EAAE,WAAW,CAAC;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DA,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,WAAW,SAAS,cAAc,EAClC,KAAK;IACL,SAAS,EAAE,WAAW,CAAC;CACxB;;;;;;;;;;;;;;;;;;CAmCA,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { PublicIdSchema } from "../ids.js";
|
|
3
|
+
/** Duplicated from the private `domain-runner-types` package, which this published one can't import. */
|
|
4
|
+
export declare const selectorStrategySchema: z.ZodEnum<{
|
|
5
|
+
"ios-predicate": "ios-predicate";
|
|
6
|
+
shadow: "shadow";
|
|
7
|
+
xpath: "xpath";
|
|
8
|
+
}>;
|
|
3
9
|
export declare const inspectMobileRequestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
4
10
|
what: z.ZodLiteral<"session">;
|
|
5
11
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspectMobile.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/inspectMobile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"inspectMobile.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/inspectMobile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAuBhD,wGAAwG;AACxG,eAAO,MAAM,sBAAsB;;;;EAIjC,CAAC;AAsCH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA0BrC,CAAC;AA4CH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,iCAAiC,GAC5C,WAAW,SAAS,cAAc,EAClC,KAAK;IACL,SAAS,EAAE,WAAW,CAAC;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCA,CAAC"}
|