@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.
- package/dist/browser.js +2251 -340
- package/dist/browser.js.map +24 -15
- package/dist/bun.js +2251 -340
- package/dist/bun.js.map +24 -15
- package/dist/node.js +2251 -340
- package/dist/node.js.map +24 -15
- package/dist/task/ConditionUtils.d.ts +47 -0
- package/dist/task/ConditionUtils.d.ts.map +1 -0
- package/dist/task/ConditionalTask.d.ts +15 -0
- package/dist/task/ConditionalTask.d.ts.map +1 -1
- package/dist/task/GraphAsTask.d.ts.map +1 -1
- package/dist/task/ITask.d.ts +7 -0
- package/dist/task/ITask.d.ts.map +1 -1
- package/dist/task/IteratorTask.d.ts +177 -0
- package/dist/task/IteratorTask.d.ts.map +1 -0
- package/dist/task/IteratorTaskRunner.d.ts +36 -0
- package/dist/task/IteratorTaskRunner.d.ts.map +1 -0
- package/dist/task/MapTask.d.ts +82 -0
- package/dist/task/MapTask.d.ts.map +1 -0
- package/dist/task/ReduceTask.d.ts +61 -0
- package/dist/task/ReduceTask.d.ts.map +1 -0
- package/dist/task/StreamTypes.d.ts +96 -0
- package/dist/task/StreamTypes.d.ts.map +1 -0
- package/dist/task/Task.d.ts +2 -2
- package/dist/task/Task.d.ts.map +1 -1
- package/dist/task/TaskEvents.d.ts +7 -0
- package/dist/task/TaskEvents.d.ts.map +1 -1
- package/dist/task/TaskJSON.d.ts +3 -2
- package/dist/task/TaskJSON.d.ts.map +1 -1
- package/dist/task/TaskRunner.d.ts +7 -0
- package/dist/task/TaskRunner.d.ts.map +1 -1
- package/dist/task/TaskTypes.d.ts +4 -1
- package/dist/task/TaskTypes.d.ts.map +1 -1
- package/dist/task/WhileTask.d.ts +214 -0
- package/dist/task/WhileTask.d.ts.map +1 -0
- package/dist/task/WhileTaskRunner.d.ts +29 -0
- package/dist/task/WhileTaskRunner.d.ts.map +1 -0
- package/dist/task/index.d.ts +13 -1
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/iterationSchema.d.ts +70 -0
- package/dist/task/iterationSchema.d.ts.map +1 -0
- package/dist/task-graph/Dataflow.d.ts +34 -0
- package/dist/task-graph/Dataflow.d.ts.map +1 -1
- package/dist/task-graph/DataflowEvents.d.ts +2 -0
- package/dist/task-graph/DataflowEvents.d.ts.map +1 -1
- package/dist/task-graph/ITaskGraph.d.ts +6 -0
- package/dist/task-graph/ITaskGraph.d.ts.map +1 -1
- package/dist/task-graph/TaskGraph.d.ts +14 -0
- package/dist/task-graph/TaskGraph.d.ts.map +1 -1
- package/dist/task-graph/TaskGraphEvents.d.ts +7 -0
- package/dist/task-graph/TaskGraphEvents.d.ts.map +1 -1
- package/dist/task-graph/TaskGraphRunner.d.ts +25 -0
- package/dist/task-graph/TaskGraphRunner.d.ts.map +1 -1
- package/dist/task-graph/TaskGraphScheduler.d.ts +9 -0
- package/dist/task-graph/TaskGraphScheduler.d.ts.map +1 -1
- package/dist/task-graph/Workflow.d.ts +148 -9
- package/dist/task-graph/Workflow.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/task/TaskJSON.test.d.ts +0 -7
- package/dist/task/TaskJSON.test.d.ts.map +0 -1
package/dist/task/Task.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../src/task/Task.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,YAAY,EACZ,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAoB,SAAS,EAAyB,MAAM,aAAa,CAAC;AACjF,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,KAAK,UAAU,EAEf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB;;;;;;;;GAQG;AACH,qBAAa,IAAI,CACf,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,UAAU,GAAG,UAAU,CACtC,YAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAKvC;;OAEG;IACH,OAAc,IAAI,EAAE,YAAY,CAAU;IAE1C;;OAEG;IACH,OAAc,QAAQ,EAAE,MAAM,CAAY;IAE1C;;OAEG;IACH,OAAc,KAAK,EAAE,MAAM,CAAM;IAEjC;;OAEG;IACH,OAAc,SAAS,EAAE,OAAO,CAAQ;IAExC;;;;OAIG;IACH,OAAc,iBAAiB,EAAE,OAAO,CAAS;IAEjD;;OAEG;WACW,WAAW,IAAI,cAAc;IAQ3C;;OAEG;WACW,YAAY,IAAI,cAAc;IAY5C;;;;;;;OAOG;IACU,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../src/task/Task.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { EventParameters, type DataPortSchema } from "@workglow/util";
|
|
7
|
+
import type { StreamEvent } from "./StreamTypes";
|
|
7
8
|
import { TaskAbortedError, TaskError } from "./TaskError";
|
|
8
9
|
import { TaskStatus } from "./TaskTypes";
|
|
9
10
|
/**
|
|
@@ -30,6 +31,12 @@ export type TaskEventListeners = {
|
|
|
30
31
|
status: (status: TaskStatus) => void;
|
|
31
32
|
/** Fired when a task's input or output schema changes (for tasks with dynamic schemas) */
|
|
32
33
|
schemaChange: (inputSchema?: DataPortSchema, outputSchema?: DataPortSchema) => void;
|
|
34
|
+
/** Fired when a streaming task begins producing chunks */
|
|
35
|
+
stream_start: () => void;
|
|
36
|
+
/** Fired for each stream chunk produced by a streaming task */
|
|
37
|
+
stream_chunk: (event: StreamEvent) => void;
|
|
38
|
+
/** Fired when a streaming task finishes (carries final output) */
|
|
39
|
+
stream_end: (output: Record<string, any>) => void;
|
|
33
40
|
};
|
|
34
41
|
/** Union type of all possible task event names */
|
|
35
42
|
export type TaskEvents = keyof TaskEventListeners;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskEvents.d.ts","sourceRoot":"","sources":["../../src/task/TaskEvents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC;;GAEG;AAEH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yCAAyC;IACzC,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,mCAAmC;IACnC,KAAK,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEzC,4CAA4C;IAC5C,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAElC,oCAAoC;IACpC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,yCAAyC;IACzC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAEvE,2DAA2D;IAC3D,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,mDAAmD;IACnD,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,0CAA0C;IAC1C,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAErC,0FAA0F;IAC1F,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskEvents.d.ts","sourceRoot":"","sources":["../../src/task/TaskEvents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC;;GAEG;AAEH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yCAAyC;IACzC,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,mCAAmC;IACnC,KAAK,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEzC,4CAA4C;IAC5C,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAElC,oCAAoC;IACpC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,yCAAyC;IACzC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAEvE,2DAA2D;IAC3D,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,mDAAmD;IACnD,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,0CAA0C;IAC1C,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAErC,0FAA0F;IAC1F,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAEpF,0DAA0D;IAC1D,YAAY,EAAE,MAAM,IAAI,CAAC;IAEzB,+DAA+D;IAC/D,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAE3C,kEAAkE;IAClE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CACnD,CAAC;AACF,kDAAkD;AAElD,MAAM,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC;AAClD,6CAA6C;AAE7C,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,UAAU,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACpF,qCAAqC;AAErC,MAAM,MAAM,mBAAmB,CAAC,KAAK,SAAS,UAAU,IAAI,eAAe,CACzE,kBAAkB,EAClB,KAAK,CACN,CAAC"}
|
package/dist/task/TaskJSON.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { TaskGraph } from "../task-graph/TaskGraph";
|
|
7
7
|
import { CompoundMergeStrategy } from "../task-graph/TaskGraphRunner";
|
|
8
|
+
import { GraphAsTask } from "./GraphAsTask";
|
|
8
9
|
import { DataPorts, TaskInput } from "./TaskTypes";
|
|
9
10
|
/**
|
|
10
11
|
* Represents a single task item in the JSON configuration.
|
|
@@ -62,7 +63,7 @@ export type DataflowJson = {
|
|
|
62
63
|
* Creates a task instance from a JSON task item configuration
|
|
63
64
|
* Validates required fields and resolves task type from registry
|
|
64
65
|
*/
|
|
65
|
-
export declare const createTaskFromDependencyJSON: (item: JsonTaskItem) => import("./ITask").ITask<any, any, any>;
|
|
66
|
+
export declare const createTaskFromDependencyJSON: (item: JsonTaskItem) => GraphAsTask<any, any, any> | import("./ITask").ITask<any, any, any>;
|
|
66
67
|
/**
|
|
67
68
|
* Creates a task graph from an array of JSON task items
|
|
68
69
|
* Recursively processes subtasks for compound tasks
|
|
@@ -74,7 +75,7 @@ export declare const createGraphFromDependencyJSON: (jsonItems: JsonTaskItem[])
|
|
|
74
75
|
* @returns A new task instance
|
|
75
76
|
* @throws Error if required fields are missing or invalid
|
|
76
77
|
*/
|
|
77
|
-
export declare const createTaskFromGraphJSON: (item: TaskGraphItemJson) => import("./ITask").ITask<any, any, any>;
|
|
78
|
+
export declare const createTaskFromGraphJSON: (item: TaskGraphItemJson) => GraphAsTask<any, any, any> | import("./ITask").ITask<any, any, any>;
|
|
78
79
|
/**
|
|
79
80
|
* Creates a TaskGraph instance from its JSON representation
|
|
80
81
|
* @param graphJsonObj The JSON representation of the task graph
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskJSON.d.ts","sourceRoot":"","sources":["../../src/task/TaskJSON.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskJSON.d.ts","sourceRoot":"","sources":["../../src/task/TaskJSON.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAc,SAAS,EAAE,MAAM,aAAa,CAAC;AAK/D;;;GAGG;AAEH,MAAM,MAAM,YAAY,GAAG;IACzB,qCAAqC;IACrC,EAAE,EAAE,OAAO,CAAC;IAEZ,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IAEb,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,wCAAwC;IACxC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,sCAAsC;IACtC,YAAY,CAAC,EAAE;QACb,wDAAwD;QACxD,CAAC,CAAC,EAAE,MAAM,GACN;YACE,4BAA4B;YAC5B,EAAE,EAAE,OAAO,CAAC;YAEZ,6CAA6C;YAC7C,MAAM,EAAE,MAAM,CAAC;SAChB,GACD,KAAK,CAAC;YACJ,EAAE,EAAE,OAAO,CAAC;YACZ,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC,CAAC;KACR,CAAC;IAEF,iIAAiI;IACjI,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC,CAAC;;GAEA;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAqBF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GAAI,MAAM,YAAY,wEAS9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAI,WAAW,YAAY,EAAE,cAMtE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,iBAAiB,wEAS9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAI,cAAc,aAAa,cAgBnE,CAAC"}
|
|
@@ -66,6 +66,13 @@ export declare class TaskRunner<Input extends TaskInput = TaskInput, Output exte
|
|
|
66
66
|
* Protected method for reactive execution delegation
|
|
67
67
|
*/
|
|
68
68
|
protected executeTaskReactive(input: Input, output: Output): Promise<Output>;
|
|
69
|
+
/**
|
|
70
|
+
* Executes a streaming task by consuming its executeStream() async iterable.
|
|
71
|
+
* In append mode, text-delta chunks are always accumulated into the final
|
|
72
|
+
* output's `text` field, regardless of output cache configuration.
|
|
73
|
+
* In replace mode, the final output comes from the finish event data.
|
|
74
|
+
*/
|
|
75
|
+
protected executeStreamingTask(input: Input): Promise<Output | undefined>;
|
|
69
76
|
/**
|
|
70
77
|
* Handles task start
|
|
71
78
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskRunner.d.ts","sourceRoot":"","sources":["../../src/task/TaskRunner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAyB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAA0B,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskRunner.d.ts","sourceRoot":"","sources":["../../src/task/TaskRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/task/TaskTypes.d.ts
CHANGED
|
@@ -10,11 +10,12 @@ import type { Task } from "./Task";
|
|
|
10
10
|
* Enum representing the possible states of a task
|
|
11
11
|
*
|
|
12
12
|
* PENDING -> PROCESSING -> COMPLETED
|
|
13
|
+
* PENDING -> PROCESSING -> STREAMING -> COMPLETED
|
|
13
14
|
* PENDING -> PROCESSING -> ABORTING -> FAILED
|
|
14
15
|
* PENDING -> PROCESSING -> FAILED
|
|
15
16
|
* PENDING -> DISABLED
|
|
16
17
|
*/
|
|
17
|
-
export type TaskStatus = "PENDING" | "DISABLED" | "PROCESSING" | "COMPLETED" | "ABORTING" | "FAILED";
|
|
18
|
+
export type TaskStatus = "PENDING" | "DISABLED" | "PROCESSING" | "STREAMING" | "COMPLETED" | "ABORTING" | "FAILED";
|
|
18
19
|
export declare const TaskStatus: {
|
|
19
20
|
/** Task is created but not yet started */
|
|
20
21
|
readonly PENDING: "PENDING";
|
|
@@ -22,6 +23,8 @@ export declare const TaskStatus: {
|
|
|
22
23
|
readonly DISABLED: "DISABLED";
|
|
23
24
|
/** Task is currently running */
|
|
24
25
|
readonly PROCESSING: "PROCESSING";
|
|
26
|
+
/** Task has begun producing streaming output chunks */
|
|
27
|
+
readonly STREAMING: "STREAMING";
|
|
25
28
|
/** Task has completed successfully */
|
|
26
29
|
readonly COMPLETED: "COMPLETED";
|
|
27
30
|
/** Task is in the process of being aborted */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskTypes.d.ts","sourceRoot":"","sources":["../../src/task/TaskTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"TaskTypes.d.ts","sourceRoot":"","sources":["../../src/task/TaskTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,UAAU,GACV,YAAY,GACZ,WAAW,GACX,WAAW,GACX,UAAU,GACV,QAAQ,CAAC;AAEb,eAAO,MAAM,UAAU;IACrB,0CAA0C;;IAE1C,gDAAgD;;IAEhD,gCAAgC;;IAEhC,uDAAuD;;IAEvD,sCAAsC;;IAEtC,8CAA8C;;IAE9C,sBAAsB;;CAE2B,CAAC;AAMpD,MAAM,WAAW,SAAU,SAAQ,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,+BAA+B;AAC/B,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC;AAElC,gCAAgC;AAChC,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC;AAEnC,MAAM,MAAM,kBAAkB,GAC1B;IACE,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB,GACD;IACE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;CAChD,CAAC;AAEN,+BAA+B;AAC/B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,kCAAkC;AAClC,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAM1C,MAAM,WAAW,OAAO;IACtB,qCAAqC;IACrC,EAAE,EAAE,OAAO,CAAC;IAEZ,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,iDAAiD;IACjD,WAAW,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAE7C,2FAA2F;IAC3F,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,iIAAiI;IACjI,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,uBAAuB;AACvB,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,214 @@
|
|
|
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 { GraphAsTask, GraphAsTaskConfig } from "./GraphAsTask";
|
|
8
|
+
import type { IExecuteContext } from "./ITask";
|
|
9
|
+
import type { TaskInput, TaskOutput, TaskTypeName } from "./TaskTypes";
|
|
10
|
+
import { WhileTaskRunner } from "./WhileTaskRunner";
|
|
11
|
+
/**
|
|
12
|
+
* WhileTask context schema - only has index since count is unknown ahead of time.
|
|
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 WHILE_CONTEXT_SCHEMA: DataPortSchema;
|
|
17
|
+
/**
|
|
18
|
+
* Condition function type for WhileTask.
|
|
19
|
+
* Receives the current output and iteration count, returns whether to continue looping.
|
|
20
|
+
*
|
|
21
|
+
* @param output - The output from the last iteration
|
|
22
|
+
* @param iteration - The current iteration number (0-based)
|
|
23
|
+
* @returns true to continue looping, false to stop
|
|
24
|
+
*/
|
|
25
|
+
export type WhileConditionFn<Output> = (output: Output, iteration: number) => boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Configuration for WhileTask.
|
|
28
|
+
*/
|
|
29
|
+
export interface WhileTaskConfig<Output extends TaskOutput = TaskOutput> extends GraphAsTaskConfig {
|
|
30
|
+
/**
|
|
31
|
+
* Condition function that determines whether to continue looping.
|
|
32
|
+
* Called after each iteration with the current output and iteration count.
|
|
33
|
+
* Returns true to continue, false to stop.
|
|
34
|
+
*/
|
|
35
|
+
readonly condition?: WhileConditionFn<Output>;
|
|
36
|
+
/**
|
|
37
|
+
* Maximum number of iterations to prevent infinite loops.
|
|
38
|
+
* @default 100
|
|
39
|
+
*/
|
|
40
|
+
readonly maxIterations?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Whether to pass the output of each iteration as input to the next.
|
|
43
|
+
* When true, output from iteration N becomes input to iteration N+1.
|
|
44
|
+
* @default true
|
|
45
|
+
*/
|
|
46
|
+
readonly chainIterations?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* WhileTask loops until a condition function returns false.
|
|
50
|
+
*
|
|
51
|
+
* This task is useful for:
|
|
52
|
+
* - Iterative refinement processes
|
|
53
|
+
* - Polling until a condition is met
|
|
54
|
+
* - Convergence algorithms
|
|
55
|
+
* - Retry logic with conditions
|
|
56
|
+
*
|
|
57
|
+
* ## Features
|
|
58
|
+
*
|
|
59
|
+
* - Loops until condition returns false
|
|
60
|
+
* - Configurable maximum iterations (safety limit)
|
|
61
|
+
* - Passes output from each iteration to the next
|
|
62
|
+
* - Access to iteration count in condition function
|
|
63
|
+
*
|
|
64
|
+
* ## Usage
|
|
65
|
+
*
|
|
66
|
+
* ```typescript
|
|
67
|
+
* // Refine until quality threshold
|
|
68
|
+
* workflow
|
|
69
|
+
* .while({
|
|
70
|
+
* condition: (output, iteration) => output.quality < 0.9 && iteration < 10,
|
|
71
|
+
* maxIterations: 20
|
|
72
|
+
* })
|
|
73
|
+
* .refineResult()
|
|
74
|
+
* .evaluateQuality()
|
|
75
|
+
* .endWhile()
|
|
76
|
+
*
|
|
77
|
+
* // Retry until success
|
|
78
|
+
* workflow
|
|
79
|
+
* .while({
|
|
80
|
+
* condition: (output) => !output.success,
|
|
81
|
+
* maxIterations: 5
|
|
82
|
+
* })
|
|
83
|
+
* .attemptOperation()
|
|
84
|
+
* .endWhile()
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @template Input - The input type for the while task
|
|
88
|
+
* @template Output - The output type for the while task
|
|
89
|
+
* @template Config - The configuration type
|
|
90
|
+
*/
|
|
91
|
+
export declare class WhileTask<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput, Config extends WhileTaskConfig<Output> = WhileTaskConfig<Output>> extends GraphAsTask<Input, Output, Config> {
|
|
92
|
+
static type: TaskTypeName;
|
|
93
|
+
static category: string;
|
|
94
|
+
static title: string;
|
|
95
|
+
static description: string;
|
|
96
|
+
/** This task has dynamic schemas based on the inner workflow */
|
|
97
|
+
static hasDynamicSchemas: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Returns the schema for iteration-context inputs that will be
|
|
100
|
+
* injected into the subgraph InputTask at runtime.
|
|
101
|
+
*
|
|
102
|
+
* WhileTask only provides _iterationIndex since the total count
|
|
103
|
+
* is unknown ahead of time.
|
|
104
|
+
*/
|
|
105
|
+
static getIterationContextSchema(): DataPortSchema;
|
|
106
|
+
/**
|
|
107
|
+
* Current iteration count during execution.
|
|
108
|
+
*/
|
|
109
|
+
protected _currentIteration: number;
|
|
110
|
+
constructor(input?: Partial<Input>, config?: Partial<Config>);
|
|
111
|
+
_runner: WhileTaskRunner<Input, Output, Config>;
|
|
112
|
+
get runner(): WhileTaskRunner<Input, Output, Config>;
|
|
113
|
+
/**
|
|
114
|
+
* Gets the condition function.
|
|
115
|
+
*/
|
|
116
|
+
get condition(): WhileConditionFn<Output> | undefined;
|
|
117
|
+
/**
|
|
118
|
+
* Gets the maximum iterations limit.
|
|
119
|
+
* Falls back to extras.whileConfig.maxIterations for JSON-deserialized tasks.
|
|
120
|
+
*/
|
|
121
|
+
get maxIterations(): number;
|
|
122
|
+
/**
|
|
123
|
+
* Whether to chain iteration outputs to inputs.
|
|
124
|
+
* Falls back to extras.whileConfig.chainIterations for JSON-deserialized tasks.
|
|
125
|
+
*/
|
|
126
|
+
get chainIterations(): boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Gets the current iteration count.
|
|
129
|
+
*/
|
|
130
|
+
get currentIteration(): number;
|
|
131
|
+
/**
|
|
132
|
+
* Execute the while loop.
|
|
133
|
+
*/
|
|
134
|
+
/**
|
|
135
|
+
* Builds a condition function from the serialized whileConfig in extras
|
|
136
|
+
* when no condition function is directly provided in config.
|
|
137
|
+
*/
|
|
138
|
+
private buildConditionFromExtras;
|
|
139
|
+
/**
|
|
140
|
+
* Analyzes the iterationInputConfig from whileConfig to decompose
|
|
141
|
+
* array inputs into per-iteration scalar values.
|
|
142
|
+
*
|
|
143
|
+
* Returns null if no iterationInputConfig is present (normal while behavior).
|
|
144
|
+
*/
|
|
145
|
+
private analyzeArrayInputs;
|
|
146
|
+
/**
|
|
147
|
+
* Builds per-iteration input by picking the i-th element from each array port
|
|
148
|
+
* and passing scalar ports through unchanged.
|
|
149
|
+
*/
|
|
150
|
+
private buildIterationInput;
|
|
151
|
+
execute(input: Input, context: IExecuteContext): Promise<Output | undefined>;
|
|
152
|
+
/**
|
|
153
|
+
* Instance method to get the iteration context schema.
|
|
154
|
+
* Can be overridden by subclasses to customize iteration context.
|
|
155
|
+
*/
|
|
156
|
+
getIterationContextSchema(): DataPortSchema;
|
|
157
|
+
/**
|
|
158
|
+
* When chainIterations is true, the output schema from the previous
|
|
159
|
+
* iteration becomes part of the input schema for the next iteration.
|
|
160
|
+
* These chained properties should be marked with "x-ui-iteration": true.
|
|
161
|
+
*
|
|
162
|
+
* @returns Schema with chained output properties marked for iteration, or undefined if not chaining
|
|
163
|
+
*/
|
|
164
|
+
getChainedOutputSchema(): DataPortSchema | undefined;
|
|
165
|
+
/**
|
|
166
|
+
* Instance input schema override.
|
|
167
|
+
* When iterationInputConfig is present, wraps array-mode ports in array schemas
|
|
168
|
+
* so that the dataflow compatibility check accepts array values.
|
|
169
|
+
*/
|
|
170
|
+
inputSchema(): DataPortSchema;
|
|
171
|
+
/**
|
|
172
|
+
* Static input schema for WhileTask.
|
|
173
|
+
*/
|
|
174
|
+
static inputSchema(): DataPortSchema;
|
|
175
|
+
/**
|
|
176
|
+
* Static output schema for WhileTask.
|
|
177
|
+
*/
|
|
178
|
+
static outputSchema(): DataPortSchema;
|
|
179
|
+
/**
|
|
180
|
+
* Instance output schema - returns final iteration output schema.
|
|
181
|
+
*/
|
|
182
|
+
outputSchema(): DataPortSchema;
|
|
183
|
+
}
|
|
184
|
+
declare module "../task-graph/Workflow" {
|
|
185
|
+
interface Workflow {
|
|
186
|
+
/**
|
|
187
|
+
* Starts a while loop that continues until a condition is false.
|
|
188
|
+
* Use .endWhile() to close the loop and return to the parent workflow.
|
|
189
|
+
*
|
|
190
|
+
* @param config - Configuration for the while loop (must include condition)
|
|
191
|
+
* @returns A Workflow in loop builder mode for defining the loop body
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ```typescript
|
|
195
|
+
* workflow
|
|
196
|
+
* .while({
|
|
197
|
+
* condition: (output, iteration) => output.quality < 0.9,
|
|
198
|
+
* maxIterations: 10
|
|
199
|
+
* })
|
|
200
|
+
* .refineResult()
|
|
201
|
+
* .endWhile()
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
while: CreateLoopWorkflow<TaskInput, TaskOutput, WhileTaskConfig<any>>;
|
|
205
|
+
/**
|
|
206
|
+
* Ends the while loop and returns to the parent workflow.
|
|
207
|
+
* Only callable on workflows in loop builder mode.
|
|
208
|
+
*
|
|
209
|
+
* @returns The parent workflow
|
|
210
|
+
*/
|
|
211
|
+
endWhile(): Workflow;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=WhileTask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhileTask.d.ts","sourceRoot":"","sources":["../../src/task/WhileTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
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 { TaskInput, TaskOutput } from "./TaskTypes";
|
|
8
|
+
import type { WhileTask, WhileTaskConfig } from "./WhileTask";
|
|
9
|
+
/**
|
|
10
|
+
* Runner for WhileTask that delegates to the task's execute() method
|
|
11
|
+
* instead of directly running the subgraph once (which is what
|
|
12
|
+
* GraphAsTaskRunner does by default).
|
|
13
|
+
*
|
|
14
|
+
* This follows the same pattern as IteratorTaskRunner.
|
|
15
|
+
*/
|
|
16
|
+
export declare class WhileTaskRunner<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput, Config extends WhileTaskConfig<Output> = WhileTaskConfig<Output>> extends GraphAsTaskRunner<Input, Output, Config> {
|
|
17
|
+
task: WhileTask<Input, Output, Config>;
|
|
18
|
+
/**
|
|
19
|
+
* Override executeTask to call the task's execute() method which
|
|
20
|
+
* contains the while-loop logic, rather than the default
|
|
21
|
+
* GraphAsTaskRunner behavior of running the subgraph once.
|
|
22
|
+
*/
|
|
23
|
+
protected executeTask(input: Input): Promise<Output | undefined>;
|
|
24
|
+
/**
|
|
25
|
+
* For WhileTask, reactive runs use the task's reactive hook only.
|
|
26
|
+
*/
|
|
27
|
+
executeTaskReactive(input: Input, output: Output): Promise<Output>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=WhileTaskRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhileTaskRunner.d.ts","sourceRoot":"","sources":["../../src/task/WhileTaskRunner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9D;;;;;;GAMG;AACH,qBAAa,eAAe,CAC1B,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,eAAe,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAChE,SAAQ,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IACxC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAE/C;;;;OAIG;cACsB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAW/E;;OAEG;IACmB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAIzF"}
|
package/dist/task/index.d.ts
CHANGED
|
@@ -4,12 +4,19 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
export * from "./ConditionalTask";
|
|
7
|
+
export * from "./ConditionUtils";
|
|
7
8
|
export * from "./GraphAsTask";
|
|
8
9
|
export * from "./GraphAsTaskRunner";
|
|
9
10
|
export * from "./InputResolver";
|
|
10
11
|
export * from "./ITask";
|
|
12
|
+
export * from "./iterationSchema";
|
|
13
|
+
export * from "./IteratorTask";
|
|
14
|
+
export * from "./IteratorTaskRunner";
|
|
11
15
|
export * from "./JobQueueFactory";
|
|
12
16
|
export * from "./JobQueueTask";
|
|
17
|
+
export * from "./MapTask";
|
|
18
|
+
export * from "./ReduceTask";
|
|
19
|
+
export * from "./StreamTypes";
|
|
13
20
|
export * from "./Task";
|
|
14
21
|
export * from "./TaskError";
|
|
15
22
|
export * from "./TaskEvents";
|
|
@@ -17,7 +24,12 @@ export * from "./TaskJSON";
|
|
|
17
24
|
export * from "./TaskQueueRegistry";
|
|
18
25
|
export * from "./TaskRegistry";
|
|
19
26
|
export * from "./TaskTypes";
|
|
27
|
+
export * from "./WhileTask";
|
|
28
|
+
export * from "./WhileTaskRunner";
|
|
20
29
|
import { ConditionalTask } from "./ConditionalTask";
|
|
21
30
|
import { GraphAsTask } from "./GraphAsTask";
|
|
22
|
-
|
|
31
|
+
import { MapTask } from "./MapTask";
|
|
32
|
+
import { ReduceTask } from "./ReduceTask";
|
|
33
|
+
import { WhileTask } from "./WhileTask";
|
|
34
|
+
export declare const registerBaseTasks: () => (typeof GraphAsTask | typeof ConditionalTask | typeof MapTask | typeof WhileTask | typeof ReduceTask)[];
|
|
23
35
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/task/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,iBAAiB,+GAI7B,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*
|
|
6
|
+
* Shared iteration schema helpers used by IteratorTask/WhileTask and the builder.
|
|
7
|
+
* Re-exports context schemas and adds pure schema functions that operate on DataPortSchema.
|
|
8
|
+
*/
|
|
9
|
+
import type { DataPortSchema, PropertySchema } from "@workglow/util";
|
|
10
|
+
import { createArraySchema, createFlexibleSchema, extractBaseSchema, ITERATOR_CONTEXT_SCHEMA, type ExecutionMode, type IterationInputMode, type IterationPropertyConfig } from "./IteratorTask";
|
|
11
|
+
import { WHILE_CONTEXT_SCHEMA } from "./WhileTask";
|
|
12
|
+
export { createArraySchema, createFlexibleSchema, extractBaseSchema, ITERATOR_CONTEXT_SCHEMA, WHILE_CONTEXT_SCHEMA, type ExecutionMode, type IterationInputMode, type IterationPropertyConfig, };
|
|
13
|
+
/** Config for buildIterationInputSchema: mode and optional baseSchema (defaults to extracted from inner). */
|
|
14
|
+
export type IterationInputConfig = Record<string, {
|
|
15
|
+
mode: IterationInputMode;
|
|
16
|
+
baseSchema?: DataPortSchema;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Determines if a schema is a flexible type (T | T[]).
|
|
20
|
+
*/
|
|
21
|
+
export declare function isFlexibleSchema(schema: DataPortSchema): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Determines if a schema is strictly an array type.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isStrictArraySchema(schema: DataPortSchema): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Gets the input mode for a schema property.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getInputModeFromSchema(schema: DataPortSchema): IterationInputMode;
|
|
30
|
+
/**
|
|
31
|
+
* Get the appropriate iteration context schema for a given task type.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getIterationContextSchemaForType(taskType: string): DataPortSchema | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Merge iteration context schema into an existing InputNode schema.
|
|
36
|
+
*/
|
|
37
|
+
export declare function addIterationContextToSchema(existingSchema: DataPortSchema | undefined, parentTaskType: string): DataPortSchema;
|
|
38
|
+
/**
|
|
39
|
+
* Check if a schema property is an iteration-injected input.
|
|
40
|
+
*/
|
|
41
|
+
export declare function isIterationProperty(schema: PropertySchema): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Filter out iteration properties from a schema (for parent display).
|
|
44
|
+
*/
|
|
45
|
+
export declare function filterIterationProperties(schema?: DataPortSchema): DataPortSchema | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Extract only iteration properties from a schema.
|
|
48
|
+
*/
|
|
49
|
+
export declare function extractIterationProperties(schema?: DataPortSchema): DataPortSchema | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Remove iteration properties from a schema (alias for filterIterationProperties).
|
|
52
|
+
*/
|
|
53
|
+
export declare function removeIterationProperties(schema?: DataPortSchema): DataPortSchema | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Merge chained output properties into input schema; marks output properties with "x-ui-iteration": true.
|
|
56
|
+
*/
|
|
57
|
+
export declare function mergeChainedOutputToInput(inputSchema: DataPortSchema | undefined, outputSchema: DataPortSchema | undefined): DataPortSchema;
|
|
58
|
+
/**
|
|
59
|
+
* Builds the iteration input schema from the inner schema and optional iteration input configuration.
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildIterationInputSchema(innerSchema: DataPortSchema | undefined, config?: IterationInputConfig): DataPortSchema;
|
|
62
|
+
/**
|
|
63
|
+
* Find array-typed ports from an input schema.
|
|
64
|
+
*/
|
|
65
|
+
export declare function findArrayPorts(schema: DataPortSchema | undefined): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Wrap a schema's properties in arrays for iteration output.
|
|
68
|
+
*/
|
|
69
|
+
export declare function wrapSchemaInArray(schema: DataPortSchema | undefined): DataPortSchema | undefined;
|
|
70
|
+
//# sourceMappingURL=iterationSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterationSchema.d.ts","sourceRoot":"","sources":["../../src/task/iterationSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,GAC7B,CAAC;AAEF,6GAA6G;AAC7G,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACvC,MAAM,EACN;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,UAAU,CAAC,EAAE,cAAc,CAAA;CAAE,CAC1D,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAsBhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAInE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,kBAAkB,CAIjF;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAQ7F;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,cAAc,EAAE,MAAM,GACrB,cAAc,CA4BhB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAGnE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAiB7F;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAe9F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,cAAc,GAAG,SAAS,EACvC,YAAY,EAAE,cAAc,GAAG,SAAS,GACvC,cAAc,CAiChB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,cAAc,GAAG,SAAS,EACvC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,cAAc,CA2DhB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,EAAE,CAgB3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAmBhG"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { EventEmitter } from "@workglow/util";
|
|
7
|
+
import type { StreamEvent } from "../task/StreamTypes";
|
|
7
8
|
import { TaskError } from "../task/TaskError";
|
|
8
9
|
import { DataflowJson } from "../task/TaskJSON";
|
|
9
10
|
import { TaskIdType, TaskOutput, TaskStatus } from "../task/TaskTypes";
|
|
@@ -26,6 +27,39 @@ export declare class Dataflow {
|
|
|
26
27
|
value: any;
|
|
27
28
|
status: TaskStatus;
|
|
28
29
|
error: TaskError | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Active stream for this dataflow edge.
|
|
32
|
+
* Set when a streaming upstream task begins producing chunks.
|
|
33
|
+
* Multiple downstream consumers can each get an independent reader via tee().
|
|
34
|
+
*/
|
|
35
|
+
stream: ReadableStream<StreamEvent> | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Sets the active stream on this dataflow.
|
|
38
|
+
* @param stream The ReadableStream of StreamEvents from the upstream task
|
|
39
|
+
*/
|
|
40
|
+
setStream(stream: ReadableStream<StreamEvent>): void;
|
|
41
|
+
/**
|
|
42
|
+
* Gets the active stream from this dataflow, or undefined if not streaming.
|
|
43
|
+
*/
|
|
44
|
+
getStream(): ReadableStream<StreamEvent> | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Consumes the active stream to completion and materializes the value.
|
|
47
|
+
*
|
|
48
|
+
* This is edge-level accumulation for non-streaming downstream tasks that
|
|
49
|
+
* depend on a streaming upstream task (Plan section 5e). The method reads
|
|
50
|
+
* all stream events and determines the final value:
|
|
51
|
+
*
|
|
52
|
+
* - **append mode** (text-delta events): concatenates all textDelta strings.
|
|
53
|
+
* The accumulated text is stored directly as `this.value` (for specific-port
|
|
54
|
+
* dataflows) or wrapped in `{ text }` (for DATAFLOW_ALL_PORTS).
|
|
55
|
+
* - **replace mode** (snapshot events): uses the data from the last snapshot.
|
|
56
|
+
* - **finish with data**: uses the finish payload (covers cache-on append and
|
|
57
|
+
* replace modes where the provider already accumulated).
|
|
58
|
+
*
|
|
59
|
+
* After consumption the stream reference is cleared. Calling this method on
|
|
60
|
+
* a dataflow that has no stream is a no-op.
|
|
61
|
+
*/
|
|
62
|
+
awaitStreamValue(): Promise<void>;
|
|
29
63
|
reset(): void;
|
|
30
64
|
setStatus(status: TaskStatus): void;
|
|
31
65
|
setPortData(entireDataBlock: any): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dataflow.d.ts","sourceRoot":"","sources":["../../src/task-graph/Dataflow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA6B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG,GAAG,MAAM,IAAI,MAAM,SAAS,MAAM,IAAI,MAAM,GAAG,CAAC;AAE7E,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C;;GAEG;AACH,qBAAa,QAAQ;IAEV,YAAY,EAAE,UAAU;IACxB,gBAAgB,EAAE,MAAM;IACxB,YAAY,EAAE,UAAU;IACxB,gBAAgB,EAAE,MAAM;gBAHxB,YAAY,EAAE,UAAU,EACxB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,UAAU,EACxB,gBAAgB,EAAE,MAAM;WAEnB,QAAQ,CACpB,YAAY,EAAE,UAAU,EACxB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,UAAU,EACxB,gBAAgB,EAAE,MAAM,GACvB,cAAc;IAGjB,IAAI,EAAE,IAAI,cAAc,CAOvB;IACM,KAAK,EAAE,GAAG,CAAa;IACvB,MAAM,EAAE,UAAU,CAAsB;IACxC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Dataflow.d.ts","sourceRoot":"","sources":["../../src/task-graph/Dataflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ import { TaskStatus } from "../task/TaskTypes";
|
|
|
12
12
|
export type DataflowEventListeners = {
|
|
13
13
|
/** Fired when a source task starts execution */
|
|
14
14
|
start: () => void;
|
|
15
|
+
/** Fired when a source task begins streaming output */
|
|
16
|
+
streaming: () => void;
|
|
15
17
|
/** Fired when a source task completes successfully */
|
|
16
18
|
complete: () => void;
|
|
17
19
|
/** Fired when a source task is disabled */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataflowEvents.d.ts","sourceRoot":"","sources":["../../src/task-graph/DataflowEvents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;GAEG;AAEH,MAAM,MAAM,sBAAsB,GAAG;IACnC,gDAAgD;IAChD,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,mDAAmD;IACnD,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAElC,uDAAuD;IACvD,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,2CAA2C;IAC3C,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACtC,CAAC;AACF,sDAAsD;AAEtD,MAAM,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC;AAC1D,iDAAiD;AAEjD,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,cAAc,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAChG,yCAAyC;AAEzC,MAAM,MAAM,uBAAuB,CAAC,KAAK,SAAS,cAAc,IAAI,eAAe,CACjF,sBAAsB,EACtB,KAAK,CACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"DataflowEvents.d.ts","sourceRoot":"","sources":["../../src/task-graph/DataflowEvents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;GAEG;AAEH,MAAM,MAAM,sBAAsB,GAAG;IACnC,gDAAgD;IAChD,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,uDAAuD;IACvD,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,mDAAmD;IACnD,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAElC,uDAAuD;IACvD,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,2CAA2C;IAC3C,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACtC,CAAC;AACF,sDAAsD;AAEtD,MAAM,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC;AAC1D,iDAAiD;AAEjD,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,cAAc,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAChG,yCAAyC;AAEzC,MAAM,MAAM,uBAAuB,CAAC,KAAK,SAAS,cAAc,IAAI,eAAe,CACjF,sBAAsB,EACtB,KAAK,CACN,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { ITask } from "../task/ITask";
|
|
7
|
+
import type { StreamEvent } from "../task/StreamTypes";
|
|
7
8
|
import { JsonTaskItem, TaskGraphJson } from "../task/TaskJSON";
|
|
8
9
|
import type { TaskIdType, TaskInput, TaskOutput, TaskStatus } from "../task/TaskTypes";
|
|
9
10
|
import { Dataflow, DataflowIdType } from "./Dataflow";
|
|
@@ -37,5 +38,10 @@ export interface ITaskGraph {
|
|
|
37
38
|
subscribeToTaskStatus(callback: (taskId: TaskIdType, status: TaskStatus) => void): () => void;
|
|
38
39
|
subscribeToTaskProgress(callback: (taskId: TaskIdType, progress: number, message?: string, ...args: any[]) => void): () => void;
|
|
39
40
|
subscribeToDataflowStatus(callback: (dataflowId: DataflowIdType, status: TaskStatus) => void): () => void;
|
|
41
|
+
subscribeToTaskStreaming(callbacks: {
|
|
42
|
+
onStreamStart?: (taskId: TaskIdType) => void;
|
|
43
|
+
onStreamChunk?: (taskId: TaskIdType, event: StreamEvent) => void;
|
|
44
|
+
onStreamEnd?: (taskId: TaskIdType, output: Record<string, any>) => void;
|
|
45
|
+
}): () => void;
|
|
40
46
|
}
|
|
41
47
|
//# sourceMappingURL=ITaskGraph.d.ts.map
|