@asteroidai/cli 1.9.30 → 1.9.36
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/asteroid.js +1342 -44
- package/dist/core.js +1341 -43
- package/package.json +1 -1
package/dist/core.js
CHANGED
|
@@ -161,6 +161,363 @@ var COMMANDS = [
|
|
|
161
161
|
readOnly: true,
|
|
162
162
|
destructive: false
|
|
163
163
|
},
|
|
164
|
+
{
|
|
165
|
+
command: "custom-environment create",
|
|
166
|
+
tool: "custom_environments_create",
|
|
167
|
+
title: "Create custom environment",
|
|
168
|
+
description: "Create a custom environment: a saved machine a workflow boots on. Set a unique `name` and a `base`: a browser, or a Linux or Windows OS environment. Optionally whitelist `profiles`, override boot `settings`, and keep copies ready with `warmPool` or fresh logins with `warmCache` (not both). Bind it to a workflow with the version's `settings.custom_environment_id`.",
|
|
169
|
+
method: "POST",
|
|
170
|
+
path: "/agents/v2/custom-environments",
|
|
171
|
+
args: [],
|
|
172
|
+
query: [],
|
|
173
|
+
binary: false,
|
|
174
|
+
readOnly: false,
|
|
175
|
+
destructive: false,
|
|
176
|
+
body: {
|
|
177
|
+
required: true,
|
|
178
|
+
contentType: "application/json",
|
|
179
|
+
fields: [
|
|
180
|
+
{
|
|
181
|
+
name: "name",
|
|
182
|
+
flag: "name",
|
|
183
|
+
type: "string",
|
|
184
|
+
required: true,
|
|
185
|
+
description: "Name, unique within the organisation"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
name: "base",
|
|
189
|
+
flag: "base",
|
|
190
|
+
type: "json",
|
|
191
|
+
required: true,
|
|
192
|
+
description: "The base machine: a browser, or a Linux / Windows OS environment. For non-admins, an OS base's `snapshotName` must be one of the organisation's snapshots or a public one; admins may name any snapshot. Omit it for the default image.",
|
|
193
|
+
fields: [
|
|
194
|
+
{
|
|
195
|
+
name: "type",
|
|
196
|
+
flag: "type",
|
|
197
|
+
type: "string",
|
|
198
|
+
required: false,
|
|
199
|
+
description: "Type of execution environment",
|
|
200
|
+
enum: ["browser", "os"]
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
name: "config",
|
|
204
|
+
flag: "config",
|
|
205
|
+
type: "json",
|
|
206
|
+
required: false
|
|
207
|
+
}
|
|
208
|
+
]
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
name: "profiles",
|
|
212
|
+
flag: "profiles",
|
|
213
|
+
type: "json",
|
|
214
|
+
required: true,
|
|
215
|
+
description: "Ordered whitelist of the profile sources an execution bound to this environment may run as. Each row gets its own warm copies. With one row, a trigger that names neither a profile nor a pool defaults to that row; with several rows, the trigger must name an allowed profile, a member of an allowed pool, or an allowed pool. Empty means any profile or pool may be named, or none."
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
name: "settings",
|
|
219
|
+
flag: "settings",
|
|
220
|
+
type: "json",
|
|
221
|
+
required: false,
|
|
222
|
+
description: "Settings the environment boots with. Must match the base type. Absent inherits from the agent profile. A change applies to environments booted afterwards; warm members already booted keep the settings they booted with."
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
name: "warmPool",
|
|
226
|
+
flag: "warm-pool",
|
|
227
|
+
type: "json",
|
|
228
|
+
required: false,
|
|
229
|
+
description: "Warm pool configuration. Absent means the environment is not kept warm. Exclusive with warmCache and dedicated.",
|
|
230
|
+
fields: [
|
|
231
|
+
{
|
|
232
|
+
name: "targetSize",
|
|
233
|
+
flag: "target-size",
|
|
234
|
+
type: "integer",
|
|
235
|
+
required: false,
|
|
236
|
+
description: "Baseline number of warm environments to keep ready per profile row outside any scheduled window. An environment with no rows keeps this many in total. 0 drains the pool while no window is open; with no schedule, 0 drains it fully so keep-warm can be turned off or the environment deleted"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
name: "schedule",
|
|
240
|
+
flag: "schedule",
|
|
241
|
+
type: "json",
|
|
242
|
+
required: false,
|
|
243
|
+
description: "Hour windows that override the baseline target size. Absent means the baseline applies around the clock.",
|
|
244
|
+
fields: [
|
|
245
|
+
{
|
|
246
|
+
name: "timezone",
|
|
247
|
+
flag: "timezone",
|
|
248
|
+
type: "string",
|
|
249
|
+
required: false,
|
|
250
|
+
description: "IANA time zone the windows are evaluated in, such as Europe/London"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
name: "windows",
|
|
254
|
+
flag: "windows",
|
|
255
|
+
type: "json",
|
|
256
|
+
required: false
|
|
257
|
+
}
|
|
258
|
+
]
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
name: "maxAgeMins",
|
|
262
|
+
flag: "max-age-mins",
|
|
263
|
+
type: "integer",
|
|
264
|
+
required: false,
|
|
265
|
+
description: "Member max age in minutes, not a hard retirement time. The replacement boots ahead of it, by the pool's recent warmup time; the member stays claimable past it until the replacement is ready, for a grace of at most half the max age or 15 minutes."
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
name: "reuse",
|
|
269
|
+
flag: "reuse",
|
|
270
|
+
type: "json",
|
|
271
|
+
required: false,
|
|
272
|
+
description: "How long a pooled environment lives: retired on its first claim, or reused until maxAgeMins and its replacement is ready."
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
name: "initialization",
|
|
276
|
+
flag: "initialization",
|
|
277
|
+
type: "json",
|
|
278
|
+
required: false,
|
|
279
|
+
description: "Agent that initialises each member. Absent means a member is available as soon as it has booted.",
|
|
280
|
+
fields: [
|
|
281
|
+
{
|
|
282
|
+
name: "workflowId",
|
|
283
|
+
flag: "workflow-id",
|
|
284
|
+
type: "string",
|
|
285
|
+
required: false,
|
|
286
|
+
description: "The initialising workflow"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
name: "inputs",
|
|
290
|
+
flag: "inputs",
|
|
291
|
+
type: "json",
|
|
292
|
+
required: false,
|
|
293
|
+
description: "Fixed inputs for the initialising run",
|
|
294
|
+
record: "json"
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
name: "successOutcomes",
|
|
298
|
+
flag: "success-outcomes",
|
|
299
|
+
type: "string[]",
|
|
300
|
+
required: false,
|
|
301
|
+
description: "Outcomes of the initialising run that count as a success. A run that completes with any other outcome is treated as a failed run: a warm pool tears the member down, a warm cache records a failed login. Each must be an outcome of the agent's published version. Absent or empty means any completed run counts."
|
|
302
|
+
}
|
|
303
|
+
]
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
name: "keepAlive",
|
|
307
|
+
flag: "keep-alive",
|
|
308
|
+
type: "json",
|
|
309
|
+
required: false,
|
|
310
|
+
description: "Periodic probe that keeps an idle member's session alive and retires a member whose session is dead. Needs an Anchor browser base or a Daytona desktop base. Absent means members are never touched between warmup and retirement.",
|
|
311
|
+
fields: [
|
|
312
|
+
{
|
|
313
|
+
name: "intervalMins",
|
|
314
|
+
flag: "interval-mins",
|
|
315
|
+
type: "integer",
|
|
316
|
+
required: false,
|
|
317
|
+
description: "Minutes between probes of the same member, whether the last one passed or failed. The sweep runs once a minute, so 1 is the shortest effective interval. Must be below the pool's maxAgeMins."
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
name: "script",
|
|
321
|
+
flag: "script",
|
|
322
|
+
type: "string",
|
|
323
|
+
required: false,
|
|
324
|
+
description: "On a browser base: a JavaScript expression evaluated in the member's open page. `await` is allowed. It must evaluate, or resolve, to true while the session is live and to false once it is not. Example: `fetch('/api/session', {credentials: 'include'}).then(r => r.ok)`. It runs with no attached execution, so it must not navigate. On a Linux base: a bash script. On a Windows base: a PowerShell script. Exit code 0 means the session is live; any other exit code means it is dead."
|
|
325
|
+
}
|
|
326
|
+
]
|
|
327
|
+
}
|
|
328
|
+
]
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
name: "warmCache",
|
|
332
|
+
flag: "warm-cache",
|
|
333
|
+
type: "json",
|
|
334
|
+
required: false,
|
|
335
|
+
description: "Warm cache configuration. Absent means no login agent keeps the profiles' cookies fresh. Exclusive with warmPool and dedicated.",
|
|
336
|
+
fields: [
|
|
337
|
+
{
|
|
338
|
+
name: "intervalMins",
|
|
339
|
+
flag: "interval-mins",
|
|
340
|
+
type: "integer",
|
|
341
|
+
required: false,
|
|
342
|
+
description: "Minutes between logins of the same profile"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
name: "activeHours",
|
|
346
|
+
flag: "active-hours",
|
|
347
|
+
type: "json",
|
|
348
|
+
required: false,
|
|
349
|
+
description: "Hours during which logins run. Absent means around the clock.",
|
|
350
|
+
fields: [
|
|
351
|
+
{
|
|
352
|
+
name: "timezone",
|
|
353
|
+
flag: "timezone",
|
|
354
|
+
type: "string",
|
|
355
|
+
required: false,
|
|
356
|
+
description: "IANA time zone the windows are evaluated in, such as Europe/London"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
name: "windows",
|
|
360
|
+
flag: "windows",
|
|
361
|
+
type: "json",
|
|
362
|
+
required: false
|
|
363
|
+
}
|
|
364
|
+
]
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
name: "initialization",
|
|
368
|
+
flag: "initialization",
|
|
369
|
+
type: "json",
|
|
370
|
+
required: false,
|
|
371
|
+
description: "The login agent, run on each profile's own environment",
|
|
372
|
+
fields: [
|
|
373
|
+
{
|
|
374
|
+
name: "workflowId",
|
|
375
|
+
flag: "workflow-id",
|
|
376
|
+
type: "string",
|
|
377
|
+
required: false,
|
|
378
|
+
description: "The initialising workflow"
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
name: "inputs",
|
|
382
|
+
flag: "inputs",
|
|
383
|
+
type: "json",
|
|
384
|
+
required: false,
|
|
385
|
+
description: "Fixed inputs for the initialising run",
|
|
386
|
+
record: "json"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
name: "successOutcomes",
|
|
390
|
+
flag: "success-outcomes",
|
|
391
|
+
type: "string[]",
|
|
392
|
+
required: false,
|
|
393
|
+
description: "Outcomes of the initialising run that count as a success. A run that completes with any other outcome is treated as a failed run: a warm pool tears the member down, a warm cache records a failed login. Each must be an outcome of the agent's published version. Absent or empty means any completed run counts."
|
|
394
|
+
}
|
|
395
|
+
]
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
name: "executionsWriteBack",
|
|
399
|
+
flag: "executions-write-back",
|
|
400
|
+
type: "boolean",
|
|
401
|
+
required: false,
|
|
402
|
+
description: "Whether executions on the environment save the browser profile when they stop. Off by default: only the login agent saves it, so a run that ends logged out cannot overwrite the session for later runs. Must be on with an Anchor sticky IP, which saves every session."
|
|
403
|
+
}
|
|
404
|
+
]
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
name: "dedicated",
|
|
408
|
+
flag: "dedicated",
|
|
409
|
+
type: "json",
|
|
410
|
+
required: false,
|
|
411
|
+
description: "Admin only, and returned to admins only. Dedicated worker configuration. Absent means no workers are kept. Exclusive with warmPool and warmCache.",
|
|
412
|
+
fields: [
|
|
413
|
+
{
|
|
414
|
+
name: "workflowId",
|
|
415
|
+
flag: "workflow-id",
|
|
416
|
+
type: "string",
|
|
417
|
+
required: false,
|
|
418
|
+
description: "The workflow the workers keep loaded"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
name: "targetSize",
|
|
422
|
+
flag: "target-size",
|
|
423
|
+
type: "integer",
|
|
424
|
+
required: false,
|
|
425
|
+
description: "Baseline number of workers to keep ready outside any scheduled window. 0 drains the environment."
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
name: "schedule",
|
|
429
|
+
flag: "schedule",
|
|
430
|
+
type: "json",
|
|
431
|
+
required: false,
|
|
432
|
+
description: "Hour windows that override the baseline target size. Absent means the baseline applies around the clock.",
|
|
433
|
+
fields: [
|
|
434
|
+
{
|
|
435
|
+
name: "timezone",
|
|
436
|
+
flag: "timezone",
|
|
437
|
+
type: "string",
|
|
438
|
+
required: false,
|
|
439
|
+
description: "IANA time zone the windows are evaluated in, such as Europe/London"
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
name: "windows",
|
|
443
|
+
flag: "windows",
|
|
444
|
+
type: "json",
|
|
445
|
+
required: false
|
|
446
|
+
}
|
|
447
|
+
]
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
name: "maxAgeMins",
|
|
451
|
+
flag: "max-age-mins",
|
|
452
|
+
type: "integer",
|
|
453
|
+
required: false,
|
|
454
|
+
description: "Member max age in minutes. As for a warm pool, the replacement boots ahead of it."
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
name: "executionsPerWorker",
|
|
458
|
+
flag: "executions-per-worker",
|
|
459
|
+
type: "integer",
|
|
460
|
+
required: false,
|
|
461
|
+
description: "Executions one worker runs at once, each on its own page of the member's browser"
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
name: "initialization",
|
|
465
|
+
flag: "initialization",
|
|
466
|
+
type: "json",
|
|
467
|
+
required: false,
|
|
468
|
+
description: "Workflow that initialises each member before its worker loads, such as a sign-in. Absent means the worker loads as soon as the browser has booted.",
|
|
469
|
+
fields: [
|
|
470
|
+
{
|
|
471
|
+
name: "workflowId",
|
|
472
|
+
flag: "workflow-id",
|
|
473
|
+
type: "string",
|
|
474
|
+
required: false,
|
|
475
|
+
description: "The initialising workflow"
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
name: "inputs",
|
|
479
|
+
flag: "inputs",
|
|
480
|
+
type: "json",
|
|
481
|
+
required: false,
|
|
482
|
+
description: "Fixed inputs for the initialising run",
|
|
483
|
+
record: "json"
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
name: "successOutcomes",
|
|
487
|
+
flag: "success-outcomes",
|
|
488
|
+
type: "string[]",
|
|
489
|
+
required: false,
|
|
490
|
+
description: "Outcomes of the initialising run that count as a success. A run that completes with any other outcome is treated as a failed run: a warm pool tears the member down, a warm cache records a failed login. Each must be an outcome of the agent's published version. Absent or empty means any completed run counts."
|
|
491
|
+
}
|
|
492
|
+
]
|
|
493
|
+
}
|
|
494
|
+
]
|
|
495
|
+
}
|
|
496
|
+
],
|
|
497
|
+
files: [],
|
|
498
|
+
credentialOrganization: true
|
|
499
|
+
}
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
command: "custom-environment delete",
|
|
503
|
+
tool: "custom_environment_delete",
|
|
504
|
+
title: "Delete custom environment",
|
|
505
|
+
description: "Delete a custom environment. Workflows bound to it through `settings.custom_environment_id` can no longer boot. Refused while warm members exist: set `warmPool.targetSize` to 0 first and wait for them to retire.",
|
|
506
|
+
method: "DELETE",
|
|
507
|
+
path: "/agents/v2/custom-environments/{customEnvironmentId}",
|
|
508
|
+
args: [
|
|
509
|
+
{
|
|
510
|
+
name: "customEnvironmentId",
|
|
511
|
+
flag: "custom-environment-id",
|
|
512
|
+
type: "string",
|
|
513
|
+
required: true
|
|
514
|
+
}
|
|
515
|
+
],
|
|
516
|
+
query: [],
|
|
517
|
+
binary: false,
|
|
518
|
+
readOnly: false,
|
|
519
|
+
destructive: true
|
|
520
|
+
},
|
|
164
521
|
{
|
|
165
522
|
command: "custom-environment get",
|
|
166
523
|
tool: "custom_environment_get",
|
|
@@ -185,7 +542,7 @@ var COMMANDS = [
|
|
|
185
542
|
command: "custom-environment list",
|
|
186
543
|
tool: "custom_environments_list",
|
|
187
544
|
title: "List custom environments",
|
|
188
|
-
description: "List an organization's custom environments: the saved machines a workflow boots on, each with its environment type, snapshot, networking, allowed profiles and warm pool. Use an environment's `id` as a workflow version's `settings.custom_environment_id`.
|
|
545
|
+
description: "List an organization's custom environments: the saved machines a workflow boots on, each with its environment type, snapshot, networking, allowed profiles and warm pool. Use an environment's `id` as a workflow version's `settings.custom_environment_id`.",
|
|
189
546
|
method: "GET",
|
|
190
547
|
path: "/agents/v2/custom-environments",
|
|
191
548
|
args: [],
|
|
@@ -194,6 +551,370 @@ var COMMANDS = [
|
|
|
194
551
|
readOnly: true,
|
|
195
552
|
destructive: false
|
|
196
553
|
},
|
|
554
|
+
{
|
|
555
|
+
command: "custom-environment member list",
|
|
556
|
+
tool: "custom_environment_members_list",
|
|
557
|
+
title: "List custom environment members",
|
|
558
|
+
description: "List a custom environment's warm pool members: each pre-warmed environment's ID, state (warming, available, retiring), profile, attached executions and keep-alive health. Empty when the environment is not kept warm.",
|
|
559
|
+
method: "GET",
|
|
560
|
+
path: "/agents/v2/custom-environments/{customEnvironmentId}/members",
|
|
561
|
+
args: [
|
|
562
|
+
{
|
|
563
|
+
name: "customEnvironmentId",
|
|
564
|
+
flag: "custom-environment-id",
|
|
565
|
+
type: "string",
|
|
566
|
+
required: true
|
|
567
|
+
}
|
|
568
|
+
],
|
|
569
|
+
query: [],
|
|
570
|
+
binary: false,
|
|
571
|
+
readOnly: true,
|
|
572
|
+
destructive: false
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
command: "custom-environment update",
|
|
576
|
+
tool: "custom_environment_update",
|
|
577
|
+
title: "Update custom environment",
|
|
578
|
+
description: "Replace a custom environment's configuration. Send the full config, as `custom_environment_get` returns it: a field left out is cleared, except proxy passwords and a managed proxy's provider, which keep their stored values. Changes apply to environments booted afterwards. Turning keep-warm off is refused while members exist: set `warmPool.targetSize` to 0 first and wait for them to retire.",
|
|
579
|
+
method: "PATCH",
|
|
580
|
+
path: "/agents/v2/custom-environments/{customEnvironmentId}",
|
|
581
|
+
args: [
|
|
582
|
+
{
|
|
583
|
+
name: "customEnvironmentId",
|
|
584
|
+
flag: "custom-environment-id",
|
|
585
|
+
type: "string",
|
|
586
|
+
required: true
|
|
587
|
+
}
|
|
588
|
+
],
|
|
589
|
+
query: [],
|
|
590
|
+
binary: false,
|
|
591
|
+
readOnly: false,
|
|
592
|
+
destructive: false,
|
|
593
|
+
body: {
|
|
594
|
+
required: true,
|
|
595
|
+
contentType: "application/json",
|
|
596
|
+
fields: [
|
|
597
|
+
{
|
|
598
|
+
name: "name",
|
|
599
|
+
flag: "name",
|
|
600
|
+
type: "string",
|
|
601
|
+
required: true,
|
|
602
|
+
description: "Name, unique within the organisation"
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
name: "base",
|
|
606
|
+
flag: "base",
|
|
607
|
+
type: "json",
|
|
608
|
+
required: true,
|
|
609
|
+
description: "The base machine: a browser, or a Linux / Windows OS environment. For non-admins, an OS base's `snapshotName` must be one of the organisation's snapshots or a public one; admins may name any snapshot. Omit it for the default image.",
|
|
610
|
+
fields: [
|
|
611
|
+
{
|
|
612
|
+
name: "type",
|
|
613
|
+
flag: "type",
|
|
614
|
+
type: "string",
|
|
615
|
+
required: false,
|
|
616
|
+
description: "Type of execution environment",
|
|
617
|
+
enum: ["browser", "os"]
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
name: "config",
|
|
621
|
+
flag: "config",
|
|
622
|
+
type: "json",
|
|
623
|
+
required: false
|
|
624
|
+
}
|
|
625
|
+
]
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
name: "profiles",
|
|
629
|
+
flag: "profiles",
|
|
630
|
+
type: "json",
|
|
631
|
+
required: true,
|
|
632
|
+
description: "Ordered whitelist of the profile sources an execution bound to this environment may run as. Each row gets its own warm copies. With one row, a trigger that names neither a profile nor a pool defaults to that row; with several rows, the trigger must name an allowed profile, a member of an allowed pool, or an allowed pool. Empty means any profile or pool may be named, or none."
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
name: "settings",
|
|
636
|
+
flag: "settings",
|
|
637
|
+
type: "json",
|
|
638
|
+
required: false,
|
|
639
|
+
description: "Settings the environment boots with. Must match the base type. Absent inherits from the agent profile. A change applies to environments booted afterwards; warm members already booted keep the settings they booted with."
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
name: "warmPool",
|
|
643
|
+
flag: "warm-pool",
|
|
644
|
+
type: "json",
|
|
645
|
+
required: false,
|
|
646
|
+
description: "Warm pool configuration. Absent means the environment is not kept warm. Exclusive with warmCache and dedicated.",
|
|
647
|
+
fields: [
|
|
648
|
+
{
|
|
649
|
+
name: "targetSize",
|
|
650
|
+
flag: "target-size",
|
|
651
|
+
type: "integer",
|
|
652
|
+
required: false,
|
|
653
|
+
description: "Baseline number of warm environments to keep ready per profile row outside any scheduled window. An environment with no rows keeps this many in total. 0 drains the pool while no window is open; with no schedule, 0 drains it fully so keep-warm can be turned off or the environment deleted"
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
name: "schedule",
|
|
657
|
+
flag: "schedule",
|
|
658
|
+
type: "json",
|
|
659
|
+
required: false,
|
|
660
|
+
description: "Hour windows that override the baseline target size. Absent means the baseline applies around the clock.",
|
|
661
|
+
fields: [
|
|
662
|
+
{
|
|
663
|
+
name: "timezone",
|
|
664
|
+
flag: "timezone",
|
|
665
|
+
type: "string",
|
|
666
|
+
required: false,
|
|
667
|
+
description: "IANA time zone the windows are evaluated in, such as Europe/London"
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
name: "windows",
|
|
671
|
+
flag: "windows",
|
|
672
|
+
type: "json",
|
|
673
|
+
required: false
|
|
674
|
+
}
|
|
675
|
+
]
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
name: "maxAgeMins",
|
|
679
|
+
flag: "max-age-mins",
|
|
680
|
+
type: "integer",
|
|
681
|
+
required: false,
|
|
682
|
+
description: "Member max age in minutes, not a hard retirement time. The replacement boots ahead of it, by the pool's recent warmup time; the member stays claimable past it until the replacement is ready, for a grace of at most half the max age or 15 minutes."
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
name: "reuse",
|
|
686
|
+
flag: "reuse",
|
|
687
|
+
type: "json",
|
|
688
|
+
required: false,
|
|
689
|
+
description: "How long a pooled environment lives: retired on its first claim, or reused until maxAgeMins and its replacement is ready."
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
name: "initialization",
|
|
693
|
+
flag: "initialization",
|
|
694
|
+
type: "json",
|
|
695
|
+
required: false,
|
|
696
|
+
description: "Agent that initialises each member. Absent means a member is available as soon as it has booted.",
|
|
697
|
+
fields: [
|
|
698
|
+
{
|
|
699
|
+
name: "workflowId",
|
|
700
|
+
flag: "workflow-id",
|
|
701
|
+
type: "string",
|
|
702
|
+
required: false,
|
|
703
|
+
description: "The initialising workflow"
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
name: "inputs",
|
|
707
|
+
flag: "inputs",
|
|
708
|
+
type: "json",
|
|
709
|
+
required: false,
|
|
710
|
+
description: "Fixed inputs for the initialising run",
|
|
711
|
+
record: "json"
|
|
712
|
+
},
|
|
713
|
+
{
|
|
714
|
+
name: "successOutcomes",
|
|
715
|
+
flag: "success-outcomes",
|
|
716
|
+
type: "string[]",
|
|
717
|
+
required: false,
|
|
718
|
+
description: "Outcomes of the initialising run that count as a success. A run that completes with any other outcome is treated as a failed run: a warm pool tears the member down, a warm cache records a failed login. Each must be an outcome of the agent's published version. Absent or empty means any completed run counts."
|
|
719
|
+
}
|
|
720
|
+
]
|
|
721
|
+
},
|
|
722
|
+
{
|
|
723
|
+
name: "keepAlive",
|
|
724
|
+
flag: "keep-alive",
|
|
725
|
+
type: "json",
|
|
726
|
+
required: false,
|
|
727
|
+
description: "Periodic probe that keeps an idle member's session alive and retires a member whose session is dead. Needs an Anchor browser base or a Daytona desktop base. Absent means members are never touched between warmup and retirement.",
|
|
728
|
+
fields: [
|
|
729
|
+
{
|
|
730
|
+
name: "intervalMins",
|
|
731
|
+
flag: "interval-mins",
|
|
732
|
+
type: "integer",
|
|
733
|
+
required: false,
|
|
734
|
+
description: "Minutes between probes of the same member, whether the last one passed or failed. The sweep runs once a minute, so 1 is the shortest effective interval. Must be below the pool's maxAgeMins."
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
name: "script",
|
|
738
|
+
flag: "script",
|
|
739
|
+
type: "string",
|
|
740
|
+
required: false,
|
|
741
|
+
description: "On a browser base: a JavaScript expression evaluated in the member's open page. `await` is allowed. It must evaluate, or resolve, to true while the session is live and to false once it is not. Example: `fetch('/api/session', {credentials: 'include'}).then(r => r.ok)`. It runs with no attached execution, so it must not navigate. On a Linux base: a bash script. On a Windows base: a PowerShell script. Exit code 0 means the session is live; any other exit code means it is dead."
|
|
742
|
+
}
|
|
743
|
+
]
|
|
744
|
+
}
|
|
745
|
+
]
|
|
746
|
+
},
|
|
747
|
+
{
|
|
748
|
+
name: "warmCache",
|
|
749
|
+
flag: "warm-cache",
|
|
750
|
+
type: "json",
|
|
751
|
+
required: false,
|
|
752
|
+
description: "Warm cache configuration. Absent means no login agent keeps the profiles' cookies fresh. Exclusive with warmPool and dedicated.",
|
|
753
|
+
fields: [
|
|
754
|
+
{
|
|
755
|
+
name: "intervalMins",
|
|
756
|
+
flag: "interval-mins",
|
|
757
|
+
type: "integer",
|
|
758
|
+
required: false,
|
|
759
|
+
description: "Minutes between logins of the same profile"
|
|
760
|
+
},
|
|
761
|
+
{
|
|
762
|
+
name: "activeHours",
|
|
763
|
+
flag: "active-hours",
|
|
764
|
+
type: "json",
|
|
765
|
+
required: false,
|
|
766
|
+
description: "Hours during which logins run. Absent means around the clock.",
|
|
767
|
+
fields: [
|
|
768
|
+
{
|
|
769
|
+
name: "timezone",
|
|
770
|
+
flag: "timezone",
|
|
771
|
+
type: "string",
|
|
772
|
+
required: false,
|
|
773
|
+
description: "IANA time zone the windows are evaluated in, such as Europe/London"
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
name: "windows",
|
|
777
|
+
flag: "windows",
|
|
778
|
+
type: "json",
|
|
779
|
+
required: false
|
|
780
|
+
}
|
|
781
|
+
]
|
|
782
|
+
},
|
|
783
|
+
{
|
|
784
|
+
name: "initialization",
|
|
785
|
+
flag: "initialization",
|
|
786
|
+
type: "json",
|
|
787
|
+
required: false,
|
|
788
|
+
description: "The login agent, run on each profile's own environment",
|
|
789
|
+
fields: [
|
|
790
|
+
{
|
|
791
|
+
name: "workflowId",
|
|
792
|
+
flag: "workflow-id",
|
|
793
|
+
type: "string",
|
|
794
|
+
required: false,
|
|
795
|
+
description: "The initialising workflow"
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
name: "inputs",
|
|
799
|
+
flag: "inputs",
|
|
800
|
+
type: "json",
|
|
801
|
+
required: false,
|
|
802
|
+
description: "Fixed inputs for the initialising run",
|
|
803
|
+
record: "json"
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
name: "successOutcomes",
|
|
807
|
+
flag: "success-outcomes",
|
|
808
|
+
type: "string[]",
|
|
809
|
+
required: false,
|
|
810
|
+
description: "Outcomes of the initialising run that count as a success. A run that completes with any other outcome is treated as a failed run: a warm pool tears the member down, a warm cache records a failed login. Each must be an outcome of the agent's published version. Absent or empty means any completed run counts."
|
|
811
|
+
}
|
|
812
|
+
]
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
name: "executionsWriteBack",
|
|
816
|
+
flag: "executions-write-back",
|
|
817
|
+
type: "boolean",
|
|
818
|
+
required: false,
|
|
819
|
+
description: "Whether executions on the environment save the browser profile when they stop. Off by default: only the login agent saves it, so a run that ends logged out cannot overwrite the session for later runs. Must be on with an Anchor sticky IP, which saves every session."
|
|
820
|
+
}
|
|
821
|
+
]
|
|
822
|
+
},
|
|
823
|
+
{
|
|
824
|
+
name: "dedicated",
|
|
825
|
+
flag: "dedicated",
|
|
826
|
+
type: "json",
|
|
827
|
+
required: false,
|
|
828
|
+
description: "Admin only, and returned to admins only. Dedicated worker configuration. Absent means no workers are kept. Exclusive with warmPool and warmCache.",
|
|
829
|
+
fields: [
|
|
830
|
+
{
|
|
831
|
+
name: "workflowId",
|
|
832
|
+
flag: "workflow-id",
|
|
833
|
+
type: "string",
|
|
834
|
+
required: false,
|
|
835
|
+
description: "The workflow the workers keep loaded"
|
|
836
|
+
},
|
|
837
|
+
{
|
|
838
|
+
name: "targetSize",
|
|
839
|
+
flag: "target-size",
|
|
840
|
+
type: "integer",
|
|
841
|
+
required: false,
|
|
842
|
+
description: "Baseline number of workers to keep ready outside any scheduled window. 0 drains the environment."
|
|
843
|
+
},
|
|
844
|
+
{
|
|
845
|
+
name: "schedule",
|
|
846
|
+
flag: "schedule",
|
|
847
|
+
type: "json",
|
|
848
|
+
required: false,
|
|
849
|
+
description: "Hour windows that override the baseline target size. Absent means the baseline applies around the clock.",
|
|
850
|
+
fields: [
|
|
851
|
+
{
|
|
852
|
+
name: "timezone",
|
|
853
|
+
flag: "timezone",
|
|
854
|
+
type: "string",
|
|
855
|
+
required: false,
|
|
856
|
+
description: "IANA time zone the windows are evaluated in, such as Europe/London"
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
name: "windows",
|
|
860
|
+
flag: "windows",
|
|
861
|
+
type: "json",
|
|
862
|
+
required: false
|
|
863
|
+
}
|
|
864
|
+
]
|
|
865
|
+
},
|
|
866
|
+
{
|
|
867
|
+
name: "maxAgeMins",
|
|
868
|
+
flag: "max-age-mins",
|
|
869
|
+
type: "integer",
|
|
870
|
+
required: false,
|
|
871
|
+
description: "Member max age in minutes. As for a warm pool, the replacement boots ahead of it."
|
|
872
|
+
},
|
|
873
|
+
{
|
|
874
|
+
name: "executionsPerWorker",
|
|
875
|
+
flag: "executions-per-worker",
|
|
876
|
+
type: "integer",
|
|
877
|
+
required: false,
|
|
878
|
+
description: "Executions one worker runs at once, each on its own page of the member's browser"
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
name: "initialization",
|
|
882
|
+
flag: "initialization",
|
|
883
|
+
type: "json",
|
|
884
|
+
required: false,
|
|
885
|
+
description: "Workflow that initialises each member before its worker loads, such as a sign-in. Absent means the worker loads as soon as the browser has booted.",
|
|
886
|
+
fields: [
|
|
887
|
+
{
|
|
888
|
+
name: "workflowId",
|
|
889
|
+
flag: "workflow-id",
|
|
890
|
+
type: "string",
|
|
891
|
+
required: false,
|
|
892
|
+
description: "The initialising workflow"
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
name: "inputs",
|
|
896
|
+
flag: "inputs",
|
|
897
|
+
type: "json",
|
|
898
|
+
required: false,
|
|
899
|
+
description: "Fixed inputs for the initialising run",
|
|
900
|
+
record: "json"
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
name: "successOutcomes",
|
|
904
|
+
flag: "success-outcomes",
|
|
905
|
+
type: "string[]",
|
|
906
|
+
required: false,
|
|
907
|
+
description: "Outcomes of the initialising run that count as a success. A run that completes with any other outcome is treated as a failed run: a warm pool tears the member down, a warm cache records a failed login. Each must be an outcome of the agent's published version. Absent or empty means any completed run counts."
|
|
908
|
+
}
|
|
909
|
+
]
|
|
910
|
+
}
|
|
911
|
+
]
|
|
912
|
+
}
|
|
913
|
+
],
|
|
914
|
+
files: [],
|
|
915
|
+
credentialOrganization: false
|
|
916
|
+
}
|
|
917
|
+
},
|
|
197
918
|
{
|
|
198
919
|
command: "docs search",
|
|
199
920
|
tool: "search_docs",
|
|
@@ -1040,7 +1761,8 @@ var COMMANDS = [
|
|
|
1040
1761
|
flag: "inputs",
|
|
1041
1762
|
type: "json",
|
|
1042
1763
|
required: false,
|
|
1043
|
-
description: "Input variables for the new execution. Replaces the original inputs when set."
|
|
1764
|
+
description: "Input variables for the new execution. Replaces the original inputs when set.",
|
|
1765
|
+
record: "json"
|
|
1044
1766
|
},
|
|
1045
1767
|
{
|
|
1046
1768
|
name: "profileId",
|
|
@@ -1903,21 +2625,69 @@ var COMMANDS = [
|
|
|
1903
2625
|
name: "inputs",
|
|
1904
2626
|
flag: "inputs",
|
|
1905
2627
|
type: "json",
|
|
1906
|
-
required: false
|
|
2628
|
+
required: false,
|
|
2629
|
+
record: "json"
|
|
1907
2630
|
},
|
|
1908
2631
|
{
|
|
1909
2632
|
name: "batchSource",
|
|
1910
2633
|
flag: "batch-source",
|
|
1911
2634
|
type: "json",
|
|
1912
2635
|
required: false,
|
|
1913
|
-
description: "Set to make each tick create a batch from a spreadsheet instead of one execution"
|
|
2636
|
+
description: "Set to make each tick create a batch from a spreadsheet instead of one execution",
|
|
2637
|
+
fields: [
|
|
2638
|
+
{
|
|
2639
|
+
name: "sheetUrl",
|
|
2640
|
+
flag: "sheet-url",
|
|
2641
|
+
type: "string",
|
|
2642
|
+
required: false,
|
|
2643
|
+
description: "Google Sheets URL. The gid selects the tab; without one the first tab is used."
|
|
2644
|
+
},
|
|
2645
|
+
{
|
|
2646
|
+
name: "columnMappings",
|
|
2647
|
+
flag: "column-mappings",
|
|
2648
|
+
type: "json",
|
|
2649
|
+
required: false,
|
|
2650
|
+
description: "Maps a sheet column header to the workflow input it fills. Unmapped columns are ignored.",
|
|
2651
|
+
record: "string"
|
|
2652
|
+
},
|
|
2653
|
+
{
|
|
2654
|
+
name: "requiredInputs",
|
|
2655
|
+
flag: "required-inputs",
|
|
2656
|
+
type: "string[]",
|
|
2657
|
+
required: false,
|
|
2658
|
+
description: "Inputs a row must supply non-empty to count as valid. Rows missing any of them\nare skipped for that tick rather than failing the whole run."
|
|
2659
|
+
},
|
|
2660
|
+
{
|
|
2661
|
+
name: "config",
|
|
2662
|
+
flag: "config",
|
|
2663
|
+
type: "json",
|
|
2664
|
+
required: false,
|
|
2665
|
+
description: "How the resulting batch paces its executions"
|
|
2666
|
+
}
|
|
2667
|
+
]
|
|
1914
2668
|
},
|
|
1915
2669
|
{
|
|
1916
2670
|
name: "executionOptions",
|
|
1917
2671
|
flag: "execution-options",
|
|
1918
2672
|
type: "json",
|
|
1919
2673
|
required: false,
|
|
1920
|
-
description: "Per-execution runtime options applied to every run this schedule triggers."
|
|
2674
|
+
description: "Per-execution runtime options applied to every run this schedule triggers.",
|
|
2675
|
+
fields: [
|
|
2676
|
+
{
|
|
2677
|
+
name: "variantKey",
|
|
2678
|
+
flag: "variant-key",
|
|
2679
|
+
type: "string",
|
|
2680
|
+
required: false,
|
|
2681
|
+
description: "Identifies which variant this execution is for, scoping its shared files and scripts to a per-variant subdirectory under each node's shared folder. It does not change which workflow or version runs. Normalised to a filesystem-safe slug by the server. Requires the workflow to have `variant_mode` enabled, and a variant-mode workflow requires it on every execution."
|
|
2682
|
+
},
|
|
2683
|
+
{
|
|
2684
|
+
name: "softTimeoutMins",
|
|
2685
|
+
flag: "soft-timeout-mins",
|
|
2686
|
+
type: "integer",
|
|
2687
|
+
required: false,
|
|
2688
|
+
description: "Soft timeout in minutes. When the execution has been running longer than this value, a message is injected on every subsequent step urging the agent to wrap up and produce output. Must be greater than 0 and less than the agent's hard timeout (max_timeout_mins)."
|
|
2689
|
+
}
|
|
2690
|
+
]
|
|
1921
2691
|
}
|
|
1922
2692
|
],
|
|
1923
2693
|
files: [],
|
|
@@ -2098,14 +2868,46 @@ var COMMANDS = [
|
|
|
2098
2868
|
name: "inputs",
|
|
2099
2869
|
flag: "inputs",
|
|
2100
2870
|
type: "json",
|
|
2101
|
-
required: false
|
|
2871
|
+
required: false,
|
|
2872
|
+
record: "json"
|
|
2102
2873
|
},
|
|
2103
2874
|
{
|
|
2104
2875
|
name: "batchSource",
|
|
2105
2876
|
flag: "batch-source",
|
|
2106
2877
|
type: "json",
|
|
2107
2878
|
required: false,
|
|
2108
|
-
description: "Replaces the batch source. Omit to leave it unchanged; use clearBatchSource to remove it."
|
|
2879
|
+
description: "Replaces the batch source. Omit to leave it unchanged; use clearBatchSource to remove it.",
|
|
2880
|
+
fields: [
|
|
2881
|
+
{
|
|
2882
|
+
name: "sheetUrl",
|
|
2883
|
+
flag: "sheet-url",
|
|
2884
|
+
type: "string",
|
|
2885
|
+
required: false,
|
|
2886
|
+
description: "Google Sheets URL. The gid selects the tab; without one the first tab is used."
|
|
2887
|
+
},
|
|
2888
|
+
{
|
|
2889
|
+
name: "columnMappings",
|
|
2890
|
+
flag: "column-mappings",
|
|
2891
|
+
type: "json",
|
|
2892
|
+
required: false,
|
|
2893
|
+
description: "Maps a sheet column header to the workflow input it fills. Unmapped columns are ignored.",
|
|
2894
|
+
record: "string"
|
|
2895
|
+
},
|
|
2896
|
+
{
|
|
2897
|
+
name: "requiredInputs",
|
|
2898
|
+
flag: "required-inputs",
|
|
2899
|
+
type: "string[]",
|
|
2900
|
+
required: false,
|
|
2901
|
+
description: "Inputs a row must supply non-empty to count as valid. Rows missing any of them\nare skipped for that tick rather than failing the whole run."
|
|
2902
|
+
},
|
|
2903
|
+
{
|
|
2904
|
+
name: "config",
|
|
2905
|
+
flag: "config",
|
|
2906
|
+
type: "json",
|
|
2907
|
+
required: false,
|
|
2908
|
+
description: "How the resulting batch paces its executions"
|
|
2909
|
+
}
|
|
2910
|
+
]
|
|
2109
2911
|
},
|
|
2110
2912
|
{
|
|
2111
2913
|
name: "clearBatchSource",
|
|
@@ -2126,7 +2928,23 @@ var COMMANDS = [
|
|
|
2126
2928
|
flag: "execution-options",
|
|
2127
2929
|
type: "json",
|
|
2128
2930
|
required: false,
|
|
2129
|
-
description: "Per-execution runtime options applied to every run this schedule triggers. Replaces the stored options in full, so send every field you want to keep."
|
|
2931
|
+
description: "Per-execution runtime options applied to every run this schedule triggers. Replaces the stored options in full, so send every field you want to keep.",
|
|
2932
|
+
fields: [
|
|
2933
|
+
{
|
|
2934
|
+
name: "variantKey",
|
|
2935
|
+
flag: "variant-key",
|
|
2936
|
+
type: "string",
|
|
2937
|
+
required: false,
|
|
2938
|
+
description: "Identifies which variant this execution is for, scoping its shared files and scripts to a per-variant subdirectory under each node's shared folder. It does not change which workflow or version runs. Normalised to a filesystem-safe slug by the server. Requires the workflow to have `variant_mode` enabled, and a variant-mode workflow requires it on every execution."
|
|
2939
|
+
},
|
|
2940
|
+
{
|
|
2941
|
+
name: "softTimeoutMins",
|
|
2942
|
+
flag: "soft-timeout-mins",
|
|
2943
|
+
type: "integer",
|
|
2944
|
+
required: false,
|
|
2945
|
+
description: "Soft timeout in minutes. When the execution has been running longer than this value, a message is injected on every subsequent step urging the agent to wrap up and produce output. Must be greater than 0 and less than the agent's hard timeout (max_timeout_mins)."
|
|
2946
|
+
}
|
|
2947
|
+
]
|
|
2130
2948
|
}
|
|
2131
2949
|
],
|
|
2132
2950
|
files: [],
|
|
@@ -2195,14 +3013,16 @@ var COMMANDS = [
|
|
|
2195
3013
|
name: "inputs",
|
|
2196
3014
|
flag: "inputs",
|
|
2197
3015
|
type: "json",
|
|
2198
|
-
required: false
|
|
3016
|
+
required: false,
|
|
3017
|
+
record: "json"
|
|
2199
3018
|
},
|
|
2200
3019
|
{
|
|
2201
3020
|
name: "metadata",
|
|
2202
3021
|
flag: "metadata",
|
|
2203
3022
|
type: "json",
|
|
2204
3023
|
required: false,
|
|
2205
|
-
description: "String key/value pairs to label and filter executions."
|
|
3024
|
+
description: "String key/value pairs to label and filter executions.",
|
|
3025
|
+
record: "string"
|
|
2206
3026
|
},
|
|
2207
3027
|
{
|
|
2208
3028
|
name: "executeAt",
|
|
@@ -2216,7 +3036,23 @@ var COMMANDS = [
|
|
|
2216
3036
|
flag: "execution-options",
|
|
2217
3037
|
type: "json",
|
|
2218
3038
|
required: false,
|
|
2219
|
-
description: "Per-execution runtime options applied when this execution is triggered."
|
|
3039
|
+
description: "Per-execution runtime options applied when this execution is triggered.",
|
|
3040
|
+
fields: [
|
|
3041
|
+
{
|
|
3042
|
+
name: "variantKey",
|
|
3043
|
+
flag: "variant-key",
|
|
3044
|
+
type: "string",
|
|
3045
|
+
required: false,
|
|
3046
|
+
description: "Identifies which variant this execution is for, scoping its shared files and scripts to a per-variant subdirectory under each node's shared folder. It does not change which workflow or version runs. Normalised to a filesystem-safe slug by the server. Requires the workflow to have `variant_mode` enabled, and a variant-mode workflow requires it on every execution."
|
|
3047
|
+
},
|
|
3048
|
+
{
|
|
3049
|
+
name: "softTimeoutMins",
|
|
3050
|
+
flag: "soft-timeout-mins",
|
|
3051
|
+
type: "integer",
|
|
3052
|
+
required: false,
|
|
3053
|
+
description: "Soft timeout in minutes. When the execution has been running longer than this value, a message is injected on every subsequent step urging the agent to wrap up and produce output. Must be greater than 0 and less than the agent's hard timeout (max_timeout_mins)."
|
|
3054
|
+
}
|
|
3055
|
+
]
|
|
2220
3056
|
}
|
|
2221
3057
|
],
|
|
2222
3058
|
files: [],
|
|
@@ -2347,7 +3183,8 @@ var COMMANDS = [
|
|
|
2347
3183
|
name: "schema",
|
|
2348
3184
|
flag: "schema",
|
|
2349
3185
|
type: "json",
|
|
2350
|
-
required: true
|
|
3186
|
+
required: true,
|
|
3187
|
+
record: "json"
|
|
2351
3188
|
}
|
|
2352
3189
|
],
|
|
2353
3190
|
files: [],
|
|
@@ -2465,7 +3302,51 @@ var COMMANDS = [
|
|
|
2465
3302
|
flag: "field",
|
|
2466
3303
|
type: "json",
|
|
2467
3304
|
required: true,
|
|
2468
|
-
description: "Write shape for a field. The server derives key from label."
|
|
3305
|
+
description: "Write shape for a field. The server derives key from label.",
|
|
3306
|
+
fields: [
|
|
3307
|
+
{
|
|
3308
|
+
name: "type",
|
|
3309
|
+
flag: "type",
|
|
3310
|
+
type: "string",
|
|
3311
|
+
required: false,
|
|
3312
|
+
description: "Type of a vault field. Sensitivity is derived from the type: username, email, url, phone, text, card_expiry, and cardholder_name are readable; password, hidden, totp_seed, api_key, card_number, and card_cvv are write-only. There is no separate hidden flag.",
|
|
3313
|
+
enum: [
|
|
3314
|
+
"username",
|
|
3315
|
+
"email",
|
|
3316
|
+
"url",
|
|
3317
|
+
"phone",
|
|
3318
|
+
"text",
|
|
3319
|
+
"password",
|
|
3320
|
+
"hidden",
|
|
3321
|
+
"totp_seed",
|
|
3322
|
+
"api_key",
|
|
3323
|
+
"card_number",
|
|
3324
|
+
"card_expiry",
|
|
3325
|
+
"card_cvv",
|
|
3326
|
+
"cardholder_name"
|
|
3327
|
+
]
|
|
3328
|
+
},
|
|
3329
|
+
{
|
|
3330
|
+
name: "label",
|
|
3331
|
+
flag: "label",
|
|
3332
|
+
type: "string",
|
|
3333
|
+
required: false,
|
|
3334
|
+
description: "Human label shown in forms. The field key is UPPER_SNAKE of this label."
|
|
3335
|
+
},
|
|
3336
|
+
{
|
|
3337
|
+
name: "required",
|
|
3338
|
+
flag: "required",
|
|
3339
|
+
type: "boolean",
|
|
3340
|
+
required: false
|
|
3341
|
+
},
|
|
3342
|
+
{
|
|
3343
|
+
name: "hint",
|
|
3344
|
+
flag: "hint",
|
|
3345
|
+
type: "string",
|
|
3346
|
+
required: false,
|
|
3347
|
+
description: "Optional guidance shown next to the field, copied from catalog credentials when generating masters."
|
|
3348
|
+
}
|
|
3349
|
+
]
|
|
2469
3350
|
},
|
|
2470
3351
|
{
|
|
2471
3352
|
name: "value",
|
|
@@ -3313,7 +4194,115 @@ var COMMANDS = [
|
|
|
3313
4194
|
flag: "version",
|
|
3314
4195
|
type: "json",
|
|
3315
4196
|
required: false,
|
|
3316
|
-
description: "The first version of the workflow. Omit it to start from a blank workflow with a single start node."
|
|
4197
|
+
description: "The first version of the workflow. Omit it to start from a blank workflow with a single start node.",
|
|
4198
|
+
fields: [
|
|
4199
|
+
{
|
|
4200
|
+
name: "parentId",
|
|
4201
|
+
flag: "parent-id",
|
|
4202
|
+
type: "string",
|
|
4203
|
+
required: false,
|
|
4204
|
+
description: "Optional parent workflow ID to derive from"
|
|
4205
|
+
},
|
|
4206
|
+
{
|
|
4207
|
+
name: "rules",
|
|
4208
|
+
flag: "rules",
|
|
4209
|
+
type: "string",
|
|
4210
|
+
required: false
|
|
4211
|
+
},
|
|
4212
|
+
{
|
|
4213
|
+
name: "graph",
|
|
4214
|
+
flag: "graph",
|
|
4215
|
+
type: "json",
|
|
4216
|
+
required: false,
|
|
4217
|
+
fields: [
|
|
4218
|
+
{
|
|
4219
|
+
name: "nodes",
|
|
4220
|
+
flag: "nodes",
|
|
4221
|
+
type: "json",
|
|
4222
|
+
required: false
|
|
4223
|
+
},
|
|
4224
|
+
{
|
|
4225
|
+
name: "transitions",
|
|
4226
|
+
flag: "transitions",
|
|
4227
|
+
type: "json",
|
|
4228
|
+
required: false
|
|
4229
|
+
},
|
|
4230
|
+
{
|
|
4231
|
+
name: "sticky_notes",
|
|
4232
|
+
flag: "sticky_notes",
|
|
4233
|
+
type: "json",
|
|
4234
|
+
required: false
|
|
4235
|
+
}
|
|
4236
|
+
]
|
|
4237
|
+
},
|
|
4238
|
+
{
|
|
4239
|
+
name: "inputs",
|
|
4240
|
+
flag: "inputs",
|
|
4241
|
+
type: "json",
|
|
4242
|
+
required: false,
|
|
4243
|
+
description: "Typed input definitions for this workflow. Names referenced in prompts but omitted here default to optional strings."
|
|
4244
|
+
},
|
|
4245
|
+
{
|
|
4246
|
+
name: "settings",
|
|
4247
|
+
flag: "settings",
|
|
4248
|
+
type: "json",
|
|
4249
|
+
required: false,
|
|
4250
|
+
description: "Configuration settings for workflow execution",
|
|
4251
|
+
fields: [
|
|
4252
|
+
{
|
|
4253
|
+
name: "viewport_width",
|
|
4254
|
+
flag: "viewport_width",
|
|
4255
|
+
type: "integer",
|
|
4256
|
+
required: false,
|
|
4257
|
+
description: "Browser viewport width in pixels"
|
|
4258
|
+
},
|
|
4259
|
+
{
|
|
4260
|
+
name: "viewport_height",
|
|
4261
|
+
flag: "viewport_height",
|
|
4262
|
+
type: "integer",
|
|
4263
|
+
required: false,
|
|
4264
|
+
description: "Browser viewport height in pixels"
|
|
4265
|
+
},
|
|
4266
|
+
{
|
|
4267
|
+
name: "max_timeout_mins",
|
|
4268
|
+
flag: "max_timeout_mins",
|
|
4269
|
+
type: "integer",
|
|
4270
|
+
required: false,
|
|
4271
|
+
description: "Maximum timeout in minutes"
|
|
4272
|
+
},
|
|
4273
|
+
{
|
|
4274
|
+
name: "custom_environment_id",
|
|
4275
|
+
flag: "custom_environment_id",
|
|
4276
|
+
type: "string",
|
|
4277
|
+
required: false,
|
|
4278
|
+
description: "Custom environment executions of this workflow boot on: its environment type and snapshot replace the workflow's own environment, its profile rows restrict which profile an execution may use, and a kept-warm environment hands out a pre-warmed copy. On a new version, omit it to keep the environment of the workflow's latest version (its editable head, which can be newer than the published one), or send null to boot the workflow's own environment. On a new workflow, there is nothing to keep: omit it or send null for no custom environment."
|
|
4279
|
+
}
|
|
4280
|
+
]
|
|
4281
|
+
},
|
|
4282
|
+
{
|
|
4283
|
+
name: "environmentTemplate",
|
|
4284
|
+
flag: "environment-template",
|
|
4285
|
+
type: "json",
|
|
4286
|
+
required: false,
|
|
4287
|
+
description: "Optional environment template. On a new version, omit it to keep the template of the workflow's latest version (its editable head); on a new workflow, omitting it means a browser. Omits admin-only OS fields.",
|
|
4288
|
+
fields: [
|
|
4289
|
+
{
|
|
4290
|
+
name: "type",
|
|
4291
|
+
flag: "type",
|
|
4292
|
+
type: "string",
|
|
4293
|
+
required: false,
|
|
4294
|
+
description: "Type of execution environment",
|
|
4295
|
+
enum: ["browser", "os"]
|
|
4296
|
+
},
|
|
4297
|
+
{
|
|
4298
|
+
name: "config",
|
|
4299
|
+
flag: "config",
|
|
4300
|
+
type: "json",
|
|
4301
|
+
required: false
|
|
4302
|
+
}
|
|
4303
|
+
]
|
|
4304
|
+
}
|
|
4305
|
+
]
|
|
3317
4306
|
}
|
|
3318
4307
|
],
|
|
3319
4308
|
files: [],
|
|
@@ -3417,7 +4406,8 @@ var COMMANDS = [
|
|
|
3417
4406
|
flag: "inputs",
|
|
3418
4407
|
type: "json",
|
|
3419
4408
|
required: false,
|
|
3420
|
-
description: "Inputs to be merged into the placeholders defined in prompts"
|
|
4409
|
+
description: "Inputs to be merged into the placeholders defined in prompts",
|
|
4410
|
+
record: "json"
|
|
3421
4411
|
},
|
|
3422
4412
|
{
|
|
3423
4413
|
name: "tempFiles",
|
|
@@ -3431,7 +4421,8 @@ var COMMANDS = [
|
|
|
3431
4421
|
flag: "metadata",
|
|
3432
4422
|
type: "json",
|
|
3433
4423
|
required: false,
|
|
3434
|
-
description: "Optional metadata key-value pairs (string keys and string values) for organizing and filtering executions"
|
|
4424
|
+
description: "Optional metadata key-value pairs (string keys and string values) for organizing and filtering executions",
|
|
4425
|
+
record: "string"
|
|
3435
4426
|
},
|
|
3436
4427
|
{
|
|
3437
4428
|
name: "version",
|
|
@@ -3452,7 +4443,23 @@ var COMMANDS = [
|
|
|
3452
4443
|
flag: "execution-options",
|
|
3453
4444
|
type: "json",
|
|
3454
4445
|
required: false,
|
|
3455
|
-
description: "Per-execution runtime options that override or extend the workflow's default settings."
|
|
4446
|
+
description: "Per-execution runtime options that override or extend the workflow's default settings.",
|
|
4447
|
+
fields: [
|
|
4448
|
+
{
|
|
4449
|
+
name: "variantKey",
|
|
4450
|
+
flag: "variant-key",
|
|
4451
|
+
type: "string",
|
|
4452
|
+
required: false,
|
|
4453
|
+
description: "Identifies which variant this execution is for, scoping its shared files and scripts to a per-variant subdirectory under each node's shared folder. It does not change which workflow or version runs. Normalised to a filesystem-safe slug by the server. Requires the workflow to have `variant_mode` enabled, and a variant-mode workflow requires it on every execution."
|
|
4454
|
+
},
|
|
4455
|
+
{
|
|
4456
|
+
name: "softTimeoutMins",
|
|
4457
|
+
flag: "soft-timeout-mins",
|
|
4458
|
+
type: "integer",
|
|
4459
|
+
required: false,
|
|
4460
|
+
description: "Soft timeout in minutes. When the execution has been running longer than this value, a message is injected on every subsequent step urging the agent to wrap up and produce output. Must be greater than 0 and less than the agent's hard timeout (max_timeout_mins)."
|
|
4461
|
+
}
|
|
4462
|
+
]
|
|
3456
4463
|
},
|
|
3457
4464
|
{
|
|
3458
4465
|
name: "onCapacityLimit",
|
|
@@ -3510,7 +4517,8 @@ var COMMANDS = [
|
|
|
3510
4517
|
flag: "inputs",
|
|
3511
4518
|
type: "json",
|
|
3512
4519
|
required: false,
|
|
3513
|
-
description: "Inputs to be merged into the placeholders defined in prompts"
|
|
4520
|
+
description: "Inputs to be merged into the placeholders defined in prompts",
|
|
4521
|
+
record: "json"
|
|
3514
4522
|
},
|
|
3515
4523
|
{
|
|
3516
4524
|
name: "tempFiles",
|
|
@@ -3524,7 +4532,8 @@ var COMMANDS = [
|
|
|
3524
4532
|
flag: "metadata",
|
|
3525
4533
|
type: "json",
|
|
3526
4534
|
required: false,
|
|
3527
|
-
description: "Optional metadata key-value pairs (string keys and string values) for organizing and filtering executions"
|
|
4535
|
+
description: "Optional metadata key-value pairs (string keys and string values) for organizing and filtering executions",
|
|
4536
|
+
record: "string"
|
|
3528
4537
|
},
|
|
3529
4538
|
{
|
|
3530
4539
|
name: "version",
|
|
@@ -3545,7 +4554,23 @@ var COMMANDS = [
|
|
|
3545
4554
|
flag: "execution-options",
|
|
3546
4555
|
type: "json",
|
|
3547
4556
|
required: false,
|
|
3548
|
-
description: "Per-execution runtime options that override or extend the workflow's default settings."
|
|
4557
|
+
description: "Per-execution runtime options that override or extend the workflow's default settings.",
|
|
4558
|
+
fields: [
|
|
4559
|
+
{
|
|
4560
|
+
name: "variantKey",
|
|
4561
|
+
flag: "variant-key",
|
|
4562
|
+
type: "string",
|
|
4563
|
+
required: false,
|
|
4564
|
+
description: "Identifies which variant this execution is for, scoping its shared files and scripts to a per-variant subdirectory under each node's shared folder. It does not change which workflow or version runs. Normalised to a filesystem-safe slug by the server. Requires the workflow to have `variant_mode` enabled, and a variant-mode workflow requires it on every execution."
|
|
4565
|
+
},
|
|
4566
|
+
{
|
|
4567
|
+
name: "softTimeoutMins",
|
|
4568
|
+
flag: "soft-timeout-mins",
|
|
4569
|
+
type: "integer",
|
|
4570
|
+
required: false,
|
|
4571
|
+
description: "Soft timeout in minutes. When the execution has been running longer than this value, a message is injected on every subsequent step urging the agent to wrap up and produce output. Must be greater than 0 and less than the agent's hard timeout (max_timeout_mins)."
|
|
4572
|
+
}
|
|
4573
|
+
]
|
|
3549
4574
|
},
|
|
3550
4575
|
{
|
|
3551
4576
|
name: "onCapacityLimit",
|
|
@@ -4047,7 +5072,27 @@ var COMMANDS = [
|
|
|
4047
5072
|
name: "graph",
|
|
4048
5073
|
flag: "graph",
|
|
4049
5074
|
type: "json",
|
|
4050
|
-
required: true
|
|
5075
|
+
required: true,
|
|
5076
|
+
fields: [
|
|
5077
|
+
{
|
|
5078
|
+
name: "nodes",
|
|
5079
|
+
flag: "nodes",
|
|
5080
|
+
type: "json",
|
|
5081
|
+
required: false
|
|
5082
|
+
},
|
|
5083
|
+
{
|
|
5084
|
+
name: "transitions",
|
|
5085
|
+
flag: "transitions",
|
|
5086
|
+
type: "json",
|
|
5087
|
+
required: false
|
|
5088
|
+
},
|
|
5089
|
+
{
|
|
5090
|
+
name: "sticky_notes",
|
|
5091
|
+
flag: "sticky_notes",
|
|
5092
|
+
type: "json",
|
|
5093
|
+
required: false
|
|
5094
|
+
}
|
|
5095
|
+
]
|
|
4051
5096
|
},
|
|
4052
5097
|
{
|
|
4053
5098
|
name: "inputs",
|
|
@@ -4061,14 +5106,60 @@ var COMMANDS = [
|
|
|
4061
5106
|
flag: "settings",
|
|
4062
5107
|
type: "json",
|
|
4063
5108
|
required: true,
|
|
4064
|
-
description: "Configuration settings for workflow execution"
|
|
5109
|
+
description: "Configuration settings for workflow execution",
|
|
5110
|
+
fields: [
|
|
5111
|
+
{
|
|
5112
|
+
name: "viewport_width",
|
|
5113
|
+
flag: "viewport_width",
|
|
5114
|
+
type: "integer",
|
|
5115
|
+
required: false,
|
|
5116
|
+
description: "Browser viewport width in pixels"
|
|
5117
|
+
},
|
|
5118
|
+
{
|
|
5119
|
+
name: "viewport_height",
|
|
5120
|
+
flag: "viewport_height",
|
|
5121
|
+
type: "integer",
|
|
5122
|
+
required: false,
|
|
5123
|
+
description: "Browser viewport height in pixels"
|
|
5124
|
+
},
|
|
5125
|
+
{
|
|
5126
|
+
name: "max_timeout_mins",
|
|
5127
|
+
flag: "max_timeout_mins",
|
|
5128
|
+
type: "integer",
|
|
5129
|
+
required: false,
|
|
5130
|
+
description: "Maximum timeout in minutes"
|
|
5131
|
+
},
|
|
5132
|
+
{
|
|
5133
|
+
name: "custom_environment_id",
|
|
5134
|
+
flag: "custom_environment_id",
|
|
5135
|
+
type: "string",
|
|
5136
|
+
required: false,
|
|
5137
|
+
description: "Custom environment executions of this workflow boot on: its environment type and snapshot replace the workflow's own environment, its profile rows restrict which profile an execution may use, and a kept-warm environment hands out a pre-warmed copy. On a new version, omit it to keep the environment of the workflow's latest version (its editable head, which can be newer than the published one), or send null to boot the workflow's own environment. On a new workflow, there is nothing to keep: omit it or send null for no custom environment."
|
|
5138
|
+
}
|
|
5139
|
+
]
|
|
4065
5140
|
},
|
|
4066
5141
|
{
|
|
4067
5142
|
name: "environmentTemplate",
|
|
4068
5143
|
flag: "environment-template",
|
|
4069
5144
|
type: "json",
|
|
4070
5145
|
required: false,
|
|
4071
|
-
description: "Optional environment template. On a new version, omit it to keep the template of the workflow's latest version (its editable head); on a new workflow, omitting it means a browser. Omits admin-only OS fields."
|
|
5146
|
+
description: "Optional environment template. On a new version, omit it to keep the template of the workflow's latest version (its editable head); on a new workflow, omitting it means a browser. Omits admin-only OS fields.",
|
|
5147
|
+
fields: [
|
|
5148
|
+
{
|
|
5149
|
+
name: "type",
|
|
5150
|
+
flag: "type",
|
|
5151
|
+
type: "string",
|
|
5152
|
+
required: false,
|
|
5153
|
+
description: "Type of execution environment",
|
|
5154
|
+
enum: ["browser", "os"]
|
|
5155
|
+
},
|
|
5156
|
+
{
|
|
5157
|
+
name: "config",
|
|
5158
|
+
flag: "config",
|
|
5159
|
+
type: "json",
|
|
5160
|
+
required: false
|
|
5161
|
+
}
|
|
5162
|
+
]
|
|
4072
5163
|
}
|
|
4073
5164
|
],
|
|
4074
5165
|
files: [],
|
|
@@ -4115,7 +5206,27 @@ var COMMANDS = [
|
|
|
4115
5206
|
name: "graph",
|
|
4116
5207
|
flag: "graph",
|
|
4117
5208
|
type: "json",
|
|
4118
|
-
required: true
|
|
5209
|
+
required: true,
|
|
5210
|
+
fields: [
|
|
5211
|
+
{
|
|
5212
|
+
name: "nodes",
|
|
5213
|
+
flag: "nodes",
|
|
5214
|
+
type: "json",
|
|
5215
|
+
required: false
|
|
5216
|
+
},
|
|
5217
|
+
{
|
|
5218
|
+
name: "transitions",
|
|
5219
|
+
flag: "transitions",
|
|
5220
|
+
type: "json",
|
|
5221
|
+
required: false
|
|
5222
|
+
},
|
|
5223
|
+
{
|
|
5224
|
+
name: "sticky_notes",
|
|
5225
|
+
flag: "sticky_notes",
|
|
5226
|
+
type: "json",
|
|
5227
|
+
required: false
|
|
5228
|
+
}
|
|
5229
|
+
]
|
|
4119
5230
|
},
|
|
4120
5231
|
{
|
|
4121
5232
|
name: "inputs",
|
|
@@ -4129,14 +5240,60 @@ var COMMANDS = [
|
|
|
4129
5240
|
flag: "settings",
|
|
4130
5241
|
type: "json",
|
|
4131
5242
|
required: true,
|
|
4132
|
-
description: "Configuration settings for workflow execution"
|
|
5243
|
+
description: "Configuration settings for workflow execution",
|
|
5244
|
+
fields: [
|
|
5245
|
+
{
|
|
5246
|
+
name: "viewport_width",
|
|
5247
|
+
flag: "viewport_width",
|
|
5248
|
+
type: "integer",
|
|
5249
|
+
required: false,
|
|
5250
|
+
description: "Browser viewport width in pixels"
|
|
5251
|
+
},
|
|
5252
|
+
{
|
|
5253
|
+
name: "viewport_height",
|
|
5254
|
+
flag: "viewport_height",
|
|
5255
|
+
type: "integer",
|
|
5256
|
+
required: false,
|
|
5257
|
+
description: "Browser viewport height in pixels"
|
|
5258
|
+
},
|
|
5259
|
+
{
|
|
5260
|
+
name: "max_timeout_mins",
|
|
5261
|
+
flag: "max_timeout_mins",
|
|
5262
|
+
type: "integer",
|
|
5263
|
+
required: false,
|
|
5264
|
+
description: "Maximum timeout in minutes"
|
|
5265
|
+
},
|
|
5266
|
+
{
|
|
5267
|
+
name: "custom_environment_id",
|
|
5268
|
+
flag: "custom_environment_id",
|
|
5269
|
+
type: "string",
|
|
5270
|
+
required: false,
|
|
5271
|
+
description: "Custom environment executions of this workflow boot on: its environment type and snapshot replace the workflow's own environment, its profile rows restrict which profile an execution may use, and a kept-warm environment hands out a pre-warmed copy. On a new version, omit it to keep the environment of the workflow's latest version (its editable head, which can be newer than the published one), or send null to boot the workflow's own environment. On a new workflow, there is nothing to keep: omit it or send null for no custom environment."
|
|
5272
|
+
}
|
|
5273
|
+
]
|
|
4133
5274
|
},
|
|
4134
5275
|
{
|
|
4135
5276
|
name: "environmentTemplate",
|
|
4136
5277
|
flag: "environment-template",
|
|
4137
5278
|
type: "json",
|
|
4138
5279
|
required: false,
|
|
4139
|
-
description: "Optional environment template. On a new version, omit it to keep the template of the workflow's latest version (its editable head); on a new workflow, omitting it means a browser. Omits admin-only OS fields."
|
|
5280
|
+
description: "Optional environment template. On a new version, omit it to keep the template of the workflow's latest version (its editable head); on a new workflow, omitting it means a browser. Omits admin-only OS fields.",
|
|
5281
|
+
fields: [
|
|
5282
|
+
{
|
|
5283
|
+
name: "type",
|
|
5284
|
+
flag: "type",
|
|
5285
|
+
type: "string",
|
|
5286
|
+
required: false,
|
|
5287
|
+
description: "Type of execution environment",
|
|
5288
|
+
enum: ["browser", "os"]
|
|
5289
|
+
},
|
|
5290
|
+
{
|
|
5291
|
+
name: "config",
|
|
5292
|
+
flag: "config",
|
|
5293
|
+
type: "json",
|
|
5294
|
+
required: false
|
|
5295
|
+
}
|
|
5296
|
+
]
|
|
4140
5297
|
}
|
|
4141
5298
|
],
|
|
4142
5299
|
files: [],
|
|
@@ -4203,14 +5360,16 @@ var COMMANDS = [
|
|
|
4203
5360
|
flag: "inputs",
|
|
4204
5361
|
type: "json",
|
|
4205
5362
|
required: false,
|
|
4206
|
-
description: "Inputs to be merged into the placeholders defined in prompts. Do not set together with inputVariables."
|
|
5363
|
+
description: "Inputs to be merged into the placeholders defined in prompts. Do not set together with inputVariables.",
|
|
5364
|
+
record: "json"
|
|
4207
5365
|
},
|
|
4208
5366
|
{
|
|
4209
5367
|
name: "metadata",
|
|
4210
5368
|
flag: "metadata",
|
|
4211
5369
|
type: "json",
|
|
4212
5370
|
required: false,
|
|
4213
|
-
description: "Optional metadata key-value pairs for organizing and filtering executions"
|
|
5371
|
+
description: "Optional metadata key-value pairs for organizing and filtering executions",
|
|
5372
|
+
record: "string"
|
|
4214
5373
|
},
|
|
4215
5374
|
{
|
|
4216
5375
|
name: "profileId",
|
|
@@ -4238,7 +5397,23 @@ var COMMANDS = [
|
|
|
4238
5397
|
flag: "execution-options",
|
|
4239
5398
|
type: "json",
|
|
4240
5399
|
required: false,
|
|
4241
|
-
description: "Per-execution runtime options that override or extend the workflow's default settings."
|
|
5400
|
+
description: "Per-execution runtime options that override or extend the workflow's default settings.",
|
|
5401
|
+
fields: [
|
|
5402
|
+
{
|
|
5403
|
+
name: "variantKey",
|
|
5404
|
+
flag: "variant-key",
|
|
5405
|
+
type: "string",
|
|
5406
|
+
required: false,
|
|
5407
|
+
description: "Identifies which variant this execution is for, scoping its shared files and scripts to a per-variant subdirectory under each node's shared folder. It does not change which workflow or version runs. Normalised to a filesystem-safe slug by the server. Requires the workflow to have `variant_mode` enabled, and a variant-mode workflow requires it on every execution."
|
|
5408
|
+
},
|
|
5409
|
+
{
|
|
5410
|
+
name: "softTimeoutMins",
|
|
5411
|
+
flag: "soft-timeout-mins",
|
|
5412
|
+
type: "integer",
|
|
5413
|
+
required: false,
|
|
5414
|
+
description: "Soft timeout in minutes. When the execution has been running longer than this value, a message is injected on every subsequent step urging the agent to wrap up and produce output. Must be greater than 0 and less than the agent's hard timeout (max_timeout_mins)."
|
|
5415
|
+
}
|
|
5416
|
+
]
|
|
4242
5417
|
},
|
|
4243
5418
|
{
|
|
4244
5419
|
name: "parentExecutionId",
|
|
@@ -4514,7 +5689,27 @@ var COMMANDS = [
|
|
|
4514
5689
|
name: "graph",
|
|
4515
5690
|
flag: "graph",
|
|
4516
5691
|
type: "json",
|
|
4517
|
-
required: true
|
|
5692
|
+
required: true,
|
|
5693
|
+
fields: [
|
|
5694
|
+
{
|
|
5695
|
+
name: "nodes",
|
|
5696
|
+
flag: "nodes",
|
|
5697
|
+
type: "json",
|
|
5698
|
+
required: false
|
|
5699
|
+
},
|
|
5700
|
+
{
|
|
5701
|
+
name: "transitions",
|
|
5702
|
+
flag: "transitions",
|
|
5703
|
+
type: "json",
|
|
5704
|
+
required: false
|
|
5705
|
+
},
|
|
5706
|
+
{
|
|
5707
|
+
name: "sticky_notes",
|
|
5708
|
+
flag: "sticky_notes",
|
|
5709
|
+
type: "json",
|
|
5710
|
+
required: false
|
|
5711
|
+
}
|
|
5712
|
+
]
|
|
4518
5713
|
},
|
|
4519
5714
|
{
|
|
4520
5715
|
name: "inputs",
|
|
@@ -4528,14 +5723,60 @@ var COMMANDS = [
|
|
|
4528
5723
|
flag: "settings",
|
|
4529
5724
|
type: "json",
|
|
4530
5725
|
required: true,
|
|
4531
|
-
description: "Configuration settings for workflow execution"
|
|
5726
|
+
description: "Configuration settings for workflow execution",
|
|
5727
|
+
fields: [
|
|
5728
|
+
{
|
|
5729
|
+
name: "viewport_width",
|
|
5730
|
+
flag: "viewport_width",
|
|
5731
|
+
type: "integer",
|
|
5732
|
+
required: false,
|
|
5733
|
+
description: "Browser viewport width in pixels"
|
|
5734
|
+
},
|
|
5735
|
+
{
|
|
5736
|
+
name: "viewport_height",
|
|
5737
|
+
flag: "viewport_height",
|
|
5738
|
+
type: "integer",
|
|
5739
|
+
required: false,
|
|
5740
|
+
description: "Browser viewport height in pixels"
|
|
5741
|
+
},
|
|
5742
|
+
{
|
|
5743
|
+
name: "max_timeout_mins",
|
|
5744
|
+
flag: "max_timeout_mins",
|
|
5745
|
+
type: "integer",
|
|
5746
|
+
required: false,
|
|
5747
|
+
description: "Maximum timeout in minutes"
|
|
5748
|
+
},
|
|
5749
|
+
{
|
|
5750
|
+
name: "custom_environment_id",
|
|
5751
|
+
flag: "custom_environment_id",
|
|
5752
|
+
type: "string",
|
|
5753
|
+
required: false,
|
|
5754
|
+
description: "Custom environment executions of this workflow boot on: its environment type and snapshot replace the workflow's own environment, its profile rows restrict which profile an execution may use, and a kept-warm environment hands out a pre-warmed copy. On a new version, omit it to keep the environment of the workflow's latest version (its editable head, which can be newer than the published one), or send null to boot the workflow's own environment. On a new workflow, there is nothing to keep: omit it or send null for no custom environment."
|
|
5755
|
+
}
|
|
5756
|
+
]
|
|
4532
5757
|
},
|
|
4533
5758
|
{
|
|
4534
5759
|
name: "environmentTemplate",
|
|
4535
5760
|
flag: "environment-template",
|
|
4536
5761
|
type: "json",
|
|
4537
5762
|
required: false,
|
|
4538
|
-
description: "Optional environment template. On a new version, omit it to keep the template of the workflow's latest version (its editable head); on a new workflow, omitting it means a browser. Omits admin-only OS fields."
|
|
5763
|
+
description: "Optional environment template. On a new version, omit it to keep the template of the workflow's latest version (its editable head); on a new workflow, omitting it means a browser. Omits admin-only OS fields.",
|
|
5764
|
+
fields: [
|
|
5765
|
+
{
|
|
5766
|
+
name: "type",
|
|
5767
|
+
flag: "type",
|
|
5768
|
+
type: "string",
|
|
5769
|
+
required: false,
|
|
5770
|
+
description: "Type of execution environment",
|
|
5771
|
+
enum: ["browser", "os"]
|
|
5772
|
+
},
|
|
5773
|
+
{
|
|
5774
|
+
name: "config",
|
|
5775
|
+
flag: "config",
|
|
5776
|
+
type: "json",
|
|
5777
|
+
required: false
|
|
5778
|
+
}
|
|
5779
|
+
]
|
|
4539
5780
|
}
|
|
4540
5781
|
],
|
|
4541
5782
|
files: [],
|
|
@@ -4748,6 +5989,23 @@ var GLOBAL_FLAGS = [
|
|
|
4748
5989
|
["--output <file>", "Write a downloaded file here, not to stdout."],
|
|
4749
5990
|
["-h, --help", "Show help."]
|
|
4750
5991
|
];
|
|
5992
|
+
function childFlags(option2, prefix = option2.flag) {
|
|
5993
|
+
if (option2.record) {
|
|
5994
|
+
return [
|
|
5995
|
+
{
|
|
5996
|
+
name: option2.name,
|
|
5997
|
+
flag: `${prefix}.<key>`,
|
|
5998
|
+
type: option2.record,
|
|
5999
|
+
required: false,
|
|
6000
|
+
description: "One entry. The key is sent as written."
|
|
6001
|
+
}
|
|
6002
|
+
];
|
|
6003
|
+
}
|
|
6004
|
+
return (option2.fields ?? []).flatMap((child) => {
|
|
6005
|
+
const flag2 = `${prefix}.${child.flag}`;
|
|
6006
|
+
return [{ ...child, flag: flag2 }, ...childFlags(child, flag2)];
|
|
6007
|
+
});
|
|
6008
|
+
}
|
|
4751
6009
|
|
|
4752
6010
|
// src/program.ts
|
|
4753
6011
|
var DOTTED = /^--([a-z0-9-]+\.[a-z0-9.-]+)(?:=(.*))?$/;
|
|
@@ -4764,7 +6022,7 @@ function optionText(option2) {
|
|
|
4764
6022
|
}
|
|
4765
6023
|
function splitDotted(argv) {
|
|
4766
6024
|
const rest = [];
|
|
4767
|
-
const
|
|
6025
|
+
const dotted2 = /* @__PURE__ */ new Map();
|
|
4768
6026
|
for (let i = 0; i < argv.length; i++) {
|
|
4769
6027
|
const match = DOTTED.exec(argv[i]);
|
|
4770
6028
|
if (!match) {
|
|
@@ -4774,9 +6032,9 @@ function splitDotted(argv) {
|
|
|
4774
6032
|
const value2 = match[2] ?? argv[++i];
|
|
4775
6033
|
if (value2 === void 0)
|
|
4776
6034
|
throw new UsageError(`--${match[1]} needs a value`);
|
|
4777
|
-
|
|
6035
|
+
dotted2.set(match[1], [...dotted2.get(match[1]) ?? [], value2]);
|
|
4778
6036
|
}
|
|
4779
|
-
return { argv: rest, dotted };
|
|
6037
|
+
return { argv: rest, dotted: dotted2 };
|
|
4780
6038
|
}
|
|
4781
6039
|
function group(parent, name, groups, path) {
|
|
4782
6040
|
const existing = groups.get(path);
|
|
@@ -4800,6 +6058,10 @@ function leafOptions(leaf, command) {
|
|
|
4800
6058
|
);
|
|
4801
6059
|
if (option2.negatable)
|
|
4802
6060
|
leaf.option(`--no-${option2.flag}`, `Skip ${option2.flag}.`);
|
|
6061
|
+
for (const child of childFlags(option2)) {
|
|
6062
|
+
const placeholder2 = child.enum ? child.enum.join("|") : child.type.replace("[]", "");
|
|
6063
|
+
leaf.option(`--${child.flag} <${placeholder2}>`, optionText(child));
|
|
6064
|
+
}
|
|
4803
6065
|
}
|
|
4804
6066
|
for (const file of command.body?.files ?? []) {
|
|
4805
6067
|
leaf.option(`--${file} <path>`, "File to upload. Repeatable.", collect);
|
|
@@ -4815,10 +6077,10 @@ function leafOptions(leaf, command) {
|
|
|
4815
6077
|
"The pulled head folder to push. Defaults to the current folder."
|
|
4816
6078
|
);
|
|
4817
6079
|
}
|
|
4818
|
-
function toParsed(leaf, positionals,
|
|
6080
|
+
function toParsed(leaf, positionals, dotted2) {
|
|
4819
6081
|
const globals = leaf.optsWithGlobals();
|
|
4820
6082
|
const own = leaf.opts();
|
|
4821
|
-
const flags = new Map(
|
|
6083
|
+
const flags = new Map(dotted2);
|
|
4822
6084
|
for (const option2 of leaf.options) {
|
|
4823
6085
|
const flag2 = option2.long?.replace(/^--(no-)?/, "");
|
|
4824
6086
|
const value2 = own[option2.attributeName()];
|
|
@@ -4834,7 +6096,7 @@ function toParsed(leaf, positionals, dotted) {
|
|
|
4834
6096
|
output: globals.output
|
|
4835
6097
|
};
|
|
4836
6098
|
}
|
|
4837
|
-
function defineCommands(root, options,
|
|
6099
|
+
function defineCommands(root, options, dotted2 = /* @__PURE__ */ new Map(), onInvocation = () => void 0) {
|
|
4838
6100
|
if (options.description) root.description(options.description);
|
|
4839
6101
|
if (options.version)
|
|
4840
6102
|
root.addHelpText(
|
|
@@ -4903,7 +6165,7 @@ ${notes.join("\n")}`);
|
|
|
4903
6165
|
`expected ${expected}, got ${cmd.args.length} argument(s)`
|
|
4904
6166
|
);
|
|
4905
6167
|
}
|
|
4906
|
-
const unknownDotted = [...
|
|
6168
|
+
const unknownDotted = [...dotted2.keys()].filter(
|
|
4907
6169
|
(flag2) => !(command.body?.fields ?? []).some(
|
|
4908
6170
|
(f) => flag2.startsWith(`${f.flag}.`)
|
|
4909
6171
|
)
|
|
@@ -4916,7 +6178,7 @@ ${notes.join("\n")}`);
|
|
|
4916
6178
|
onInvocation({
|
|
4917
6179
|
kind: "command",
|
|
4918
6180
|
command,
|
|
4919
|
-
parsed: toParsed(cmd, positionals,
|
|
6181
|
+
parsed: toParsed(cmd, positionals, dotted2)
|
|
4920
6182
|
});
|
|
4921
6183
|
});
|
|
4922
6184
|
}
|
|
@@ -4935,12 +6197,12 @@ async function parseInvocation(argv, options) {
|
|
|
4935
6197
|
stderr: ""
|
|
4936
6198
|
};
|
|
4937
6199
|
}
|
|
4938
|
-
const { argv: rest, dotted } = splitDotted(argv);
|
|
6200
|
+
const { argv: rest, dotted: dotted2 } = splitDotted(argv);
|
|
4939
6201
|
const root = new Command("asteroid").exitOverride().helpCommand(false).configureOutput({
|
|
4940
6202
|
writeOut: (text2) => stdout += text2,
|
|
4941
6203
|
writeErr: (text2) => stderr += text2
|
|
4942
6204
|
});
|
|
4943
|
-
defineCommands(root, options,
|
|
6205
|
+
defineCommands(root, options, dotted2, (invocation) => {
|
|
4944
6206
|
result = invocation;
|
|
4945
6207
|
});
|
|
4946
6208
|
try {
|
|
@@ -5045,6 +6307,41 @@ function setPath(target, path, value2) {
|
|
|
5045
6307
|
}
|
|
5046
6308
|
node[path.at(-1)] = value2;
|
|
5047
6309
|
}
|
|
6310
|
+
async function dotted(field, segments, flag2, raws, io) {
|
|
6311
|
+
const path = [];
|
|
6312
|
+
let option2 = field;
|
|
6313
|
+
for (const [i, segment] of segments.entries()) {
|
|
6314
|
+
if (option2?.record) {
|
|
6315
|
+
const key = segments.slice(i).join(".");
|
|
6316
|
+
const entry = { ...option2, flag: flag2, type: option2.record };
|
|
6317
|
+
delete entry.enum;
|
|
6318
|
+
return [
|
|
6319
|
+
[...path, key],
|
|
6320
|
+
entry.type === "json" ? loose(raws.at(-1)) : value(entry, raws)
|
|
6321
|
+
];
|
|
6322
|
+
}
|
|
6323
|
+
if (option2?.fields) {
|
|
6324
|
+
const child = option2.fields.find(
|
|
6325
|
+
(f) => f.flag === segment
|
|
6326
|
+
);
|
|
6327
|
+
if (!child) throw new UsageError(`unknown flag: --${flag2}`);
|
|
6328
|
+
path.push(child.name);
|
|
6329
|
+
option2 = child;
|
|
6330
|
+
continue;
|
|
6331
|
+
}
|
|
6332
|
+
if (option2 && option2.type !== "json") {
|
|
6333
|
+
throw new UsageError(`unknown flag: --${flag2}`);
|
|
6334
|
+
}
|
|
6335
|
+
path.push(camel(segment));
|
|
6336
|
+
option2 = void 0;
|
|
6337
|
+
}
|
|
6338
|
+
if (!option2) return [path, loose(raws.at(-1))];
|
|
6339
|
+
if (option2.fields || option2.record) {
|
|
6340
|
+
throw new UsageError(`--${flag2} needs a field, as --${flag2}.<name>`);
|
|
6341
|
+
}
|
|
6342
|
+
const inputs = option2.type === "json" ? await Promise.all(raws.map((raw) => readInput(raw, io))) : raws;
|
|
6343
|
+
return [path, value({ ...option2, flag: flag2 }, inputs)];
|
|
6344
|
+
}
|
|
5048
6345
|
async function buildRequest(command, input, context = {}) {
|
|
5049
6346
|
const io = context.io ?? nodeReader;
|
|
5050
6347
|
const parsed = await resolveInputs(command, input, io);
|
|
@@ -5131,7 +6428,8 @@ async function buildRequest(command, input, context = {}) {
|
|
|
5131
6428
|
flags.delete(flag2);
|
|
5132
6429
|
const current = json[field.name];
|
|
5133
6430
|
json[field.name] = typeof current === "object" && current !== null ? current : {};
|
|
5134
|
-
|
|
6431
|
+
const [path2, value2] = await dotted(field, rest, flag2, raws, io);
|
|
6432
|
+
setPath(json, [field.name, ...path2], value2);
|
|
5135
6433
|
}
|
|
5136
6434
|
rejectUnknown(flags);
|
|
5137
6435
|
delete json.organizationId;
|