@qawolf/api-contracts 0.30.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.
Files changed (37) hide show
  1. package/dist/v1/environment/find.d.ts +1 -1
  2. package/dist/v1/environment/index.d.ts +2 -2
  3. package/dist/v1/environment/resource.d.ts +1 -1
  4. package/dist/v1/environment/update.d.ts +1 -1
  5. package/dist/v1/index.d.ts +23 -27
  6. package/dist/v1/index.d.ts.map +1 -1
  7. package/dist/v1/index.js +4 -18
  8. package/dist/v1/index.js.map +1 -1
  9. package/dist/v1/run/index.d.ts.map +1 -1
  10. package/dist/v1/run/index.js +4 -1
  11. package/dist/v1/run/index.js.map +1 -1
  12. package/dist/v1/runner/environment.js +1 -1
  13. package/dist/v1/runner/files.js +1 -1
  14. package/dist/v1/runner/inspect.d.ts +1 -0
  15. package/dist/v1/runner/inspect.d.ts.map +1 -1
  16. package/dist/v1/runner/inspect.js +6 -2
  17. package/dist/v1/runner/inspect.js.map +1 -1
  18. package/dist/v1/runner/inspectMobile.d.ts +226 -0
  19. package/dist/v1/runner/inspectMobile.d.ts.map +1 -0
  20. package/dist/v1/runner/inspectMobile.js +118 -0
  21. package/dist/v1/runner/inspectMobile.js.map +1 -0
  22. package/dist/v1/runner/inspectMobileShapes.d.ts +73 -0
  23. package/dist/v1/runner/inspectMobileShapes.d.ts.map +1 -0
  24. package/dist/v1/runner/inspectMobileShapes.js +59 -0
  25. package/dist/v1/runner/inspectMobileShapes.js.map +1 -0
  26. package/dist/v1/runner/performAction.d.ts +3 -2
  27. package/dist/v1/runner/performAction.d.ts.map +1 -1
  28. package/dist/v1/runner/performAction.js +3 -1
  29. package/dist/v1/runner/performAction.js.map +1 -1
  30. package/dist/v1/runner/takeScreenshot.d.ts +2 -2
  31. package/dist/v1/runner/takeScreenshot.js +1 -1
  32. package/dist/v1/runner/takeScreenshot.js.map +1 -1
  33. package/dist/v1/runnerReexports.d.ts +11 -0
  34. package/dist/v1/runnerReexports.d.ts.map +1 -0
  35. package/dist/v1/runnerReexports.js +23 -0
  36. package/dist/v1/runnerReexports.js.map +1 -0
  37. package/package.json +1 -1
@@ -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>;
@@ -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 { type BrowserAction, browserActionSchema, } from "./runner/browserAction.js";
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>;
@@ -851,6 +843,7 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
851
843
  failureReason: z.ZodEnum<{
852
844
  "runner-unreachable": "runner-unreachable";
853
845
  "nothing-to-inspect": "nothing-to-inspect";
846
+ "runner-is-not-a-browser": "runner-is-not-a-browser";
854
847
  }>;
855
848
  outcome: z.ZodLiteral<"failure">;
856
849
  }, z.core.$strip>], "outcome">;
@@ -882,7 +875,7 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
882
875
  }, z.core.$strip>;
883
876
  };
884
877
  performAction: {
885
- 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.";
886
879
  readonly input: z.ZodObject<{
887
880
  action: z.ZodDiscriminatedUnion<[z.ZodObject<{
888
881
  button: z.ZodLiteral<"left" | "right" | "wheel" | "back" | "forward">;
@@ -932,9 +925,10 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
932
925
  }, z.core.$strip>, z.ZodObject<{
933
926
  failureReason: z.ZodEnum<{
934
927
  "runner-unreachable": "runner-unreachable";
935
- "runner-has-no-screen": "runner-has-no-screen";
936
928
  "screen-needs-a-run": "screen-needs-a-run";
937
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";
938
932
  }>;
939
933
  outcome: z.ZodLiteral<"failure">;
940
934
  }, z.core.$strip>], "failureReason">], "outcome">;
@@ -955,7 +949,7 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
955
949
  payload: z.ZodUnknown;
956
950
  recordedAt: z.ZodISODateTime;
957
951
  sequence: z.ZodNumber;
958
- }, z.core.$strip>, z.ZodTransform<import("./runner/journal.js").JournalEntry<unknown>, {
952
+ }, z.core.$strip>, z.ZodTransform<import("./runnerReexports.js").JournalEntry<unknown>, {
959
953
  payload: unknown;
960
954
  recordedAt: string;
961
955
  sequence: number;
@@ -1033,7 +1027,7 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
1033
1027
  }, z.core.$strip>], "outcome">;
1034
1028
  };
1035
1029
  takeScreenshot: {
1036
- readonly description: "Take one screenshot of an interactive runner's screen. The image is the runner's whole virtual desktop, browser window and all. `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.";
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.";
1037
1031
  readonly input: z.ZodObject<{
1038
1032
  id: z.ZodString;
1039
1033
  }, z.core.$strip>;
@@ -1045,9 +1039,9 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
1045
1039
  }, z.core.$strip>, z.ZodObject<{
1046
1040
  failureReason: z.ZodEnum<{
1047
1041
  "runner-unreachable": "runner-unreachable";
1048
- "runner-has-no-screen": "runner-has-no-screen";
1049
1042
  "screen-needs-a-run": "screen-needs-a-run";
1050
1043
  "screen-not-ready": "screen-not-ready";
1044
+ "runner-has-no-screen": "runner-has-no-screen";
1051
1045
  }>;
1052
1046
  outcome: z.ZodLiteral<"failure">;
1053
1047
  }, z.core.$strip>], "outcome">;
@@ -1147,9 +1141,9 @@ export declare const publicContractsV1: {
1147
1141
  name: z.ZodString;
1148
1142
  runConcurrencyLimit: z.ZodString;
1149
1143
  status: z.ZodEnum<{
1144
+ ready: "ready";
1150
1145
  blocked: "blocked";
1151
1146
  "needs-investigation": "needs-investigation";
1152
- ready: "ready";
1153
1147
  running: "running";
1154
1148
  }>;
1155
1149
  terminatedAt: z.ZodOptional<z.ZodISODateTime>;
@@ -1203,9 +1197,9 @@ export declare const publicContractsV1: {
1203
1197
  name: z.ZodString;
1204
1198
  runConcurrencyLimit: z.ZodString;
1205
1199
  status: z.ZodEnum<{
1200
+ ready: "ready";
1206
1201
  blocked: "blocked";
1207
1202
  "needs-investigation": "needs-investigation";
1208
- ready: "ready";
1209
1203
  running: "running";
1210
1204
  }>;
1211
1205
  terminatedAt: z.ZodOptional<z.ZodISODateTime>;
@@ -1240,9 +1234,9 @@ export declare const publicContractsV1: {
1240
1234
  name: z.ZodString;
1241
1235
  runConcurrencyLimit: z.ZodString;
1242
1236
  status: z.ZodEnum<{
1237
+ ready: "ready";
1243
1238
  blocked: "blocked";
1244
1239
  "needs-investigation": "needs-investigation";
1245
- ready: "ready";
1246
1240
  running: "running";
1247
1241
  }>;
1248
1242
  terminatedAt: z.ZodOptional<z.ZodISODateTime>;
@@ -1317,9 +1311,9 @@ export declare const publicContractsV1: {
1317
1311
  name: z.ZodString;
1318
1312
  runConcurrencyLimit: z.ZodString;
1319
1313
  status: z.ZodEnum<{
1314
+ ready: "ready";
1320
1315
  blocked: "blocked";
1321
1316
  "needs-investigation": "needs-investigation";
1322
- ready: "ready";
1323
1317
  running: "running";
1324
1318
  }>;
1325
1319
  terminatedAt: z.ZodOptional<z.ZodISODateTime>;
@@ -1932,6 +1926,7 @@ export declare const publicContractsV1: {
1932
1926
  failureReason: z.ZodEnum<{
1933
1927
  "runner-unreachable": "runner-unreachable";
1934
1928
  "nothing-to-inspect": "nothing-to-inspect";
1929
+ "runner-is-not-a-browser": "runner-is-not-a-browser";
1935
1930
  }>;
1936
1931
  outcome: z.ZodLiteral<"failure">;
1937
1932
  }, z.core.$strip>], "outcome">;
@@ -1963,7 +1958,7 @@ export declare const publicContractsV1: {
1963
1958
  }, z.core.$strip>;
1964
1959
  };
1965
1960
  performAction: {
1966
- 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.";
1967
1962
  readonly input: z.ZodObject<{
1968
1963
  action: z.ZodDiscriminatedUnion<[z.ZodObject<{
1969
1964
  button: z.ZodLiteral<"left" | "right" | "wheel" | "back" | "forward">;
@@ -2013,9 +2008,10 @@ export declare const publicContractsV1: {
2013
2008
  }, z.core.$strip>, z.ZodObject<{
2014
2009
  failureReason: z.ZodEnum<{
2015
2010
  "runner-unreachable": "runner-unreachable";
2016
- "runner-has-no-screen": "runner-has-no-screen";
2017
2011
  "screen-needs-a-run": "screen-needs-a-run";
2018
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";
2019
2015
  }>;
2020
2016
  outcome: z.ZodLiteral<"failure">;
2021
2017
  }, z.core.$strip>], "failureReason">], "outcome">;
@@ -2036,7 +2032,7 @@ export declare const publicContractsV1: {
2036
2032
  payload: z.ZodUnknown;
2037
2033
  recordedAt: z.ZodISODateTime;
2038
2034
  sequence: z.ZodNumber;
2039
- }, z.core.$strip>, z.ZodTransform<import("./runner/journal.js").JournalEntry<unknown>, {
2035
+ }, z.core.$strip>, z.ZodTransform<import("./runnerReexports.js").JournalEntry<unknown>, {
2040
2036
  payload: unknown;
2041
2037
  recordedAt: string;
2042
2038
  sequence: number;
@@ -2114,7 +2110,7 @@ export declare const publicContractsV1: {
2114
2110
  }, z.core.$strip>], "outcome">;
2115
2111
  };
2116
2112
  takeScreenshot: {
2117
- readonly description: "Take one screenshot of an interactive runner's screen. The image is the runner's whole virtual desktop, browser window and all. `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.";
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.";
2118
2114
  readonly input: z.ZodObject<{
2119
2115
  id: z.ZodString;
2120
2116
  }, z.core.$strip>;
@@ -2126,9 +2122,9 @@ export declare const publicContractsV1: {
2126
2122
  }, z.core.$strip>, z.ZodObject<{
2127
2123
  failureReason: z.ZodEnum<{
2128
2124
  "runner-unreachable": "runner-unreachable";
2129
- "runner-has-no-screen": "runner-has-no-screen";
2130
2125
  "screen-needs-a-run": "screen-needs-a-run";
2131
2126
  "screen-not-ready": "screen-not-ready";
2127
+ "runner-has-no-screen": "runner-has-no-screen";
2132
2128
  }>;
2133
2129
  outcome: z.ZodLiteral<"failure">;
2134
2130
  }, z.core.$strip>], "outcome">;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDF,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAoC,CAAC"}
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 { browserActionSchema, } from "./runner/browserAction.js";
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(),
@@ -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,OAAO,EAEL,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,4EAA4E;AAC5E,+EAA+E;AAC/E,6DAA6D;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,gFAAgF;AAChF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,gFAAgF;AAChF,yEAAyE;AACzE,OAAO,EAML,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,qBAAqB,EACrB,iCAAiC,EACjC,kBAAkB,EAClB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAEL,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,qCAAqC,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kCAAkC,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,wCAAwC,EACxC,kCAAkC,GACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAGL,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mCAAmC,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,kCAAkC,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAUrD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAS7B,GAQC,EACD,EAAE;IACF,MAAM,WAAW,GAAG,EAAE,GAAG,gBAAgB,EAAE,GAAG,GAAG,EAAE,CAAC;IACpD,OAAO;QACL,qEAAqE;QACrE,0CAA0C;QAC1C,QAAQ,EAAE,oBAAoB,CAAC,WAAW,CAAC;QAC3C,WAAW,EAAE;YACX,MAAM,EAAE,6BAA6B,CAAC,WAAW,CAAC;YAClD,cAAc,EAAE,qCAAqC,CAAC,WAAW,CAAC;YAClE,IAAI,EAAE,4BAA4B,CAAC,WAAW,CAAC;YAC/C,GAAG,EAAE,0BAA0B,CAAC,WAAW,CAAC;YAC5C,WAAW,EAAE,kCAAkC,CAAC,WAAW,CAAC;YAC5D,iBAAiB,EAAE,wCAAwC,CAAC,WAAW,CAAC;YACxE,WAAW,EAAE,kCAAkC,CAAC,WAAW,CAAC;YAC5D,MAAM,EAAE,6BAA6B,CAAC,WAAW,CAAC;SACnD;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,yBAAyB,CAAC,WAAW,CAAC;YAC9C,IAAI,EAAE,qBAAqB,CAAC,WAAW,CAAC;YACxC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC;SAC5C;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,2BAA2B,CAAC,WAAW,CAAC;YAClD,MAAM,EAAE,uBAAuB,CAAC,WAAW,CAAC;YAC5C,IAAI,EAAE,sBAAsB,CAAC,WAAW,CAAC;YACzC,GAAG,EAAE,oBAAoB,CAAC,WAAW,CAAC;YACtC,MAAM,EAAE,uBAAuB,CAAC,WAAW,CAAC;SAC7C;QACD,GAAG,EAAE;YACH,MAAM,EAAE,qBAAqB,CAAC,WAAW,CAAC;YAC1C,IAAI,EAAE,oBAAoB,CAAC,WAAW,CAAC;YACvC,GAAG,EAAE,kBAAkB,CAAC,WAAW,CAAC;YACpC,SAAS,EAAE,wBAAwB,CAAC,WAAW,CAAC;SACjD;QACD,MAAM,EAAE;YACN,eAAe,EAAE,mCAAmC,EAAE;YACtD,aAAa,EAAE,iCAAiC,EAAE;YAClD,OAAO,EAAE,2BAA2B,EAAE;YACtC,MAAM,EAAE,wBAAwB,EAAE;YAClC,aAAa,EAAE,iCAAiC,EAAE;YAClD,WAAW,EAAE,6BAA6B,EAAE;YAC5C,OAAO,EAAE,2BAA2B,EAAE;YACtC,OAAO,EAAE,2BAA2B,EAAE;YACtC,cAAc,EAAE,kCAAkC,EAAE;YACpD,SAAS,EAAE,2BAA2B,EAAE;SACzC;QACD,GAAG,EAAE;YACH,MAAM,EAAE,qBAAqB,CAAC,WAAW,CAAC;YAC1C,IAAI,EAAE,oBAAoB,CAAC,WAAW,CAAC;SACxC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"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"}
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DA,CAAC"}
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"}
@@ -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.boolean().default(false),
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,
@@ -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,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,+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"}
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 = 100;
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
@@ -33,7 +33,7 @@ function isShippableRunFilePathSegment(segment) {
33
33
  return false;
34
34
  if (segment.includes("\\"))
35
35
  return false;
36
- // eslint-disable-next-line no-control-regex -- refusing control characters is the point
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCvC,CAAC"}
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(["nothing-to-inspect", "runner-unreachable"]),
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,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;YACnE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;SAC9B,CAAC;KACH,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EACT,mZAAmZ;YACnZ,qCAAqC;QACvC,KAAK;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,gBAAgB;QACtB,MAAM;KAMP,CAAC;AACJ,CAAC,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"}
@@ -0,0 +1,226 @@
1
+ import { z } from "zod";
2
+ export declare const inspectMobileRequestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ what: z.ZodLiteral<"session">;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ what: z.ZodLiteral<"contexts">;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ context: z.ZodOptional<z.ZodString>;
8
+ what: z.ZodLiteral<"page">;
9
+ }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
10
+ by: z.ZodLiteral<"point">;
11
+ context: z.ZodOptional<z.ZodString>;
12
+ what: z.ZodLiteral<"elements">;
13
+ x: z.ZodInt;
14
+ y: z.ZodInt;
15
+ }, z.core.$strip>, z.ZodObject<{
16
+ by: z.ZodLiteral<"text">;
17
+ context: z.ZodOptional<z.ZodString>;
18
+ partial: z.ZodOptional<z.ZodBoolean>;
19
+ text: z.ZodString;
20
+ what: z.ZodLiteral<"elements">;
21
+ }, z.core.$strip>], "by">], "what">;
22
+ export type InspectMobileRequest = z.infer<typeof inspectMobileRequestSchema>;
23
+ export declare const makeInspectMobileOnRunnerContract: () => {
24
+ readonly description: "Inspect one thing on a mobile interactive runner: the Appium session's status, the WebView contexts available, the current context's page source, or the elements at a point or carrying some text. Mobile only — a browser runner answers `runner-is-not-mobile`; call `runner.inspect` for a browser's equivalent surface instead. `what: \"session\"` always answers with the session's own status rather than `screen-needs-a-run`, since that is the question it exists to answer; the other three request kinds need a live session first and answer the same `screen-needs-a-run` or `screen-not-ready` outcomes `runner.performAction` and `runner.takeScreenshot` use, instead of reading anything when there is none. `screen-needs-a-run` means no Appium session has started on this runner yet — call `runner.runFlow` with a flow that opens one, then inspect again. `screen-not-ready` means the runner's Appium session exists but did not answer this instant, or more than one is somehow live — retry once; if it persists, relaunch the runner. `runner-is-not-mobile` means there is nothing here to inspect, and retrying will never help — launch a `node20WithAndroid` or `node20WithIos` 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.";
25
+ readonly input: z.ZodObject<{
26
+ id: z.ZodString;
27
+ request: z.ZodDiscriminatedUnion<[z.ZodObject<{
28
+ what: z.ZodLiteral<"session">;
29
+ }, z.core.$strip>, z.ZodObject<{
30
+ what: z.ZodLiteral<"contexts">;
31
+ }, z.core.$strip>, z.ZodObject<{
32
+ context: z.ZodOptional<z.ZodString>;
33
+ what: z.ZodLiteral<"page">;
34
+ }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
35
+ by: z.ZodLiteral<"point">;
36
+ context: z.ZodOptional<z.ZodString>;
37
+ what: z.ZodLiteral<"elements">;
38
+ x: z.ZodInt;
39
+ y: z.ZodInt;
40
+ }, z.core.$strip>, z.ZodObject<{
41
+ by: z.ZodLiteral<"text">;
42
+ context: z.ZodOptional<z.ZodString>;
43
+ partial: z.ZodOptional<z.ZodBoolean>;
44
+ text: z.ZodString;
45
+ what: z.ZodLiteral<"elements">;
46
+ }, z.core.$strip>], "by">], "what">;
47
+ }, z.core.$strip>;
48
+ readonly kind: "read";
49
+ readonly name: "runner.inspectMobile";
50
+ readonly output: z.ZodDiscriminatedUnion<[z.ZodDiscriminatedUnion<[z.ZodObject<{
51
+ outcome: z.ZodLiteral<"success">;
52
+ session: z.ZodDiscriminatedUnion<[z.ZodObject<{
53
+ deviceName: z.ZodOptional<z.ZodString>;
54
+ platformName: z.ZodString;
55
+ sessionId: z.ZodString;
56
+ type: z.ZodLiteral<"ready">;
57
+ }, z.core.$strip>, z.ZodObject<{
58
+ error: z.ZodString;
59
+ type: z.ZodLiteral<"unreachable">;
60
+ }, z.core.$strip>, z.ZodObject<{
61
+ sessionCount: z.ZodNumber;
62
+ type: z.ZodLiteral<"ambiguous">;
63
+ }, z.core.$strip>, z.ZodObject<{
64
+ type: z.ZodLiteral<"no-session">;
65
+ }, z.core.$strip>], "type">;
66
+ what: z.ZodLiteral<"session">;
67
+ }, z.core.$strip>, z.ZodObject<{
68
+ contexts: z.ZodArray<z.ZodString>;
69
+ current: z.ZodString;
70
+ outcome: z.ZodLiteral<"success">;
71
+ what: z.ZodLiteral<"contexts">;
72
+ }, z.core.$strip>, z.ZodObject<{
73
+ context: z.ZodString;
74
+ orientation: z.ZodEnum<{
75
+ PORTRAIT: "PORTRAIT";
76
+ LANDSCAPE: "LANDSCAPE";
77
+ }>;
78
+ outcome: z.ZodLiteral<"success">;
79
+ pageSource: z.ZodType<{
80
+ selectors: {
81
+ strategy: {
82
+ name: "xpath";
83
+ type: "unique" | "full-path" | "sibling-of" | "parent-of";
84
+ } | {
85
+ name: "ios-predicate";
86
+ } | {
87
+ hostSelector: string;
88
+ innerSelector: string;
89
+ name: "shadow";
90
+ };
91
+ value: string;
92
+ }[];
93
+ tag: string;
94
+ attributes?: {
95
+ bounds?: {
96
+ bottom: number;
97
+ left: number;
98
+ right: number;
99
+ top: number;
100
+ } | undefined;
101
+ rest?: Record<string, string> | undefined;
102
+ } | undefined;
103
+ } & {
104
+ children?: (({
105
+ selectors: {
106
+ strategy: {
107
+ name: "xpath";
108
+ type: "unique" | "full-path" | "sibling-of" | "parent-of";
109
+ } | {
110
+ name: "ios-predicate";
111
+ } | {
112
+ hostSelector: string;
113
+ innerSelector: string;
114
+ name: "shadow";
115
+ };
116
+ value: string;
117
+ }[];
118
+ tag: string;
119
+ attributes?: {
120
+ bounds?: {
121
+ bottom: number;
122
+ left: number;
123
+ right: number;
124
+ top: number;
125
+ } | undefined;
126
+ rest?: Record<string, string> | undefined;
127
+ } | undefined;
128
+ } & /*elided*/ any) | string)[];
129
+ }, unknown, z.core.$ZodTypeInternals<{
130
+ selectors: {
131
+ strategy: {
132
+ name: "xpath";
133
+ type: "unique" | "full-path" | "sibling-of" | "parent-of";
134
+ } | {
135
+ name: "ios-predicate";
136
+ } | {
137
+ hostSelector: string;
138
+ innerSelector: string;
139
+ name: "shadow";
140
+ };
141
+ value: string;
142
+ }[];
143
+ tag: string;
144
+ attributes?: {
145
+ bounds?: {
146
+ bottom: number;
147
+ left: number;
148
+ right: number;
149
+ top: number;
150
+ } | undefined;
151
+ rest?: Record<string, string> | undefined;
152
+ } | undefined;
153
+ } & {
154
+ children?: (({
155
+ selectors: {
156
+ strategy: {
157
+ name: "xpath";
158
+ type: "unique" | "full-path" | "sibling-of" | "parent-of";
159
+ } | {
160
+ name: "ios-predicate";
161
+ } | {
162
+ hostSelector: string;
163
+ innerSelector: string;
164
+ name: "shadow";
165
+ };
166
+ value: string;
167
+ }[];
168
+ tag: string;
169
+ attributes?: {
170
+ bounds?: {
171
+ bottom: number;
172
+ left: number;
173
+ right: number;
174
+ top: number;
175
+ } | undefined;
176
+ rest?: Record<string, string> | undefined;
177
+ } | undefined;
178
+ } & /*elided*/ any) | string)[];
179
+ }, unknown>>;
180
+ what: z.ZodLiteral<"page">;
181
+ }, z.core.$strip>, z.ZodObject<{
182
+ matches: z.ZodArray<z.ZodObject<{
183
+ attributes: z.ZodRecord<z.ZodString, z.ZodString>;
184
+ bounds: z.ZodOptional<z.ZodObject<{
185
+ bottom: z.ZodNumber;
186
+ left: z.ZodNumber;
187
+ right: z.ZodNumber;
188
+ top: z.ZodNumber;
189
+ }, z.core.$strip>>;
190
+ center: z.ZodOptional<z.ZodObject<{
191
+ x: z.ZodNumber;
192
+ y: z.ZodNumber;
193
+ }, z.core.$strip>>;
194
+ selectors: z.ZodArray<z.ZodObject<{
195
+ strategy: z.ZodUnion<readonly [z.ZodObject<{
196
+ name: z.ZodLiteral<"xpath">;
197
+ type: z.ZodEnum<{
198
+ unique: "unique";
199
+ "full-path": "full-path";
200
+ "sibling-of": "sibling-of";
201
+ "parent-of": "parent-of";
202
+ }>;
203
+ }, z.core.$strip>, z.ZodObject<{
204
+ name: z.ZodLiteral<"ios-predicate">;
205
+ }, z.core.$strip>, z.ZodObject<{
206
+ hostSelector: z.ZodString;
207
+ innerSelector: z.ZodString;
208
+ name: z.ZodLiteral<"shadow">;
209
+ }, z.core.$strip>]>;
210
+ value: z.ZodString;
211
+ }, z.core.$strip>>;
212
+ tag: z.ZodString;
213
+ }, z.core.$strip>>;
214
+ outcome: z.ZodLiteral<"success">;
215
+ what: z.ZodLiteral<"elements">;
216
+ }, z.core.$strip>], "what">, z.ZodObject<{
217
+ failureReason: z.ZodEnum<{
218
+ "runner-unreachable": "runner-unreachable";
219
+ "runner-is-not-mobile": "runner-is-not-mobile";
220
+ "screen-needs-a-run": "screen-needs-a-run";
221
+ "screen-not-ready": "screen-not-ready";
222
+ }>;
223
+ outcome: z.ZodLiteral<"failure">;
224
+ }, z.core.$strip>], "outcome">;
225
+ };
226
+ //# sourceMappingURL=inspectMobile.d.ts.map
@@ -0,0 +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;AAwBxB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;mCAgDrC,CAAC;AA4CH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B7C,CAAC"}
@@ -0,0 +1,118 @@
1
+ import { z } from "zod";
2
+ import { runnerIdSchema } from "./identity.js";
3
+ import { elementSchema, orientationSchema, pageSourceNodeSchema, } from "./inspectMobileShapes.js";
4
+ import { makeRunnerFailureSchema } from "./outcome.js";
5
+ import { retryableRunnerUnreachableDescription, runnerUnreachableFailureReason, } from "./unreachable.js";
6
+ /**
7
+ * Mobile-only: `runner.inspect` covers the equivalent browser surface
8
+ * (element HTML, page HTML, a workflow variable). `what` discriminates so a
9
+ * request kind can be added later without a rename.
10
+ */
11
+ const maxElementTextLength = 500;
12
+ export const inspectMobileRequestSchema = z.discriminatedUnion("what", [
13
+ z.object({
14
+ what: z
15
+ .literal("session")
16
+ .describe("The status of the Appium session driving the device: ready and what it is, or why not."),
17
+ }),
18
+ z.object({
19
+ what: z
20
+ .literal("contexts")
21
+ .describe("The WebView contexts available on the device, and which one is current."),
22
+ }),
23
+ z.object({
24
+ context: z
25
+ .string()
26
+ .min(1)
27
+ .optional()
28
+ .describe("Read this context instead of whichever is current."),
29
+ what: z
30
+ .literal("page")
31
+ .describe("The page source of the device's current context, as a tree."),
32
+ }),
33
+ z
34
+ .discriminatedUnion("by", [
35
+ z.object({
36
+ by: z.literal("point"),
37
+ context: z.string().min(1).optional(),
38
+ what: z.literal("elements"),
39
+ x: z.int().min(0).describe("Whole pixels on the device's own screen."),
40
+ y: z.int().min(0).describe("Whole pixels on the device's own screen."),
41
+ }),
42
+ z.object({
43
+ by: z.literal("text"),
44
+ context: z.string().min(1).optional(),
45
+ partial: z
46
+ .boolean()
47
+ .optional()
48
+ .describe("Match text containing this, rather than exactly this."),
49
+ text: z.string().min(1).max(maxElementTextLength),
50
+ what: z.literal("elements"),
51
+ }),
52
+ ])
53
+ .describe("Elements at a screen point, or elements carrying some text — never both at once."),
54
+ ]);
55
+ const inspectMobileAnswerSchema = z.discriminatedUnion("what", [
56
+ z.object({
57
+ outcome: z.literal("success"),
58
+ session: z.discriminatedUnion("type", [
59
+ z.object({
60
+ deviceName: z.string().optional(),
61
+ platformName: z.string(),
62
+ sessionId: z.string(),
63
+ type: z.literal("ready"),
64
+ }),
65
+ z.object({
66
+ error: z.string(),
67
+ type: z.literal("unreachable"),
68
+ }),
69
+ z.object({
70
+ sessionCount: z.number(),
71
+ type: z.literal("ambiguous"),
72
+ }),
73
+ z.object({ type: z.literal("no-session") }),
74
+ ]),
75
+ what: z.literal("session"),
76
+ }),
77
+ z.object({
78
+ contexts: z.string().array(),
79
+ current: z.string(),
80
+ outcome: z.literal("success"),
81
+ what: z.literal("contexts"),
82
+ }),
83
+ z.object({
84
+ context: z.string(),
85
+ orientation: orientationSchema,
86
+ outcome: z.literal("success"),
87
+ pageSource: pageSourceNodeSchema,
88
+ what: z.literal("page"),
89
+ }),
90
+ z.object({
91
+ matches: elementSchema.array(),
92
+ outcome: z.literal("success"),
93
+ what: z.literal("elements"),
94
+ }),
95
+ ]);
96
+ export const makeInspectMobileOnRunnerContract = () => {
97
+ const input = z.object({
98
+ id: runnerIdSchema.describe("Id of the runner to inspect."),
99
+ request: inspectMobileRequestSchema,
100
+ });
101
+ const output = z.discriminatedUnion("outcome", [
102
+ inspectMobileAnswerSchema,
103
+ makeRunnerFailureSchema([
104
+ "runner-is-not-mobile",
105
+ "screen-needs-a-run",
106
+ "screen-not-ready",
107
+ runnerUnreachableFailureReason,
108
+ ]),
109
+ ]);
110
+ return {
111
+ description: `Inspect one thing on a mobile interactive runner: the Appium session's status, the WebView contexts available, the current context's page source, or the elements at a point or carrying some text. Mobile only — a browser runner answers \`runner-is-not-mobile\`; call \`runner.inspect\` for a browser's equivalent surface instead. \`what: "session"\` always answers with the session's own status rather than \`screen-needs-a-run\`, since that is the question it exists to answer; the other three request kinds need a live session first and answer the same \`screen-needs-a-run\` or \`screen-not-ready\` outcomes \`runner.performAction\` and \`runner.takeScreenshot\` use, instead of reading anything when there is none. \`screen-needs-a-run\` means no Appium session has started on this runner yet — call \`runner.runFlow\` with a flow that opens one, then inspect again. \`screen-not-ready\` means the runner's Appium session exists but did not answer this instant, or more than one is somehow live — retry once; if it persists, relaunch the runner. \`runner-is-not-mobile\` means there is nothing here to inspect, and retrying will never help — launch a \`node20WithAndroid\` or \`node20WithIos\` runner instead. ${retryableRunnerUnreachableDescription}`,
112
+ input,
113
+ kind: "read",
114
+ name: "runner.inspectMobile",
115
+ output,
116
+ };
117
+ };
118
+ //# sourceMappingURL=inspectMobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspectMobile.js","sourceRoot":"","sources":["../../../src/v1/runner/inspectMobile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { z } from "zod";
2
+ export declare const elementSchema: z.ZodObject<{
3
+ attributes: z.ZodRecord<z.ZodString, z.ZodString>;
4
+ bounds: z.ZodOptional<z.ZodObject<{
5
+ bottom: z.ZodNumber;
6
+ left: z.ZodNumber;
7
+ right: z.ZodNumber;
8
+ top: z.ZodNumber;
9
+ }, z.core.$strip>>;
10
+ center: z.ZodOptional<z.ZodObject<{
11
+ x: z.ZodNumber;
12
+ y: z.ZodNumber;
13
+ }, z.core.$strip>>;
14
+ selectors: z.ZodArray<z.ZodObject<{
15
+ strategy: z.ZodUnion<readonly [z.ZodObject<{
16
+ name: z.ZodLiteral<"xpath">;
17
+ type: z.ZodEnum<{
18
+ unique: "unique";
19
+ "full-path": "full-path";
20
+ "sibling-of": "sibling-of";
21
+ "parent-of": "parent-of";
22
+ }>;
23
+ }, z.core.$strip>, z.ZodObject<{
24
+ name: z.ZodLiteral<"ios-predicate">;
25
+ }, z.core.$strip>, z.ZodObject<{
26
+ hostSelector: z.ZodString;
27
+ innerSelector: z.ZodString;
28
+ name: z.ZodLiteral<"shadow">;
29
+ }, z.core.$strip>]>;
30
+ value: z.ZodString;
31
+ }, z.core.$strip>>;
32
+ tag: z.ZodString;
33
+ }, z.core.$strip>;
34
+ declare const basePageSourceNodeSchema: z.ZodObject<{
35
+ attributes: z.ZodOptional<z.ZodObject<{
36
+ bounds: z.ZodOptional<z.ZodObject<{
37
+ bottom: z.ZodNumber;
38
+ left: z.ZodNumber;
39
+ right: z.ZodNumber;
40
+ top: z.ZodNumber;
41
+ }, z.core.$strip>>;
42
+ rest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
43
+ }, z.core.$strip>>;
44
+ selectors: z.ZodArray<z.ZodObject<{
45
+ strategy: z.ZodUnion<readonly [z.ZodObject<{
46
+ name: z.ZodLiteral<"xpath">;
47
+ type: z.ZodEnum<{
48
+ unique: "unique";
49
+ "full-path": "full-path";
50
+ "sibling-of": "sibling-of";
51
+ "parent-of": "parent-of";
52
+ }>;
53
+ }, z.core.$strip>, z.ZodObject<{
54
+ name: z.ZodLiteral<"ios-predicate">;
55
+ }, z.core.$strip>, z.ZodObject<{
56
+ hostSelector: z.ZodString;
57
+ innerSelector: z.ZodString;
58
+ name: z.ZodLiteral<"shadow">;
59
+ }, z.core.$strip>]>;
60
+ value: z.ZodString;
61
+ }, z.core.$strip>>;
62
+ tag: z.ZodString;
63
+ }, z.core.$strip>;
64
+ type PageSourceNode = z.infer<typeof basePageSourceNodeSchema> & {
65
+ children?: (PageSourceNode | string)[];
66
+ };
67
+ export declare const pageSourceNodeSchema: z.ZodType<PageSourceNode>;
68
+ export declare const orientationSchema: z.ZodEnum<{
69
+ PORTRAIT: "PORTRAIT";
70
+ LANDSCAPE: "LANDSCAPE";
71
+ }>;
72
+ export {};
73
+ //# sourceMappingURL=inspectMobileShapes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspectMobileShapes.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/inspectMobileShapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgCxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYxB,CAAC;AAEH,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS5B,CAAC;AAEH,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,GAAG;IAC/D,QAAQ,CAAC,EAAE,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAQvD,CAAC;AAEL,eAAO,MAAM,iBAAiB;;;EAAoC,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Duplicated from `packages/domain-runner-types/src/lib/appium.ts`: that
4
+ * package is private and this one is published, so it can't be imported here.
5
+ * A shape refused there must stay refused here.
6
+ */
7
+ const boundsSchema = z.object({
8
+ bottom: z.number(),
9
+ left: z.number(),
10
+ right: z.number(),
11
+ top: z.number(),
12
+ });
13
+ const pointSchema = z.object({ x: z.number(), y: z.number() });
14
+ const selectorSchema = z.object({
15
+ strategy: z.union([
16
+ z.object({
17
+ name: z.literal("xpath"),
18
+ type: z.enum(["unique", "full-path", "sibling-of", "parent-of"]),
19
+ }),
20
+ z.object({ name: z.literal("ios-predicate") }),
21
+ z.object({
22
+ hostSelector: z.string(),
23
+ innerSelector: z.string(),
24
+ name: z.literal("shadow"),
25
+ }),
26
+ ]),
27
+ value: z.string(),
28
+ });
29
+ export const elementSchema = z.object({
30
+ attributes: z.record(z.string(), z.string()),
31
+ bounds: boundsSchema
32
+ .optional()
33
+ .describe("The element's on-screen rectangle, absent off-screen."),
34
+ center: pointSchema
35
+ .optional()
36
+ .describe("Derived from `bounds`; absent wherever `bounds` is."),
37
+ selectors: selectorSchema
38
+ .array()
39
+ .describe("Ways to address this element again, most reliable first."),
40
+ tag: z.string(),
41
+ });
42
+ const basePageSourceNodeSchema = z.object({
43
+ attributes: z
44
+ .object({
45
+ bounds: boundsSchema.optional(),
46
+ rest: z.record(z.string(), z.string()).optional(),
47
+ })
48
+ .optional(),
49
+ selectors: selectorSchema.array(),
50
+ tag: z.string(),
51
+ });
52
+ export const pageSourceNodeSchema = basePageSourceNodeSchema.extend({
53
+ children: z
54
+ .lazy(() => z.union([pageSourceNodeSchema, z.string()]).array())
55
+ .optional()
56
+ .describe("A string child is a text node; there is no element to select."),
57
+ });
58
+ export const orientationSchema = z.enum(["PORTRAIT", "LANDSCAPE"]);
59
+ //# sourceMappingURL=inspectMobileShapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspectMobileShapes.js","sourceRoot":"","sources":["../../../src/v1/runner/inspectMobileShapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAE/D,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC;QAChB,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;SACjE,CAAC;QACF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9C,CAAC,CAAC,MAAM,CAAC;YACP,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;YACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;YACzB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC1B,CAAC;KACH,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5C,MAAM,EAAE,YAAY;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,uDAAuD,CAAC;IACpE,MAAM,EAAE,WAAW;SAChB,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;IAClE,SAAS,EAAE,cAAc;SACtB,KAAK,EAAE;SACP,QAAQ,CAAC,0DAA0D,CAAC;IACvE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC;SACV,MAAM,CAAC;QACN,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;QAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAClD,CAAC;SACD,QAAQ,EAAE;IACb,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE;IACjC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,wBAAwB,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SAC/D,QAAQ,EAAE;SACV,QAAQ,CACP,+DAA+D,CAChE;CACJ,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  /** How much of a failure reason this API passes on. */
3
3
  export declare const maxActionErrorMessageLength = 1000;
4
4
  export declare const makePerformActionOnRunnerContract: () => {
5
- 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.";
5
+ 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.";
6
6
  readonly input: z.ZodObject<{
7
7
  action: z.ZodDiscriminatedUnion<[z.ZodObject<{
8
8
  button: z.ZodLiteral<"left" | "right" | "wheel" | "back" | "forward">;
@@ -52,9 +52,10 @@ export declare const makePerformActionOnRunnerContract: () => {
52
52
  }, z.core.$strip>, z.ZodObject<{
53
53
  failureReason: z.ZodEnum<{
54
54
  "runner-unreachable": "runner-unreachable";
55
- "runner-has-no-screen": "runner-has-no-screen";
56
55
  "screen-needs-a-run": "screen-needs-a-run";
57
56
  "screen-not-ready": "screen-not-ready";
57
+ "runner-has-no-screen": "runner-has-no-screen";
58
+ "action-not-supported-on-mobile": "action-not-supported-on-mobile";
58
59
  }>;
59
60
  outcome: z.ZodLiteral<"failure">;
60
61
  }, z.core.$strip>], "failureReason">], "outcome">;
@@ -1 +1 @@
1
- {"version":3,"file":"performAction.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/performAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,uDAAuD;AACvD,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0C7C,CAAC"}
1
+ {"version":3,"file":"performAction.d.ts","sourceRoot":"","sources":["../../../src/v1/runner/performAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB,uDAAuD;AACvD,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C7C,CAAC"}
@@ -7,6 +7,7 @@ import { runnerUnreachableFailureReason } from "./unreachable.js";
7
7
  // Not the shared retryable wording: the action may have taken effect before its
8
8
  // answer was lost.
9
9
  const unreachableDescription = "`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.";
10
+ const notSupportedOnMobileDescription = "`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.";
10
11
  /** How much of a failure reason this API passes on. */
11
12
  export const maxActionErrorMessageLength = 1_000;
12
13
  export const makePerformActionOnRunnerContract = () => {
@@ -27,6 +28,7 @@ export const makePerformActionOnRunnerContract = () => {
27
28
  }),
28
29
  makeRunnerFailureSchema([
29
30
  ...screenFailureReasons,
31
+ "action-not-supported-on-mobile",
30
32
  runnerUnreachableFailureReason,
31
33
  ]),
32
34
  ]);
@@ -35,7 +37,7 @@ export const makePerformActionOnRunnerContract = () => {
35
37
  failure,
36
38
  ]);
37
39
  return {
38
- 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. ${screenNotReadyDescription} A \`navigate\` does not go through the screen, so a screen that is not ready does not stop it. ${runnerHasNoScreenDescription} ${unreachableDescription}`,
40
+ 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. ${screenNotReadyDescription} A \`navigate\` does not go through the screen, so a screen that is not ready does not stop it. ${runnerHasNoScreenDescription} ${notSupportedOnMobileDescription} ${unreachableDescription}`,
39
41
  input,
40
42
  kind: "write",
41
43
  name: "runner.performAction",
@@ -1 +1 @@
1
- {"version":3,"file":"performAction.js","sourceRoot":"","sources":["../../../src/v1/runner/performAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAElE,gFAAgF;AAChF,mBAAmB;AACnB,MAAM,sBAAsB,GAC1B,mQAAmQ,CAAC;AAEtQ,uDAAuD;AACvD,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAEjD,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,EAAE;IACpD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;QACrB,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAClC,yFAAyF,CAC1F;QACD,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAC3D,CAAC,CAAC;IAEH,+EAA+E;IAC/E,8CAA8C;IAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,kBAAkB,CAAC,eAAe,EAAE;QACpD,CAAC,CAAC,MAAM,CAAC;YACP,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,GAAG,CAAC,2BAA2B,CAAC;iBAChC,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;YACzC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;SAC9B,CAAC;QACF,uBAAuB,CAAC;YACtB,GAAG,oBAAoB;YACvB,8BAA8B;SAC/B,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;QAC7C,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3C,OAAO;KACR,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,mlCAAmlC,yBAAyB,mGAAmG,4BAA4B,IAAI,sBAAsB,EAAE;QACpxC,KAAK;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,sBAAsB;QAC5B,MAAM;KAMP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"performAction.js","sourceRoot":"","sources":["../../../src/v1/runner/performAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAElE,gFAAgF;AAChF,mBAAmB;AACnB,MAAM,sBAAsB,GAC1B,mQAAmQ,CAAC;AAEtQ,MAAM,+BAA+B,GACnC,6ZAA6Z,CAAC;AAEha,uDAAuD;AACvD,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAEjD,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,EAAE;IACpD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;QACrB,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAClC,yFAAyF,CAC1F;QACD,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAC3D,CAAC,CAAC;IAEH,+EAA+E;IAC/E,8CAA8C;IAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,kBAAkB,CAAC,eAAe,EAAE;QACpD,CAAC,CAAC,MAAM,CAAC;YACP,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,GAAG,CAAC,2BAA2B,CAAC;iBAChC,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;YACzC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;SAC9B,CAAC;QACF,uBAAuB,CAAC;YACtB,GAAG,oBAAoB;YACvB,gCAAgC;YAChC,8BAA8B;SAC/B,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;QAC7C,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3C,OAAO;KACR,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,8yCAA8yC,yBAAyB,mGAAmG,4BAA4B,IAAI,+BAA+B,IAAI,sBAAsB,EAAE;QAClhD,KAAK;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,sBAAsB;QAC5B,MAAM;KAMP,CAAC;AACJ,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  export declare const makeTakeScreenshotOnRunnerContract: () => {
3
- readonly description: "Take one screenshot of an interactive runner's screen. The image is the runner's whole virtual desktop, browser window and all. `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.";
3
+ 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.";
4
4
  readonly input: z.ZodObject<{
5
5
  id: z.ZodString;
6
6
  }, z.core.$strip>;
@@ -12,9 +12,9 @@ export declare const makeTakeScreenshotOnRunnerContract: () => {
12
12
  }, z.core.$strip>, z.ZodObject<{
13
13
  failureReason: z.ZodEnum<{
14
14
  "runner-unreachable": "runner-unreachable";
15
- "runner-has-no-screen": "runner-has-no-screen";
16
15
  "screen-needs-a-run": "screen-needs-a-run";
17
16
  "screen-not-ready": "screen-not-ready";
17
+ "runner-has-no-screen": "runner-has-no-screen";
18
18
  }>;
19
19
  outcome: z.ZodLiteral<"failure">;
20
20
  }, z.core.$strip>], "outcome">;
@@ -25,7 +25,7 @@ export const makeTakeScreenshotOnRunnerContract = () => {
25
25
  ]),
26
26
  ]);
27
27
  return {
28
- description: `Take one screenshot of an interactive runner's screen. The image is the runner's whole virtual desktop, browser window and all. ${screenNeedsARunDescription} ${screenNotReadyDescription} ${runnerHasNoScreenDescription} ${retryableRunnerUnreachableDescription}`,
28
+ 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. ${screenNeedsARunDescription} ${screenNotReadyDescription} ${runnerHasNoScreenDescription} ${retryableRunnerUnreachableDescription}`,
29
29
  input,
30
30
  kind: "read",
31
31
  name: "runner.takeScreenshot",
@@ -1 +1 @@
1
- {"version":3,"file":"takeScreenshot.js","sourceRoot":"","sources":["../../../src/v1/runner/takeScreenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qCAAqC,EACrC,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,MAAM,kCAAkC,GAAG,GAAG,EAAE;IACrD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;QACrB,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KACzE,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;QAC7C,CAAC,CAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,iEAAiE;YACjE,uEAAuE;YACvE,wBAAwB;YACxB,eAAe,EAAE,CAAC;iBACf,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,8KAA8K,CAC/K;YACH,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;SAC9B,CAAC;QACF,uBAAuB,CAAC;YACtB,GAAG,oBAAoB;YACvB,8BAA8B;SAC/B,CAAC;KACH,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,mIAAmI,0BAA0B,IAAI,yBAAyB,IAAI,4BAA4B,IAAI,qCAAqC,EAAE;QAClR,KAAK;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,uBAAuB;QAC7B,MAAM;KAMP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"takeScreenshot.js","sourceRoot":"","sources":["../../../src/v1/runner/takeScreenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qCAAqC,EACrC,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,MAAM,kCAAkC,GAAG,GAAG,EAAE;IACrD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;QACrB,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KACzE,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;QAC7C,CAAC,CAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,iEAAiE;YACjE,uEAAuE;YACvE,wBAAwB;YACxB,eAAe,EAAE,CAAC;iBACf,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,8KAA8K,CAC/K;YACH,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;SAC9B,CAAC;QACF,uBAAuB,CAAC;YACtB,GAAG,oBAAoB;YACvB,8BAA8B;SAC/B,CAAC;KACH,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,0SAA0S,0BAA0B,IAAI,yBAAyB,IAAI,4BAA4B,IAAI,qCAAqC,EAAE;QACzb,KAAK;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,uBAAuB;QAC7B,MAAM;KAMP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { type BrowserAction, browserActionSchema, } from "./runner/browserAction.js";
2
+ export { runEnvironmentSchema } from "./runner/environment.js";
3
+ export { isShippableRunFilePath, runFilePathSchema, runPackageJsonPath, shippableRunFileExtensions, } from "./runner/files.js";
4
+ export { type RunnerNameForPublicApi, makeRunnerSchema, runnerIdSchema, runnerNameSchema, } from "./runner/identity.js";
5
+ export { type InspectOnRunnerRequest, inspectRequestSchema, } from "./runner/inspect.js";
6
+ export { type InspectMobileRequest, inspectMobileRequestSchema, } from "./runner/inspectMobile.js";
7
+ export { type JournalEntry, type JournalStream, type KnownJournalStream, type ReadJournalRequest, type ReadJournalResponse, journalEntrySchema, journalStreamSchema, knownJournalStreams, maxJournalStreamNameLength, readJournalRequestSchema, readJournalResponseSchema, } from "./runner/journal.js";
8
+ export { type RunFiles, maxRunFilesByteLength, maxRunnerRequestEncodedByteLength, runFilesByteLength, runFilesSchema, } from "./runner/payloadSize.js";
9
+ export { maxActionErrorMessageLength } from "./runner/performAction.js";
10
+ export { type RunSelection, runSelectionSchema, } from "./runner/runSelection.js";
11
+ //# sourceMappingURL=runnerReexports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runnerReexports.d.ts","sourceRoot":"","sources":["../../src/v1/runnerReexports.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,aAAa,EAClB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAC3B,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,oBAAoB,EACzB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,QAAQ,EACb,qBAAqB,EACrB,iCAAiC,EACjC,kBAAkB,EAClB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACL,KAAK,YAAY,EACjB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,23 @@
1
+ // The `runner` resource's shared types and schemas, re-exported here rather
2
+ // than restated by every server and client that needs them. Split out of
3
+ // `index.ts` to keep that file under the line limit.
4
+ export { browserActionSchema, } from "./runner/browserAction.js";
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
+ export { inspectMobileRequestSchema, } from "./runner/inspectMobile.js";
17
+ // A journal read is answered verbatim by the public API, so its wire shapes are
18
+ // published here and the private journal package imports them from here.
19
+ export { journalEntrySchema, journalStreamSchema, knownJournalStreams, maxJournalStreamNameLength, readJournalRequestSchema, readJournalResponseSchema, } from "./runner/journal.js";
20
+ export { maxRunFilesByteLength, maxRunnerRequestEncodedByteLength, runFilesByteLength, runFilesSchema, } from "./runner/payloadSize.js";
21
+ export { maxActionErrorMessageLength } from "./runner/performAction.js";
22
+ export { runSelectionSchema, } from "./runner/runSelection.js";
23
+ //# sourceMappingURL=runnerReexports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runnerReexports.js","sourceRoot":"","sources":["../../src/v1/runnerReexports.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,yEAAyE;AACzE,qDAAqD;AACrD,OAAO,EAEL,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,4EAA4E;AAC5E,+EAA+E;AAC/E,6DAA6D;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,gFAAgF;AAChF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,gFAAgF;AAChF,yEAAyE;AACzE,OAAO,EAML,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,qBAAqB,EACrB,iCAAiC,EACjC,kBAAkB,EAClB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAEL,kBAAkB,GACnB,MAAM,0BAA0B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qawolf/api-contracts",
3
- "version": "0.30.0",
3
+ "version": "0.32.0",
4
4
  "private": false,
5
5
  "description": "Versioned contracts for the QA Wolf public API",
6
6
  "repository": {