@aicopycoders/exodus 2026.7.200-beta.11 → 2026.7.200-beta.12

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.
@@ -1,7 +1,18 @@
1
1
  import { type ApiResponse } from "../lib/client.js";
2
2
  import { type PollOptions, type PollResult } from "../lib/poll.js";
3
+ import { type Channel } from "../lib/channel.js";
3
4
  export declare const helpText: string;
4
- export type WorkflowNodeKind = "brief" | "bot" | "primer" | "image" | "rig" | "storyboard" | "reference" | "scene-frames" | "video" | "voiceover" | "output" | "show-set" | "show-cast" | "show-voices" | "product-truth";
5
+ export type WorkflowNodeKind = "brief" | "bot" | "primer" | "image" | "rig" | "storyboard" | "reference" | "scene-frames" | "video" | "voiceover" | "output" | "push" | "gate" | "call" | "show-set" | "show-cast" | "show-voices" | "product-truth" | "transform";
6
+ export type WorkflowSlotState = "locked" | "auto" | "ask" | "inferred";
7
+ export interface WorkflowSlot {
8
+ id: string;
9
+ label: string;
10
+ state: WorkflowSlotState;
11
+ nodeId: string;
12
+ configKey: string;
13
+ value?: string;
14
+ hint?: string;
15
+ }
5
16
  export interface WorkflowNode {
6
17
  id: string;
7
18
  kind: WorkflowNodeKind;
@@ -18,6 +29,16 @@ export interface WorkflowEdge {
18
29
  target: string;
19
30
  targetHandle: string;
20
31
  }
32
+ export type WorkflowTriggerEvent = "winner-promoted";
33
+ export type WorkflowTrigger = {
34
+ type: "event";
35
+ event: WorkflowTriggerEvent;
36
+ enabled: boolean;
37
+ } | {
38
+ type: "cron";
39
+ cron: string;
40
+ enabled: boolean;
41
+ };
21
42
  export interface WorkflowContractJson {
22
43
  contract: "exodus-workflow";
23
44
  version: number;
@@ -25,6 +46,8 @@ export interface WorkflowContractJson {
25
46
  updatedAt?: string;
26
47
  name: string;
27
48
  description?: string;
49
+ slots?: WorkflowSlot[];
50
+ triggers?: WorkflowTrigger[];
28
51
  nodes: WorkflowNode[];
29
52
  edges: WorkflowEdge[];
30
53
  }
@@ -43,7 +66,7 @@ export interface WorkflowImportResult {
43
66
  unresolved: UnresolvedWorkflowRef[];
44
67
  warnings: string[];
45
68
  }
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";
69
+ export type GraphIssueCode = "bad-shape" | "unknown-kind" | "duplicate-node-id" | "dangling-edge" | "unknown-port" | "type-mismatch" | "duplicate-input" | "session-fan-out" | "cycle" | "missing-required-input" | "bad-config" | "bad-slot" | "bad-trigger";
47
70
  export interface GraphIssue {
48
71
  code: GraphIssueCode;
49
72
  message: string;
@@ -59,7 +82,7 @@ export interface WorkflowImportError {
59
82
  issues?: GraphIssue[];
60
83
  currentUpdatedAt?: string;
61
84
  }
62
- export type WorkflowPortType = "text" | "primer" | "image" | "rig" | "storyboard" | "frames" | "video" | "audio" | "show";
85
+ export type WorkflowPortType = "text" | "primer" | "image" | "rig" | "storyboard" | "frames" | "video" | "audio" | "show" | "session";
63
86
  export type WorkflowPrimerKind = "body" | "hook" | "headline" | "summary";
64
87
  export type WorkflowDurationSpec = {
65
88
  kind: "fixed";
@@ -74,6 +97,8 @@ export interface CatalogVideoModel {
74
97
  label: string;
75
98
  durations: WorkflowDurationSpec;
76
99
  audioTogglable: boolean;
100
+ aspectRatios: string[];
101
+ resolutions: string[];
77
102
  }
78
103
  export type WorkflowParamKind = "select" | "text" | "textarea" | "toggle" | "number" | "multiselect";
79
104
  export interface CatalogInput {
@@ -104,7 +129,6 @@ export interface CatalogBot {
104
129
  inputs: CatalogInput[];
105
130
  params: CatalogParam[];
106
131
  outputType: string;
107
- splitsOutput: boolean;
108
132
  }
109
133
  export interface WorkflowCatalog {
110
134
  catalog: "exodus-workflow-catalog";
@@ -130,6 +154,12 @@ export interface WorkflowCatalog {
130
154
  summaryOnlySlugs: string[];
131
155
  notes: string;
132
156
  };
157
+ promptBot: {
158
+ slug: "prompt";
159
+ configKey: "promptText";
160
+ inputs: CatalogInput[];
161
+ notes: string;
162
+ };
133
163
  }
134
164
  export type WorkflowBriefSource = "text" | "swipe-ad" | "swipe-bundle" | "organic-url" | "ad-url";
135
165
  export interface WorkflowInputDescriptor {
@@ -149,6 +179,7 @@ export interface WorkflowOutputDescriptor {
149
179
  label: string;
150
180
  nodeId: string;
151
181
  botSlug?: string;
182
+ port?: string;
152
183
  }
153
184
  export interface WorkflowDescribeResponse {
154
185
  workflowId: string;
@@ -161,6 +192,15 @@ export interface WorkflowDescribeResponse {
161
192
  }>;
162
193
  outputs: WorkflowOutputDescriptor[];
163
194
  }
195
+ export interface WorkflowTemplateListItem {
196
+ key: string;
197
+ label: string;
198
+ description: string;
199
+ module?: string;
200
+ }
201
+ export interface WorkflowTemplatesResponse {
202
+ templates: WorkflowTemplateListItem[];
203
+ }
164
204
  export interface WorkflowListItem {
165
205
  _id: string;
166
206
  name: string;
@@ -175,12 +215,23 @@ export interface WorkflowListItem {
175
215
  export interface WorkflowListResponse {
176
216
  workflows: WorkflowListItem[];
177
217
  }
218
+ export interface WorkflowVersion {
219
+ version: number;
220
+ name: string;
221
+ savedAt: string;
222
+ savedByName?: string;
223
+ }
224
+ export interface WorkflowVersionsResponse {
225
+ versions: WorkflowVersion[];
226
+ }
178
227
  export type WorkflowRunStatus = "queued" | "running" | "awaiting-review" | "completed" | "partial" | "failed" | "canceled";
179
228
  export type WorkflowNodeRunStatus = "idle" | "running" | "done" | "failed" | "skipped";
180
229
  export type WorkflowArtifact = {
181
230
  type: "text";
182
231
  text: string;
183
232
  label?: string;
233
+ port?: string;
234
+ humanEdited?: boolean;
184
235
  } | {
185
236
  type: "primer";
186
237
  text: string;
@@ -224,6 +275,22 @@ export interface WorkflowCounts {
224
275
  skipped: number;
225
276
  total: number;
226
277
  }
278
+ export interface WorkflowRunSession {
279
+ sessionId: string;
280
+ nodeId: string;
281
+ title: string;
282
+ botSlug: string;
283
+ }
284
+ export type WorkflowPauseReason = "taste" | "repair" | "slots" | "call";
285
+ export interface WorkflowPendingSlot {
286
+ id: string;
287
+ label?: string;
288
+ state?: string;
289
+ nodeId?: string;
290
+ configKey?: string;
291
+ value?: string;
292
+ hint?: string;
293
+ }
227
294
  export interface WorkflowRun {
228
295
  _id: string;
229
296
  workflowId: string;
@@ -239,16 +306,25 @@ export interface WorkflowRun {
239
306
  isTerminal: boolean;
240
307
  nodes: WorkflowRunNode[];
241
308
  outputs?: WorkflowRunOutput[];
309
+ sessions?: WorkflowRunSession[];
310
+ pauseReason?: WorkflowPauseReason;
311
+ pausedNodeId?: string;
312
+ pendingSlots?: WorkflowPendingSlot[];
242
313
  }
243
314
  export type WorkflowRunProjection = Omit<WorkflowRun, "nodes"> & {
244
315
  nodes?: never;
245
316
  };
246
317
  export interface WorkflowRunDeps {
247
318
  get: (path: string) => Promise<ApiResponse<unknown>>;
319
+ getText: (path: string) => Promise<ApiResponse<string>>;
248
320
  post: (path: string, body: unknown) => Promise<ApiResponse<unknown>>;
249
321
  readFile: (path: string) => string;
250
322
  writeFile: (path: string, text: string) => void;
251
323
  poll: (opts: PollOptions) => Promise<PollResult>;
324
+ postDashboard?: (path: string, body: unknown, opts?: {
325
+ timeoutMs?: number;
326
+ }) => Promise<ApiResponse<unknown>>;
327
+ dashboardUrl?: string;
252
328
  }
253
329
  export interface FlowResult {
254
330
  code: number;
@@ -256,21 +332,28 @@ export interface FlowResult {
256
332
  }
257
333
  interface RunFlowOptions {
258
334
  inputs: Record<string, string>;
335
+ terminalNodeIds?: string[];
259
336
  wait: boolean;
260
337
  json: boolean;
261
338
  onProgressLine?: (line: string) => void;
262
339
  }
340
+ export declare function formatPauseNotice(pauseReason: WorkflowPauseReason | undefined, runId: string, dashboardUrl: string): string[];
263
341
  export declare function parseInputFlags(args: string[], readFile?: (path: string) => string): Record<string, string>;
342
+ export declare function parseTerminalFlags(args: string[]): string[];
264
343
  export declare function formatWorkflowList(workflows: WorkflowListItem[]): string;
265
344
  export declare function formatRecentRuns(runs: WorkflowRunProjection[]): string;
345
+ export declare function formatWorkflowVersions(versions: WorkflowVersion[]): string;
266
346
  export declare function formatImportSummary(result: WorkflowImportResult, mode?: {
267
347
  dryRun?: boolean;
268
348
  update?: boolean;
349
+ validate?: boolean;
269
350
  }): string;
270
351
  export declare function formatWorkflowRun(run: WorkflowRun): string;
271
352
  export declare function formatDescribe(res: WorkflowDescribeResponse): string;
272
353
  export declare function formatBotsList(catalog: WorkflowCatalog, category?: string): string;
273
354
  export declare function formatBotDetail(bot: CatalogBot): string;
355
+ export declare function formatTemplatesList(templates: WorkflowTemplateListItem[]): string;
356
+ export declare function formatSchema(payload: Record<string, unknown>): string;
274
357
  export declare function resolveWorkflowId(ref: string, deps: WorkflowRunDeps): Promise<string>;
275
358
  export declare function listFlow(json: boolean, deps: WorkflowRunDeps): Promise<FlowResult>;
276
359
  export declare function describeFlow(workflowRef: string, opts: {
@@ -288,11 +371,110 @@ export declare function statusFlow(opts: {
288
371
  }, deps: WorkflowRunDeps): Promise<FlowResult>;
289
372
  export declare function exportFlow(workflowRef: string, opts: {
290
373
  out?: string;
374
+ json?: boolean;
375
+ version?: number;
376
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
377
+ export declare function parseVersionFlag(flags: Record<string, string | boolean>): number | undefined;
378
+ export declare function versionsFlow(workflowRef: string, opts: {
379
+ json: boolean;
380
+ }, deps: WorkflowRunDeps, channel?: Channel): Promise<FlowResult>;
381
+ export declare function triggerExpect(t: WorkflowTrigger): {
382
+ type: string;
383
+ event?: string;
384
+ cron?: string;
385
+ };
386
+ export declare function formatTriggers(triggers: WorkflowTrigger[]): string;
387
+ export declare function triggersListFlow(workflowRef: string, opts: {
388
+ json: boolean;
389
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
390
+ export declare function triggersSetEnabledFlow(workflowRef: string, n: number, enabled: boolean, opts: {
391
+ json: boolean;
392
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
393
+ export declare function triggersFireFlow(workflowRef: string, opts: {
394
+ n?: number;
395
+ text?: string;
396
+ wait: boolean;
397
+ json: boolean;
398
+ onProgressLine?: (line: string) => void;
291
399
  }, deps: WorkflowRunDeps): Promise<FlowResult>;
292
400
  export declare function importFlow(file: string, opts: {
293
401
  dryRun: boolean;
294
402
  json: boolean;
295
403
  update?: string;
296
404
  }, deps: WorkflowRunDeps): Promise<FlowResult>;
405
+ export declare function validateFlow(file: string, opts: {
406
+ json: boolean;
407
+ update?: string;
408
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
409
+ export declare function templatesListFlow(json: boolean, deps: WorkflowRunDeps): Promise<FlowResult>;
410
+ export declare function templatesExportFlow(key: string, opts: {
411
+ out?: string;
412
+ json?: boolean;
413
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
414
+ export declare function schemaFlow(opts: {
415
+ json: boolean;
416
+ kind?: string;
417
+ face?: string;
418
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
419
+ export interface WorkflowInboxRow {
420
+ _id: string;
421
+ workflowId: string;
422
+ workflowName: string;
423
+ pausedNodeId?: string;
424
+ pausedNodeKind?: string;
425
+ pauseReason?: "taste" | "repair" | "slots";
426
+ counts?: WorkflowCounts;
427
+ createdAt: number | string;
428
+ queuedAt?: number | string;
429
+ hasShow?: boolean;
430
+ invocationMode?: "live" | "background";
431
+ triggeredBy?: {
432
+ type: "event" | "cron";
433
+ event?: string;
434
+ };
435
+ pendingSlotsCount?: number;
436
+ }
437
+ export interface WorkflowInboxResponse {
438
+ runs: WorkflowInboxRow[];
439
+ }
440
+ export declare function formatAge(value: number | string | undefined, now?: number): string;
441
+ export declare function parkBadge(pauseReason: string | undefined): string;
442
+ export declare function invocationBadge(row: WorkflowInboxRow): string;
443
+ export declare function formatInbox(rows: WorkflowInboxRow[], now?: number): string;
444
+ export declare function inboxFlow(json: boolean, deps: WorkflowRunDeps): Promise<FlowResult>;
445
+ export declare function gateShowFlow(runId: string, opts: {
446
+ json: boolean;
447
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
448
+ export declare function gatePickFlow(runId: string, numbers: number[], opts: {
449
+ json: boolean;
450
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
451
+ export declare function gateEditFlow(runId: string, n: number, sources: {
452
+ text?: string;
453
+ file?: string;
454
+ stdin?: string;
455
+ }, opts: {
456
+ json: boolean;
457
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
458
+ export declare function gatePushFlow(runId: string, message: string, opts: {
459
+ json: boolean;
460
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
461
+ export declare function gateApproveFlow(runId: string, opts: {
462
+ wait: boolean;
463
+ json: boolean;
464
+ onProgressLine?: (line: string) => void;
465
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
466
+ export declare function gateRejectFlow(runId: string, opts: {
467
+ reason?: string;
468
+ json: boolean;
469
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
470
+ export declare function repairFlow(runId: string, action: "retry" | "skip" | "kill", opts: {
471
+ wait: boolean;
472
+ json: boolean;
473
+ onProgressLine?: (line: string) => void;
474
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
475
+ export declare function parseSlotFlags(args: string[]): Record<string, string>;
476
+ export declare function answerFlow(runId: string, values: Record<string, string>, opts: {
477
+ json: boolean;
478
+ }, deps: WorkflowRunDeps): Promise<FlowResult>;
297
479
  export declare function run(flags: Record<string, string | boolean>): Promise<void>;
298
480
  export {};