bunqueue 2.7.3 → 2.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/workflow/compensator.d.ts +15 -0
- package/dist/client/workflow/compensator.d.ts.map +1 -0
- package/dist/client/workflow/compensator.js +38 -0
- package/dist/client/workflow/compensator.js.map +1 -0
- package/dist/client/workflow/engine.d.ts +8 -1
- package/dist/client/workflow/engine.d.ts.map +1 -1
- package/dist/client/workflow/engine.js +9 -0
- package/dist/client/workflow/engine.js.map +1 -1
- package/dist/client/workflow/executor.d.ts +5 -2
- package/dist/client/workflow/executor.d.ts.map +1 -1
- package/dist/client/workflow/executor.js +38 -59
- package/dist/client/workflow/executor.js.map +1 -1
- package/dist/client/workflow/index.d.ts +1 -1
- package/dist/client/workflow/index.d.ts.map +1 -1
- package/dist/client/workflow/recovery.d.ts +23 -0
- package/dist/client/workflow/recovery.d.ts.map +1 -0
- package/dist/client/workflow/recovery.js +74 -0
- package/dist/client/workflow/recovery.js.map +1 -0
- package/dist/client/workflow/store.d.ts +2 -0
- package/dist/client/workflow/store.d.ts.map +1 -1
- package/dist/client/workflow/store.js +6 -0
- package/dist/client/workflow/store.js.map +1 -1
- package/dist/client/workflow/types.d.ts +37 -22
- package/dist/client/workflow/types.d.ts.map +1 -1
- package/dist/client/workflow/workflow.d.ts +17 -14
- package/dist/client/workflow/workflow.d.ts.map +1 -1
- package/dist/client/workflow/workflow.js +30 -20
- package/dist/client/workflow/workflow.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compensation logic - runs compensate handlers in reverse order on failure
|
|
3
|
+
*/
|
|
4
|
+
import type { Execution } from './types';
|
|
5
|
+
import type { Workflow } from './workflow';
|
|
6
|
+
import type { WorkflowStore } from './store';
|
|
7
|
+
import type { WorkflowEmitter } from './emitter';
|
|
8
|
+
/** Sentinel error thrown when execution must pause for a signal */
|
|
9
|
+
export declare class WaitForSignalError extends Error {
|
|
10
|
+
readonly event: string;
|
|
11
|
+
constructor(event: string);
|
|
12
|
+
}
|
|
13
|
+
/** Run compensation handlers in reverse order for all completed steps */
|
|
14
|
+
export declare function runCompensation(exec: Execution, wf: Workflow, store: WorkflowStore, emitter: WorkflowEmitter | null): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=compensator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compensator.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/compensator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,mEAAmE;AACnE,qBAAa,kBAAmB,SAAQ,KAAK;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CAGnC;AAED,yEAAyE;AACzE,wBAAsB,eAAe,CACnC,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,eAAe,GAAG,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compensation logic - runs compensate handlers in reverse order on failure
|
|
3
|
+
*/
|
|
4
|
+
import { findStepDef, buildContext } from './runner';
|
|
5
|
+
/** Sentinel error thrown when execution must pause for a signal */
|
|
6
|
+
export class WaitForSignalError extends Error {
|
|
7
|
+
event;
|
|
8
|
+
constructor(event) {
|
|
9
|
+
super(`Waiting for signal: ${event}`);
|
|
10
|
+
this.event = event;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/** Run compensation handlers in reverse order for all completed steps */
|
|
14
|
+
export async function runCompensation(exec, wf, store, emitter) {
|
|
15
|
+
const completed = Object.entries(exec.steps)
|
|
16
|
+
.filter(([name, s]) => s.status === 'completed' && !name.startsWith('__'))
|
|
17
|
+
.reverse();
|
|
18
|
+
if (completed.length === 0)
|
|
19
|
+
return;
|
|
20
|
+
exec.state = 'compensating';
|
|
21
|
+
store.update(exec);
|
|
22
|
+
emitter?.emitWorkflow('workflow:compensating', exec.id, exec.workflowName, 'compensating');
|
|
23
|
+
const ctx = buildContext(exec);
|
|
24
|
+
for (const [name] of completed) {
|
|
25
|
+
const def = findStepDef(wf, name);
|
|
26
|
+
if (def?.compensate) {
|
|
27
|
+
try {
|
|
28
|
+
await def.compensate(ctx);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Compensation errors don't stop the chain
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exec.state = 'failed';
|
|
36
|
+
store.update(exec);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=compensator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compensator.js","sourceRoot":"","sources":["../../../src/client/workflow/compensator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAErD,mEAAmE;AACnE,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACtB;IAArB,YAAqB,KAAa;QAChC,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;QADnB,UAAK,GAAL,KAAK,CAAQ;IAElC,CAAC;CACF;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAe,EACf,EAAY,EACZ,KAAoB,EACpB,OAA+B;IAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;SACzC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACzE,OAAO,EAAE,CAAC;IACb,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEnC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;IAC5B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAE3F,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,GAAG,EAAE,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACtB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Manages lifecycle of internal Queue, Worker, and Store.
|
|
4
4
|
*/
|
|
5
5
|
import type { Workflow } from './workflow';
|
|
6
|
-
import type { EngineOptions, RunHandle, Execution, ExecutionState, WorkflowEventType, WorkflowEventListener } from './types';
|
|
6
|
+
import type { EngineOptions, RunHandle, Execution, ExecutionState, RecoverResult, WorkflowEventType, WorkflowEventListener } from './types';
|
|
7
7
|
export declare class Engine {
|
|
8
8
|
private readonly queue;
|
|
9
9
|
private readonly worker;
|
|
@@ -21,6 +21,13 @@ export declare class Engine {
|
|
|
21
21
|
listExecutions(workflowName?: string, state?: ExecutionState): Execution[];
|
|
22
22
|
/** Send a signal to a waiting execution */
|
|
23
23
|
signal(executionId: string, event: string, payload?: unknown): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Recover orphaned executions after a crash/restart.
|
|
26
|
+
* - 'running' executions: re-enqueued at their current step
|
|
27
|
+
* - 'waiting' executions: timeout timers re-armed (or resumed if signal arrived)
|
|
28
|
+
* - 'compensating' executions: compensation re-run (handlers must be idempotent)
|
|
29
|
+
*/
|
|
30
|
+
recover(): Promise<RecoverResult>;
|
|
24
31
|
/** Subscribe to a specific workflow event type */
|
|
25
32
|
on(type: WorkflowEventType, listener: WorkflowEventListener): this;
|
|
26
33
|
/** Subscribe to all workflow events */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,cAAc,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,cAAc,EACd,aAAa,EAEb,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAIjB,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;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;gBAE9B,IAAI,GAAE,aAAkB;IAiCpC,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;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IAMvC,kDAAkD;IAClD,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAKlE,uCAAuC;IACvC,KAAK,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAK5C,6CAA6C;IAC7C,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAKnE,uCAAuC;IACvC,MAAM,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAK7C,uDAAuD;IACvD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAU3E,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,MAAM;IAI5D,iDAAiD;IACjD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,MAAM;IAI5D,mCAAmC;IACnC,gBAAgB,IAAI,MAAM;IAI1B,2BAA2B;IACrB,KAAK,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAM1C"}
|
|
@@ -58,6 +58,15 @@ export class Engine {
|
|
|
58
58
|
async signal(executionId, event, payload) {
|
|
59
59
|
return this.executor.signal(executionId, event, payload);
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Recover orphaned executions after a crash/restart.
|
|
63
|
+
* - 'running' executions: re-enqueued at their current step
|
|
64
|
+
* - 'waiting' executions: timeout timers re-armed (or resumed if signal arrived)
|
|
65
|
+
* - 'compensating' executions: compensation re-run (handlers must be idempotent)
|
|
66
|
+
*/
|
|
67
|
+
async recover() {
|
|
68
|
+
return this.executor.recover();
|
|
69
|
+
}
|
|
61
70
|
// ============ Observability ============
|
|
62
71
|
/** Subscribe to a specific workflow event type */
|
|
63
72
|
on(type, listener) {
|
|
@@ -1 +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;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
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;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAa5C,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAExC,MAAM,OAAO,MAAM;IACA,KAAK,CAAQ;IACb,MAAM,CAAS;IACf,KAAK,CAAgB;IACrB,QAAQ,CAAmB;IAC3B,OAAO,CAAkB;IAE1C,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,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE3E,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;;;;;OAKG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,0CAA0C;IAE1C,kDAAkD;IAClD,EAAE,CAAC,IAAuB,EAAE,QAA+B;QACzD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,QAA+B;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6CAA6C;IAC7C,GAAG,CAAC,IAAuB,EAAE,QAA+B;QAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAuC;IACvC,MAAM,CAAC,QAA+B;QACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uDAAuD;IACvD,SAAS,CAAC,WAAmB,EAAE,QAA+B;QAC5D,MAAM,MAAM,GAA0B,CAAC,KAAK,EAAE,EAAE;YAC9C,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW;gBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,oCAAoC;IAEpC,6CAA6C;IAC7C,OAAO,CAAC,QAAgB,EAAE,MAAyB;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,iDAAiD;IACjD,OAAO,CAAC,QAAgB,EAAE,MAAyB;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,mCAAmC;IACnC,gBAAgB;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACvC,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;QACnB,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -3,20 +3,21 @@ import type { Queue } from '../queue/queue';
|
|
|
3
3
|
import type { Workflow } from './workflow';
|
|
4
4
|
import type { WorkflowStore } from './store';
|
|
5
5
|
import type { WorkflowEmitter } from './emitter';
|
|
6
|
-
import type { Execution, StepJobData, RunHandle } from './types';
|
|
6
|
+
import type { Execution, StepJobData, RunHandle, RecoverResult } from './types';
|
|
7
7
|
export declare class WorkflowExecutor {
|
|
8
8
|
private readonly store;
|
|
9
9
|
private readonly queue;
|
|
10
10
|
private readonly emitter;
|
|
11
11
|
private readonly workflows;
|
|
12
12
|
private readonly timeoutTimers;
|
|
13
|
+
private readonly updateFn;
|
|
13
14
|
constructor(store: WorkflowStore, queue: Queue, emitter?: WorkflowEmitter | null);
|
|
14
15
|
register(workflow: Workflow): void;
|
|
15
16
|
start(workflowName: string, input: unknown): Promise<RunHandle>;
|
|
16
17
|
processStep(data: StepJobData): Promise<unknown>;
|
|
17
18
|
signal(executionId: string, event: string, payload: unknown): Promise<void>;
|
|
18
19
|
getExecution(id: string): Execution | null;
|
|
19
|
-
listExecutions(
|
|
20
|
+
listExecutions(wfName?: string, state?: Execution['state']): Execution[];
|
|
20
21
|
private executeNode;
|
|
21
22
|
private runStep;
|
|
22
23
|
private runBranch;
|
|
@@ -30,5 +31,7 @@ export declare class WorkflowExecutor {
|
|
|
30
31
|
private enqueue;
|
|
31
32
|
private scheduleTimeoutCheck;
|
|
32
33
|
private compensate;
|
|
34
|
+
/** Recover orphaned executions after a crash/restart */
|
|
35
|
+
recover(): Promise<RecoverResult>;
|
|
33
36
|
}
|
|
34
37
|
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/executor.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,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,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/executor.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,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,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EAGd,MAAM,SAAS,CAAC;AAWjB,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoD;IAElF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;gBAG/B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,eAAe,GAAG,IAAW;IAOzD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAS5B,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;IAuB/D,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BhD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAejF,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAG1C,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,EAAE;YAI1D,WAAW;YAiBX,OAAO;YAMP,SAAS;YAgBT,WAAW;YAgBX,cAAc;YAiBd,UAAU;YAsCV,OAAO;YAWP,UAAU;YAUV,MAAM;YAUN,OAAO;YAYP,OAAO;IASrB,OAAO,CAAC,oBAAoB;YAWd,UAAU;IAIxB,wDAAwD;IAClD,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;CAYxC"}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import { executeStepWithRetry, executeParallelSteps, executeSubWorkflow,
|
|
1
|
+
import { executeStepWithRetry, executeParallelSteps, executeSubWorkflow, buildContext, } from './runner';
|
|
2
2
|
import { executeDoUntil, executeDoWhile, executeForEach, executeMap } from './loops';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
constructor(event) {
|
|
6
|
-
super(`Waiting for signal: ${event}`);
|
|
7
|
-
this.event = event;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
3
|
+
import { WaitForSignalError, runCompensation } from './compensator';
|
|
4
|
+
import { recoverExecutions } from './recovery';
|
|
10
5
|
export class WorkflowExecutor {
|
|
11
6
|
store;
|
|
12
7
|
queue;
|
|
13
8
|
emitter;
|
|
14
9
|
workflows = new Map();
|
|
15
10
|
timeoutTimers = new Map();
|
|
11
|
+
updateFn;
|
|
16
12
|
constructor(store, queue, emitter = null) {
|
|
17
13
|
this.store = store;
|
|
18
14
|
this.queue = queue;
|
|
19
15
|
this.emitter = emitter;
|
|
16
|
+
this.updateFn = (e) => {
|
|
17
|
+
this.store.update(e);
|
|
18
|
+
};
|
|
20
19
|
}
|
|
21
20
|
register(workflow) {
|
|
22
21
|
const names = workflow.getStepNames();
|
|
@@ -33,8 +32,9 @@ export class WorkflowExecutor {
|
|
|
33
32
|
if (wf.nodes.length === 0)
|
|
34
33
|
throw new Error(`Workflow "${workflowName}" has no steps`);
|
|
35
34
|
const now = Date.now();
|
|
35
|
+
const id = `wf_${now}_${Math.random().toString(36).slice(2, 10)}`;
|
|
36
36
|
const exec = {
|
|
37
|
-
id
|
|
37
|
+
id,
|
|
38
38
|
workflowName,
|
|
39
39
|
state: 'running',
|
|
40
40
|
input,
|
|
@@ -45,9 +45,9 @@ export class WorkflowExecutor {
|
|
|
45
45
|
updatedAt: now,
|
|
46
46
|
};
|
|
47
47
|
this.store.save(exec);
|
|
48
|
-
this.emitter?.emitWorkflow('workflow:started',
|
|
48
|
+
this.emitter?.emitWorkflow('workflow:started', id, workflowName, 'running', { input });
|
|
49
49
|
await this.enqueue(exec);
|
|
50
|
-
return { id
|
|
50
|
+
return { id, workflowName };
|
|
51
51
|
}
|
|
52
52
|
async processStep(data) {
|
|
53
53
|
const exec = this.store.get(data.executionId);
|
|
@@ -84,7 +84,6 @@ export class WorkflowExecutor {
|
|
|
84
84
|
const exec = this.store.get(executionId);
|
|
85
85
|
if (!exec)
|
|
86
86
|
throw new Error(`Execution "${executionId}" not found`);
|
|
87
|
-
// Cancel any pending timeout timer for this execution
|
|
88
87
|
const timer = this.timeoutTimers.get(executionId);
|
|
89
88
|
if (timer) {
|
|
90
89
|
clearTimeout(timer);
|
|
@@ -99,8 +98,8 @@ export class WorkflowExecutor {
|
|
|
99
98
|
getExecution(id) {
|
|
100
99
|
return this.store.get(id);
|
|
101
100
|
}
|
|
102
|
-
listExecutions(
|
|
103
|
-
return this.store.list(
|
|
101
|
+
listExecutions(wfName, state) {
|
|
102
|
+
return this.store.list(wfName, state);
|
|
104
103
|
}
|
|
105
104
|
async executeNode(exec, node, idx, wf) {
|
|
106
105
|
if (node.type === 'step')
|
|
@@ -124,9 +123,7 @@ export class WorkflowExecutor {
|
|
|
124
123
|
}
|
|
125
124
|
async runStep(exec, def, idx, wf) {
|
|
126
125
|
const ctx = buildContext(exec);
|
|
127
|
-
await executeStepWithRetry(def, ctx, exec, this.emitter,
|
|
128
|
-
this.store.update(e);
|
|
129
|
-
});
|
|
126
|
+
await executeStepWithRetry(def, ctx, exec, this.emitter, this.updateFn);
|
|
130
127
|
await this.advance(exec, idx + 1, wf);
|
|
131
128
|
}
|
|
132
129
|
async runBranch(exec, node, idx, wf) {
|
|
@@ -134,17 +131,13 @@ export class WorkflowExecutor {
|
|
|
134
131
|
const pathSteps = node.def.paths.get(pathName);
|
|
135
132
|
if (pathSteps && pathSteps.length > 0) {
|
|
136
133
|
for (const step of pathSteps) {
|
|
137
|
-
await executeStepWithRetry(step, buildContext(exec), exec, this.emitter,
|
|
138
|
-
this.store.update(e);
|
|
139
|
-
});
|
|
134
|
+
await executeStepWithRetry(step, buildContext(exec), exec, this.emitter, this.updateFn);
|
|
140
135
|
}
|
|
141
136
|
}
|
|
142
137
|
await this.advance(exec, idx + 1, wf);
|
|
143
138
|
}
|
|
144
139
|
async runParallel(exec, node, idx, wf) {
|
|
145
|
-
await executeParallelSteps(node.def.steps, buildContext(exec), exec, this.emitter,
|
|
146
|
-
this.store.update(e);
|
|
147
|
-
});
|
|
140
|
+
await executeParallelSteps(node.def.steps, buildContext(exec), exec, this.emitter, this.updateFn);
|
|
148
141
|
await this.advance(exec, idx + 1, wf);
|
|
149
142
|
}
|
|
150
143
|
async runSubWorkflow(exec, node, idx, wf) {
|
|
@@ -162,16 +155,15 @@ export class WorkflowExecutor {
|
|
|
162
155
|
if (node.timeout !== undefined) {
|
|
163
156
|
const existing = exec.steps[waitKey];
|
|
164
157
|
const waitingSince = existing?.startedAt ?? Date.now();
|
|
165
|
-
if (!existing)
|
|
158
|
+
if (!existing)
|
|
166
159
|
exec.steps[waitKey] = { status: 'running', startedAt: waitingSince };
|
|
167
|
-
}
|
|
168
160
|
if (Date.now() - waitingSince >= node.timeout) {
|
|
169
161
|
this.emitter?.emitSignal('signal:timeout', exec.id, exec.workflowName, node.event);
|
|
170
162
|
exec.steps[waitKey] = {
|
|
171
163
|
status: 'failed',
|
|
172
|
-
error: `Signal "${node.event}" timed out after ${node.timeout}ms`,
|
|
173
164
|
startedAt: waitingSince,
|
|
174
165
|
completedAt: Date.now(),
|
|
166
|
+
error: `Signal "${node.event}" timed out after ${node.timeout}ms`,
|
|
175
167
|
};
|
|
176
168
|
exec.state = 'failed';
|
|
177
169
|
this.store.update(exec);
|
|
@@ -179,7 +171,6 @@ export class WorkflowExecutor {
|
|
|
179
171
|
throw new Error(`Signal "${node.event}" timed out`);
|
|
180
172
|
}
|
|
181
173
|
this.store.update(exec);
|
|
182
|
-
// Schedule a timer to re-check after timeout
|
|
183
174
|
const remaining = node.timeout - (Date.now() - waitingSince);
|
|
184
175
|
this.scheduleTimeoutCheck(exec.id, exec.workflowName, exec.currentNodeIndex, remaining);
|
|
185
176
|
}
|
|
@@ -189,21 +180,15 @@ export class WorkflowExecutor {
|
|
|
189
180
|
throw new WaitForSignalError(node.event);
|
|
190
181
|
}
|
|
191
182
|
async runLoop(exec, node, idx, wf, loopFn) {
|
|
192
|
-
await loopFn(node.def, exec, this.emitter,
|
|
193
|
-
this.store.update(e);
|
|
194
|
-
});
|
|
183
|
+
await loopFn(node.def, exec, this.emitter, this.updateFn);
|
|
195
184
|
await this.advance(exec, idx + 1, wf);
|
|
196
185
|
}
|
|
197
186
|
async runForEach(exec, node, idx, wf) {
|
|
198
|
-
await executeForEach(node.def, exec, this.emitter,
|
|
199
|
-
this.store.update(e);
|
|
200
|
-
});
|
|
187
|
+
await executeForEach(node.def, exec, this.emitter, this.updateFn);
|
|
201
188
|
await this.advance(exec, idx + 1, wf);
|
|
202
189
|
}
|
|
203
190
|
async runMap(exec, node, idx, wf) {
|
|
204
|
-
await executeMap(node.def, exec, this.emitter,
|
|
205
|
-
this.store.update(e);
|
|
206
|
-
});
|
|
191
|
+
await executeMap(node.def, exec, this.emitter, this.updateFn);
|
|
207
192
|
await this.advance(exec, idx + 1, wf);
|
|
208
193
|
}
|
|
209
194
|
async advance(exec, nextIdx, wf) {
|
|
@@ -230,33 +215,27 @@ export class WorkflowExecutor {
|
|
|
230
215
|
const timer = setTimeout(() => {
|
|
231
216
|
this.timeoutTimers.delete(execId);
|
|
232
217
|
const jobData = { executionId: execId, workflowName, nodeIndex: nodeIdx };
|
|
233
|
-
this.queue.add('wf:step', jobData).catch(() => {
|
|
218
|
+
this.queue.add('wf:step', jobData).catch(() => {
|
|
219
|
+
/* Queue may be closed */
|
|
220
|
+
});
|
|
234
221
|
}, ms);
|
|
235
222
|
this.timeoutTimers.set(execId, timer);
|
|
236
223
|
}
|
|
237
224
|
async compensate(exec, wf) {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
253
|
-
catch {
|
|
254
|
-
// Compensation errors don't stop the chain
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
exec.state = 'failed';
|
|
259
|
-
this.store.update(exec);
|
|
225
|
+
await runCompensation(exec, wf, this.store, this.emitter);
|
|
226
|
+
}
|
|
227
|
+
/** Recover orphaned executions after a crash/restart */
|
|
228
|
+
async recover() {
|
|
229
|
+
return recoverExecutions({
|
|
230
|
+
store: this.store,
|
|
231
|
+
queue: this.queue,
|
|
232
|
+
workflows: this.workflows,
|
|
233
|
+
emitter: this.emitter,
|
|
234
|
+
timeoutTimers: this.timeoutTimers,
|
|
235
|
+
scheduleTimeoutCheck: (id, name, idx, ms) => {
|
|
236
|
+
this.scheduleTimeoutCheck(id, name, idx, ms);
|
|
237
|
+
},
|
|
238
|
+
});
|
|
260
239
|
}
|
|
261
240
|
}
|
|
262
241
|
//# sourceMappingURL=executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/client/workflow/executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/client/workflow/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,5 +19,5 @@
|
|
|
19
19
|
export { Workflow } from './workflow';
|
|
20
20
|
export { Engine } from './engine';
|
|
21
21
|
export { WorkflowEmitter } from './emitter';
|
|
22
|
-
export type { StepContext, StepHandler, CompensateHandler, StepOptions, SchemaLike, Execution, ExecutionState, StepState, StepRecord, EngineOptions, RunHandle, ParallelDefinition, SubWorkflowInputMapper, LoopCondition, ForEachItemsExtractor, MapTransformFn, LoopDefinition, ForEachDefinition, MapDefinition, CleanupOptions, WorkflowEventType, WorkflowEvent, StepEvent, WorkflowLifecycleEvent, SignalEvent, WorkflowEventListener, } from './types';
|
|
22
|
+
export type { StepContext, StepHandler, TypedStepHandler, CompensateHandler, TypedCompensateHandler, StepOptions, SchemaLike, Execution, ExecutionState, StepState, StepRecord, EngineOptions, RunHandle, ParallelDefinition, SubWorkflowInputMapper, LoopCondition, ForEachItemsExtractor, MapTransformFn, LoopDefinition, ForEachDefinition, MapDefinition, RecoverResult, CleanupOptions, WorkflowEventType, WorkflowEvent, StepEvent, WorkflowLifecycleEvent, SignalEvent, WorkflowEventListener, } from './types';
|
|
23
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +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,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,SAAS,EACT,cAAc,EACd,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,sBAAsB,EACtB,WAAW,EACX,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
|
|
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,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EACV,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,UAAU,EACV,SAAS,EACT,cAAc,EACd,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,sBAAsB,EACtB,WAAW,EACX,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recovery logic for orphaned workflow executions after crash/restart
|
|
3
|
+
*
|
|
4
|
+
* Handles three states:
|
|
5
|
+
* - 'running': re-enqueue the step at currentNodeIndex
|
|
6
|
+
* - 'waiting': re-arm timeout timer or resume if signal already arrived
|
|
7
|
+
* - 'compensating': re-run compensation from the beginning (must be idempotent)
|
|
8
|
+
*/
|
|
9
|
+
import type { Queue } from '../queue/queue';
|
|
10
|
+
import type { Workflow } from './workflow';
|
|
11
|
+
import type { WorkflowStore } from './store';
|
|
12
|
+
import type { WorkflowEmitter } from './emitter';
|
|
13
|
+
import type { RecoverResult } from './types';
|
|
14
|
+
export interface RecoverDeps {
|
|
15
|
+
store: WorkflowStore;
|
|
16
|
+
queue: Queue;
|
|
17
|
+
workflows: Map<string, Workflow>;
|
|
18
|
+
emitter: WorkflowEmitter | null;
|
|
19
|
+
timeoutTimers: Map<string, ReturnType<typeof setTimeout>>;
|
|
20
|
+
scheduleTimeoutCheck: (id: string, wfName: string, nodeIdx: number, ms: number) => void;
|
|
21
|
+
}
|
|
22
|
+
export declare function recoverExecutions(deps: RecoverDeps): Promise<RecoverResult>;
|
|
23
|
+
//# sourceMappingURL=recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/recovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;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,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAA0B,aAAa,EAAgB,MAAM,SAAS,CAAC;AAGnF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;IAC1D,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACzF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAuBjF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recovery logic for orphaned workflow executions after crash/restart
|
|
3
|
+
*
|
|
4
|
+
* Handles three states:
|
|
5
|
+
* - 'running': re-enqueue the step at currentNodeIndex
|
|
6
|
+
* - 'waiting': re-arm timeout timer or resume if signal already arrived
|
|
7
|
+
* - 'compensating': re-run compensation from the beginning (must be idempotent)
|
|
8
|
+
*/
|
|
9
|
+
import { runCompensation } from './compensator';
|
|
10
|
+
export async function recoverExecutions(deps) {
|
|
11
|
+
const { store, workflows } = deps;
|
|
12
|
+
const executions = store.listRecoverable();
|
|
13
|
+
const result = { running: 0, waiting: 0, compensating: 0, total: 0 };
|
|
14
|
+
for (const exec of executions) {
|
|
15
|
+
const wf = workflows.get(exec.workflowName);
|
|
16
|
+
if (!wf)
|
|
17
|
+
continue;
|
|
18
|
+
if (exec.state === 'running') {
|
|
19
|
+
await enqueueExecution(exec, deps.queue);
|
|
20
|
+
result.running++;
|
|
21
|
+
}
|
|
22
|
+
else if (exec.state === 'waiting') {
|
|
23
|
+
await recoverWaiting(exec, wf, deps);
|
|
24
|
+
result.waiting++;
|
|
25
|
+
}
|
|
26
|
+
else if (exec.state === 'compensating') {
|
|
27
|
+
await runCompensation(exec, wf, store, deps.emitter);
|
|
28
|
+
result.compensating++;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
result.total = result.running + result.waiting + result.compensating;
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
async function enqueueExecution(exec, queue) {
|
|
35
|
+
const jobData = {
|
|
36
|
+
executionId: exec.id,
|
|
37
|
+
workflowName: exec.workflowName,
|
|
38
|
+
nodeIndex: exec.currentNodeIndex,
|
|
39
|
+
};
|
|
40
|
+
await queue.add('wf:step', jobData);
|
|
41
|
+
}
|
|
42
|
+
async function recoverWaiting(exec, wf, deps) {
|
|
43
|
+
const node = wf.nodes[exec.currentNodeIndex];
|
|
44
|
+
if (node?.type !== 'waitFor') {
|
|
45
|
+
await enqueueExecution(exec, deps.queue);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// Check if signal already arrived while we were down
|
|
49
|
+
if (exec.signals[node.event] !== undefined) {
|
|
50
|
+
exec.state = 'running';
|
|
51
|
+
deps.store.update(exec);
|
|
52
|
+
await enqueueExecution(exec, deps.queue);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Re-arm timeout if configured
|
|
56
|
+
if (node.timeout !== undefined) {
|
|
57
|
+
if (deps.timeoutTimers.has(exec.id))
|
|
58
|
+
return;
|
|
59
|
+
const waitKey = `__waitFor:${node.event}`;
|
|
60
|
+
const waitRecord = exec.steps[waitKey];
|
|
61
|
+
const waitingSince = waitRecord?.startedAt ?? exec.updatedAt;
|
|
62
|
+
const elapsed = Date.now() - waitingSince;
|
|
63
|
+
const remaining = node.timeout - elapsed;
|
|
64
|
+
if (remaining <= 0) {
|
|
65
|
+
exec.state = 'running';
|
|
66
|
+
deps.store.update(exec);
|
|
67
|
+
await enqueueExecution(exec, deps.queue);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
deps.scheduleTimeoutCheck(exec.id, exec.workflowName, exec.currentNodeIndex, remaining);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../src/client/workflow/recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@ export declare class WorkflowStore {
|
|
|
10
10
|
get(id: string): Execution | null;
|
|
11
11
|
update(exec: Execution): void;
|
|
12
12
|
list(workflowName?: string, state?: ExecutionState): Execution[];
|
|
13
|
+
/** List all executions in recoverable states (running, waiting, compensating) */
|
|
14
|
+
listRecoverable(): Execution[];
|
|
13
15
|
/** Delete executions older than maxAge in terminal states */
|
|
14
16
|
cleanup(maxAgeMs: number, states?: string[]): number;
|
|
15
17
|
/** Archive executions older than maxAge to the archive table */
|
|
@@ -1 +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;AA8CrE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,
|
|
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;AA8CrE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CASpB;gBAEU,MAAM,CAAC,EAAE,MAAM;IAoC3B,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,iFAAiF;IACjF,eAAe,IAAI,SAAS,EAAE;IAK9B,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAA4B,GAAG,MAAM;IAU7E,gEAAgE;IAChE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAA4B,GAAG,MAAM;IAyC7E,mCAAmC;IACnC,gBAAgB,IAAI,MAAM;IAO1B,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,cAAc;CAgBvB"}
|
|
@@ -68,6 +68,7 @@ export class WorkflowStore {
|
|
|
68
68
|
listByName: this.db.prepare(`SELECT * FROM workflow_executions WHERE workflow_name = ? ORDER BY created_at DESC LIMIT 100`),
|
|
69
69
|
listByState: this.db.prepare(`SELECT * FROM workflow_executions WHERE state = ? ORDER BY created_at DESC LIMIT 100`),
|
|
70
70
|
listByBoth: this.db.prepare(`SELECT * FROM workflow_executions WHERE workflow_name = ? AND state = ? ORDER BY created_at DESC LIMIT 100`),
|
|
71
|
+
listRecoverable: this.db.prepare(`SELECT * FROM workflow_executions WHERE state IN ('running', 'waiting', 'compensating') ORDER BY updated_at ASC`),
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
74
|
save(exec) {
|
|
@@ -97,6 +98,11 @@ export class WorkflowStore {
|
|
|
97
98
|
}
|
|
98
99
|
return rows.map((r) => this.rowToExecution(r));
|
|
99
100
|
}
|
|
101
|
+
/** List all executions in recoverable states (running, waiting, compensating) */
|
|
102
|
+
listRecoverable() {
|
|
103
|
+
const rows = this.stmts.listRecoverable.all();
|
|
104
|
+
return rows.map((r) => this.rowToExecution(r));
|
|
105
|
+
}
|
|
100
106
|
/** Delete executions older than maxAge in terminal states */
|
|
101
107
|
cleanup(maxAgeMs, states = ['completed', 'failed']) {
|
|
102
108
|
const cutoff = Date.now() - maxAgeMs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/client/workflow/store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAG1C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvD,SAAS,IAAI,CAAC,IAAa;IACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,MAAM,CAAC,GAAsB;IACpC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;EAYnB,CAAC;AAEH,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;EAa3B,CAAC;AAEH,MAAM,eAAe,GAAG,8EAA8E,CAAC;AACvG,MAAM,gBAAgB,GAAG,uEAAuE,CAAC;AAEjG,MAAM,OAAO,aAAa;IACP,EAAE,CAAW;IACb,KAAK,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/client/workflow/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,29 +3,33 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { ConnectionOptions } from '../types';
|
|
5
5
|
/** Context passed to step handlers */
|
|
6
|
-
export interface StepContext<TInput = unknown> {
|
|
6
|
+
export interface StepContext<TInput = unknown, TSteps extends Record<string, unknown> = Record<string, unknown>> {
|
|
7
7
|
/** Original workflow input */
|
|
8
8
|
readonly input: TInput;
|
|
9
9
|
/** Results from completed steps (step name → result) */
|
|
10
|
-
readonly steps: Readonly<
|
|
10
|
+
readonly steps: Readonly<TSteps>;
|
|
11
11
|
/** Signals received via engine.signal() */
|
|
12
12
|
readonly signals: Readonly<Record<string, unknown>>;
|
|
13
13
|
/** Current execution ID */
|
|
14
14
|
readonly executionId: string;
|
|
15
15
|
}
|
|
16
|
-
/** Step handler function */
|
|
17
|
-
export type StepHandler<TInput = unknown, TResult = unknown> = (ctx: StepContext<TInput>) => Promise<TResult> | TResult;
|
|
18
|
-
/**
|
|
19
|
-
export type
|
|
16
|
+
/** Step handler function (type-erased for internal storage) */
|
|
17
|
+
export type StepHandler<TInput = unknown, TResult = unknown> = (ctx: StepContext<TInput, any>) => Promise<TResult> | TResult;
|
|
18
|
+
/** Typed step handler — preserves accumulated step types */
|
|
19
|
+
export type TypedStepHandler<TInput, TSteps extends Record<string, unknown>, TResult> = (ctx: StepContext<TInput, TSteps>) => Promise<TResult> | TResult;
|
|
20
|
+
/** Compensate handler (type-erased for internal storage) */
|
|
21
|
+
export type CompensateHandler<TInput = unknown> = (ctx: StepContext<TInput, any>) => Promise<void> | void;
|
|
22
|
+
/** Typed compensate handler — preserves accumulated step types */
|
|
23
|
+
export type TypedCompensateHandler<TInput, TSteps extends Record<string, unknown>> = (ctx: StepContext<TInput, TSteps>) => Promise<void> | void;
|
|
20
24
|
/** Schema-like object — any object with a .parse() method (Zod, ArkType, Valibot, etc.) */
|
|
21
25
|
export interface SchemaLike {
|
|
22
26
|
parse(data: unknown): unknown;
|
|
23
27
|
}
|
|
24
28
|
/** Options for a single step */
|
|
25
|
-
export interface StepOptions<TInput = unknown> {
|
|
29
|
+
export interface StepOptions<TInput = unknown, TSteps extends Record<string, unknown> = Record<string, unknown>> {
|
|
26
30
|
retry?: number;
|
|
27
31
|
timeout?: number;
|
|
28
|
-
compensate?: CompensateHandler<TInput>;
|
|
32
|
+
compensate?: TypedCompensateHandler<TInput, TSteps> | CompensateHandler<TInput>;
|
|
29
33
|
/** Validate step input before execution */
|
|
30
34
|
inputSchema?: SchemaLike;
|
|
31
35
|
/** Validate step output after execution */
|
|
@@ -42,10 +46,10 @@ export interface StepDefinition {
|
|
|
42
46
|
outputSchema?: SchemaLike;
|
|
43
47
|
}
|
|
44
48
|
/** Branch condition function */
|
|
45
|
-
export type BranchCondition = (ctx: StepContext) => string;
|
|
46
|
-
/** Internal branch definition */
|
|
49
|
+
export type BranchCondition<TInput = unknown, TSteps extends Record<string, unknown> = Record<string, unknown>> = (ctx: StepContext<TInput, TSteps>) => string;
|
|
50
|
+
/** Internal branch definition (type-erased) */
|
|
47
51
|
export interface BranchDefinition {
|
|
48
|
-
condition: BranchCondition
|
|
52
|
+
condition: BranchCondition<any, any>;
|
|
49
53
|
paths: Map<string, StepDefinition[]>;
|
|
50
54
|
}
|
|
51
55
|
/** Definition of a parallel step group */
|
|
@@ -53,29 +57,29 @@ export interface ParallelDefinition {
|
|
|
53
57
|
steps: StepDefinition[];
|
|
54
58
|
}
|
|
55
59
|
/** Input mapper for sub-workflows */
|
|
56
|
-
export type SubWorkflowInputMapper = (ctx: StepContext) => unknown;
|
|
60
|
+
export type SubWorkflowInputMapper<TInput = unknown, TSteps extends Record<string, unknown> = Record<string, unknown>> = (ctx: StepContext<TInput, TSteps>) => unknown;
|
|
57
61
|
/** Loop condition: receives context + iteration count, returns boolean */
|
|
58
|
-
export type LoopCondition = (ctx: StepContext, iteration: number) => boolean | Promise<boolean>;
|
|
59
|
-
/** Definition of a doUntil/doWhile loop */
|
|
62
|
+
export type LoopCondition<TInput = unknown, TSteps extends Record<string, unknown> = Record<string, unknown>> = (ctx: StepContext<TInput, TSteps>, iteration: number) => boolean | Promise<boolean>;
|
|
63
|
+
/** Definition of a doUntil/doWhile loop (type-erased) */
|
|
60
64
|
export interface LoopDefinition {
|
|
61
|
-
condition: LoopCondition
|
|
65
|
+
condition: LoopCondition<any, any>;
|
|
62
66
|
steps: StepDefinition[];
|
|
63
67
|
maxIterations: number;
|
|
64
68
|
}
|
|
65
69
|
/** Item extractor for forEach */
|
|
66
|
-
export type ForEachItemsExtractor = (ctx: StepContext) => unknown[];
|
|
67
|
-
/** Definition of a forEach loop */
|
|
70
|
+
export type ForEachItemsExtractor<TInput = unknown, TSteps extends Record<string, unknown> = Record<string, unknown>> = (ctx: StepContext<TInput, TSteps>) => unknown[];
|
|
71
|
+
/** Definition of a forEach loop (type-erased) */
|
|
68
72
|
export interface ForEachDefinition {
|
|
69
|
-
items: ForEachItemsExtractor
|
|
73
|
+
items: ForEachItemsExtractor<any, any>;
|
|
70
74
|
step: StepDefinition;
|
|
71
75
|
maxIterations: number;
|
|
72
76
|
}
|
|
73
77
|
/** Transform function for map */
|
|
74
|
-
export type MapTransformFn = (ctx: StepContext) => unknown;
|
|
75
|
-
/** Definition of a map node */
|
|
78
|
+
export type MapTransformFn<TInput = unknown, TSteps extends Record<string, unknown> = Record<string, unknown>> = (ctx: StepContext<TInput, TSteps>) => unknown;
|
|
79
|
+
/** Definition of a map node (type-erased) */
|
|
76
80
|
export interface MapDefinition {
|
|
77
81
|
name: string;
|
|
78
|
-
transform: MapTransformFn
|
|
82
|
+
transform: MapTransformFn<any, any>;
|
|
79
83
|
}
|
|
80
84
|
/** Workflow node (discriminated union) */
|
|
81
85
|
export type WorkflowNode = {
|
|
@@ -94,7 +98,7 @@ export type WorkflowNode = {
|
|
|
94
98
|
} | {
|
|
95
99
|
type: 'subWorkflow';
|
|
96
100
|
name: string;
|
|
97
|
-
inputMapper: SubWorkflowInputMapper
|
|
101
|
+
inputMapper: SubWorkflowInputMapper<any, any>;
|
|
98
102
|
} | {
|
|
99
103
|
type: 'doUntil';
|
|
100
104
|
def: LoopDefinition;
|
|
@@ -187,6 +191,17 @@ export interface StepJobData {
|
|
|
187
191
|
workflowName: string;
|
|
188
192
|
nodeIndex: number;
|
|
189
193
|
}
|
|
194
|
+
/** Result of engine.recover() */
|
|
195
|
+
export interface RecoverResult {
|
|
196
|
+
/** Number of running executions re-enqueued */
|
|
197
|
+
running: number;
|
|
198
|
+
/** Number of waiting executions with re-armed timers */
|
|
199
|
+
waiting: number;
|
|
200
|
+
/** Number of compensating executions re-run */
|
|
201
|
+
compensating: number;
|
|
202
|
+
/** Total recovered */
|
|
203
|
+
total: number;
|
|
204
|
+
}
|
|
190
205
|
/** Options for cleanup */
|
|
191
206
|
export interface CleanupOptions {
|
|
192
207
|
maxAge: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,sCAAsC;AACtC,MAAM,WAAW,WAAW,CAAC,MAAM,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow - DSL builder for defining workflow step graphs
|
|
3
3
|
* Pure data structure, no side effects.
|
|
4
|
+
*
|
|
5
|
+
* Supports type-safe step chaining: each .step() narrows the return type
|
|
6
|
+
* so subsequent steps can access previous results without casting.
|
|
4
7
|
*/
|
|
5
|
-
import type { WorkflowNode,
|
|
6
|
-
export declare class Workflow<TInput = unknown> {
|
|
8
|
+
import type { WorkflowNode, StepOptions, StepContext, BranchCondition, LoopCondition, ForEachItemsExtractor, TypedStepHandler } from './types';
|
|
9
|
+
export declare class Workflow<TInput = unknown, TSteps extends Record<string, unknown> = Record<string, unknown>> {
|
|
7
10
|
readonly name: string;
|
|
8
11
|
readonly nodes: WorkflowNode[];
|
|
9
12
|
constructor(name: string);
|
|
10
|
-
/** Add a step to the workflow */
|
|
11
|
-
step(name:
|
|
13
|
+
/** Add a step to the workflow — return type accumulates into TSteps */
|
|
14
|
+
step<TName extends string, TResult>(name: TName, handler: TypedStepHandler<TInput, TSteps, TResult>, options?: StepOptions<TInput, TSteps>): Workflow<TInput, TSteps & Record<TName, Awaited<TResult>>>;
|
|
12
15
|
/** Add a branch point — call .path() after this to define paths */
|
|
13
|
-
branch(condition: BranchCondition): this;
|
|
16
|
+
branch(condition: BranchCondition<TInput, TSteps>): this;
|
|
14
17
|
/** Define a branch path (must follow a .branch() call) */
|
|
15
|
-
path(name: string, builder: (w: Workflow<TInput>) => Workflow<TInput>): this;
|
|
16
|
-
/** Run multiple steps in parallel */
|
|
17
|
-
parallel(builder: (w: Workflow<TInput>) => Workflow<TInput>):
|
|
18
|
+
path(name: string, builder: (w: Workflow<TInput, TSteps>) => Workflow<TInput, any>): this;
|
|
19
|
+
/** Run multiple steps in parallel — accumulated types from sub-builder merge into TSteps */
|
|
20
|
+
parallel<TNewSteps extends Record<string, unknown>>(builder: (w: Workflow<TInput, TSteps>) => Workflow<TInput, TSteps & TNewSteps>): Workflow<TInput, TSteps & TNewSteps>;
|
|
18
21
|
/** Call another registered workflow as a step */
|
|
19
|
-
subWorkflow(name:
|
|
22
|
+
subWorkflow<TName extends string>(name: TName, inputMapper: (ctx: StepContext<TInput, TSteps>) => unknown): Workflow<TInput, TSteps & Record<`sub:${TName}`, Record<string, unknown>>>;
|
|
20
23
|
/** Wait for an external signal before continuing */
|
|
21
24
|
waitFor(event: string, options?: {
|
|
22
25
|
timeout?: number;
|
|
23
26
|
}): this;
|
|
24
27
|
/** Repeat steps until condition returns true (checked after each iteration) */
|
|
25
|
-
doUntil(condition: LoopCondition, builder: (w: Workflow<TInput>) => Workflow<TInput>, options?: {
|
|
28
|
+
doUntil(condition: LoopCondition<TInput, TSteps>, builder: (w: Workflow<TInput, TSteps>) => Workflow<TInput, any>, options?: {
|
|
26
29
|
maxIterations?: number;
|
|
27
30
|
}): this;
|
|
28
31
|
/** Repeat steps while condition returns true (checked before each iteration) */
|
|
29
|
-
doWhile(condition: LoopCondition, builder: (w: Workflow<TInput>) => Workflow<TInput>, options?: {
|
|
32
|
+
doWhile(condition: LoopCondition<TInput, TSteps>, builder: (w: Workflow<TInput, TSteps>) => Workflow<TInput, any>, options?: {
|
|
30
33
|
maxIterations?: number;
|
|
31
34
|
}): this;
|
|
32
35
|
/** Iterate over items, executing a step for each */
|
|
33
|
-
forEach(items: ForEachItemsExtractor, name:
|
|
36
|
+
forEach<TName extends string, TResult>(items: ForEachItemsExtractor<TInput, TSteps>, name: TName, handler: TypedStepHandler<TInput, TSteps, TResult>, options?: StepOptions<TInput, TSteps> & {
|
|
34
37
|
maxIterations?: number;
|
|
35
|
-
}):
|
|
38
|
+
}): Workflow<TInput, TSteps & Record<TName, Awaited<TResult>>>;
|
|
36
39
|
/** Transform step results into a new value stored under the given name */
|
|
37
|
-
map(name:
|
|
40
|
+
map<TName extends string, TResult>(name: TName, transform: (ctx: StepContext<TInput, TSteps>) => TResult): Workflow<TInput, TSteps & Record<TName, Awaited<TResult>>>;
|
|
38
41
|
/** Get flat list of step names for validation */
|
|
39
42
|
getStepNames(): string[];
|
|
40
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/workflow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/client/workflow/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow - DSL builder for defining workflow step graphs
|
|
3
3
|
* Pure data structure, no side effects.
|
|
4
|
+
*
|
|
5
|
+
* Supports type-safe step chaining: each .step() narrows the return type
|
|
6
|
+
* so subsequent steps can access previous results without casting.
|
|
4
7
|
*/
|
|
5
8
|
export class Workflow {
|
|
6
9
|
name;
|
|
@@ -8,7 +11,7 @@ export class Workflow {
|
|
|
8
11
|
constructor(name) {
|
|
9
12
|
this.name = name;
|
|
10
13
|
}
|
|
11
|
-
/** Add a step to the workflow */
|
|
14
|
+
/** Add a step to the workflow — return type accumulates into TSteps */
|
|
12
15
|
step(name, handler, options) {
|
|
13
16
|
this.nodes.push({
|
|
14
17
|
type: 'step',
|
|
@@ -28,7 +31,7 @@ export class Workflow {
|
|
|
28
31
|
branch(condition) {
|
|
29
32
|
this.nodes.push({
|
|
30
33
|
type: 'branch',
|
|
31
|
-
def: { condition, paths: new Map() },
|
|
34
|
+
def: { condition: condition, paths: new Map() },
|
|
32
35
|
});
|
|
33
36
|
return this;
|
|
34
37
|
}
|
|
@@ -46,7 +49,7 @@ export class Workflow {
|
|
|
46
49
|
lastNode.def.paths.set(name, steps);
|
|
47
50
|
return this;
|
|
48
51
|
}
|
|
49
|
-
/** Run multiple steps in parallel */
|
|
52
|
+
/** Run multiple steps in parallel — accumulated types from sub-builder merge into TSteps */
|
|
50
53
|
parallel(builder) {
|
|
51
54
|
const sub = new Workflow(`${this.name}:parallel`);
|
|
52
55
|
builder(sub);
|
|
@@ -70,11 +73,7 @@ export class Workflow {
|
|
|
70
73
|
}
|
|
71
74
|
/** Wait for an external signal before continuing */
|
|
72
75
|
waitFor(event, options) {
|
|
73
|
-
this.nodes.push({
|
|
74
|
-
type: 'waitFor',
|
|
75
|
-
event,
|
|
76
|
-
timeout: options?.timeout,
|
|
77
|
-
});
|
|
76
|
+
this.nodes.push({ type: 'waitFor', event, timeout: options?.timeout });
|
|
78
77
|
return this;
|
|
79
78
|
}
|
|
80
79
|
/** Repeat steps until condition returns true (checked after each iteration) */
|
|
@@ -88,7 +87,11 @@ export class Workflow {
|
|
|
88
87
|
throw new Error('doUntil() requires at least one step');
|
|
89
88
|
this.nodes.push({
|
|
90
89
|
type: 'doUntil',
|
|
91
|
-
def: {
|
|
90
|
+
def: {
|
|
91
|
+
condition: condition,
|
|
92
|
+
steps,
|
|
93
|
+
maxIterations: options?.maxIterations ?? 100,
|
|
94
|
+
},
|
|
92
95
|
});
|
|
93
96
|
return this;
|
|
94
97
|
}
|
|
@@ -103,7 +106,11 @@ export class Workflow {
|
|
|
103
106
|
throw new Error('doWhile() requires at least one step');
|
|
104
107
|
this.nodes.push({
|
|
105
108
|
type: 'doWhile',
|
|
106
|
-
def: {
|
|
109
|
+
def: {
|
|
110
|
+
condition: condition,
|
|
111
|
+
steps,
|
|
112
|
+
maxIterations: options?.maxIterations ?? 100,
|
|
113
|
+
},
|
|
107
114
|
});
|
|
108
115
|
return this;
|
|
109
116
|
}
|
|
@@ -120,22 +127,28 @@ export class Workflow {
|
|
|
120
127
|
};
|
|
121
128
|
this.nodes.push({
|
|
122
129
|
type: 'forEach',
|
|
123
|
-
def: {
|
|
130
|
+
def: {
|
|
131
|
+
items: items,
|
|
132
|
+
step,
|
|
133
|
+
maxIterations: options?.maxIterations ?? 1000,
|
|
134
|
+
},
|
|
124
135
|
});
|
|
125
136
|
return this;
|
|
126
137
|
}
|
|
127
138
|
/** Transform step results into a new value stored under the given name */
|
|
128
139
|
map(name, transform) {
|
|
129
|
-
this.nodes.push({
|
|
140
|
+
this.nodes.push({
|
|
141
|
+
type: 'map',
|
|
142
|
+
def: { name, transform: transform },
|
|
143
|
+
});
|
|
130
144
|
return this;
|
|
131
145
|
}
|
|
132
146
|
/** Get flat list of step names for validation */
|
|
133
147
|
getStepNames() {
|
|
134
148
|
const names = [];
|
|
135
149
|
for (const node of this.nodes) {
|
|
136
|
-
if (node.type === 'step')
|
|
150
|
+
if (node.type === 'step')
|
|
137
151
|
names.push(node.def.name);
|
|
138
|
-
}
|
|
139
152
|
else if (node.type === 'branch') {
|
|
140
153
|
for (const steps of node.def.paths.values()) {
|
|
141
154
|
for (const s of steps)
|
|
@@ -146,19 +159,16 @@ export class Workflow {
|
|
|
146
159
|
for (const s of node.def.steps)
|
|
147
160
|
names.push(s.name);
|
|
148
161
|
}
|
|
149
|
-
else if (node.type === 'subWorkflow')
|
|
162
|
+
else if (node.type === 'subWorkflow')
|
|
150
163
|
names.push(`sub:${node.name}`);
|
|
151
|
-
}
|
|
152
164
|
else if (node.type === 'doUntil' || node.type === 'doWhile') {
|
|
153
165
|
for (const s of node.def.steps)
|
|
154
166
|
names.push(s.name);
|
|
155
167
|
}
|
|
156
|
-
else if (node.type === 'forEach')
|
|
168
|
+
else if (node.type === 'forEach')
|
|
157
169
|
names.push(node.def.step.name);
|
|
158
|
-
|
|
159
|
-
else if (node.type === 'map') {
|
|
170
|
+
else if (node.type === 'map')
|
|
160
171
|
names.push(node.def.name);
|
|
161
|
-
}
|
|
162
172
|
}
|
|
163
173
|
return names;
|
|
164
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/client/workflow/workflow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/client/workflow/workflow.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bunqueue",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.4",
|
|
4
4
|
"description": "High-performance job queue for Bun & AI agents. SQLite persistence, cron scheduling, priorities, retries, DLQ, webhooks, native MCP server. Zero external dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/main.js",
|