@workglow/task-graph 0.0.89 → 0.0.91

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 (60) hide show
  1. package/dist/browser.js +2251 -340
  2. package/dist/browser.js.map +24 -15
  3. package/dist/bun.js +2251 -340
  4. package/dist/bun.js.map +24 -15
  5. package/dist/node.js +2251 -340
  6. package/dist/node.js.map +24 -15
  7. package/dist/task/ConditionUtils.d.ts +47 -0
  8. package/dist/task/ConditionUtils.d.ts.map +1 -0
  9. package/dist/task/ConditionalTask.d.ts +15 -0
  10. package/dist/task/ConditionalTask.d.ts.map +1 -1
  11. package/dist/task/GraphAsTask.d.ts.map +1 -1
  12. package/dist/task/ITask.d.ts +7 -0
  13. package/dist/task/ITask.d.ts.map +1 -1
  14. package/dist/task/IteratorTask.d.ts +177 -0
  15. package/dist/task/IteratorTask.d.ts.map +1 -0
  16. package/dist/task/IteratorTaskRunner.d.ts +36 -0
  17. package/dist/task/IteratorTaskRunner.d.ts.map +1 -0
  18. package/dist/task/MapTask.d.ts +82 -0
  19. package/dist/task/MapTask.d.ts.map +1 -0
  20. package/dist/task/ReduceTask.d.ts +61 -0
  21. package/dist/task/ReduceTask.d.ts.map +1 -0
  22. package/dist/task/StreamTypes.d.ts +96 -0
  23. package/dist/task/StreamTypes.d.ts.map +1 -0
  24. package/dist/task/Task.d.ts +2 -2
  25. package/dist/task/Task.d.ts.map +1 -1
  26. package/dist/task/TaskEvents.d.ts +7 -0
  27. package/dist/task/TaskEvents.d.ts.map +1 -1
  28. package/dist/task/TaskJSON.d.ts +3 -2
  29. package/dist/task/TaskJSON.d.ts.map +1 -1
  30. package/dist/task/TaskRunner.d.ts +7 -0
  31. package/dist/task/TaskRunner.d.ts.map +1 -1
  32. package/dist/task/TaskTypes.d.ts +4 -1
  33. package/dist/task/TaskTypes.d.ts.map +1 -1
  34. package/dist/task/WhileTask.d.ts +214 -0
  35. package/dist/task/WhileTask.d.ts.map +1 -0
  36. package/dist/task/WhileTaskRunner.d.ts +29 -0
  37. package/dist/task/WhileTaskRunner.d.ts.map +1 -0
  38. package/dist/task/index.d.ts +13 -1
  39. package/dist/task/index.d.ts.map +1 -1
  40. package/dist/task/iterationSchema.d.ts +70 -0
  41. package/dist/task/iterationSchema.d.ts.map +1 -0
  42. package/dist/task-graph/Dataflow.d.ts +34 -0
  43. package/dist/task-graph/Dataflow.d.ts.map +1 -1
  44. package/dist/task-graph/DataflowEvents.d.ts +2 -0
  45. package/dist/task-graph/DataflowEvents.d.ts.map +1 -1
  46. package/dist/task-graph/ITaskGraph.d.ts +6 -0
  47. package/dist/task-graph/ITaskGraph.d.ts.map +1 -1
  48. package/dist/task-graph/TaskGraph.d.ts +14 -0
  49. package/dist/task-graph/TaskGraph.d.ts.map +1 -1
  50. package/dist/task-graph/TaskGraphEvents.d.ts +7 -0
  51. package/dist/task-graph/TaskGraphEvents.d.ts.map +1 -1
  52. package/dist/task-graph/TaskGraphRunner.d.ts +25 -0
  53. package/dist/task-graph/TaskGraphRunner.d.ts.map +1 -1
  54. package/dist/task-graph/TaskGraphScheduler.d.ts +9 -0
  55. package/dist/task-graph/TaskGraphScheduler.d.ts.map +1 -1
  56. package/dist/task-graph/Workflow.d.ts +148 -9
  57. package/dist/task-graph/Workflow.d.ts.map +1 -1
  58. package/package.json +7 -7
  59. package/dist/task/TaskJSON.test.d.ts +0 -7
  60. package/dist/task/TaskJSON.test.d.ts.map +0 -1
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Comparison operators supported by the UI condition builder.
8
+ */
9
+ export type ComparisonOperator = "equals" | "not_equals" | "greater_than" | "greater_or_equal" | "less_than" | "less_or_equal" | "contains" | "starts_with" | "ends_with" | "is_empty" | "is_not_empty" | "is_true" | "is_false";
10
+ /**
11
+ * Serialized condition branch configuration from the UI builder.
12
+ * Used by ConditionalTask to auto-build runtime condition functions.
13
+ */
14
+ export interface UIConditionBranch {
15
+ id: string;
16
+ field: string;
17
+ operator: ComparisonOperator;
18
+ value: string;
19
+ }
20
+ /**
21
+ * Serialized condition configuration from the UI builder.
22
+ * Used by ConditionalTask to auto-build runtime branch configs.
23
+ */
24
+ export interface UIConditionConfig {
25
+ branches: UIConditionBranch[];
26
+ exclusive: boolean;
27
+ defaultBranch?: string;
28
+ }
29
+ /**
30
+ * Evaluates a condition based on operator type.
31
+ *
32
+ * @param fieldValue - The value of the field being tested
33
+ * @param operator - The comparison operator to apply
34
+ * @param compareValue - The value to compare against (always a string from the UI)
35
+ * @returns true if the condition is met, false otherwise
36
+ */
37
+ export declare function evaluateCondition(fieldValue: unknown, operator: ComparisonOperator, compareValue: string): boolean;
38
+ /**
39
+ * Get a value from a nested object using dot notation.
40
+ * e.g., "user.name" would get obj.user.name
41
+ *
42
+ * @param obj - The object to read from
43
+ * @param path - Dot-separated path to the value
44
+ * @returns The value at the path, or undefined if any segment is missing
45
+ */
46
+ export declare function getNestedValue(obj: Record<string, unknown>, path: string): unknown;
47
+ //# sourceMappingURL=ConditionUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConditionUtils.d.ts","sourceRoot":"","sources":["../../src/task/ConditionUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,YAAY,GACZ,cAAc,GACd,kBAAkB,GAClB,WAAW,GACX,eAAe,GACf,UAAU,GACV,aAAa,GACb,WAAW,GACX,UAAU,GACV,cAAc,GACd,SAAS,GACT,UAAU,CAAC;AAEf;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,EAAE,MAAM,GACnB,OAAO,CAsET;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAYlF"}
@@ -200,7 +200,22 @@ export declare class ConditionalTask<Input extends TaskInput = TaskInput, Output
200
200
  * @param context - Execution context with signal and progress callback
201
201
  * @returns Output with active branch data and metadata
202
202
  */
203
+ /**
204
+ * Builds runtime branch configs from serialized UI condition config.
205
+ */
206
+ private buildBranchesFromConditionConfig;
207
+ /**
208
+ * Resolves the effective branches to evaluate.
209
+ * Uses config.branches if they have condition functions,
210
+ * otherwise falls back to conditionConfig from input or extras.
211
+ */
212
+ private resolveBranches;
203
213
  execute(input: Input, context: IExecuteContext): Promise<Output | undefined>;
214
+ /**
215
+ * Builds output in the UI-style format where inputs are passed through
216
+ * with numbered suffixes based on matched branches.
217
+ */
218
+ protected buildConditionConfigOutput(input: Input, branches: BranchConfig<Input>[], isExclusive: boolean): Output;
204
219
  /**
205
220
  * Builds the output object with data routed to active branch ports.
206
221
  * Each active branch's output port receives the full input data.
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionalTask.d.ts","sourceRoot":"","sources":["../../src/task/ConditionalTask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMnF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;AAE3D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,YAAY,CAAC,KAAK;IACjC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAEvC,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,qBAAa,eAAe,CAC1B,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,qBAAqB,GAAG,qBAAqB,CAC5D,SAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IACnC,iEAAiE;IACjE,MAAM,CAAC,IAAI,EAAE,YAAY,CAAqB;IAE9C,iDAAiD;IACjD,MAAM,CAAC,QAAQ,SAAY;IAE3B,8CAA8C;IAC9C,MAAM,CAAC,KAAK,SAAsB;IAClC,MAAM,CAAC,WAAW,SAAkE;IAEpF,8EAA8E;IAC9E,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAQ;IAEzC;;;;OAIG;IACI,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAM/C;;;;;;;OAOG;IACU,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAwCzF;;;;;;OAMG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAsB3C;;;;;;;;;;;;;OAaG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIhD;;;;;OAKG;IACI,iBAAiB,IAAI,GAAG,CAAC,MAAM,CAAC;IAIvC;;;;;;;;;;;;;OAaG;IACI,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAelD;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,IAAI,cAAc;IAerC;;;;;OAKG;IACH,YAAY,IAAI,cAAc;IA0B9B;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,IAAI,cAAc;IAQpC;;;;OAIG;IACH,WAAW,IAAI,cAAc;CAO9B"}
1
+ {"version":3,"file":"ConditionalTask.d.ts","sourceRoot":"","sources":["../../src/task/ConditionalTask.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GraphAsTask.d.ts","sourceRoot":"","sources":["../../src/task/GraphAsTask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAiB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAkB,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,WAAW,CACtB,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,CACpD,SAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAKnC,OAAc,IAAI,EAAE,YAAY,CAAiB;IACjD,OAAc,KAAK,EAAE,MAAM,CAAmB;IAC9C,OAAc,WAAW,EAAE,MAAM,CAA8C;IAC/E,OAAc,QAAQ,EAAE,MAAM,CAAY;IAC1C,OAAc,aAAa,EAAE,qBAAqB,CAAkB;IAEpE,gFAAgF;IAChF,OAAc,iBAAiB,EAAE,OAAO,CAAQ;gBAMpC,KAAK,GAAE,OAAO,CAAC,KAAK,CAAM,EAAE,MAAM,GAAE,OAAO,CAAC,MAAM,CAAM;IAa5D,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1D;;OAEG;IACH,IAAa,MAAM,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAK9D;IAMD,IAAW,aAAa,IAAI,qBAAqB,CAEhD;IAED,IAAW,SAAS,IAAI,OAAO,CAM9B;IAMD;;;;OAIG;IACI,WAAW,IAAI,cAAc;IAsDpC,SAAS,CAAC,gBAAgB,EAAE,UAAU,GAAG,SAAS,CAAC;IACnD;;OAEG;cACgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU;IAoBrE;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;;OAGG;IACa,YAAY,IAAI,cAAc;IA2E9C;;OAEG;IACI,cAAc,IAAI,IAAI;IAgB7B;;;;;;OAMG;IACI,eAAe,IAAI,IAAI;IAS9B;;;OAGG;IACI,MAAM,IAAI,iBAAiB;IAalC;;;OAGG;IACI,gBAAgB,IAAI,YAAY;CAUxC"}
1
+ {"version":3,"file":"GraphAsTask.d.ts","sourceRoot":"","sources":["../../src/task/GraphAsTask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAiB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAkB,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,WAAW,CACtB,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,CACpD,SAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAKnC,OAAc,IAAI,EAAE,YAAY,CAAiB;IACjD,OAAc,KAAK,EAAE,MAAM,CAAW;IACtC,OAAc,WAAW,EAAE,MAAM,CAAiD;IAClF,OAAc,QAAQ,EAAE,MAAM,CAAkB;IAChD,OAAc,aAAa,EAAE,qBAAqB,CAAkB;IAEpE,gFAAgF;IAChF,OAAc,iBAAiB,EAAE,OAAO,CAAQ;gBAMpC,KAAK,GAAE,OAAO,CAAC,KAAK,CAAM,EAAE,MAAM,GAAE,OAAO,CAAC,MAAM,CAAM;IAa5D,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1D;;OAEG;IACH,IAAa,MAAM,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAK9D;IAMD,IAAW,aAAa,IAAI,qBAAqB,CAEhD;IAED,IAAW,SAAS,IAAI,OAAO,CAM9B;IAMD;;;;OAIG;IACI,WAAW,IAAI,cAAc;IAsDpC,SAAS,CAAC,gBAAgB,EAAE,UAAU,GAAG,SAAS,CAAC;IACnD;;OAEG;cACgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU;IAoBrE;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;;OAGG;IACa,YAAY,IAAI,cAAc;IA2E9C;;OAEG;IACI,cAAc,IAAI,IAAI;IAgB7B;;;;;;OAMG;IACI,eAAe,IAAI,IAAI;IAS9B;;;OAGG;IACI,MAAM,IAAI,iBAAiB;IAalC;;;OAGG;IACI,gBAAgB,IAAI,YAAY;CAUxC"}
@@ -9,6 +9,7 @@ import { ITaskGraph } from "../task-graph/ITaskGraph";
9
9
  import { IWorkflow } from "../task-graph/IWorkflow";
10
10
  import type { TaskGraph } from "../task-graph/TaskGraph";
11
11
  import { CompoundMergeStrategy } from "../task-graph/TaskGraphRunner";
12
+ import type { StreamEvent } from "./StreamTypes";
12
13
  import { TaskError } from "./TaskError";
13
14
  import type { TaskEventListener, TaskEventListeners, TaskEventParameters, TaskEvents } from "./TaskEvents";
14
15
  import type { JsonTaskItem, TaskGraphItemJson } from "./TaskJSON";
@@ -54,6 +55,12 @@ export interface ITaskStaticProperties {
54
55
  export interface ITaskExecution<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput> {
55
56
  execute(input: Input, context: IExecuteContext): Promise<Output | undefined>;
56
57
  executeReactive(input: Input, output: Output, context: IExecuteReactiveContext): Promise<Output | undefined>;
58
+ /**
59
+ * Optional streaming execution method.
60
+ * When implemented, returns an async iterable of StreamEvents instead of a single output.
61
+ * Only available on tasks where the static `streamable` property is true.
62
+ */
63
+ executeStream?(input: Input, context: IExecuteContext): AsyncIterable<StreamEvent<Output>>;
57
64
  }
58
65
  /**
59
66
  * Interface for task lifecycle management
@@ -1 +1 @@
1
- {"version":3,"file":"ITask.d.ts","sourceRoot":"","sources":["../../src/task/ITask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ITask.d.ts","sourceRoot":"","sources":["../../src/task/ITask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { DataPortSchema } from "@workglow/util";
7
+ import { TaskGraph } from "../task-graph/TaskGraph";
8
+ import { GraphAsTask, GraphAsTaskConfig } from "./GraphAsTask";
9
+ import { IteratorTaskRunner } from "./IteratorTaskRunner";
10
+ import type { TaskInput, TaskOutput, TaskTypeName } from "./TaskTypes";
11
+ /**
12
+ * Standard iteration context schema for IteratorTask subclasses (Map, Reduce).
13
+ * Properties are marked with "x-ui-iteration": true so the builder
14
+ * knows to hide them from parent-level display.
15
+ */
16
+ export declare const ITERATOR_CONTEXT_SCHEMA: DataPortSchema;
17
+ /**
18
+ * Execution mode for iterator tasks.
19
+ * - `parallel`: Execute all iterations concurrently (logical mode)
20
+ * - `parallel-limited`: Execute with a concurrency limit
21
+ */
22
+ export type ExecutionMode = "parallel" | "parallel-limited";
23
+ /**
24
+ * Input mode for a property in the iteration input schema.
25
+ * - "array": Property must be an array (will be iterated)
26
+ * - "scalar": Property must be a scalar (constant for all iterations)
27
+ * - "flexible": Property accepts both array and scalar (T | T[])
28
+ */
29
+ export type IterationInputMode = "array" | "scalar" | "flexible";
30
+ /**
31
+ * Configuration for a single property in the iteration input schema.
32
+ */
33
+ export interface IterationPropertyConfig {
34
+ /** The base schema for the property (without array wrapping) */
35
+ readonly baseSchema: DataPortSchema;
36
+ /** The input mode for this property */
37
+ readonly mode: IterationInputMode;
38
+ }
39
+ /**
40
+ * Configuration interface for IteratorTask.
41
+ * Extends GraphAsTaskConfig with iterator-specific options.
42
+ */
43
+ export interface IteratorTaskConfig extends GraphAsTaskConfig {
44
+ /**
45
+ * Maximum number of concurrent iteration workers
46
+ * @default undefined (unlimited)
47
+ */
48
+ readonly concurrencyLimit?: number;
49
+ /**
50
+ * Number of items per batch. When set, iteration indices are grouped into batches.
51
+ * @default undefined
52
+ */
53
+ readonly batchSize?: number;
54
+ /**
55
+ * User-defined iteration input schema configuration.
56
+ */
57
+ readonly iterationInputConfig?: Record<string, IterationPropertyConfig>;
58
+ }
59
+ /**
60
+ * Result of detecting the iterator port from the input schema.
61
+ */
62
+ interface IteratorPortInfo {
63
+ readonly portName: string;
64
+ readonly itemSchema: DataPortSchema;
65
+ }
66
+ /**
67
+ * Result of analyzing input for iteration.
68
+ */
69
+ export interface IterationAnalysisResult {
70
+ /** The number of iterations to perform */
71
+ readonly iterationCount: number;
72
+ /** Names of properties that are arrays (to be iterated) */
73
+ readonly arrayPorts: string[];
74
+ /** Names of properties that are scalars (passed as constants) */
75
+ readonly scalarPorts: string[];
76
+ /** Gets the input for a specific iteration index */
77
+ getIterationInput(index: number): Record<string, unknown>;
78
+ }
79
+ /**
80
+ * Creates a union type schema (T | T[]) for flexible iteration input.
81
+ */
82
+ export declare function createFlexibleSchema(baseSchema: DataPortSchema): DataPortSchema;
83
+ /**
84
+ * Creates an array schema from a base schema.
85
+ */
86
+ export declare function createArraySchema(baseSchema: DataPortSchema): DataPortSchema;
87
+ /**
88
+ * Extracts the base (scalar) schema from a potentially wrapped schema.
89
+ */
90
+ export declare function extractBaseSchema(schema: DataPortSchema): DataPortSchema;
91
+ /**
92
+ * Determines if a schema accepts arrays (is array type or has array in union).
93
+ */
94
+ export declare function schemaAcceptsArray(schema: DataPortSchema): boolean;
95
+ /**
96
+ * Base class for iterator tasks that process collections of items.
97
+ */
98
+ export declare abstract class IteratorTask<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput, Config extends IteratorTaskConfig = IteratorTaskConfig> extends GraphAsTask<Input, Output, Config> {
99
+ static type: TaskTypeName;
100
+ static category: string;
101
+ static title: string;
102
+ static description: string;
103
+ /** This task has dynamic schemas based on the inner workflow */
104
+ static hasDynamicSchemas: boolean;
105
+ /**
106
+ * Returns the schema for iteration-context inputs that will be
107
+ * injected into the subgraph at runtime.
108
+ */
109
+ static getIterationContextSchema(): DataPortSchema;
110
+ /** Cached iterator port info from schema analysis. */
111
+ protected _iteratorPortInfo: IteratorPortInfo | undefined;
112
+ /** Cached computed iteration input schema. */
113
+ protected _iterationInputSchema: DataPortSchema | undefined;
114
+ constructor(input?: Partial<Input>, config?: Partial<Config>);
115
+ _runner: IteratorTaskRunner<Input, Output, Config>;
116
+ get runner(): IteratorTaskRunner<Input, Output, Config>;
117
+ set subGraph(subGraph: TaskGraph);
118
+ get subGraph(): TaskGraph;
119
+ regenerateGraph(): void;
120
+ /**
121
+ * Whether results should be ordered by iteration index.
122
+ * MapTask overrides this to use its `preserveOrder` config.
123
+ */
124
+ preserveIterationOrder(): boolean;
125
+ /**
126
+ * Whether this iterator runs in reduce mode.
127
+ */
128
+ isReduceTask(): boolean;
129
+ /**
130
+ * Initial accumulator for reduce mode.
131
+ */
132
+ getInitialAccumulator(): Output;
133
+ /**
134
+ * Builds the per-iteration subgraph input.
135
+ */
136
+ buildIterationRunInput(analysis: IterationAnalysisResult, index: number, iterationCount: number, extraInput?: Record<string, unknown>): Record<string, unknown>;
137
+ /**
138
+ * Updates the accumulator with one iteration result in reduce mode.
139
+ */
140
+ mergeIterationIntoAccumulator(accumulator: Output, iterationResult: TaskOutput | undefined, _index: number): Output;
141
+ /**
142
+ * Returns the result when there are no items to iterate.
143
+ */
144
+ getEmptyResult(): Output;
145
+ /**
146
+ * Collects and merges results from all iterations.
147
+ */
148
+ collectResults(results: TaskOutput[]): Output;
149
+ get concurrencyLimit(): number | undefined;
150
+ get batchSize(): number | undefined;
151
+ get iterationInputConfig(): Record<string, IterationPropertyConfig> | undefined;
152
+ protected buildDefaultIterationInputSchema(): DataPortSchema;
153
+ protected buildConfiguredIterationInputSchema(): DataPortSchema;
154
+ /**
155
+ * Derives the schema accepted by each iteration of the inner workflow.
156
+ * This uses root task inputs and does not require an InputTask node.
157
+ */
158
+ protected getInnerInputSchema(): DataPortSchema | undefined;
159
+ getIterationInputSchema(): DataPortSchema;
160
+ setIterationInputSchema(schema: DataPortSchema): void;
161
+ setPropertyInputMode(propertyName: string, mode: IterationInputMode, baseSchema?: DataPortSchema): void;
162
+ invalidateIterationInputSchema(): void;
163
+ /**
164
+ * Analyzes input to determine which ports are iterated vs scalar.
165
+ * Precedence:
166
+ * 1) explicit x-ui-iteration annotation
167
+ * 2) schema inference where deterministic
168
+ * 3) runtime value fallback (Array.isArray)
169
+ */
170
+ analyzeIterationInput(input: Input): IterationAnalysisResult;
171
+ getIterationContextSchema(): DataPortSchema;
172
+ inputSchema(): DataPortSchema;
173
+ outputSchema(): DataPortSchema;
174
+ protected getWrappedOutputSchema(): DataPortSchema;
175
+ }
176
+ export {};
177
+ //# sourceMappingURL=IteratorTask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IteratorTask.d.ts","sourceRoot":"","sources":["../../src/task/IteratorTask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { GraphAsTaskRunner } from "./GraphAsTaskRunner";
7
+ import type { IterationAnalysisResult, IteratorTask, IteratorTaskConfig } from "./IteratorTask";
8
+ import type { TaskInput, TaskOutput } from "./TaskTypes";
9
+ /**
10
+ * Runner for IteratorTask that executes a single subgraph repeatedly with
11
+ * per-iteration inputs. The task defines iteration analysis/collection hooks,
12
+ * while this runner owns scheduling and execution orchestration.
13
+ */
14
+ export declare class IteratorTaskRunner<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput, Config extends IteratorTaskConfig = IteratorTaskConfig> extends GraphAsTaskRunner<Input, Output, Config> {
15
+ task: IteratorTask<Input, Output, Config>;
16
+ /**
17
+ * Subgraph runs are serialized against one shared subgraph instance.
18
+ */
19
+ private subGraphRunChain;
20
+ /**
21
+ * For iterator tasks, reactive runs use full execution for correctness.
22
+ */
23
+ protected executeTask(input: Input): Promise<Output | undefined>;
24
+ /**
25
+ * Iterator tasks should only run the task's reactive hook here.
26
+ */
27
+ executeTaskReactive(input: Input, output: Output): Promise<Output>;
28
+ protected executeCollectIterations(analysis: IterationAnalysisResult): Promise<Output>;
29
+ protected executeReduceIterations(analysis: IterationAnalysisResult): Promise<Output>;
30
+ protected executeBatch(indices: number[], analysis: IterationAnalysisResult, iterationCount: number, concurrency: number): Promise<Array<{
31
+ index: number;
32
+ result: TaskOutput | undefined;
33
+ }>>;
34
+ protected executeSubgraphIteration(input: Record<string, unknown>): Promise<TaskOutput | undefined>;
35
+ }
36
+ //# sourceMappingURL=IteratorTaskRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IteratorTaskRunner.d.ts","sourceRoot":"","sources":["../../src/task/IteratorTaskRunner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;GAIG;AACH,qBAAa,kBAAkB,CAC7B,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,CACtD,SAAQ,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IACxC,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAElD;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAoC;IAE5D;;OAEG;cAEsB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAe/E;;OAEG;IACmB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAKxE,wBAAwB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;cAqD5E,uBAAuB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;cAuB3E,YAAY,CAC1B,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,uBAAuB,EACjC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;cA8BpD,wBAAwB,CACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;CA+BnC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { DataPortSchema } from "@workglow/util";
7
+ import { IteratorTask, IteratorTaskConfig } from "./IteratorTask";
8
+ import type { TaskInput, TaskOutput, TaskTypeName } from "./TaskTypes";
9
+ /**
10
+ * Configuration for MapTask.
11
+ */
12
+ export interface MapTaskConfig extends IteratorTaskConfig {
13
+ /**
14
+ * Whether to preserve the order of results matching the input order.
15
+ * When false, results may be in completion order.
16
+ * @default true
17
+ */
18
+ readonly preserveOrder?: boolean;
19
+ /**
20
+ * Whether to flatten array results from each iteration.
21
+ * When true, if each iteration returns an array, they are concatenated.
22
+ * @default false
23
+ */
24
+ readonly flatten?: boolean;
25
+ }
26
+ /**
27
+ * MapTask transforms one or more array inputs by running a workflow for each index.
28
+ */
29
+ export declare class MapTask<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput, Config extends MapTaskConfig = MapTaskConfig> extends IteratorTask<Input, Output, Config> {
30
+ static type: TaskTypeName;
31
+ static category: string;
32
+ static title: string;
33
+ static description: string;
34
+ /**
35
+ * MapTask always uses PROPERTY_ARRAY merge strategy to collect results.
36
+ */
37
+ static readonly compoundMerge: "PROPERTY_ARRAY";
38
+ /**
39
+ * Static input schema for MapTask.
40
+ */
41
+ static inputSchema(): DataPortSchema;
42
+ /**
43
+ * Static output schema for MapTask.
44
+ */
45
+ static outputSchema(): DataPortSchema;
46
+ /**
47
+ * Whether to preserve order of results.
48
+ */
49
+ get preserveOrder(): boolean;
50
+ /**
51
+ * Whether to flatten nested array results.
52
+ */
53
+ get flatten(): boolean;
54
+ preserveIterationOrder(): boolean;
55
+ /**
56
+ * Returns the empty result for MapTask.
57
+ */
58
+ getEmptyResult(): Output;
59
+ /**
60
+ * Output schema for MapTask.
61
+ * Wraps inner workflow output properties in arrays.
62
+ */
63
+ outputSchema(): DataPortSchema;
64
+ /**
65
+ * Collects and optionally flattens results from all iterations.
66
+ */
67
+ collectResults(results: TaskOutput[]): Output;
68
+ }
69
+ declare module "../task-graph/Workflow" {
70
+ interface Workflow {
71
+ /**
72
+ * Starts a map loop that transforms each element in array input ports.
73
+ * Use .endMap() to close the loop and return to the parent workflow.
74
+ */
75
+ map: CreateLoopWorkflow<TaskInput, TaskOutput, MapTaskConfig>;
76
+ /**
77
+ * Ends the map loop and returns to the parent workflow.
78
+ */
79
+ endMap(): Workflow;
80
+ }
81
+ }
82
+ //# sourceMappingURL=MapTask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapTask.d.ts","sourceRoot":"","sources":["../../src/task/MapTask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,OAAO,CAClB,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,aAAa,GAAG,aAAa,CAC5C,SAAQ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,OAAc,IAAI,EAAE,YAAY,CAAa;IAC7C,OAAc,QAAQ,EAAE,MAAM,CAAkB;IAChD,OAAc,KAAK,EAAE,MAAM,CAAS;IACpC,OAAc,WAAW,EAAE,MAAM,CAA4D;IAE7F;;OAEG;IACH,gBAAuB,aAAa,mBAAkB;IAEtD;;OAEG;WACW,WAAW,IAAI,cAAc;IAQ3C;;OAEG;WACW,YAAY,IAAI,cAAc;IAQ5C;;OAEG;IACH,IAAW,aAAa,IAAI,OAAO,CAElC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAEe,sBAAsB,IAAI,OAAO;IAIjD;;OAEG;IACa,cAAc,IAAI,MAAM;IAcxC;;;OAGG;IACa,YAAY,IAAI,cAAc;IAQ9C;;OAEG;IACa,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;CAkB9D;AAMD,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,QAAQ;QAChB;;;WAGG;QACH,GAAG,EAAE,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAE9D;;WAEG;QACH,MAAM,IAAI,QAAQ,CAAC;KACpB;CACF"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { DataPortSchema } from "@workglow/util";
7
+ import { IterationAnalysisResult, IteratorTask, IteratorTaskConfig } from "./IteratorTask";
8
+ import type { TaskInput, TaskOutput, TaskTypeName } from "./TaskTypes";
9
+ /**
10
+ * Configuration for ReduceTask.
11
+ */
12
+ export interface ReduceTaskConfig<Accumulator = unknown> extends IteratorTaskConfig {
13
+ /**
14
+ * The initial value for the accumulator.
15
+ */
16
+ readonly initialValue?: Accumulator;
17
+ }
18
+ /**
19
+ * ReduceTask processes iterated inputs sequentially with an accumulator.
20
+ */
21
+ export declare class ReduceTask<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput, Config extends ReduceTaskConfig<Output> = ReduceTaskConfig<Output>> extends IteratorTask<Input, Output, Config> {
22
+ static type: TaskTypeName;
23
+ static category: string;
24
+ static title: string;
25
+ static description: string;
26
+ constructor(input?: Partial<Input>, config?: Partial<Config>);
27
+ /**
28
+ * Gets the initial accumulator value.
29
+ */
30
+ get initialValue(): Output;
31
+ isReduceTask(): boolean;
32
+ getInitialAccumulator(): Output;
33
+ buildIterationRunInput(analysis: IterationAnalysisResult, index: number, iterationCount: number, extraInput?: Record<string, unknown>): Record<string, unknown>;
34
+ getEmptyResult(): Output;
35
+ /**
36
+ * Static input schema for ReduceTask.
37
+ */
38
+ static inputSchema(): DataPortSchema;
39
+ /**
40
+ * Static output schema for ReduceTask.
41
+ */
42
+ static outputSchema(): DataPortSchema;
43
+ /**
44
+ * Instance output schema - returns the reduced output schema from ending nodes.
45
+ */
46
+ outputSchema(): DataPortSchema;
47
+ }
48
+ declare module "../task-graph/Workflow" {
49
+ interface Workflow {
50
+ /**
51
+ * Starts a reduce loop that processes iterated inputs with an accumulator.
52
+ * Use .endReduce() to close the loop and return to the parent workflow.
53
+ */
54
+ reduce: CreateLoopWorkflow<TaskInput, TaskOutput, ReduceTaskConfig<any>>;
55
+ /**
56
+ * Ends the reduce loop and returns to the parent workflow.
57
+ */
58
+ endReduce(): Workflow;
59
+ }
60
+ }
61
+ //# sourceMappingURL=ReduceTask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReduceTask.d.ts","sourceRoot":"","sources":["../../src/task/ReduceTask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,WAAW,GAAG,OAAO,CAAE,SAAQ,kBAAkB;IACjF;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,UAAU,CACrB,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAClE,SAAQ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,OAAc,IAAI,EAAE,YAAY,CAAgB;IAChD,OAAc,QAAQ,EAAE,MAAM,CAAkB;IAChD,OAAc,KAAK,EAAE,MAAM,CAAY;IACvC,OAAc,WAAW,EAAE,MAAM,CACqC;gBAE1D,KAAK,GAAE,OAAO,CAAC,KAAK,CAAM,EAAE,MAAM,GAAE,OAAO,CAAC,MAAM,CAAM;IAUpE;;OAEG;IACH,IAAW,YAAY,IAAI,MAAM,CAEhC;IAEe,YAAY,IAAI,OAAO;IAIvB,qBAAqB,IAAI,MAAM;IAW/B,sBAAsB,CACpC,QAAQ,EAAE,uBAAuB,EACjC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAMV,cAAc,IAAI,MAAM;IAIxC;;OAEG;WACW,WAAW,IAAI,cAAc;IAQ3C;;OAEG;WACW,YAAY,IAAI,cAAc;IAQ5C;;OAEG;IACa,YAAY,IAAI,cAAc;CAgC/C;AAMD,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,QAAQ;QAChB;;;WAGG;QACH,MAAM,EAAE,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzE;;WAEG;QACH,SAAS,IAAI,QAAQ,CAAC;KACvB;CACF"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { DataPortSchema, JsonSchema } from "@workglow/util";
7
+ /**
8
+ * Stream mode determines how a task's streaming output is interpreted:
9
+ * - `none`: No streaming (default). `execute()` returns `Promise<Output>`.
10
+ * - `append`: Each chunk is a delta (e.g., a new token).
11
+ * - `replace`: Each chunk is a corrected/revised snapshot of the complete output so far.
12
+ *
13
+ * Declared per-port via the `x-stream` schema extension property.
14
+ * Absent `x-stream` = `"none"`.
15
+ */
16
+ export type StreamMode = "none" | "append" | "replace";
17
+ /**
18
+ * Append mode: delta chunk (consumer accumulates).
19
+ */
20
+ export type StreamTextDelta = {
21
+ type: "text-delta";
22
+ textDelta: string;
23
+ };
24
+ /**
25
+ * Replace mode: full snapshot chunk (replaces previous state).
26
+ */
27
+ export type StreamSnapshot<Output = Record<string, any>> = {
28
+ type: "snapshot";
29
+ data: Output;
30
+ };
31
+ /**
32
+ * Signals that the stream has finished. In append mode, the runner
33
+ * always accumulates text-delta chunks into the `text` field; `data`
34
+ * may carry additional non-text fields (merged into the final output).
35
+ * In replace mode, `data` contains the final output.
36
+ */
37
+ export type StreamFinish<Output = Record<string, any>> = {
38
+ type: "finish";
39
+ data: Output;
40
+ };
41
+ /**
42
+ * Signals that the stream encountered an error.
43
+ */
44
+ export type StreamError = {
45
+ type: "error";
46
+ error: Error;
47
+ };
48
+ /**
49
+ * Discriminated union of all stream event types.
50
+ * Used as the element type for `AsyncIterable<StreamEvent>` streams
51
+ * flowing through the DAG.
52
+ */
53
+ export type StreamEvent<Output = Record<string, any>> = StreamTextDelta | StreamSnapshot<Output> | StreamFinish<Output> | StreamError;
54
+ /**
55
+ * Reads the `x-stream` value from a specific port property in a DataPortSchema.
56
+ * Returns `"none"` when the property or the `x-stream` annotation is absent.
57
+ *
58
+ * @param schema - The task's input or output DataPortSchema
59
+ * @param portId - The property name (port ID) to inspect
60
+ * @returns The StreamMode declared on that port
61
+ */
62
+ export declare function getPortStreamMode(schema: DataPortSchema | JsonSchema, portId: string): StreamMode;
63
+ /**
64
+ * Returns the dominant output stream mode for a task by inspecting its output schema.
65
+ * If any output port has `x-stream`, returns that mode. If multiple ports have
66
+ * different modes, `append` takes priority (it is the most common).
67
+ * Returns `"none"` if no output port declares streaming.
68
+ */
69
+ export declare function getOutputStreamMode(outputSchema: DataPortSchema): StreamMode;
70
+ /**
71
+ * Determines whether a task supports streaming by checking if any output port
72
+ * has an `x-stream` annotation AND the task implements `executeStream()`.
73
+ *
74
+ * @param task - The task to inspect (must have `outputSchema()` and optionally `executeStream`)
75
+ * @returns true if the task can produce streaming output
76
+ */
77
+ export declare function isTaskStreamable(task: {
78
+ outputSchema(): DataPortSchema;
79
+ executeStream?: (...args: any[]) => any;
80
+ }): boolean;
81
+ /**
82
+ * Determines whether a dataflow edge needs to accumulate stream events
83
+ * into a materialized value for the target port.
84
+ *
85
+ * Accumulation is needed when:
86
+ * - The source output port declares streaming (`x-stream` is set)
87
+ * - AND the target input port does NOT accept the same stream mode
88
+ *
89
+ * @param sourceSchema - Output schema of the source task
90
+ * @param sourcePort - Port ID on the source task
91
+ * @param targetSchema - Input schema of the target task
92
+ * @param targetPort - Port ID on the target task
93
+ * @returns true if the edge should accumulate; false if stream can pass through
94
+ */
95
+ export declare function edgeNeedsAccumulation(sourceSchema: DataPortSchema, sourcePort: string, targetSchema: DataPortSchema, targetPort: string): boolean;
96
+ //# sourceMappingURL=StreamTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamTypes.d.ts","sourceRoot":"","sources":["../../src/task/StreamTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;IACzD,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;IACvD,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAChD,eAAe,GACf,cAAc,CAAC,MAAM,CAAC,GACtB,YAAY,CAAC,MAAM,CAAC,GACpB,WAAW,CAAC;AAMhB;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAOjG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,cAAc,GAAG,UAAU,CAa5E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,YAAY,IAAI,cAAc,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CACzC,GAAG,OAAO,CAGV;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAC5B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,cAAc,EAC5B,UAAU,EAAE,MAAM,GACjB,OAAO,CAKT"}
@@ -59,7 +59,7 @@ export declare class Task<Input extends TaskInput = TaskInput, Output extends Ta
59
59
  * @throws TaskError if the task fails
60
60
  * @returns The output of the task or undefined if no changes
61
61
  */
62
- execute(input: Input, context: IExecuteContext): Promise<Output | undefined>;
62
+ execute(_input: Input, context: IExecuteContext): Promise<Output | undefined>;
63
63
  /**
64
64
  * Default implementation of executeReactive that does nothing.
65
65
  * Subclasses should override this to provide actual reactive functionality.
@@ -69,7 +69,7 @@ export declare class Task<Input extends TaskInput = TaskInput, Output extends Ta
69
69
  * @param output The current output of the task
70
70
  * @returns The updated output of the task or undefined if no changes
71
71
  */
72
- executeReactive(input: Input, output: Output, context: IExecuteReactiveContext): Promise<Output | undefined>;
72
+ executeReactive(_input: Input, output: Output, _context: IExecuteReactiveContext): Promise<Output | undefined>;
73
73
  /**
74
74
  * Task runner for handling the task execution
75
75
  */