@qawolf/api-contracts 0.59.0 → 0.64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/v1/agent/send.d.ts +2 -0
- package/dist/v1/agent/send.d.ts.map +1 -1
- package/dist/v1/agent/send.js +7 -0
- package/dist/v1/agent/send.js.map +1 -1
- package/dist/v1/deployment/index.d.ts +1 -1
- package/dist/v1/deployment/reportStatus.d.ts +1 -1
- package/dist/v1/deployment/reportStatus.js +2 -2
- package/dist/v1/deployment/reportStatus.js.map +1 -1
- package/dist/v1/environment/create.d.ts +1 -1
- package/dist/v1/environment/create.d.ts.map +1 -1
- package/dist/v1/environment/create.js.map +1 -1
- package/dist/v1/environment/deleteVariable.d.ts +1 -1
- package/dist/v1/environment/deleteVariable.d.ts.map +1 -1
- package/dist/v1/environment/deleteVariable.js.map +1 -1
- package/dist/v1/environment/getVariable.d.ts +1 -1
- package/dist/v1/environment/getVariable.d.ts.map +1 -1
- package/dist/v1/environment/getVariable.js.map +1 -1
- package/dist/v1/environment/index.d.ts +3 -3
- package/dist/v1/environment/index.d.ts.map +1 -1
- package/dist/v1/environment/index.js.map +1 -1
- package/dist/v1/environment/update.d.ts +1 -1
- package/dist/v1/environment/update.d.ts.map +1 -1
- package/dist/v1/environment/update.js.map +1 -1
- package/dist/v1/flow/addTag.d.ts.map +1 -1
- package/dist/v1/flow/addTag.js +0 -1
- package/dist/v1/flow/addTag.js.map +1 -1
- package/dist/v1/ids.d.ts +4 -3
- package/dist/v1/ids.d.ts.map +1 -1
- package/dist/v1/ids.js +4 -1
- package/dist/v1/ids.js.map +1 -1
- package/dist/v1/index.d.ts +1369 -379
- package/dist/v1/index.d.ts.map +1 -1
- package/dist/v1/index.js +11 -49
- package/dist/v1/index.js.map +1 -1
- package/dist/v1/legacyTrigger/find.d.ts +89 -0
- package/dist/v1/legacyTrigger/find.d.ts.map +1 -0
- package/dist/v1/legacyTrigger/find.js +35 -0
- package/dist/v1/legacyTrigger/find.js.map +1 -0
- package/dist/v1/legacyTrigger/index.d.ts +129 -0
- package/dist/v1/legacyTrigger/index.d.ts.map +1 -0
- package/dist/v1/legacyTrigger/index.js +13 -0
- package/dist/v1/legacyTrigger/index.js.map +1 -0
- package/dist/v1/legacyTrigger/lifecycle.d.ts +41 -0
- package/dist/v1/legacyTrigger/lifecycle.d.ts.map +1 -0
- package/dist/v1/legacyTrigger/lifecycle.js +46 -0
- package/dist/v1/legacyTrigger/lifecycle.js.map +1 -0
- package/dist/v1/legacyTrigger/resource.d.ts +68 -0
- package/dist/v1/legacyTrigger/resource.d.ts.map +1 -0
- package/dist/v1/legacyTrigger/resource.js +66 -0
- package/dist/v1/legacyTrigger/resource.js.map +1 -0
- package/dist/v1/mcpToolDescription.d.ts.map +1 -1
- package/dist/v1/mcpToolDescription.js +2 -1
- package/dist/v1/mcpToolDescription.js.map +1 -1
- package/dist/v1/run/triage.d.ts +51 -0
- package/dist/v1/run/triage.d.ts.map +1 -0
- package/dist/v1/run/triage.js +55 -0
- package/dist/v1/run/triage.js.map +1 -0
- package/dist/v1/runner/actionSequence.d.ts +12 -0
- package/dist/v1/runner/actionSequence.d.ts.map +1 -0
- package/dist/v1/runner/actionSequence.js +11 -0
- package/dist/v1/runner/actionSequence.js.map +1 -0
- package/dist/v1/runner/catalog.d.ts +920 -0
- package/dist/v1/runner/catalog.d.ts.map +1 -0
- package/dist/v1/runner/catalog.js +36 -0
- package/dist/v1/runner/catalog.js.map +1 -0
- package/dist/v1/runner/performActions.d.ts +124 -0
- package/dist/v1/runner/performActions.d.ts.map +1 -0
- package/dist/v1/runner/performActions.js +83 -0
- package/dist/v1/runner/performActions.js.map +1 -0
- package/dist/v1/runner/performActionsSteps.d.ts +85 -0
- package/dist/v1/runner/performActionsSteps.d.ts.map +1 -0
- package/dist/v1/runner/performActionsSteps.js +80 -0
- package/dist/v1/runner/performActionsSteps.js.map +1 -0
- package/dist/v1/runner/recording.d.ts +332 -0
- package/dist/v1/runner/recording.d.ts.map +1 -0
- package/dist/v1/runner/recording.js +113 -0
- package/dist/v1/runner/recording.js.map +1 -0
- package/dist/v1/runnerReexports.d.ts +3 -0
- package/dist/v1/runnerReexports.d.ts.map +1 -1
- package/dist/v1/runnerReexports.js +3 -0
- package/dist/v1/runnerReexports.js.map +1 -1
- package/dist/v1/skill/index.d.ts +82 -0
- package/dist/v1/skill/index.d.ts.map +1 -0
- package/dist/v1/skill/index.js +63 -0
- package/dist/v1/skill/index.js.map +1 -0
- package/dist/v1/trigger/configuration.d.ts +20 -0
- package/dist/v1/trigger/configuration.d.ts.map +1 -1
- package/dist/v1/trigger/configuration.js +17 -3
- package/dist/v1/trigger/configuration.js.map +1 -1
- package/dist/v1/trigger/configurationRules.d.ts +2 -1
- package/dist/v1/trigger/configurationRules.d.ts.map +1 -1
- package/dist/v1/trigger/configurationRules.js +37 -21
- package/dist/v1/trigger/configurationRules.js.map +1 -1
- package/dist/v1/trigger/create.d.ts +20 -0
- package/dist/v1/trigger/create.d.ts.map +1 -1
- package/dist/v1/trigger/find.d.ts +10 -0
- package/dist/v1/trigger/find.d.ts.map +1 -1
- package/dist/v1/trigger/get.d.ts +10 -0
- package/dist/v1/trigger/get.d.ts.map +1 -1
- package/dist/v1/trigger/index.d.ts +578 -0
- package/dist/v1/trigger/index.d.ts.map +1 -1
- package/dist/v1/trigger/index.js +14 -0
- package/dist/v1/trigger/index.js.map +1 -1
- package/dist/v1/trigger/lifecycle.d.ts +20 -0
- package/dist/v1/trigger/lifecycle.d.ts.map +1 -1
- package/dist/v1/trigger/resource.d.ts +10 -0
- package/dist/v1/trigger/resource.d.ts.map +1 -1
- package/dist/v1/trigger/update.d.ts +20 -0
- package/dist/v1/trigger/update.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/v1/automate/index.d.ts +0 -24
- package/dist/v1/automate/index.d.ts.map +0 -1
- package/dist/v1/automate/index.js +0 -39
- package/dist/v1/automate/index.js.map +0 -1
|
@@ -0,0 +1,920 @@
|
|
|
1
|
+
import type { PublicIdSchema } from "../ids.js";
|
|
2
|
+
export declare const makeRunnerContracts: <WorkspaceId extends PublicIdSchema>(ids: {
|
|
3
|
+
environmentRef: PublicIdSchema;
|
|
4
|
+
workspace: WorkspaceId;
|
|
5
|
+
}) => {
|
|
6
|
+
runFlow: {
|
|
7
|
+
readonly annotations: {
|
|
8
|
+
readonly destructiveHint: true;
|
|
9
|
+
readonly openWorldHint: true;
|
|
10
|
+
readonly readOnlyHint: false;
|
|
11
|
+
};
|
|
12
|
+
readonly description: "Run a flow on an interactive runner. When `selection` is given the lines run against the browser as it stands, so nothing is re-navigated and nothing is signed in again; without it the whole entry point runs from a fresh browser. A runner with no live browser starts one before a selection and says so with `bootstrappedRunner`, which means those lines ran against a fresh page rather than the one an earlier run left. A selection produces no `runStarted` event, so follow it by its run id on `run-status` like any other run. Send `unchangedFiles` to ship only what changed since an earlier run on this runner; a `needs-full-sync` failure names the paths it does not hold, and the way to recover is the same run again with every file in `files`. Answers as soon as the run is accepted, with the id to follow it by — nothing waits for the run to finish. Which browser or device the run needs is read from the flow file's own execution target, so it is not supplied here; when it does not match what the runner is, the call fails with `runner-target-mismatch` rather than failing partway through the run. `runner-unreachable` means the answer did not arrive, which is NOT the same as the run not having started: the runner may have accepted it and been too slow to say so, and resubmitting would start a second run that is billed and journalled alongside the first. Read the runner's `run-status` journal stream before resubmitting, and use the newest run id there if one appeared.";
|
|
13
|
+
readonly input: import("zod").ZodObject<{
|
|
14
|
+
entryPointPath: import("zod").ZodString;
|
|
15
|
+
env: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
|
|
16
|
+
environmentId: import("zod").ZodOptional<PublicIdSchema>;
|
|
17
|
+
files: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
|
|
18
|
+
id: import("zod").ZodString;
|
|
19
|
+
selection: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
20
|
+
endLine: import("zod").ZodInt;
|
|
21
|
+
path: import("zod").ZodString;
|
|
22
|
+
startLine: import("zod").ZodInt;
|
|
23
|
+
}, import("zod/v4/core").$strip>>;
|
|
24
|
+
unchangedFiles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
|
|
25
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
26
|
+
}, import("zod/v4/core").$strip>;
|
|
27
|
+
readonly kind: "write";
|
|
28
|
+
readonly name: "runner.runFlow";
|
|
29
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
30
|
+
bootstrappedRunner: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
31
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
32
|
+
runId: import("zod").ZodString;
|
|
33
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
34
|
+
failureReason: import("zod").ZodLiteral<"runner-target-mismatch">;
|
|
35
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
36
|
+
requiredRunnerName: import("zod").ZodEnum<{
|
|
37
|
+
basic: "basic";
|
|
38
|
+
playwright: "playwright";
|
|
39
|
+
android: "android";
|
|
40
|
+
ios: "ios";
|
|
41
|
+
}>;
|
|
42
|
+
runnerName: import("zod").ZodEnum<{
|
|
43
|
+
basic: "basic";
|
|
44
|
+
playwright: "playwright";
|
|
45
|
+
android: "android";
|
|
46
|
+
ios: "ios";
|
|
47
|
+
}>;
|
|
48
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
49
|
+
failureReason: import("zod").ZodLiteral<"needs-full-sync">;
|
|
50
|
+
missingPaths: import("zod").ZodArray<import("zod").ZodString>;
|
|
51
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
52
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
53
|
+
failureReason: import("zod").ZodLiteral<"runner-unreachable">;
|
|
54
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
55
|
+
}, import("zod/v4/core").$strip>], "failureReason">], "outcome">;
|
|
56
|
+
};
|
|
57
|
+
stopRun: {
|
|
58
|
+
readonly annotations: {
|
|
59
|
+
readonly destructiveHint: true;
|
|
60
|
+
readonly openWorldHint: false;
|
|
61
|
+
readonly readOnlyHint: false;
|
|
62
|
+
};
|
|
63
|
+
readonly description: "Stop what a runner is currently executing, leaving the runner up and its browser on whatever page the run reached. Succeeds whether or not anything was running, and `wasRunning` says which. This is the counterpart of `runner.terminate`, which ends the runner itself. The run stops where it is, so the journal's `run-status` settles it as stopped rather than passed or failed. `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. The stop may still have landed, but stopping a runner that is already idle does nothing, so retrying is safe.";
|
|
64
|
+
readonly input: import("zod").ZodObject<{
|
|
65
|
+
id: import("zod").ZodString;
|
|
66
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
67
|
+
}, import("zod/v4/core").$strip>;
|
|
68
|
+
readonly kind: "write";
|
|
69
|
+
readonly name: "runner.stopRun";
|
|
70
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
71
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
72
|
+
wasRunning: import("zod").ZodBoolean;
|
|
73
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
74
|
+
failureReason: import("zod").ZodEnum<{
|
|
75
|
+
"runner-unreachable": "runner-unreachable";
|
|
76
|
+
}>;
|
|
77
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
78
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
79
|
+
};
|
|
80
|
+
takeScreenshot: {
|
|
81
|
+
readonly annotations: {
|
|
82
|
+
readonly destructiveHint: false;
|
|
83
|
+
readonly openWorldHint: false;
|
|
84
|
+
readonly readOnlyHint: false;
|
|
85
|
+
};
|
|
86
|
+
readonly description: "Take one screenshot of an interactive runner's screen. On a runner with a browser the image is the whole virtual desktop, browser window and all; this refreshes the inactivity timer and can extend the runner's billed lifetime. On a mobile runner it is the device's own screen, re-encoded to JPEG on the pod so this contract reads one image format regardless of runner family. `screen-needs-a-run` if the runner's virtual desktop has never started. Waiting will not change this and retrying is pointless — call `runner.runFlow` with a flow that opens a browser, then ask for the screen again. On a runner image with a browser that has never run anything, any `runner.performAction` also starts the browser itself. Evaluating a snippet does not start the desktop. `screen-not-ready` if the runner has a screen that cannot serve this instant. Retry in a second or two: the desktop restarts when a run changes the display size, and it serves one see-or-act request at a time, so a screenshot or action already in flight is the usual reason. Do not submit a run to clear this — a run may restart the display and discard what is on it. `runner-has-no-screen` if this runner 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.";
|
|
87
|
+
readonly input: import("zod").ZodObject<{
|
|
88
|
+
id: import("zod").ZodString;
|
|
89
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
90
|
+
}, import("zod/v4/core").$strip>;
|
|
91
|
+
readonly kind: "read";
|
|
92
|
+
readonly name: "runner.takeScreenshot";
|
|
93
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
94
|
+
imageJpegBase64: import("zod").ZodString;
|
|
95
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
96
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
97
|
+
failureReason: import("zod").ZodEnum<{
|
|
98
|
+
"runner-unreachable": "runner-unreachable";
|
|
99
|
+
"screen-needs-a-run": "screen-needs-a-run";
|
|
100
|
+
"screen-not-ready": "screen-not-ready";
|
|
101
|
+
"runner-has-no-screen": "runner-has-no-screen";
|
|
102
|
+
}>;
|
|
103
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
104
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
105
|
+
};
|
|
106
|
+
terminate: {
|
|
107
|
+
readonly annotations: {
|
|
108
|
+
readonly destructiveHint: true;
|
|
109
|
+
readonly openWorldHint: false;
|
|
110
|
+
readonly readOnlyHint: false;
|
|
111
|
+
};
|
|
112
|
+
readonly description: "End an interactive runner on the caller's team, and the pod it runs on with it. Terminating a runner that is not running succeeds and reports `wasRunning: false`. This ends the runner: use `runner.stopRun` to stop what a runner is currently executing while leaving the runner up.";
|
|
113
|
+
readonly input: import("zod").ZodObject<{
|
|
114
|
+
id: import("zod").ZodString;
|
|
115
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
116
|
+
}, import("zod/v4/core").$strip>;
|
|
117
|
+
readonly kind: "write";
|
|
118
|
+
readonly name: "runner.terminate";
|
|
119
|
+
readonly output: import("zod").ZodObject<{
|
|
120
|
+
id: import("zod").ZodString;
|
|
121
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
122
|
+
wasRunning: import("zod").ZodBoolean;
|
|
123
|
+
}, import("zod/v4/core").$strip>;
|
|
124
|
+
};
|
|
125
|
+
record: {
|
|
126
|
+
readonly annotations: {
|
|
127
|
+
readonly destructiveHint: false;
|
|
128
|
+
readonly openWorldHint: false;
|
|
129
|
+
readonly readOnlyHint: false;
|
|
130
|
+
};
|
|
131
|
+
readonly description: "Control video recording on a Playwright runner. Start requires a caller-generated UUID; stop targets that UUID so retries cannot stop a later recording. Manual capture spans runs and suppresses automatic capture. Auto settings affect subsequent full runs. The URL opens recording history after the runner terminates. Videos may be unavailable after abrupt pod loss.";
|
|
132
|
+
readonly input: import("zod").ZodObject<{
|
|
133
|
+
command: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
134
|
+
action: import("zod").ZodLiteral<"start">;
|
|
135
|
+
recordingId: import("zod").ZodUUID;
|
|
136
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
137
|
+
action: import("zod").ZodLiteral<"stop">;
|
|
138
|
+
recordingId: import("zod").ZodUUID;
|
|
139
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
140
|
+
action: import("zod").ZodLiteral<"auto">;
|
|
141
|
+
enabled: import("zod").ZodBoolean;
|
|
142
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
143
|
+
action: import("zod").ZodLiteral<"status">;
|
|
144
|
+
}, import("zod/v4/core").$strict>], "action">;
|
|
145
|
+
id: import("zod").ZodString;
|
|
146
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
147
|
+
}, import("zod/v4/core").$strip>;
|
|
148
|
+
readonly kind: "write";
|
|
149
|
+
readonly name: "runner.record";
|
|
150
|
+
readonly output: import("zod").ZodObject<{
|
|
151
|
+
result: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
152
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
153
|
+
recording: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
154
|
+
endedAt: import("zod").ZodISODateTime;
|
|
155
|
+
id: import("zod").ZodUUID;
|
|
156
|
+
mode: import("zod").ZodEnum<{
|
|
157
|
+
manual: "manual";
|
|
158
|
+
automatic: "automatic";
|
|
159
|
+
}>;
|
|
160
|
+
runIds: import("zod").ZodArray<import("zod").ZodString>;
|
|
161
|
+
runnerId: import("zod").ZodString;
|
|
162
|
+
runnerInstanceId: import("zod").ZodUUID;
|
|
163
|
+
startedAt: import("zod").ZodISODateTime;
|
|
164
|
+
status: import("zod").ZodEnum<{
|
|
165
|
+
failed: "failed";
|
|
166
|
+
ready: "ready";
|
|
167
|
+
}>;
|
|
168
|
+
version: import("zod").ZodLiteral<1>;
|
|
169
|
+
}, import("zod/v4/core").$strip>>;
|
|
170
|
+
state: import("zod").ZodObject<{
|
|
171
|
+
active: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
172
|
+
id: import("zod").ZodUUID;
|
|
173
|
+
mode: import("zod").ZodEnum<{
|
|
174
|
+
manual: "manual";
|
|
175
|
+
automatic: "automatic";
|
|
176
|
+
}>;
|
|
177
|
+
startedAt: import("zod").ZodISODateTime;
|
|
178
|
+
}, import("zod/v4/core").$strip>>;
|
|
179
|
+
auto: import("zod").ZodEnum<{
|
|
180
|
+
default: "default";
|
|
181
|
+
on: "on";
|
|
182
|
+
off: "off";
|
|
183
|
+
}>;
|
|
184
|
+
}, import("zod/v4/core").$strip>;
|
|
185
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
186
|
+
failureReason: import("zod").ZodEnum<{
|
|
187
|
+
"runner-unreachable": "runner-unreachable";
|
|
188
|
+
"screen-not-ready": "screen-not-ready";
|
|
189
|
+
unsupported: "unsupported";
|
|
190
|
+
"recording-in-progress": "recording-in-progress";
|
|
191
|
+
"recording-not-found": "recording-not-found";
|
|
192
|
+
"recording-id-used": "recording-id-used";
|
|
193
|
+
"recording-failed": "recording-failed";
|
|
194
|
+
}>;
|
|
195
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
196
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
197
|
+
url: import("zod").ZodURL;
|
|
198
|
+
}, import("zod/v4/core").$strip>;
|
|
199
|
+
};
|
|
200
|
+
recordings: {
|
|
201
|
+
readonly annotations: {
|
|
202
|
+
readonly destructiveHint: false;
|
|
203
|
+
readonly openWorldHint: false;
|
|
204
|
+
readonly readOnlyHint: true;
|
|
205
|
+
};
|
|
206
|
+
readonly description: "Read a runner's finalized recordings from workspace storage, including after the runner terminates. Omit recordingId to list recordings in storage-key order; follow nextPageToken for more. An empty list for a specific recording means it is not published or does not exist. Video URLs expire; platform URLs remain stable.";
|
|
207
|
+
readonly input: import("zod").ZodObject<{
|
|
208
|
+
id: import("zod").ZodString;
|
|
209
|
+
pageToken: import("zod").ZodOptional<import("zod").ZodString>;
|
|
210
|
+
recordingId: import("zod").ZodOptional<import("zod").ZodUUID>;
|
|
211
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
212
|
+
}, import("zod/v4/core").$strip>;
|
|
213
|
+
readonly kind: "read";
|
|
214
|
+
readonly name: "runner.recordings";
|
|
215
|
+
readonly output: import("zod").ZodObject<{
|
|
216
|
+
nextPageToken: import("zod").ZodOptional<import("zod").ZodString>;
|
|
217
|
+
recordings: import("zod").ZodArray<import("zod").ZodObject<{
|
|
218
|
+
endedAt: import("zod").ZodISODateTime;
|
|
219
|
+
id: import("zod").ZodUUID;
|
|
220
|
+
mode: import("zod").ZodEnum<{
|
|
221
|
+
manual: "manual";
|
|
222
|
+
automatic: "automatic";
|
|
223
|
+
}>;
|
|
224
|
+
runIds: import("zod").ZodArray<import("zod").ZodString>;
|
|
225
|
+
runnerId: import("zod").ZodString;
|
|
226
|
+
runnerInstanceId: import("zod").ZodUUID;
|
|
227
|
+
startedAt: import("zod").ZodISODateTime;
|
|
228
|
+
status: import("zod").ZodEnum<{
|
|
229
|
+
failed: "failed";
|
|
230
|
+
ready: "ready";
|
|
231
|
+
}>;
|
|
232
|
+
version: import("zod").ZodLiteral<1>;
|
|
233
|
+
url: import("zod").ZodURL;
|
|
234
|
+
videoUrl: import("zod").ZodOptional<import("zod").ZodURL>;
|
|
235
|
+
}, import("zod/v4/core").$strip>>;
|
|
236
|
+
}, import("zod/v4/core").$strip>;
|
|
237
|
+
};
|
|
238
|
+
evaluateSnippet: {
|
|
239
|
+
readonly annotations: {
|
|
240
|
+
readonly destructiveHint: true;
|
|
241
|
+
readonly openWorldHint: true;
|
|
242
|
+
readonly readOnlyHint: false;
|
|
243
|
+
};
|
|
244
|
+
readonly description: "Evaluate a snippet against whatever the runner's browser is showing right now. Answers whether the snippet ran, and its error if it threw — not the value it evaluated to, so read anything you want back out of the runner's journal (a snippet's `console.log` lands in the `console` stream). A snippet starts no run and leaves no run-scoped journal entries of its own. `runner-cannot-evaluate-snippets` on a runner with nothing attached to serve one — which will never clear, so check that the runner you launched is one that runs a browser or app before retrying. `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. Neither is proof the snippet did not run: a snippet that outlives the answer window is still executing when you read this, so do not blindly resubmit one that mutates what the page is looking at.";
|
|
245
|
+
readonly input: import("zod").ZodObject<{
|
|
246
|
+
code: import("zod").ZodString;
|
|
247
|
+
filePath: import("zod").ZodOptional<import("zod").ZodString>;
|
|
248
|
+
files: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
|
|
249
|
+
id: import("zod").ZodString;
|
|
250
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
251
|
+
}, import("zod/v4/core").$strip>;
|
|
252
|
+
readonly kind: "write";
|
|
253
|
+
readonly name: "runner.evaluateSnippet";
|
|
254
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
255
|
+
errorMessage: import("zod").ZodOptional<import("zod").ZodString>;
|
|
256
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
257
|
+
result: import("zod").ZodEnum<{
|
|
258
|
+
success: "success";
|
|
259
|
+
error: "error";
|
|
260
|
+
stopped: "stopped";
|
|
261
|
+
}>;
|
|
262
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
263
|
+
failureReason: import("zod").ZodEnum<{
|
|
264
|
+
"runner-cannot-evaluate-snippets": "runner-cannot-evaluate-snippets";
|
|
265
|
+
"runner-unreachable": "runner-unreachable";
|
|
266
|
+
}>;
|
|
267
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
268
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
269
|
+
};
|
|
270
|
+
get: {
|
|
271
|
+
readonly annotations: {
|
|
272
|
+
readonly destructiveHint: false;
|
|
273
|
+
readonly openWorldHint: false;
|
|
274
|
+
readonly readOnlyHint: true;
|
|
275
|
+
};
|
|
276
|
+
readonly description: "Report whether a runner is running under this id on the caller's team. This is a lookup: it never starts a runner, and it does not reset a runner's inactivity clock the way reading its journal does. An id that is not running is a success with `running: false` rather than an error, so this is how to check a runner is still there before addressing it. A running runner also reports the `url` to watch it on, so an id alone is enough to recover the link to give the user.";
|
|
277
|
+
readonly input: import("zod").ZodObject<{
|
|
278
|
+
id: import("zod").ZodString;
|
|
279
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
280
|
+
}, import("zod/v4/core").$strip>;
|
|
281
|
+
readonly kind: "read";
|
|
282
|
+
readonly name: "runner.get";
|
|
283
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
284
|
+
id: import("zod").ZodString;
|
|
285
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
286
|
+
running: import("zod").ZodLiteral<false>;
|
|
287
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
288
|
+
id: import("zod").ZodString;
|
|
289
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
290
|
+
running: import("zod").ZodLiteral<true>;
|
|
291
|
+
url: import("zod").ZodURL;
|
|
292
|
+
}, import("zod/v4/core").$strip>], "running">;
|
|
293
|
+
};
|
|
294
|
+
highlightSelector: {
|
|
295
|
+
readonly annotations: {
|
|
296
|
+
readonly destructiveHint: false;
|
|
297
|
+
readonly openWorldHint: false;
|
|
298
|
+
readonly readOnlyHint: false;
|
|
299
|
+
};
|
|
300
|
+
readonly description: "Highlight the elements a selector matches on an interactive runner's live page, and answer how many it matched. The highlight stays until it is replaced or cleared, so it is visible in the next `runner.takeScreenshot` — which is the point, since a caller cannot see the runner's screen otherwise. Send an empty selector to clear, which answers `cleared`. `status` tells a selector that matched nothing (`empty`) from one the page could not parse (`invalid`), so a caller can tell a bad locator from a locator pointing at nothing. `no-answer` if the page did not answer in time: the highlight runs inside the page, so a page that is gone or mid-navigation does not answer slowly, it does not answer at all. `runner-cannot-highlight-selectors` on a runner with no browser to draw on. `runner-unreachable` if the runner could not be reached: it may still be starting, or it may have terminated after inactivity.";
|
|
301
|
+
readonly input: import("zod").ZodObject<{
|
|
302
|
+
id: import("zod").ZodString;
|
|
303
|
+
selector: import("zod").ZodString;
|
|
304
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
305
|
+
}, import("zod/v4/core").$strip>;
|
|
306
|
+
readonly kind: "write";
|
|
307
|
+
readonly name: "runner.highlightSelector";
|
|
308
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
309
|
+
matchCount: import("zod").ZodNumber;
|
|
310
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
311
|
+
selector: import("zod").ZodString;
|
|
312
|
+
status: import("zod").ZodLiteral<"valid" | "invalid" | "empty">;
|
|
313
|
+
targetPage: import("zod").ZodOptional<import("zod").ZodString>;
|
|
314
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
315
|
+
outcome: import("zod").ZodLiteral<"cleared">;
|
|
316
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
317
|
+
errorMessage: import("zod").ZodOptional<import("zod").ZodString>;
|
|
318
|
+
failureReason: import("zod").ZodEnum<{
|
|
319
|
+
"runner-unreachable": "runner-unreachable";
|
|
320
|
+
"no-answer": "no-answer";
|
|
321
|
+
"runner-cannot-highlight-selectors": "runner-cannot-highlight-selectors";
|
|
322
|
+
}>;
|
|
323
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
324
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
325
|
+
};
|
|
326
|
+
importPackage: {
|
|
327
|
+
readonly annotations: {
|
|
328
|
+
readonly destructiveHint: true;
|
|
329
|
+
readonly openWorldHint: true;
|
|
330
|
+
readonly readOnlyHint: false;
|
|
331
|
+
};
|
|
332
|
+
readonly description: "Install a package into an interactive runner's live run and import it, so a snippet or a selection can use it without a full run to reinstall dependencies. An `install-failed` failure carries npm's reason in `errorMessage`. `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. The install may still have landed, but installing the same version again does nothing, so retrying is safe.";
|
|
333
|
+
readonly input: import("zod").ZodObject<{
|
|
334
|
+
id: import("zod").ZodString;
|
|
335
|
+
npmDependencies: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
|
|
336
|
+
packageName: import("zod").ZodString;
|
|
337
|
+
packageVersion: import("zod").ZodString;
|
|
338
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
339
|
+
}, import("zod/v4/core").$strip>;
|
|
340
|
+
readonly kind: "write";
|
|
341
|
+
readonly name: "runner.importPackage";
|
|
342
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
343
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
344
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
345
|
+
errorMessage: import("zod").ZodOptional<import("zod").ZodString>;
|
|
346
|
+
failureReason: import("zod").ZodEnum<{
|
|
347
|
+
"runner-unreachable": "runner-unreachable";
|
|
348
|
+
"install-failed": "install-failed";
|
|
349
|
+
}>;
|
|
350
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
351
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
352
|
+
};
|
|
353
|
+
inspect: {
|
|
354
|
+
readonly annotations: {
|
|
355
|
+
readonly destructiveHint: false;
|
|
356
|
+
readonly openWorldHint: false;
|
|
357
|
+
readonly readOnlyHint: false;
|
|
358
|
+
};
|
|
359
|
+
readonly description: string;
|
|
360
|
+
readonly input: import("zod").ZodObject<{
|
|
361
|
+
id: import("zod").ZodString;
|
|
362
|
+
request: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
363
|
+
selector: import("zod").ZodString;
|
|
364
|
+
what: import("zod").ZodLiteral<"element-html">;
|
|
365
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
366
|
+
selector: import("zod").ZodOptional<import("zod").ZodString>;
|
|
367
|
+
what: import("zod").ZodLiteral<"page-html">;
|
|
368
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
369
|
+
variableName: import("zod").ZodString;
|
|
370
|
+
what: import("zod").ZodLiteral<"variable">;
|
|
371
|
+
}, import("zod/v4/core").$strip>], "what">;
|
|
372
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
373
|
+
}, import("zod/v4/core").$strip>;
|
|
374
|
+
readonly kind: "read";
|
|
375
|
+
readonly name: "runner.inspect";
|
|
376
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
377
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
378
|
+
value: import("zod").ZodString;
|
|
379
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
380
|
+
errorMessage: import("zod").ZodOptional<import("zod").ZodString>;
|
|
381
|
+
failureReason: import("zod").ZodEnum<{
|
|
382
|
+
"runner-unreachable": "runner-unreachable";
|
|
383
|
+
"nothing-to-inspect": "nothing-to-inspect";
|
|
384
|
+
"runner-is-not-a-browser": "runner-is-not-a-browser";
|
|
385
|
+
}>;
|
|
386
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
387
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
388
|
+
};
|
|
389
|
+
inspectMobile: {
|
|
390
|
+
readonly annotations: {
|
|
391
|
+
readonly destructiveHint: false;
|
|
392
|
+
readonly openWorldHint: false;
|
|
393
|
+
readonly readOnlyHint: true;
|
|
394
|
+
};
|
|
395
|
+
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, carrying some text, or matching a selector. This does not refresh the runner's inactivity timer. 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 an `android` or `ios` runner instead. `invalid-selector` (elements by selector only) means the selector itself could not be parsed under the given `strategy` — distinct from a selector that parsed fine but matched nothing, which answers `matches: []` 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.";
|
|
396
|
+
readonly input: import("zod").ZodObject<{
|
|
397
|
+
id: import("zod").ZodString;
|
|
398
|
+
request: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
399
|
+
what: import("zod").ZodLiteral<"session">;
|
|
400
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
401
|
+
what: import("zod").ZodLiteral<"contexts">;
|
|
402
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
403
|
+
context: import("zod").ZodOptional<import("zod").ZodString>;
|
|
404
|
+
what: import("zod").ZodLiteral<"page">;
|
|
405
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
406
|
+
by: import("zod").ZodLiteral<"point">;
|
|
407
|
+
context: import("zod").ZodOptional<import("zod").ZodString>;
|
|
408
|
+
what: import("zod").ZodLiteral<"elements">;
|
|
409
|
+
x: import("zod").ZodInt;
|
|
410
|
+
y: import("zod").ZodInt;
|
|
411
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
412
|
+
by: import("zod").ZodLiteral<"text">;
|
|
413
|
+
context: import("zod").ZodOptional<import("zod").ZodString>;
|
|
414
|
+
partial: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
415
|
+
text: import("zod").ZodString;
|
|
416
|
+
what: import("zod").ZodLiteral<"elements">;
|
|
417
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
418
|
+
by: import("zod").ZodLiteral<"selector">;
|
|
419
|
+
context: import("zod").ZodOptional<import("zod").ZodString>;
|
|
420
|
+
selector: import("zod").ZodString;
|
|
421
|
+
strategy: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
422
|
+
"ios-predicate": "ios-predicate";
|
|
423
|
+
shadow: "shadow";
|
|
424
|
+
xpath: "xpath";
|
|
425
|
+
}>>;
|
|
426
|
+
what: import("zod").ZodLiteral<"elements">;
|
|
427
|
+
}, import("zod/v4/core").$strip>], "by">], "what">;
|
|
428
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
429
|
+
}, import("zod/v4/core").$strip>;
|
|
430
|
+
readonly kind: "read";
|
|
431
|
+
readonly name: "runner.inspectMobile";
|
|
432
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
433
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
434
|
+
session: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
435
|
+
deviceName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
436
|
+
platformName: import("zod").ZodString;
|
|
437
|
+
sessionId: import("zod").ZodString;
|
|
438
|
+
type: import("zod").ZodLiteral<"ready">;
|
|
439
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
440
|
+
error: import("zod").ZodString;
|
|
441
|
+
type: import("zod").ZodLiteral<"unreachable">;
|
|
442
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
443
|
+
sessionCount: import("zod").ZodNumber;
|
|
444
|
+
type: import("zod").ZodLiteral<"ambiguous">;
|
|
445
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
446
|
+
type: import("zod").ZodLiteral<"no-session">;
|
|
447
|
+
}, import("zod/v4/core").$strip>], "type">;
|
|
448
|
+
what: import("zod").ZodLiteral<"session">;
|
|
449
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
450
|
+
contexts: import("zod").ZodArray<import("zod").ZodString>;
|
|
451
|
+
current: import("zod").ZodString;
|
|
452
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
453
|
+
what: import("zod").ZodLiteral<"contexts">;
|
|
454
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
455
|
+
context: import("zod").ZodString;
|
|
456
|
+
orientation: import("zod").ZodEnum<{
|
|
457
|
+
PORTRAIT: "PORTRAIT";
|
|
458
|
+
LANDSCAPE: "LANDSCAPE";
|
|
459
|
+
}>;
|
|
460
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
461
|
+
pageSource: import("zod").ZodType<{
|
|
462
|
+
selectors: {
|
|
463
|
+
strategy: {
|
|
464
|
+
name: "xpath";
|
|
465
|
+
type: "unique" | "full-path" | "sibling-of" | "parent-of";
|
|
466
|
+
} | {
|
|
467
|
+
name: "ios-predicate";
|
|
468
|
+
} | {
|
|
469
|
+
hostSelector: string;
|
|
470
|
+
innerSelector: string;
|
|
471
|
+
name: "shadow";
|
|
472
|
+
};
|
|
473
|
+
value: string;
|
|
474
|
+
}[];
|
|
475
|
+
tag: string;
|
|
476
|
+
attributes?: {
|
|
477
|
+
bounds?: {
|
|
478
|
+
bottom: number;
|
|
479
|
+
left: number;
|
|
480
|
+
right: number;
|
|
481
|
+
top: number;
|
|
482
|
+
} | undefined;
|
|
483
|
+
rest?: Record<string, string> | undefined;
|
|
484
|
+
} | undefined;
|
|
485
|
+
} & {
|
|
486
|
+
children?: (({
|
|
487
|
+
selectors: {
|
|
488
|
+
strategy: {
|
|
489
|
+
name: "xpath";
|
|
490
|
+
type: "unique" | "full-path" | "sibling-of" | "parent-of";
|
|
491
|
+
} | {
|
|
492
|
+
name: "ios-predicate";
|
|
493
|
+
} | {
|
|
494
|
+
hostSelector: string;
|
|
495
|
+
innerSelector: string;
|
|
496
|
+
name: "shadow";
|
|
497
|
+
};
|
|
498
|
+
value: string;
|
|
499
|
+
}[];
|
|
500
|
+
tag: string;
|
|
501
|
+
attributes?: {
|
|
502
|
+
bounds?: {
|
|
503
|
+
bottom: number;
|
|
504
|
+
left: number;
|
|
505
|
+
right: number;
|
|
506
|
+
top: number;
|
|
507
|
+
} | undefined;
|
|
508
|
+
rest?: Record<string, string> | undefined;
|
|
509
|
+
} | undefined;
|
|
510
|
+
} & /*elided*/ any) | string)[];
|
|
511
|
+
}, unknown, import("zod/v4/core").$ZodTypeInternals<{
|
|
512
|
+
selectors: {
|
|
513
|
+
strategy: {
|
|
514
|
+
name: "xpath";
|
|
515
|
+
type: "unique" | "full-path" | "sibling-of" | "parent-of";
|
|
516
|
+
} | {
|
|
517
|
+
name: "ios-predicate";
|
|
518
|
+
} | {
|
|
519
|
+
hostSelector: string;
|
|
520
|
+
innerSelector: string;
|
|
521
|
+
name: "shadow";
|
|
522
|
+
};
|
|
523
|
+
value: string;
|
|
524
|
+
}[];
|
|
525
|
+
tag: string;
|
|
526
|
+
attributes?: {
|
|
527
|
+
bounds?: {
|
|
528
|
+
bottom: number;
|
|
529
|
+
left: number;
|
|
530
|
+
right: number;
|
|
531
|
+
top: number;
|
|
532
|
+
} | undefined;
|
|
533
|
+
rest?: Record<string, string> | undefined;
|
|
534
|
+
} | undefined;
|
|
535
|
+
} & {
|
|
536
|
+
children?: (({
|
|
537
|
+
selectors: {
|
|
538
|
+
strategy: {
|
|
539
|
+
name: "xpath";
|
|
540
|
+
type: "unique" | "full-path" | "sibling-of" | "parent-of";
|
|
541
|
+
} | {
|
|
542
|
+
name: "ios-predicate";
|
|
543
|
+
} | {
|
|
544
|
+
hostSelector: string;
|
|
545
|
+
innerSelector: string;
|
|
546
|
+
name: "shadow";
|
|
547
|
+
};
|
|
548
|
+
value: string;
|
|
549
|
+
}[];
|
|
550
|
+
tag: string;
|
|
551
|
+
attributes?: {
|
|
552
|
+
bounds?: {
|
|
553
|
+
bottom: number;
|
|
554
|
+
left: number;
|
|
555
|
+
right: number;
|
|
556
|
+
top: number;
|
|
557
|
+
} | undefined;
|
|
558
|
+
rest?: Record<string, string> | undefined;
|
|
559
|
+
} | undefined;
|
|
560
|
+
} & /*elided*/ any) | string)[];
|
|
561
|
+
}, unknown>>;
|
|
562
|
+
what: import("zod").ZodLiteral<"page">;
|
|
563
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
564
|
+
matches: import("zod").ZodArray<import("zod").ZodObject<{
|
|
565
|
+
attributes: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
|
|
566
|
+
bounds: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
567
|
+
bottom: import("zod").ZodNumber;
|
|
568
|
+
left: import("zod").ZodNumber;
|
|
569
|
+
right: import("zod").ZodNumber;
|
|
570
|
+
top: import("zod").ZodNumber;
|
|
571
|
+
}, import("zod/v4/core").$strip>>;
|
|
572
|
+
center: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
573
|
+
x: import("zod").ZodNumber;
|
|
574
|
+
y: import("zod").ZodNumber;
|
|
575
|
+
}, import("zod/v4/core").$strip>>;
|
|
576
|
+
selectors: import("zod").ZodArray<import("zod").ZodObject<{
|
|
577
|
+
strategy: import("zod").ZodUnion<readonly [import("zod").ZodObject<{
|
|
578
|
+
name: import("zod").ZodLiteral<"xpath">;
|
|
579
|
+
type: import("zod").ZodEnum<{
|
|
580
|
+
unique: "unique";
|
|
581
|
+
"full-path": "full-path";
|
|
582
|
+
"sibling-of": "sibling-of";
|
|
583
|
+
"parent-of": "parent-of";
|
|
584
|
+
}>;
|
|
585
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
586
|
+
name: import("zod").ZodLiteral<"ios-predicate">;
|
|
587
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
588
|
+
hostSelector: import("zod").ZodString;
|
|
589
|
+
innerSelector: import("zod").ZodString;
|
|
590
|
+
name: import("zod").ZodLiteral<"shadow">;
|
|
591
|
+
}, import("zod/v4/core").$strip>]>;
|
|
592
|
+
value: import("zod").ZodString;
|
|
593
|
+
}, import("zod/v4/core").$strip>>;
|
|
594
|
+
tag: import("zod").ZodString;
|
|
595
|
+
}, import("zod/v4/core").$strip>>;
|
|
596
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
597
|
+
what: import("zod").ZodLiteral<"elements">;
|
|
598
|
+
}, import("zod/v4/core").$strip>], "what">, import("zod").ZodObject<{
|
|
599
|
+
failureReason: import("zod").ZodEnum<{
|
|
600
|
+
"runner-unreachable": "runner-unreachable";
|
|
601
|
+
"invalid-selector": "invalid-selector";
|
|
602
|
+
"runner-is-not-mobile": "runner-is-not-mobile";
|
|
603
|
+
"screen-needs-a-run": "screen-needs-a-run";
|
|
604
|
+
"screen-not-ready": "screen-not-ready";
|
|
605
|
+
}>;
|
|
606
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
607
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
608
|
+
};
|
|
609
|
+
launch: {
|
|
610
|
+
readonly annotations: {
|
|
611
|
+
readonly destructiveHint: true;
|
|
612
|
+
readonly openWorldHint: false;
|
|
613
|
+
readonly readOnlyHint: false;
|
|
614
|
+
};
|
|
615
|
+
readonly description: "Launch an interactive runner on the caller's team under an id the caller chooses. Launching the same id again returns the runner already running rather than starting a second one, and the same id with a different runnerName is refused. A runner is not permanent: it terminates on its own after a period of inactivity, and launching the same id after that starts and bills a new runner — so read `alreadyRunning` to tell which happened. A success means the runner is answering: the call waits for the pod it started to come up, so the very next call to the runner reaches it. If the pod does not come up in time the call fails instead, leaving the runner running — launching the same id again attaches to it. After a successful launch, put the exact returned `url` in a normal user-visible assistant message so they can watch while the browser is driven. Tool output and internal reasoning do not count as sharing the link. When `alreadyRunning` is true the `url` is the same page, so share it again instead of assuming the caller still has it.";
|
|
616
|
+
readonly input: import("zod").ZodObject<{
|
|
617
|
+
id: import("zod").ZodString;
|
|
618
|
+
runnerName: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
619
|
+
basic: "basic";
|
|
620
|
+
playwright: "playwright";
|
|
621
|
+
android: "android";
|
|
622
|
+
ios: "ios";
|
|
623
|
+
}>>;
|
|
624
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
625
|
+
}, import("zod/v4/core").$strip>;
|
|
626
|
+
readonly kind: "write";
|
|
627
|
+
readonly name: "runner.launch";
|
|
628
|
+
readonly output: import("zod").ZodObject<{
|
|
629
|
+
gpuAccelerated: import("zod").ZodBoolean;
|
|
630
|
+
id: import("zod").ZodString;
|
|
631
|
+
runnerName: import("zod").ZodEnum<{
|
|
632
|
+
basic: "basic";
|
|
633
|
+
playwright: "playwright";
|
|
634
|
+
android: "android";
|
|
635
|
+
ios: "ios";
|
|
636
|
+
}>;
|
|
637
|
+
url: import("zod").ZodURL;
|
|
638
|
+
alreadyRunning: import("zod").ZodBoolean;
|
|
639
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
640
|
+
}, import("zod/v4/core").$strip>;
|
|
641
|
+
};
|
|
642
|
+
list: {
|
|
643
|
+
readonly annotations: {
|
|
644
|
+
readonly destructiveHint: false;
|
|
645
|
+
readonly openWorldHint: false;
|
|
646
|
+
readonly readOnlyHint: true;
|
|
647
|
+
};
|
|
648
|
+
readonly description: "List the runners running on the caller's team right now. A team API key already names the team and sends nothing; a credential bound to no single workspace names one in `workspaceId`. A runner that was terminated, or that terminated on its own after inactivity, is not listed, because the run system keeps no record of a runner once it is gone. This is a lookup: it never starts a runner, and it does not reset a runner's inactivity clock the way reading its journal does. It is how to find a runner launched from another machine or in an earlier session, when the id it was launched under is no longer at hand.";
|
|
649
|
+
readonly input: import("zod").ZodObject<{
|
|
650
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
651
|
+
}, import("zod/v4/core").$strip>;
|
|
652
|
+
readonly kind: "read";
|
|
653
|
+
readonly name: "runner.list";
|
|
654
|
+
readonly output: import("zod").ZodObject<{
|
|
655
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
656
|
+
runners: import("zod").ZodArray<import("zod").ZodObject<{
|
|
657
|
+
gpuAccelerated: import("zod").ZodBoolean;
|
|
658
|
+
id: import("zod").ZodString;
|
|
659
|
+
runnerName: import("zod").ZodEnum<{
|
|
660
|
+
basic: "basic";
|
|
661
|
+
playwright: "playwright";
|
|
662
|
+
android: "android";
|
|
663
|
+
ios: "ios";
|
|
664
|
+
}>;
|
|
665
|
+
url: import("zod").ZodURL;
|
|
666
|
+
}, import("zod/v4/core").$strip>>;
|
|
667
|
+
}, import("zod/v4/core").$strip>;
|
|
668
|
+
};
|
|
669
|
+
performAction: {
|
|
670
|
+
readonly annotations: {
|
|
671
|
+
readonly destructiveHint: true;
|
|
672
|
+
readonly openWorldHint: true;
|
|
673
|
+
readonly readOnlyHint: false;
|
|
674
|
+
};
|
|
675
|
+
readonly description: "Perform one raw browser action on an interactive runner: click, double_click, move, drag, scroll, keypress, type, or navigate. One action per request, and the runner serves one at a time. A success means the action took effect. `action-failed`, with a reason, if it reached the runner and did not take effect. On a runner image with a browser, the first action on a runner that has never run anything starts its browser and waits for it, so it can take up to a minute to answer — no `runner.runFlow` is needed before acting; if the browser is still starting when the wait runs out, the answer is `screen-not-ready` and retrying converges. On a mobile runner, the same `screen-needs-a-run` and `screen-not-ready` outcomes mean no Appium session has started yet, or it did not answer this instant; `runner.runFlow` is what starts one, same as a browser. `screen-needs-a-run` if the browser could not be started that way — usually a runner whose runs all finished without starting its desktop; call `runner.runFlow` with a flow that opens a browser. `screen-not-ready` if the runner has a screen that cannot serve this instant. Retry in a second or two: the desktop restarts when a run changes the display size, and it serves one see-or-act request at a time, so a screenshot or action already in flight is the usual reason. Do not submit a run to clear this — a run may restart the display and discard what is on it. `runner-has-no-screen` if this runner 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.";
|
|
676
|
+
readonly input: import("zod").ZodObject<{
|
|
677
|
+
action: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
678
|
+
button: import("zod").ZodLiteral<"left" | "right" | "wheel" | "back" | "forward">;
|
|
679
|
+
type: import("zod").ZodLiteral<"click">;
|
|
680
|
+
x: import("zod").ZodInt;
|
|
681
|
+
y: import("zod").ZodInt;
|
|
682
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
683
|
+
type: import("zod").ZodLiteral<"double_click">;
|
|
684
|
+
x: import("zod").ZodInt;
|
|
685
|
+
y: import("zod").ZodInt;
|
|
686
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
687
|
+
scroll_x: import("zod").ZodInt;
|
|
688
|
+
scroll_y: import("zod").ZodInt;
|
|
689
|
+
type: import("zod").ZodLiteral<"scroll">;
|
|
690
|
+
x: import("zod").ZodInt;
|
|
691
|
+
y: import("zod").ZodInt;
|
|
692
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
693
|
+
type: import("zod").ZodLiteral<"move">;
|
|
694
|
+
x: import("zod").ZodInt;
|
|
695
|
+
y: import("zod").ZodInt;
|
|
696
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
697
|
+
path: import("zod").ZodArray<import("zod").ZodObject<{
|
|
698
|
+
x: import("zod").ZodInt;
|
|
699
|
+
y: import("zod").ZodInt;
|
|
700
|
+
}, import("zod/v4/core").$strict>>;
|
|
701
|
+
type: import("zod").ZodLiteral<"drag">;
|
|
702
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
703
|
+
keys: import("zod").ZodArray<import("zod").ZodString>;
|
|
704
|
+
type: import("zod").ZodLiteral<"keypress">;
|
|
705
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
706
|
+
type: import("zod").ZodLiteral<"navigate">;
|
|
707
|
+
url: import("zod").ZodURL;
|
|
708
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
709
|
+
text: import("zod").ZodString;
|
|
710
|
+
type: import("zod").ZodLiteral<"type">;
|
|
711
|
+
}, import("zod/v4/core").$strict>], "type">;
|
|
712
|
+
id: import("zod").ZodString;
|
|
713
|
+
withScreenshot: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
714
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
715
|
+
}, import("zod/v4/core").$strip>;
|
|
716
|
+
readonly kind: "write";
|
|
717
|
+
readonly name: "runner.performAction";
|
|
718
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
719
|
+
imageJpegBase64: import("zod").ZodOptional<import("zod").ZodString>;
|
|
720
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
721
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
722
|
+
errorMessage: import("zod").ZodString;
|
|
723
|
+
failureReason: import("zod").ZodLiteral<"action-failed">;
|
|
724
|
+
imageJpegBase64: import("zod").ZodOptional<import("zod").ZodString>;
|
|
725
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
726
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
727
|
+
failureReason: import("zod").ZodEnum<{
|
|
728
|
+
"runner-unreachable": "runner-unreachable";
|
|
729
|
+
"screen-needs-a-run": "screen-needs-a-run";
|
|
730
|
+
"screen-not-ready": "screen-not-ready";
|
|
731
|
+
"runner-has-no-screen": "runner-has-no-screen";
|
|
732
|
+
"action-not-supported-on-mobile": "action-not-supported-on-mobile";
|
|
733
|
+
}>;
|
|
734
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
735
|
+
}, import("zod/v4/core").$strip>], "failureReason">], "outcome">;
|
|
736
|
+
};
|
|
737
|
+
performActions: {
|
|
738
|
+
readonly annotations: {
|
|
739
|
+
readonly destructiveHint: true;
|
|
740
|
+
readonly openWorldHint: true;
|
|
741
|
+
readonly readOnlyHint: false;
|
|
742
|
+
};
|
|
743
|
+
readonly description: "Perform a sequence of raw browser actions on an interactive runner in one request, one after another, and answer with what happened to each. A `success` means every action took effect. A `failure` names the first action that did not (`failedIndex`, `failureReason`), the last one that did (`lastCompletedIndex`), and whether actions were left unperformed (`stoppedEarly`); `results` has one entry per action reached, in order. Read `effect` on an entry before sending its action again: `performed` means the runner did it; `not-performed` means the runner answered that it did not take effect, though a `navigate` that timed out may still be loading; `unknown` means the runner stopped answering with the action in flight (`runner-unreachable`), or its screen went quiet mid-action (`action-unconfirmed`), and it may have taken effect — a click that submitted a form, say — so take a screenshot instead of repeating it. A sequence gets about a minute to start its actions; an action it did not reach in time is `out-of-time`, nothing after it was attempted, and the rest can go in a new request. Everything `runner.performAction` says about a runner that has never run anything, a mobile runner, and the `screen-needs-a-run`, `screen-not-ready`, `runner-has-no-screen` and `action-not-supported-on-mobile` reasons holds for each action here.";
|
|
744
|
+
readonly input: import("zod").ZodObject<{
|
|
745
|
+
actions: import("zod").ZodArray<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
746
|
+
button: import("zod").ZodLiteral<"left" | "right" | "wheel" | "back" | "forward">;
|
|
747
|
+
type: import("zod").ZodLiteral<"click">;
|
|
748
|
+
x: import("zod").ZodInt;
|
|
749
|
+
y: import("zod").ZodInt;
|
|
750
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
751
|
+
type: import("zod").ZodLiteral<"double_click">;
|
|
752
|
+
x: import("zod").ZodInt;
|
|
753
|
+
y: import("zod").ZodInt;
|
|
754
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
755
|
+
scroll_x: import("zod").ZodInt;
|
|
756
|
+
scroll_y: import("zod").ZodInt;
|
|
757
|
+
type: import("zod").ZodLiteral<"scroll">;
|
|
758
|
+
x: import("zod").ZodInt;
|
|
759
|
+
y: import("zod").ZodInt;
|
|
760
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
761
|
+
type: import("zod").ZodLiteral<"move">;
|
|
762
|
+
x: import("zod").ZodInt;
|
|
763
|
+
y: import("zod").ZodInt;
|
|
764
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
765
|
+
path: import("zod").ZodArray<import("zod").ZodObject<{
|
|
766
|
+
x: import("zod").ZodInt;
|
|
767
|
+
y: import("zod").ZodInt;
|
|
768
|
+
}, import("zod/v4/core").$strict>>;
|
|
769
|
+
type: import("zod").ZodLiteral<"drag">;
|
|
770
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
771
|
+
keys: import("zod").ZodArray<import("zod").ZodString>;
|
|
772
|
+
type: import("zod").ZodLiteral<"keypress">;
|
|
773
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
774
|
+
type: import("zod").ZodLiteral<"navigate">;
|
|
775
|
+
url: import("zod").ZodURL;
|
|
776
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
777
|
+
text: import("zod").ZodString;
|
|
778
|
+
type: import("zod").ZodLiteral<"type">;
|
|
779
|
+
}, import("zod/v4/core").$strict>], "type">>;
|
|
780
|
+
id: import("zod").ZodString;
|
|
781
|
+
screenshotMode: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
782
|
+
none: "none";
|
|
783
|
+
final: "final";
|
|
784
|
+
each: "each";
|
|
785
|
+
}>>;
|
|
786
|
+
stopOnFailure: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
787
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
788
|
+
}, import("zod/v4/core").$strip>;
|
|
789
|
+
readonly kind: "write";
|
|
790
|
+
readonly name: "runner.performActions";
|
|
791
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
792
|
+
imageJpegBase64: import("zod").ZodOptional<import("zod").ZodString>;
|
|
793
|
+
lastCompletedIndex: import("zod").ZodInt;
|
|
794
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
795
|
+
results: import("zod").ZodArray<import("zod").ZodObject<{
|
|
796
|
+
effect: import("zod").ZodLiteral<"performed">;
|
|
797
|
+
imageJpegBase64: import("zod").ZodOptional<import("zod").ZodString>;
|
|
798
|
+
index: import("zod").ZodInt;
|
|
799
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
800
|
+
}, import("zod/v4/core").$strip>>;
|
|
801
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
802
|
+
errorMessage: import("zod").ZodOptional<import("zod").ZodString>;
|
|
803
|
+
failedIndex: import("zod").ZodInt;
|
|
804
|
+
failureReason: import("zod").ZodEnum<{
|
|
805
|
+
"runner-unreachable": "runner-unreachable";
|
|
806
|
+
"screen-needs-a-run": "screen-needs-a-run";
|
|
807
|
+
"screen-not-ready": "screen-not-ready";
|
|
808
|
+
"action-failed": "action-failed";
|
|
809
|
+
"runner-has-no-screen": "runner-has-no-screen";
|
|
810
|
+
"action-not-supported-on-mobile": "action-not-supported-on-mobile";
|
|
811
|
+
"out-of-time": "out-of-time";
|
|
812
|
+
"action-unconfirmed": "action-unconfirmed";
|
|
813
|
+
}>;
|
|
814
|
+
imageJpegBase64: import("zod").ZodOptional<import("zod").ZodString>;
|
|
815
|
+
lastCompletedIndex: import("zod").ZodOptional<import("zod").ZodInt>;
|
|
816
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
817
|
+
results: import("zod").ZodArray<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
818
|
+
effect: import("zod").ZodLiteral<"performed">;
|
|
819
|
+
imageJpegBase64: import("zod").ZodOptional<import("zod").ZodString>;
|
|
820
|
+
index: import("zod").ZodInt;
|
|
821
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
822
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
823
|
+
effect: import("zod").ZodLiteral<"not-performed">;
|
|
824
|
+
errorMessage: import("zod").ZodString;
|
|
825
|
+
failureReason: import("zod").ZodLiteral<"action-failed">;
|
|
826
|
+
imageJpegBase64: import("zod").ZodOptional<import("zod").ZodString>;
|
|
827
|
+
index: import("zod").ZodInt;
|
|
828
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
829
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
830
|
+
effect: import("zod").ZodLiteral<"unknown">;
|
|
831
|
+
failureReason: import("zod").ZodLiteral<"runner-unreachable">;
|
|
832
|
+
index: import("zod").ZodInt;
|
|
833
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
834
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
835
|
+
effect: import("zod").ZodLiteral<"unknown">;
|
|
836
|
+
errorMessage: import("zod").ZodString;
|
|
837
|
+
failureReason: import("zod").ZodLiteral<"action-unconfirmed">;
|
|
838
|
+
index: import("zod").ZodInt;
|
|
839
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
840
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
841
|
+
effect: import("zod").ZodLiteral<"not-performed">;
|
|
842
|
+
failureReason: import("zod").ZodEnum<{
|
|
843
|
+
"screen-needs-a-run": "screen-needs-a-run";
|
|
844
|
+
"screen-not-ready": "screen-not-ready";
|
|
845
|
+
"runner-has-no-screen": "runner-has-no-screen";
|
|
846
|
+
"action-not-supported-on-mobile": "action-not-supported-on-mobile";
|
|
847
|
+
"out-of-time": "out-of-time";
|
|
848
|
+
}>;
|
|
849
|
+
index: import("zod").ZodInt;
|
|
850
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
851
|
+
}, import("zod/v4/core").$strip>], "failureReason">], "outcome">>;
|
|
852
|
+
stoppedEarly: import("zod").ZodBoolean;
|
|
853
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
854
|
+
};
|
|
855
|
+
promoteSnapshot: {
|
|
856
|
+
readonly annotations: {
|
|
857
|
+
readonly destructiveHint: true;
|
|
858
|
+
readonly openWorldHint: false;
|
|
859
|
+
readonly readOnlyHint: false;
|
|
860
|
+
};
|
|
861
|
+
readonly description: "Accept a run's screenshot as the new baseline for an image diff, on the runner that produced it. The two paths are the ones the diff reported, which reach a caller as an `image-diff-artifact` entry on the runner's `run-events` journal stream. `snapshot-not-found` if the run wrote no screenshot at that path, which usually means the paths were not taken from a diff this run produced; nothing is changed, so correcting the path and repeating is safe. `runner-cannot-promote-snapshots` on a runner that stores no screenshots. `runner-unreachable` if the runner could not be reached: it may still be starting, or it may have terminated after inactivity. A promotion that lands is not undone by promoting again, so a retry after an unreachable answer is safe.";
|
|
862
|
+
readonly input: import("zod").ZodObject<{
|
|
863
|
+
baselinePath: import("zod").ZodString;
|
|
864
|
+
id: import("zod").ZodString;
|
|
865
|
+
screenshotPath: import("zod").ZodString;
|
|
866
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
867
|
+
}, import("zod/v4/core").$strip>;
|
|
868
|
+
readonly kind: "write";
|
|
869
|
+
readonly name: "runner.promoteSnapshot";
|
|
870
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
871
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
872
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
873
|
+
failureReason: import("zod").ZodEnum<{
|
|
874
|
+
"runner-unreachable": "runner-unreachable";
|
|
875
|
+
"runner-cannot-promote-snapshots": "runner-cannot-promote-snapshots";
|
|
876
|
+
"snapshot-not-found": "snapshot-not-found";
|
|
877
|
+
}>;
|
|
878
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
879
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
880
|
+
};
|
|
881
|
+
readJournal: {
|
|
882
|
+
readonly annotations: {
|
|
883
|
+
readonly destructiveHint: false;
|
|
884
|
+
readonly openWorldHint: false;
|
|
885
|
+
readonly readOnlyHint: false;
|
|
886
|
+
};
|
|
887
|
+
readonly description: "Read a window of one of an interactive runner's journal streams — the newest few, everything after a cursor, or everything belonging to one run. This is how a flow run's outcome and output are followed: `run-status` settles it, `run-logs` and `run-events` carry what it produced, and `recorder` carries the browser actions the runner recorded. A read counts as activity, so working through history does not get the runner reaped underneath you. `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.";
|
|
888
|
+
readonly input: import("zod").ZodObject<{
|
|
889
|
+
runId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
890
|
+
sinceSequence: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
891
|
+
tail: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
892
|
+
id: import("zod").ZodString;
|
|
893
|
+
stream: import("zod").ZodString;
|
|
894
|
+
workspaceId: import("zod").ZodOptional<WorkspaceId>;
|
|
895
|
+
}, import("zod/v4/core").$strip>;
|
|
896
|
+
readonly kind: "read";
|
|
897
|
+
readonly name: "runner.readJournal";
|
|
898
|
+
readonly output: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
899
|
+
entries: import("zod").ZodArray<import("zod").ZodPipe<import("zod").ZodObject<{
|
|
900
|
+
payload: import("zod").ZodUnknown;
|
|
901
|
+
recordedAt: import("zod").ZodISODateTime;
|
|
902
|
+
sequence: import("zod").ZodNumber;
|
|
903
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodTransform<import("./journal.js").JournalEntry<unknown>, {
|
|
904
|
+
payload: unknown;
|
|
905
|
+
recordedAt: string;
|
|
906
|
+
sequence: number;
|
|
907
|
+
}>>>;
|
|
908
|
+
hasUnsearchedHistory: import("zod").ZodBoolean;
|
|
909
|
+
nextSequence: import("zod").ZodNumber;
|
|
910
|
+
oldestAvailableSequence: import("zod").ZodNumber;
|
|
911
|
+
outcome: import("zod").ZodLiteral<"success">;
|
|
912
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
913
|
+
failureReason: import("zod").ZodEnum<{
|
|
914
|
+
"runner-unreachable": "runner-unreachable";
|
|
915
|
+
}>;
|
|
916
|
+
outcome: import("zod").ZodLiteral<"failure">;
|
|
917
|
+
}, import("zod/v4/core").$strip>], "outcome">;
|
|
918
|
+
};
|
|
919
|
+
};
|
|
920
|
+
//# sourceMappingURL=catalog.d.ts.map
|