@qawolf/api-contracts 0.40.0 → 0.47.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 (61) hide show
  1. package/dist/v1/auth/config.d.ts +14 -6
  2. package/dist/v1/auth/config.d.ts.map +1 -1
  3. package/dist/v1/auth/config.js +15 -6
  4. package/dist/v1/auth/config.js.map +1 -1
  5. package/dist/v1/email/find.d.ts +42 -0
  6. package/dist/v1/email/find.d.ts.map +1 -0
  7. package/dist/v1/email/find.js +44 -0
  8. package/dist/v1/email/find.js.map +1 -0
  9. package/dist/v1/email/get.d.ts +52 -0
  10. package/dist/v1/email/get.d.ts.map +1 -0
  11. package/dist/v1/email/get.js +19 -0
  12. package/dist/v1/email/get.js.map +1 -0
  13. package/dist/v1/email/getAttachment.d.ts +23 -0
  14. package/dist/v1/email/getAttachment.d.ts.map +1 -0
  15. package/dist/v1/email/getAttachment.js +46 -0
  16. package/dist/v1/email/getAttachment.js.map +1 -0
  17. package/dist/v1/email/listAddresses.d.ts +23 -0
  18. package/dist/v1/email/listAddresses.d.ts.map +1 -0
  19. package/dist/v1/email/listAddresses.js +33 -0
  20. package/dist/v1/email/listAddresses.js.map +1 -0
  21. package/dist/v1/email/resource.d.ts +67 -0
  22. package/dist/v1/email/resource.d.ts.map +1 -0
  23. package/dist/v1/email/resource.js +56 -0
  24. package/dist/v1/email/resource.js.map +1 -0
  25. package/dist/v1/email/send.d.ts +46 -0
  26. package/dist/v1/email/send.d.ts.map +1 -0
  27. package/dist/v1/email/send.js +62 -0
  28. package/dist/v1/email/send.js.map +1 -0
  29. package/dist/v1/flow/addTag.d.ts +8 -1
  30. package/dist/v1/flow/addTag.d.ts.map +1 -1
  31. package/dist/v1/flow/addTag.js +10 -2
  32. package/dist/v1/flow/addTag.js.map +1 -1
  33. package/dist/v1/flow/removeTag.d.ts +26 -0
  34. package/dist/v1/flow/removeTag.d.ts.map +1 -0
  35. package/dist/v1/flow/removeTag.js +37 -0
  36. package/dist/v1/flow/removeTag.js.map +1 -0
  37. package/dist/v1/flow/skippedFlows.d.ts +19 -0
  38. package/dist/v1/flow/skippedFlows.d.ts.map +1 -0
  39. package/dist/v1/flow/skippedFlows.js +15 -0
  40. package/dist/v1/flow/skippedFlows.js.map +1 -0
  41. package/dist/v1/index.d.ts +507 -2
  42. package/dist/v1/index.d.ts.map +1 -1
  43. package/dist/v1/index.js +19 -0
  44. package/dist/v1/index.js.map +1 -1
  45. package/dist/v1/issue/removeFlows.d.ts +55 -0
  46. package/dist/v1/issue/removeFlows.d.ts.map +1 -0
  47. package/dist/v1/issue/removeFlows.js +27 -0
  48. package/dist/v1/issue/removeFlows.js.map +1 -0
  49. package/dist/v1/runner/browserAction.d.ts +2 -0
  50. package/dist/v1/runner/browserAction.d.ts.map +1 -1
  51. package/dist/v1/runner/browserAction.js +1 -1
  52. package/dist/v1/runner/browserAction.js.map +1 -1
  53. package/dist/v1/runner/list.d.ts +21 -0
  54. package/dist/v1/runner/list.d.ts.map +1 -0
  55. package/dist/v1/runner/list.js +19 -0
  56. package/dist/v1/runner/list.js.map +1 -0
  57. package/dist/v1/runnerReexports.d.ts +1 -1
  58. package/dist/v1/runnerReexports.d.ts.map +1 -1
  59. package/dist/v1/runnerReexports.js +1 -1
  60. package/dist/v1/runnerReexports.js.map +1 -1
  61. package/package.json +1 -1
@@ -2,6 +2,7 @@ import type { z } from "zod";
2
2
  export { type AgentSessionStatus, agentSessionStatusSchema, } from "./agent/status.js";
3
3
  export { type AuthConfigResponse, authConfigResponse } from "./auth/config.js";
4
4
  export type { AnyPublicApiContract, PublicApiContract, PublicApiContractKind, } from "./definition.js";
5
+ export { type EmailDirection, emailDirectionSchema } from "./email/resource.js";
5
6
  export { type IdentityResponse, identityResponse } from "./identity/index.js";
6
7
  export { type IdentityOrganizationsResponse, identityOrganizationsResponse, } from "./identity/organizations.js";
7
8
  export { type PublicIdSchema, type PublicIdSchemas, defaultIdSchemas, } from "./ids.js";
@@ -82,6 +83,164 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
82
83
  url: z.ZodURL;
83
84
  }, z.core.$strip>;
84
85
  };
86
+ email: {
87
+ find: {
88
+ readonly description: "List the workspace's inbox, or its sent mail, newest first. Read a message body with email.get.";
89
+ readonly input: z.ZodObject<{
90
+ cursor: z.ZodOptional<z.ZodString>;
91
+ limit: z.ZodDefault<z.ZodNumber>;
92
+ address: z.ZodOptional<z.ZodEmail>;
93
+ createdAfter: z.ZodOptional<z.ZodISODateTime>;
94
+ direction: z.ZodDefault<z.ZodEnum<{
95
+ inbound: "inbound";
96
+ outbound: "outbound";
97
+ }>>;
98
+ workspaceId: z.ZodOptional<WorkspaceId>;
99
+ }, z.core.$strip>;
100
+ readonly kind: "read";
101
+ readonly name: "email.find";
102
+ readonly output: z.ZodObject<{
103
+ emails: z.ZodArray<z.ZodObject<{
104
+ createdAt: z.ZodISODateTime;
105
+ direction: z.ZodEnum<{
106
+ inbound: "inbound";
107
+ outbound: "outbound";
108
+ }>;
109
+ from: z.ZodObject<{
110
+ address: z.ZodString;
111
+ name: z.ZodOptional<z.ZodString>;
112
+ }, z.core.$strip>;
113
+ id: z.ZodString;
114
+ subject: z.ZodOptional<z.ZodString>;
115
+ to: z.ZodArray<z.ZodObject<{
116
+ address: z.ZodString;
117
+ name: z.ZodOptional<z.ZodString>;
118
+ }, z.core.$strip>>;
119
+ url: z.ZodURL;
120
+ }, z.core.$strip>>;
121
+ nextCursor: z.ZodOptional<z.ZodString>;
122
+ }, z.core.$strip>;
123
+ };
124
+ get: {
125
+ readonly description: "Read one email of the workspace, with its plain text and HTML bodies. Use it to pull a sign-in code or a verification link out of a message.";
126
+ readonly input: z.ZodObject<{
127
+ id: z.ZodString;
128
+ workspaceId: z.ZodOptional<WorkspaceId>;
129
+ }, z.core.$strip>;
130
+ readonly kind: "read";
131
+ readonly name: "email.get";
132
+ readonly output: z.ZodObject<{
133
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
134
+ fileName: z.ZodString;
135
+ index: z.ZodNumber;
136
+ type: z.ZodOptional<z.ZodString>;
137
+ }, z.core.$strip>>>;
138
+ bcc: z.ZodOptional<z.ZodArray<z.ZodObject<{
139
+ address: z.ZodString;
140
+ name: z.ZodOptional<z.ZodString>;
141
+ }, z.core.$strip>>>;
142
+ cc: z.ZodOptional<z.ZodArray<z.ZodObject<{
143
+ address: z.ZodString;
144
+ name: z.ZodOptional<z.ZodString>;
145
+ }, z.core.$strip>>>;
146
+ html: z.ZodOptional<z.ZodString>;
147
+ links: z.ZodArray<z.ZodString>;
148
+ replyTo: z.ZodOptional<z.ZodArray<z.ZodObject<{
149
+ address: z.ZodString;
150
+ name: z.ZodOptional<z.ZodString>;
151
+ }, z.core.$strip>>>;
152
+ text: z.ZodOptional<z.ZodString>;
153
+ createdAt: z.ZodISODateTime;
154
+ direction: z.ZodEnum<{
155
+ inbound: "inbound";
156
+ outbound: "outbound";
157
+ }>;
158
+ from: z.ZodObject<{
159
+ address: z.ZodString;
160
+ name: z.ZodOptional<z.ZodString>;
161
+ }, z.core.$strip>;
162
+ id: z.ZodString;
163
+ subject: z.ZodOptional<z.ZodString>;
164
+ to: z.ZodArray<z.ZodObject<{
165
+ address: z.ZodString;
166
+ name: z.ZodOptional<z.ZodString>;
167
+ }, z.core.$strip>>;
168
+ url: z.ZodURL;
169
+ }, z.core.$strip>;
170
+ };
171
+ getAttachment: {
172
+ readonly description: "Read one attachment of a workspace email as base64 content, by file name or by position. email.get lists both.";
173
+ readonly input: z.ZodObject<{
174
+ fileName: z.ZodOptional<z.ZodString>;
175
+ id: z.ZodString;
176
+ index: z.ZodOptional<z.ZodNumber>;
177
+ workspaceId: z.ZodOptional<WorkspaceId>;
178
+ }, z.core.$strip>;
179
+ readonly kind: "read";
180
+ readonly name: "email.getAttachment";
181
+ readonly output: z.ZodObject<{
182
+ contentBase64: z.ZodString;
183
+ fileName: z.ZodString;
184
+ index: z.ZodNumber;
185
+ type: z.ZodOptional<z.ZodString>;
186
+ url: z.ZodURL;
187
+ }, z.core.$strip>;
188
+ };
189
+ listAddresses: {
190
+ readonly description: "List the workspace's inbox addresses, alphabetical. A flow can sign up with a plus-suffixed form of any of them, and email.find reads what arrives.";
191
+ readonly input: z.ZodObject<{
192
+ cursor: z.ZodOptional<z.ZodString>;
193
+ limit: z.ZodDefault<z.ZodNumber>;
194
+ workspaceId: z.ZodOptional<WorkspaceId>;
195
+ }, z.core.$strip>;
196
+ readonly kind: "read";
197
+ readonly name: "email.listAddresses";
198
+ readonly output: z.ZodObject<{
199
+ addresses: z.ZodArray<z.ZodObject<{
200
+ address: z.ZodString;
201
+ isDefault: z.ZodBoolean;
202
+ url: z.ZodURL;
203
+ }, z.core.$strip>>;
204
+ nextCursor: z.ZodOptional<z.ZodString>;
205
+ }, z.core.$strip>;
206
+ };
207
+ send: {
208
+ readonly description: "Send an email from one of the workspace's inbox addresses, for example to exercise a flow that reacts to incoming mail. Returns the sent email; read it back with email.get.";
209
+ readonly input: z.ZodObject<{
210
+ attachments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBase64>>;
211
+ bcc: z.ZodOptional<z.ZodArray<z.ZodEmail>>;
212
+ cc: z.ZodOptional<z.ZodArray<z.ZodEmail>>;
213
+ from: z.ZodOptional<z.ZodEmail>;
214
+ html: z.ZodOptional<z.ZodString>;
215
+ inReplyTo: z.ZodOptional<z.ZodString>;
216
+ replyTo: z.ZodOptional<z.ZodArray<z.ZodEmail>>;
217
+ subject: z.ZodString;
218
+ text: z.ZodOptional<z.ZodString>;
219
+ to: z.ZodArray<z.ZodEmail>;
220
+ workspaceId: z.ZodOptional<WorkspaceId>;
221
+ }, z.core.$strip>;
222
+ readonly kind: "write";
223
+ readonly name: "email.send";
224
+ readonly output: z.ZodObject<{
225
+ createdAt: z.ZodISODateTime;
226
+ direction: z.ZodEnum<{
227
+ inbound: "inbound";
228
+ outbound: "outbound";
229
+ }>;
230
+ from: z.ZodObject<{
231
+ address: z.ZodString;
232
+ name: z.ZodOptional<z.ZodString>;
233
+ }, z.core.$strip>;
234
+ id: z.ZodString;
235
+ subject: z.ZodOptional<z.ZodString>;
236
+ to: z.ZodArray<z.ZodObject<{
237
+ address: z.ZodString;
238
+ name: z.ZodOptional<z.ZodString>;
239
+ }, z.core.$strip>>;
240
+ url: z.ZodURL;
241
+ }, z.core.$strip>;
242
+ };
243
+ };
85
244
  environment: {
86
245
  create: {
87
246
  readonly description: "Create an environment on the caller's team and return it in the environment.get shape.";
@@ -292,7 +451,7 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
292
451
  };
293
452
  flow: {
294
453
  addTag: {
295
- readonly description: "Assign an existing tag to the selected flows. Create tags with tag.create.";
454
+ readonly description: "Assign an existing tag to the selected flows. Create tags with tag.create. Flows that already carry the tag are reported in skippedFlows.";
296
455
  readonly input: z.ZodObject<{
297
456
  flowIds: z.ZodArray<FlowId>;
298
457
  tagName: z.ZodString;
@@ -303,6 +462,13 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
303
462
  color: z.ZodString;
304
463
  name: z.ZodString;
305
464
  url: z.ZodURL;
465
+ skippedFlows: z.ZodArray<z.ZodObject<{
466
+ flowId: FlowId;
467
+ name: z.ZodString;
468
+ reason: z.ZodEnum<{
469
+ "already-tagged": "already-tagged";
470
+ }>;
471
+ }, z.core.$strip>>;
306
472
  }, z.core.$strip>;
307
473
  };
308
474
  list: {
@@ -329,6 +495,27 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
329
495
  }, z.core.$strip>>;
330
496
  }, z.core.$strip>;
331
497
  };
498
+ removeTag: {
499
+ readonly description: "Remove a tag from the selected flows. Succeeds whether or not each flow carried the tag; the flows that did not are reported in skippedFlows.";
500
+ readonly input: z.ZodObject<{
501
+ flowIds: z.ZodArray<FlowId>;
502
+ tagName: z.ZodString;
503
+ }, z.core.$strip>;
504
+ readonly kind: "write";
505
+ readonly name: "flow.removeTag";
506
+ readonly output: z.ZodObject<{
507
+ color: z.ZodString;
508
+ name: z.ZodString;
509
+ url: z.ZodURL;
510
+ skippedFlows: z.ZodArray<z.ZodObject<{
511
+ flowId: FlowId;
512
+ name: z.ZodString;
513
+ reason: z.ZodEnum<{
514
+ "not-tagged": "not-tagged";
515
+ }>;
516
+ }, z.core.$strip>>;
517
+ }, z.core.$strip>;
518
+ };
332
519
  update: {
333
520
  readonly description: "Move a flow between draft and active readiness. The other statuses shown in the app are derived and cannot be set.";
334
521
  readonly input: z.ZodObject<{
@@ -578,6 +765,53 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
578
765
  }, z.core.$strip>;
579
766
  }, z.core.$strip>;
580
767
  };
768
+ removeFlows: {
769
+ readonly description: string;
770
+ readonly input: z.ZodObject<{
771
+ flowIds: z.ZodArray<FlowId>;
772
+ issueId: IssueId;
773
+ }, z.core.$strip>;
774
+ readonly kind: "write";
775
+ readonly name: "issue.removeFlows";
776
+ readonly output: z.ZodObject<{
777
+ issue: z.ZodObject<{
778
+ coveredFlowIds: z.ZodArray<FlowId>;
779
+ createdAt: z.ZodCoercedDate<unknown>;
780
+ description: z.ZodString;
781
+ issueId: IssueId;
782
+ name: z.ZodString;
783
+ number: z.ZodNumber;
784
+ priority: z.ZodEnum<{
785
+ unprioritized: "unprioritized";
786
+ low: "low";
787
+ medium: "medium";
788
+ high: "high";
789
+ urgent: "urgent";
790
+ }>;
791
+ reproductions: z.ZodArray<z.ZodObject<{
792
+ environmentId: EnvironmentId;
793
+ firstReproducedInRunId: RunId;
794
+ flowId: FlowId;
795
+ isActive: z.ZodBoolean;
796
+ lastReproducedInRunId: RunId;
797
+ }, z.core.$strip>>;
798
+ status: z.ZodEnum<{
799
+ pending: "pending";
800
+ inProgress: "inProgress";
801
+ paused: "paused";
802
+ resolved: "resolved";
803
+ canceled: "canceled";
804
+ archived: "archived";
805
+ }>;
806
+ type: z.ZodEnum<{
807
+ bug: "bug";
808
+ coverageRequest: "coverageRequest";
809
+ maintenance: "maintenance";
810
+ }>;
811
+ url: z.ZodURL;
812
+ }, z.core.$strip>;
813
+ }, z.core.$strip>;
814
+ };
581
815
  update: {
582
816
  readonly description: "Update an issue owned by the caller's team. Omitted fields remain unchanged.";
583
817
  readonly input: z.ZodObject<{
@@ -1224,6 +1458,25 @@ export declare const makeContractsV1: <EnvironmentId extends PublicIdSchema, Flo
1224
1458
  outcome: z.ZodLiteral<"success">;
1225
1459
  }, z.core.$strip>;
1226
1460
  };
1461
+ list: {
1462
+ readonly description: "List the runners running on the caller's team right now. Takes no arguments: the API key already names the team. 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.";
1463
+ readonly input: z.ZodObject<{}, z.core.$strip>;
1464
+ readonly kind: "read";
1465
+ readonly name: "runner.list";
1466
+ readonly output: z.ZodObject<{
1467
+ outcome: z.ZodLiteral<"success">;
1468
+ runners: z.ZodArray<z.ZodObject<{
1469
+ gpuAccelerated: z.ZodBoolean;
1470
+ id: z.ZodString;
1471
+ runnerName: z.ZodEnum<{
1472
+ basic: "basic";
1473
+ playwright: "playwright";
1474
+ android: "android";
1475
+ ios: "ios";
1476
+ }>;
1477
+ }, z.core.$strip>>;
1478
+ }, z.core.$strip>;
1479
+ };
1227
1480
  performAction: {
1228
1481
  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.";
1229
1482
  readonly input: z.ZodObject<{
@@ -1533,6 +1786,164 @@ export declare const publicContractsV1: {
1533
1786
  url: z.ZodURL;
1534
1787
  }, z.core.$strip>;
1535
1788
  };
1789
+ email: {
1790
+ find: {
1791
+ readonly description: "List the workspace's inbox, or its sent mail, newest first. Read a message body with email.get.";
1792
+ readonly input: z.ZodObject<{
1793
+ cursor: z.ZodOptional<z.ZodString>;
1794
+ limit: z.ZodDefault<z.ZodNumber>;
1795
+ address: z.ZodOptional<z.ZodEmail>;
1796
+ createdAfter: z.ZodOptional<z.ZodISODateTime>;
1797
+ direction: z.ZodDefault<z.ZodEnum<{
1798
+ inbound: "inbound";
1799
+ outbound: "outbound";
1800
+ }>>;
1801
+ workspaceId: z.ZodOptional<PublicIdSchema>;
1802
+ }, z.core.$strip>;
1803
+ readonly kind: "read";
1804
+ readonly name: "email.find";
1805
+ readonly output: z.ZodObject<{
1806
+ emails: z.ZodArray<z.ZodObject<{
1807
+ createdAt: z.ZodISODateTime;
1808
+ direction: z.ZodEnum<{
1809
+ inbound: "inbound";
1810
+ outbound: "outbound";
1811
+ }>;
1812
+ from: z.ZodObject<{
1813
+ address: z.ZodString;
1814
+ name: z.ZodOptional<z.ZodString>;
1815
+ }, z.core.$strip>;
1816
+ id: z.ZodString;
1817
+ subject: z.ZodOptional<z.ZodString>;
1818
+ to: z.ZodArray<z.ZodObject<{
1819
+ address: z.ZodString;
1820
+ name: z.ZodOptional<z.ZodString>;
1821
+ }, z.core.$strip>>;
1822
+ url: z.ZodURL;
1823
+ }, z.core.$strip>>;
1824
+ nextCursor: z.ZodOptional<z.ZodString>;
1825
+ }, z.core.$strip>;
1826
+ };
1827
+ get: {
1828
+ readonly description: "Read one email of the workspace, with its plain text and HTML bodies. Use it to pull a sign-in code or a verification link out of a message.";
1829
+ readonly input: z.ZodObject<{
1830
+ id: z.ZodString;
1831
+ workspaceId: z.ZodOptional<PublicIdSchema>;
1832
+ }, z.core.$strip>;
1833
+ readonly kind: "read";
1834
+ readonly name: "email.get";
1835
+ readonly output: z.ZodObject<{
1836
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1837
+ fileName: z.ZodString;
1838
+ index: z.ZodNumber;
1839
+ type: z.ZodOptional<z.ZodString>;
1840
+ }, z.core.$strip>>>;
1841
+ bcc: z.ZodOptional<z.ZodArray<z.ZodObject<{
1842
+ address: z.ZodString;
1843
+ name: z.ZodOptional<z.ZodString>;
1844
+ }, z.core.$strip>>>;
1845
+ cc: z.ZodOptional<z.ZodArray<z.ZodObject<{
1846
+ address: z.ZodString;
1847
+ name: z.ZodOptional<z.ZodString>;
1848
+ }, z.core.$strip>>>;
1849
+ html: z.ZodOptional<z.ZodString>;
1850
+ links: z.ZodArray<z.ZodString>;
1851
+ replyTo: z.ZodOptional<z.ZodArray<z.ZodObject<{
1852
+ address: z.ZodString;
1853
+ name: z.ZodOptional<z.ZodString>;
1854
+ }, z.core.$strip>>>;
1855
+ text: z.ZodOptional<z.ZodString>;
1856
+ createdAt: z.ZodISODateTime;
1857
+ direction: z.ZodEnum<{
1858
+ inbound: "inbound";
1859
+ outbound: "outbound";
1860
+ }>;
1861
+ from: z.ZodObject<{
1862
+ address: z.ZodString;
1863
+ name: z.ZodOptional<z.ZodString>;
1864
+ }, z.core.$strip>;
1865
+ id: z.ZodString;
1866
+ subject: z.ZodOptional<z.ZodString>;
1867
+ to: z.ZodArray<z.ZodObject<{
1868
+ address: z.ZodString;
1869
+ name: z.ZodOptional<z.ZodString>;
1870
+ }, z.core.$strip>>;
1871
+ url: z.ZodURL;
1872
+ }, z.core.$strip>;
1873
+ };
1874
+ getAttachment: {
1875
+ readonly description: "Read one attachment of a workspace email as base64 content, by file name or by position. email.get lists both.";
1876
+ readonly input: z.ZodObject<{
1877
+ fileName: z.ZodOptional<z.ZodString>;
1878
+ id: z.ZodString;
1879
+ index: z.ZodOptional<z.ZodNumber>;
1880
+ workspaceId: z.ZodOptional<PublicIdSchema>;
1881
+ }, z.core.$strip>;
1882
+ readonly kind: "read";
1883
+ readonly name: "email.getAttachment";
1884
+ readonly output: z.ZodObject<{
1885
+ contentBase64: z.ZodString;
1886
+ fileName: z.ZodString;
1887
+ index: z.ZodNumber;
1888
+ type: z.ZodOptional<z.ZodString>;
1889
+ url: z.ZodURL;
1890
+ }, z.core.$strip>;
1891
+ };
1892
+ listAddresses: {
1893
+ readonly description: "List the workspace's inbox addresses, alphabetical. A flow can sign up with a plus-suffixed form of any of them, and email.find reads what arrives.";
1894
+ readonly input: z.ZodObject<{
1895
+ cursor: z.ZodOptional<z.ZodString>;
1896
+ limit: z.ZodDefault<z.ZodNumber>;
1897
+ workspaceId: z.ZodOptional<PublicIdSchema>;
1898
+ }, z.core.$strip>;
1899
+ readonly kind: "read";
1900
+ readonly name: "email.listAddresses";
1901
+ readonly output: z.ZodObject<{
1902
+ addresses: z.ZodArray<z.ZodObject<{
1903
+ address: z.ZodString;
1904
+ isDefault: z.ZodBoolean;
1905
+ url: z.ZodURL;
1906
+ }, z.core.$strip>>;
1907
+ nextCursor: z.ZodOptional<z.ZodString>;
1908
+ }, z.core.$strip>;
1909
+ };
1910
+ send: {
1911
+ readonly description: "Send an email from one of the workspace's inbox addresses, for example to exercise a flow that reacts to incoming mail. Returns the sent email; read it back with email.get.";
1912
+ readonly input: z.ZodObject<{
1913
+ attachments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBase64>>;
1914
+ bcc: z.ZodOptional<z.ZodArray<z.ZodEmail>>;
1915
+ cc: z.ZodOptional<z.ZodArray<z.ZodEmail>>;
1916
+ from: z.ZodOptional<z.ZodEmail>;
1917
+ html: z.ZodOptional<z.ZodString>;
1918
+ inReplyTo: z.ZodOptional<z.ZodString>;
1919
+ replyTo: z.ZodOptional<z.ZodArray<z.ZodEmail>>;
1920
+ subject: z.ZodString;
1921
+ text: z.ZodOptional<z.ZodString>;
1922
+ to: z.ZodArray<z.ZodEmail>;
1923
+ workspaceId: z.ZodOptional<PublicIdSchema>;
1924
+ }, z.core.$strip>;
1925
+ readonly kind: "write";
1926
+ readonly name: "email.send";
1927
+ readonly output: z.ZodObject<{
1928
+ createdAt: z.ZodISODateTime;
1929
+ direction: z.ZodEnum<{
1930
+ inbound: "inbound";
1931
+ outbound: "outbound";
1932
+ }>;
1933
+ from: z.ZodObject<{
1934
+ address: z.ZodString;
1935
+ name: z.ZodOptional<z.ZodString>;
1936
+ }, z.core.$strip>;
1937
+ id: z.ZodString;
1938
+ subject: z.ZodOptional<z.ZodString>;
1939
+ to: z.ZodArray<z.ZodObject<{
1940
+ address: z.ZodString;
1941
+ name: z.ZodOptional<z.ZodString>;
1942
+ }, z.core.$strip>>;
1943
+ url: z.ZodURL;
1944
+ }, z.core.$strip>;
1945
+ };
1946
+ };
1536
1947
  environment: {
1537
1948
  create: {
1538
1949
  readonly description: "Create an environment on the caller's team and return it in the environment.get shape.";
@@ -1743,7 +2154,7 @@ export declare const publicContractsV1: {
1743
2154
  };
1744
2155
  flow: {
1745
2156
  addTag: {
1746
- readonly description: "Assign an existing tag to the selected flows. Create tags with tag.create.";
2157
+ readonly description: "Assign an existing tag to the selected flows. Create tags with tag.create. Flows that already carry the tag are reported in skippedFlows.";
1747
2158
  readonly input: z.ZodObject<{
1748
2159
  flowIds: z.ZodArray<PublicIdSchema>;
1749
2160
  tagName: z.ZodString;
@@ -1754,6 +2165,13 @@ export declare const publicContractsV1: {
1754
2165
  color: z.ZodString;
1755
2166
  name: z.ZodString;
1756
2167
  url: z.ZodURL;
2168
+ skippedFlows: z.ZodArray<z.ZodObject<{
2169
+ flowId: PublicIdSchema;
2170
+ name: z.ZodString;
2171
+ reason: z.ZodEnum<{
2172
+ "already-tagged": "already-tagged";
2173
+ }>;
2174
+ }, z.core.$strip>>;
1757
2175
  }, z.core.$strip>;
1758
2176
  };
1759
2177
  list: {
@@ -1780,6 +2198,27 @@ export declare const publicContractsV1: {
1780
2198
  }, z.core.$strip>>;
1781
2199
  }, z.core.$strip>;
1782
2200
  };
2201
+ removeTag: {
2202
+ readonly description: "Remove a tag from the selected flows. Succeeds whether or not each flow carried the tag; the flows that did not are reported in skippedFlows.";
2203
+ readonly input: z.ZodObject<{
2204
+ flowIds: z.ZodArray<PublicIdSchema>;
2205
+ tagName: z.ZodString;
2206
+ }, z.core.$strip>;
2207
+ readonly kind: "write";
2208
+ readonly name: "flow.removeTag";
2209
+ readonly output: z.ZodObject<{
2210
+ color: z.ZodString;
2211
+ name: z.ZodString;
2212
+ url: z.ZodURL;
2213
+ skippedFlows: z.ZodArray<z.ZodObject<{
2214
+ flowId: PublicIdSchema;
2215
+ name: z.ZodString;
2216
+ reason: z.ZodEnum<{
2217
+ "not-tagged": "not-tagged";
2218
+ }>;
2219
+ }, z.core.$strip>>;
2220
+ }, z.core.$strip>;
2221
+ };
1783
2222
  update: {
1784
2223
  readonly description: "Move a flow between draft and active readiness. The other statuses shown in the app are derived and cannot be set.";
1785
2224
  readonly input: z.ZodObject<{
@@ -2029,6 +2468,53 @@ export declare const publicContractsV1: {
2029
2468
  }, z.core.$strip>;
2030
2469
  }, z.core.$strip>;
2031
2470
  };
2471
+ removeFlows: {
2472
+ readonly description: string;
2473
+ readonly input: z.ZodObject<{
2474
+ flowIds: z.ZodArray<PublicIdSchema>;
2475
+ issueId: PublicIdSchema;
2476
+ }, z.core.$strip>;
2477
+ readonly kind: "write";
2478
+ readonly name: "issue.removeFlows";
2479
+ readonly output: z.ZodObject<{
2480
+ issue: z.ZodObject<{
2481
+ coveredFlowIds: z.ZodArray<PublicIdSchema>;
2482
+ createdAt: z.ZodCoercedDate<unknown>;
2483
+ description: z.ZodString;
2484
+ issueId: PublicIdSchema;
2485
+ name: z.ZodString;
2486
+ number: z.ZodNumber;
2487
+ priority: z.ZodEnum<{
2488
+ unprioritized: "unprioritized";
2489
+ low: "low";
2490
+ medium: "medium";
2491
+ high: "high";
2492
+ urgent: "urgent";
2493
+ }>;
2494
+ reproductions: z.ZodArray<z.ZodObject<{
2495
+ environmentId: PublicIdSchema;
2496
+ firstReproducedInRunId: PublicIdSchema;
2497
+ flowId: PublicIdSchema;
2498
+ isActive: z.ZodBoolean;
2499
+ lastReproducedInRunId: PublicIdSchema;
2500
+ }, z.core.$strip>>;
2501
+ status: z.ZodEnum<{
2502
+ pending: "pending";
2503
+ inProgress: "inProgress";
2504
+ paused: "paused";
2505
+ resolved: "resolved";
2506
+ canceled: "canceled";
2507
+ archived: "archived";
2508
+ }>;
2509
+ type: z.ZodEnum<{
2510
+ bug: "bug";
2511
+ coverageRequest: "coverageRequest";
2512
+ maintenance: "maintenance";
2513
+ }>;
2514
+ url: z.ZodURL;
2515
+ }, z.core.$strip>;
2516
+ }, z.core.$strip>;
2517
+ };
2032
2518
  update: {
2033
2519
  readonly description: "Update an issue owned by the caller's team. Omitted fields remain unchanged.";
2034
2520
  readonly input: z.ZodObject<{
@@ -2675,6 +3161,25 @@ export declare const publicContractsV1: {
2675
3161
  outcome: z.ZodLiteral<"success">;
2676
3162
  }, z.core.$strip>;
2677
3163
  };
3164
+ list: {
3165
+ readonly description: "List the runners running on the caller's team right now. Takes no arguments: the API key already names the team. 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.";
3166
+ readonly input: z.ZodObject<{}, z.core.$strip>;
3167
+ readonly kind: "read";
3168
+ readonly name: "runner.list";
3169
+ readonly output: z.ZodObject<{
3170
+ outcome: z.ZodLiteral<"success">;
3171
+ runners: z.ZodArray<z.ZodObject<{
3172
+ gpuAccelerated: z.ZodBoolean;
3173
+ id: z.ZodString;
3174
+ runnerName: z.ZodEnum<{
3175
+ basic: "basic";
3176
+ playwright: "playwright";
3177
+ android: "android";
3178
+ ios: "ios";
3179
+ }>;
3180
+ }, z.core.$strip>>;
3181
+ }, z.core.$strip>;
3182
+ };
2678
3183
  performAction: {
2679
3184
  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.";
2680
3185
  readonly input: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EACL,KAAK,kBAAkB,EACvB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,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,6BAA6B,EAClC,6BAA6B,GAC9B,MAAM,6BAA6B,CAAC;AACrC,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;AAKrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAc5D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEvB,MAAM,UAAU,CAAC;AA6BlB,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,EAChD,aAAa,SAAS,cAAc,GAAG,cAAc,EAErD,KAAK,iBAAiB,CACpB,aAAa,EACb,MAAM,EACN,KAAK,EACL,YAAY,EACZ,OAAO,EACP,WAAW,EACX,QAAQ,EACR,aAAa,CACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DF,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,OAAO,EACL,KAAK,kBAAkB,EACvB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,KAAK,6BAA6B,EAClC,6BAA6B,GAC9B,MAAM,6BAA6B,CAAC;AACrC,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;AAKrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAoB5D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEvB,MAAM,UAAU,CAAC;AA+BlB,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,EAChD,aAAa,SAAS,cAAc,GAAG,cAAc,EAErD,KAAK,iBAAiB,CACpB,aAAa,EACb,MAAM,EACN,KAAK,EACL,YAAY,EACZ,OAAO,EACP,WAAW,EACX,QAAQ,EACR,aAAa,CACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEF,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAoC,CAAC"}