@workglow/task-graph 0.0.77 → 0.0.78
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 +78 -2
- package/dist/browser.js.map +6 -4
- package/dist/bun.js +78 -2
- package/dist/bun.js.map +6 -4
- package/dist/common.d.ts +2 -0
- package/dist/common.d.ts.map +1 -1
- package/dist/node.js +78 -2
- package/dist/node.js.map +6 -4
- package/dist/task/InputTask.d.ts +27 -0
- package/dist/task/InputTask.d.ts.map +1 -0
- package/dist/task/OutputTask.d.ts +27 -0
- package/dist/task/OutputTask.d.ts.map +1 -0
- package/package.json +7 -7
package/dist/browser.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/task/ArrayTask.ts", "../src/task-graph/TaskGraph.ts", "../src/task/GraphAsTask.ts", "../src/task-graph/Dataflow.ts", "../src/task/TaskTypes.ts", "../src/task-graph/TaskGraphRunner.ts", "../src/storage/TaskOutputRepository.ts", "../src/task/Task.ts", "../src/task/TaskError.ts", "../src/task/TaskRunner.ts", "../src/task/ConditionalTask.ts", "../src/task-graph/TaskGraphScheduler.ts", "../src/task/GraphAsTaskRunner.ts", "../src/task-graph/Workflow.ts", "../src/task-graph/Conversions.ts", "../src/task-graph/TaskGraphEvents.ts", "../src/task/JobQueueFactory.ts", "../src/task/JobQueueTask.ts", "../src/task/TaskQueueRegistry.ts", "../src/task/TaskRegistry.ts", "../src/task/TaskJSON.ts", "../src/storage/TaskGraphRepository.ts", "../src/storage/TaskGraphTabularRepository.ts", "../src/storage/TaskOutputTabularRepository.ts"],
|
|
3
|
+
"sources": ["../src/task/ArrayTask.ts", "../src/task-graph/TaskGraph.ts", "../src/task/GraphAsTask.ts", "../src/task-graph/Dataflow.ts", "../src/task/TaskTypes.ts", "../src/task-graph/TaskGraphRunner.ts", "../src/storage/TaskOutputRepository.ts", "../src/task/Task.ts", "../src/task/TaskError.ts", "../src/task/TaskRunner.ts", "../src/task/ConditionalTask.ts", "../src/task-graph/TaskGraphScheduler.ts", "../src/task/GraphAsTaskRunner.ts", "../src/task-graph/Workflow.ts", "../src/task-graph/Conversions.ts", "../src/task-graph/TaskGraphEvents.ts", "../src/task/InputTask.ts", "../src/task/JobQueueFactory.ts", "../src/task/JobQueueTask.ts", "../src/task/TaskQueueRegistry.ts", "../src/task/OutputTask.ts", "../src/task/TaskRegistry.ts", "../src/task/TaskJSON.ts", "../src/storage/TaskGraphRepository.ts", "../src/storage/TaskGraphTabularRepository.ts", "../src/storage/TaskOutputTabularRepository.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { uuid4, type DataPortSchema } from \"@workglow/util\";\n\nimport { TaskGraph } from \"../task-graph/TaskGraph\";\nimport { GraphResultArray, PROPERTY_ARRAY } from \"../task-graph/TaskGraphRunner\";\nimport { GraphAsTask } from \"./GraphAsTask\";\nimport { GraphAsTaskRunner } from \"./GraphAsTaskRunner\";\nimport { JsonTaskItem, TaskGraphItemJson } from \"./TaskJSON\";\nimport { TaskConfig, TaskInput, TaskOutput } from \"./TaskTypes\";\n\n/**\n * ArrayTask is a compound task that either:\n * 1. Executes directly if all inputs are non-arrays\n * 2. Creates a subGraph with one task instance per array element if any input is an array\n * 3. Creates all combinations if multiple inputs are arrays\n */\nexport class ArrayTask<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends GraphAsTask<Input, Output, Config> {\n /**\n * The type identifier for this task class\n */\n public static type = \"ArrayTask\";\n\n /**\n * Make this task have results that look like an array\n */\n public static readonly compoundMerge = PROPERTY_ARRAY;\n\n /**\n * Gets input schema for this task from the static inputSchema property, which is user defined (reverts GraphAsTask's override)\n */\n public inputSchema(): DataPortSchema {\n return (this.constructor as typeof ArrayTask).inputSchema();\n }\n\n /**\n * Gets output schema for this task from the static outputSchema property, which is user defined (reverts GraphAsTask's override)\n */\n public outputSchema(): DataPortSchema {\n return (this.constructor as typeof ArrayTask).outputSchema();\n }\n\n /**\n * Regenerates the task subgraph based on input arrays\n */\n public regenerateGraph(): void {\n // Check if any inputs are arrays\n const arrayInputs = new Map<string, Array<Input[keyof Input]>>();\n let hasArrayInputs = false;\n const inputSchema = this.inputSchema();\n if (typeof inputSchema !== \"boolean\") {\n const keys = Object.keys(inputSchema.properties || {});\n for (const inputId of keys) {\n const inputValue = this.runInputData[inputId];\n const inputDef = inputSchema.properties?.[inputId];\n if (\n typeof inputDef === \"object\" &&\n inputDef !== null &&\n \"x-replicate\" in inputDef &&\n (inputDef as any)[\"x-replicate\"] === true &&\n Array.isArray(inputValue) &&\n inputValue.length > 1\n ) {\n arrayInputs.set(inputId, inputValue);\n hasArrayInputs = true;\n }\n }\n }\n\n // Clear the existing subgraph\n this.subGraph = new TaskGraph();\n\n // If no array inputs, no need to populate the subgraph\n if (!hasArrayInputs) {\n super.regenerateGraph();\n return;\n }\n\n // Create all combinations of inputs\n const inputIds = Array.from(arrayInputs.keys());\n const inputObject = Object.fromEntries(arrayInputs);\n const combinations = this.generateCombinations(inputObject as Input, inputIds);\n\n // Create task instances for each combination\n const tasks = combinations.map((combination) => {\n // Create a new instance of this same class\n const { id, name, ...rest } = this.config;\n const task = new (this.constructor as any)(\n { ...this.defaults, ...this.runInputData, ...combination },\n { ...rest, id: `${id}_${uuid4()}` }\n );\n return task;\n });\n\n // Add tasks to subgraph\n this.subGraph.addTasks(tasks);\n\n // Emit regenerate event\n super.regenerateGraph();\n }\n\n /**\n * Generates all possible combinations of array inputs\n * @param input Input object containing arrays\n * @param inputMakeArray Keys of properties to generate combinations for\n * @returns Array of input objects with all possible combinations\n */\n protected generateCombinations(input: Input, inputMakeArray: Array<keyof Input>): Input[] {\n // Prepare arrays for combination generation\n const arraysToCombine: Array<Array<Input[keyof Input]>> = inputMakeArray.map((key) =>\n Array.isArray(input[key]) ? (input[key] as Array<Input[keyof Input]>) : []\n );\n\n const indices = arraysToCombine.map(() => 0);\n const combinations: number[][] = [];\n let done = false;\n\n while (!done) {\n combinations.push([...indices]); // Add current combination of indices\n\n // Move to the next combination of indices\n for (let i = indices.length - 1; i >= 0; i--) {\n if (++indices[i] < arraysToCombine[i].length) break; // Increment current index if possible\n if (i === 0)\n done = true; // All combinations have been generated\n else indices[i] = 0; // Reset current index and move to the next position\n }\n }\n\n // Build objects based on the combinations\n const combos = combinations.map((combination) => {\n const result = { ...input }; // Start with a shallow copy of the input\n\n // Set values from the arrays based on the current combination\n combination.forEach((valueIndex, arrayIndex) => {\n const key = inputMakeArray[arrayIndex];\n if (Array.isArray(input[key]))\n result[key] = (input[key] as Array<Input[keyof Input]>)[valueIndex];\n });\n\n return result;\n });\n\n return combos;\n }\n\n toJSON(): TaskGraphItemJson {\n const { subgraph, ...result } = super.toJSON();\n return result;\n }\n\n toDependencyJSON(): JsonTaskItem {\n const { subtasks, ...result } = super.toDependencyJSON();\n return result;\n }\n\n /**\n * Create a custom runner for ArrayTask that overrides input passing behavior\n * as inputs were already distributed to child tasks during graph regeneration\n */\n\n declare _runner: ArrayTaskRunner<Input, Output, Config>;\n\n /**\n * Task runner for handling the task execution\n */\n override get runner(): ArrayTaskRunner<Input, Output, Config> {\n if (!this._runner) {\n this._runner = new ArrayTaskRunner<Input, Output, Config>(this);\n }\n return this._runner;\n }\n}\n\n/**\n * Custom runner for ArrayTask that passes empty input to child tasks.\n * ArrayTask child tasks get their input values from their defaults (set during task creation),\n * not from the parent task's input.\n */\nclass ArrayTaskRunner<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends GraphAsTaskRunner<Input, Output, Config> {\n declare task: ArrayTask<Input, Output, Config>;\n\n /**\n * Override to pass empty input to subgraph.\n * Child tasks will use their defaults instead of parent input.\n */\n protected async executeTaskChildren(_input: Input): Promise<GraphResultArray<Output>> {\n return super.executeTaskChildren({} as Input);\n }\n\n /**\n * Override to handle single task mode (no children) properly.\n * In single task mode, call the task's executeReactive directly without fixInput.\n */\n public async executeTaskReactive(input: Input, output: Output): Promise<Output> {\n const reactiveResults = await super.executeTaskReactive(input, output);\n if (this.task.hasChildren()) {\n // Multiple subtasks: use parent implementation\n return reactiveResults;\n } else {\n // Single task mode: call task's executeReactive directly\n this.task.runOutputData = Object.assign({}, output, reactiveResults ?? {}) as Output;\n return this.task.runOutputData as Output;\n }\n }\n}\n",
|
|
6
6
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DirectedAcyclicGraph, EventEmitter, uuid4 } from \"@workglow/util\";\nimport { TaskOutputRepository } from \"../storage/TaskOutputRepository\";\nimport type { ITask } from \"../task/ITask\";\nimport { JsonTaskItem, TaskGraphJson } from \"../task/TaskJSON\";\nimport type { Provenance, TaskIdType, TaskInput, TaskOutput, TaskStatus } from \"../task/TaskTypes\";\nimport { ensureTask, type PipeFunction } from \"./Conversions\";\nimport { Dataflow, type DataflowIdType } from \"./Dataflow\";\nimport type { ITaskGraph } from \"./ITaskGraph\";\nimport {\n EventTaskGraphToDagMapping,\n GraphEventDagEvents,\n GraphEventDagParameters,\n TaskGraphEventListener,\n TaskGraphEvents,\n TaskGraphEventStatusParameters,\n TaskGraphStatusEvents,\n TaskGraphStatusListeners,\n} from \"./TaskGraphEvents\";\nimport {\n CompoundMergeStrategy,\n GraphResult,\n type GraphResultArray,\n TaskGraphRunner,\n} from \"./TaskGraphRunner\";\n\n/**\n * Configuration for running a task graph\n */\nexport interface TaskGraphRunConfig {\n /** Optional output cache to use for this task graph */\n outputCache?: TaskOutputRepository | boolean;\n /** Optional signal to abort the task graph */\n parentSignal?: AbortSignal;\n /** Optional provenance to use for this task graph */\n parentProvenance?: Provenance;\n}\n\nclass TaskGraphDAG extends DirectedAcyclicGraph<\n ITask<any, any, any>,\n Dataflow,\n TaskIdType,\n DataflowIdType\n> {\n constructor() {\n super(\n (task: ITask<any, any, any>) => task.config.id,\n (dataflow: Dataflow) => dataflow.id\n );\n }\n}\n\ninterface TaskGraphConstructorConfig {\n outputCache?: TaskOutputRepository;\n dag?: TaskGraphDAG;\n}\n\n/**\n * Represents a task graph, a directed acyclic graph of tasks and data flows\n */\nexport class TaskGraph implements ITaskGraph {\n /** Optional output cache to use for this task graph */\n public outputCache?: TaskOutputRepository;\n\n /**\n * Constructor for TaskGraph\n * @param config Configuration for the task graph\n */\n constructor({ outputCache, dag }: TaskGraphConstructorConfig = {}) {\n this.outputCache = outputCache;\n this._dag = dag || new TaskGraphDAG();\n }\n\n private _dag: TaskGraphDAG;\n\n private _runner: TaskGraphRunner | undefined;\n public get runner(): TaskGraphRunner {\n if (!this._runner) {\n this._runner = new TaskGraphRunner(this, this.outputCache);\n }\n return this._runner;\n }\n\n // ========================================================================\n // Public methods\n // ========================================================================\n\n /**\n * Runs the task graph\n * @param config Configuration for the graph run\n * @returns A promise that resolves when all tasks are complete\n * @throws TaskError if any tasks have failed\n */\n public run<ExecuteOutput extends TaskOutput>(\n input: TaskInput = {} as TaskInput,\n config: TaskGraphRunConfig = {}\n ): Promise<GraphResultArray<ExecuteOutput>> {\n return this.runner.runGraph<ExecuteOutput>(input, {\n outputCache: config?.outputCache || this.outputCache,\n parentProvenance: config?.parentProvenance || {},\n parentSignal: config?.parentSignal || undefined,\n });\n }\n\n /**\n * Runs the task graph reactively\n * @returns A promise that resolves when all tasks are complete\n * @throws TaskError if any tasks have failed\n */\n public runReactive<Output extends TaskOutput>(): Promise<GraphResultArray<Output>> {\n return this.runner.runGraphReactive<Output>();\n }\n\n /**\n * Merges the execute output to the run output\n * @param results The execute output\n * @param compoundMerge The compound merge strategy to use\n * @returns The run output\n */\n\n public mergeExecuteOutputsToRunOutput<\n ExecuteOutput extends TaskOutput,\n Merge extends CompoundMergeStrategy = CompoundMergeStrategy,\n >(\n results: GraphResultArray<ExecuteOutput>,\n compoundMerge: Merge\n ): GraphResult<ExecuteOutput, Merge> {\n return this.runner.mergeExecuteOutputsToRunOutput(results, compoundMerge);\n }\n\n /**\n * Aborts the task graph\n */\n public abort() {\n this.runner.abort();\n }\n\n /**\n * Disables the task graph\n */\n public async disable() {\n await this.runner.disable();\n }\n\n /**\n * Retrieves a task from the task graph by its id\n * @param id The id of the task to retrieve\n * @returns The task with the given id, or undefined if not found\n */\n public getTask(id: TaskIdType): ITask<any, any, any> | undefined {\n return this._dag.getNode(id);\n }\n\n /**\n * Retrieves all tasks in the task graph\n * @returns An array of tasks in the task graph\n */\n public getTasks(): ITask<any, any, any>[] {\n return this._dag.getNodes();\n }\n\n /**\n * Retrieves all tasks in the task graph topologically sorted\n * @returns An array of tasks in the task graph topologically sorted\n */\n public topologicallySortedNodes(): ITask<any, any, any>[] {\n return this._dag.topologicallySortedNodes();\n }\n\n /**\n * Adds a task to the task graph\n * @param task The task to add\n * @returns The current task graph\n */\n public addTask(fn: PipeFunction<any, any>, config?: any): unknown;\n public addTask(task: ITask<any, any, any>): unknown;\n public addTask(task: ITask<any, any, any> | PipeFunction<any, any>, config?: any): unknown {\n return this._dag.addNode(ensureTask(task, config));\n }\n\n /**\n * Adds multiple tasks to the task graph\n * @param tasks The tasks to add\n * @returns The current task graph\n */\n public addTasks(tasks: PipeFunction<any, any>[]): unknown[];\n public addTasks(tasks: ITask<any, any, any>[]): unknown[];\n public addTasks(tasks: ITask<any, any, any>[] | PipeFunction<any, any>[]): unknown[] {\n return this._dag.addNodes(tasks.map(ensureTask));\n }\n\n /**\n * Adds a data flow to the task graph\n * @param dataflow The data flow to add\n * @returns The current task graph\n */\n public addDataflow(dataflow: Dataflow) {\n return this._dag.addEdge(dataflow.sourceTaskId, dataflow.targetTaskId, dataflow);\n }\n\n /**\n * Adds multiple data flows to the task graph\n * @param dataflows The data flows to add\n * @returns The current task graph\n */\n public addDataflows(dataflows: Dataflow[]) {\n const addedEdges = dataflows.map<[s: unknown, t: unknown, e: Dataflow]>((edge) => {\n return [edge.sourceTaskId, edge.targetTaskId, edge];\n });\n return this._dag.addEdges(addedEdges);\n }\n\n /**\n * Retrieves a data flow from the task graph by its id\n * @param id The id of the data flow to retrieve\n * @returns The data flow with the given id, or undefined if not found\n */\n public getDataflow(id: DataflowIdType): Dataflow | undefined {\n // @ts-ignore\n for (const i in this._dag.adjacency) {\n // @ts-ignore\n for (const j in this._dag.adjacency[i]) {\n // @ts-ignore\n const maybeEdges = this._dag.adjacency[i][j];\n if (maybeEdges !== null) {\n for (const edge of maybeEdges) {\n // @ts-ignore\n if (this._dag.edgeIdentity(edge, \"\", \"\") == id) {\n return edge;\n }\n }\n }\n }\n }\n }\n\n /**\n * Retrieves all data flows in the task graph\n * @returns An array of data flows in the task graph\n */\n public getDataflows(): Dataflow[] {\n return this._dag.getEdges().map((edge) => edge[2]);\n }\n\n /**\n * Removes a data flow from the task graph\n * @param dataflow The data flow to remove\n * @returns The current task graph\n */\n public removeDataflow(dataflow: Dataflow) {\n return this._dag.removeEdge(dataflow.sourceTaskId, dataflow.targetTaskId, dataflow.id);\n }\n\n /**\n * Retrieves the data flows that are sources of a given task\n * @param taskId The id of the task to retrieve sources for\n * @returns An array of data flows that are sources of the given task\n */\n public getSourceDataflows(taskId: unknown): Dataflow[] {\n return this._dag.inEdges(taskId).map(([, , dataflow]) => dataflow);\n }\n\n /**\n * Retrieves the data flows that are targets of a given task\n * @param taskId The id of the task to retrieve targets for\n * @returns An array of data flows that are targets of the given task\n */\n public getTargetDataflows(taskId: unknown): Dataflow[] {\n return this._dag.outEdges(taskId).map(([, , dataflow]) => dataflow);\n }\n\n /**\n * Retrieves the tasks that are sources of a given task\n * @param taskId The id of the task to retrieve sources for\n * @returns An array of tasks that are sources of the given task\n */\n public getSourceTasks(taskId: unknown): ITask<any, any, any>[] {\n return this.getSourceDataflows(taskId).map((dataflow) => this.getTask(dataflow.sourceTaskId)!);\n }\n\n /**\n * Retrieves the tasks that are targets of a given task\n * @param taskId The id of the task to retrieve targets for\n * @returns An array of tasks that are targets of the given task\n */\n public getTargetTasks(taskId: unknown): ITask<any, any, any>[] {\n return this.getTargetDataflows(taskId).map((dataflow) => this.getTask(dataflow.targetTaskId)!);\n }\n\n /**\n * Removes a task from the task graph\n * @param taskId The id of the task to remove\n * @returns The current task graph\n */\n public removeTask(taskId: unknown) {\n return this._dag.removeNode(taskId);\n }\n\n public resetGraph() {\n this.runner.resetGraph(this, uuid4());\n }\n\n /**\n * Converts the task graph to a JSON format suitable for dependency tracking\n * @returns An array of JsonTaskItem objects, each representing a task and its dependencies\n */\n public toJSON(): TaskGraphJson {\n const tasks = this.getTasks().map((node) => node.toJSON());\n const dataflows = this.getDataflows().map((df) => df.toJSON());\n return {\n tasks,\n dataflows,\n };\n }\n\n /**\n * Converts the task graph to a JSON format suitable for dependency tracking\n * @returns An array of JsonTaskItem objects, each representing a task and its dependencies\n */\n public toDependencyJSON(): JsonTaskItem[] {\n const tasks = this.getTasks().flatMap((node) => node.toDependencyJSON());\n this.getDataflows().forEach((df) => {\n const target = tasks.find((node) => node.id === df.targetTaskId)!;\n if (!target.dependencies) {\n target.dependencies = {};\n }\n const targetDeps = target.dependencies[df.targetTaskPortId];\n if (!targetDeps) {\n target.dependencies[df.targetTaskPortId] = {\n id: df.sourceTaskId,\n output: df.sourceTaskPortId,\n };\n } else {\n if (Array.isArray(targetDeps)) {\n targetDeps.push({\n id: df.sourceTaskId,\n output: df.sourceTaskPortId,\n });\n } else {\n target.dependencies[df.targetTaskPortId] = [\n targetDeps,\n { id: df.sourceTaskId, output: df.sourceTaskPortId },\n ];\n }\n }\n });\n return tasks;\n }\n\n // ========================================================================\n // Event handling\n // ========================================================================\n\n /**\n * Event emitter for task lifecycle events\n */\n public get events(): EventEmitter<TaskGraphStatusListeners> {\n if (!this._events) {\n this._events = new EventEmitter<TaskGraphStatusListeners>();\n }\n return this._events;\n }\n protected _events: EventEmitter<TaskGraphStatusListeners> | undefined;\n\n /**\n * Subscribes to an event\n * @param name - The event name to listen for\n * @param fn - The callback function to execute when the event occurs\n * @returns a function to unsubscribe from the event\n */\n public subscribe<Event extends TaskGraphEvents>(\n name: Event,\n fn: TaskGraphEventListener<Event>\n ): () => void {\n this.on(name, fn);\n return () => this.off(name, fn);\n }\n\n /**\n * Subscribes to status changes on all tasks (existing and future)\n * @param callback - Function called when any task's status changes\n * @param callback.taskId - The ID of the task whose status changed\n * @param callback.status - The new status of the task\n * @returns a function to unsubscribe from all task status events\n */\n public subscribeToTaskStatus(\n callback: (taskId: TaskIdType, status: TaskStatus) => void\n ): () => void {\n const unsubscribes: (() => void)[] = [];\n\n // Subscribe to status events on all existing tasks\n const tasks = this.getTasks();\n tasks.forEach((task) => {\n const unsub = task.subscribe(\"status\", (status) => {\n callback(task.config.id, status);\n });\n unsubscribes.push(unsub);\n });\n\n const handleTaskAdded = (taskId: TaskIdType) => {\n const task = this.getTask(taskId);\n if (!task || typeof task.subscribe !== \"function\") return;\n\n const unsub = task.subscribe(\"status\", (status) => {\n callback(task.config.id, status);\n });\n unsubscribes.push(unsub);\n };\n\n const graphUnsub = this.subscribe(\"task_added\", handleTaskAdded);\n unsubscribes.push(graphUnsub);\n\n // Return unsubscribe function\n return () => {\n unsubscribes.forEach((unsub) => unsub());\n };\n }\n\n /**\n * Subscribes to progress updates on all tasks (existing and future)\n * @param callback - Function called when any task reports progress\n * @param callback.taskId - The ID of the task reporting progress\n * @param callback.progress - The progress value (0-100)\n * @param callback.message - Optional progress message\n * @param callback.args - Additional arguments passed with the progress update\n * @returns a function to unsubscribe from all task progress events\n */\n public subscribeToTaskProgress(\n callback: (taskId: TaskIdType, progress: number, message?: string, ...args: any[]) => void\n ): () => void {\n const unsubscribes: (() => void)[] = [];\n\n // Subscribe to progress events on all existing tasks\n const tasks = this.getTasks();\n tasks.forEach((task) => {\n const unsub = task.subscribe(\"progress\", (progress, message, ...args) => {\n callback(task.config.id, progress, message, ...args);\n });\n unsubscribes.push(unsub);\n });\n\n const handleTaskAdded = (taskId: TaskIdType) => {\n const task = this.getTask(taskId);\n if (!task || typeof task.subscribe !== \"function\") return;\n\n const unsub = task.subscribe(\"progress\", (progress, message, ...args) => {\n callback(task.config.id, progress, message, ...args);\n });\n unsubscribes.push(unsub);\n };\n\n const graphUnsub = this.subscribe(\"task_added\", handleTaskAdded);\n unsubscribes.push(graphUnsub);\n\n // Return unsubscribe function\n return () => {\n unsubscribes.forEach((unsub) => unsub());\n };\n }\n\n /**\n * Subscribes to status changes on all dataflows (existing and future)\n * @param callback - Function called when any dataflow's status changes\n * @param callback.dataflowId - The ID of the dataflow whose status changed\n * @param callback.status - The new status of the dataflow\n * @returns a function to unsubscribe from all dataflow status events\n */\n public subscribeToDataflowStatus(\n callback: (dataflowId: DataflowIdType, status: TaskStatus) => void\n ): () => void {\n const unsubscribes: (() => void)[] = [];\n\n // Subscribe to status events on all existing dataflows\n const dataflows = this.getDataflows();\n dataflows.forEach((dataflow) => {\n const unsub = dataflow.subscribe(\"status\", (status) => {\n callback(dataflow.id, status);\n });\n unsubscribes.push(unsub);\n });\n\n const handleDataflowAdded = (dataflowId: DataflowIdType) => {\n const dataflow = this.getDataflow(dataflowId);\n if (!dataflow || typeof dataflow.subscribe !== \"function\") return;\n\n const unsub = dataflow.subscribe(\"status\", (status) => {\n callback(dataflow.id, status);\n });\n unsubscribes.push(unsub);\n };\n\n const graphUnsub = this.subscribe(\"dataflow_added\", handleDataflowAdded);\n unsubscribes.push(graphUnsub);\n\n // Return unsubscribe function\n return () => {\n unsubscribes.forEach((unsub) => unsub());\n };\n }\n\n /**\n * Registers an event listener for the specified event\n * @param name - The event name to listen for\n * @param fn - The callback function to execute when the event occurs\n */\n on<Event extends TaskGraphEvents>(name: Event, fn: TaskGraphEventListener<Event>) {\n const dagEvent = EventTaskGraphToDagMapping[name as keyof typeof EventTaskGraphToDagMapping];\n if (dagEvent) {\n // Safe cast: TaskGraph dag events (task_added, etc.) have the same signature as\n // the underlying DAG events (node-added, etc.) - both pass IDs, not full objects\n return this._dag.on(dagEvent, fn as Parameters<typeof this._dag.on>[1]);\n }\n return this.events.on(\n name as TaskGraphStatusEvents,\n fn as TaskGraphEventListener<TaskGraphStatusEvents>\n );\n }\n\n /**\n * Removes an event listener for the specified event\n * @param name - The event name to listen for\n * @param fn - The callback function to execute when the event occurs\n */\n off<Event extends TaskGraphEvents>(name: Event, fn: TaskGraphEventListener<Event>) {\n const dagEvent = EventTaskGraphToDagMapping[name as keyof typeof EventTaskGraphToDagMapping];\n if (dagEvent) {\n // Safe cast: TaskGraph dag events (task_added, etc.) have the same signature as\n // the underlying DAG events (node-added, etc.) - both pass IDs, not full objects\n return this._dag.off(dagEvent, fn as Parameters<typeof this._dag.off>[1]);\n }\n return this.events.off(\n name as TaskGraphStatusEvents,\n fn as TaskGraphEventListener<TaskGraphStatusEvents>\n );\n }\n\n /**\n * Emits an event for the specified event\n * @param name - The event name to emit\n * @param args - The arguments to pass to the event listener\n */\n emit<E extends GraphEventDagEvents>(name: E, ...args: GraphEventDagParameters<E>): void;\n emit<E extends TaskGraphStatusEvents>(name: E, ...args: TaskGraphEventStatusParameters<E>): void;\n emit(name: string, ...args: any[]): void {\n const dagEvent = EventTaskGraphToDagMapping[name as keyof typeof EventTaskGraphToDagMapping];\n if (dagEvent) {\n // @ts-ignore\n return this.emit_dag(name, ...args);\n } else {\n // @ts-ignore\n return this.emit_local(name, ...args);\n }\n }\n\n /**\n * Emits an event for the specified event\n * @param name - The event name to emit\n * @param args - The arguments to pass to the event listener\n */\n protected emit_local<Event extends TaskGraphStatusEvents>(\n name: Event,\n ...args: TaskGraphEventStatusParameters<Event>\n ) {\n return this.events?.emit(name, ...args);\n }\n\n /**\n * Emits an event for the specified event\n * @param name - The event name to emit\n * @param args - The arguments to pass to the event listener\n */\n protected emit_dag<Event extends GraphEventDagEvents>(\n name: Event,\n ...args: GraphEventDagParameters<Event>\n ) {\n const dagEvent = EventTaskGraphToDagMapping[name as keyof typeof EventTaskGraphToDagMapping];\n // Safe cast: GraphEventDagParameters matches the DAG's emit parameters (both are ID-based)\n return this._dag.emit(dagEvent, ...(args as unknown as [unknown]));\n }\n}\n\n/**\n * Super simple helper if you know the input and output handles, and there is only one each\n *\n * @param tasks\n * @param inputHandle\n * @param outputHandle\n * @returns\n */\nfunction serialGraphEdges(\n tasks: ITask<any, any, any>[],\n inputHandle: string,\n outputHandle: string\n): Dataflow[] {\n const edges: Dataflow[] = [];\n for (let i = 0; i < tasks.length - 1; i++) {\n edges.push(new Dataflow(tasks[i].config.id, inputHandle, tasks[i + 1].config.id, outputHandle));\n }\n return edges;\n}\n\n/**\n * Super simple helper if you know the input and output handles, and there is only one each\n *\n * @param tasks\n * @param inputHandle\n * @param outputHandle\n * @returns\n */\nexport function serialGraph(\n tasks: ITask<any, any, any>[],\n inputHandle: string,\n outputHandle: string\n): TaskGraph {\n const graph = new TaskGraph();\n graph.addTasks(tasks);\n graph.addDataflows(serialGraphEdges(tasks, inputHandle, outputHandle));\n return graph;\n}\n",
|
|
@@ -18,16 +18,18 @@
|
|
|
18
18
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { EventEmitter, JsonSchema, type EventParameters } from \"@workglow/util\";\nimport { TaskOutputRepository } from \"../storage/TaskOutputRepository\";\nimport { GraphAsTask } from \"../task/GraphAsTask\";\nimport type { ITask, ITaskConstructor } from \"../task/ITask\";\nimport { Task } from \"../task/Task\";\nimport { WorkflowError } from \"../task/TaskError\";\nimport type { JsonTaskItem, TaskGraphJson } from \"../task/TaskJSON\";\nimport { DataPorts, TaskConfig } from \"../task/TaskTypes\";\nimport { getLastTask, parallel, pipe, PipeFunction, Taskish } from \"./Conversions\";\nimport { Dataflow, DATAFLOW_ALL_PORTS } from \"./Dataflow\";\nimport { IWorkflow } from \"./IWorkflow\";\nimport { TaskGraph } from \"./TaskGraph\";\nimport {\n CompoundMergeStrategy,\n PROPERTY_ARRAY,\n type PropertyArrayGraphResult,\n} from \"./TaskGraphRunner\";\n\n// Type definitions for the workflow\nexport type CreateWorkflow<I extends DataPorts, _O extends DataPorts, C extends TaskConfig> = (\n input?: Partial<I>,\n config?: Partial<C>\n) => Workflow;\n\n// Event types\nexport type WorkflowEventListeners = {\n changed: (id: unknown) => void;\n reset: () => void;\n error: (error: string) => void;\n start: () => void;\n complete: () => void;\n abort: (error: string) => void;\n};\n\nexport type WorkflowEvents = keyof WorkflowEventListeners;\nexport type WorkflowEventListener<Event extends WorkflowEvents> = WorkflowEventListeners[Event];\nexport type WorkflowEventParameters<Event extends WorkflowEvents> = EventParameters<\n WorkflowEventListeners,\n Event\n>;\n\nclass WorkflowTask<I extends DataPorts, O extends DataPorts> extends GraphAsTask<I, O> {\n public static readonly type = \"Workflow\";\n public static readonly compoundMerge = PROPERTY_ARRAY as CompoundMergeStrategy;\n}\n\n// Task ID counter\nlet taskIdCounter = 0;\n\n/**\n * Class for building and managing a task graph\n * Provides methods for adding tasks, connecting outputs to inputs, and running the task graph\n */\nexport class Workflow<Input extends DataPorts = DataPorts, Output extends DataPorts = DataPorts>\n implements IWorkflow<Input, Output>\n{\n /**\n * Creates a new Workflow\n *\n * @param repository - Optional repository for task outputs\n */\n constructor(repository?: TaskOutputRepository) {\n this._repository = repository;\n this._graph = new TaskGraph({\n outputCache: this._repository,\n });\n this._onChanged = this._onChanged.bind(this);\n this.setupEvents();\n }\n // Private properties\n private _graph: TaskGraph;\n private _dataFlows: Dataflow[] = [];\n private _error: string = \"\";\n private _repository?: TaskOutputRepository;\n\n // Abort controller for cancelling task execution\n private _abortController?: AbortController;\n\n /**\n * Event emitter for task graph events\n */\n public readonly events = new EventEmitter<WorkflowEventListeners>();\n\n /**\n * Creates a helper function for adding specific task types to a Workflow\n *\n * @param taskClass - The task class to create a helper for\n * @returns A function that adds the specified task type to a Workflow\n */\n public static createWorkflow<\n I extends DataPorts,\n O extends DataPorts,\n C extends TaskConfig = TaskConfig,\n >(taskClass: ITaskConstructor<I, O, C>): CreateWorkflow<I, O, C> {\n const helper = function (\n this: Workflow,\n input: Partial<I> = {},\n config: Partial<C> = {}\n ): Workflow {\n this._error = \"\";\n\n const parent = getLastTask(this);\n\n // Create and add the new task\n taskIdCounter++;\n\n const task = this.addTask<I, O, C>(\n taskClass,\n input as I,\n { id: String(taskIdCounter), ...config } as C\n );\n\n // Process any pending data flows\n if (this._dataFlows.length > 0) {\n this._dataFlows.forEach((dataflow) => {\n const taskSchema = task.inputSchema();\n if (\n (typeof taskSchema !== \"boolean\" &&\n taskSchema.properties?.[dataflow.targetTaskPortId] === undefined) ||\n (taskSchema === true && dataflow.targetTaskPortId !== DATAFLOW_ALL_PORTS)\n ) {\n this._error = `Input ${dataflow.targetTaskPortId} not found on task ${task.config.id}`;\n console.error(this._error);\n return;\n }\n\n dataflow.targetTaskId = task.config.id;\n this.graph.addDataflow(dataflow);\n });\n\n this._dataFlows = [];\n }\n\n // Auto-connect to parent if needed\n if (parent && this.graph.getTargetDataflows(parent.config.id).length === 0) {\n // Find matches between parent outputs and task inputs based on valueType\n const matches = new Map<string, string>();\n const sourceSchema = parent.outputSchema();\n const targetSchema = task.inputSchema();\n\n const makeMatch = (\n comparator: (\n [fromOutputPortId, fromPortOutputSchema]: [string, JsonSchema],\n [toInputPortId, toPortInputSchema]: [string, JsonSchema]\n ) => boolean\n ): Map<string, string> => {\n // If either schema is true (accepts everything), skip auto-matching\n // as we cannot determine the appropriate connections\n if (typeof sourceSchema === \"boolean\" || typeof targetSchema === \"boolean\") {\n return matches;\n }\n\n for (const [fromOutputPortId, fromPortOutputSchema] of Object.entries(\n sourceSchema.properties || {}\n )) {\n for (const [toInputPortId, toPortInputSchema] of Object.entries(\n targetSchema.properties || {}\n )) {\n if (\n !matches.has(toInputPortId) &&\n comparator(\n [fromOutputPortId, fromPortOutputSchema],\n [toInputPortId, toPortInputSchema]\n )\n ) {\n matches.set(toInputPortId, fromOutputPortId);\n this.connect(parent.config.id, fromOutputPortId, task.config.id, toInputPortId);\n }\n }\n }\n return matches;\n };\n\n // Try to match outputs to inputs using different strategies\n makeMatch(\n ([fromOutputPortId, fromPortOutputSchema], [toInputPortId, toPortInputSchema]) => {\n // Skip if either schema is boolean\n if (\n typeof fromPortOutputSchema === \"boolean\" ||\n typeof toPortInputSchema === \"boolean\"\n ) {\n if (fromPortOutputSchema === true && toPortInputSchema === true) {\n return true;\n }\n return false;\n }\n // $id matches\n const idTypeMatch =\n fromPortOutputSchema.$id !== undefined &&\n fromPortOutputSchema.$id === toPortInputSchema.$id;\n // $id both blank\n const idTypeBlank =\n fromPortOutputSchema.$id === undefined && undefined === toPortInputSchema.$id;\n const typeMatch =\n idTypeBlank &&\n (fromPortOutputSchema.type === toPortInputSchema.type ||\n (toPortInputSchema.oneOf?.some((i: any) => i.type == fromPortOutputSchema.type) ??\n false));\n const outputPortIdMatch = fromOutputPortId === toInputPortId;\n const outputPortIdOutputInput =\n fromOutputPortId === \"output\" && toInputPortId === \"input\";\n const portIdsCompatible = outputPortIdMatch || outputPortIdOutputInput;\n return (idTypeMatch || typeMatch) && portIdsCompatible;\n }\n );\n\n // If no matches were found, remove the task and report an error\n if (matches.size === 0) {\n this._error =\n `Could not find a match between the outputs of ${parent.type} and the inputs of ${task.type}. ` +\n `You now need to connect the outputs to the inputs via connect() manually before adding this task. Task not added.`;\n\n console.error(this._error);\n this.graph.removeTask(task.config.id);\n }\n }\n\n return this;\n };\n\n // Copy metadata from the task class\n // @ts-expect-error - using internals\n helper.type = taskClass.runtype ?? taskClass.type;\n helper.category = taskClass.category;\n helper.inputSchema = taskClass.inputSchema;\n helper.outputSchema = taskClass.outputSchema;\n helper.cacheable = taskClass.cacheable;\n helper.workflowCreate = true;\n\n return helper;\n }\n\n /**\n * Gets the current task graph\n */\n public get graph(): TaskGraph {\n return this._graph;\n }\n\n /**\n * Sets a new task graph\n */\n public set graph(value: TaskGraph) {\n this._dataFlows = [];\n this._error = \"\";\n this.clearEvents();\n this._graph = value;\n this.setupEvents();\n this.events.emit(\"reset\");\n }\n\n /**\n * Gets the current error message\n */\n public get error(): string {\n return this._error;\n }\n\n /**\n * Event subscription methods\n */\n public on<Event extends WorkflowEvents>(name: Event, fn: WorkflowEventListener<Event>): void {\n this.events.on(name, fn);\n }\n\n public off<Event extends WorkflowEvents>(name: Event, fn: WorkflowEventListener<Event>): void {\n this.events.off(name, fn);\n }\n\n public once<Event extends WorkflowEvents>(name: Event, fn: WorkflowEventListener<Event>): void {\n this.events.once(name, fn);\n }\n\n public waitOn<Event extends WorkflowEvents>(\n name: Event\n ): Promise<WorkflowEventParameters<Event>> {\n return this.events.waitOn(name) as Promise<WorkflowEventParameters<Event>>;\n }\n\n /**\n * Runs the task graph\n *\n * @param input - The input to the task graph\n * @returns The output of the task graph\n */\n public async run(input: Input = {} as Input): Promise<PropertyArrayGraphResult<Output>> {\n this.events.emit(\"start\");\n this._abortController = new AbortController();\n\n try {\n const output = await this.graph.run<Output>(input, {\n parentSignal: this._abortController.signal,\n parentProvenance: {},\n outputCache: this._repository,\n });\n const results = this.graph.mergeExecuteOutputsToRunOutput<Output, typeof PROPERTY_ARRAY>(\n output,\n PROPERTY_ARRAY\n );\n this.events.emit(\"complete\");\n return results;\n } catch (error) {\n this.events.emit(\"error\", String(error));\n throw error;\n } finally {\n this._abortController = undefined;\n }\n }\n\n /**\n * Aborts the running task graph\n */\n public async abort(): Promise<void> {\n this._abortController?.abort();\n }\n\n /**\n * Removes the last task from the task graph\n *\n * @returns The current task graph workflow\n */\n public pop(): Workflow {\n this._error = \"\";\n const nodes = this._graph.getTasks();\n\n if (nodes.length === 0) {\n this._error = \"No tasks to remove\";\n console.error(this._error);\n return this;\n }\n\n const lastNode = nodes[nodes.length - 1];\n this._graph.removeTask(lastNode.config.id);\n return this;\n }\n\n /**\n * Converts the task graph to JSON\n *\n * @returns The task graph as JSON\n */\n public toJSON(): TaskGraphJson {\n return this._graph.toJSON();\n }\n\n /**\n * Converts the task graph to dependency JSON\n *\n * @returns The task graph as dependency JSON\n */\n public toDependencyJSON(): JsonTaskItem[] {\n return this._graph.toDependencyJSON();\n }\n\n // Replace both the instance and static pipe methods with properly typed versions\n // Pipe method overloads\n public pipe<A extends DataPorts, B extends DataPorts>(fn1: Taskish<A, B>): IWorkflow<A, B>;\n public pipe<A extends DataPorts, B extends DataPorts, C extends DataPorts>(\n fn1: Taskish<A, B>,\n fn2: Taskish<B, C>\n ): IWorkflow<A, C>;\n public pipe<A extends DataPorts, B extends DataPorts, C extends DataPorts, D extends DataPorts>(\n fn1: Taskish<A, B>,\n fn2: Taskish<B, C>,\n fn3: Taskish<C, D>\n ): IWorkflow<A, D>;\n public pipe<\n A extends DataPorts,\n B extends DataPorts,\n C extends DataPorts,\n D extends DataPorts,\n E extends DataPorts,\n >(\n fn1: Taskish<A, B>,\n fn2: Taskish<B, C>,\n fn3: Taskish<C, D>,\n fn4: Taskish<D, E>\n ): IWorkflow<A, E>;\n public pipe<\n A extends DataPorts,\n B extends DataPorts,\n C extends DataPorts,\n D extends DataPorts,\n E extends DataPorts,\n F extends DataPorts,\n >(\n fn1: Taskish<A, B>,\n fn2: Taskish<B, C>,\n fn3: Taskish<C, D>,\n fn4: Taskish<D, E>,\n fn5: Taskish<E, F>\n ): IWorkflow<A, F>;\n public pipe(...args: Taskish<DataPorts, DataPorts>[]): IWorkflow {\n return pipe(args as any, this);\n }\n\n // Static pipe method overloads\n public static pipe<A extends DataPorts, B extends DataPorts>(\n fn1: PipeFunction<A, B> | ITask<A, B>\n ): IWorkflow;\n public static pipe<A extends DataPorts, B extends DataPorts, C extends DataPorts>(\n fn1: PipeFunction<A, B> | ITask<A, B>,\n fn2: PipeFunction<B, C> | ITask<B, C>\n ): IWorkflow;\n public static pipe<\n A extends DataPorts,\n B extends DataPorts,\n C extends DataPorts,\n D extends DataPorts,\n >(\n fn1: PipeFunction<A, B> | ITask<A, B>,\n fn2: PipeFunction<B, C> | ITask<B, C>,\n fn3: PipeFunction<C, D> | ITask<C, D>\n ): IWorkflow;\n public static pipe<\n A extends DataPorts,\n B extends DataPorts,\n C extends DataPorts,\n D extends DataPorts,\n E extends DataPorts,\n >(\n fn1: PipeFunction<A, B> | ITask<A, B>,\n fn2: PipeFunction<B, C> | ITask<B, C>,\n fn3: PipeFunction<C, D> | ITask<C, D>,\n fn4: PipeFunction<D, E> | ITask<D, E>\n ): IWorkflow;\n public static pipe<\n A extends DataPorts,\n B extends DataPorts,\n C extends DataPorts,\n D extends DataPorts,\n E extends DataPorts,\n F extends DataPorts,\n >(\n fn1: PipeFunction<A, B> | ITask<A, B>,\n fn2: PipeFunction<B, C> | ITask<B, C>,\n fn3: PipeFunction<C, D> | ITask<C, D>,\n fn4: PipeFunction<D, E> | ITask<D, E>,\n fn5: PipeFunction<E, F> | ITask<E, F>\n ): IWorkflow;\n public static pipe(...args: (PipeFunction | ITask)[]): IWorkflow {\n return pipe(args as any, new Workflow());\n }\n\n public parallel(\n args: (PipeFunction<any, any> | Task)[],\n mergeFn?: CompoundMergeStrategy\n ): IWorkflow {\n return parallel(args, mergeFn ?? PROPERTY_ARRAY, this);\n }\n\n public static parallel(\n args: (PipeFunction<any, any> | ITask)[],\n mergeFn?: CompoundMergeStrategy\n ): IWorkflow {\n return parallel(args, mergeFn ?? PROPERTY_ARRAY, new Workflow());\n }\n\n /**\n * Renames an output of a task to a new target input\n *\n * @param source - The id of the output to rename\n * @param target - The id of the input to rename to\n * @param index - The index of the task to rename the output of, defaults to the last task\n * @returns The current task graph workflow\n */\n public rename(source: string, target: string, index: number = -1): Workflow {\n this._error = \"\";\n\n const nodes = this._graph.getTasks();\n if (-index > nodes.length) {\n const errorMsg = `Back index greater than number of tasks`;\n this._error = errorMsg;\n console.error(this._error);\n throw new WorkflowError(errorMsg);\n }\n\n const lastNode = nodes[nodes.length + index];\n const outputSchema = lastNode.outputSchema();\n\n // Handle boolean schemas\n if (typeof outputSchema === \"boolean\") {\n if (outputSchema === false && source !== DATAFLOW_ALL_PORTS) {\n const errorMsg = `Task ${lastNode.config.id} has schema 'false' and outputs nothing`;\n this._error = errorMsg;\n console.error(this._error);\n throw new WorkflowError(errorMsg);\n }\n // If outputSchema is true, we skip validation as it outputs everything\n } else if (!(outputSchema.properties as any)?.[source] && source !== DATAFLOW_ALL_PORTS) {\n const errorMsg = `Output ${source} not found on task ${lastNode.config.id}`;\n this._error = errorMsg;\n console.error(this._error);\n throw new WorkflowError(errorMsg);\n }\n\n this._dataFlows.push(new Dataflow(lastNode.config.id, source, undefined, target));\n return this;\n }\n\n toTaskGraph(): TaskGraph {\n return this._graph;\n }\n\n toTask(): GraphAsTask {\n const task = new WorkflowTask();\n task.subGraph = this.toTaskGraph();\n return task;\n }\n\n /**\n * Resets the task graph workflow to its initial state\n *\n * @returns The current task graph workflow\n */\n public reset(): Workflow {\n taskIdCounter = 0;\n this.clearEvents();\n this._graph = new TaskGraph({\n outputCache: this._repository,\n });\n this._dataFlows = [];\n this._error = \"\";\n this.setupEvents();\n this.events.emit(\"changed\", undefined);\n this.events.emit(\"reset\");\n return this;\n }\n\n /**\n * Sets up event listeners for the task graph\n */\n private setupEvents(): void {\n this._graph.on(\"task_added\", this._onChanged);\n this._graph.on(\"task_replaced\", this._onChanged);\n this._graph.on(\"task_removed\", this._onChanged);\n this._graph.on(\"dataflow_added\", this._onChanged);\n this._graph.on(\"dataflow_replaced\", this._onChanged);\n this._graph.on(\"dataflow_removed\", this._onChanged);\n }\n\n /**\n * Clears event listeners for the task graph\n */\n private clearEvents(): void {\n this._graph.off(\"task_added\", this._onChanged);\n this._graph.off(\"task_replaced\", this._onChanged);\n this._graph.off(\"task_removed\", this._onChanged);\n this._graph.off(\"dataflow_added\", this._onChanged);\n this._graph.off(\"dataflow_replaced\", this._onChanged);\n this._graph.off(\"dataflow_removed\", this._onChanged);\n }\n\n /**\n * Handles changes to the task graph\n */\n private _onChanged(id: unknown): void {\n this.events.emit(\"changed\", id);\n }\n\n /**\n * Connects outputs to inputs between tasks\n */\n public connect(\n sourceTaskId: unknown,\n sourceTaskPortId: string,\n targetTaskId: unknown,\n targetTaskPortId: string\n ): Workflow {\n const sourceTask = this.graph.getTask(sourceTaskId);\n const targetTask = this.graph.getTask(targetTaskId);\n\n if (!sourceTask || !targetTask) {\n throw new WorkflowError(\"Source or target task not found\");\n }\n\n const sourceSchema = sourceTask.outputSchema();\n const targetSchema = targetTask.inputSchema();\n\n // Handle boolean schemas\n if (typeof sourceSchema === \"boolean\") {\n if (sourceSchema === false) {\n throw new WorkflowError(`Source task has schema 'false' and outputs nothing`);\n }\n // If sourceSchema is true, we skip validation as it accepts everything\n } else if (!sourceSchema.properties?.[sourceTaskPortId]) {\n throw new WorkflowError(`Output ${sourceTaskPortId} not found on source task`);\n }\n\n if (typeof targetSchema === \"boolean\") {\n if (targetSchema === false) {\n throw new WorkflowError(`Target task has schema 'false' and accepts no inputs`);\n }\n // If targetSchema is true, we skip validation as it accepts everything\n } else if (!targetSchema.properties?.[targetTaskPortId]) {\n throw new WorkflowError(`Input ${targetTaskPortId} not found on target task`);\n }\n\n const dataflow = new Dataflow(sourceTaskId, sourceTaskPortId, targetTaskId, targetTaskPortId);\n this.graph.addDataflow(dataflow);\n return this;\n }\n\n public addTask<I extends DataPorts, O extends DataPorts, C extends TaskConfig = TaskConfig>(\n taskClass: ITaskConstructor<I, O, C>,\n input: I,\n config: C\n ): ITask<I, O, C> {\n const task = new taskClass(input, config);\n const id = this.graph.addTask(task);\n this.events.emit(\"changed\", id);\n return task;\n }\n}\n\n/**\n * Helper function for backward compatibility\n */\nexport function CreateWorkflow<\n I extends DataPorts,\n O extends DataPorts,\n C extends TaskConfig = TaskConfig,\n>(taskClass: any): CreateWorkflow<I, O, C> {\n return Workflow.createWorkflow<I, O, C>(taskClass);\n}\n",
|
|
19
19
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { DataPortSchema } from \"@workglow/util\";\nimport { GraphAsTask } from \"../task/GraphAsTask\";\nimport type { IExecuteContext, ITask } from \"../task/ITask\";\nimport { Task } from \"../task/Task\";\nimport type { DataPorts } from \"../task/TaskTypes\";\nimport { Dataflow, DATAFLOW_ALL_PORTS } from \"./Dataflow\";\nimport type { ITaskGraph } from \"./ITaskGraph\";\nimport type { IWorkflow } from \"./IWorkflow\";\nimport { TaskGraph } from \"./TaskGraph\";\nimport { PROPERTY_ARRAY, type CompoundMergeStrategy } from \"./TaskGraphRunner\";\nimport { Workflow } from \"./Workflow\";\n\nclass ListeningGraphAsTask extends GraphAsTask<any, any> {\n constructor(input: any, config: any) {\n super(input, config);\n this.subGraph.on(\"start\", () => {\n this.emit(\"start\");\n });\n this.subGraph.on(\"complete\", () => {\n this.emit(\"complete\");\n });\n this.subGraph.on(\"error\", (e) => {\n this.emit(\"error\", e);\n });\n }\n}\n\nclass OwnGraphTask extends ListeningGraphAsTask {\n public static readonly type = \"Own[Graph]\";\n}\n\nclass OwnWorkflowTask extends ListeningGraphAsTask {\n public static readonly type = \"Own[Workflow]\";\n}\nclass GraphTask extends GraphAsTask {\n public static readonly type = \"Graph\";\n}\n\nclass WorkflowTask extends GraphAsTask {\n public static readonly type = \"Workflow\";\n}\n\n// Update PipeFunction type to be more specific about input/output types\nexport type PipeFunction<I extends DataPorts = any, O extends DataPorts = any> = (\n input: I,\n context: IExecuteContext\n) => O | Promise<O>;\n\nexport type Taskish<A extends DataPorts = DataPorts, B extends DataPorts = DataPorts> =\n | PipeFunction<A, B>\n | ITask<A, B>\n | ITaskGraph\n | IWorkflow<A, B>;\n\nfunction convertPipeFunctionToTask<I extends DataPorts, O extends DataPorts>(\n fn: PipeFunction<I, O>,\n config?: any\n): ITask<I, O> {\n class QuickTask extends Task<I, O> {\n public static type = fn.name ? `𝑓 ${fn.name}` : \"𝑓\";\n public static inputSchema = () => {\n return {\n type: \"object\",\n properties: {\n [DATAFLOW_ALL_PORTS]: {},\n },\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n };\n public static outputSchema = () => {\n return {\n type: \"object\",\n properties: {\n [DATAFLOW_ALL_PORTS]: {},\n },\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n };\n public static cacheable = false;\n public async execute(input: I, context: IExecuteContext) {\n return fn(input, context);\n }\n }\n return new QuickTask({}, config);\n}\n\nexport function ensureTask<I extends DataPorts, O extends DataPorts>(\n arg: Taskish<I, O>,\n config: any = {}\n): ITask<any, any, any> {\n if (arg instanceof Task) {\n return arg;\n }\n if (arg instanceof TaskGraph) {\n if (config.isOwned) {\n return new OwnGraphTask({}, { ...config, subGraph: arg });\n } else {\n return new GraphTask({}, { ...config, subGraph: arg });\n }\n }\n if (arg instanceof Workflow) {\n if (config.isOwned) {\n return new OwnWorkflowTask({}, { ...config, subGraph: arg.graph });\n } else {\n return new WorkflowTask({}, { ...config, subGraph: arg.graph });\n }\n }\n return convertPipeFunctionToTask(arg as PipeFunction<I, O>, config);\n}\n\nexport function getLastTask(workflow: IWorkflow): ITask<any, any, any> | undefined {\n const tasks = workflow.graph.getTasks();\n return tasks.length > 0 ? tasks[tasks.length - 1] : undefined;\n}\n\nexport function connect(\n source: ITask<any, any, any>,\n target: ITask<any, any, any>,\n workflow: IWorkflow<any, any>\n): void {\n workflow.graph.addDataflow(new Dataflow(source.config.id, \"*\", target.config.id, \"*\"));\n}\n\nexport function pipe<A extends DataPorts, B extends DataPorts>(\n [fn1]: [Taskish<A, B>],\n workflow?: IWorkflow<A, B>\n): IWorkflow<A, B>;\n\nexport function pipe<A extends DataPorts, B extends DataPorts, C extends DataPorts>(\n [fn1, fn2]: [Taskish<A, B>, Taskish<B, C>],\n workflow?: IWorkflow<A, C>\n): IWorkflow<A, C>;\n\nexport function pipe<\n A extends DataPorts,\n B extends DataPorts,\n C extends DataPorts,\n D extends DataPorts,\n>(\n [fn1, fn2, fn3]: [Taskish<A, B>, Taskish<B, C>, Taskish<C, D>],\n workflow?: IWorkflow<A, D>\n): IWorkflow<A, D>;\n\nexport function pipe<\n A extends DataPorts,\n B extends DataPorts,\n C extends DataPorts,\n D extends DataPorts,\n E extends DataPorts,\n>(\n [fn1, fn2, fn3, fn4]: [Taskish<A, B>, Taskish<B, C>, Taskish<C, D>, Taskish<D, E>],\n workflow?: IWorkflow<A, E>\n): IWorkflow<A, E>;\n\nexport function pipe<\n A extends DataPorts,\n B extends DataPorts,\n C extends DataPorts,\n D extends DataPorts,\n E extends DataPorts,\n F extends DataPorts,\n>(\n [fn1, fn2, fn3, fn4, fn5]: [\n Taskish<A, B>,\n Taskish<B, C>,\n Taskish<C, D>,\n Taskish<D, E>,\n Taskish<E, F>,\n ],\n workflow?: IWorkflow<A, F>\n): IWorkflow<A, F>;\n\nexport function pipe<I extends DataPorts, O extends DataPorts>(\n args: Taskish<I, O>[],\n workflow: IWorkflow<I, O> = new Workflow<I, O>()\n): IWorkflow<I, O> {\n let previousTask = getLastTask(workflow);\n const tasks = args.map((arg) => ensureTask(arg));\n tasks.forEach((task) => {\n workflow.graph.addTask(task);\n if (previousTask) {\n connect(previousTask, task, workflow);\n }\n previousTask = task;\n });\n return workflow;\n}\n\nexport function parallel<I extends DataPorts = DataPorts, O extends DataPorts = DataPorts>(\n args: (PipeFunction<I, O> | ITask<I, O> | IWorkflow<I, O> | ITaskGraph)[],\n mergeFn: CompoundMergeStrategy = PROPERTY_ARRAY,\n workflow: IWorkflow<I, O> = new Workflow<I, O>()\n): IWorkflow<I, O> {\n let previousTask = getLastTask(workflow);\n const tasks = args.map((arg) => ensureTask(arg));\n const input = {};\n const config = {\n compoundMerge: mergeFn,\n };\n const name = `‖${args.map((arg) => \"𝑓\").join(\"‖\")}‖`;\n class ParallelTask extends GraphAsTask<I, O> {\n public static type = name;\n }\n const mergeTask = new ParallelTask(input, config);\n mergeTask.subGraph!.addTasks(tasks);\n workflow.graph.addTask(mergeTask);\n if (previousTask) {\n connect(previousTask, mergeTask, workflow);\n }\n return workflow;\n}\n",
|
|
20
20
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { EventParameters } from \"@workglow/util\";\nimport { TaskIdType } from \"../task/TaskTypes\";\nimport { DataflowIdType } from \"./Dataflow\";\n\n/**\n * Events that can be emitted by the TaskGraph\n */\n\nexport type TaskGraphStatusListeners = {\n graph_progress: (progress: number, message?: string, ...args: any[]) => void;\n start: () => void;\n complete: () => void;\n error: (error: Error) => void;\n abort: () => void;\n disabled: () => void;\n};\nexport type TaskGraphStatusEvents = keyof TaskGraphStatusListeners;\nexport type TaskGraphStatusListener<Event extends TaskGraphStatusEvents> =\n TaskGraphStatusListeners[Event];\nexport type TaskGraphEventStatusParameters<Event extends TaskGraphStatusEvents> = EventParameters<\n TaskGraphStatusListeners,\n Event\n>;\n\nexport type GraphEventDagListeners = {\n task_added: (taskId: TaskIdType) => void;\n task_removed: (taskId: TaskIdType) => void;\n task_replaced: (taskId: TaskIdType) => void;\n dataflow_added: (dataflowId: DataflowIdType) => void;\n dataflow_removed: (dataflowId: DataflowIdType) => void;\n dataflow_replaced: (dataflowId: DataflowIdType) => void;\n};\nexport type GraphEventDagEvents = keyof GraphEventDagListeners;\nexport type GraphEventDagListener<Event extends GraphEventDagEvents> =\n GraphEventDagListeners[Event];\nexport type GraphEventDagParameters<Event extends GraphEventDagEvents> = EventParameters<\n GraphEventDagListeners,\n Event\n>;\n\nexport type TaskGraphListeners = TaskGraphStatusListeners & GraphEventDagListeners;\nexport type TaskGraphEvents = keyof TaskGraphListeners;\nexport type TaskGraphEventListener<Event extends TaskGraphEvents> = TaskGraphListeners[Event];\nexport type TaskGraphEventParameters<Event extends TaskGraphEvents> = EventParameters<\n TaskGraphListeners,\n Event\n>;\n\nexport const EventDagToTaskGraphMapping = {\n \"node-added\": \"task_added\",\n \"node-removed\": \"task_removed\",\n \"node-replaced\": \"task_replaced\",\n \"edge-added\": \"dataflow_added\",\n \"edge-removed\": \"dataflow_removed\",\n \"edge-replaced\": \"dataflow_replaced\",\n} as const;\n\nexport const EventTaskGraphToDagMapping = {\n task_added: \"node-added\",\n task_removed: \"node-removed\",\n task_replaced: \"node-replaced\",\n dataflow_added: \"edge-added\",\n dataflow_removed: \"edge-removed\",\n dataflow_replaced: \"edge-replaced\",\n} as const;\n",
|
|
21
|
+
"/**\n * @copyright\n * Copyright 2025 Steven Roussey\n * All Rights Reserved\n */\n\nimport { IExecuteContext, IExecuteReactiveContext, Task, TaskConfig } from \"@workglow/task-graph\";\nimport type { DataPortSchema } from \"@workglow/util\";\n\nexport type InputTaskInput = Record<string, unknown>;\nexport type InputTaskOutput = Record<string, unknown>;\nexport type InputTaskConfig = TaskConfig & {\n schema: DataPortSchema;\n};\n\nexport class InputTask extends Task<InputTaskInput, InputTaskOutput, InputTaskConfig> {\n static type = \"InputTask\";\n static category = \"Flow Control\";\n static title = \"Input\";\n static description = \"Starts the workflow\";\n static hasDynamicSchemas = true;\n static cacheable = false;\n\n public static inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public inputSchema(): DataPortSchema {\n return (\n (this.config?.extras?.inputSchema as DataPortSchema | undefined) ??\n (this.constructor as typeof InputTask).inputSchema()\n );\n }\n\n public outputSchema(): DataPortSchema {\n return (\n (this.config?.extras?.outputSchema as DataPortSchema | undefined) ??\n (this.constructor as typeof InputTask).outputSchema()\n );\n }\n\n public async execute(input: InputTaskInput, _context: IExecuteContext) {\n return input as InputTaskOutput;\n }\n\n public async executeReactive(\n input: InputTaskInput,\n _output: InputTaskOutput,\n _context: IExecuteReactiveContext\n ) {\n return input as InputTaskOutput;\n }\n}\n",
|
|
21
22
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Job,\n JobConstructorParam,\n JobQueueClient,\n JobQueueServer,\n JobQueueServerOptions,\n} from \"@workglow/job-queue\";\nimport { InMemoryQueueStorage, IQueueStorage } from \"@workglow/storage\";\nimport { createServiceToken, globalServiceRegistry } from \"@workglow/util\";\nimport type { JobQueueTask, JobQueueTaskConfig } from \"./JobQueueTask\";\nimport type { RegisteredQueue } from \"./TaskQueueRegistry\";\nimport type { TaskInput, TaskOutput } from \"./TaskTypes\";\n\nexport type JobClassConstructor<Input extends TaskInput, Output extends TaskOutput> = new (\n params: JobConstructorParam<Input, Output>\n) => Job<Input, Output>;\n\n/**\n * Options for creating a job queue via the factory\n */\nexport interface JobQueueFactoryOptions<Input, Output> {\n readonly storage?: IQueueStorage<Input, Output>;\n readonly limiter?: JobQueueServerOptions<Input, Output>[\"limiter\"];\n readonly workerCount?: number;\n readonly pollIntervalMs?: number;\n readonly deleteAfterCompletionMs?: number;\n readonly deleteAfterFailureMs?: number;\n readonly deleteAfterDisabledMs?: number;\n readonly cleanupIntervalMs?: number;\n}\n\nexport interface JobQueueFactoryParams<Input extends TaskInput, Output extends TaskOutput> {\n readonly queueName: string;\n readonly jobClass: JobClassConstructor<Input, Output>;\n readonly input?: Input;\n readonly config?: JobQueueTaskConfig;\n readonly task?: JobQueueTask<Input, Output>;\n readonly options?: JobQueueFactoryOptions<Input, Output>;\n}\n\nexport type JobQueueFactory = <Input extends TaskInput, Output extends TaskOutput>(\n params: JobQueueFactoryParams<Input, Output>\n) => Promise<RegisteredQueue<Input, Output>> | RegisteredQueue<Input, Output>;\n\nexport const JOB_QUEUE_FACTORY = createServiceToken<JobQueueFactory>(\"taskgraph.jobQueueFactory\");\n\nconst defaultJobQueueFactory: JobQueueFactory = async <\n Input extends TaskInput,\n Output extends TaskOutput,\n>({\n queueName,\n jobClass,\n options,\n}: JobQueueFactoryParams<Input, Output>): Promise<RegisteredQueue<Input, Output>> => {\n const storage =\n (options?.storage as IQueueStorage<Input, Output>) ??\n new InMemoryQueueStorage<Input, Output>(queueName);\n await storage.setupDatabase();\n\n const server = new JobQueueServer<Input, Output>(jobClass as JobClassConstructor<any, any>, {\n storage,\n queueName,\n limiter: options?.limiter,\n workerCount: options?.workerCount,\n pollIntervalMs: options?.pollIntervalMs,\n deleteAfterCompletionMs: options?.deleteAfterCompletionMs,\n deleteAfterFailureMs: options?.deleteAfterFailureMs,\n deleteAfterDisabledMs: options?.deleteAfterDisabledMs,\n cleanupIntervalMs: options?.cleanupIntervalMs,\n });\n\n const client = new JobQueueClient<Input, Output>({\n storage,\n queueName,\n });\n\n // Attach client to server for same-process optimization\n client.attach(server);\n\n return { server, client, storage };\n};\n\nexport function registerJobQueueFactory(factory: JobQueueFactory): void {\n globalServiceRegistry.registerInstance(JOB_QUEUE_FACTORY, factory);\n}\n\n/**\n * Creates a job queue factory from server options\n */\nexport function createJobQueueFactoryWithOptions(\n defaultOptions: Partial<JobQueueFactoryOptions<unknown, unknown>> = {}\n): JobQueueFactory {\n return async <Input extends TaskInput, Output extends TaskOutput>({\n queueName,\n jobClass,\n options,\n }: JobQueueFactoryParams<Input, Output>): Promise<RegisteredQueue<Input, Output>> => {\n const mergedOptions = {\n ...defaultOptions,\n ...(options ?? {}),\n } as JobQueueFactoryOptions<Input, Output>;\n\n const storage =\n (mergedOptions.storage as IQueueStorage<Input, Output>) ??\n new InMemoryQueueStorage<Input, Output>(queueName);\n await storage.setupDatabase();\n\n const server = new JobQueueServer<Input, Output>(jobClass as JobClassConstructor<any, any>, {\n storage,\n queueName,\n limiter: mergedOptions.limiter,\n workerCount: mergedOptions.workerCount,\n pollIntervalMs: mergedOptions.pollIntervalMs,\n deleteAfterCompletionMs: mergedOptions.deleteAfterCompletionMs,\n deleteAfterFailureMs: mergedOptions.deleteAfterFailureMs,\n deleteAfterDisabledMs: mergedOptions.deleteAfterDisabledMs,\n cleanupIntervalMs: mergedOptions.cleanupIntervalMs,\n });\n\n const client = new JobQueueClient<Input, Output>({\n storage,\n queueName,\n });\n\n // Attach client to server for same-process optimization\n client.attach(server);\n\n return { server, client, storage };\n };\n}\n\nexport function getJobQueueFactory(): JobQueueFactory {\n if (!globalServiceRegistry.has(JOB_QUEUE_FACTORY)) {\n registerJobQueueFactory(defaultJobQueueFactory);\n }\n return globalServiceRegistry.get(JOB_QUEUE_FACTORY);\n}\n\nif (!globalServiceRegistry.has(JOB_QUEUE_FACTORY)) {\n registerJobQueueFactory(defaultJobQueueFactory);\n}\n",
|
|
22
23
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Job, JobConstructorParam } from \"@workglow/job-queue\";\nimport { ArrayTask } from \"./ArrayTask\";\nimport { IExecuteContext } from \"./ITask\";\nimport { getJobQueueFactory } from \"./JobQueueFactory\";\nimport { JobTaskFailedError, TaskConfigurationError } from \"./TaskError\";\nimport { TaskEventListeners } from \"./TaskEvents\";\nimport { getTaskQueueRegistry, RegisteredQueue } from \"./TaskQueueRegistry\";\nimport { TaskConfig, TaskInput, TaskOutput } from \"./TaskTypes\";\n\n/**\n * Configuration interface for JobQueueTask.\n * Extends the base TaskConfig with job queue specific properties.\n */\nexport interface JobQueueTaskConfig extends TaskConfig {\n /**\n * Queue selection for the task\n * - `true` (default): create/use the task's default queue\n * - `false`: run directly without queueing (requires `canRunDirectly`)\n * - `string`: use an explicitly registered queue name\n */\n queue?: boolean | string;\n}\n\n/**\n * Extended event listeners for JobQueueTask.\n * Adds progress event handling to base task event listeners.\n */\nexport type JobQueueTaskEventListeners = Omit<TaskEventListeners, \"progress\"> & {\n progress: (progress: number, message?: string, details?: Record<string, any> | null) => void;\n};\n\n/**\n * Abstract base class for tasks that operate within a job queue.\n * Provides functionality for managing job execution, progress tracking, and queue integration.\n *\n * @template Input - Type of input data for the task\n * @template Output - Type of output data produced by the task\n * @template Config - Type of configuration object for the task\n */\nexport abstract class JobQueueTask<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends JobQueueTaskConfig = JobQueueTaskConfig,\n> extends ArrayTask<Input, Output, Config> {\n static readonly type: string = \"JobQueueTask\";\n static canRunDirectly = true;\n\n /** Name of the queue currently processing the task */\n currentQueueName?: string;\n /** ID of the current job being processed */\n currentJobId?: string | unknown;\n /** ID of the current runner being used */\n currentRunnerId?: string;\n\n public jobClass: new (config: JobConstructorParam<Input, Output>) => Job<Input, Output>;\n\n constructor(input: Input = {} as Input, config: Config = {} as Config) {\n config.queue ??= true;\n super(input, config);\n this.jobClass = Job as unknown as new (\n config: JobConstructorParam<Input, Output>\n ) => Job<Input, Output>;\n }\n\n async execute(input: Input, executeContext: IExecuteContext): Promise<Output | undefined> {\n let cleanup: () => void = () => {};\n\n try {\n if (\n this.config.queue === false &&\n !(this.constructor as typeof JobQueueTask).canRunDirectly\n ) {\n throw new TaskConfigurationError(`${this.type} cannot run directly without a queue`);\n }\n\n const registeredQueue = await this.resolveQueue(input);\n\n if (!registeredQueue) {\n // Direct execution without a queue\n if (!(this.constructor as typeof JobQueueTask).canRunDirectly) {\n const queueLabel =\n typeof this.config.queue === \"string\"\n ? this.config.queue\n : (this.currentQueueName ?? this.type);\n throw new TaskConfigurationError(\n `Queue ${queueLabel} not found, and ${this.type} cannot run directly`\n );\n }\n this.currentJobId = undefined;\n\n // Create job for direct execution\n const job = await this.createJob(input, this.currentQueueName);\n cleanup = job.onJobProgress(\n (progress: number, message: string, details: Record<string, any> | null) => {\n executeContext.updateProgress(progress, message, details);\n }\n );\n const output = await job.execute(job.input, {\n signal: executeContext.signal,\n updateProgress: executeContext.updateProgress.bind(this),\n });\n return output;\n }\n\n // Execute via queue\n const { client } = registeredQueue;\n const jobInput = await this.getJobInput(input);\n const handle = await client.submit(jobInput as Input, {\n jobRunId: this.currentRunnerId,\n maxRetries: 10,\n });\n\n this.currentJobId = handle.id;\n this.currentQueueName = client.queueName;\n\n cleanup = handle.onProgress((progress, message, details) => {\n executeContext.updateProgress(progress, message, details);\n });\n\n const output = await handle.waitFor();\n if (output === undefined) {\n throw new TaskConfigurationError(\"Job disabled, should not happen\");\n }\n\n return output as Output;\n } catch (err: any) {\n throw new JobTaskFailedError(err);\n } finally {\n cleanup();\n }\n }\n\n /**\n * Get the input to submit to the job queue.\n * Override this method to transform task input to job input.\n * @param input - The task input\n * @returns The input to submit to the job queue\n */\n protected async getJobInput(input: Input): Promise<unknown> {\n return input;\n }\n\n /**\n * Override this method to create the right job class for direct execution (without a queue).\n * This is used when running the task directly without queueing.\n * @param input - The task input\n * @param queueName - The queue name (if any)\n * @returns Promise<Job> - The created job\n */\n async createJob(input: Input, queueName?: string): Promise<Job<any, Output>> {\n return new this.jobClass({\n queueName: queueName ?? this.currentQueueName,\n jobRunId: this.currentRunnerId, // could be undefined\n input: input,\n });\n }\n\n protected async resolveQueue(input: Input): Promise<RegisteredQueue<Input, Output> | undefined> {\n const preference = this.config.queue ?? true;\n\n if (preference === false) {\n this.currentQueueName = undefined;\n return undefined;\n }\n\n if (typeof preference === \"string\") {\n const registeredQueue = getTaskQueueRegistry().getQueue<Input, Output>(preference);\n if (registeredQueue) {\n this.currentQueueName = registeredQueue.server.queueName;\n return registeredQueue;\n }\n this.currentQueueName = preference;\n return undefined;\n }\n\n const queueName = await this.getDefaultQueueName(input);\n if (!queueName) {\n this.currentQueueName = undefined;\n return undefined;\n }\n\n this.currentQueueName = queueName;\n\n let registeredQueue = getTaskQueueRegistry().getQueue<Input, Output>(queueName);\n if (!registeredQueue) {\n registeredQueue = await this.createAndRegisterQueue(queueName, input);\n await registeredQueue.server.start();\n }\n\n return registeredQueue;\n }\n\n protected async getDefaultQueueName(_input: Input): Promise<string | undefined> {\n return this.type;\n }\n\n protected async createAndRegisterQueue(\n queueName: string,\n input: Input\n ): Promise<RegisteredQueue<Input, Output>> {\n const factory = getJobQueueFactory();\n let registeredQueue = await factory({\n queueName,\n jobClass: this.jobClass,\n input,\n config: this.config,\n task: this,\n });\n\n const registry = getTaskQueueRegistry();\n\n try {\n registry.registerQueue(registeredQueue);\n } catch (err) {\n if (err instanceof Error && err.message.includes(\"already exists\")) {\n const existing = registry.getQueue<Input, Output>(queueName);\n if (existing) {\n registeredQueue = existing;\n }\n } else {\n throw err;\n }\n }\n\n return registeredQueue;\n }\n\n /**\n * Aborts the task\n * @returns A promise that resolves when the task is aborted\n */\n async abort(): Promise<void> {\n if (this.currentQueueName && this.currentJobId) {\n const registeredQueue = getTaskQueueRegistry().getQueue(this.currentQueueName);\n if (registeredQueue) {\n await registeredQueue.client.abort(this.currentJobId);\n }\n }\n // Always call the parent abort to ensure the task is properly marked as aborted\n super.abort();\n }\n}\n",
|
|
23
24
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { JobQueueClient, JobQueueServer } from \"@workglow/job-queue\";\nimport { IQueueStorage } from \"@workglow/storage\";\n\n/**\n * Combined structure for a registered job queue containing server, client, and storage\n */\nexport interface RegisteredQueue<Input = unknown, Output = unknown> {\n readonly server: JobQueueServer<Input, Output>;\n readonly client: JobQueueClient<Input, Output>;\n readonly storage: IQueueStorage<Input, Output>;\n}\n\n/**\n * Global singleton instance of the TaskQueueRegistry.\n * This is used to manage all job queues across the application.\n */\nlet taskQueueRegistry: TaskQueueRegistry | null = null;\n\n/**\n * Registry for managing task queues in the application.\n * Provides functionality to register, manage, and control job queues.\n *\n * @template Input - The type of input data for tasks in the queues\n * @template Output - The type of output data for tasks in the queues\n */\nexport class TaskQueueRegistry {\n /**\n * Map of queue names to their corresponding registered queue instances\n */\n public readonly queues: Map<string, RegisteredQueue<unknown, unknown>> = new Map();\n\n /**\n * Registers a new job queue with the registry\n *\n * @param queue - The registered queue containing server, client, and storage\n * @throws Error if a queue with the same name already exists\n */\n registerQueue<Input, Output>(queue: RegisteredQueue<Input, Output>): void {\n const queueName = queue.server.queueName;\n if (this.queues.has(queueName)) {\n throw new Error(`Queue with name ${queueName} already exists`);\n }\n this.queues.set(queueName, queue as RegisteredQueue<unknown, unknown>);\n }\n\n /**\n * Retrieves a registered queue by its name\n *\n * @param queueName - The name of the queue to retrieve\n * @returns The registered queue or undefined if not found\n */\n getQueue<Input, Output>(queueName: string): RegisteredQueue<Input, Output> | undefined {\n return this.queues.get(queueName) as RegisteredQueue<Input, Output> | undefined;\n }\n\n /**\n * Starts all registered job queue servers\n * This allows queues to begin processing their jobs\n *\n * @returns The registry instance for chaining\n */\n startQueues(): this {\n for (const queue of this.queues.values()) {\n queue.server.start();\n }\n return this;\n }\n\n /**\n * Stops all registered job queue servers\n * This pauses job processing but maintains the queued jobs\n *\n * @returns The registry instance for chaining\n */\n stopQueues(): this {\n for (const queue of this.queues.values()) {\n queue.server.stop();\n }\n return this;\n }\n\n /**\n * Clears all registered job queues\n * This removes all queued jobs from the storage\n *\n * @returns The registry instance for chaining\n */\n clearQueues(): this {\n for (const queue of this.queues.values()) {\n queue.storage.deleteAll();\n }\n return this;\n }\n}\n\n/**\n * Gets the global TaskQueueRegistry instance\n * Creates a new instance if one doesn't exist\n *\n * @returns The global TaskQueueRegistry instance\n */\nexport function getTaskQueueRegistry(): TaskQueueRegistry {\n if (!taskQueueRegistry) {\n taskQueueRegistry = new TaskQueueRegistry();\n }\n return taskQueueRegistry;\n}\n\n/**\n * Sets the global TaskQueueRegistry instance\n * Stops and clears any existing registry before replacing it\n *\n * @param registry - The new registry instance to use, or null to clear\n */\nexport function setTaskQueueRegistry(registry: TaskQueueRegistry | null): void {\n if (taskQueueRegistry) {\n taskQueueRegistry.stopQueues();\n taskQueueRegistry.clearQueues();\n }\n taskQueueRegistry = registry;\n}\n",
|
|
25
|
+
"/**\n * @copyright\n * Copyright 2025 Steven Roussey\n * All Rights Reserved\n */\n\nimport { IExecuteContext, IExecuteReactiveContext, Task, TaskConfig } from \"@workglow/task-graph\";\nimport type { DataPortSchema } from \"@workglow/util\";\n\nexport type OutputTaskInput = Record<string, unknown>;\nexport type OutputTaskOutput = Record<string, unknown>;\n\nexport type OutputTaskConfig = TaskConfig & {\n schema: DataPortSchema;\n};\n\nexport class OutputTask extends Task<OutputTaskInput, OutputTaskOutput, OutputTaskConfig> {\n static type = \"OutputTask\";\n static category = \"Flow Control\";\n static title = \"Output\";\n static description = \"Ends the workflow\";\n static hasDynamicSchemas = true;\n static cacheable = false;\n\n public static inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public inputSchema(): DataPortSchema {\n return (\n (this.config?.extras?.inputSchema as DataPortSchema | undefined) ??\n (this.constructor as typeof OutputTask).inputSchema()\n );\n }\n\n public outputSchema(): DataPortSchema {\n return (\n (this.config?.extras?.outputSchema as DataPortSchema | undefined) ??\n (this.constructor as typeof OutputTask).outputSchema()\n );\n }\n\n public async execute(input: OutputTaskInput, _context: IExecuteContext) {\n return input as OutputTaskOutput;\n }\n\n public async executeReactive(\n input: OutputTaskInput,\n _output: OutputTaskOutput,\n _context: IExecuteReactiveContext\n ) {\n return input as OutputTaskOutput;\n }\n}\n",
|
|
24
26
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ITaskConstructor } from \"./ITask\";\n\n/**\n * Map storing all registered task constructors.\n * Keys are task type identifiers and values are their corresponding constructor functions.\n */\nconst taskConstructors = new Map<string, ITaskConstructor<any, any, any>>();\n\n/**\n * Registers a task constructor with the registry.\n * This allows the task type to be instantiated dynamically based on its type identifier.\n *\n * @param type - The unique identifier for the task type\n * @param constructor - The constructor function for the task\n * @throws Error if a task with the same type is already registered\n */\nfunction registerTask(baseClass: ITaskConstructor<any, any, any>): void {\n if (taskConstructors.has(baseClass.type)) {\n // TODO: fix this\n // throw new Error(`Task type ${baseClass.type} is already registered`);\n }\n taskConstructors.set(baseClass.type, baseClass);\n}\n\n/**\n * TaskRegistry provides a centralized registry for task types.\n * It enables dynamic task instantiation and management across the application.\n */\nexport const TaskRegistry = {\n /**\n * Map containing all registered task constructors\n */\n all: taskConstructors,\n\n /**\n * Function to register new task types\n */\n registerTask,\n};\n",
|
|
25
27
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Dataflow } from \"../task-graph/Dataflow\";\nimport { TaskGraph } from \"../task-graph/TaskGraph\";\nimport { CompoundMergeStrategy } from \"../task-graph/TaskGraphRunner\";\nimport { TaskConfigurationError, TaskJSONError } from \"../task/TaskError\";\nimport { TaskRegistry } from \"../task/TaskRegistry\";\nimport { GraphAsTask } from \"./GraphAsTask\";\nimport { DataPorts, Provenance, TaskConfig, TaskInput } from \"./TaskTypes\";\n\n// ========================================================================\n// JSON Serialization Types\n// ========================================================================\n/**\n * Represents a single task item in the JSON configuration.\n * This structure defines how tasks should be configured in JSON format.\n */\n\nexport type JsonTaskItem = {\n /** Unique identifier for the task */\n id: unknown;\n\n /** Type of task to create */\n type: string;\n\n /** Optional display name for the task */\n name?: string;\n\n /** Default input values for the task */\n defaults?: TaskInput;\n\n /** Defines data flow between tasks */\n dependencies?: {\n /** Input parameter name mapped to source task output */\n [x: string]:\n | {\n /** ID of the source task */\n id: unknown;\n\n /** Output parameter name from source task */\n output: string;\n }\n | Array<{\n id: unknown;\n output: string;\n }>;\n };\n\n /** 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*/\n extras?: DataPorts;\n\n /** Optional metadata about task origin */\n provenance?: Provenance;\n\n /** Nested tasks for compound operations */\n subtasks?: JsonTaskItem[];\n}; /**\n * Represents a task graph item, which can be a task or a subgraph\n */\n\nexport type TaskGraphItemJson = {\n id: unknown;\n type: string;\n name?: string;\n defaults?: TaskInput;\n provenance?: Provenance;\n extras?: DataPorts;\n subgraph?: TaskGraphJson;\n merge?: CompoundMergeStrategy;\n};\n\nexport type TaskGraphJson = {\n tasks: TaskGraphItemJson[];\n dataflows: DataflowJson[];\n};\n\nexport type DataflowJson = {\n sourceTaskId: unknown;\n sourceTaskPortId: string;\n targetTaskId: unknown;\n targetTaskPortId: string;\n};\n\nconst createSingleTaskFromJSON = (item: JsonTaskItem | TaskGraphItemJson) => {\n if (!item.id) throw new TaskJSONError(\"Task id required\");\n if (!item.type) throw new TaskJSONError(\"Task type required\");\n if (item.defaults && (Array.isArray(item.defaults) || Array.isArray(item.provenance)))\n throw new TaskJSONError(\"Task defaults must be an object\");\n if (item.provenance && (Array.isArray(item.provenance) || typeof item.provenance !== \"object\"))\n throw new TaskJSONError(\"Task provenance must be an object\");\n\n const taskClass = TaskRegistry.all.get(item.type);\n if (!taskClass)\n throw new TaskJSONError(`Task type ${item.type} not found, perhaps not registered?`);\n\n const taskConfig: TaskConfig = {\n id: item.id,\n name: item.name,\n provenance: item.provenance ?? {},\n extras: item.extras,\n };\n const task = new taskClass(item.defaults ?? {}, taskConfig);\n return task;\n};\n\n/**\n * Creates a task instance from a JSON task item configuration\n * Validates required fields and resolves task type from registry\n */\nexport const createTaskFromDependencyJSON = (item: JsonTaskItem) => {\n const task = createSingleTaskFromJSON(item);\n if (item.subtasks && item.subtasks.length > 0) {\n if (!(task instanceof GraphAsTask)) {\n throw new TaskConfigurationError(\"Subgraph is only supported for CompoundTasks\");\n }\n task.subGraph = createGraphFromDependencyJSON(item.subtasks);\n }\n return task;\n};\n\n/**\n * Creates a task graph from an array of JSON task items\n * Recursively processes subtasks for compound tasks\n */\nexport const createGraphFromDependencyJSON = (jsonItems: JsonTaskItem[]) => {\n const subGraph = new TaskGraph();\n for (const subitem of jsonItems) {\n subGraph.addTask(createTaskFromDependencyJSON(subitem));\n }\n return subGraph;\n};\n\n/**\n * Creates a task instance from a task graph item JSON representation\n * @param item The JSON representation of the task\n * @returns A new task instance\n * @throws Error if required fields are missing or invalid\n */\nexport const createTaskFromGraphJSON = (item: TaskGraphItemJson) => {\n const task = createSingleTaskFromJSON(item);\n if (item.subgraph) {\n if (!(task instanceof GraphAsTask)) {\n throw new TaskConfigurationError(\"Subgraph is only supported for GraphAsTask\");\n }\n task.subGraph = createGraphFromGraphJSON(item.subgraph);\n }\n return task;\n};\n\n/**\n * Creates a TaskGraph instance from its JSON representation\n * @param graphJsonObj The JSON representation of the task graph\n * @returns A new TaskGraph instance with all tasks and data flows\n */\nexport const createGraphFromGraphJSON = (graphJsonObj: TaskGraphJson) => {\n const subGraph = new TaskGraph();\n for (const subitem of graphJsonObj.tasks) {\n subGraph.addTask(createTaskFromGraphJSON(subitem));\n }\n for (const subitem of graphJsonObj.dataflows) {\n subGraph.addDataflow(\n new Dataflow(\n subitem.sourceTaskId,\n subitem.sourceTaskPortId,\n subitem.targetTaskId,\n subitem.targetTaskPortId\n )\n );\n }\n return subGraph;\n};\n",
|
|
26
28
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createServiceToken, EventEmitter, EventParameters } from \"@workglow/util\";\nimport { TaskGraph } from \"../task-graph/TaskGraph\";\n\n/**\n * Service token for TaskGraphRepository\n */\nexport const TASK_GRAPH_REPOSITORY = createServiceToken<TaskGraphRepository>(\n \"taskgraph.taskGraphRepository\"\n);\n\n/**\n * Events that can be emitted by the TaskGraphRepository\n */\nexport type TaskGraphRepositoryEvents = keyof TaskGraphRepositoryEventListeners;\n\nexport type TaskGraphRepositoryEventListeners = {\n graph_saved: (key: string) => void;\n graph_retrieved: (key: string) => void;\n graph_cleared: () => void;\n};\n\nexport type TaskGraphRepositoryEventListener<Event extends TaskGraphRepositoryEvents> =\n TaskGraphRepositoryEventListeners[Event];\n\nexport type TaskGraphRepositoryEventParameters<Event extends TaskGraphRepositoryEvents> =\n EventParameters<TaskGraphRepositoryEventListeners, Event>;\n\n/**\n * Repository class for managing task graphs persistence and retrieval.\n * Provides functionality to save, load, and manipulate task graphs with their associated tasks and data flows.\n */\nexport abstract class TaskGraphRepository {\n /**\n * The type of the repository\n */\n public type = \"TaskGraphRepository\";\n\n /**\n * The event emitter for the task graphs\n */\n private get events() {\n if (!this._events) {\n this._events = new EventEmitter<TaskGraphRepositoryEventListeners>();\n }\n return this._events;\n }\n private _events: EventEmitter<TaskGraphRepositoryEventListeners> | undefined;\n\n /**\n * Registers an event listener for the specified event\n * @param name The event name to listen for\n * @param fn The callback function to execute when the event occurs\n */\n on<Event extends TaskGraphRepositoryEvents>(\n name: Event,\n fn: TaskGraphRepositoryEventListener<Event>\n ) {\n this.events.on(name, fn);\n }\n\n /**\n * Removes an event listener for the specified event\n * @param name The event name to stop listening for\n * @param fn The callback function to remove\n */\n off<Event extends TaskGraphRepositoryEvents>(\n name: Event,\n fn: TaskGraphRepositoryEventListener<Event>\n ) {\n this.events.off(name, fn);\n }\n\n /**\n * Adds an event listener that will only be called once\n * @param name The event name to listen for\n * @param fn The callback function to execute when the event occurs\n */\n once<Event extends TaskGraphRepositoryEvents>(\n name: Event,\n fn: TaskGraphRepositoryEventListener<Event>\n ) {\n this.events.once(name, fn);\n }\n\n /**\n * Returns when the event was emitted (promise form of once)\n * @param name The event name to check\n * @returns true if the event has listeners, false otherwise\n */\n waitOn<Event extends TaskGraphRepositoryEvents>(name: Event) {\n return this.events.waitOn(name) as Promise<TaskGraphRepositoryEventParameters<Event>>;\n }\n\n /**\n * Emits an event (if there are listeners)\n * @param name The event name to emit\n * @param args The event parameters\n */\n emit<Event extends TaskGraphRepositoryEvents>(\n name: Event,\n ...args: TaskGraphRepositoryEventParameters<Event>\n ) {\n this._events?.emit(name, ...args);\n }\n\n /**\n * Saves a task graph to persistent storage\n * @param key The unique identifier for the task graph\n * @param output The task graph to save\n * @emits graph_saved when the operation completes\n */\n abstract saveTaskGraph(key: string, output: TaskGraph): Promise<void>;\n\n /**\n * Retrieves a task graph from persistent storage\n * @param key The unique identifier of the task graph to retrieve\n * @returns The retrieved task graph, or undefined if not found\n * @emits graph_retrieved when the operation completes successfully\n */\n abstract getTaskGraph(key: string): Promise<TaskGraph | undefined>;\n\n /**\n * Clears all task graphs from the repository\n * @emits graph_cleared when the operation completes\n */\n abstract clear(): Promise<void>;\n\n /**\n * Returns the number of task graphs stored in the repository\n * @returns The count of stored task graphs\n */\n abstract size(): Promise<number>;\n}\n",
|
|
27
29
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TabularRepository } from \"@workglow/storage\";\nimport { DataPortSchemaObject } from \"@workglow/util\";\nimport { TaskGraph } from \"../task-graph/TaskGraph\";\nimport { createGraphFromGraphJSON } from \"../task/TaskJSON\";\nimport { TaskGraphRepository } from \"./TaskGraphRepository\";\n\nexport const TaskGraphSchema = {\n type: \"object\",\n properties: {\n key: { type: \"string\" },\n value: { type: \"string\" },\n },\n additionalProperties: false,\n} satisfies DataPortSchemaObject;\n\nexport const TaskGraphPrimaryKeyNames = [\"key\"] as const;\n\n/**\n * Options for the TaskGraphRepository\n */\nexport type TaskGraphRepositoryStorage = TabularRepository<\n typeof TaskGraphSchema,\n typeof TaskGraphPrimaryKeyNames\n>;\ntype TaskGraphRepositoryOptions = {\n tabularRepository: TaskGraphRepositoryStorage;\n};\n\n/**\n * Repository class for managing task graphs persistence and retrieval.\n * Provides functionality to save, load, and manipulate task graphs with their associated tasks and data flows.\n */\nexport class TaskGraphTabularRepository extends TaskGraphRepository {\n /**\n * The type of the repository\n */\n public type = \"TaskGraphTabularRepository\";\n\n /**\n * The tabular repository for the task graphs\n */\n tabularRepository: TaskGraphRepositoryStorage;\n\n /**\n * Constructor for the TaskGraphRepository\n * @param options The options for the repository\n */\n constructor({ tabularRepository }: TaskGraphRepositoryOptions) {\n super();\n this.tabularRepository = tabularRepository;\n }\n\n /**\n * Sets up the database for the repository.\n * Must be called before using any other methods.\n */\n async setupDatabase(): Promise<void> {\n await this.tabularRepository.setupDatabase?.();\n }\n\n /**\n * Saves a task graph to persistent storage\n * @param key The unique identifier for the task graph\n * @param output The task graph to save\n * @emits graph_saved when the operation completes\n */\n async saveTaskGraph(key: string, output: TaskGraph): Promise<void> {\n const value = JSON.stringify(output.toJSON());\n await this.tabularRepository.put({ key, value });\n this.emit(\"graph_saved\", key);\n }\n\n /**\n * Retrieves a task graph from persistent storage\n * @param key The unique identifier of the task graph to retrieve\n * @returns The retrieved task graph, or undefined if not found\n * @emits graph_retrieved when the operation completes successfully\n */\n async getTaskGraph(key: string): Promise<TaskGraph | undefined> {\n const result = await this.tabularRepository.get({ key });\n const value = result?.value;\n if (!value) {\n return undefined;\n }\n const jsonObj = JSON.parse(value);\n const graph = createGraphFromGraphJSON(jsonObj);\n\n this.emit(\"graph_retrieved\", key);\n return graph;\n }\n\n /**\n * Clears all task graphs from the repository\n * @emits graph_cleared when the operation completes\n */\n async clear(): Promise<void> {\n await this.tabularRepository.deleteAll();\n this.emit(\"graph_cleared\");\n }\n\n /**\n * Returns the number of task graphs stored in the repository\n * @returns The count of stored task graphs\n */\n async size(): Promise<number> {\n return await this.tabularRepository.size();\n }\n}\n",
|
|
28
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type TabularRepository } from \"@workglow/storage\";\nimport { compress, DataPortSchemaObject, decompress, makeFingerprint } from \"@workglow/util\";\nimport { TaskInput, TaskOutput } from \"../task/TaskTypes\";\nimport { TaskOutputRepository } from \"./TaskOutputRepository\";\n\nexport type TaskOutputPrimaryKey = {\n key: string;\n taskType: string;\n};\n\nexport const TaskOutputSchema = {\n type: \"object\",\n properties: {\n key: { type: \"string\" },\n taskType: { type: \"string\" },\n value: { type: \"string\", contentEncoding: \"blob\" },\n createdAt: { type: \"string\", format: \"date-time\" },\n },\n additionalProperties: false,\n} satisfies DataPortSchemaObject;\n\nexport const TaskOutputPrimaryKeyNames = [\"key\", \"taskType\"] as const;\n\nexport type TaskOutputRepositoryStorage = TabularRepository<\n typeof TaskOutputSchema,\n typeof TaskOutputPrimaryKeyNames\n>;\n\nexport type TaskOutputRepositoryOptions = {\n tabularRepository: TaskOutputRepositoryStorage;\n outputCompression?: boolean;\n};\n\n/**\n * Abstract class for managing task outputs in a repository\n * Provides methods for saving, retrieving, and clearing task outputs\n */\nexport class TaskOutputTabularRepository extends TaskOutputRepository {\n /**\n * The tabular repository for the task outputs\n */\n tabularRepository: TaskOutputRepositoryStorage;\n\n /**\n * Constructor for the TaskOutputTabularRepository\n * @param options The options for the repository\n */\n constructor({ tabularRepository, outputCompression = true }: TaskOutputRepositoryOptions) {\n super({ outputCompression });\n this.tabularRepository = tabularRepository;\n this.outputCompression = outputCompression;\n }\n\n /**\n * Sets up the database for the repository.\n * Must be called before using any other methods.\n */\n async setupDatabase(): Promise<void> {\n await this.tabularRepository.setupDatabase?.();\n }\n\n public async keyFromInputs(inputs: TaskInput): Promise<string> {\n return await makeFingerprint(inputs);\n }\n\n /**\n * Saves a task output to the repository\n * @param taskType The type of task to save the output for\n * @param inputs The input parameters for the task\n * @param output The task output to save\n */\n async saveOutput(\n taskType: string,\n inputs: TaskInput,\n output: TaskOutput,\n createdAt = new Date() // for testing purposes\n ): Promise<void> {\n const key = await this.keyFromInputs(inputs);\n const value = JSON.stringify(output);\n if (this.outputCompression) {\n const compressedValue = await compress(value);\n await this.tabularRepository.put({\n taskType,\n key,\n // contentEncoding: \"blob\" allows Uint8Array despite schema type being \"string\"\n value: compressedValue as unknown as string,\n createdAt: createdAt.toISOString(),\n });\n } else {\n const valueBuffer = Buffer.from(value);\n await this.tabularRepository.put({\n taskType,\n key,\n // contentEncoding: \"blob\" allows Buffer/Uint8Array despite schema type being \"string\"\n value: valueBuffer as unknown as string,\n createdAt: createdAt.toISOString(),\n });\n }\n this.emit(\"output_saved\", taskType);\n }\n\n /**\n * Retrieves a task output from the repository\n * @param taskType The type of task to retrieve the output for\n * @param inputs The input parameters for the task\n * @returns The retrieved task output, or undefined if not found\n */\n async getOutput(taskType: string, inputs: TaskInput): Promise<TaskOutput | undefined> {\n const key = await this.keyFromInputs(inputs);\n const output = await this.tabularRepository.get({ key, taskType });\n this.emit(\"output_retrieved\", taskType);\n if (output?.value) {\n if (this.outputCompression) {\n // Coerce JSON-serialized binary (from filesystem JSON store) back to Uint8Array\n const raw: unknown = output.value as unknown;\n const bytes: Uint8Array =\n raw instanceof Uint8Array\n ? raw\n : Array.isArray(raw)\n ? new Uint8Array(raw as number[])\n : raw && typeof raw === \"object\"\n ? new Uint8Array(\n Object.keys(raw as Record<string, number>)\n .filter((k) => /^\\d+$/.test(k))\n .sort((a, b) => Number(a) - Number(b))\n .map((k) => (raw as Record<string, number>)[k])\n )\n : new Uint8Array();\n const decompressedValue = await decompress(bytes);\n const value = JSON.parse(decompressedValue) as TaskOutput;\n return value as TaskOutput;\n } else {\n const stringValue = output.value.toString();\n const value = JSON.parse(stringValue) as TaskOutput;\n return value as TaskOutput;\n }\n } else {\n return undefined;\n }\n }\n\n /**\n * Clears all task outputs from the repository\n * @emits output_cleared when the operation completes\n */\n async clear(): Promise<void> {\n await this.tabularRepository.deleteAll();\n this.emit(\"output_cleared\");\n }\n\n /**\n * Returns the number of task outputs stored in the repository\n * @returns The count of stored task outputs\n */\n async size(): Promise<number> {\n return await this.tabularRepository.size();\n }\n\n /**\n * Clear all task outputs from the repository that are older than the given date\n * @param olderThanInMs The time in milliseconds to clear task outputs older than\n */\n async clearOlderThan(olderThanInMs: number): Promise<void> {\n const date = new Date(Date.now() - olderThanInMs).toISOString();\n await this.tabularRepository.deleteSearch(
|
|
30
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { type TabularRepository } from \"@workglow/storage\";\nimport { compress, DataPortSchemaObject, decompress, makeFingerprint } from \"@workglow/util\";\nimport { TaskInput, TaskOutput } from \"../task/TaskTypes\";\nimport { TaskOutputRepository } from \"./TaskOutputRepository\";\n\nexport type TaskOutputPrimaryKey = {\n key: string;\n taskType: string;\n};\n\nexport const TaskOutputSchema = {\n type: \"object\",\n properties: {\n key: { type: \"string\" },\n taskType: { type: \"string\" },\n value: { type: \"string\", contentEncoding: \"blob\" },\n createdAt: { type: \"string\", format: \"date-time\" },\n },\n additionalProperties: false,\n} satisfies DataPortSchemaObject;\n\nexport const TaskOutputPrimaryKeyNames = [\"key\", \"taskType\"] as const;\n\nexport type TaskOutputRepositoryStorage = TabularRepository<\n typeof TaskOutputSchema,\n typeof TaskOutputPrimaryKeyNames\n>;\n\nexport type TaskOutputRepositoryOptions = {\n tabularRepository: TaskOutputRepositoryStorage;\n outputCompression?: boolean;\n};\n\n/**\n * Abstract class for managing task outputs in a repository\n * Provides methods for saving, retrieving, and clearing task outputs\n */\nexport class TaskOutputTabularRepository extends TaskOutputRepository {\n /**\n * The tabular repository for the task outputs\n */\n tabularRepository: TaskOutputRepositoryStorage;\n\n /**\n * Constructor for the TaskOutputTabularRepository\n * @param options The options for the repository\n */\n constructor({ tabularRepository, outputCompression = true }: TaskOutputRepositoryOptions) {\n super({ outputCompression });\n this.tabularRepository = tabularRepository;\n this.outputCompression = outputCompression;\n }\n\n /**\n * Sets up the database for the repository.\n * Must be called before using any other methods.\n */\n async setupDatabase(): Promise<void> {\n await this.tabularRepository.setupDatabase?.();\n }\n\n public async keyFromInputs(inputs: TaskInput): Promise<string> {\n return await makeFingerprint(inputs);\n }\n\n /**\n * Saves a task output to the repository\n * @param taskType The type of task to save the output for\n * @param inputs The input parameters for the task\n * @param output The task output to save\n */\n async saveOutput(\n taskType: string,\n inputs: TaskInput,\n output: TaskOutput,\n createdAt = new Date() // for testing purposes\n ): Promise<void> {\n const key = await this.keyFromInputs(inputs);\n const value = JSON.stringify(output);\n if (this.outputCompression) {\n const compressedValue = await compress(value);\n await this.tabularRepository.put({\n taskType,\n key,\n // contentEncoding: \"blob\" allows Uint8Array despite schema type being \"string\"\n value: compressedValue as unknown as string,\n createdAt: createdAt.toISOString(),\n });\n } else {\n const valueBuffer = Buffer.from(value);\n await this.tabularRepository.put({\n taskType,\n key,\n // contentEncoding: \"blob\" allows Buffer/Uint8Array despite schema type being \"string\"\n value: valueBuffer as unknown as string,\n createdAt: createdAt.toISOString(),\n });\n }\n this.emit(\"output_saved\", taskType);\n }\n\n /**\n * Retrieves a task output from the repository\n * @param taskType The type of task to retrieve the output for\n * @param inputs The input parameters for the task\n * @returns The retrieved task output, or undefined if not found\n */\n async getOutput(taskType: string, inputs: TaskInput): Promise<TaskOutput | undefined> {\n const key = await this.keyFromInputs(inputs);\n const output = await this.tabularRepository.get({ key, taskType });\n this.emit(\"output_retrieved\", taskType);\n if (output?.value) {\n if (this.outputCompression) {\n // Coerce JSON-serialized binary (from filesystem JSON store) back to Uint8Array\n const raw: unknown = output.value as unknown;\n const bytes: Uint8Array =\n raw instanceof Uint8Array\n ? raw\n : Array.isArray(raw)\n ? new Uint8Array(raw as number[])\n : raw && typeof raw === \"object\"\n ? new Uint8Array(\n Object.keys(raw as Record<string, number>)\n .filter((k) => /^\\d+$/.test(k))\n .sort((a, b) => Number(a) - Number(b))\n .map((k) => (raw as Record<string, number>)[k])\n )\n : new Uint8Array();\n const decompressedValue = await decompress(bytes);\n const value = JSON.parse(decompressedValue) as TaskOutput;\n return value as TaskOutput;\n } else {\n const stringValue = output.value.toString();\n const value = JSON.parse(stringValue) as TaskOutput;\n return value as TaskOutput;\n }\n } else {\n return undefined;\n }\n }\n\n /**\n * Clears all task outputs from the repository\n * @emits output_cleared when the operation completes\n */\n async clear(): Promise<void> {\n await this.tabularRepository.deleteAll();\n this.emit(\"output_cleared\");\n }\n\n /**\n * Returns the number of task outputs stored in the repository\n * @returns The count of stored task outputs\n */\n async size(): Promise<number> {\n return await this.tabularRepository.size();\n }\n\n /**\n * Clear all task outputs from the repository that are older than the given date\n * @param olderThanInMs The time in milliseconds to clear task outputs older than\n */\n async clearOlderThan(olderThanInMs: number): Promise<void> {\n const date = new Date(Date.now() - olderThanInMs).toISOString();\n await this.tabularRepository.deleteSearch({ createdAt: { value: date, operator: \"<\" } });\n this.emit(\"output_pruned\");\n }\n}\n"
|
|
29
31
|
],
|
|
30
|
-
"mappings": "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",
|
|
31
|
-
"debugId": "
|
|
32
|
+
"mappings": "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",
|
|
33
|
+
"debugId": "E59B822A237BFEFE64756E2164756E21",
|
|
32
34
|
"names": []
|
|
33
35
|
}
|