@cogitator-ai/workflows 0.8.0 → 0.10.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 (95) hide show
  1. package/README.md +106 -9
  2. package/dist/builder.d.ts +2 -2
  3. package/dist/builder.d.ts.map +1 -1
  4. package/dist/builder.js.map +1 -1
  5. package/dist/checkpoint-stores.d.ts.map +1 -1
  6. package/dist/checkpoint-stores.js +4 -5
  7. package/dist/checkpoint-stores.js.map +1 -1
  8. package/dist/executor.d.ts +8 -8
  9. package/dist/executor.d.ts.map +1 -1
  10. package/dist/executor.js +83 -8
  11. package/dist/executor.js.map +1 -1
  12. package/dist/human/approval-outcomes.d.ts +26 -0
  13. package/dist/human/approval-outcomes.d.ts.map +1 -0
  14. package/dist/human/approval-outcomes.js +61 -0
  15. package/dist/human/approval-outcomes.js.map +1 -0
  16. package/dist/human/approval-store.d.ts +12 -0
  17. package/dist/human/approval-store.d.ts.map +1 -1
  18. package/dist/human/approval-store.js +52 -9
  19. package/dist/human/approval-store.js.map +1 -1
  20. package/dist/human/durable-approval-stores.d.ts +118 -0
  21. package/dist/human/durable-approval-stores.d.ts.map +1 -0
  22. package/dist/human/durable-approval-stores.js +383 -0
  23. package/dist/human/durable-approval-stores.js.map +1 -0
  24. package/dist/human/human-node.d.ts +16 -8
  25. package/dist/human/human-node.d.ts.map +1 -1
  26. package/dist/human/human-node.js +48 -26
  27. package/dist/human/human-node.js.map +1 -1
  28. package/dist/human/index.d.ts +2 -1
  29. package/dist/human/index.d.ts.map +1 -1
  30. package/dist/human/index.js +1 -0
  31. package/dist/human/index.js.map +1 -1
  32. package/dist/index.d.ts +7 -3
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +4 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/manager/durable-run-stores.d.ts +88 -0
  37. package/dist/manager/durable-run-stores.d.ts.map +1 -0
  38. package/dist/manager/durable-run-stores.js +492 -0
  39. package/dist/manager/durable-run-stores.js.map +1 -0
  40. package/dist/manager/run-store.d.ts +1 -0
  41. package/dist/manager/run-store.d.ts.map +1 -1
  42. package/dist/manager/run-store.js +21 -10
  43. package/dist/manager/run-store.js.map +1 -1
  44. package/dist/manager/workflow-manager.d.ts +59 -8
  45. package/dist/manager/workflow-manager.d.ts.map +1 -1
  46. package/dist/manager/workflow-manager.js +272 -192
  47. package/dist/manager/workflow-manager.js.map +1 -1
  48. package/dist/nodes/adapters.d.ts +3 -2
  49. package/dist/nodes/adapters.d.ts.map +1 -1
  50. package/dist/nodes/adapters.js +15 -3
  51. package/dist/nodes/adapters.js.map +1 -1
  52. package/dist/nodes/base.d.ts +4 -1
  53. package/dist/nodes/base.d.ts.map +1 -1
  54. package/dist/observability/exporters.js +1 -1
  55. package/dist/observability/exporters.js.map +1 -1
  56. package/dist/observability/metrics.d.ts +2 -0
  57. package/dist/observability/metrics.d.ts.map +1 -1
  58. package/dist/observability/metrics.js +4 -0
  59. package/dist/observability/metrics.js.map +1 -1
  60. package/dist/observability/tracer.d.ts +1 -0
  61. package/dist/observability/tracer.d.ts.map +1 -1
  62. package/dist/observability/tracer.js +2 -1
  63. package/dist/observability/tracer.js.map +1 -1
  64. package/dist/postgres-schema.d.ts +18 -0
  65. package/dist/postgres-schema.d.ts.map +1 -0
  66. package/dist/postgres-schema.js +35 -0
  67. package/dist/postgres-schema.js.map +1 -0
  68. package/dist/saga/compensation.d.ts +8 -1
  69. package/dist/saga/compensation.d.ts.map +1 -1
  70. package/dist/saga/compensation.js +6 -3
  71. package/dist/saga/compensation.js.map +1 -1
  72. package/dist/saga/index.d.ts +1 -1
  73. package/dist/saga/index.d.ts.map +1 -1
  74. package/dist/saga/index.js.map +1 -1
  75. package/dist/subworkflows/parallel-subworkflows.d.ts +15 -11
  76. package/dist/subworkflows/parallel-subworkflows.d.ts.map +1 -1
  77. package/dist/subworkflows/parallel-subworkflows.js +21 -31
  78. package/dist/subworkflows/parallel-subworkflows.js.map +1 -1
  79. package/dist/timers/durable-timer-stores.d.ts +174 -0
  80. package/dist/timers/durable-timer-stores.d.ts.map +1 -0
  81. package/dist/timers/durable-timer-stores.js +501 -0
  82. package/dist/timers/durable-timer-stores.js.map +1 -0
  83. package/dist/timers/timer-manager.d.ts +28 -1
  84. package/dist/timers/timer-manager.d.ts.map +1 -1
  85. package/dist/timers/timer-manager.js +87 -3
  86. package/dist/timers/timer-manager.js.map +1 -1
  87. package/dist/timers/timer-node.d.ts +2 -0
  88. package/dist/timers/timer-node.d.ts.map +1 -1
  89. package/dist/timers/timer-node.js +6 -0
  90. package/dist/timers/timer-node.js.map +1 -1
  91. package/dist/triggers/cron-trigger.d.ts +6 -0
  92. package/dist/triggers/cron-trigger.d.ts.map +1 -1
  93. package/dist/triggers/cron-trigger.js +23 -2
  94. package/dist/triggers/cron-trigger.js.map +1 -1
  95. package/package.json +4 -4
package/README.md CHANGED
@@ -9,8 +9,14 @@ DAG-based workflow engine for Cogitator agents. Build multi-step workflows with
9
9
 
10
10
  ```bash
11
11
  pnpm add @cogitator-ai/workflows @cogitator-ai/core
12
+
13
+ # Optional, for the durable stores
14
+ pnpm add pg # PostgreSQL stores
15
+ pnpm add @cogitator-ai/redis ioredis # Redis stores
12
16
  ```
13
17
 
18
+ Website docs: [Workflows](https://cogitator.app/docs/workflows), [Builder](https://cogitator.app/docs/workflows/builder), [Nodes](https://cogitator.app/docs/workflows/nodes), [Execution](https://cogitator.app/docs/workflows/execution), [Patterns](https://cogitator.app/docs/workflows/patterns), [Sagas](https://cogitator.app/docs/workflows/sagas), [Scheduling](https://cogitator.app/docs/workflows/scheduling).
19
+
14
20
  ## Features
15
21
 
16
22
  - **DAG Builder** — nodes, conditionals, loops and parallel fan-out with validation and entry-point detection
@@ -18,6 +24,7 @@ pnpm add @cogitator-ai/workflows @cogitator-ai/core
18
24
  - **Node policies** — per-node `timeout`, `retries` and `retryDelay`
19
25
  - **Real-time Streaming** — async generator of execution events
20
26
  - **Checkpoints** — save and resume workflow state
27
+ - **Durable Stores** — checkpoints, runs, approvals and timers in Redis or PostgreSQL, shared by several processes
21
28
  - **Pre-built Nodes** — agent, tool, function and custom nodes, plus adapters for timers, human approvals, map-reduce and subworkflows
22
29
  - **Saga Patterns** — retries, circuit breakers, compensation, dead-letter queue, idempotency
23
30
  - **Triggers** — cron, webhook and event triggers
@@ -77,7 +84,7 @@ const workflow = new WorkflowBuilder<{ count: number }>('counter')
77
84
  .build();
78
85
  ```
79
86
 
80
- - State types must be assignable to `Record<string, unknown>` — declare them with `type` rather than `interface`.
87
+ - State types must satisfy `WorkflowState` (`Record<string, unknown>`): declare them with `type`, or as `interface MyState extends WorkflowState { ... }` (`import type { WorkflowState } from '@cogitator-ai/types'`). A plain `interface` does not satisfy the constraint.
81
88
  - `addNode(name, fnOrNode, { after, config })` accepts a node function or a node created by a factory.
82
89
  - The entry point is the single node (or conditional/parallel/loop construct) without `after`. Independent roots are rejected — add a parallel fan-out or call `.entryPoint(name)`.
83
90
  - Node functions receive `ctx.state` (a copy), `ctx.input` (outputs of upstream nodes), `ctx.nodeId`, `ctx.workflowId`, `ctx.step`, `ctx.reportProgress()` and — for built-in nodes — `cogitator`, `signal` (run cancellation) and `depth` (subworkflow nesting).
@@ -205,8 +212,7 @@ const workflow = new WorkflowBuilder<{ attempts: number; done: boolean }>('retry
205
212
  state: { attempts: ctx.state.attempts + 1, done: await tryIt() },
206
213
  }))
207
214
  .addLoop('again', {
208
- condition: (state) =>
209
- !(state as { done: boolean }).done && (state as { attempts: number }).attempts < 3,
215
+ condition: (state) => !state.done && state.attempts < 3, // typed with the builder's state
210
216
  back: 'attempt',
211
217
  exit: 'finish',
212
218
  after: ['attempt'],
@@ -259,6 +265,38 @@ new PostgresCheckpointStore({ client: pool, table: 'workflow_checkpoints' }); //
259
265
 
260
266
  Resuming runs only the nodes that did not finish, and the nodes after them get the finished nodes' outputs as input.
261
267
 
268
+ Runs, approvals and timers have the same kind of durable stores:
269
+
270
+ ```typescript
271
+ import {
272
+ PostgresRunStore,
273
+ RedisApprovalStore,
274
+ PostgresTimerStore,
275
+ createWorkflowManager,
276
+ } from '@cogitator-ai/workflows';
277
+
278
+ createWorkflowManager({ cogitator, runStore: new PostgresRunStore({ client: pool }) });
279
+ new RedisApprovalStore({ client: redis, pollInterval: 1000 }); // answers from other processes arrive by polling
280
+ new PostgresTimerStore({ client: pool, claimTtl: 60_000 }); // each overdue timer is claimed by one TimerManager
281
+ ```
282
+
283
+ Postgres stores create their tables on first use (safe when two processes start at once); Redis stores index runs and requests in sorted sets instead of scanning keys. Approvals answered in another process reach the waiting human node within `pollInterval` (default 1 s); overdue timers are claimed for `claimTtl` (default 60 s) so several `TimerManager`s can share a store without firing a timer twice, and a crashed worker's timers come back once their claim expires.
284
+
285
+ A `TimerManager` renews a claim right before a handler starts and every `claimTtl / 3` while it runs, so slow handlers keep their timer. If the claim was lost (another worker took it), the handler is skipped or `onClaimLost` reports it; timers without a handler, or beyond a poll's `batchSize`, are released so another manager can take them at once. A failed handler keeps the claim until the lease ends, which spaces out retries:
286
+
287
+ ```typescript
288
+ import { createTimerManager, RedisTimerStore } from '@cogitator-ai/workflows';
289
+
290
+ const timers = createTimerManager(new RedisTimerStore({ client: redis, claimTtl: 30_000 }), {
291
+ pollInterval: 1_000,
292
+ onClaimLost: (entry) => console.warn('another worker took timer', entry.id),
293
+ });
294
+ timers.setDefaultHandler(async (entry) => console.log('fired', entry.id));
295
+ await timers.start();
296
+ ```
297
+
298
+ Custom stores implement `TimerStore`; `claimTtl`, `renew(id)` and `release(id)` are optional there and enable the claim handling above.
299
+
262
300
  ---
263
301
 
264
302
  ## Timers
@@ -335,6 +373,32 @@ console.log(breaker.getStats('payments'));
335
373
 
336
374
  ### Compensation
337
375
 
376
+ Give a node `config.compensation` and the executor rolls it back when a later node of the run fails:
377
+
378
+ ```typescript
379
+ builder
380
+ .addNode('reserve', reserveFn, {
381
+ config: { compensation: { compensate: async (state) => inventory.release(state.orderId) } },
382
+ })
383
+ .addNode('charge', chargeFn, {
384
+ after: ['reserve'],
385
+ config: {
386
+ compensation: {
387
+ compensate: async (state) => payments.refund(state.paymentId!),
388
+ compensateTimeout: 10_000,
389
+ },
390
+ },
391
+ })
392
+ .addNode('ship', shipFn, { after: ['charge'] });
393
+
394
+ const result = await executor.execute(workflow, input, {
395
+ onCompensationStart: (node) => console.log(`rolling back ${node}`),
396
+ onCompensationComplete: (node) => console.log(`rolled back ${node}`),
397
+ });
398
+ ```
399
+
400
+ Completed nodes with a `compensate` are rolled back in reverse completion order (`compensateOrder: 'parallel' | 'forward'` changes that, `compensateCondition` skips a step); aborted, paused and cancelled runs are not compensated. For rollbacks outside the executor, use a `CompensationManager`:
401
+
338
402
  ```typescript
339
403
  import { compensationBuilder } from '@cogitator-ai/workflows';
340
404
 
@@ -346,10 +410,12 @@ const compensation = compensationBuilder<OrderState>()
346
410
  compensation.markCompleted('reserve', reservation);
347
411
  compensation.markCompleted('charge', payment);
348
412
 
349
- const report = await compensation.compensate(state, 'ship', new Error('carrier down'));
413
+ const report = await compensation.compensate(state, 'ship', new Error('carrier down'), {
414
+ onStepStart: (nodeId) => console.log(`compensating ${nodeId}`),
415
+ });
350
416
  ```
351
417
 
352
- Compensations run in reverse completion order for the steps marked completed.
418
+ Compensations run in reverse completion order for the steps marked completed; the optional `CompensationHooks` argument (`onStepStart`, `onStepComplete`) observes each step that runs.
353
419
 
354
420
  ### Dead Letter Queue and Idempotency
355
421
 
@@ -453,7 +519,28 @@ await approvalStore.submitResponse({
453
519
  });
454
520
  ```
455
521
 
456
- Other configs: `choiceNode`, `inputNode`, `ratingNode`, `chainNode`, `managementChain`. Notifiers: `ConsoleNotifier`, `WebhookNotifier`, `slackNotifier`, `CompositeNotifier`, `filteredNotifier`, `priorityRouter`. `FileApprovalStore` persists requests.
522
+ Other configs: `choiceNode`, `inputNode`, `ratingNode`, `chainNode`, `managementChain`; all of them return a config whose `name` is set, so `config.name` is a `string`. Notifiers: `ConsoleNotifier`, `WebhookNotifier`, `slackNotifier`, `CompositeNotifier`, `filteredNotifier`, `priorityRouter`. `FileApprovalStore` persists requests; `RedisApprovalStore` and `PostgresApprovalStore` share them between processes.
523
+
524
+ A request is answered once, in every store (atomically across processes for Redis and Postgres): the first `submitResponse` wins and a later one throws `ApprovalAlreadyAnsweredError` carrying the answer that stands. A human node whose timeout fires just after someone answered keeps that answer. Deleting (or expiring) a request nobody answered withdraws it: waiters in any process get a withdrawal and the node finishes with `withdrawn: true` instead of waiting forever. A timeout or withdrawal never counts as approval, also for `multi-choice` requests.
525
+
526
+ ```typescript
527
+ import { ApprovalAlreadyAnsweredError } from '@cogitator-ai/workflows';
528
+
529
+ try {
530
+ await approvalStore.submitResponse({
531
+ requestId,
532
+ decision: false,
533
+ respondedBy: 'cfo@company.com',
534
+ respondedAt: Date.now(),
535
+ });
536
+ } catch (error) {
537
+ if (error instanceof ApprovalAlreadyAnsweredError) {
538
+ console.log('Already decided:', error.existing?.decision);
539
+ }
540
+ }
541
+
542
+ await approvalStore.deleteRequest(staleRequestId); // a pending request is withdrawn
543
+ ```
457
544
 
458
545
  ---
459
546
 
@@ -494,7 +581,9 @@ import { createTriggerManager, cronTrigger, webhookTrigger } from '@cogitator-ai
494
581
 
495
582
  const triggers = createTriggerManager({
496
583
  onTriggerFire: async (trigger, context) => {
497
- const run = await manager.schedule(workflows[trigger.workflowName], { input: context.payload });
584
+ const run = await manager.schedule(workflows[trigger.workflowName], {
585
+ input: { payload: context.payload },
586
+ });
498
587
  return run;
499
588
  },
500
589
  });
@@ -535,7 +624,7 @@ import { createTracer, createMetricsCollector } from '@cogitator-ai/workflows';
535
624
  const tracer = createTracer({
536
625
  enabled: true,
537
626
  serviceName: 'billing-workflows',
538
- exporter: 'otlp', // 'console' | 'otlp' | 'jaeger' | 'zipkin'
627
+ exporter: 'otlp', // 'console' | 'otlp' | 'jaeger' | 'zipkin' | 'noop'
539
628
  exporterEndpoint: 'http://localhost:4318/v1/traces',
540
629
  });
541
630
  const metricsCollector = createMetricsCollector({ prefix: 'cogitator_workflow' });
@@ -547,7 +636,7 @@ console.log(metricsCollector.getWorkflowMetrics('report'));
547
636
  console.log(metricsCollector.toPrometheusFormat());
548
637
  ```
549
638
 
550
- The executor creates one workflow span and a child span per node execution (parallel nodes keep correct parents) and records workflow/node counts, latencies and retries.
639
+ The executor creates one workflow span and a child span per node execution (parallel nodes keep correct parents) and records workflow/node counts, latencies and retries. `sampleRate` (0–1) samples traces; with 0, `tracer.isSampled()` is `false` and nothing is exported.
551
640
 
552
641
  ---
553
642
 
@@ -574,8 +663,16 @@ await manager.cancel(runId);
574
663
  const runs = await manager.listRuns({ status: 'failed', workflowName: 'report', limit: 20 });
575
664
  const stats = await manager.getStats('report');
576
665
  await manager.retry(runs[0].id);
666
+
667
+ const jobId = manager.registerCronJob(workflow, '0 2 * * *', {
668
+ jobOptions: { input, maxRetries: 2 },
669
+ });
577
670
  ```
578
671
 
672
+ `registerCronJob` queues a run on every occurrence while the manager is started (`schedule({ cron })` queues only the next one); `unregisterCronJob`, `setCronJobEnabled` and `getCronJobs` manage the jobs. Scheduled runs get the manager's checkpoint store, tracer, metrics and their `timeout` (else `defaultTimeout`), and `maxRetries` retries a failed scheduled run automatically. With a `checkpointStore`, `pause(runId)` aborts a running run and keeps it `paused`, and `resume(runId, options?)` continues it from its last checkpoint.
673
+
674
+ Every run — executed, scheduled or started by a trigger — records `currentNodes`, `completedNodes` and `failedNodes`, all written by the time the run is marked finished. Run stores return copies, so changing a returned run does not change the stored one; `listRuns()` is sorted newest first. `getStats()` counts cancelled runs toward neither the success nor the failure rate. Use `PostgresRunStore` / `RedisRunStore` to share runs between processes: queries, counts and stats run in the database (Postgres) or on sorted-set indexes (Redis).
675
+
579
676
  ---
580
677
 
581
678
  ## License
package/dist/builder.d.ts CHANGED
@@ -25,7 +25,7 @@ export declare class WorkflowBuilder<S extends WorkflowState = WorkflowState> {
25
25
  * Add a node to the workflow. Accepts a node function or a node created by a factory
26
26
  * (`agentNode`, `toolNode`, `functionNode`, `customNode`, ...).
27
27
  */
28
- addNode(name: string, node: NodeFn<S> | WorkflowNode<S>, options?: AddNodeOptions): this;
28
+ addNode(name: string, node: NodeFn<S> | WorkflowNode<S>, options?: AddNodeOptions<S>): this;
29
29
  /**
30
30
  * Add a conditional routing node
31
31
  */
@@ -33,7 +33,7 @@ export declare class WorkflowBuilder<S extends WorkflowState = WorkflowState> {
33
33
  /**
34
34
  * Add a loop construct
35
35
  */
36
- addLoop(name: string, options: AddLoopOptions): this;
36
+ addLoop(name: string, options: AddLoopOptions<S>): this;
37
37
  addParallel(name: string, targets: string[], options?: AddParallelOptions): this;
38
38
  /**
39
39
  * Build and validate the workflow
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,MAAM,EAEN,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AA6B7B,qBAAa,eAAe,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IAClE,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,SAAS,CAAqB;gBAE1B,IAAI,EAAE,MAAM;IAKxB,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAK5B;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKlC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IAgBxF;;OAEG;IACH,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,EAAE,EAC1C,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI;IAUP;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAYpD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAUhF;;OAEG;IACH,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;IAiKpB,OAAO,CAAC,aAAa;CAgCtB"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,MAAM,EAEN,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AA6B7B,qBAAa,eAAe,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IAClE,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,SAAS,CAAqB;gBAE1B,IAAI,EAAE,MAAM;IAKxB,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAK5B;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKlC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAgB3F;;OAEG;IACH,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,EAAE,EAC1C,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI;IAUP;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAYvD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAUhF;;OAEG;IACH,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;IAiKpB,OAAO,CAAC,aAAa;CAgCtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint-stores.d.ts","sourceRoot":"","sources":["../src/checkpoint-stores.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE/E;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,qBAAqB,CAAC;IAC9B,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,EAAE,2BAA2B;IAK1C,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKpD,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAazD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,QAAQ;CAGjB;AAED,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;CAC5F;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,mFAAmF;AACnF,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,KAAK,CAAC,CAAgB;gBAElB,OAAO,EAAE,8BAA8B;IAS7C,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAMpD,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IASzD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC,OAAO,CAAC,WAAW;YAQL,WAAW;CAc1B"}
1
+ {"version":3,"file":"checkpoint-stores.d.ts","sourceRoot":"","sources":["../src/checkpoint-stores.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG/E;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,qBAAqB,CAAC;IAC9B,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,EAAE,2BAA2B;IAK1C,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKpD,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAazD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,QAAQ;CAGjB;AAED,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;CAC5F;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,KAAK,CAAC,CAAgB;gBAElB,OAAO,EAAE,8BAA8B;IAS7C,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAMpD,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IASzD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC,OAAO,CAAC,WAAW;YAQL,WAAW;CAgB1B"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Durable workflow checkpoint stores: Redis and Postgres.
3
3
  */
4
+ import { createIfMissing, fromJson, TABLE_NAME } from './postgres-schema.js';
4
5
  /**
5
6
  * Checkpoints in Redis: each as JSON under its id, with a sorted set per
6
7
  * workflow (scored by timestamp) to list them newest first.
@@ -52,7 +53,6 @@ export class RedisCheckpointStore {
52
53
  return `${this.prefix}:workflow:${workflowName}`;
53
54
  }
54
55
  }
55
- const TABLE_NAME = /^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?$/;
56
56
  /** Checkpoints in a Postgres table, as JSONB rows indexed by workflow and time. */
57
57
  export class PostgresCheckpointStore {
58
58
  client;
@@ -96,17 +96,16 @@ export class PostgresCheckpointStore {
96
96
  }
97
97
  async createTable() {
98
98
  const index = `${this.table.replace('.', '_')}_workflow_idx`;
99
- await this.client.query(`CREATE TABLE IF NOT EXISTS ${this.table} (
99
+ await createIfMissing(this.client, `CREATE TABLE IF NOT EXISTS ${this.table} (
100
100
  id TEXT PRIMARY KEY,
101
101
  workflow_name TEXT NOT NULL,
102
102
  data JSONB NOT NULL,
103
103
  created_at BIGINT NOT NULL
104
104
  )`);
105
- await this.client.query(`CREATE INDEX IF NOT EXISTS ${index} ON ${this.table} (workflow_name, created_at DESC)`);
105
+ await createIfMissing(this.client, `CREATE INDEX IF NOT EXISTS ${index} ON ${this.table} (workflow_name, created_at DESC)`);
106
106
  }
107
107
  }
108
- /** `pg` returns JSONB columns parsed; other drivers may return the text. */
109
108
  function toCheckpoint(data) {
110
- return (typeof data === 'string' ? JSON.parse(data) : data);
109
+ return fromJson(data);
111
110
  }
112
111
  //# sourceMappingURL=checkpoint-stores.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint-stores.js","sourceRoot":"","sources":["../src/checkpoint-stores.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkpoint-stores.js","sourceRoot":"","sources":["../src/checkpoint-stores.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * WorkflowExecutor - Main execution engine for workflows
3
3
  */
4
- import type { Workflow, WorkflowState, WorkflowResult, WorkflowExecuteOptions, StreamingWorkflowEvent, CheckpointStore, RetryConfig, CircuitBreakerConfig, DeadLetterQueue, IdempotencyStore, ApprovalStore, ApprovalNotifier, TimerStore } from '@cogitator-ai/types';
4
+ import type { Workflow, WorkflowState, WorkflowResult, WorkflowExecuteOptions, WorkflowExecuteOptionsV2, StreamingWorkflowEvent, CheckpointStore, RetryConfig, CircuitBreakerConfig, DeadLetterQueue, IdempotencyStore, ApprovalStore, ApprovalNotifier, TimerStore } from '@cogitator-ai/types';
5
5
  import type { Cogitator } from '@cogitator-ai/core';
6
- import type { WorkflowTracer } from './observability/tracer.js';
7
- import type { WorkflowMetricsCollector } from './observability/metrics.js';
8
- export interface ExecutorExecuteOptions extends WorkflowExecuteOptions {
6
+ import { type WorkflowTracer } from './observability/tracer.js';
7
+ import { type WorkflowMetricsCollector } from './observability/metrics.js';
8
+ export interface ExecutorExecuteOptions extends WorkflowExecuteOptions, Pick<WorkflowExecuteOptionsV2, 'onApprovalRequired' | 'onCompensationStart' | 'onCompensationComplete' | 'onTimerScheduled' | 'onDeadLetter'> {
9
9
  /** Abort the run; checked between steps and passed to nodes (`ctx.signal`) */
10
10
  signal?: AbortSignal;
11
- /** Emit a workflow span and one span per node execution */
11
+ /** Emit a workflow span and one span per node execution (defaults to the enabled global tracer) */
12
12
  tracer?: WorkflowTracer;
13
- /** Record workflow and node executions */
13
+ /** Record workflow and node executions (defaults to the enabled global metrics collector) */
14
14
  metricsCollector?: WorkflowMetricsCollector;
15
15
  /** Subworkflow nesting depth, exposed to nodes as `ctx.depth` */
16
16
  depth?: number;
@@ -51,10 +51,10 @@ export declare class WorkflowExecutor {
51
51
  /**
52
52
  * Resume a workflow from a checkpoint
53
53
  */
54
- resume<S extends WorkflowState>(workflow: Workflow<S>, checkpointId: string, options?: WorkflowExecuteOptions): Promise<WorkflowResult<S>>;
54
+ resume<S extends WorkflowState>(workflow: Workflow<S>, checkpointId: string, options?: ExecutorExecuteOptions): Promise<WorkflowResult<S>>;
55
55
  /**
56
56
  * Stream workflow execution events
57
57
  */
58
- stream<S extends WorkflowState>(workflow: Workflow<S>, input?: Partial<S>, options?: Omit<WorkflowExecuteOptions, 'onNodeStart' | 'onNodeComplete' | 'onNodeError' | 'onNodeProgress'>): AsyncIterable<StreamingWorkflowEvent>;
58
+ stream<S extends WorkflowState>(workflow: Workflow<S>, input?: Partial<S>, options?: Omit<ExecutorExecuteOptions, 'onNodeStart' | 'onNodeComplete' | 'onNodeError' | 'onNodeProgress'>): AsyncIterable<StreamingWorkflowEvent>;
59
59
  }
60
60
  //# sourceMappingURL=executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EAKf,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKpD,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAKxE,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,8EAA8E;IAC9E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,yEAAyE;IACzE,qBAAqB,CAAC,EAAE,oBAAoB,CAAC;IAC7C,2DAA2D;IAC3D,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,iEAAiE;IACjE,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAKD,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;CAM3C;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAMhD;AAgHD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAAuD;gBAE3D,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,eAAe;IAMnE;;OAEG;IACG,OAAO,CAAC,CAAC,SAAS,aAAa,EACnC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IA4R7B,OAAO,CAAC,UAAU;IASlB;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,aAAa,EAClC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAsC7B;;OAEG;IACI,MAAM,CAAC,CAAC,SAAS,aAAa,EACnC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,OAAO,CAAC,EAAE,IAAI,CACZ,sBAAsB,EACtB,aAAa,GAAG,gBAAgB,GAAG,aAAa,GAAG,gBAAgB,CACpE,GACA,aAAa,CAAC,sBAAsB,CAAC;CAsEzC"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
package/dist/executor.js CHANGED
@@ -4,8 +4,12 @@
4
4
  import { nanoid } from 'nanoid';
5
5
  import { WorkflowScheduler } from './scheduler.js';
6
6
  import { InMemoryCheckpointStore, createCheckpointId } from './checkpoint.js';
7
+ import { getGlobalTracer } from './observability/tracer.js';
8
+ import { getGlobalMetrics } from './observability/metrics.js';
9
+ import { COMPENSATION_NODE, COMPENSATION_TRIGGERED } from './observability/span-attributes.js';
7
10
  import { computeRetryDelay } from './saga/retry.js';
8
11
  import { CircuitBreaker } from './saga/circuit-breaker.js';
12
+ import { CompensationManager } from './saga/compensation.js';
9
13
  import { createDLQEntry } from './saga/dead-letter.js';
10
14
  const DEFAULT_MAX_CONCURRENCY = 4;
11
15
  const DEFAULT_MAX_ITERATIONS = 100;
@@ -28,6 +32,25 @@ export class NodeTimeoutError extends Error {
28
32
  this.timeoutMs = timeoutMs;
29
33
  }
30
34
  }
35
+ /** Call an observer without letting its exception break the run. */
36
+ function notify(name, callback, ...args) {
37
+ if (!callback)
38
+ return;
39
+ try {
40
+ callback(...args);
41
+ }
42
+ catch (error) {
43
+ console.warn(`[WorkflowExecutor] ${name} callback failed:`, error);
44
+ }
45
+ }
46
+ function activeGlobalTracer() {
47
+ const tracer = getGlobalTracer();
48
+ return tracer.isSampled() ? tracer : undefined;
49
+ }
50
+ function activeGlobalMetrics() {
51
+ const metrics = getGlobalMetrics();
52
+ return metrics.isEnabled() ? metrics : undefined;
53
+ }
31
54
  function sleep(ms, signal) {
32
55
  if (ms <= 0)
33
56
  return Promise.resolve();
@@ -152,14 +175,47 @@ export class WorkflowExecutor {
152
175
  let error;
153
176
  const graph = this.scheduler.buildDependencyGraph(workflow);
154
177
  const reachability = this.scheduler.buildReachability(workflow);
155
- const tracer = options?.tracer;
156
- const metrics = options?.metricsCollector;
178
+ const tracer = options?.tracer ?? activeGlobalTracer();
179
+ const metrics = options?.metricsCollector ?? activeGlobalMetrics();
180
+ const compensation = new CompensationManager();
181
+ const inFlight = new Set();
157
182
  const breaker = options?.defaultCircuitBreaker
158
183
  ? this.getBreaker(options.defaultCircuitBreaker)
159
184
  : undefined;
160
185
  const workflowSpan = tracer?.startWorkflowSpan(workflow.name, workflowId, workflowId);
161
186
  metrics?.recordWorkflowStart(workflow.name);
162
187
  let currentNodes = [workflow.entryPoint];
188
+ const trackCompensation = (nodeName, output) => {
189
+ const config = workflow.nodes.get(nodeName)?.config?.compensation;
190
+ if (!config?.compensate)
191
+ return;
192
+ if (!compensation.hasCompensation(nodeName)) {
193
+ compensation.registerFromConfig(nodeName, config);
194
+ }
195
+ compensation.markCompleted(nodeName, output);
196
+ };
197
+ const compensate = async (failedNode, cause) => {
198
+ await Promise.allSettled(inFlight);
199
+ if (compensation.getCompensableNodes().length === 0)
200
+ return;
201
+ workflowSpan?.setAttribute(COMPENSATION_TRIGGERED, true);
202
+ await compensation.compensate(state, failedNode, cause, {
203
+ onStepStart: (nodeId) => {
204
+ notify('onCompensationStart', options?.onCompensationStart, nodeId);
205
+ },
206
+ onStepComplete: (step) => {
207
+ workflowSpan?.addEvent('compensation', {
208
+ [COMPENSATION_NODE]: step.nodeId,
209
+ 'compensation.success': step.success,
210
+ 'compensation.duration_ms': step.duration,
211
+ });
212
+ if (!step.success) {
213
+ console.warn(`[WorkflowExecutor] Compensation of node '${step.nodeId}' failed:`, step.error);
214
+ }
215
+ notify('onCompensationComplete', options?.onCompensationComplete, step.nodeId);
216
+ },
217
+ });
218
+ };
163
219
  let lastCheckpointAt = 0;
164
220
  const saveCheckpoint = async () => {
165
221
  checkpointId = createCheckpointId();
@@ -207,6 +263,8 @@ export class WorkflowExecutor {
207
263
  approvalStore: options?.approvalStore,
208
264
  approvalNotifier: options?.approvalNotifier,
209
265
  timerStore: options?.timerStore,
266
+ onApprovalRequired: options?.onApprovalRequired,
267
+ onTimerScheduled: options?.onTimerScheduled,
210
268
  reportProgress: (progress) => {
211
269
  const clamped = Math.max(0, Math.min(100, progress));
212
270
  options?.onNodeProgress?.(nodeName, clamped);
@@ -234,6 +292,7 @@ export class WorkflowExecutor {
234
292
  await idempotencyStore.store(idempotencyKey, result);
235
293
  }
236
294
  const duration = Date.now() - nodeStart;
295
+ trackCompensation(nodeName, result.output);
237
296
  nodeSpan?.setAttribute('node.retries', retries);
238
297
  nodeSpan?.end('ok');
239
298
  metrics?.recordNodeExecution(workflow.name, nodeName, 'node', duration, true, retries);
@@ -246,19 +305,29 @@ export class WorkflowExecutor {
246
305
  nodeSpan?.end('error', err.message);
247
306
  metrics?.recordNodeExecution(workflow.name, nodeName, 'node', Date.now() - nodeStart, false, node.config?.retries ?? options?.defaultRetry?.maxRetries ?? 0);
248
307
  if (options?.deadLetterQueue) {
249
- await options.deadLetterQueue
250
- .add(createDLQEntry(nodeName, workflowId, workflow.name, state, err, {
308
+ const entry = createDLQEntry(nodeName, workflowId, workflow.name, state, err, {
251
309
  input,
252
310
  attempts: 1 + (node.config?.retries ?? options.defaultRetry?.maxRetries ?? 0),
253
- }))
254
- .catch((dlqError) => {
255
- console.warn('[WorkflowExecutor] Failed to write dead letter entry:', dlqError);
256
311
  });
312
+ try {
313
+ const id = await options.deadLetterQueue.add(entry);
314
+ notify('onDeadLetter', options.onDeadLetter, { ...entry, id });
315
+ }
316
+ catch (dlqError) {
317
+ console.warn('[WorkflowExecutor] Failed to write dead letter entry:', dlqError);
318
+ }
257
319
  }
258
320
  throw new NodeExecutionError(nodeName, err);
259
321
  }
260
322
  };
261
- return tracer ? tracer.runInContext(runNode) : runNode();
323
+ const running = tracer ? tracer.runInContext(runNode) : runNode();
324
+ inFlight.add(running);
325
+ try {
326
+ return await running;
327
+ }
328
+ finally {
329
+ inFlight.delete(running);
330
+ }
262
331
  };
263
332
  const processNodeResult = (nodeName, result, duration, nextNodes) => {
264
333
  if (result.state) {
@@ -293,6 +362,7 @@ export class WorkflowExecutor {
293
362
  if (completedNodes.has(nodeName))
294
363
  continue;
295
364
  completedNodes.add(nodeName);
365
+ trackCompensation(nodeName, nodeResults.get(nodeName)?.output);
296
366
  for (const next of this.scheduler.getNextNodes(workflow, nodeName, state)) {
297
367
  if (completedNodes.has(next) || currentNodes.includes(next))
298
368
  continue;
@@ -333,6 +403,11 @@ export class WorkflowExecutor {
333
403
  if (e instanceof NodeExecutionError) {
334
404
  error = e.cause instanceof Error ? e.cause : e;
335
405
  options?.onNodeError?.(e.nodeName, error);
406
+ if (!options?.signal?.aborted) {
407
+ await compensate(e.nodeName, error).catch((compensationError) => {
408
+ console.warn('[WorkflowExecutor] Compensation failed:', compensationError);
409
+ });
410
+ }
336
411
  }
337
412
  else {
338
413
  error = e instanceof Error ? e : new Error(String(e));