@aicopycoders/exodus 2026.7.200-beta.9 → 2026.8.1100

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 (40) hide show
  1. package/README.md +51 -0
  2. package/assets/docs/CLAUDE.md +2 -0
  3. package/assets/docs/PIPELINES.md +26 -0
  4. package/assets/skills/exodus/SKILL.md +5 -2
  5. package/assets/skills/exodus-meme/SKILL.md +44 -28
  6. package/assets/skills/exodus-winners/SKILL.md +29 -20
  7. package/assets/skills/exodus-workflow/SKILL.md +464 -63
  8. package/dist/bin/exodus.js +3 -0
  9. package/dist/commands/bank.d.ts +88 -0
  10. package/dist/commands/bank.js +346 -0
  11. package/dist/commands/browse.js +2 -1
  12. package/dist/commands/creative.js +2 -2
  13. package/dist/commands/genesis.js +16 -4
  14. package/dist/commands/keys.js +1 -0
  15. package/dist/commands/meme.js +9 -6
  16. package/dist/commands/primer.js +2 -1
  17. package/dist/commands/session.d.ts +55 -0
  18. package/dist/commands/session.js +202 -0
  19. package/dist/commands/status.js +4 -4
  20. package/dist/commands/swipe.js +4 -4
  21. package/dist/commands/template.js +2 -2
  22. package/dist/commands/update.d.ts +2 -0
  23. package/dist/commands/update.js +20 -0
  24. package/dist/commands/winners.js +13 -3
  25. package/dist/commands/workflow.d.ts +293 -8
  26. package/dist/commands/workflow.js +2396 -90
  27. package/dist/lib/client.d.ts +8 -1
  28. package/dist/lib/client.js +30 -6
  29. package/dist/lib/format.d.ts +7 -0
  30. package/dist/lib/format.js +52 -5
  31. package/dist/lib/intel-format.js +2 -1
  32. package/dist/lib/keys-sync.js +1 -0
  33. package/dist/lib/poll.js +7 -4
  34. package/dist/lib/route-support.d.ts +4 -0
  35. package/dist/lib/route-support.js +22 -0
  36. package/dist/lib/runStatus.d.ts +22 -0
  37. package/dist/lib/runStatus.js +139 -0
  38. package/dist/lib/workflowText.d.ts +3 -0
  39. package/dist/lib/workflowText.js +113 -0
  40. package/package.json +5 -2
@@ -1,7 +1,19 @@
1
1
  import { type ApiResponse } from "../lib/client.js";
2
2
  import { type PollOptions, type PollResult } from "../lib/poll.js";
3
+ import { LEGACY_WORKFLOW_RUN_STATUS_VALUES, type RunStatus } from "../lib/runStatus.js";
4
+ import { type Channel } from "../lib/channel.js";
3
5
  export declare const helpText: string;
4
- export type WorkflowNodeKind = "brief" | "bot" | "primer" | "image" | "rig" | "storyboard" | "reference" | "scene-frames" | "video" | "voiceover" | "output";
6
+ export type WorkflowNodeKind = "brief" | "brief-form" | "asset" | "bot" | "primer" | "image" | "image-rig" | "rig" | "storyboard" | "reference" | "scene-frames" | "video" | "voiceover" | "output" | "call" | "show-set" | "show-cast" | "show-voices" | "product-truth" | "transform" | "formatter" | "splitter" | "collector" | "checkpoint" | "prompt";
7
+ export type WorkflowSlotState = "locked" | "auto" | "ask" | "inferred";
8
+ export interface WorkflowSlot {
9
+ id: string;
10
+ label: string;
11
+ state: WorkflowSlotState;
12
+ nodeId: string;
13
+ configKey: string;
14
+ value?: string;
15
+ hint?: string;
16
+ }
5
17
  export interface WorkflowNode {
6
18
  id: string;
7
19
  kind: WorkflowNodeKind;
@@ -18,6 +30,16 @@ export interface WorkflowEdge {
18
30
  target: string;
19
31
  targetHandle: string;
20
32
  }
33
+ export type WorkflowTriggerEvent = "winner-promoted";
34
+ export type WorkflowTrigger = {
35
+ type: "event";
36
+ event: WorkflowTriggerEvent;
37
+ enabled: boolean;
38
+ } | {
39
+ type: "cron";
40
+ cron: string;
41
+ enabled: boolean;
42
+ };
21
43
  export interface WorkflowContractJson {
22
44
  contract: "exodus-workflow";
23
45
  version: number;
@@ -25,6 +47,8 @@ export interface WorkflowContractJson {
25
47
  updatedAt?: string;
26
48
  name: string;
27
49
  description?: string;
50
+ slots?: WorkflowSlot[];
51
+ triggers?: WorkflowTrigger[];
28
52
  nodes: WorkflowNode[];
29
53
  edges: WorkflowEdge[];
30
54
  }
@@ -40,10 +64,11 @@ export interface WorkflowImportResult {
40
64
  workflowId?: string;
41
65
  nodeCount: number;
42
66
  edgeCount: number;
67
+ triggers?: WorkflowTrigger[];
43
68
  unresolved: UnresolvedWorkflowRef[];
44
69
  warnings: string[];
45
70
  }
46
- export type GraphIssueCode = "bad-shape" | "unknown-kind" | "duplicate-node-id" | "dangling-edge" | "unknown-port" | "type-mismatch" | "duplicate-input" | "cycle" | "missing-required-input" | "bad-config";
71
+ export type GraphIssueCode = "bad-shape" | "unknown-kind" | "duplicate-node-id" | "dangling-edge" | "unknown-port" | "type-mismatch" | "duplicate-input" | "duplicate-input-key" | "cycle" | "missing-required-input" | "bad-config" | "bad-slot" | "bad-trigger" | "nested-split" | "fan-overlap" | "lane-ineligible" | "fan-image-budget" | "collector-unpaired" | "splitter-field-conflict";
47
72
  export interface GraphIssue {
48
73
  code: GraphIssueCode;
49
74
  message: string;
@@ -59,7 +84,7 @@ export interface WorkflowImportError {
59
84
  issues?: GraphIssue[];
60
85
  currentUpdatedAt?: string;
61
86
  }
62
- export type WorkflowPortType = "text" | "primer" | "image" | "rig" | "storyboard" | "frames" | "video" | "audio";
87
+ export type WorkflowPortType = "text" | "primer" | "image" | "rig" | "storyboard" | "frames" | "video" | "audio" | "document" | "show" | "session";
63
88
  export type WorkflowPrimerKind = "body" | "hook" | "headline" | "summary";
64
89
  export type WorkflowDurationSpec = {
65
90
  kind: "fixed";
@@ -74,6 +99,8 @@ export interface CatalogVideoModel {
74
99
  label: string;
75
100
  durations: WorkflowDurationSpec;
76
101
  audioTogglable: boolean;
102
+ aspectRatios: string[];
103
+ resolutions: string[];
77
104
  }
78
105
  export type WorkflowParamKind = "select" | "text" | "textarea" | "toggle" | "number" | "multiselect";
79
106
  export interface CatalogInput {
@@ -104,7 +131,6 @@ export interface CatalogBot {
104
131
  inputs: CatalogInput[];
105
132
  params: CatalogParam[];
106
133
  outputType: string;
107
- splitsOutput: boolean;
108
134
  }
109
135
  export interface WorkflowCatalog {
110
136
  catalog: "exodus-workflow-catalog";
@@ -130,25 +156,47 @@ export interface WorkflowCatalog {
130
156
  summaryOnlySlugs: string[];
131
157
  notes: string;
132
158
  };
159
+ promptBot: {
160
+ slug: "prompt";
161
+ configKey: "promptText";
162
+ inputs: CatalogInput[];
163
+ notes: string;
164
+ };
133
165
  }
134
166
  export type WorkflowBriefSource = "text" | "swipe-ad" | "swipe-bundle" | "organic-url" | "ad-url";
167
+ export type WorkflowMediaType = "image" | "video" | "audio" | "document";
168
+ export type WorkflowEntryFieldType = "text" | "select" | "number" | "toggle" | "multi-select";
135
169
  export interface WorkflowInputDescriptor {
136
170
  fieldName: string;
137
171
  nodeId: string;
138
- source: WorkflowBriefSource;
172
+ label?: string;
173
+ source: WorkflowBriefSource | "asset";
139
174
  required: boolean;
140
175
  description?: string;
176
+ type?: WorkflowEntryFieldType;
177
+ options?: string[];
178
+ allowOther?: boolean;
179
+ optionsSource?: string;
141
180
  bundleSize?: number;
181
+ assetType?: WorkflowMediaType;
142
182
  }
143
183
  export interface WorkflowPrerequisiteDescriptor {
144
184
  primerKind: WorkflowPrimerKind;
145
185
  nodeIds: string[];
146
186
  }
147
187
  export interface WorkflowOutputDescriptor {
148
- type: "text" | "image" | "video" | "audio" | "frames" | "storyboard";
188
+ type: "text" | "image" | "video" | "audio" | "document" | "frames" | "storyboard";
149
189
  label: string;
150
190
  nodeId: string;
151
191
  botSlug?: string;
192
+ port?: string;
193
+ }
194
+ export interface WorkflowDeliveryDescriptor {
195
+ key: string;
196
+ label: string;
197
+ type: WorkflowOutputSlotType;
198
+ description?: string;
199
+ order: number;
152
200
  }
153
201
  export interface WorkflowDescribeResponse {
154
202
  workflowId: string;
@@ -160,6 +208,16 @@ export interface WorkflowDescribeResponse {
160
208
  stored: boolean;
161
209
  }>;
162
210
  outputs: WorkflowOutputDescriptor[];
211
+ deliveries?: WorkflowDeliveryDescriptor[];
212
+ }
213
+ export interface WorkflowTemplateListItem {
214
+ key: string;
215
+ label: string;
216
+ description: string;
217
+ module?: string;
218
+ }
219
+ export interface WorkflowTemplatesResponse {
220
+ templates: WorkflowTemplateListItem[];
163
221
  }
164
222
  export interface WorkflowListItem {
165
223
  _id: string;
@@ -175,25 +233,49 @@ export interface WorkflowListItem {
175
233
  export interface WorkflowListResponse {
176
234
  workflows: WorkflowListItem[];
177
235
  }
178
- export type WorkflowRunStatus = "queued" | "running" | "awaiting-review" | "completed" | "partial" | "failed" | "canceled";
236
+ export interface WorkflowVersion {
237
+ version: number;
238
+ name: string;
239
+ savedAt: string;
240
+ savedByName?: string;
241
+ }
242
+ export interface WorkflowVersionsResponse {
243
+ versions: WorkflowVersion[];
244
+ }
245
+ export type WorkflowRunStatus = RunStatus | (typeof LEGACY_WORKFLOW_RUN_STATUS_VALUES)[number];
179
246
  export type WorkflowNodeRunStatus = "idle" | "running" | "done" | "failed" | "skipped";
247
+ export interface ArtifactItemIdentity {
248
+ index: number;
249
+ total: number;
250
+ }
180
251
  export type WorkflowArtifact = {
181
252
  type: "text";
182
253
  text: string;
183
254
  label?: string;
255
+ port?: string;
256
+ humanEdited?: boolean;
257
+ item?: ArtifactItemIdentity;
184
258
  } | {
185
259
  type: "primer";
186
260
  text: string;
187
261
  primerKind: string;
262
+ item?: ArtifactItemIdentity;
188
263
  } | {
189
264
  type: "image";
190
265
  storageId: string;
191
266
  imageUrl?: string;
267
+ item?: ArtifactItemIdentity;
268
+ } | {
269
+ type: "session";
270
+ sessionId: string;
271
+ label?: string;
272
+ port?: string;
273
+ item?: ArtifactItemIdentity;
192
274
  };
193
275
  export interface WorkflowRunOutput {
194
276
  nodeId: string;
195
277
  botSlug?: string;
196
- type: "text" | "image" | "video" | "audio" | "frames" | "storyboard";
278
+ type: "text" | "image" | "video" | "audio" | "document" | "frames" | "storyboard";
197
279
  label: string;
198
280
  text?: string;
199
281
  imageUrl?: string;
@@ -208,10 +290,30 @@ export interface WorkflowRunOutput {
208
290
  imageUrl?: string;
209
291
  }>;
210
292
  storyboardJson?: string;
293
+ documentUrl?: string;
294
+ filename?: string;
295
+ mimeType?: string;
296
+ humanEdited?: boolean;
297
+ originalText?: string;
298
+ originalImageUrl?: string;
299
+ originalVideoUrl?: string;
300
+ }
301
+ export type WorkflowOutputSlotType = "text" | "structured" | "asset" | "collection";
302
+ export interface WorkflowRunDelivery {
303
+ key: string;
304
+ label: string;
305
+ type: WorkflowOutputSlotType;
306
+ description?: string;
307
+ order: number;
308
+ nodeId: string;
309
+ status: "delivered" | "unfulfilled";
310
+ error?: string;
311
+ artifacts: WorkflowRunOutput[];
211
312
  }
212
313
  export interface WorkflowRunNode {
213
314
  nodeId: string;
214
315
  kind: string;
316
+ botSlug?: string;
215
317
  status: WorkflowNodeRunStatus;
216
318
  error?: string;
217
319
  startedAt?: number;
@@ -224,6 +326,22 @@ export interface WorkflowCounts {
224
326
  skipped: number;
225
327
  total: number;
226
328
  }
329
+ export interface WorkflowRunSession {
330
+ sessionId: string;
331
+ nodeId: string;
332
+ title: string;
333
+ botSlug: string;
334
+ }
335
+ export type WorkflowPauseReason = "taste" | "repair" | "slots" | "call" | "checkpoint";
336
+ export interface WorkflowPendingSlot {
337
+ id: string;
338
+ label?: string;
339
+ state?: string;
340
+ nodeId?: string;
341
+ configKey?: string;
342
+ value?: string;
343
+ hint?: string;
344
+ }
227
345
  export interface WorkflowRun {
228
346
  _id: string;
229
347
  workflowId: string;
@@ -239,16 +357,42 @@ export interface WorkflowRun {
239
357
  isTerminal: boolean;
240
358
  nodes: WorkflowRunNode[];
241
359
  outputs?: WorkflowRunOutput[];
360
+ deliveries?: WorkflowRunDelivery[];
361
+ sessions?: WorkflowRunSession[];
362
+ pauseReason?: WorkflowPauseReason;
363
+ pausedNodeId?: string;
364
+ pendingSlots?: WorkflowPendingSlot[];
365
+ autoApprovals?: {
366
+ nodeId: string;
367
+ approvedAt: number;
368
+ }[];
242
369
  }
243
370
  export type WorkflowRunProjection = Omit<WorkflowRun, "nodes"> & {
244
371
  nodes?: never;
245
372
  };
246
373
  export interface WorkflowRunDeps {
247
374
  get: (path: string) => Promise<ApiResponse<unknown>>;
375
+ getText: (path: string) => Promise<ApiResponse<string>>;
248
376
  post: (path: string, body: unknown) => Promise<ApiResponse<unknown>>;
249
377
  readFile: (path: string) => string;
250
378
  writeFile: (path: string, text: string) => void;
251
379
  poll: (opts: PollOptions) => Promise<PollResult>;
380
+ mkdirp?: (dir: string) => void;
381
+ downloadToFile?: (url: string, path: string) => Promise<void>;
382
+ postDashboard?: (path: string, body: unknown, opts?: {
383
+ timeoutMs?: number;
384
+ }) => Promise<ApiResponse<unknown>>;
385
+ dashboardUrl?: string;
386
+ statFile?: (filePath: string) => {
387
+ size: number;
388
+ } | null;
389
+ readFileBytes?: (filePath: string) => Uint8Array;
390
+ uploadBytes?: (uploadUrl: string, contentType: string, bytes: Uint8Array) => Promise<{
391
+ ok: boolean;
392
+ status: number;
393
+ storageId?: string;
394
+ body?: string;
395
+ }>;
252
396
  }
253
397
  export interface FlowResult {
254
398
  code: number;
@@ -256,21 +400,53 @@ export interface FlowResult {
256
400
  }
257
401
  interface RunFlowOptions {
258
402
  inputs: Record<string, string>;
403
+ terminalNodeIds?: string[];
404
+ fill?: string;
405
+ autoApprove?: boolean;
406
+ imageRigOverrides?: Record<string, unknown>;
259
407
  wait: boolean;
260
408
  json: boolean;
409
+ out?: string;
261
410
  onProgressLine?: (line: string) => void;
411
+ onWarningLine?: (line: string) => void;
262
412
  }
413
+ export declare function formatPauseNotice(pauseReason: WorkflowPauseReason | undefined, runId: string, dashboardUrl: string): string[];
414
+ export declare function parseRawInputFlags(args: string[]): Record<string, string>;
263
415
  export declare function parseInputFlags(args: string[], readFile?: (path: string) => string): Record<string, string>;
416
+ export declare const ASSET_UPLOAD_POLICY: Record<WorkflowMediaType, {
417
+ mimeByExtension: Record<string, string>;
418
+ maxBytes: number;
419
+ accepts: string;
420
+ }>;
421
+ export declare const NO_DELIVERIES_WARNING: string;
422
+ export declare function noDeliveriesWarning(described: unknown): string | undefined;
423
+ export declare function serverWarningsToPrint(serverWarnings: unknown, alreadyPrinted: string[]): string[];
424
+ export declare function parseTerminalFlags(args: string[]): string[];
425
+ export declare function parseAutoApproveFlag(args: string[]): boolean;
426
+ export declare function parseRigOverridesFlag(args: string[], readFile?: (path: string) => string): Record<string, unknown> | undefined;
427
+ export declare function parseFillFlag(args: string[]): string | undefined;
264
428
  export declare function formatWorkflowList(workflows: WorkflowListItem[]): string;
265
429
  export declare function formatRecentRuns(runs: WorkflowRunProjection[]): string;
430
+ export declare function formatWorkflowVersions(versions: WorkflowVersion[]): string;
266
431
  export declare function formatImportSummary(result: WorkflowImportResult, mode?: {
267
432
  dryRun?: boolean;
268
433
  update?: boolean;
434
+ validate?: boolean;
269
435
  }): string;
270
436
  export declare function formatWorkflowRun(run: WorkflowRun): string;
437
+ export interface DeliverySaveResult {
438
+ lines: string[];
439
+ paths: string[];
440
+ }
441
+ export declare function workflowFilenameSlug(name: string): string;
442
+ export declare function saveDeliveries(run: WorkflowRun, dir: string, deps: WorkflowRunDeps): Promise<DeliverySaveResult>;
443
+ export declare function deliveryTypeWord(type: string): string;
444
+ export declare function deliveryContractLines(deliveries: WorkflowDeliveryDescriptor[] | undefined): string[];
271
445
  export declare function formatDescribe(res: WorkflowDescribeResponse): string;
272
446
  export declare function formatBotsList(catalog: WorkflowCatalog, category?: string): string;
273
447
  export declare function formatBotDetail(bot: CatalogBot): string;
448
+ export declare function formatTemplatesList(templates: WorkflowTemplateListItem[]): string;
449
+ export declare function formatSchema(payload: Record<string, unknown>): string;
274
450
  export declare function resolveWorkflowId(ref: string, deps: WorkflowRunDeps): Promise<string>;
275
451
  export declare function listFlow(json: boolean, deps: WorkflowRunDeps): Promise<FlowResult>;
276
452
  export declare function describeFlow(workflowRef: string, opts: {
@@ -285,14 +461,123 @@ export declare function runFlow(workflowRef: string, opts: RunFlowOptions, deps:
285
461
  export declare function statusFlow(opts: {
286
462
  id?: string;
287
463
  json: boolean;
464
+ out?: string;
288
465
  }, deps: WorkflowRunDeps): Promise<FlowResult>;
289
466
  export declare function exportFlow(workflowRef: string, opts: {
290
467
  out?: string;
468
+ json?: boolean;
469
+ version?: number;
470
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
471
+ export declare function parseVersionFlag(flags: Record<string, string | boolean>): number | undefined;
472
+ export declare function versionsFlow(workflowRef: string, opts: {
473
+ json: boolean;
474
+ }, deps: WorkflowRunDeps, channel?: Channel): Promise<FlowResult>;
475
+ export declare function triggerExpect(t: WorkflowTrigger): {
476
+ type: string;
477
+ event?: string;
478
+ cron?: string;
479
+ };
480
+ export declare function formatTriggers(triggers: WorkflowTrigger[]): string;
481
+ export declare function triggersListFlow(workflowRef: string, opts: {
482
+ json: boolean;
483
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
484
+ export declare function triggersSetEnabledFlow(workflowRef: string, n: number, enabled: boolean, opts: {
485
+ json: boolean;
486
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
487
+ export declare function triggersFireFlow(workflowRef: string, opts: {
488
+ n?: number;
489
+ text?: string;
490
+ imageRigOverrides?: Record<string, unknown>;
491
+ wait: boolean;
492
+ json: boolean;
493
+ onProgressLine?: (line: string) => void;
291
494
  }, deps: WorkflowRunDeps): Promise<FlowResult>;
292
495
  export declare function importFlow(file: string, opts: {
293
496
  dryRun: boolean;
294
497
  json: boolean;
295
498
  update?: string;
296
499
  }, deps: WorkflowRunDeps): Promise<FlowResult>;
500
+ export declare function validateFlow(file: string, opts: {
501
+ json: boolean;
502
+ update?: string;
503
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
504
+ export declare function templatesListFlow(json: boolean, deps: WorkflowRunDeps): Promise<FlowResult>;
505
+ export declare function templatesExportFlow(key: string, opts: {
506
+ out?: string;
507
+ json?: boolean;
508
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
509
+ export declare function schemaFlow(opts: {
510
+ json: boolean;
511
+ kind?: string;
512
+ face?: string;
513
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
514
+ export interface WorkflowInboxRow {
515
+ _id: string;
516
+ workflowId: string;
517
+ workflowName: string;
518
+ pausedNodeId?: string;
519
+ pausedNodeKind?: string;
520
+ pauseReason?: "taste" | "repair" | "slots" | "checkpoint";
521
+ counts?: WorkflowCounts;
522
+ createdAt: number | string;
523
+ queuedAt?: number | string;
524
+ hasShow?: boolean;
525
+ invocationMode?: "live" | "background";
526
+ triggeredBy?: {
527
+ type: "event" | "cron";
528
+ event?: string;
529
+ };
530
+ pendingSlotsCount?: number;
531
+ }
532
+ export interface WorkflowInboxResponse {
533
+ runs: WorkflowInboxRow[];
534
+ }
535
+ export declare function formatAge(value: number | string | undefined, now?: number): string;
536
+ export declare function parkBadge(pauseReason: string | undefined): string;
537
+ export declare function invocationBadge(row: WorkflowInboxRow): string;
538
+ export declare function formatInbox(rows: WorkflowInboxRow[], now?: number): string;
539
+ export declare function inboxFlow(json: boolean, deps: WorkflowRunDeps): Promise<FlowResult>;
540
+ export declare function checkpointShowFlow(runId: string, opts: {
541
+ json: boolean;
542
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
543
+ export declare function parseRejectItems(raw: string | undefined): {
544
+ ok: true;
545
+ items: number[];
546
+ } | {
547
+ ok: false;
548
+ message: string;
549
+ };
550
+ export declare function checkpointApproveFlow(runId: string, opts: {
551
+ wait: boolean;
552
+ json: boolean;
553
+ onProgressLine?: (line: string) => void;
554
+ reject?: string;
555
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
556
+ export declare function checkpointEditFlow(runId: string, n: number, sources: {
557
+ text?: string;
558
+ file?: string;
559
+ stdin?: string;
560
+ }, opts: {
561
+ json: boolean;
562
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
563
+ export declare function checkpointRetryFlow(runId: string, opts: {
564
+ wait: boolean;
565
+ json: boolean;
566
+ note?: string;
567
+ onProgressLine?: (line: string) => void;
568
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
569
+ export declare function checkpointCancelFlow(runId: string, opts: {
570
+ reason?: string;
571
+ json: boolean;
572
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
573
+ export declare function repairFlow(runId: string, action: "retry" | "skip" | "kill", opts: {
574
+ wait: boolean;
575
+ json: boolean;
576
+ onProgressLine?: (line: string) => void;
577
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
578
+ export declare function parseSlotFlags(args: string[]): Record<string, string>;
579
+ export declare function answerFlow(runId: string, values: Record<string, string>, opts: {
580
+ json: boolean;
581
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
297
582
  export declare function run(flags: Record<string, string | boolean>): Promise<void>;
298
583
  export {};