bunqueue 2.6.115 → 2.7.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 (39) hide show
  1. package/README.md +80 -0
  2. package/dist/application/cleanupTasks.js +24 -1
  3. package/dist/application/cleanupTasks.js.map +1 -1
  4. package/dist/client/workflow/engine.d.ts +26 -0
  5. package/dist/client/workflow/engine.d.ts.map +1 -0
  6. package/dist/client/workflow/engine.js +62 -0
  7. package/dist/client/workflow/engine.js.map +1 -0
  8. package/dist/client/workflow/executor.d.ts +32 -0
  9. package/dist/client/workflow/executor.d.ts.map +1 -0
  10. package/dist/client/workflow/executor.js +247 -0
  11. package/dist/client/workflow/executor.js.map +1 -0
  12. package/dist/client/workflow/index.d.ts +22 -0
  13. package/dist/client/workflow/index.d.ts.map +1 -0
  14. package/dist/client/workflow/index.js +21 -0
  15. package/dist/client/workflow/index.js.map +1 -0
  16. package/dist/client/workflow/store.d.ts +16 -0
  17. package/dist/client/workflow/store.d.ts.map +1 -0
  18. package/dist/client/workflow/store.js +105 -0
  19. package/dist/client/workflow/store.js.map +1 -0
  20. package/dist/client/workflow/types.d.ts +100 -0
  21. package/dist/client/workflow/types.d.ts.map +1 -0
  22. package/dist/client/workflow/types.js +5 -0
  23. package/dist/client/workflow/types.js.map +1 -0
  24. package/dist/client/workflow/workflow.d.ts +23 -0
  25. package/dist/client/workflow/workflow.d.ts.map +1 -0
  26. package/dist/client/workflow/workflow.js +73 -0
  27. package/dist/client/workflow/workflow.js.map +1 -0
  28. package/dist/infrastructure/cloud/cloudAgent.d.ts +3 -1
  29. package/dist/infrastructure/cloud/cloudAgent.d.ts.map +1 -1
  30. package/dist/infrastructure/cloud/cloudAgent.js +17 -1
  31. package/dist/infrastructure/cloud/cloudAgent.js.map +1 -1
  32. package/dist/infrastructure/cloud/commandHandler.d.ts +6 -1
  33. package/dist/infrastructure/cloud/commandHandler.d.ts.map +1 -1
  34. package/dist/infrastructure/cloud/commandHandler.js +22 -1
  35. package/dist/infrastructure/cloud/commandHandler.js.map +1 -1
  36. package/dist/infrastructure/cloud/commands.d.ts.map +1 -1
  37. package/dist/infrastructure/cloud/commands.js +91 -10
  38. package/dist/infrastructure/cloud/commands.js.map +1 -1
  39. package/package.json +5 -1
package/README.md CHANGED
@@ -481,6 +481,85 @@ process.on('SIGINT', async () => {
481
481
 
482
482
  ---
483
483
 
484
+ ## Workflow Engine
485
+
486
+ Orchestrate multi-step business processes with branching, saga compensation, and human-in-the-loop signals. Built on top of bunqueue — no new infrastructure.
487
+
488
+ ```typescript
489
+ import { Workflow, Engine } from 'bunqueue/workflow';
490
+
491
+ const orderFlow = new Workflow('order-pipeline')
492
+ .step('validate', async (ctx) => {
493
+ const { orderId, amount } = ctx.input as { orderId: string; amount: number };
494
+ if (amount <= 0) throw new Error('Invalid amount');
495
+ return { orderId };
496
+ })
497
+ .step('reserve-stock', async () => {
498
+ await inventory.reserve();
499
+ return { reserved: true };
500
+ }, {
501
+ compensate: async () => await inventory.release(), // Auto-rollback on failure
502
+ })
503
+ .step('charge', async () => {
504
+ return { txId: await payments.charge() };
505
+ }, {
506
+ compensate: async () => await payments.refund(),
507
+ })
508
+ .step('confirm', async (ctx) => {
509
+ const { txId } = ctx.steps['charge'] as { txId: string };
510
+ return { emailSent: true, txId };
511
+ });
512
+
513
+ const engine = new Engine({ embedded: true });
514
+ engine.register(orderFlow);
515
+ await engine.start('order-pipeline', { orderId: 'ORD-1', amount: 99.99 });
516
+ ```
517
+
518
+ **Features:**
519
+
520
+ - **Saga pattern** — Compensation handlers run in reverse when a step fails
521
+ - **Branching** — Route to different paths based on runtime conditions
522
+ - **Human-in-the-loop** — `waitFor('event')` pauses execution, `engine.signal()` resumes it
523
+ - **Step timeouts** — Prevent steps from running indefinitely
524
+ - **Context passing** — Each step accesses input and all previous step results
525
+ - **SQLite persistence** — Execution state survives restarts
526
+
527
+ **vs Competitors:**
528
+
529
+ | | **bunqueue** | **Temporal** | **Inngest** | **AWS Step Functions** |
530
+ |---|---|---|---|---|
531
+ | **Infrastructure** | None (embedded) | PostgreSQL + 7 services | Cloud-only | AWS-native |
532
+ | **Saga compensation** | Built-in | Manual | Manual | Manual |
533
+ | **Human-in-the-loop** | `.waitFor()` | Signals API | `step.waitForEvent()` | Callback tasks |
534
+ | **Self-hosted** | Zero-config | Complex | No | No |
535
+ | **Pricing** | Free (MIT) | Free / Cloud $$ | Per-execution | Per-transition |
536
+
537
+ ```typescript
538
+ // Branching
539
+ const flow = new Workflow('tiered')
540
+ .step('classify', async (ctx) => ({ tier: ctx.input.amount > 1000 ? 'vip' : 'basic' }))
541
+ .branch((ctx) => ctx.steps['classify'].tier)
542
+ .path('vip', (w) => w.step('vip-handler', async () => ({ discount: 20 })))
543
+ .path('basic', (w) => w.step('basic-handler', async () => ({ discount: 0 })))
544
+ .step('done', async () => ({ processed: true }));
545
+
546
+ // Human-in-the-loop
547
+ const approvalFlow = new Workflow('expense')
548
+ .step('submit', async (ctx) => ({ amount: ctx.input.amount }))
549
+ .waitFor('manager-approval')
550
+ .step('reimburse', async (ctx) => {
551
+ const decision = ctx.signals['manager-approval'] as { approved: boolean };
552
+ return { status: decision.approved ? 'paid' : 'rejected' };
553
+ });
554
+
555
+ // Signal a waiting workflow
556
+ await engine.signal(run.id, 'manager-approval', { approved: true });
557
+ ```
558
+
559
+ [Workflow Engine docs →](https://bunqueue.dev/guide/workflow/)
560
+
561
+ ---
562
+
484
563
  <p align="center">
485
564
  <strong>bunqueue Dashboard</strong><br/>
486
565
  <sub>A visual interface for managing queues, jobs, workers and monitoring in real time. Currently in beta.</sub>
@@ -728,6 +807,7 @@ docker compose --profile monitoring up -d
728
807
  **[Read the full documentation →](https://bunqueue.dev/)**
729
808
 
730
809
  - [Quick Start](https://bunqueue.dev/guide/quickstart/)
810
+ - [Workflow Engine](https://bunqueue.dev/guide/workflow/)
731
811
  - [MCP Server (AI Agents)](https://bunqueue.dev/guide/mcp/)
732
812
  - [Simple Mode](https://bunqueue.dev/guide/simple-mode/)
733
813
  - [Queue API](https://bunqueue.dev/guide/queue/)
@@ -179,13 +179,36 @@ function cleanOrphanedJobLocks(ctx) {
179
179
  }
180
180
  }
181
181
  }
182
+ /** Check if any processing shard has a job belonging to the given queue */
183
+ function hasProcessingJobsForQueue(ctx, queueName) {
184
+ for (let i = 0; i < SHARD_COUNT; i++) {
185
+ for (const job of ctx.processingShards[i].values()) {
186
+ if (job.queue === queueName)
187
+ return true;
188
+ }
189
+ }
190
+ return false;
191
+ }
192
+ /** Check if any shard has waitingDeps jobs belonging to the given queue */
193
+ function hasWaitingDepsForQueue(ctx, queueName) {
194
+ for (let i = 0; i < SHARD_COUNT; i++) {
195
+ for (const job of ctx.shards[i].waitingDeps.values()) {
196
+ if (job.queue === queueName)
197
+ return true;
198
+ }
199
+ }
200
+ return false;
201
+ }
182
202
  function cleanEmptyQueues(ctx) {
183
203
  for (let i = 0; i < SHARD_COUNT; i++) {
184
204
  const shard = ctx.shards[i];
185
205
  const emptyQueues = [];
186
206
  for (const [queueName, queue] of shard.queues) {
187
207
  const dlqEntries = shard.dlq.get(queueName);
188
- if (queue.size === 0 && (!dlqEntries || dlqEntries.length === 0)) {
208
+ if (queue.size === 0 &&
209
+ (!dlqEntries || dlqEntries.length === 0) &&
210
+ !hasProcessingJobsForQueue(ctx, queueName) &&
211
+ !hasWaitingDepsForQueue(ctx, queueName)) {
189
212
  emptyQueues.push(queueName);
190
213
  }
191
214
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cleanupTasks.js","sourceRoot":"","sources":["../../src/application/cleanupTasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleanupTasks.js","sourceRoot":"","sources":["../../src/application/cleanupTasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Engine - Public facade for the workflow engine
3
+ * Manages lifecycle of internal Queue, Worker, and Store.
4
+ */
5
+ import type { Workflow } from './workflow';
6
+ import type { EngineOptions, RunHandle, Execution, ExecutionState } from './types';
7
+ export declare class Engine {
8
+ private readonly queue;
9
+ private readonly worker;
10
+ private readonly store;
11
+ private readonly executor;
12
+ constructor(opts?: EngineOptions);
13
+ /** Register a workflow definition */
14
+ register(workflow: Workflow): this;
15
+ /** Start a new workflow execution */
16
+ start(workflowName: string, input?: unknown): Promise<RunHandle>;
17
+ /** Get execution state by ID */
18
+ getExecution(id: string): Execution | null;
19
+ /** List executions with optional filters */
20
+ listExecutions(workflowName?: string, state?: ExecutionState): Execution[];
21
+ /** Send a signal to a waiting execution */
22
+ signal(executionId: string, event: string, payload?: unknown): Promise<void>;
23
+ /** Shut down the engine */
24
+ close(force?: boolean): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAe,MAAM,SAAS,CAAC;AAIhG,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;gBAEhC,IAAI,GAAE,aAAkB;IA2BpC,qCAAqC;IACrC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAKlC,qCAAqC;IAC/B,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;IAItE,gCAAgC;IAChC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI1C,4CAA4C;IAC5C,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,EAAE;IAI1E,2CAA2C;IACrC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlF,2BAA2B;IACrB,KAAK,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAK1C"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Engine - Public facade for the workflow engine
3
+ * Manages lifecycle of internal Queue, Worker, and Store.
4
+ */
5
+ import { Queue } from '../queue/queue';
6
+ import { Worker } from '../worker/worker';
7
+ import { WorkflowStore } from './store';
8
+ import { WorkflowExecutor } from './executor';
9
+ const DEFAULT_QUEUE_NAME = '__wf:steps';
10
+ export class Engine {
11
+ queue;
12
+ worker;
13
+ store;
14
+ executor;
15
+ constructor(opts = {}) {
16
+ const queueName = opts.queueName ?? DEFAULT_QUEUE_NAME;
17
+ this.queue = new Queue(queueName, {
18
+ connection: opts.connection,
19
+ embedded: opts.embedded,
20
+ dataPath: opts.dataPath,
21
+ });
22
+ this.store = new WorkflowStore(opts.dataPath);
23
+ this.executor = new WorkflowExecutor(this.store, this.queue);
24
+ this.worker = new Worker(queueName, async (job) => {
25
+ const data = job.data;
26
+ return this.executor.processStep(data);
27
+ }, {
28
+ connection: opts.connection,
29
+ embedded: opts.embedded,
30
+ dataPath: opts.dataPath,
31
+ concurrency: opts.concurrency ?? 5,
32
+ });
33
+ }
34
+ /** Register a workflow definition */
35
+ register(workflow) {
36
+ this.executor.register(workflow);
37
+ return this;
38
+ }
39
+ /** Start a new workflow execution */
40
+ async start(workflowName, input) {
41
+ return this.executor.start(workflowName, input);
42
+ }
43
+ /** Get execution state by ID */
44
+ getExecution(id) {
45
+ return this.executor.getExecution(id);
46
+ }
47
+ /** List executions with optional filters */
48
+ listExecutions(workflowName, state) {
49
+ return this.executor.listExecutions(workflowName, state);
50
+ }
51
+ /** Send a signal to a waiting execution */
52
+ async signal(executionId, event, payload) {
53
+ return this.executor.signal(executionId, event, payload);
54
+ }
55
+ /** Shut down the engine */
56
+ async close(force = false) {
57
+ await this.worker.close(force);
58
+ this.queue.close();
59
+ this.store.close();
60
+ }
61
+ }
62
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/client/workflow/engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAExC,MAAM,OAAO,MAAM;IACA,KAAK,CAAQ;IACb,MAAM,CAAS;IACf,KAAK,CAAgB;IACrB,QAAQ,CAAmB;IAE5C,YAAY,OAAsB,EAAE;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;QAEvD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE;YAChC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7D,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB,SAAS,EACT,KAAK,EAAE,GAAG,EAAE,EAAE;YACZ,MAAM,IAAI,GAAG,GAAG,CAAC,IAA8B,CAAC;YAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,EACD;YACE,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;SACnC,CACF,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,QAAQ,CAAC,QAAkB;QACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,KAAK,CAAC,YAAoB,EAAE,KAAe;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,gCAAgC;IAChC,YAAY,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,4CAA4C;IAC5C,cAAc,CAAC,YAAqB,EAAE,KAAsB;QAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,KAAa,EAAE,OAAiB;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK;QACvB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * WorkflowExecutor - Core execution logic
3
+ * Processes steps as bunqueue jobs, handles transitions, branching, compensation.
4
+ */
5
+ import type { Queue } from '../queue/queue';
6
+ import type { Workflow } from './workflow';
7
+ import type { WorkflowStore } from './store';
8
+ import type { Execution, StepJobData, RunHandle } from './types';
9
+ export declare class WorkflowExecutor {
10
+ private readonly store;
11
+ private readonly queue;
12
+ private readonly workflows;
13
+ constructor(store: WorkflowStore, queue: Queue);
14
+ register(workflow: Workflow): void;
15
+ start(workflowName: string, input: unknown): Promise<RunHandle>;
16
+ /** Process a step job — this is the Worker processor function */
17
+ processStep(data: StepJobData): Promise<unknown>;
18
+ signal(executionId: string, event: string, payload: unknown): Promise<void>;
19
+ getExecution(id: string): Execution | null;
20
+ listExecutions(workflowName?: string, state?: Execution['state']): Execution[];
21
+ private executeNode;
22
+ private executeStep;
23
+ private executeBranch;
24
+ private executeWaitFor;
25
+ private advanceToNext;
26
+ private enqueueNode;
27
+ private runCompensation;
28
+ private findStepDef;
29
+ private buildContext;
30
+ private runWithTimeout;
31
+ }
32
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,SAAS,EAIV,MAAM,SAAS,CAAC;AASjB,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;gBAGtC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,KAAK;IAG/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAS5B,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;IAuBrE,iEAAiE;IAC3D,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BhD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjF,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI1C,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,EAAE;YAMhE,WAAW;YAeX,WAAW;YAiCX,aAAa;YA2Bb,cAAc;YAkBd,aAAa;YASb,WAAW;YASX,eAAe;IA0B7B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,cAAc;CAmBvB"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * WorkflowExecutor - Core execution logic
3
+ * Processes steps as bunqueue jobs, handles transitions, branching, compensation.
4
+ */
5
+ /** Thrown when a step needs to wait for a signal */
6
+ class WaitForSignalError extends Error {
7
+ event;
8
+ constructor(event) {
9
+ super(`Waiting for signal: ${event}`);
10
+ this.event = event;
11
+ }
12
+ }
13
+ export class WorkflowExecutor {
14
+ store;
15
+ queue;
16
+ workflows = new Map();
17
+ constructor(store, queue) {
18
+ this.store = store;
19
+ this.queue = queue;
20
+ }
21
+ register(workflow) {
22
+ const names = workflow.getStepNames();
23
+ const dupes = names.filter((n, i) => names.indexOf(n) !== i);
24
+ if (dupes.length > 0) {
25
+ throw new Error(`Duplicate step names in "${workflow.name}": ${dupes.join(', ')}`);
26
+ }
27
+ this.workflows.set(workflow.name, workflow);
28
+ }
29
+ async start(workflowName, input) {
30
+ const wf = this.workflows.get(workflowName);
31
+ if (!wf)
32
+ throw new Error(`Workflow "${workflowName}" not registered`);
33
+ if (wf.nodes.length === 0)
34
+ throw new Error(`Workflow "${workflowName}" has no steps`);
35
+ const now = Date.now();
36
+ const exec = {
37
+ id: `wf_${now}_${Math.random().toString(36).slice(2, 10)}`,
38
+ workflowName,
39
+ state: 'running',
40
+ input,
41
+ steps: {},
42
+ currentNodeIndex: 0,
43
+ signals: {},
44
+ createdAt: now,
45
+ updatedAt: now,
46
+ };
47
+ this.store.save(exec);
48
+ await this.enqueueNode(exec);
49
+ return { id: exec.id, workflowName };
50
+ }
51
+ /** Process a step job — this is the Worker processor function */
52
+ async processStep(data) {
53
+ const exec = this.store.get(data.executionId);
54
+ if (exec?.state !== 'running')
55
+ return null;
56
+ const wf = this.workflows.get(exec.workflowName);
57
+ if (!wf)
58
+ throw new Error(`Workflow "${exec.workflowName}" not registered`);
59
+ const node = wf.nodes[data.nodeIndex];
60
+ if (!node) {
61
+ exec.state = 'completed';
62
+ this.store.update(exec);
63
+ return null;
64
+ }
65
+ try {
66
+ await this.executeNode(exec, node, data.nodeIndex, wf);
67
+ }
68
+ catch (err) {
69
+ if (err instanceof WaitForSignalError)
70
+ return null;
71
+ exec.state = 'failed';
72
+ this.store.update(exec);
73
+ await this.runCompensation(exec, wf);
74
+ throw err;
75
+ }
76
+ return null;
77
+ }
78
+ async signal(executionId, event, payload) {
79
+ const exec = this.store.get(executionId);
80
+ if (!exec)
81
+ throw new Error(`Execution "${executionId}" not found`);
82
+ exec.signals[event] = payload;
83
+ exec.state = 'running';
84
+ this.store.update(exec);
85
+ await this.enqueueNode(exec);
86
+ }
87
+ getExecution(id) {
88
+ return this.store.get(id);
89
+ }
90
+ listExecutions(workflowName, state) {
91
+ return this.store.list(workflowName, state);
92
+ }
93
+ // ============ Internal ============
94
+ async executeNode(exec, node, nodeIndex, wf) {
95
+ if (node.type === 'step') {
96
+ await this.executeStep(exec, node.def, nodeIndex, wf);
97
+ }
98
+ else if (node.type === 'branch') {
99
+ await this.executeBranch(exec, node, nodeIndex, wf);
100
+ }
101
+ else {
102
+ await this.executeWaitFor(exec, node, nodeIndex);
103
+ }
104
+ }
105
+ async executeStep(exec, def, nodeIndex, wf) {
106
+ const ctx = this.buildContext(exec);
107
+ exec.steps[def.name] = { status: 'running', startedAt: Date.now() };
108
+ this.store.update(exec);
109
+ try {
110
+ const result = await this.runWithTimeout(def.handler(ctx), def.timeout);
111
+ exec.steps[def.name] = {
112
+ status: 'completed',
113
+ result,
114
+ startedAt: exec.steps[def.name].startedAt,
115
+ completedAt: Date.now(),
116
+ };
117
+ exec.currentNodeIndex = nodeIndex + 1;
118
+ this.store.update(exec);
119
+ await this.advanceToNext(exec, wf);
120
+ }
121
+ catch (err) {
122
+ exec.steps[def.name] = {
123
+ status: 'failed',
124
+ error: String(err),
125
+ startedAt: exec.steps[def.name].startedAt,
126
+ completedAt: Date.now(),
127
+ };
128
+ this.store.update(exec);
129
+ throw err;
130
+ }
131
+ }
132
+ async executeBranch(exec, node, nodeIndex, wf) {
133
+ const ctx = this.buildContext(exec);
134
+ const pathName = node.def.condition(ctx);
135
+ const pathSteps = node.def.paths.get(pathName);
136
+ if (!pathSteps || pathSteps.length === 0) {
137
+ exec.currentNodeIndex = nodeIndex + 1;
138
+ this.store.update(exec);
139
+ await this.advanceToNext(exec, wf);
140
+ return;
141
+ }
142
+ // Execute branch steps inline
143
+ for (const step of pathSteps) {
144
+ await this.executeStep(exec, step, nodeIndex, wf);
145
+ }
146
+ exec.currentNodeIndex = nodeIndex + 1;
147
+ this.store.update(exec);
148
+ await this.advanceToNext(exec, wf);
149
+ }
150
+ async executeWaitFor(exec, node, nodeIndex) {
151
+ if (exec.signals[node.event] !== undefined) {
152
+ exec.currentNodeIndex = nodeIndex + 1;
153
+ this.store.update(exec);
154
+ await this.enqueueNode(exec);
155
+ return;
156
+ }
157
+ // Not yet received — pause execution
158
+ exec.state = 'waiting';
159
+ this.store.update(exec);
160
+ throw new WaitForSignalError(node.event);
161
+ }
162
+ async advanceToNext(exec, wf) {
163
+ if (exec.currentNodeIndex >= wf.nodes.length) {
164
+ exec.state = 'completed';
165
+ this.store.update(exec);
166
+ return;
167
+ }
168
+ await this.enqueueNode(exec);
169
+ }
170
+ async enqueueNode(exec) {
171
+ const jobData = {
172
+ executionId: exec.id,
173
+ workflowName: exec.workflowName,
174
+ nodeIndex: exec.currentNodeIndex,
175
+ };
176
+ await this.queue.add('wf:step', jobData);
177
+ }
178
+ async runCompensation(exec, wf) {
179
+ const completedSteps = Object.entries(exec.steps)
180
+ .filter(([, s]) => s.status === 'completed')
181
+ .reverse();
182
+ if (completedSteps.length === 0)
183
+ return;
184
+ exec.state = 'compensating';
185
+ this.store.update(exec);
186
+ const ctx = this.buildContext(exec);
187
+ for (const [name] of completedSteps) {
188
+ const def = this.findStepDef(wf, name);
189
+ if (def?.compensate) {
190
+ try {
191
+ await def.compensate(ctx);
192
+ }
193
+ catch {
194
+ // Compensation errors are logged but don't stop the chain
195
+ }
196
+ }
197
+ }
198
+ exec.state = 'failed';
199
+ this.store.update(exec);
200
+ }
201
+ findStepDef(wf, name) {
202
+ for (const node of wf.nodes) {
203
+ if (node.type === 'step' && node.def.name === name)
204
+ return node.def;
205
+ if (node.type === 'branch') {
206
+ for (const steps of node.def.paths.values()) {
207
+ const found = steps.find((s) => s.name === name);
208
+ if (found)
209
+ return found;
210
+ }
211
+ }
212
+ }
213
+ return null;
214
+ }
215
+ buildContext(exec) {
216
+ const stepResults = {};
217
+ for (const [name, record] of Object.entries(exec.steps)) {
218
+ if (record.status === 'completed')
219
+ stepResults[name] = record.result;
220
+ }
221
+ return {
222
+ input: exec.input,
223
+ steps: stepResults,
224
+ signals: exec.signals,
225
+ executionId: exec.id,
226
+ };
227
+ }
228
+ runWithTimeout(promise, timeoutMs) {
229
+ if (!(promise instanceof Promise))
230
+ return Promise.resolve(promise);
231
+ if (timeoutMs <= 0)
232
+ return promise;
233
+ return new Promise((resolve, reject) => {
234
+ const timer = setTimeout(() => {
235
+ reject(new Error(`Step timed out after ${timeoutMs}ms`));
236
+ }, timeoutMs);
237
+ promise.then((v) => {
238
+ clearTimeout(timer);
239
+ resolve(v);
240
+ }, (e) => {
241
+ clearTimeout(timer);
242
+ reject(e instanceof Error ? e : new Error(String(e)));
243
+ });
244
+ });
245
+ }
246
+ }
247
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/client/workflow/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * bunqueue Workflow Engine
3
+ *
4
+ * Lightweight workflow orchestration built on top of bunqueue.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { Workflow, Engine } from 'bunqueue/workflow';
9
+ *
10
+ * const flow = new Workflow('onboarding')
11
+ * .step('create', async (ctx) => { ... })
12
+ * .step('notify', async (ctx) => { ... });
13
+ *
14
+ * const engine = new Engine({ embedded: true });
15
+ * engine.register(flow);
16
+ * const run = await engine.start('onboarding', { email: 'user@test.com' });
17
+ * ```
18
+ */
19
+ export { Workflow } from './workflow';
20
+ export { Engine } from './engine';
21
+ export type { StepContext, StepHandler, CompensateHandler, StepOptions, Execution, ExecutionState, StepState, StepRecord, EngineOptions, RunHandle, } from './types';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,cAAc,EACd,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,GACV,MAAM,SAAS,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * bunqueue Workflow Engine
3
+ *
4
+ * Lightweight workflow orchestration built on top of bunqueue.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { Workflow, Engine } from 'bunqueue/workflow';
9
+ *
10
+ * const flow = new Workflow('onboarding')
11
+ * .step('create', async (ctx) => { ... })
12
+ * .step('notify', async (ctx) => { ... });
13
+ *
14
+ * const engine = new Engine({ embedded: true });
15
+ * engine.register(flow);
16
+ * const run = await engine.start('onboarding', { email: 'user@test.com' });
17
+ * ```
18
+ */
19
+ export { Workflow } from './workflow';
20
+ export { Engine } from './engine';
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/workflow/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * WorkflowStore - SQLite persistence for workflow executions
3
+ */
4
+ import type { Execution, ExecutionState } from './types';
5
+ export declare class WorkflowStore {
6
+ private readonly db;
7
+ private readonly stmts;
8
+ constructor(dbPath?: string);
9
+ save(exec: Execution): void;
10
+ get(id: string): Execution | null;
11
+ update(exec: Execution): void;
12
+ list(workflowName?: string, state?: ExecutionState): Execution[];
13
+ close(): void;
14
+ private rowToExecution;
15
+ }
16
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAc,MAAM,SAAS,CAAC;AA+BrE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAQpB;gBAEU,MAAM,CAAC,EAAE,MAAM;IAgC3B,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAe3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKjC,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAa7B,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,EAAE;IAchE,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,cAAc;CAgBvB"}