@workglow/task-graph 0.0.52
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/LICENSE +201 -0
- package/README.md +1280 -0
- package/dist/browser.d.ts +7 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +2842 -0
- package/dist/browser.js.map +33 -0
- package/dist/bun.d.ts +7 -0
- package/dist/bun.d.ts.map +1 -0
- package/dist/bun.js +2843 -0
- package/dist/bun.js.map +33 -0
- package/dist/common.d.ts +33 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/node.d.ts +7 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +2842 -0
- package/dist/node.js.map +33 -0
- package/dist/storage/TaskGraphRepository.d.ts +92 -0
- package/dist/storage/TaskGraphRepository.d.ts.map +1 -0
- package/dist/storage/TaskGraphTabularRepository.d.ts +73 -0
- package/dist/storage/TaskGraphTabularRepository.d.ts.map +1 -0
- package/dist/storage/TaskOutputRepository.d.ts +93 -0
- package/dist/storage/TaskOutputRepository.d.ts.map +1 -0
- package/dist/storage/TaskOutputTabularRepository.d.ts +84 -0
- package/dist/storage/TaskOutputTabularRepository.d.ts.map +1 -0
- package/dist/task/ArrayTask.d.ts +72 -0
- package/dist/task/ArrayTask.d.ts.map +1 -0
- package/dist/task/ConditionalTask.d.ts +278 -0
- package/dist/task/ConditionalTask.d.ts.map +1 -0
- package/dist/task/GraphAsTask.d.ts +79 -0
- package/dist/task/GraphAsTask.d.ts.map +1 -0
- package/dist/task/GraphAsTaskRunner.d.ts +36 -0
- package/dist/task/GraphAsTaskRunner.d.ts.map +1 -0
- package/dist/task/ITask.d.ts +144 -0
- package/dist/task/ITask.d.ts.map +1 -0
- package/dist/task/ITaskRunner.d.ts +36 -0
- package/dist/task/ITaskRunner.d.ts.map +1 -0
- package/dist/task/JobQueueFactory.d.ts +23 -0
- package/dist/task/JobQueueFactory.d.ts.map +1 -0
- package/dist/task/JobQueueTask.d.ts +65 -0
- package/dist/task/JobQueueTask.d.ts.map +1 -0
- package/dist/task/Task.d.ts +334 -0
- package/dist/task/Task.d.ts.map +1 -0
- package/dist/task/TaskError.d.ts +66 -0
- package/dist/task/TaskError.d.ts.map +1 -0
- package/dist/task/TaskEvents.d.ts +40 -0
- package/dist/task/TaskEvents.d.ts.map +1 -0
- package/dist/task/TaskJSON.d.ts +82 -0
- package/dist/task/TaskJSON.d.ts.map +1 -0
- package/dist/task/TaskQueueRegistry.d.ts +69 -0
- package/dist/task/TaskQueueRegistry.d.ts.map +1 -0
- package/dist/task/TaskRegistry.d.ts +31 -0
- package/dist/task/TaskRegistry.d.ts.map +1 -0
- package/dist/task/TaskRunner.d.ts +99 -0
- package/dist/task/TaskRunner.d.ts.map +1 -0
- package/dist/task/TaskTypes.d.ts +68 -0
- package/dist/task/TaskTypes.d.ts.map +1 -0
- package/dist/task-graph/Conversions.d.ts +28 -0
- package/dist/task-graph/Conversions.d.ts.map +1 -0
- package/dist/task-graph/Dataflow.d.ts +73 -0
- package/dist/task-graph/Dataflow.d.ts.map +1 -0
- package/dist/task-graph/DataflowEvents.d.ts +34 -0
- package/dist/task-graph/DataflowEvents.d.ts.map +1 -0
- package/dist/task-graph/ITaskGraph.d.ts +38 -0
- package/dist/task-graph/ITaskGraph.d.ts.map +1 -0
- package/dist/task-graph/IWorkflow.d.ts +13 -0
- package/dist/task-graph/IWorkflow.d.ts.map +1 -0
- package/dist/task-graph/TaskGraph.d.ts +230 -0
- package/dist/task-graph/TaskGraph.d.ts.map +1 -0
- package/dist/task-graph/TaskGraphEvents.d.ts +54 -0
- package/dist/task-graph/TaskGraphEvents.d.ts.map +1 -0
- package/dist/task-graph/TaskGraphRunner.d.ts +202 -0
- package/dist/task-graph/TaskGraphRunner.d.ts.map +1 -0
- package/dist/task-graph/TaskGraphScheduler.d.ts +56 -0
- package/dist/task-graph/TaskGraphScheduler.d.ts.map +1 -0
- package/dist/task-graph/Workflow.d.ts +155 -0
- package/dist/task-graph/Workflow.d.ts.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +59 -0
- package/src/storage/README.md +61 -0
- package/src/task/ConditionalTask.README.md +268 -0
- package/src/task/README.md +251 -0
- package/src/task-graph/README.md +142 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { JobQueue } from "@workglow/job-queue";
|
|
7
|
+
/**
|
|
8
|
+
* Registry for managing task queues in the application.
|
|
9
|
+
* Provides functionality to register, manage, and control job queues.
|
|
10
|
+
*
|
|
11
|
+
* @template Input - The type of input data for tasks in the queues
|
|
12
|
+
* @template Output - The type of output data for tasks in the queues
|
|
13
|
+
*/
|
|
14
|
+
export declare class TaskQueueRegistry {
|
|
15
|
+
/**
|
|
16
|
+
* Map of queue names to their corresponding JobQueue instances
|
|
17
|
+
*/
|
|
18
|
+
queues: Map<string, JobQueue<any, any>>;
|
|
19
|
+
/**
|
|
20
|
+
* Registers a new job queue with the registry
|
|
21
|
+
*
|
|
22
|
+
* @param jobQueue - The job queue to register
|
|
23
|
+
* @throws Error if a queue with the same name already exists
|
|
24
|
+
*/
|
|
25
|
+
registerQueue(jobQueue: JobQueue<any, any>): void;
|
|
26
|
+
/**
|
|
27
|
+
* Retrieves a job queue by its name
|
|
28
|
+
*
|
|
29
|
+
* @param queue - The name of the queue to retrieve
|
|
30
|
+
* @returns The job queue instance or undefined if not found
|
|
31
|
+
*/
|
|
32
|
+
getQueue<I, O>(queue: string): JobQueue<I, O> | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Starts all registered job queues
|
|
35
|
+
* This allows queues to begin processing their jobs
|
|
36
|
+
*
|
|
37
|
+
* @returns The registry instance for chaining
|
|
38
|
+
*/
|
|
39
|
+
startQueues(): this;
|
|
40
|
+
/**
|
|
41
|
+
* Stops all registered job queues
|
|
42
|
+
* This pauses job processing but maintains the queued jobs
|
|
43
|
+
*
|
|
44
|
+
* @returns The registry instance for chaining
|
|
45
|
+
*/
|
|
46
|
+
stopQueues(): this;
|
|
47
|
+
/**
|
|
48
|
+
* Clears all registered job queues
|
|
49
|
+
* This removes all queued jobs from the queues
|
|
50
|
+
*
|
|
51
|
+
* @returns The registry instance for chaining
|
|
52
|
+
*/
|
|
53
|
+
clearQueues(): this;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Gets the global TaskQueueRegistry instance
|
|
57
|
+
* Creates a new instance if one doesn't exist
|
|
58
|
+
*
|
|
59
|
+
* @returns The global TaskQueueRegistry instance
|
|
60
|
+
*/
|
|
61
|
+
export declare function getTaskQueueRegistry(): TaskQueueRegistry;
|
|
62
|
+
/**
|
|
63
|
+
* Sets the global TaskQueueRegistry instance
|
|
64
|
+
* Stops and clears any existing registry before replacing it
|
|
65
|
+
*
|
|
66
|
+
* @param registry - The new registry instance to use, or null to clear
|
|
67
|
+
*/
|
|
68
|
+
export declare function setTaskQueueRegistry(registry: TaskQueueRegistry | null): void;
|
|
69
|
+
//# sourceMappingURL=TaskQueueRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskQueueRegistry.d.ts","sourceRoot":"","sources":["../../src/task/TaskQueueRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAQ/C;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACI,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAa;IAE3D;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;IAOjD;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAIzD;;;;;OAKG;IACH,WAAW;IAOX;;;;;OAKG;IACH,UAAU;IAOV;;;;;OAKG;IACH,WAAW;CAMZ;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAM7E"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { ITaskConstructor } from "./ITask";
|
|
7
|
+
/**
|
|
8
|
+
* Registers a task constructor with the registry.
|
|
9
|
+
* This allows the task type to be instantiated dynamically based on its type identifier.
|
|
10
|
+
*
|
|
11
|
+
* @param type - The unique identifier for the task type
|
|
12
|
+
* @param constructor - The constructor function for the task
|
|
13
|
+
* @throws Error if a task with the same type is already registered
|
|
14
|
+
*/
|
|
15
|
+
declare function registerTask(baseClass: ITaskConstructor<any, any, any>): void;
|
|
16
|
+
/**
|
|
17
|
+
* TaskRegistry provides a centralized registry for task types.
|
|
18
|
+
* It enables dynamic task instantiation and management across the application.
|
|
19
|
+
*/
|
|
20
|
+
export declare const TaskRegistry: {
|
|
21
|
+
/**
|
|
22
|
+
* Map containing all registered task constructors
|
|
23
|
+
*/
|
|
24
|
+
all: Map<string, ITaskConstructor<any, any, any>>;
|
|
25
|
+
/**
|
|
26
|
+
* Function to register new task types
|
|
27
|
+
*/
|
|
28
|
+
registerTask: typeof registerTask;
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=TaskRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskRegistry.d.ts","sourceRoot":"","sources":["../../src/task/TaskRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAQhD;;;;;;;GAOG;AACH,iBAAS,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAMtE;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY;IACvB;;OAEG;;IAGH;;OAEG;;CAEJ,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { TaskOutputRepository } from "../storage/TaskOutputRepository";
|
|
7
|
+
import { type Taskish } from "../task-graph/Conversions";
|
|
8
|
+
import { IRunConfig, ITask } from "./ITask";
|
|
9
|
+
import { ITaskRunner } from "./ITaskRunner";
|
|
10
|
+
import { Provenance, TaskConfig, TaskInput, TaskOutput } from "./TaskTypes";
|
|
11
|
+
/**
|
|
12
|
+
* Responsible for running tasks
|
|
13
|
+
* Manages the execution lifecycle of individual tasks
|
|
14
|
+
*/
|
|
15
|
+
export declare class TaskRunner<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput, Config extends TaskConfig = TaskConfig> implements ITaskRunner<Input, Output, Config> {
|
|
16
|
+
/**
|
|
17
|
+
* Whether the task is currently running
|
|
18
|
+
*/
|
|
19
|
+
protected running: boolean;
|
|
20
|
+
protected reactiveRunning: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Provenance information for the task
|
|
23
|
+
*/
|
|
24
|
+
protected nodeProvenance: Provenance;
|
|
25
|
+
/**
|
|
26
|
+
* The task to run
|
|
27
|
+
*/
|
|
28
|
+
readonly task: ITask<Input, Output, Config>;
|
|
29
|
+
/**
|
|
30
|
+
* AbortController for cancelling task execution
|
|
31
|
+
*/
|
|
32
|
+
protected abortController?: AbortController;
|
|
33
|
+
/**
|
|
34
|
+
* The output cache for the task
|
|
35
|
+
*/
|
|
36
|
+
protected outputCache?: TaskOutputRepository;
|
|
37
|
+
/**
|
|
38
|
+
* Constructor for TaskRunner
|
|
39
|
+
* @param task The task to run
|
|
40
|
+
*/
|
|
41
|
+
constructor(task: ITask<Input, Output, Config>);
|
|
42
|
+
/**
|
|
43
|
+
* Runs the task and returns the output
|
|
44
|
+
* @param overrides Optional input overrides
|
|
45
|
+
* @param config Optional configuration overrides
|
|
46
|
+
* @returns The task output
|
|
47
|
+
*/
|
|
48
|
+
run(overrides?: Partial<Input>, config?: IRunConfig): Promise<Output>;
|
|
49
|
+
/**
|
|
50
|
+
* Runs the task in reactive mode
|
|
51
|
+
* @param overrides Optional input overrides
|
|
52
|
+
* @returns The task output
|
|
53
|
+
*/
|
|
54
|
+
runReactive(overrides?: Partial<Input>): Promise<Output>;
|
|
55
|
+
/**
|
|
56
|
+
* Aborts task execution
|
|
57
|
+
*/
|
|
58
|
+
abort(): void;
|
|
59
|
+
protected own<T extends Taskish<any, any>>(i: T): T;
|
|
60
|
+
/**
|
|
61
|
+
* Protected method to execute a task by delegating back to the task itself.
|
|
62
|
+
*/
|
|
63
|
+
protected executeTask(input: Input): Promise<Output | undefined>;
|
|
64
|
+
/**
|
|
65
|
+
* Protected method for reactive execution delegation
|
|
66
|
+
*/
|
|
67
|
+
protected executeTaskReactive(input: Input, output: Output): Promise<Output>;
|
|
68
|
+
/**
|
|
69
|
+
* Handles task start
|
|
70
|
+
*/
|
|
71
|
+
protected handleStart(config?: IRunConfig): Promise<void>;
|
|
72
|
+
private updateProgress;
|
|
73
|
+
protected handleStartReactive(): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Handles task abort
|
|
76
|
+
*/
|
|
77
|
+
protected handleAbort(): Promise<void>;
|
|
78
|
+
protected handleAbortReactive(): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Handles task completion
|
|
81
|
+
*/
|
|
82
|
+
protected handleComplete(): Promise<void>;
|
|
83
|
+
protected handleCompleteReactive(): Promise<void>;
|
|
84
|
+
protected handleDisable(): Promise<void>;
|
|
85
|
+
disable(): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Handles task error
|
|
88
|
+
* @param err Error that occurred
|
|
89
|
+
*/
|
|
90
|
+
protected handleError(err: Error): Promise<void>;
|
|
91
|
+
protected handleErrorReactive(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Handles task progress update
|
|
94
|
+
* @param progress Progress value (0-100)
|
|
95
|
+
* @param args Additional arguments
|
|
96
|
+
*/
|
|
97
|
+
protected handleProgress(progress: number, message?: string, ...args: any[]): Promise<void>;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=TaskRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskRunner.d.ts","sourceRoot":"","sources":["../../src/task/TaskRunner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAA0B,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAc,MAAM,aAAa,CAAC;AAExF;;;GAGG;AACH,qBAAa,UAAU,CACrB,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,UAAU,GAAG,UAAU,CACtC,YAAW,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAE7C;;OAEG;IACH,SAAS,CAAC,OAAO,UAAS;IAC1B,SAAS,CAAC,eAAe,UAAS;IAElC;;OAEG;IACH,SAAS,CAAC,cAAc,EAAE,UAAU,CAAM;IAE1C;;OAEG;IACH,SAAgB,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAE5C;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IAE7C;;;OAGG;gBACS,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAU9C;;;;;OAKG;IACG,GAAG,CAAC,SAAS,GAAE,OAAO,CAAC,KAAK,CAAM,EAAE,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCnF;;;;OAIG;IACU,WAAW,CAAC,SAAS,GAAE,OAAO,CAAC,KAAK,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BzE;;OAEG;IACI,KAAK,IAAI,IAAI;IAWpB,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;IAMnD;;OAEG;cACa,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAUtE;;OAEG;cACa,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAalF;;OAEG;cACa,WAAW,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCnE,OAAO,CAAC,cAAc,CAKd;cAEQ,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpD;;OAEG;cACa,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;cAS5B,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpD;;OAEG;cACa,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;cAa/B,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;cAIvC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC;;;OAGG;cACa,WAAW,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;cAmBtC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpD;;;;OAIG;cACa,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,IAAI,CAAC;CAKjB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { StripJSONSchema } from "@workglow/util";
|
|
7
|
+
import { TaskOutputRepository } from "../storage/TaskOutputRepository";
|
|
8
|
+
import type { Task } from "./Task";
|
|
9
|
+
/**
|
|
10
|
+
* Enum representing the possible states of a task
|
|
11
|
+
*
|
|
12
|
+
* PENDING -> PROCESSING -> COMPLETED
|
|
13
|
+
* PENDING -> PROCESSING -> ABORTING -> FAILED
|
|
14
|
+
* PENDING -> PROCESSING -> FAILED
|
|
15
|
+
* PENDING -> DISABLED
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
export declare enum TaskStatus {
|
|
19
|
+
/** Task is created but not yet started */
|
|
20
|
+
PENDING = "PENDING",
|
|
21
|
+
/** Task is disabled due to conditional logic */
|
|
22
|
+
DISABLED = "DISABLED",
|
|
23
|
+
/** Task is currently running */
|
|
24
|
+
PROCESSING = "PROCESSING",
|
|
25
|
+
/** Task has completed successfully */
|
|
26
|
+
COMPLETED = "COMPLETED",
|
|
27
|
+
/** Task is in the process of being aborted */
|
|
28
|
+
ABORTING = "ABORTING",
|
|
29
|
+
/** Task has failed */
|
|
30
|
+
FAILED = "FAILED"
|
|
31
|
+
}
|
|
32
|
+
export interface DataPorts extends StripJSONSchema<Record<string, any>> {
|
|
33
|
+
[key: string]: unknown;
|
|
34
|
+
}
|
|
35
|
+
/** Type for task input data */
|
|
36
|
+
export type TaskInput = DataPorts;
|
|
37
|
+
/** Type for task output data */
|
|
38
|
+
export type TaskOutput = DataPorts;
|
|
39
|
+
export type CompoundTaskOutput = {
|
|
40
|
+
outputs: TaskOutput[];
|
|
41
|
+
} | {
|
|
42
|
+
[key: string]: unknown | unknown[] | undefined;
|
|
43
|
+
};
|
|
44
|
+
/** Type for task provenance metadata */
|
|
45
|
+
export type Provenance = DataPorts;
|
|
46
|
+
/** Type for task type names */
|
|
47
|
+
export type TaskTypeName = string;
|
|
48
|
+
/** Type for task configuration */
|
|
49
|
+
export type TaskConfig = Partial<IConfig>;
|
|
50
|
+
export interface IConfig {
|
|
51
|
+
/** Unique identifier for the task */
|
|
52
|
+
id: unknown;
|
|
53
|
+
/** Optional display name for the task */
|
|
54
|
+
name?: string;
|
|
55
|
+
/** Optional metadata about task origin */
|
|
56
|
+
provenance?: Provenance;
|
|
57
|
+
/** Optional ID of the runner to use for this task */
|
|
58
|
+
runnerId?: string;
|
|
59
|
+
/** Optional output cache to use for this task */
|
|
60
|
+
outputCache?: TaskOutputRepository | boolean;
|
|
61
|
+
/** Optional cacheable flag to use for this task, overriding the default static property */
|
|
62
|
+
cacheable?: boolean;
|
|
63
|
+
/** Optional user data to use for this task, not used by the task framework except it will be exported as part of the task JSON*/
|
|
64
|
+
extras?: DataPorts;
|
|
65
|
+
}
|
|
66
|
+
/** Type for task ID */
|
|
67
|
+
export type TaskIdType = Task<TaskInput, TaskOutput, TaskConfig>["config"]["id"];
|
|
68
|
+
//# sourceMappingURL=TaskTypes.d.ts.map
|
|
@@ -0,0 +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;;;;;;;;GAQG;AACH,oBAAY,UAAU;IACpB,0CAA0C;IAC1C,OAAO,YAAY;IACnB,gDAAgD;IAChD,QAAQ,aAAa;IACrB,gCAAgC;IAChC,UAAU,eAAe;IACzB,sCAAsC;IACtC,SAAS,cAAc;IACvB,8CAA8C;IAC9C,QAAQ,aAAa;IACrB,sBAAsB;IACtB,MAAM,WAAW;CAClB;AAMD,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,wCAAwC;AACxC,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC;AAEnC,+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,0CAA0C;IAC1C,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,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,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { IExecuteContext, ITask } from "../task/ITask";
|
|
7
|
+
import type { DataPorts } from "../task/TaskTypes";
|
|
8
|
+
import type { ITaskGraph } from "./ITaskGraph";
|
|
9
|
+
import type { IWorkflow } from "./IWorkflow";
|
|
10
|
+
import { type CompoundMergeStrategy } from "./TaskGraphRunner";
|
|
11
|
+
export type PipeFunction<I extends DataPorts = any, O extends DataPorts = any> = (input: I, context: IExecuteContext) => O | Promise<O>;
|
|
12
|
+
export type Taskish<A extends DataPorts = DataPorts, B extends DataPorts = DataPorts> = PipeFunction<A, B> | ITask<A, B> | ITaskGraph | IWorkflow<A, B>;
|
|
13
|
+
export declare function ensureTask<I extends DataPorts, O extends DataPorts>(arg: Taskish<I, O>, config?: any): ITask<any, any, any>;
|
|
14
|
+
export declare function getLastTask(workflow: IWorkflow): ITask<any, any, any> | undefined;
|
|
15
|
+
export declare function connect(source: ITask<any, any, any>, target: ITask<any, any, any>, workflow: IWorkflow<any, any>): void;
|
|
16
|
+
export declare function pipe<A extends DataPorts, B extends DataPorts>([fn1]: [Taskish<A, B>], workflow?: IWorkflow<A, B>): IWorkflow<A, B>;
|
|
17
|
+
export declare function pipe<A extends DataPorts, B extends DataPorts, C extends DataPorts>([fn1, fn2]: [Taskish<A, B>, Taskish<B, C>], workflow?: IWorkflow<A, C>): IWorkflow<A, C>;
|
|
18
|
+
export declare function pipe<A extends DataPorts, B extends DataPorts, C extends DataPorts, D extends DataPorts>([fn1, fn2, fn3]: [Taskish<A, B>, Taskish<B, C>, Taskish<C, D>], workflow?: IWorkflow<A, D>): IWorkflow<A, D>;
|
|
19
|
+
export declare function pipe<A extends DataPorts, B extends DataPorts, C extends DataPorts, D extends DataPorts, E extends DataPorts>([fn1, fn2, fn3, fn4]: [Taskish<A, B>, Taskish<B, C>, Taskish<C, D>, Taskish<D, E>], workflow?: IWorkflow<A, E>): IWorkflow<A, E>;
|
|
20
|
+
export declare function pipe<A extends DataPorts, B extends DataPorts, C extends DataPorts, D extends DataPorts, E extends DataPorts, F extends DataPorts>([fn1, fn2, fn3, fn4, fn5]: [
|
|
21
|
+
Taskish<A, B>,
|
|
22
|
+
Taskish<B, C>,
|
|
23
|
+
Taskish<C, D>,
|
|
24
|
+
Taskish<D, E>,
|
|
25
|
+
Taskish<E, F>
|
|
26
|
+
], workflow?: IWorkflow<A, F>): IWorkflow<A, F>;
|
|
27
|
+
export declare function parallel<I extends DataPorts = DataPorts, O extends DataPorts = DataPorts>(args: (PipeFunction<I, O> | ITask<I, O> | IWorkflow<I, O> | ITaskGraph)[], mergeFn?: CompoundMergeStrategy, workflow?: IWorkflow<I, O>): IWorkflow<I, O>;
|
|
28
|
+
//# sourceMappingURL=Conversions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Conversions.d.ts","sourceRoot":"","sources":["../../src/task-graph/Conversions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from "@workglow/util";
|
|
7
|
+
import { TaskError } from "../task/TaskError";
|
|
8
|
+
import { DataflowJson } from "../task/TaskJSON";
|
|
9
|
+
import { Provenance, TaskIdType, TaskOutput, TaskStatus } from "../task/TaskTypes";
|
|
10
|
+
import { DataflowEventListener, DataflowEventListeners, DataflowEventParameters, DataflowEvents } from "./DataflowEvents";
|
|
11
|
+
import { TaskGraph } from "./TaskGraph";
|
|
12
|
+
export type DataflowIdType = `${string}[${string}] ==> ${string}[${string}]`;
|
|
13
|
+
export declare const DATAFLOW_ALL_PORTS = "*";
|
|
14
|
+
export declare const DATAFLOW_ERROR_PORT = "[error]";
|
|
15
|
+
/**
|
|
16
|
+
* Represents a data flow between two tasks, indicating how one task's output is used as input for another task
|
|
17
|
+
*/
|
|
18
|
+
export declare class Dataflow {
|
|
19
|
+
sourceTaskId: TaskIdType;
|
|
20
|
+
sourceTaskPortId: string;
|
|
21
|
+
targetTaskId: TaskIdType;
|
|
22
|
+
targetTaskPortId: string;
|
|
23
|
+
constructor(sourceTaskId: TaskIdType, sourceTaskPortId: string, targetTaskId: TaskIdType, targetTaskPortId: string);
|
|
24
|
+
static createId(sourceTaskId: TaskIdType, sourceTaskPortId: string, targetTaskId: TaskIdType, targetTaskPortId: string): DataflowIdType;
|
|
25
|
+
get id(): DataflowIdType;
|
|
26
|
+
value: any;
|
|
27
|
+
provenance: Provenance;
|
|
28
|
+
status: TaskStatus;
|
|
29
|
+
error: TaskError | undefined;
|
|
30
|
+
reset(): void;
|
|
31
|
+
setStatus(status: TaskStatus): void;
|
|
32
|
+
setPortData(entireDataBlock: any, nodeProvenance: any): void;
|
|
33
|
+
getPortData(): TaskOutput;
|
|
34
|
+
toJSON(): DataflowJson;
|
|
35
|
+
semanticallyCompatible(graph: TaskGraph, dataflow: Dataflow): "static" | "runtime" | "incompatible";
|
|
36
|
+
/**
|
|
37
|
+
* Event emitter for dataflow events
|
|
38
|
+
*/
|
|
39
|
+
get events(): EventEmitter<DataflowEventListeners>;
|
|
40
|
+
protected _events: EventEmitter<DataflowEventListeners> | undefined;
|
|
41
|
+
subscribe<Event extends DataflowEvents>(name: Event, fn: DataflowEventListener<Event>): () => void;
|
|
42
|
+
/**
|
|
43
|
+
* Registers an event listener
|
|
44
|
+
*/
|
|
45
|
+
on<Event extends DataflowEvents>(name: Event, fn: DataflowEventListener<Event>): void;
|
|
46
|
+
/**
|
|
47
|
+
* Removes an event listener
|
|
48
|
+
*/
|
|
49
|
+
off<Event extends DataflowEvents>(name: Event, fn: DataflowEventListener<Event>): void;
|
|
50
|
+
/**
|
|
51
|
+
* Registers a one-time event listener
|
|
52
|
+
*/
|
|
53
|
+
once<Event extends DataflowEvents>(name: Event, fn: DataflowEventListener<Event>): void;
|
|
54
|
+
/**
|
|
55
|
+
* Returns a promise that resolves when the specified event is emitted
|
|
56
|
+
*/
|
|
57
|
+
waitOn<Event extends DataflowEvents>(name: Event): Promise<DataflowEventParameters<Event>>;
|
|
58
|
+
/**
|
|
59
|
+
* Emits an event
|
|
60
|
+
*/
|
|
61
|
+
emit<Event extends DataflowEvents>(name: Event, ...args: DataflowEventParameters<Event>): void;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Represents a data flow between two tasks, indicating how one task's output is used as input for another task
|
|
65
|
+
*
|
|
66
|
+
* This is a helper class that parses a data flow id string into a Dataflow object
|
|
67
|
+
*
|
|
68
|
+
* @param dataflow - The data flow string, e.g. "sourceTaskId[sourceTaskPortId] ==> targetTaskId[targetTaskPortId]"
|
|
69
|
+
*/
|
|
70
|
+
export declare class DataflowArrow extends Dataflow {
|
|
71
|
+
constructor(dataflow: DataflowIdType);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=Dataflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dataflow.d.ts","sourceRoot":"","sources":["../../src/task-graph/Dataflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { EventParameters } from "@workglow/util";
|
|
7
|
+
import { TaskError } from "../task/TaskError";
|
|
8
|
+
import { TaskStatus } from "../task/TaskTypes";
|
|
9
|
+
/**
|
|
10
|
+
* Event listeners for dataflow events
|
|
11
|
+
*/
|
|
12
|
+
export type DataflowEventListeners = {
|
|
13
|
+
/** Fired when a source task starts execution */
|
|
14
|
+
start: () => void;
|
|
15
|
+
/** Fired when a source task completes successfully */
|
|
16
|
+
complete: () => void;
|
|
17
|
+
/** Fired when a source task is disabled */
|
|
18
|
+
disabled: () => void;
|
|
19
|
+
/** Fired when a source task is aborted */
|
|
20
|
+
abort: () => void;
|
|
21
|
+
/** Fired when a source task encounters an error */
|
|
22
|
+
error: (error: TaskError) => void;
|
|
23
|
+
/** Fired when a dataflow is reset to original state */
|
|
24
|
+
reset: () => void;
|
|
25
|
+
/** Fired when a dataflow status changes */
|
|
26
|
+
status: (status: TaskStatus) => void;
|
|
27
|
+
};
|
|
28
|
+
/** Union type of all possible dataflow event names */
|
|
29
|
+
export type DataflowEvents = keyof DataflowEventListeners;
|
|
30
|
+
/** Type for dataflow event listener functions */
|
|
31
|
+
export type DataflowEventListener<Event extends DataflowEvents> = DataflowEventListeners[Event];
|
|
32
|
+
/** Type for dataflow event parameters */
|
|
33
|
+
export type DataflowEventParameters<Event extends DataflowEvents> = EventParameters<DataflowEventListeners, Event>;
|
|
34
|
+
//# sourceMappingURL=DataflowEvents.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ITask } from "../task/ITask";
|
|
7
|
+
import { JsonTaskItem, TaskGraphJson } from "../task/TaskJSON";
|
|
8
|
+
import { TaskIdType, TaskInput, TaskOutput } from "../task/TaskTypes";
|
|
9
|
+
import { Dataflow, DataflowIdType } from "./Dataflow";
|
|
10
|
+
import type { TaskGraphRunConfig } from "./TaskGraph";
|
|
11
|
+
import type { TaskGraphEventListener, TaskGraphEvents } from "./TaskGraphEvents";
|
|
12
|
+
import { CompoundMergeStrategy, GraphResult, GraphResultArray, TaskGraphRunner } from "./TaskGraphRunner";
|
|
13
|
+
export interface ITaskGraph {
|
|
14
|
+
get runner(): TaskGraphRunner;
|
|
15
|
+
run<ExecuteOutput extends TaskOutput>(input?: TaskInput, config?: TaskGraphRunConfig): Promise<GraphResultArray<ExecuteOutput>>;
|
|
16
|
+
runReactive<Output extends TaskOutput>(): Promise<GraphResultArray<Output>>;
|
|
17
|
+
mergeExecuteOutputsToRunOutput<ExecuteOutput extends TaskOutput, Merge extends CompoundMergeStrategy = CompoundMergeStrategy>(results: GraphResultArray<ExecuteOutput>, compoundMerge: Merge): GraphResult<ExecuteOutput, Merge>;
|
|
18
|
+
abort(): void;
|
|
19
|
+
disable(): Promise<void>;
|
|
20
|
+
getTask(id: TaskIdType): ITask | undefined;
|
|
21
|
+
getTasks(): ITask[];
|
|
22
|
+
topologicallySortedNodes(): ITask[];
|
|
23
|
+
addTask(task: ITask): void;
|
|
24
|
+
addTasks(tasks: ITask[]): void;
|
|
25
|
+
addDataflow(dataflow: Dataflow): void;
|
|
26
|
+
addDataflows(dataflows: Dataflow[]): void;
|
|
27
|
+
getDataflow(id: DataflowIdType): Dataflow | undefined;
|
|
28
|
+
getDataflows(): Dataflow[];
|
|
29
|
+
getSourceDataflows(taskId: unknown): Dataflow[];
|
|
30
|
+
getTargetDataflows(taskId: unknown): Dataflow[];
|
|
31
|
+
getSourceTasks(taskId: unknown): ITask[];
|
|
32
|
+
getTargetTasks(taskId: unknown): ITask[];
|
|
33
|
+
removeTask(taskId: unknown): void;
|
|
34
|
+
toJSON(): TaskGraphJson;
|
|
35
|
+
toDependencyJSON(): JsonTaskItem[];
|
|
36
|
+
subscribe<Event extends TaskGraphEvents>(event: Event, fn: TaskGraphEventListener<Event>): () => void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ITaskGraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITaskGraph.d.ts","sourceRoot":"","sources":["../../src/task-graph/ITaskGraph.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,UAAU;IACzB,IAAI,MAAM,IAAI,eAAe,CAAC;IAC9B,GAAG,CAAC,aAAa,SAAS,UAAU,EAClC,KAAK,CAAC,EAAE,SAAS,EACjB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5C,WAAW,CAAC,MAAM,SAAS,UAAU,KAAK,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,8BAA8B,CAC5B,aAAa,SAAS,UAAU,EAChC,KAAK,SAAS,qBAAqB,GAAG,qBAAqB,EAE3D,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC,EACxC,aAAa,EAAE,KAAK,GACnB,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACrC,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,CAAC,EAAE,EAAE,UAAU,GAAG,KAAK,GAAG,SAAS,CAAC;IAC3C,QAAQ,IAAI,KAAK,EAAE,CAAC;IACpB,wBAAwB,IAAI,KAAK,EAAE,CAAC;IACpC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,EAAE,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtD,YAAY,IAAI,QAAQ,EAAE,CAAC;IAC3B,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAC;IAChD,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAC;IAChD,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,CAAC;IACzC,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,CAAC;IACzC,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,MAAM,IAAI,aAAa,CAAC;IACxB,gBAAgB,IAAI,YAAY,EAAE,CAAC;IACnC,SAAS,CAAC,KAAK,SAAS,eAAe,EACrC,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAChC,MAAM,IAAI,CAAC;CACf"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { TaskInput, TaskOutput } from "../task/TaskTypes";
|
|
7
|
+
import { TaskGraph } from "./TaskGraph";
|
|
8
|
+
import { GraphResult, PROPERTY_ARRAY } from "./TaskGraphRunner";
|
|
9
|
+
export interface IWorkflow<Input extends TaskInput = TaskInput, Output extends TaskOutput = TaskOutput> {
|
|
10
|
+
graph: TaskGraph;
|
|
11
|
+
run(input?: Input): Promise<GraphResult<Output, typeof PROPERTY_ARRAY>>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=IWorkflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IWorkflow.d.ts","sourceRoot":"","sources":["../../src/task-graph/IWorkflow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,WAAW,SAAS,CACxB,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,MAAM,SAAS,UAAU,GAAG,UAAU;IAEtC,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,cAAc,CAAC,CAAC,CAAC;CACzE"}
|