@cogitator-ai/workflows 0.1.0

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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +97 -0
  3. package/dist/builder.d.ts +39 -0
  4. package/dist/builder.d.ts.map +1 -0
  5. package/dist/builder.js +224 -0
  6. package/dist/builder.js.map +1 -0
  7. package/dist/checkpoint.d.ts +33 -0
  8. package/dist/checkpoint.d.ts.map +1 -0
  9. package/dist/checkpoint.js +108 -0
  10. package/dist/checkpoint.js.map +1 -0
  11. package/dist/executor.d.ts +24 -0
  12. package/dist/executor.d.ts.map +1 -0
  13. package/dist/executor.js +207 -0
  14. package/dist/executor.js.map +1 -0
  15. package/dist/human/approval-store.d.ts +95 -0
  16. package/dist/human/approval-store.d.ts.map +1 -0
  17. package/dist/human/approval-store.js +377 -0
  18. package/dist/human/approval-store.js.map +1 -0
  19. package/dist/human/human-node.d.ts +104 -0
  20. package/dist/human/human-node.d.ts.map +1 -0
  21. package/dist/human/human-node.js +342 -0
  22. package/dist/human/human-node.js.map +1 -0
  23. package/dist/human/index.d.ts +17 -0
  24. package/dist/human/index.d.ts.map +1 -0
  25. package/dist/human/index.js +17 -0
  26. package/dist/human/index.js.map +1 -0
  27. package/dist/human/notifiers.d.ts +85 -0
  28. package/dist/human/notifiers.d.ts.map +1 -0
  29. package/dist/human/notifiers.js +289 -0
  30. package/dist/human/notifiers.js.map +1 -0
  31. package/dist/index.d.ts +32 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +19 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/manager/index.d.ts +19 -0
  36. package/dist/manager/index.d.ts.map +1 -0
  37. package/dist/manager/index.js +17 -0
  38. package/dist/manager/index.js.map +1 -0
  39. package/dist/manager/run-store.d.ts +78 -0
  40. package/dist/manager/run-store.d.ts.map +1 -0
  41. package/dist/manager/run-store.js +390 -0
  42. package/dist/manager/run-store.js.map +1 -0
  43. package/dist/manager/scheduler.d.ts +159 -0
  44. package/dist/manager/scheduler.d.ts.map +1 -0
  45. package/dist/manager/scheduler.js +355 -0
  46. package/dist/manager/scheduler.js.map +1 -0
  47. package/dist/manager/workflow-manager.d.ts +114 -0
  48. package/dist/manager/workflow-manager.d.ts.map +1 -0
  49. package/dist/manager/workflow-manager.js +460 -0
  50. package/dist/manager/workflow-manager.js.map +1 -0
  51. package/dist/nodes/agent.d.ts +24 -0
  52. package/dist/nodes/agent.d.ts.map +1 -0
  53. package/dist/nodes/agent.js +37 -0
  54. package/dist/nodes/agent.js.map +1 -0
  55. package/dist/nodes/base.d.ts +12 -0
  56. package/dist/nodes/base.d.ts.map +1 -0
  57. package/dist/nodes/base.js +5 -0
  58. package/dist/nodes/base.js.map +1 -0
  59. package/dist/nodes/function.d.ts +27 -0
  60. package/dist/nodes/function.d.ts.map +1 -0
  61. package/dist/nodes/function.js +29 -0
  62. package/dist/nodes/function.js.map +1 -0
  63. package/dist/nodes/index.d.ts +8 -0
  64. package/dist/nodes/index.d.ts.map +1 -0
  65. package/dist/nodes/index.js +8 -0
  66. package/dist/nodes/index.js.map +1 -0
  67. package/dist/nodes/tool.d.ts +19 -0
  68. package/dist/nodes/tool.d.ts.map +1 -0
  69. package/dist/nodes/tool.js +26 -0
  70. package/dist/nodes/tool.js.map +1 -0
  71. package/dist/observability/exporters.d.ts +93 -0
  72. package/dist/observability/exporters.d.ts.map +1 -0
  73. package/dist/observability/exporters.js +330 -0
  74. package/dist/observability/exporters.js.map +1 -0
  75. package/dist/observability/index.d.ts +17 -0
  76. package/dist/observability/index.d.ts.map +1 -0
  77. package/dist/observability/index.js +17 -0
  78. package/dist/observability/index.js.map +1 -0
  79. package/dist/observability/metrics.d.ts +114 -0
  80. package/dist/observability/metrics.d.ts.map +1 -0
  81. package/dist/observability/metrics.js +435 -0
  82. package/dist/observability/metrics.js.map +1 -0
  83. package/dist/observability/span-attributes.d.ts +95 -0
  84. package/dist/observability/span-attributes.d.ts.map +1 -0
  85. package/dist/observability/span-attributes.js +142 -0
  86. package/dist/observability/span-attributes.js.map +1 -0
  87. package/dist/observability/tracer.d.ts +110 -0
  88. package/dist/observability/tracer.d.ts.map +1 -0
  89. package/dist/observability/tracer.js +409 -0
  90. package/dist/observability/tracer.js.map +1 -0
  91. package/dist/patterns/index.d.ts +15 -0
  92. package/dist/patterns/index.d.ts.map +1 -0
  93. package/dist/patterns/index.js +15 -0
  94. package/dist/patterns/index.js.map +1 -0
  95. package/dist/patterns/map-reduce.d.ts +223 -0
  96. package/dist/patterns/map-reduce.d.ts.map +1 -0
  97. package/dist/patterns/map-reduce.js +378 -0
  98. package/dist/patterns/map-reduce.js.map +1 -0
  99. package/dist/saga/circuit-breaker.d.ts +153 -0
  100. package/dist/saga/circuit-breaker.d.ts.map +1 -0
  101. package/dist/saga/circuit-breaker.js +306 -0
  102. package/dist/saga/circuit-breaker.js.map +1 -0
  103. package/dist/saga/compensation.d.ts +134 -0
  104. package/dist/saga/compensation.d.ts.map +1 -0
  105. package/dist/saga/compensation.js +240 -0
  106. package/dist/saga/compensation.js.map +1 -0
  107. package/dist/saga/dead-letter.d.ts +113 -0
  108. package/dist/saga/dead-letter.d.ts.map +1 -0
  109. package/dist/saga/dead-letter.js +307 -0
  110. package/dist/saga/dead-letter.js.map +1 -0
  111. package/dist/saga/idempotency.d.ts +95 -0
  112. package/dist/saga/idempotency.d.ts.map +1 -0
  113. package/dist/saga/idempotency.js +266 -0
  114. package/dist/saga/idempotency.js.map +1 -0
  115. package/dist/saga/index.d.ts +16 -0
  116. package/dist/saga/index.d.ts.map +1 -0
  117. package/dist/saga/index.js +16 -0
  118. package/dist/saga/index.js.map +1 -0
  119. package/dist/saga/retry.d.ts +59 -0
  120. package/dist/saga/retry.d.ts.map +1 -0
  121. package/dist/saga/retry.js +222 -0
  122. package/dist/saga/retry.js.map +1 -0
  123. package/dist/scheduler.d.ts +37 -0
  124. package/dist/scheduler.d.ts.map +1 -0
  125. package/dist/scheduler.js +151 -0
  126. package/dist/scheduler.js.map +1 -0
  127. package/dist/subworkflows/index.d.ts +16 -0
  128. package/dist/subworkflows/index.d.ts.map +1 -0
  129. package/dist/subworkflows/index.js +16 -0
  130. package/dist/subworkflows/index.js.map +1 -0
  131. package/dist/subworkflows/parallel-subworkflows.d.ts +139 -0
  132. package/dist/subworkflows/parallel-subworkflows.d.ts.map +1 -0
  133. package/dist/subworkflows/parallel-subworkflows.js +270 -0
  134. package/dist/subworkflows/parallel-subworkflows.js.map +1 -0
  135. package/dist/subworkflows/subworkflow-node.d.ts +136 -0
  136. package/dist/subworkflows/subworkflow-node.d.ts.map +1 -0
  137. package/dist/subworkflows/subworkflow-node.js +164 -0
  138. package/dist/subworkflows/subworkflow-node.js.map +1 -0
  139. package/dist/timers/cron-parser.d.ts +110 -0
  140. package/dist/timers/cron-parser.d.ts.map +1 -0
  141. package/dist/timers/cron-parser.js +412 -0
  142. package/dist/timers/cron-parser.js.map +1 -0
  143. package/dist/timers/index.d.ts +18 -0
  144. package/dist/timers/index.d.ts.map +1 -0
  145. package/dist/timers/index.js +18 -0
  146. package/dist/timers/index.js.map +1 -0
  147. package/dist/timers/timer-manager.d.ts +219 -0
  148. package/dist/timers/timer-manager.d.ts.map +1 -0
  149. package/dist/timers/timer-manager.js +351 -0
  150. package/dist/timers/timer-manager.js.map +1 -0
  151. package/dist/timers/timer-node.d.ts +144 -0
  152. package/dist/timers/timer-node.d.ts.map +1 -0
  153. package/dist/timers/timer-node.js +246 -0
  154. package/dist/timers/timer-node.js.map +1 -0
  155. package/dist/timers/timer-store.d.ts +90 -0
  156. package/dist/timers/timer-store.d.ts.map +1 -0
  157. package/dist/timers/timer-store.js +357 -0
  158. package/dist/timers/timer-store.js.map +1 -0
  159. package/dist/triggers/cron-trigger.d.ts +102 -0
  160. package/dist/triggers/cron-trigger.d.ts.map +1 -0
  161. package/dist/triggers/cron-trigger.js +309 -0
  162. package/dist/triggers/cron-trigger.js.map +1 -0
  163. package/dist/triggers/index.d.ts +14 -0
  164. package/dist/triggers/index.d.ts.map +1 -0
  165. package/dist/triggers/index.js +10 -0
  166. package/dist/triggers/index.js.map +1 -0
  167. package/dist/triggers/rate-limiter.d.ts +130 -0
  168. package/dist/triggers/rate-limiter.d.ts.map +1 -0
  169. package/dist/triggers/rate-limiter.js +294 -0
  170. package/dist/triggers/rate-limiter.js.map +1 -0
  171. package/dist/triggers/trigger-manager.d.ts +166 -0
  172. package/dist/triggers/trigger-manager.d.ts.map +1 -0
  173. package/dist/triggers/trigger-manager.js +436 -0
  174. package/dist/triggers/trigger-manager.js.map +1 -0
  175. package/dist/triggers/webhook-trigger.d.ts +150 -0
  176. package/dist/triggers/webhook-trigger.d.ts.map +1 -0
  177. package/dist/triggers/webhook-trigger.js +452 -0
  178. package/dist/triggers/webhook-trigger.js.map +1 -0
  179. package/package.json +44 -0
@@ -0,0 +1,460 @@
1
+ /**
2
+ * Workflow Manager
3
+ *
4
+ * Features:
5
+ * - Schedule workflows for later execution
6
+ * - Execute workflows immediately
7
+ * - Cancel, pause, resume, retry runs
8
+ * - Replay from specific nodes
9
+ * - Query run status and history
10
+ * - Cleanup old runs
11
+ */
12
+ import { nanoid } from 'nanoid';
13
+ import { WorkflowExecutor } from '../executor';
14
+ import { createJobScheduler } from './scheduler';
15
+ import { InMemoryRunStore } from './run-store';
16
+ /**
17
+ * Workflow manager implementation
18
+ */
19
+ export class DefaultWorkflowManager {
20
+ cogitator;
21
+ runStore;
22
+ checkpointStore;
23
+ scheduler;
24
+ executor;
25
+ workflows = new Map();
26
+ activeRuns = new Map();
27
+ stateChangeCallbacks = new Set();
28
+ constructor(config) {
29
+ this.cogitator = config.cogitator;
30
+ this.runStore = config.runStore ?? new InMemoryRunStore();
31
+ this.checkpointStore = config.checkpointStore;
32
+ this.executor = new WorkflowExecutor(this.cogitator, this.checkpointStore);
33
+ this.scheduler = createJobScheduler({
34
+ runStore: this.runStore,
35
+ maxConcurrency: config.maxConcurrency,
36
+ onRunReady: (runId) => this.handleRunReady(runId),
37
+ });
38
+ if (config.onRunStateChange) {
39
+ this.stateChangeCallbacks.add(config.onRunStateChange);
40
+ }
41
+ }
42
+ /**
43
+ * Start the manager (begins processing scheduled runs)
44
+ */
45
+ start() {
46
+ this.scheduler.start();
47
+ }
48
+ /**
49
+ * Stop the manager
50
+ */
51
+ stop() {
52
+ this.scheduler.stop();
53
+ }
54
+ /**
55
+ * Register a workflow for scheduling
56
+ */
57
+ registerWorkflow(workflow) {
58
+ this.workflows.set(workflow.name, workflow);
59
+ }
60
+ /**
61
+ * Schedule a workflow for later execution
62
+ */
63
+ async schedule(workflow, options) {
64
+ this.registerWorkflow(workflow);
65
+ return this.scheduler.scheduleRun(workflow, options);
66
+ }
67
+ /**
68
+ * Execute a workflow immediately
69
+ */
70
+ async execute(workflow, input, options) {
71
+ this.registerWorkflow(workflow);
72
+ const runId = nanoid();
73
+ const now = Date.now();
74
+ const run = {
75
+ id: runId,
76
+ workflowName: workflow.name,
77
+ status: 'running',
78
+ state: input ?? {},
79
+ input,
80
+ currentNodes: [],
81
+ completedNodes: [],
82
+ failedNodes: [],
83
+ startedAt: now,
84
+ priority: options?.priority ?? 0,
85
+ tags: options?.tags ?? [],
86
+ triggerId: options?.triggerId,
87
+ parentRunId: options?.parentRunId,
88
+ traceId: options?.parentTraceContext?.traceId,
89
+ metadata: options?.metadata,
90
+ };
91
+ await this.runStore.save(run);
92
+ this.notifyStateChange(run);
93
+ const abortController = new AbortController();
94
+ this.activeRuns.set(runId, { abort: () => abortController.abort() });
95
+ this.scheduler.runStarted(runId);
96
+ try {
97
+ const result = await this.executor.execute(workflow, input, {
98
+ ...options,
99
+ onNodeStart: (node) => {
100
+ this.updateRunNodes(runId, node, 'start');
101
+ options?.onNodeStart?.(node);
102
+ },
103
+ onNodeComplete: (node, result, duration) => {
104
+ this.updateRunNodes(runId, node, 'complete');
105
+ options?.onNodeComplete?.(node, result, duration);
106
+ },
107
+ onNodeError: (node, error) => {
108
+ this.updateRunNodes(runId, node, 'error');
109
+ options?.onNodeError?.(node, error);
110
+ },
111
+ });
112
+ if (result.error) {
113
+ await this.runStore.update(runId, {
114
+ status: 'failed',
115
+ state: result.state,
116
+ completedAt: Date.now(),
117
+ checkpointId: result.checkpointId,
118
+ error: {
119
+ name: result.error.name,
120
+ message: result.error.message,
121
+ stack: result.error.stack,
122
+ },
123
+ });
124
+ const updatedRun = await this.runStore.get(runId);
125
+ if (updatedRun)
126
+ this.notifyStateChange(updatedRun);
127
+ return result;
128
+ }
129
+ await this.runStore.update(runId, {
130
+ status: 'completed',
131
+ state: result.state,
132
+ output: result.state,
133
+ completedAt: Date.now(),
134
+ checkpointId: result.checkpointId,
135
+ });
136
+ const updatedRun = await this.runStore.get(runId);
137
+ if (updatedRun)
138
+ this.notifyStateChange(updatedRun);
139
+ return result;
140
+ }
141
+ catch (error) {
142
+ const err = error instanceof Error ? error : new Error(String(error));
143
+ await this.runStore.update(runId, {
144
+ status: 'failed',
145
+ completedAt: Date.now(),
146
+ error: {
147
+ name: err.name,
148
+ message: err.message,
149
+ stack: err.stack,
150
+ },
151
+ });
152
+ const updatedRun = await this.runStore.get(runId);
153
+ if (updatedRun)
154
+ this.notifyStateChange(updatedRun);
155
+ throw error;
156
+ }
157
+ finally {
158
+ this.activeRuns.delete(runId);
159
+ this.scheduler.runCompleted(runId);
160
+ }
161
+ }
162
+ /**
163
+ * Cancel a run
164
+ */
165
+ async cancel(runId, reason) {
166
+ const run = await this.runStore.get(runId);
167
+ if (!run)
168
+ throw new Error(`Run not found: ${runId}`);
169
+ if (run.status === 'scheduled' || run.status === 'pending') {
170
+ await this.scheduler.cancelRun(runId, reason);
171
+ const updatedRun = await this.runStore.get(runId);
172
+ if (updatedRun)
173
+ this.notifyStateChange(updatedRun);
174
+ return;
175
+ }
176
+ if (run.status === 'running' || run.status === 'paused') {
177
+ const active = this.activeRuns.get(runId);
178
+ if (active) {
179
+ active.abort();
180
+ }
181
+ await this.runStore.update(runId, {
182
+ status: 'cancelled',
183
+ completedAt: Date.now(),
184
+ error: reason ? { name: 'CancelError', message: reason } : undefined,
185
+ });
186
+ const updatedRun = await this.runStore.get(runId);
187
+ if (updatedRun)
188
+ this.notifyStateChange(updatedRun);
189
+ }
190
+ }
191
+ /**
192
+ * Get run status
193
+ */
194
+ async getStatus(runId) {
195
+ return this.runStore.get(runId);
196
+ }
197
+ /**
198
+ * List runs with filters
199
+ */
200
+ async listRuns(filters) {
201
+ return this.runStore.list(filters);
202
+ }
203
+ /**
204
+ * Get run statistics
205
+ */
206
+ async getStats(workflowName) {
207
+ return this.runStore.getStats(workflowName);
208
+ }
209
+ /**
210
+ * Pause a running workflow
211
+ */
212
+ async pause(runId) {
213
+ const run = await this.runStore.get(runId);
214
+ if (!run)
215
+ throw new Error(`Run not found: ${runId}`);
216
+ if (run.status !== 'running') {
217
+ throw new Error(`Cannot pause run in status: ${run.status}`);
218
+ }
219
+ await this.runStore.update(runId, {
220
+ status: 'paused',
221
+ pausedAt: Date.now(),
222
+ });
223
+ const updatedRun = await this.runStore.get(runId);
224
+ if (updatedRun)
225
+ this.notifyStateChange(updatedRun);
226
+ }
227
+ /**
228
+ * Resume a paused workflow
229
+ */
230
+ async resume(runId) {
231
+ const run = await this.runStore.get(runId);
232
+ if (!run)
233
+ throw new Error(`Run not found: ${runId}`);
234
+ if (run.status !== 'paused') {
235
+ throw new Error(`Cannot resume run in status: ${run.status}`);
236
+ }
237
+ await this.runStore.update(runId, {
238
+ status: 'running',
239
+ pausedAt: undefined,
240
+ });
241
+ const updatedRun = await this.runStore.get(runId);
242
+ if (updatedRun)
243
+ this.notifyStateChange(updatedRun);
244
+ }
245
+ /**
246
+ * Retry a failed run
247
+ */
248
+ async retry(runId) {
249
+ const run = await this.runStore.get(runId);
250
+ if (!run)
251
+ throw new Error(`Run not found: ${runId}`);
252
+ if (run.status !== 'failed' && run.status !== 'cancelled') {
253
+ throw new Error(`Cannot retry run in status: ${run.status}`);
254
+ }
255
+ const workflow = this.workflows.get(run.workflowName);
256
+ if (!workflow) {
257
+ throw new Error(`Workflow not found: ${run.workflowName}`);
258
+ }
259
+ const newRunId = nanoid();
260
+ const now = Date.now();
261
+ const newRun = {
262
+ id: newRunId,
263
+ workflowName: run.workflowName,
264
+ status: 'pending',
265
+ state: (run.input ?? {}),
266
+ input: run.input,
267
+ currentNodes: [],
268
+ completedNodes: [],
269
+ failedNodes: [],
270
+ priority: run.priority,
271
+ tags: [...run.tags, 'retry'],
272
+ triggerId: run.triggerId,
273
+ parentRunId: runId,
274
+ metadata: {
275
+ ...run.metadata,
276
+ retriedFrom: runId,
277
+ retriedAt: now,
278
+ },
279
+ };
280
+ await this.runStore.save(newRun);
281
+ await this.scheduler.scheduleRun(workflow, {
282
+ priority: run.priority,
283
+ tags: newRun.tags,
284
+ });
285
+ return newRunId;
286
+ }
287
+ /**
288
+ * Replay a workflow from a specific node
289
+ */
290
+ async replay(workflow, runId, fromNode) {
291
+ const run = await this.runStore.get(runId);
292
+ if (!run)
293
+ throw new Error(`Run not found: ${runId}`);
294
+ if (!run.checkpointId) {
295
+ throw new Error('Run has no checkpoint to replay from');
296
+ }
297
+ const newRunId = nanoid();
298
+ const now = Date.now();
299
+ const newRun = {
300
+ id: newRunId,
301
+ workflowName: workflow.name,
302
+ status: 'running',
303
+ state: run.state,
304
+ input: run.input,
305
+ currentNodes: [],
306
+ completedNodes: run.completedNodes.filter((n) => {
307
+ return workflow.nodes.has(n) && n !== fromNode;
308
+ }),
309
+ failedNodes: [],
310
+ startedAt: now,
311
+ priority: run.priority,
312
+ tags: [...run.tags, 'replay'],
313
+ parentRunId: runId,
314
+ metadata: {
315
+ ...run.metadata,
316
+ replayedFrom: runId,
317
+ replayFromNode: fromNode,
318
+ replayedAt: now,
319
+ },
320
+ };
321
+ await this.runStore.save(newRun);
322
+ this.notifyStateChange(newRun);
323
+ const result = await this.executor.execute(workflow, run.state, {
324
+ checkpoint: !!this.checkpointStore,
325
+ });
326
+ await this.runStore.update(newRunId, {
327
+ status: 'completed',
328
+ state: result.state,
329
+ output: result.state,
330
+ completedAt: Date.now(),
331
+ checkpointId: result.checkpointId,
332
+ });
333
+ const updatedRun = await this.runStore.get(newRunId);
334
+ if (updatedRun)
335
+ this.notifyStateChange(updatedRun);
336
+ return result;
337
+ }
338
+ /**
339
+ * Get count of active runs
340
+ */
341
+ async getActiveCount() {
342
+ return this.runStore.count({
343
+ status: ['running', 'paused', 'waiting'],
344
+ });
345
+ }
346
+ /**
347
+ * Subscribe to run state changes
348
+ */
349
+ onRunStateChange(callback) {
350
+ this.stateChangeCallbacks.add(callback);
351
+ return () => {
352
+ this.stateChangeCallbacks.delete(callback);
353
+ };
354
+ }
355
+ /**
356
+ * Cleanup old runs
357
+ */
358
+ async cleanup(olderThan) {
359
+ return this.runStore.cleanup(olderThan);
360
+ }
361
+ /**
362
+ * Dispose the manager
363
+ */
364
+ dispose() {
365
+ this.stop();
366
+ this.activeRuns.clear();
367
+ this.workflows.clear();
368
+ this.stateChangeCallbacks.clear();
369
+ this.scheduler.dispose();
370
+ }
371
+ async handleRunReady(runId) {
372
+ const run = await this.runStore.get(runId);
373
+ if (!run)
374
+ return;
375
+ const workflow = this.workflows.get(run.workflowName);
376
+ if (!workflow) {
377
+ await this.runStore.update(runId, {
378
+ status: 'failed',
379
+ completedAt: Date.now(),
380
+ error: {
381
+ name: 'WorkflowNotFoundError',
382
+ message: `Workflow not found: ${run.workflowName}`,
383
+ },
384
+ });
385
+ return;
386
+ }
387
+ await this.runStore.update(runId, {
388
+ status: 'running',
389
+ startedAt: Date.now(),
390
+ });
391
+ this.scheduler.runStarted(runId);
392
+ const active = { abort: () => { } };
393
+ this.activeRuns.set(runId, active);
394
+ try {
395
+ const result = await this.executor.execute(workflow, run.input);
396
+ await this.runStore.update(runId, {
397
+ status: 'completed',
398
+ state: result.state,
399
+ output: result.state,
400
+ completedAt: Date.now(),
401
+ checkpointId: result.checkpointId,
402
+ });
403
+ }
404
+ catch (error) {
405
+ const err = error instanceof Error ? error : new Error(String(error));
406
+ await this.runStore.update(runId, {
407
+ status: 'failed',
408
+ completedAt: Date.now(),
409
+ error: {
410
+ name: err.name,
411
+ message: err.message,
412
+ stack: err.stack,
413
+ },
414
+ });
415
+ }
416
+ finally {
417
+ this.activeRuns.delete(runId);
418
+ this.scheduler.runCompleted(runId);
419
+ const updatedRun = await this.runStore.get(runId);
420
+ if (updatedRun)
421
+ this.notifyStateChange(updatedRun);
422
+ }
423
+ }
424
+ async updateRunNodes(runId, nodeId, action) {
425
+ const run = await this.runStore.get(runId);
426
+ if (!run)
427
+ return;
428
+ const updates = {};
429
+ switch (action) {
430
+ case 'start':
431
+ updates.currentNodes = [...run.currentNodes, nodeId];
432
+ break;
433
+ case 'complete':
434
+ updates.currentNodes = run.currentNodes.filter((n) => n !== nodeId);
435
+ updates.completedNodes = [...run.completedNodes, nodeId];
436
+ break;
437
+ case 'error':
438
+ updates.currentNodes = run.currentNodes.filter((n) => n !== nodeId);
439
+ updates.failedNodes = [...run.failedNodes, nodeId];
440
+ break;
441
+ }
442
+ await this.runStore.update(runId, updates);
443
+ }
444
+ notifyStateChange(run) {
445
+ for (const callback of this.stateChangeCallbacks) {
446
+ try {
447
+ callback(run);
448
+ }
449
+ catch {
450
+ }
451
+ }
452
+ }
453
+ }
454
+ /**
455
+ * Create a workflow manager
456
+ */
457
+ export function createWorkflowManager(config) {
458
+ return new DefaultWorkflowManager(config);
459
+ }
460
+ //# sourceMappingURL=workflow-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-manager.js","sourceRoot":"","sources":["../../src/manager/workflow-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * AgentNode - Run a Cogitator agent as a workflow node
3
+ */
4
+ import type { WorkflowNode, WorkflowState } from '@cogitator-ai/types';
5
+ import type { Agent, RunOptions, RunResult } from '@cogitator-ai/core';
6
+ export interface AgentNodeOptions<S = WorkflowState> {
7
+ /**
8
+ * Map agent result to state updates
9
+ */
10
+ stateMapper?: (result: RunResult) => Partial<S>;
11
+ /**
12
+ * Map current state to agent input
13
+ */
14
+ inputMapper?: (state: S, input?: unknown) => string;
15
+ /**
16
+ * Additional run options for the agent
17
+ */
18
+ runOptions?: Partial<RunOptions>;
19
+ }
20
+ /**
21
+ * Create a workflow node that runs a Cogitator agent
22
+ */
23
+ export declare function agentNode<S extends WorkflowState = WorkflowState>(agent: Agent, options?: AgentNodeOptions<S>): WorkflowNode<S>;
24
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/nodes/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAc,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGvE,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,aAAa;IACjD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IAEpD;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,EAC/D,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC5B,YAAY,CAAC,CAAC,CAAC,CA8BjB"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * AgentNode - Run a Cogitator agent as a workflow node
3
+ */
4
+ /**
5
+ * Create a workflow node that runs a Cogitator agent
6
+ */
7
+ export function agentNode(agent, options) {
8
+ return {
9
+ name: agent.name,
10
+ fn: async (ctx) => {
11
+ const extCtx = ctx;
12
+ let input;
13
+ if (options?.inputMapper) {
14
+ input = options.inputMapper(ctx.state, ctx.input);
15
+ }
16
+ else if (typeof ctx.input === 'string') {
17
+ input = ctx.input;
18
+ }
19
+ else if (ctx.input !== undefined) {
20
+ input = JSON.stringify(ctx.input);
21
+ }
22
+ else {
23
+ input = JSON.stringify(ctx.state);
24
+ }
25
+ const result = await extCtx.cogitator.run(agent, {
26
+ input,
27
+ ...options?.runOptions,
28
+ });
29
+ const stateUpdate = options?.stateMapper?.(result);
30
+ return {
31
+ state: stateUpdate,
32
+ output: result.output,
33
+ };
34
+ },
35
+ };
36
+ }
37
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/nodes/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuBH;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,KAAY,EACZ,OAA6B;IAE7B,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,EAAE,EAAE,KAAK,EAAE,GAAG,EAA0B,EAAE;YACxC,MAAM,MAAM,GAAG,GAA6B,CAAC;YAE7C,IAAI,KAAa,CAAC;YAClB,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;gBACzB,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACzC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YACpB,CAAC;iBAAM,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACnC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE;gBAC/C,KAAK;gBACL,GAAG,OAAO,EAAE,UAAU;aACvB,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;YAEnD,OAAO;gBACL,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Base node interfaces and types
3
+ */
4
+ import type { WorkflowNode, WorkflowState, NodeConfig, NodeContext, NodeResult } from '@cogitator-ai/types';
5
+ export type { WorkflowNode, NodeConfig, NodeContext, NodeResult };
6
+ /**
7
+ * Extended context with Cogitator for agent nodes
8
+ */
9
+ export interface ExtendedNodeContext<S = WorkflowState> extends NodeContext<S> {
10
+ cogitator: import('@cogitator-ai/core').Cogitator;
11
+ }
12
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/nodes/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACX,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,aAAa,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC5E,SAAS,EAAE,OAAO,oBAAoB,EAAE,SAAS,CAAC;CACnD"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Base node interfaces and types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/nodes/base.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * FunctionNode - Run a custom function as a workflow node
3
+ */
4
+ import type { WorkflowNode, WorkflowState, NodeResult, NodeContext } from '@cogitator-ai/types';
5
+ /**
6
+ * Simple function that takes state and returns output
7
+ */
8
+ export type SimpleNodeFn<S, O = unknown> = (state: S, input?: unknown) => Promise<O>;
9
+ /**
10
+ * Full function that receives context and returns result
11
+ */
12
+ export type FullNodeFn<S> = (ctx: NodeContext<S>) => Promise<NodeResult<S>>;
13
+ export interface FunctionNodeOptions<S = WorkflowState> {
14
+ /**
15
+ * Map function output to state updates
16
+ */
17
+ stateMapper?: (output: unknown) => Partial<S>;
18
+ }
19
+ /**
20
+ * Create a workflow node from a simple async function
21
+ */
22
+ export declare function functionNode<S extends WorkflowState = WorkflowState, O = unknown>(name: string, fn: SimpleNodeFn<S, O>, options?: FunctionNodeOptions<S>): WorkflowNode<S>;
23
+ /**
24
+ * Create a workflow node from a full node function
25
+ */
26
+ export declare function customNode<S extends WorkflowState = WorkflowState>(name: string, fn: FullNodeFn<S>): WorkflowNode<S>;
27
+ //# sourceMappingURL=function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../src/nodes/function.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAErF;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5E,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,aAAa;IACpD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,EAAE,CAAC,GAAG,OAAO,EAC/E,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,YAAY,CAAC,CAAC,CAAC,CAajB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,EAChE,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAChB,YAAY,CAAC,CAAC,CAAC,CAKjB"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * FunctionNode - Run a custom function as a workflow node
3
+ */
4
+ /**
5
+ * Create a workflow node from a simple async function
6
+ */
7
+ export function functionNode(name, fn, options) {
8
+ return {
9
+ name,
10
+ fn: async (ctx) => {
11
+ const output = await fn(ctx.state, ctx.input);
12
+ const stateUpdate = options?.stateMapper?.(output);
13
+ return {
14
+ state: stateUpdate,
15
+ output,
16
+ };
17
+ },
18
+ };
19
+ }
20
+ /**
21
+ * Create a workflow node from a full node function
22
+ */
23
+ export function customNode(name, fn) {
24
+ return {
25
+ name,
26
+ fn,
27
+ };
28
+ }
29
+ //# sourceMappingURL=function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/nodes/function.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0BH;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,EAAsB,EACtB,OAAgC;IAEhC,OAAO;QACL,IAAI;QACJ,EAAE,EAAE,KAAK,EAAE,GAAG,EAA0B,EAAE;YACxC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;YAEnD,OAAO;gBACL,KAAK,EAAE,WAAW;gBAClB,MAAM;aACP,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,EAAiB;IAEjB,OAAO;QACL,IAAI;QACJ,EAAE;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Pre-built workflow nodes
3
+ */
4
+ export * from './base';
5
+ export * from './agent';
6
+ export * from './tool';
7
+ export * from './function';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nodes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Pre-built workflow nodes
3
+ */
4
+ export * from './base';
5
+ export * from './agent';
6
+ export * from './tool';
7
+ export * from './function';
8
+ //# sourceMappingURL=index.js.map