@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.
Files changed (83) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1280 -0
  3. package/dist/browser.d.ts +7 -0
  4. package/dist/browser.d.ts.map +1 -0
  5. package/dist/browser.js +2842 -0
  6. package/dist/browser.js.map +33 -0
  7. package/dist/bun.d.ts +7 -0
  8. package/dist/bun.d.ts.map +1 -0
  9. package/dist/bun.js +2843 -0
  10. package/dist/bun.js.map +33 -0
  11. package/dist/common.d.ts +33 -0
  12. package/dist/common.d.ts.map +1 -0
  13. package/dist/node.d.ts +7 -0
  14. package/dist/node.d.ts.map +1 -0
  15. package/dist/node.js +2842 -0
  16. package/dist/node.js.map +33 -0
  17. package/dist/storage/TaskGraphRepository.d.ts +92 -0
  18. package/dist/storage/TaskGraphRepository.d.ts.map +1 -0
  19. package/dist/storage/TaskGraphTabularRepository.d.ts +73 -0
  20. package/dist/storage/TaskGraphTabularRepository.d.ts.map +1 -0
  21. package/dist/storage/TaskOutputRepository.d.ts +93 -0
  22. package/dist/storage/TaskOutputRepository.d.ts.map +1 -0
  23. package/dist/storage/TaskOutputTabularRepository.d.ts +84 -0
  24. package/dist/storage/TaskOutputTabularRepository.d.ts.map +1 -0
  25. package/dist/task/ArrayTask.d.ts +72 -0
  26. package/dist/task/ArrayTask.d.ts.map +1 -0
  27. package/dist/task/ConditionalTask.d.ts +278 -0
  28. package/dist/task/ConditionalTask.d.ts.map +1 -0
  29. package/dist/task/GraphAsTask.d.ts +79 -0
  30. package/dist/task/GraphAsTask.d.ts.map +1 -0
  31. package/dist/task/GraphAsTaskRunner.d.ts +36 -0
  32. package/dist/task/GraphAsTaskRunner.d.ts.map +1 -0
  33. package/dist/task/ITask.d.ts +144 -0
  34. package/dist/task/ITask.d.ts.map +1 -0
  35. package/dist/task/ITaskRunner.d.ts +36 -0
  36. package/dist/task/ITaskRunner.d.ts.map +1 -0
  37. package/dist/task/JobQueueFactory.d.ts +23 -0
  38. package/dist/task/JobQueueFactory.d.ts.map +1 -0
  39. package/dist/task/JobQueueTask.d.ts +65 -0
  40. package/dist/task/JobQueueTask.d.ts.map +1 -0
  41. package/dist/task/Task.d.ts +334 -0
  42. package/dist/task/Task.d.ts.map +1 -0
  43. package/dist/task/TaskError.d.ts +66 -0
  44. package/dist/task/TaskError.d.ts.map +1 -0
  45. package/dist/task/TaskEvents.d.ts +40 -0
  46. package/dist/task/TaskEvents.d.ts.map +1 -0
  47. package/dist/task/TaskJSON.d.ts +82 -0
  48. package/dist/task/TaskJSON.d.ts.map +1 -0
  49. package/dist/task/TaskQueueRegistry.d.ts +69 -0
  50. package/dist/task/TaskQueueRegistry.d.ts.map +1 -0
  51. package/dist/task/TaskRegistry.d.ts +31 -0
  52. package/dist/task/TaskRegistry.d.ts.map +1 -0
  53. package/dist/task/TaskRunner.d.ts +99 -0
  54. package/dist/task/TaskRunner.d.ts.map +1 -0
  55. package/dist/task/TaskTypes.d.ts +68 -0
  56. package/dist/task/TaskTypes.d.ts.map +1 -0
  57. package/dist/task-graph/Conversions.d.ts +28 -0
  58. package/dist/task-graph/Conversions.d.ts.map +1 -0
  59. package/dist/task-graph/Dataflow.d.ts +73 -0
  60. package/dist/task-graph/Dataflow.d.ts.map +1 -0
  61. package/dist/task-graph/DataflowEvents.d.ts +34 -0
  62. package/dist/task-graph/DataflowEvents.d.ts.map +1 -0
  63. package/dist/task-graph/ITaskGraph.d.ts +38 -0
  64. package/dist/task-graph/ITaskGraph.d.ts.map +1 -0
  65. package/dist/task-graph/IWorkflow.d.ts +13 -0
  66. package/dist/task-graph/IWorkflow.d.ts.map +1 -0
  67. package/dist/task-graph/TaskGraph.d.ts +230 -0
  68. package/dist/task-graph/TaskGraph.d.ts.map +1 -0
  69. package/dist/task-graph/TaskGraphEvents.d.ts +54 -0
  70. package/dist/task-graph/TaskGraphEvents.d.ts.map +1 -0
  71. package/dist/task-graph/TaskGraphRunner.d.ts +202 -0
  72. package/dist/task-graph/TaskGraphRunner.d.ts.map +1 -0
  73. package/dist/task-graph/TaskGraphScheduler.d.ts +56 -0
  74. package/dist/task-graph/TaskGraphScheduler.d.ts.map +1 -0
  75. package/dist/task-graph/Workflow.d.ts +155 -0
  76. package/dist/task-graph/Workflow.d.ts.map +1 -0
  77. package/dist/types.d.ts +7 -0
  78. package/dist/types.d.ts.map +1 -0
  79. package/package.json +59 -0
  80. package/src/storage/README.md +61 -0
  81. package/src/task/ConditionalTask.README.md +268 -0
  82. package/src/task/README.md +251 -0
  83. 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":"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,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACnF,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,UAAU,EAAE,UAAU,CAAM;IAC5B,MAAM,EAAE,UAAU,CAAsB;IACxC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAE7B,KAAK;IASL,SAAS,CAAC,MAAM,EAAE,UAAU;IA0BnC,WAAW,CAAC,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG;IAWrD,WAAW,IAAI,UAAU;IAUzB,MAAM,IAAI,YAAY;IAStB,sBAAsB,CACpB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,QAAQ,GACjB,QAAQ,GAAG,SAAS,GAAG,cAAc;IAiDxC;;OAEG;IACH,IAAW,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAKxD;IACD,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC;IAE7D,SAAS,CAAC,KAAK,SAAS,cAAc,EAC3C,IAAI,EAAE,KAAK,EACX,EAAE,EAAE,qBAAqB,CAAC,KAAK,CAAC,GAC/B,MAAM,IAAI;IAIb;;OAEG;IACI,EAAE,CAAC,KAAK,SAAS,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,qBAAqB,CAAC,KAAK,CAAC,GAAG,IAAI;IAI5F;;OAEG;IACI,GAAG,CAAC,KAAK,SAAS,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,qBAAqB,CAAC,KAAK,CAAC,GAAG,IAAI;IAI7F;;OAEG;IACI,IAAI,CAAC,KAAK,SAAS,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,qBAAqB,CAAC,KAAK,CAAC,GAAG,IAAI;IAI9F;;OAEG;IACI,MAAM,CAAC,KAAK,SAAS,cAAc,EACxC,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAI1C;;OAEG;IACI,IAAI,CAAC,KAAK,SAAS,cAAc,EACtC,IAAI,EAAE,KAAK,EACX,GAAG,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,GACtC,IAAI;CAGR;AAED;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,QAAQ,EAAE,cAAc;CAarC"}
@@ -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"}