@workglow/task-graph 0.0.88 → 0.0.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/browser.js +1789 -266
  2. package/dist/browser.js.map +19 -11
  3. package/dist/bun.js +1789 -266
  4. package/dist/bun.js.map +19 -11
  5. package/dist/node.js +1789 -266
  6. package/dist/node.js.map +19 -11
  7. package/dist/task/ConditionUtils.d.ts +47 -0
  8. package/dist/task/ConditionUtils.d.ts.map +1 -0
  9. package/dist/task/ConditionalTask.d.ts +15 -0
  10. package/dist/task/ConditionalTask.d.ts.map +1 -1
  11. package/dist/task/GraphAsTask.d.ts.map +1 -1
  12. package/dist/task/GraphAsTaskRunner.d.ts +3 -4
  13. package/dist/task/GraphAsTaskRunner.d.ts.map +1 -1
  14. package/dist/task/IteratorTask.d.ts +177 -0
  15. package/dist/task/IteratorTask.d.ts.map +1 -0
  16. package/dist/task/IteratorTaskRunner.d.ts +36 -0
  17. package/dist/task/IteratorTaskRunner.d.ts.map +1 -0
  18. package/dist/task/MapTask.d.ts +82 -0
  19. package/dist/task/MapTask.d.ts.map +1 -0
  20. package/dist/task/ReduceTask.d.ts +61 -0
  21. package/dist/task/ReduceTask.d.ts.map +1 -0
  22. package/dist/task/Task.d.ts +2 -2
  23. package/dist/task/Task.d.ts.map +1 -1
  24. package/dist/task/WhileTask.d.ts +214 -0
  25. package/dist/task/WhileTask.d.ts.map +1 -0
  26. package/dist/task/WhileTaskRunner.d.ts +29 -0
  27. package/dist/task/WhileTaskRunner.d.ts.map +1 -0
  28. package/dist/task/index.d.ts +12 -1
  29. package/dist/task/index.d.ts.map +1 -1
  30. package/dist/task/iterationSchema.d.ts +70 -0
  31. package/dist/task/iterationSchema.d.ts.map +1 -0
  32. package/dist/task-graph/ITaskGraph.d.ts +1 -1
  33. package/dist/task-graph/ITaskGraph.d.ts.map +1 -1
  34. package/dist/task-graph/TaskGraph.d.ts +1 -1
  35. package/dist/task-graph/TaskGraph.d.ts.map +1 -1
  36. package/dist/task-graph/TaskGraphRunner.d.ts +2 -1
  37. package/dist/task-graph/TaskGraphRunner.d.ts.map +1 -1
  38. package/dist/task-graph/Workflow.d.ts +112 -8
  39. package/dist/task-graph/Workflow.d.ts.map +1 -1
  40. package/package.json +7 -7
  41. package/src/EXECUTION_MODEL.md +433 -0
  42. package/dist/task/TaskJSON.test.d.ts +0 -7
  43. package/dist/task/TaskJSON.test.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Workflow.d.ts","sourceRoot":"","sources":["../../src/task-graph/Workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Workflow.d.ts","sourceRoot":"","sources":["../../src/task-graph/Workflow.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@workglow/task-graph",
3
3
  "type": "module",
4
- "version": "0.0.88",
4
+ "version": "0.0.90",
5
5
  "description": "Task graph management for Workglow, providing DAG construction, execution planning, and workflow orchestration.",
6
6
  "scripts": {
7
7
  "watch": "concurrently -c 'auto' 'bun:watch-*'",
@@ -36,9 +36,9 @@
36
36
  "access": "public"
37
37
  },
38
38
  "peerDependencies": {
39
- "@workglow/job-queue": "0.0.88",
40
- "@workglow/storage": "0.0.88",
41
- "@workglow/util": "0.0.88"
39
+ "@workglow/job-queue": "0.0.90",
40
+ "@workglow/storage": "0.0.90",
41
+ "@workglow/util": "0.0.90"
42
42
  },
43
43
  "peerDependenciesMeta": {
44
44
  "@workglow/job-queue": {
@@ -52,8 +52,8 @@
52
52
  }
53
53
  },
54
54
  "devDependencies": {
55
- "@workglow/job-queue": "0.0.88",
56
- "@workglow/storage": "0.0.88",
57
- "@workglow/util": "0.0.88"
55
+ "@workglow/job-queue": "0.0.90",
56
+ "@workglow/storage": "0.0.90",
57
+ "@workglow/util": "0.0.90"
58
58
  }
59
59
  }
@@ -0,0 +1,433 @@
1
+ # Task Graph Execution Model
2
+
3
+ This document explains the internal execution model of the task graph system. It is intended for developers (human or AI) who need to understand or modify the execution logic.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Overview](#overview)
8
+ - [Task Lifecycle](#task-lifecycle)
9
+ - [Normal Execution (run)](#normal-execution-run)
10
+ - [Reactive Execution (runReactive)](#reactive-execution-runreactive)
11
+ - [Dataflow and Input Propagation](#dataflow-and-input-propagation)
12
+ - [GraphAsTask (Subgraphs)](#graphastask-subgraphs)
13
+ - [Key Invariants](#key-invariants)
14
+ - [Common Pitfalls](#common-pitfalls)
15
+
16
+ ---
17
+
18
+ ## Overview
19
+
20
+ The task graph system has two execution modes:
21
+
22
+ 1. **`run()`** - Full execution that produces cached, immutable results
23
+ 2. **`runReactive()`** - Lightweight execution for UI updates and previews
24
+
25
+ These modes serve different purposes and have different semantics regarding task state and data flow.
26
+
27
+ ---
28
+
29
+ ## Task Lifecycle
30
+
31
+ ### Task Statuses
32
+
33
+ ```
34
+ PENDING → PROCESSING → COMPLETED
35
+ ↘ FAILED
36
+ ↘ ABORTED
37
+ ```
38
+
39
+ | Status | Description |
40
+ | ------------ | ------------------------------------------------------------------- |
41
+ | `PENDING` | Task has not been executed yet. Inputs can be modified. |
42
+ | `PROCESSING` | Task is currently executing. |
43
+ | `COMPLETED` | Task has finished successfully. **Output is locked and immutable.** |
44
+ | `FAILED` | Task execution threw an error. |
45
+ | `ABORTED` | Task was cancelled via `abort()`. |
46
+
47
+ ### Key Properties
48
+
49
+ Each task maintains:
50
+
51
+ - `defaults` - Default input values set at construction time
52
+ - `runInputData` - The actual input used for execution (defaults + overrides)
53
+ - `runOutputData` - The output produced by execution
54
+ - `status` - Current lifecycle status
55
+
56
+ ---
57
+
58
+ ## Normal Execution (run)
59
+
60
+ ### Purpose
61
+
62
+ Full execution that:
63
+
64
+ - Runs the task's `execute()` method
65
+ - Produces cached, deterministic results
66
+ - Transitions task to `COMPLETED` status
67
+ - Makes output immutable
68
+
69
+ ### Flow
70
+
71
+ ```
72
+ Task.run(overrides)
73
+
74
+ TaskRunner.run(overrides)
75
+
76
+ 1. setInput(overrides) # Merge overrides into runInputData
77
+ 2. resolveSchemaInputs() # Resolve model/repository strings to instances
78
+ 3. validateInput() # Validate against input schema
79
+ 4. Check cache # If cacheable, check for cached result
80
+ 5. executeTask() # Call task.execute(input, context)
81
+ 6. Store in cache # If cacheable, cache the result
82
+ 7. handleComplete() # Set status = COMPLETED
83
+
84
+ Return runOutputData (locked)
85
+ ```
86
+
87
+ ### Graph-Level Execution
88
+
89
+ ```
90
+ TaskGraph.run(input)
91
+
92
+ TaskGraphRunner.runGraph(input)
93
+
94
+ For each task (in topological order):
95
+ 1. copyInputFromEdgesToNode() # Pull data from incoming dataflows
96
+ 2. runTask(task, input) # Execute the task
97
+ 3. pushOutputFromNodeToEdges() # Push output to outgoing dataflows
98
+
99
+ Return results from ending nodes (no outgoing dataflows)
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Reactive Execution (runReactive)
105
+
106
+ ### Purpose
107
+
108
+ Lightweight execution for:
109
+
110
+ - UI previews and updates
111
+ - Fast transformations (e.g., image filters)
112
+ - Propagating intermediate results through PENDING tasks
113
+
114
+ **Important:** Reactive execution only affects `PENDING` tasks. `COMPLETED` tasks return their cached output unchanged.
115
+
116
+ ### Use Case Example
117
+
118
+ ```
119
+ User edits an InputNode default → Task is PENDING
120
+
121
+ runReactive() is called
122
+
123
+ InputTask (PENDING) receives new value
124
+
125
+ Downstream tasks (PENDING) get reactive updates
126
+
127
+ Tasks run their executeReactive() for quick previews
128
+
129
+ Eventually run() is called → All tasks become COMPLETED (locked)
130
+ ```
131
+
132
+ ### Task-Level Flow
133
+
134
+ ```
135
+ Task.runReactive(overrides)
136
+
137
+ TaskRunner.runReactive(overrides)
138
+
139
+ 1. If status == PROCESSING: return existing output (no re-entry)
140
+ 2. setInput(overrides) # Update runInputData
141
+ 3. resolveSchemaInputs() # Resolve strings to instances
142
+ 4. handleStartReactive() # Status → PROCESSING
143
+ 5. validateInput()
144
+ 6. executeTaskReactive(input, output) # Call task.executeReactive()
145
+ 7. runOutputData = merge(output, result) # Merge with previous output
146
+ 8. handleCompleteReactive() # Status → back to previous
147
+
148
+ Return runOutputData
149
+ ```
150
+
151
+ ### Graph-Level Flow
152
+
153
+ ```
154
+ TaskGraph.runReactive(input)
155
+
156
+ TaskGraphRunner.runGraphReactive(input)
157
+
158
+ For each task (in topological order):
159
+
160
+ ┌─ If status == PENDING:
161
+ │ resetInputData() # Reset to defaults
162
+ │ copyInputFromEdgesToNode() # Pull from incoming dataflows
163
+ └─ Else (COMPLETED):
164
+ Skip input modification # Output is locked
165
+
166
+ If isRootTask (no incoming dataflows):
167
+ taskInput = input # Pass graph input to root tasks
168
+ Else:
169
+ taskInput = {}
170
+
171
+ task.runReactive(taskInput)
172
+
173
+ pushOutputFromNodeToEdges() # Push output to dataflows
174
+
175
+ Return results from ending nodes
176
+ ```
177
+
178
+ ### The executeReactive Method
179
+
180
+ ```typescript
181
+ // Default implementation - just returns existing output
182
+ async executeReactive(input, output, context): Promise<Output | undefined> {
183
+ return output;
184
+ }
185
+
186
+ // Custom implementation for quick transformations
187
+ async executeReactive(input, output, context): Promise<Output | undefined> {
188
+ // Lightweight operation (e.g., < 1ms)
189
+ return { ...output, preview: this.quickTransform(input) };
190
+ }
191
+ ```
192
+
193
+ ---
194
+
195
+ ## Dataflow and Input Propagation
196
+
197
+ ### How Data Flows Between Tasks
198
+
199
+ ```
200
+ TaskA (source) TaskB (target)
201
+ ↓ ↓
202
+ outputSchema: { inputSchema: {
203
+ result: number value: number
204
+ } }
205
+ ↓ ↓
206
+ Dataflow("taskA", "result", "taskB", "value")
207
+
208
+ TaskA.runOutputData.result → TaskB.runInputData.value
209
+ ```
210
+
211
+ ### Key Methods
212
+
213
+ | Method | Purpose |
214
+ | ----------------------------------------- | ---------------------------------------------------------------- |
215
+ | `copyInputFromEdgesToNode(task)` | Pull data from all incoming dataflows into task's `runInputData` |
216
+ | `pushOutputFromNodeToEdges(task, output)` | Push task's output to all outgoing dataflows |
217
+ | `addInputData(task, data)` | Merge data into task's `runInputData` |
218
+
219
+ ### When Input is Copied
220
+
221
+ | Execution Mode | Task Status | Input Copied? |
222
+ | --------------- | ----------- | ------------------------- |
223
+ | `run()` | Any | Yes (always) |
224
+ | `runReactive()` | PENDING | Yes |
225
+ | `runReactive()` | COMPLETED | **No** (output is locked) |
226
+
227
+ ---
228
+
229
+ ## GraphAsTask (Subgraphs)
230
+
231
+ ### What is GraphAsTask?
232
+
233
+ A `GraphAsTask` is a task that contains an internal `TaskGraph` (subgraph). This enables:
234
+
235
+ - Hierarchical workflow composition
236
+ - Encapsulation of complex logic
237
+ - Reusable workflow components
238
+
239
+ ### Execution Flow
240
+
241
+ ```
242
+ GraphAsTask.run(input)
243
+
244
+ GraphAsTaskRunner.executeTask(input)
245
+
246
+ executeTaskChildren(input)
247
+
248
+ subGraph.run(input) # Execute the entire subgraph
249
+
250
+ mergeExecuteOutputsToRunOutput() # Combine results from ending nodes
251
+ ```
252
+
253
+ ### Reactive Execution with Subgraphs
254
+
255
+ ```
256
+ GraphAsTask.runReactive(input)
257
+
258
+ GraphAsTaskRunner.executeTaskReactive(input, output)
259
+
260
+ executeTaskChildrenReactive()
261
+
262
+ subGraph.runReactive(this.task.runInputData) # ← IMPORTANT: Pass parent's input
263
+
264
+ mergeExecuteOutputsToRunOutput()
265
+ ```
266
+
267
+ **Critical:** The parent's `runInputData` is passed to `subGraph.runReactive()` so that root tasks in the subgraph (like InputTask) receive the input values.
268
+
269
+ ### Root Task Input Propagation
270
+
271
+ In `runGraphReactive()`:
272
+
273
+ ```typescript
274
+ const isRootTask = this.graph.getSourceDataflows(task.config.id).length === 0;
275
+
276
+ // For root tasks, pass the input parameter (from parent GraphAsTask)
277
+ const taskInput = isRootTask ? input : {};
278
+
279
+ const taskResult = await task.runReactive(taskInput);
280
+ ```
281
+
282
+ This ensures:
283
+
284
+ 1. Root tasks (no incoming dataflows) receive input from the parent
285
+ 2. Non-root tasks receive input from their upstream dataflows
286
+
287
+ ---
288
+
289
+ ## Key Invariants
290
+
291
+ ### 1. COMPLETED Tasks Are Immutable
292
+
293
+ Once a task's `run()` completes and status becomes `COMPLETED`:
294
+
295
+ - `runOutputData` is **locked** and **cacheable**
296
+ - `runInputData` should not be modified
297
+ - `runReactive()` returns the cached output unchanged
298
+
299
+ ### 2. Only PENDING Tasks Receive Dataflow Updates in Reactive Mode
300
+
301
+ ```typescript
302
+ if (task.status === TaskStatus.PENDING) {
303
+ task.resetInputData();
304
+ this.copyInputFromEdgesToNode(task);
305
+ }
306
+ ```
307
+
308
+ ### 3. Root Tasks Receive Parent Input
309
+
310
+ In subgraphs, root tasks (no incoming dataflows) receive the parent's input:
311
+
312
+ ```typescript
313
+ const taskInput = isRootTask ? input : {};
314
+ task.runReactive(taskInput);
315
+ ```
316
+
317
+ ### 4. executeReactive is Lightweight
318
+
319
+ The `executeReactive()` method should:
320
+
321
+ - Complete quickly (< 1ms ideally)
322
+ - Not perform heavy computation
323
+ - Return UI preview data
324
+
325
+ Heavy computation belongs in `execute()`.
326
+
327
+ ### 5. Reactive Execution Respects Task Order
328
+
329
+ Tasks are executed in topological order (via `reactiveScheduler`), ensuring:
330
+
331
+ - Upstream tasks run before downstream tasks
332
+ - Data is available when needed
333
+
334
+ ---
335
+
336
+ ## Common Pitfalls
337
+
338
+ ### 1. Modifying COMPLETED Task Input
339
+
340
+ **Wrong:**
341
+
342
+ ```typescript
343
+ // Trying to update a COMPLETED task's input
344
+ task.setInput({ newValue: 42 }); // ❌ Violates immutability
345
+ ```
346
+
347
+ **Correct:**
348
+ Only modify input for PENDING tasks, or reset the entire graph first.
349
+
350
+ ### 2. Missing Root Task Input Propagation
351
+
352
+ **Wrong:**
353
+
354
+ ```typescript
355
+ protected async executeTaskChildrenReactive() {
356
+ return this.task.subGraph!.runReactive(); // ❌ No input passed
357
+ }
358
+ ```
359
+
360
+ **Correct:**
361
+
362
+ ```typescript
363
+ protected async executeTaskChildrenReactive() {
364
+ return this.task.subGraph!.runReactive(this.task.runInputData); // ✓
365
+ }
366
+ ```
367
+
368
+ ### 3. Copying Input to COMPLETED Tasks
369
+
370
+ **Wrong:**
371
+
372
+ ```typescript
373
+ // In runGraphReactive
374
+ this.copyInputFromEdgesToNode(task); // ❌ Always copies, even for COMPLETED
375
+ ```
376
+
377
+ **Correct:**
378
+
379
+ ```typescript
380
+ if (task.status === TaskStatus.PENDING) {
381
+ task.resetInputData();
382
+ this.copyInputFromEdgesToNode(task); // ✓ Only for PENDING
383
+ }
384
+ ```
385
+
386
+ ### 4. Heavy Computation in executeReactive
387
+
388
+ **Wrong:**
389
+
390
+ ```typescript
391
+ async executeReactive(input, output) {
392
+ // ❌ Takes 30 seconds
393
+ const result = await this.trainNeuralNetwork(input);
394
+ return { result };
395
+ }
396
+ ```
397
+
398
+ **Correct:**
399
+
400
+ ```typescript
401
+ async executeReactive(input, output) {
402
+ // ✓ Quick preview (< 1ms)
403
+ return { preview: this.quickPreview(input) };
404
+ }
405
+
406
+ async execute(input) {
407
+ // Heavy work belongs here
408
+ const result = await this.trainNeuralNetwork(input);
409
+ return { result };
410
+ }
411
+ ```
412
+
413
+ ---
414
+
415
+ ## Summary
416
+
417
+ | Aspect | `run()` | `runReactive()` |
418
+ | -------------------- | ----------------- | ------------------- |
419
+ | **Purpose** | Full execution | UI previews |
420
+ | **Method called** | `execute()` | `executeReactive()` |
421
+ | **Final status** | COMPLETED | Unchanged |
422
+ | **Output** | Locked/cached | Temporary |
423
+ | **Dataflow updates** | Always | Only PENDING tasks |
424
+ | **Performance** | Can be slow | Should be < 1ms |
425
+ | **User edits** | Before run starts | Before run starts |
426
+
427
+ ### Key Takeaways
428
+
429
+ 1. Users only edit inputs on PENDING tasks
430
+ 2. Once `run()` completes, the task is COMPLETED and immutable
431
+ 3. `runReactive()` propagates lightweight updates through PENDING tasks
432
+ 4. COMPLETED tasks return cached results in reactive mode
433
+ 5. Root tasks in subgraphs receive input from the parent GraphAsTask
@@ -1,7 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
7
- //# sourceMappingURL=TaskJSON.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaskJSON.test.d.ts","sourceRoot":"","sources":["../../src/task/TaskJSON.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}