@qawolf/api-contracts 0.29.0 → 0.32.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/environment/find.d.ts +1 -1
- package/dist/v1/environment/index.d.ts +2 -2
- package/dist/v1/environment/resource.d.ts +1 -1
- package/dist/v1/environment/update.d.ts +1 -1
- package/dist/v1/index.d.ts +39 -27
- package/dist/v1/index.d.ts.map +1 -1
- package/dist/v1/index.js +4 -18
- package/dist/v1/index.js.map +1 -1
- package/dist/v1/run/index.d.ts +8 -0
- package/dist/v1/run/index.d.ts.map +1 -1
- package/dist/v1/run/index.js +16 -2
- package/dist/v1/run/index.js.map +1 -1
- package/dist/v1/runner/environment.js +1 -1
- package/dist/v1/runner/files.js +1 -1
- package/dist/v1/runner/inspect.d.ts +1 -0
- package/dist/v1/runner/inspect.d.ts.map +1 -1
- package/dist/v1/runner/inspect.js +6 -2
- package/dist/v1/runner/inspect.js.map +1 -1
- package/dist/v1/runner/inspectMobile.d.ts +226 -0
- package/dist/v1/runner/inspectMobile.d.ts.map +1 -0
- package/dist/v1/runner/inspectMobile.js +118 -0
- package/dist/v1/runner/inspectMobile.js.map +1 -0
- package/dist/v1/runner/inspectMobileShapes.d.ts +73 -0
- package/dist/v1/runner/inspectMobileShapes.d.ts.map +1 -0
- package/dist/v1/runner/inspectMobileShapes.js +59 -0
- package/dist/v1/runner/inspectMobileShapes.js.map +1 -0
- package/dist/v1/runner/performAction.d.ts +3 -2
- package/dist/v1/runner/performAction.d.ts.map +1 -1
- package/dist/v1/runner/performAction.js +3 -1
- package/dist/v1/runner/performAction.js.map +1 -1
- package/dist/v1/runner/takeScreenshot.d.ts +2 -2
- package/dist/v1/runner/takeScreenshot.js +1 -1
- package/dist/v1/runner/takeScreenshot.js.map +1 -1
- package/dist/v1/runnerReexports.d.ts +11 -0
- package/dist/v1/runnerReexports.d.ts.map +1 -0
- package/dist/v1/runnerReexports.js +23 -0
- package/dist/v1/runnerReexports.js.map +1 -0
- package/package.json +2 -2
|
@@ -38,9 +38,9 @@ export declare const makeFindEnvironmentsContract: <EnvironmentId extends Public
|
|
|
38
38
|
name: z.ZodString;
|
|
39
39
|
runConcurrencyLimit: z.ZodString;
|
|
40
40
|
status: z.ZodEnum<{
|
|
41
|
+
ready: "ready";
|
|
41
42
|
blocked: "blocked";
|
|
42
43
|
"needs-investigation": "needs-investigation";
|
|
43
|
-
ready: "ready";
|
|
44
44
|
running: "running";
|
|
45
45
|
}>;
|
|
46
46
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -26,9 +26,9 @@ export declare const makeGetEnvironmentContract: <EnvironmentId extends PublicId
|
|
|
26
26
|
name: z.ZodString;
|
|
27
27
|
runConcurrencyLimit: z.ZodString;
|
|
28
28
|
status: z.ZodEnum<{
|
|
29
|
+
ready: "ready";
|
|
29
30
|
blocked: "blocked";
|
|
30
31
|
"needs-investigation": "needs-investigation";
|
|
31
|
-
ready: "ready";
|
|
32
32
|
running: "running";
|
|
33
33
|
}>;
|
|
34
34
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -86,9 +86,9 @@ export declare const makeCreateEnvironmentContract: <EnvironmentId extends Publi
|
|
|
86
86
|
name: z.ZodString;
|
|
87
87
|
runConcurrencyLimit: z.ZodString;
|
|
88
88
|
status: z.ZodEnum<{
|
|
89
|
+
ready: "ready";
|
|
89
90
|
blocked: "blocked";
|
|
90
91
|
"needs-investigation": "needs-investigation";
|
|
91
|
-
ready: "ready";
|
|
92
92
|
running: "running";
|
|
93
93
|
}>;
|
|
94
94
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -21,9 +21,9 @@ export declare const makeEnvironmentResourceSchema: <EnvironmentId extends Publi
|
|
|
21
21
|
name: z.ZodString;
|
|
22
22
|
runConcurrencyLimit: z.ZodString;
|
|
23
23
|
status: z.ZodEnum<{
|
|
24
|
+
ready: "ready";
|
|
24
25
|
blocked: "blocked";
|
|
25
26
|
"needs-investigation": "needs-investigation";
|
|
26
|
-
ready: "ready";
|
|
27
27
|
running: "running";
|
|
28
28
|
}>;
|
|
29
29
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -28,9 +28,9 @@ export declare const makeUpdateEnvironmentContract: <EnvironmentId extends Publi
|
|
|
28
28
|
name: z.ZodString;
|
|
29
29
|
runConcurrencyLimit: z.ZodString;
|
|
30
30
|
status: z.ZodEnum<{
|
|
31
|
+
ready: "ready";
|
|
31
32
|
blocked: "blocked";
|
|
32
33
|
"needs-investigation": "needs-investigation";
|
|
33
|
-
ready: "ready";
|
|
34
34
|
running: "running";
|
|
35
35
|
}>;
|
|
36
36
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
package/dist/v1/index.d.ts
CHANGED
|
@@ -3,15 +3,7 @@ export type { AnyPublicApiContract, PublicApiContract, PublicApiContractKind, }
|
|
|
3
3
|
export { type IdentityResponse, identityResponse } from "./identity/index.js";
|
|
4
4
|
export { type PublicIdSchema, type PublicIdSchemas, defaultIdSchemas, } from "./ids.js";
|
|
5
5
|
export { makeFlowSelectionSchema } from "./run/index.js";
|
|
6
|
-
export
|
|
7
|
-
export { runEnvironmentSchema } from "./runner/environment.js";
|
|
8
|
-
export { isShippableRunFilePath, runFilePathSchema, runPackageJsonPath, shippableRunFileExtensions, } from "./runner/files.js";
|
|
9
|
-
export { type RunnerNameForPublicApi, makeRunnerSchema, runnerIdSchema, runnerNameSchema, } from "./runner/identity.js";
|
|
10
|
-
export { type InspectOnRunnerRequest, inspectRequestSchema, } from "./runner/inspect.js";
|
|
11
|
-
export { type JournalEntry, type JournalStream, type KnownJournalStream, type ReadJournalRequest, type ReadJournalResponse, journalEntrySchema, journalStreamSchema, knownJournalStreams, maxJournalStreamNameLength, readJournalRequestSchema, readJournalResponseSchema, } from "./runner/journal.js";
|
|
12
|
-
export { type RunFiles, maxRunFilesByteLength, maxRunnerRequestEncodedByteLength, runFilesByteLength, runFilesSchema, } from "./runner/payloadSize.js";
|
|
13
|
-
export { maxActionErrorMessageLength } from "./runner/performAction.js";
|
|
14
|
-
export { type RunSelection, runSelectionSchema, } from "./runner/runSelection.js";
|
|
6
|
+
export * from "./runnerReexports.js";
|
|
15
7
|
import type { AnyPublicApiContract } from "./definition.js";
|
|
16
8
|
import { type PublicIdSchema, type PublicIdSchemasOf } from "./ids.js";
|
|
17
9
|
export type PublicApiInput<Api extends AnyPublicApiContract> = z.input<Api["input"]>;
|
|
@@ -66,9 +58,9 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
66
58
|
name: z.ZodString;
|
|
67
59
|
runConcurrencyLimit: z.ZodString;
|
|
68
60
|
status: z.ZodEnum<{
|
|
61
|
+
ready: "ready";
|
|
69
62
|
blocked: "blocked";
|
|
70
63
|
"needs-investigation": "needs-investigation";
|
|
71
|
-
ready: "ready";
|
|
72
64
|
running: "running";
|
|
73
65
|
}>;
|
|
74
66
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -122,9 +114,9 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
122
114
|
name: z.ZodString;
|
|
123
115
|
runConcurrencyLimit: z.ZodString;
|
|
124
116
|
status: z.ZodEnum<{
|
|
117
|
+
ready: "ready";
|
|
125
118
|
blocked: "blocked";
|
|
126
119
|
"needs-investigation": "needs-investigation";
|
|
127
|
-
ready: "ready";
|
|
128
120
|
running: "running";
|
|
129
121
|
}>;
|
|
130
122
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -159,9 +151,9 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
159
151
|
name: z.ZodString;
|
|
160
152
|
runConcurrencyLimit: z.ZodString;
|
|
161
153
|
status: z.ZodEnum<{
|
|
154
|
+
ready: "ready";
|
|
162
155
|
blocked: "blocked";
|
|
163
156
|
"needs-investigation": "needs-investigation";
|
|
164
|
-
ready: "ready";
|
|
165
157
|
running: "running";
|
|
166
158
|
}>;
|
|
167
159
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -236,9 +228,9 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
236
228
|
name: z.ZodString;
|
|
237
229
|
runConcurrencyLimit: z.ZodString;
|
|
238
230
|
status: z.ZodEnum<{
|
|
231
|
+
ready: "ready";
|
|
239
232
|
blocked: "blocked";
|
|
240
233
|
"needs-investigation": "needs-investigation";
|
|
241
|
-
ready: "ready";
|
|
242
234
|
running: "running";
|
|
243
235
|
}>;
|
|
244
236
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -614,6 +606,14 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
614
606
|
readonly kind: "write";
|
|
615
607
|
readonly name: "run.create";
|
|
616
608
|
readonly output: z.ZodObject<{
|
|
609
|
+
excludedFlows: z.ZodArray<z.ZodObject<{
|
|
610
|
+
flowId: FlowId;
|
|
611
|
+
name: z.ZodString;
|
|
612
|
+
reason: z.ZodEnum<{
|
|
613
|
+
deleted: "deleted";
|
|
614
|
+
"not-on-branch": "not-on-branch";
|
|
615
|
+
}>;
|
|
616
|
+
}, z.core.$strip>>;
|
|
617
617
|
runId: RunId;
|
|
618
618
|
url: z.ZodURL;
|
|
619
619
|
}, z.core.$strip>;
|
|
@@ -843,6 +843,7 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
843
843
|
failureReason: z.ZodEnum<{
|
|
844
844
|
"runner-unreachable": "runner-unreachable";
|
|
845
845
|
"nothing-to-inspect": "nothing-to-inspect";
|
|
846
|
+
"runner-is-not-a-browser": "runner-is-not-a-browser";
|
|
846
847
|
}>;
|
|
847
848
|
outcome: z.ZodLiteral<"failure">;
|
|
848
849
|
}, z.core.$strip>], "outcome">;
|
|
@@ -874,7 +875,7 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
874
875
|
}, z.core.$strip>;
|
|
875
876
|
};
|
|
876
877
|
performAction: {
|
|
877
|
-
readonly description: "Perform one raw browser action on an interactive runner: click, double_click, move, drag, scroll, keypress, type, or navigate. Coordinates are whole pixels on the runner's virtual desktop, in the same space as `runner.takeScreenshot`. One action per request, and the runner serves one at a time. The action shapes follow the computer-use vocabulary, minus `screenshot` (use `runner.takeScreenshot`) and `wait` (delay on the caller's side). 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. `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. A `navigate` does not go through the screen, so a screen that is not ready does not stop it. `runner-has-no-screen` if this runner is not one that runs a browser on a virtual desktop. Nothing about it can be seen or driven, and retrying will never help — launch a `playwright` runner instead. `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.";
|
|
878
|
+
readonly description: "Perform one raw browser action on an interactive runner: click, double_click, move, drag, scroll, keypress, type, or navigate. Coordinates are whole pixels on the runner's virtual desktop, in the same space as `runner.takeScreenshot`. One action per request, and the runner serves one at a time. The action shapes follow the computer-use vocabulary, minus `screenshot` (use `runner.takeScreenshot`) and `wait` (delay on the caller's side). 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. A `navigate` does not go through the screen, so a screen that is not ready does not stop it. `runner-has-no-screen` if this runner is not one that runs a browser on a virtual desktop. Nothing about it can be seen or driven, and retrying will never help — launch a `playwright` runner instead. `action-not-supported-on-mobile` if the runner is a mobile device and this action has no touchscreen equivalent: `double_click`, `scroll`, `move`, `keypress` and `navigate`, and a `click` whose `button` is not `left`, are all pointer-device concepts a touchscreen has nothing to offer for. `click` taps, `drag` swipes between its path's first and last point, and `type` types into whatever the last tap focused. `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.";
|
|
878
879
|
readonly input: z.ZodObject<{
|
|
879
880
|
action: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
880
881
|
button: z.ZodLiteral<"left" | "right" | "wheel" | "back" | "forward">;
|
|
@@ -924,9 +925,10 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
924
925
|
}, z.core.$strip>, z.ZodObject<{
|
|
925
926
|
failureReason: z.ZodEnum<{
|
|
926
927
|
"runner-unreachable": "runner-unreachable";
|
|
927
|
-
"runner-has-no-screen": "runner-has-no-screen";
|
|
928
928
|
"screen-needs-a-run": "screen-needs-a-run";
|
|
929
929
|
"screen-not-ready": "screen-not-ready";
|
|
930
|
+
"runner-has-no-screen": "runner-has-no-screen";
|
|
931
|
+
"action-not-supported-on-mobile": "action-not-supported-on-mobile";
|
|
930
932
|
}>;
|
|
931
933
|
outcome: z.ZodLiteral<"failure">;
|
|
932
934
|
}, z.core.$strip>], "failureReason">], "outcome">;
|
|
@@ -947,7 +949,7 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
947
949
|
payload: z.ZodUnknown;
|
|
948
950
|
recordedAt: z.ZodISODateTime;
|
|
949
951
|
sequence: z.ZodNumber;
|
|
950
|
-
}, z.core.$strip>, z.ZodTransform<import("./
|
|
952
|
+
}, z.core.$strip>, z.ZodTransform<import("./runnerReexports.js").JournalEntry<unknown>, {
|
|
951
953
|
payload: unknown;
|
|
952
954
|
recordedAt: string;
|
|
953
955
|
sequence: number;
|
|
@@ -1025,7 +1027,7 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
1025
1027
|
}, z.core.$strip>], "outcome">;
|
|
1026
1028
|
};
|
|
1027
1029
|
takeScreenshot: {
|
|
1028
|
-
readonly description: "Take one screenshot of an interactive runner's screen.
|
|
1030
|
+
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. 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 is not one that runs a browser on a virtual desktop. Nothing about it can be seen or driven, and retrying will never help — launch a `playwright` runner instead. `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.";
|
|
1029
1031
|
readonly input: z.ZodObject<{
|
|
1030
1032
|
id: z.ZodString;
|
|
1031
1033
|
}, z.core.$strip>;
|
|
@@ -1037,9 +1039,9 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
|
|
|
1037
1039
|
}, z.core.$strip>, z.ZodObject<{
|
|
1038
1040
|
failureReason: z.ZodEnum<{
|
|
1039
1041
|
"runner-unreachable": "runner-unreachable";
|
|
1040
|
-
"runner-has-no-screen": "runner-has-no-screen";
|
|
1041
1042
|
"screen-needs-a-run": "screen-needs-a-run";
|
|
1042
1043
|
"screen-not-ready": "screen-not-ready";
|
|
1044
|
+
"runner-has-no-screen": "runner-has-no-screen";
|
|
1043
1045
|
}>;
|
|
1044
1046
|
outcome: z.ZodLiteral<"failure">;
|
|
1045
1047
|
}, z.core.$strip>], "outcome">;
|
|
@@ -1139,9 +1141,9 @@ export declare const publicContractsV1: {
|
|
|
1139
1141
|
name: z.ZodString;
|
|
1140
1142
|
runConcurrencyLimit: z.ZodString;
|
|
1141
1143
|
status: z.ZodEnum<{
|
|
1144
|
+
ready: "ready";
|
|
1142
1145
|
blocked: "blocked";
|
|
1143
1146
|
"needs-investigation": "needs-investigation";
|
|
1144
|
-
ready: "ready";
|
|
1145
1147
|
running: "running";
|
|
1146
1148
|
}>;
|
|
1147
1149
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -1195,9 +1197,9 @@ export declare const publicContractsV1: {
|
|
|
1195
1197
|
name: z.ZodString;
|
|
1196
1198
|
runConcurrencyLimit: z.ZodString;
|
|
1197
1199
|
status: z.ZodEnum<{
|
|
1200
|
+
ready: "ready";
|
|
1198
1201
|
blocked: "blocked";
|
|
1199
1202
|
"needs-investigation": "needs-investigation";
|
|
1200
|
-
ready: "ready";
|
|
1201
1203
|
running: "running";
|
|
1202
1204
|
}>;
|
|
1203
1205
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -1232,9 +1234,9 @@ export declare const publicContractsV1: {
|
|
|
1232
1234
|
name: z.ZodString;
|
|
1233
1235
|
runConcurrencyLimit: z.ZodString;
|
|
1234
1236
|
status: z.ZodEnum<{
|
|
1237
|
+
ready: "ready";
|
|
1235
1238
|
blocked: "blocked";
|
|
1236
1239
|
"needs-investigation": "needs-investigation";
|
|
1237
|
-
ready: "ready";
|
|
1238
1240
|
running: "running";
|
|
1239
1241
|
}>;
|
|
1240
1242
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -1309,9 +1311,9 @@ export declare const publicContractsV1: {
|
|
|
1309
1311
|
name: z.ZodString;
|
|
1310
1312
|
runConcurrencyLimit: z.ZodString;
|
|
1311
1313
|
status: z.ZodEnum<{
|
|
1314
|
+
ready: "ready";
|
|
1312
1315
|
blocked: "blocked";
|
|
1313
1316
|
"needs-investigation": "needs-investigation";
|
|
1314
|
-
ready: "ready";
|
|
1315
1317
|
running: "running";
|
|
1316
1318
|
}>;
|
|
1317
1319
|
terminatedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -1687,6 +1689,14 @@ export declare const publicContractsV1: {
|
|
|
1687
1689
|
readonly kind: "write";
|
|
1688
1690
|
readonly name: "run.create";
|
|
1689
1691
|
readonly output: z.ZodObject<{
|
|
1692
|
+
excludedFlows: z.ZodArray<z.ZodObject<{
|
|
1693
|
+
flowId: PublicIdSchema;
|
|
1694
|
+
name: z.ZodString;
|
|
1695
|
+
reason: z.ZodEnum<{
|
|
1696
|
+
deleted: "deleted";
|
|
1697
|
+
"not-on-branch": "not-on-branch";
|
|
1698
|
+
}>;
|
|
1699
|
+
}, z.core.$strip>>;
|
|
1690
1700
|
runId: PublicIdSchema;
|
|
1691
1701
|
url: z.ZodURL;
|
|
1692
1702
|
}, z.core.$strip>;
|
|
@@ -1916,6 +1926,7 @@ export declare const publicContractsV1: {
|
|
|
1916
1926
|
failureReason: z.ZodEnum<{
|
|
1917
1927
|
"runner-unreachable": "runner-unreachable";
|
|
1918
1928
|
"nothing-to-inspect": "nothing-to-inspect";
|
|
1929
|
+
"runner-is-not-a-browser": "runner-is-not-a-browser";
|
|
1919
1930
|
}>;
|
|
1920
1931
|
outcome: z.ZodLiteral<"failure">;
|
|
1921
1932
|
}, z.core.$strip>], "outcome">;
|
|
@@ -1947,7 +1958,7 @@ export declare const publicContractsV1: {
|
|
|
1947
1958
|
}, z.core.$strip>;
|
|
1948
1959
|
};
|
|
1949
1960
|
performAction: {
|
|
1950
|
-
readonly description: "Perform one raw browser action on an interactive runner: click, double_click, move, drag, scroll, keypress, type, or navigate. Coordinates are whole pixels on the runner's virtual desktop, in the same space as `runner.takeScreenshot`. One action per request, and the runner serves one at a time. The action shapes follow the computer-use vocabulary, minus `screenshot` (use `runner.takeScreenshot`) and `wait` (delay on the caller's side). 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. `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. A `navigate` does not go through the screen, so a screen that is not ready does not stop it. `runner-has-no-screen` if this runner is not one that runs a browser on a virtual desktop. Nothing about it can be seen or driven, and retrying will never help — launch a `playwright` runner instead. `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.";
|
|
1961
|
+
readonly description: "Perform one raw browser action on an interactive runner: click, double_click, move, drag, scroll, keypress, type, or navigate. Coordinates are whole pixels on the runner's virtual desktop, in the same space as `runner.takeScreenshot`. One action per request, and the runner serves one at a time. The action shapes follow the computer-use vocabulary, minus `screenshot` (use `runner.takeScreenshot`) and `wait` (delay on the caller's side). 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. A `navigate` does not go through the screen, so a screen that is not ready does not stop it. `runner-has-no-screen` if this runner is not one that runs a browser on a virtual desktop. Nothing about it can be seen or driven, and retrying will never help — launch a `playwright` runner instead. `action-not-supported-on-mobile` if the runner is a mobile device and this action has no touchscreen equivalent: `double_click`, `scroll`, `move`, `keypress` and `navigate`, and a `click` whose `button` is not `left`, are all pointer-device concepts a touchscreen has nothing to offer for. `click` taps, `drag` swipes between its path's first and last point, and `type` types into whatever the last tap focused. `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.";
|
|
1951
1962
|
readonly input: z.ZodObject<{
|
|
1952
1963
|
action: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
1953
1964
|
button: z.ZodLiteral<"left" | "right" | "wheel" | "back" | "forward">;
|
|
@@ -1997,9 +2008,10 @@ export declare const publicContractsV1: {
|
|
|
1997
2008
|
}, z.core.$strip>, z.ZodObject<{
|
|
1998
2009
|
failureReason: z.ZodEnum<{
|
|
1999
2010
|
"runner-unreachable": "runner-unreachable";
|
|
2000
|
-
"runner-has-no-screen": "runner-has-no-screen";
|
|
2001
2011
|
"screen-needs-a-run": "screen-needs-a-run";
|
|
2002
2012
|
"screen-not-ready": "screen-not-ready";
|
|
2013
|
+
"runner-has-no-screen": "runner-has-no-screen";
|
|
2014
|
+
"action-not-supported-on-mobile": "action-not-supported-on-mobile";
|
|
2003
2015
|
}>;
|
|
2004
2016
|
outcome: z.ZodLiteral<"failure">;
|
|
2005
2017
|
}, z.core.$strip>], "failureReason">], "outcome">;
|
|
@@ -2020,7 +2032,7 @@ export declare const publicContractsV1: {
|
|
|
2020
2032
|
payload: z.ZodUnknown;
|
|
2021
2033
|
recordedAt: z.ZodISODateTime;
|
|
2022
2034
|
sequence: z.ZodNumber;
|
|
2023
|
-
}, z.core.$strip>, z.ZodTransform<import("./
|
|
2035
|
+
}, z.core.$strip>, z.ZodTransform<import("./runnerReexports.js").JournalEntry<unknown>, {
|
|
2024
2036
|
payload: unknown;
|
|
2025
2037
|
recordedAt: string;
|
|
2026
2038
|
sequence: number;
|
|
@@ -2098,7 +2110,7 @@ export declare const publicContractsV1: {
|
|
|
2098
2110
|
}, z.core.$strip>], "outcome">;
|
|
2099
2111
|
};
|
|
2100
2112
|
takeScreenshot: {
|
|
2101
|
-
readonly description: "Take one screenshot of an interactive runner's screen.
|
|
2113
|
+
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. 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 is not one that runs a browser on a virtual desktop. Nothing about it can be seen or driven, and retrying will never help — launch a `playwright` runner instead. `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.";
|
|
2102
2114
|
readonly input: z.ZodObject<{
|
|
2103
2115
|
id: z.ZodString;
|
|
2104
2116
|
}, z.core.$strip>;
|
|
@@ -2110,9 +2122,9 @@ export declare const publicContractsV1: {
|
|
|
2110
2122
|
}, z.core.$strip>, z.ZodObject<{
|
|
2111
2123
|
failureReason: z.ZodEnum<{
|
|
2112
2124
|
"runner-unreachable": "runner-unreachable";
|
|
2113
|
-
"runner-has-no-screen": "runner-has-no-screen";
|
|
2114
2125
|
"screen-needs-a-run": "screen-needs-a-run";
|
|
2115
2126
|
"screen-not-ready": "screen-not-ready";
|
|
2127
|
+
"runner-has-no-screen": "runner-has-no-screen";
|
|
2116
2128
|
}>;
|
|
2117
2129
|
outcome: z.ZodLiteral<"failure">;
|
|
2118
2130
|
}, z.core.$strip>], "outcome">;
|
package/dist/v1/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,cAAc,sBAAsB,CAAC;AAGrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAc5D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEvB,MAAM,UAAU,CAAC;AAwBlB,MAAM,MAAM,cAAc,CAAC,GAAG,SAAS,oBAAoB,IAAI,CAAC,CAAC,KAAK,CACpE,GAAG,CAAC,OAAO,CAAC,CACb,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,GAAG,SAAS,oBAAoB,IAAI,CAAC,CAAC,KAAK,CACrE,GAAG,CAAC,QAAQ,CAAC,CACd,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,aAAa,SAAS,cAAc,EACpC,MAAM,SAAS,cAAc,EAC7B,KAAK,SAAS,cAAc,EAC5B,YAAY,SAAS,cAAc,GAAG,cAAc,EACpD,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,WAAW,SAAS,cAAc,GAAG,cAAc,EACnD,QAAQ,SAAS,cAAc,GAAG,cAAc,EAEhD,KAAK,iBAAiB,CACpB,aAAa,EACb,MAAM,EACN,KAAK,EACL,YAAY,EACZ,OAAO,EACP,WAAW,EACX,QAAQ,CACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDF,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAoC,CAAC"}
|
package/dist/v1/index.js
CHANGED
|
@@ -1,24 +1,7 @@
|
|
|
1
1
|
export { identityResponse } from "./identity/index.js";
|
|
2
2
|
export { defaultIdSchemas, } from "./ids.js";
|
|
3
3
|
export { makeFlowSelectionSchema } from "./run/index.js";
|
|
4
|
-
export
|
|
5
|
-
// Carries the reservation of QA Wolf's own variable names, which the server
|
|
6
|
-
// validates with rather than restating — a second copy of that rule is how the
|
|
7
|
-
// reservation comes to differ from what is actually stamped.
|
|
8
|
-
export { runEnvironmentSchema } from "./runner/environment.js";
|
|
9
|
-
// The travel rule for files bound for a runner: which files travel, how much may
|
|
10
|
-
// travel, and what environment a run may carry. A client needs the predicate and
|
|
11
|
-
// the size bounds to collect and pre-check with; the schemas are also what the
|
|
12
|
-
// server and the runner validate with, so they are shared rather than restated.
|
|
13
|
-
export { isShippableRunFilePath, runFilePathSchema, runPackageJsonPath, shippableRunFileExtensions, } from "./runner/files.js";
|
|
14
|
-
export { makeRunnerSchema, runnerIdSchema, runnerNameSchema, } from "./runner/identity.js";
|
|
15
|
-
export { inspectRequestSchema, } from "./runner/inspect.js";
|
|
16
|
-
// A journal read is answered verbatim by the public API, so its wire shapes are
|
|
17
|
-
// published here and the private journal package imports them from here.
|
|
18
|
-
export { journalEntrySchema, journalStreamSchema, knownJournalStreams, maxJournalStreamNameLength, readJournalRequestSchema, readJournalResponseSchema, } from "./runner/journal.js";
|
|
19
|
-
export { maxRunFilesByteLength, maxRunnerRequestEncodedByteLength, runFilesByteLength, runFilesSchema, } from "./runner/payloadSize.js";
|
|
20
|
-
export { maxActionErrorMessageLength } from "./runner/performAction.js";
|
|
21
|
-
export { runSelectionSchema, } from "./runner/runSelection.js";
|
|
4
|
+
export * from "./runnerReexports.js";
|
|
22
5
|
import { makeAutomateContract } from "./automate/index.js";
|
|
23
6
|
import { makeDeleteEnvironmentVariableContract } from "./environment/deleteVariable.js";
|
|
24
7
|
import { makeFindEnvironmentsContract } from "./environment/find.js";
|
|
@@ -93,6 +76,9 @@ export const makeContractsV1 = (ids) => {
|
|
|
93
76
|
evaluateSnippet: makeEvaluateSnippetOnRunnerContract(),
|
|
94
77
|
importPackage: makeImportPackageOnRunnerContract(),
|
|
95
78
|
inspect: makeInspectOnRunnerContract(),
|
|
79
|
+
// `runner.inspectMobile` (./runner/inspectMobile.js) stays out of this
|
|
80
|
+
// catalog until ARC-556 adds its router endpoint, to avoid tripping
|
|
81
|
+
// apex-backend's contract/router drift check.
|
|
96
82
|
launch: makeLaunchRunnerContract(),
|
|
97
83
|
performAction: makePerformActionOnRunnerContract(),
|
|
98
84
|
readJournal: makeReadRunnerJournalContract(),
|
package/dist/v1/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAyB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAGL,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"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"}
|
package/dist/v1/run/index.d.ts
CHANGED
|
@@ -23,6 +23,14 @@ export declare const makeCreateRunContract: <AiTaskId extends PublicIdSchema, Fl
|
|
|
23
23
|
readonly kind: "write";
|
|
24
24
|
readonly name: "run.create";
|
|
25
25
|
readonly output: z.ZodObject<{
|
|
26
|
+
excludedFlows: z.ZodArray<z.ZodObject<{
|
|
27
|
+
flowId: FlowId;
|
|
28
|
+
name: z.ZodString;
|
|
29
|
+
reason: z.ZodEnum<{
|
|
30
|
+
deleted: "deleted";
|
|
31
|
+
"not-on-branch": "not-on-branch";
|
|
32
|
+
}>;
|
|
33
|
+
}, z.core.$strip>>;
|
|
26
34
|
runId: RunId;
|
|
27
35
|
url: z.ZodURL;
|
|
28
36
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v1/run/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,eAAO,MAAM,qBAAqB,GAChC,QAAQ,SAAS,cAAc,EAC/B,MAAM,SAAS,cAAc,EAC7B,KAAK,SAAS,cAAc,EAC5B,KAAK;IACL,MAAM,EAAE,QAAQ,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,KAAK,CAAC;CACZ
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v1/run/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,eAAO,MAAM,qBAAqB,GAChC,QAAQ,SAAS,cAAc,EAC/B,MAAM,SAAS,cAAc,EAC7B,KAAK,SAAS,cAAc,EAC5B,KAAK;IACL,MAAM,EAAE,QAAQ,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,KAAK,CAAC;CACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEA,CAAC"}
|
package/dist/v1/run/index.js
CHANGED
|
@@ -10,7 +10,10 @@ export const makeCreateRunContract = (ids) => {
|
|
|
10
10
|
.optional(),
|
|
11
11
|
environmentId: ids.environmentRef,
|
|
12
12
|
environmentVariables: z.record(z.string(), z.string()).optional(),
|
|
13
|
-
ignoreRules: z
|
|
13
|
+
ignoreRules: z
|
|
14
|
+
.boolean()
|
|
15
|
+
.describe("Ignore this team's sequencing rules for this run. By default they are honoured: the flows your selection depends on are added to the run, and flows run in the order the rules require. Set this to run exactly what you selected, in any order.")
|
|
16
|
+
.default(false),
|
|
14
17
|
// Associate a pull request with the run by its number within a
|
|
15
18
|
// repository. A number requires a repository; a repository may be given
|
|
16
19
|
// on its own. The server resolves the internal pull request id,
|
|
@@ -28,7 +31,18 @@ export const makeCreateRunContract = (ids) => {
|
|
|
28
31
|
.optional(),
|
|
29
32
|
})
|
|
30
33
|
.and(makeFlowSelectionSchema(ids));
|
|
31
|
-
const output = resource({
|
|
34
|
+
const output = resource({
|
|
35
|
+
excludedFlows: z
|
|
36
|
+
.array(z.object({
|
|
37
|
+
flowId: ids.flow,
|
|
38
|
+
name: z.string().describe("The name of the flow."),
|
|
39
|
+
reason: z
|
|
40
|
+
.enum(["deleted", "not-on-branch"])
|
|
41
|
+
.describe('Why the flow cannot run: "deleted" means the flow was deleted, "not-on-branch" means the flow has no file at the commit the run was created from.'),
|
|
42
|
+
}))
|
|
43
|
+
.describe("Explicitly requested flows that were left out of the run, each with the reason. Flows selected through tags are not reported here."),
|
|
44
|
+
runId: ids.run,
|
|
45
|
+
}, { urlFieldDescription: "Absolute URL of the run page." });
|
|
32
46
|
return {
|
|
33
47
|
description: "Create a run for the selected flows and/or tags in an environment.",
|
|
34
48
|
input,
|
package/dist/v1/run/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v1/run/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAInC,GAKD,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,CAAC;SACZ,MAAM,CAAC;QACN,QAAQ,EAAE,GAAG,CAAC,MAAM;aACjB,QAAQ,CACP,mEAAmE,CACpE;aACA,QAAQ,EAAE;QACb,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACjE,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v1/run/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAInC,GAKD,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,CAAC;SACZ,MAAM,CAAC;QACN,QAAQ,EAAE,GAAG,CAAC,MAAM;aACjB,QAAQ,CACP,mEAAmE,CACpE;aACA,QAAQ,EAAE;QACb,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACjE,WAAW,EAAE,CAAC;aACX,OAAO,EAAE;aACT,QAAQ,CACP,kPAAkP,CACnP;aACA,OAAO,CAAC,KAAK,CAAC;QACjB,+DAA+D;QAC/D,wEAAwE;QACxE,gEAAgE;QAChE,+BAA+B;QAC/B,iBAAiB,EAAE,CAAC;aACjB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;aACrE,QAAQ,EAAE;QACb,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,oDAAoD,CAAC;aAC9D,QAAQ,EAAE;KACd,CAAC;SACD,GAAG,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,QAAQ,CACrB;QACE,aAAa,EAAE,CAAC;aACb,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,MAAM,EAAE,GAAG,CAAC,IAAI;YAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAClD,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;iBAClC,QAAQ,CACP,mJAAmJ,CACpJ;SACJ,CAAC,CACH;aACA,QAAQ,CACP,oIAAoI,CACrI;QACH,KAAK,EAAE,GAAG,CAAC,GAAG;KACf,EACD,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,CACzD,CAAC;IAEF,OAAO;QACL,WAAW,EACT,oEAAoE;QACtE,KAAK;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,YAAY;QAClB,MAAM;KAMP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -26,7 +26,7 @@ function refusalForRunEnvironmentVariableName(name) {
|
|
|
26
26
|
return `${reservedRunEnvironmentVariableName} is reserved by QA Wolf and set for you.`;
|
|
27
27
|
return undefined;
|
|
28
28
|
}
|
|
29
|
-
const maxRunEnvironmentVariables =
|
|
29
|
+
const maxRunEnvironmentVariables = 200;
|
|
30
30
|
const maxRunEnvironmentValueLength = 8 * 1024;
|
|
31
31
|
/** Bounded on its own, so a large project is never refused for its environment. */
|
|
32
32
|
export const runEnvironmentSchema = z
|
package/dist/v1/runner/files.js
CHANGED
|
@@ -33,7 +33,7 @@ function isShippableRunFilePathSegment(segment) {
|
|
|
33
33
|
return false;
|
|
34
34
|
if (segment.includes("\\"))
|
|
35
35
|
return false;
|
|
36
|
-
//
|
|
36
|
+
// oxlint-disable-next-line no-control-regex -- refusing control characters is the point
|
|
37
37
|
return !/[\u0000-\u001f\u007f]/.test(segment);
|
|
38
38
|
}
|
|
39
39
|
/** The runner installs dependencies itself, so `node_modules` never ships. */
|
|
@@ -35,6 +35,7 @@ export declare const makeInspectOnRunnerContract: () => {
|
|
|
35
35
|
failureReason: z.ZodEnum<{
|
|
36
36
|
"runner-unreachable": "runner-unreachable";
|
|
37
37
|
"nothing-to-inspect": "nothing-to-inspect";
|
|
38
|
+
"runner-is-not-a-browser": "runner-is-not-a-browser";
|
|
38
39
|
}>;
|
|
39
40
|
outcome: z.ZodLiteral<"failure">;
|
|
40
41
|
}, z.core.$strip>], "outcome">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,oBAAoB;;;;;;;;;2BA0B/B,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE1E,eAAO,MAAM,2BAA2B
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,oBAAoB;;;;;;;;;2BA0B/B,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE1E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCvC,CAAC"}
|
|
@@ -45,12 +45,16 @@ export const makeInspectOnRunnerContract = () => {
|
|
|
45
45
|
.string()
|
|
46
46
|
.optional()
|
|
47
47
|
.describe("What the runner said, when it said anything."),
|
|
48
|
-
failureReason: z.enum([
|
|
48
|
+
failureReason: z.enum([
|
|
49
|
+
"nothing-to-inspect",
|
|
50
|
+
"runner-is-not-a-browser",
|
|
51
|
+
"runner-unreachable",
|
|
52
|
+
]),
|
|
49
53
|
outcome: z.literal("failure"),
|
|
50
54
|
}),
|
|
51
55
|
]);
|
|
52
56
|
return {
|
|
53
|
-
description: "Inspect one thing on an interactive runner: an element's HTML, the page's HTML simplified for a model, or a top-level variable's value as JSON. `nothing-to-inspect` means the runner had nothing to answer with: no live page, no element matching the selector, or no variable under that name. A runner cannot tell those apart, so it reports the one reason and puts whatever it did say in `errorMessage`. " +
|
|
57
|
+
description: "Inspect one thing on an interactive runner: an element's HTML, the page's HTML simplified for a model, or a top-level variable's value as JSON. `nothing-to-inspect` means the runner had nothing to answer with: no live page, no element matching the selector, or no variable under that name. A runner cannot tell those apart, so it reports the one reason and puts whatever it did say in `errorMessage`. `runner-is-not-a-browser` on a mobile runner — call `runner.inspectMobile` for its equivalent surface instead. " +
|
|
54
58
|
retryableRunnerUnreachableDescription,
|
|
55
59
|
input,
|
|
56
60
|
kind: "read",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/v1/runner/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,qCAAqC,EAAE,MAAM,kBAAkB,CAAC;AAEzE,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,iBAAiB,CAAC;aACtB,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;KAChC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,iBAAiB,CAAC;aACtB,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;QACzE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;KAC7B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,qBAAqB,CAAC;aAC1B,QAAQ,CAAC,uDAAuD,CAAC;QACpE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;KAC5B,CAAC;CACH,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,EAAE;IAC9C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;QACrB,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC3D,OAAO,EAAE,oBAAoB;KAC9B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;QAC7C,CAAC,CAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;YAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SACzE,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/v1/runner/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,qCAAqC,EAAE,MAAM,kBAAkB,CAAC;AAEzE,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC/D,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,iBAAiB,CAAC;aACtB,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;KAChC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,iBAAiB,CAAC;aACtB,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;QACzE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;KAC7B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,qBAAqB,CAAC;aAC1B,QAAQ,CAAC,uDAAuD,CAAC;QACpE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;KAC5B,CAAC;CACH,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,EAAE;IAC9C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;QACrB,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC3D,OAAO,EAAE,oBAAoB;KAC9B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;QAC7C,CAAC,CAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;YAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SACzE,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC;gBACpB,oBAAoB;gBACpB,yBAAyB;gBACzB,oBAAoB;aACrB,CAAC;YACF,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;SAC9B,CAAC;KACH,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EACT,kgBAAkgB;YAClgB,qCAAqC;QACvC,KAAK;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,gBAAgB;QACtB,MAAM;KAMP,CAAC;AACJ,CAAC,CAAC"}
|