@cogitator-ai/workflows 0.5.16 → 0.6.1
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/README.md +339 -772
- package/dist/builder.d.ts +5 -4
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +61 -77
- package/dist/builder.js.map +1 -1
- package/dist/checkpoint.d.ts.map +1 -1
- package/dist/checkpoint.js +23 -16
- package/dist/checkpoint.js.map +1 -1
- package/dist/executor.d.ts +34 -2
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +222 -37
- package/dist/executor.js.map +1 -1
- package/dist/human/approval-store.d.ts +0 -4
- package/dist/human/approval-store.d.ts.map +1 -1
- package/dist/human/approval-store.js +50 -38
- package/dist/human/approval-store.js.map +1 -1
- package/dist/human/human-node.d.ts.map +1 -1
- package/dist/human/human-node.js +6 -2
- package/dist/human/human-node.js.map +1 -1
- package/dist/human/notifiers.d.ts +0 -3
- package/dist/human/notifiers.d.ts.map +1 -1
- package/dist/human/notifiers.js +67 -25
- package/dist/human/notifiers.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/manager/scheduler.d.ts.map +1 -1
- package/dist/manager/scheduler.js +6 -2
- package/dist/manager/scheduler.js.map +1 -1
- package/dist/manager/workflow-manager.d.ts +11 -1
- package/dist/manager/workflow-manager.d.ts.map +1 -1
- package/dist/manager/workflow-manager.js +53 -8
- package/dist/manager/workflow-manager.js.map +1 -1
- package/dist/nodes/adapters.d.ts +60 -0
- package/dist/nodes/adapters.d.ts.map +1 -0
- package/dist/nodes/adapters.js +138 -0
- package/dist/nodes/adapters.js.map +1 -0
- package/dist/nodes/agent.d.ts +0 -15
- package/dist/nodes/agent.d.ts.map +1 -1
- package/dist/nodes/agent.js +17 -16
- package/dist/nodes/agent.js.map +1 -1
- package/dist/nodes/base.d.ts +11 -8
- package/dist/nodes/base.d.ts.map +1 -1
- package/dist/nodes/base.js +0 -3
- package/dist/nodes/base.js.map +1 -1
- package/dist/nodes/function.d.ts +0 -18
- package/dist/nodes/function.d.ts.map +1 -1
- package/dist/nodes/function.js +0 -9
- package/dist/nodes/function.js.map +1 -1
- package/dist/nodes/index.d.ts +1 -3
- package/dist/nodes/index.d.ts.map +1 -1
- package/dist/nodes/index.js +1 -3
- package/dist/nodes/index.js.map +1 -1
- package/dist/nodes/tool.d.ts +1 -12
- package/dist/nodes/tool.d.ts.map +1 -1
- package/dist/nodes/tool.js +4 -9
- package/dist/nodes/tool.js.map +1 -1
- package/dist/observability/exporters.d.ts +4 -4
- package/dist/observability/exporters.d.ts.map +1 -1
- package/dist/observability/exporters.js +25 -9
- package/dist/observability/exporters.js.map +1 -1
- package/dist/observability/index.d.ts +1 -1
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +1 -1
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/metrics.d.ts +0 -21
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/metrics.js +22 -26
- package/dist/observability/metrics.js.map +1 -1
- package/dist/observability/tracer.d.ts +9 -69
- package/dist/observability/tracer.d.ts.map +1 -1
- package/dist/observability/tracer.js +82 -125
- package/dist/observability/tracer.js.map +1 -1
- package/dist/patterns/index.d.ts +0 -13
- package/dist/patterns/index.d.ts.map +1 -1
- package/dist/patterns/index.js +0 -13
- package/dist/patterns/index.js.map +1 -1
- package/dist/patterns/map-reduce.d.ts +0 -129
- package/dist/patterns/map-reduce.d.ts.map +1 -1
- package/dist/patterns/map-reduce.js +63 -92
- package/dist/patterns/map-reduce.js.map +1 -1
- package/dist/saga/circuit-breaker.d.ts.map +1 -1
- package/dist/saga/circuit-breaker.js +5 -2
- package/dist/saga/circuit-breaker.js.map +1 -1
- package/dist/saga/compensation.d.ts +5 -2
- package/dist/saga/compensation.d.ts.map +1 -1
- package/dist/saga/compensation.js +49 -44
- package/dist/saga/compensation.js.map +1 -1
- package/dist/saga/dead-letter.d.ts +3 -0
- package/dist/saga/dead-letter.d.ts.map +1 -1
- package/dist/saga/dead-letter.js +11 -5
- package/dist/saga/dead-letter.js.map +1 -1
- package/dist/saga/idempotency.d.ts +1 -1
- package/dist/saga/idempotency.d.ts.map +1 -1
- package/dist/saga/idempotency.js +46 -13
- package/dist/saga/idempotency.js.map +1 -1
- package/dist/saga/retry.d.ts +5 -0
- package/dist/saga/retry.d.ts.map +1 -1
- package/dist/saga/retry.js +48 -29
- package/dist/saga/retry.js.map +1 -1
- package/dist/scheduler.d.ts +16 -1
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +100 -9
- package/dist/scheduler.js.map +1 -1
- package/dist/subworkflows/index.d.ts +0 -13
- package/dist/subworkflows/index.d.ts.map +1 -1
- package/dist/subworkflows/index.js +0 -13
- package/dist/subworkflows/index.js.map +1 -1
- package/dist/subworkflows/parallel-subworkflows.d.ts +1 -77
- package/dist/subworkflows/parallel-subworkflows.d.ts.map +1 -1
- package/dist/subworkflows/parallel-subworkflows.js +12 -40
- package/dist/subworkflows/parallel-subworkflows.js.map +1 -1
- package/dist/subworkflows/subworkflow-node.d.ts +1 -82
- package/dist/subworkflows/subworkflow-node.d.ts.map +1 -1
- package/dist/subworkflows/subworkflow-node.js +42 -41
- package/dist/subworkflows/subworkflow-node.js.map +1 -1
- package/dist/timers/cron-parser.d.ts.map +1 -1
- package/dist/timers/cron-parser.js +32 -10
- package/dist/timers/cron-parser.js.map +1 -1
- package/dist/timers/timer-manager.d.ts +10 -0
- package/dist/timers/timer-manager.d.ts.map +1 -1
- package/dist/timers/timer-manager.js +13 -0
- package/dist/timers/timer-manager.js.map +1 -1
- package/dist/timers/timer-node.d.ts.map +1 -1
- package/dist/timers/timer-node.js +1 -0
- package/dist/timers/timer-node.js.map +1 -1
- package/dist/timers/timer-store.d.ts.map +1 -1
- package/dist/timers/timer-store.js +16 -10
- package/dist/timers/timer-store.js.map +1 -1
- package/dist/triggers/cron-trigger.d.ts +6 -5
- package/dist/triggers/cron-trigger.d.ts.map +1 -1
- package/dist/triggers/cron-trigger.js +52 -18
- package/dist/triggers/cron-trigger.js.map +1 -1
- package/dist/triggers/rate-limiter.d.ts +4 -0
- package/dist/triggers/rate-limiter.d.ts.map +1 -1
- package/dist/triggers/rate-limiter.js +10 -1
- package/dist/triggers/rate-limiter.js.map +1 -1
- package/dist/triggers/trigger-manager.d.ts.map +1 -1
- package/dist/triggers/trigger-manager.js +67 -40
- package/dist/triggers/trigger-manager.js.map +1 -1
- package/dist/triggers/webhook-trigger.d.ts +1 -0
- package/dist/triggers/webhook-trigger.d.ts.map +1 -1
- package/dist/triggers/webhook-trigger.js +8 -8
- package/dist/triggers/webhook-trigger.js.map +1 -1
- package/package.json +4 -4
package/dist/saga/retry.js
CHANGED
|
@@ -13,38 +13,36 @@ const DEFAULT_MAX_DELAY = 30000;
|
|
|
13
13
|
const DEFAULT_BACKOFF = 'exponential';
|
|
14
14
|
const DEFAULT_MULTIPLIER = 2;
|
|
15
15
|
const DEFAULT_JITTER = 0.1;
|
|
16
|
+
const RETRYABLE_CODES = new Set([
|
|
17
|
+
'ECONNRESET',
|
|
18
|
+
'ECONNREFUSED',
|
|
19
|
+
'ETIMEDOUT',
|
|
20
|
+
'ENOTFOUND',
|
|
21
|
+
'ENETUNREACH',
|
|
22
|
+
'EAI_AGAIN',
|
|
23
|
+
'EPIPE',
|
|
24
|
+
]);
|
|
25
|
+
const RETRYABLE_PATTERNS = [
|
|
26
|
+
/\btimeout\b/i,
|
|
27
|
+
/\bnetwork\b/i,
|
|
28
|
+
/\bconnection\s+(reset|refused|closed|aborted)\b/i,
|
|
29
|
+
/\bsocket\s+hang\s+up\b/i,
|
|
30
|
+
/\brate[\s-]?limit/i,
|
|
31
|
+
/\b(429|500|502|503|504)\b/,
|
|
32
|
+
];
|
|
16
33
|
/**
|
|
17
34
|
* Default retryable error checker - retries on network/timeout errors
|
|
18
35
|
*/
|
|
19
36
|
function defaultIsRetryable(error) {
|
|
20
|
-
const retryableErrors = [
|
|
21
|
-
'ECONNRESET',
|
|
22
|
-
'ECONNREFUSED',
|
|
23
|
-
'ETIMEDOUT',
|
|
24
|
-
'ENOTFOUND',
|
|
25
|
-
'ENETUNREACH',
|
|
26
|
-
'EAI_AGAIN',
|
|
27
|
-
'EPIPE',
|
|
28
|
-
];
|
|
29
|
-
const retryableMessages = [
|
|
30
|
-
'timeout',
|
|
31
|
-
'network',
|
|
32
|
-
'connection',
|
|
33
|
-
'socket',
|
|
34
|
-
'ETIMEDOUT',
|
|
35
|
-
'rate limit',
|
|
36
|
-
'429',
|
|
37
|
-
'500',
|
|
38
|
-
'502',
|
|
39
|
-
'503',
|
|
40
|
-
'504',
|
|
41
|
-
];
|
|
42
37
|
const errorCode = error.code;
|
|
43
|
-
if (errorCode &&
|
|
38
|
+
if (errorCode && RETRYABLE_CODES.has(errorCode)) {
|
|
44
39
|
return true;
|
|
45
40
|
}
|
|
46
|
-
const
|
|
47
|
-
|
|
41
|
+
const statusCode = error.statusCode;
|
|
42
|
+
if (statusCode && [429, 500, 502, 503, 504].includes(statusCode)) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return RETRYABLE_PATTERNS.some((p) => p.test(error.message));
|
|
48
46
|
}
|
|
49
47
|
/**
|
|
50
48
|
* Calculate delay with jitter
|
|
@@ -69,10 +67,31 @@ function calculateDelay(attempt, config) {
|
|
|
69
67
|
return Math.max(0, Math.round(baseDelay + jitter));
|
|
70
68
|
}
|
|
71
69
|
/**
|
|
72
|
-
*
|
|
70
|
+
* Delay before retry number `attempt` (1-based) for a retry policy, using the same defaults
|
|
71
|
+
* as `executeWithRetry`.
|
|
73
72
|
*/
|
|
74
|
-
function
|
|
75
|
-
return
|
|
73
|
+
export function computeRetryDelay(attempt, config = {}) {
|
|
74
|
+
return calculateDelay(attempt, {
|
|
75
|
+
backoff: config.backoff ?? DEFAULT_BACKOFF,
|
|
76
|
+
initialDelay: config.initialDelay ?? DEFAULT_INITIAL_DELAY,
|
|
77
|
+
maxDelay: config.maxDelay ?? DEFAULT_MAX_DELAY,
|
|
78
|
+
multiplier: config.multiplier ?? DEFAULT_MULTIPLIER,
|
|
79
|
+
jitter: config.jitter ?? DEFAULT_JITTER,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function sleep(ms, signal) {
|
|
83
|
+
if (signal?.aborted)
|
|
84
|
+
return Promise.resolve();
|
|
85
|
+
return new Promise((resolve) => {
|
|
86
|
+
const timer = setTimeout(resolve, ms);
|
|
87
|
+
if (signal) {
|
|
88
|
+
const onAbort = () => {
|
|
89
|
+
clearTimeout(timer);
|
|
90
|
+
resolve();
|
|
91
|
+
};
|
|
92
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
93
|
+
}
|
|
94
|
+
});
|
|
76
95
|
}
|
|
77
96
|
/**
|
|
78
97
|
* Execute function with retry logic
|
|
@@ -152,7 +171,7 @@ export async function executeWithRetry(fn, options = {}) {
|
|
|
152
171
|
duration,
|
|
153
172
|
};
|
|
154
173
|
options.onRetry?.(attemptInfo);
|
|
155
|
-
await sleep(delay);
|
|
174
|
+
await sleep(delay, options.abortSignal);
|
|
156
175
|
}
|
|
157
176
|
}
|
|
158
177
|
return {
|
package/dist/saga/retry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/saga/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,eAAe,GAAoB,aAAa,CAAC;AACvD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,cAAc,GAAG,GAAG,CAAC;AAa3B
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/saga/retry.ts"],"names":[],"mappings":"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"}
|
package/dist/scheduler.d.ts
CHANGED
|
@@ -11,6 +11,20 @@ export declare class WorkflowScheduler {
|
|
|
11
11
|
* Build dependency graph from workflow edges
|
|
12
12
|
*/
|
|
13
13
|
buildDependencyGraph<S extends WorkflowState>(workflow: Workflow<S>): DependencyGraph;
|
|
14
|
+
/**
|
|
15
|
+
* Transitive successors of every node, following all edge types (sequential, parallel,
|
|
16
|
+
* conditional targets and loop back/exit edges).
|
|
17
|
+
*/
|
|
18
|
+
buildReachability<S extends WorkflowState>(workflow: Workflow<S>): Map<string, Set<string>>;
|
|
19
|
+
/**
|
|
20
|
+
* Split a frontier into nodes that can run now and nodes that must wait because another
|
|
21
|
+
* frontier node still leads to them (join barrier). Nodes on a common cycle never block
|
|
22
|
+
* each other.
|
|
23
|
+
*/
|
|
24
|
+
splitFrontier(frontier: readonly string[], reachability: Map<string, Set<string>>): {
|
|
25
|
+
runnable: string[];
|
|
26
|
+
deferred: string[];
|
|
27
|
+
};
|
|
14
28
|
/**
|
|
15
29
|
* Get nodes ready to execute (all dependencies completed)
|
|
16
30
|
*/
|
|
@@ -29,7 +43,8 @@ export declare class WorkflowScheduler {
|
|
|
29
43
|
*/
|
|
30
44
|
runWithConcurrency<T>(tasks: (() => Promise<T>)[], maxConcurrency: number): Promise<T[]>;
|
|
31
45
|
/**
|
|
32
|
-
*
|
|
46
|
+
* Run tasks with at most `maxConcurrency` in flight; results keep the task order.
|
|
47
|
+
* Rejects with the first failure after in-flight tasks settle.
|
|
33
48
|
*/
|
|
34
49
|
runParallel<T>(tasks: (() => Promise<T>)[], maxConcurrency: number): Promise<T[]>;
|
|
35
50
|
/**
|
package/dist/scheduler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEnE,UAAU,eAAe;IACvB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACtC;AAED,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,oBAAoB,CAAC,CAAC,SAAS,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe;IAwBrF;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;IAuB7F;;;OAGG;IACH,kBAAkB,CAAC,CAAC,SAAS,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE;IA0B9E;;OAEG;IACH,YAAY,CAAC,CAAC,SAAS,aAAa,EAClC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,CAAC,GACP,MAAM,EAAE;IAgCX;;OAEG;IACG,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEnE,UAAU,eAAe;IACvB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACtC;AAED,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,oBAAoB,CAAC,CAAC,SAAS,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe;IAwBrF;;;OAGG;IACH,iBAAiB,CAAC,CAAC,SAAS,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IA0C3F;;;;OAIG;IACH,aAAa,CACX,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACrC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAiB7C;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;IAuB7F;;;OAGG;IACH,kBAAkB,CAAC,CAAC,SAAS,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE;IA0B9E;;OAEG;IACH,YAAY,CAAC,CAAC,SAAS,aAAa,EAClC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,CAAC,GACP,MAAM,EAAE;IAgCX;;OAEG;IACG,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAmC9F;;;OAGG;IACG,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAyBvF;;;OAGG;IACG,uBAAuB,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAC3B,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACtD,OAAO,CAAC,CAAC,EAAE,CAAC;CAwChB"}
|
package/dist/scheduler.js
CHANGED
|
@@ -26,6 +26,68 @@ export class WorkflowScheduler {
|
|
|
26
26
|
}
|
|
27
27
|
return { dependencies, dependents };
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Transitive successors of every node, following all edge types (sequential, parallel,
|
|
31
|
+
* conditional targets and loop back/exit edges).
|
|
32
|
+
*/
|
|
33
|
+
buildReachability(workflow) {
|
|
34
|
+
const successors = new Map();
|
|
35
|
+
for (const name of workflow.nodes.keys()) {
|
|
36
|
+
successors.set(name, new Set());
|
|
37
|
+
}
|
|
38
|
+
for (const edge of workflow.edges) {
|
|
39
|
+
const out = successors.get(edge.from);
|
|
40
|
+
if (!out)
|
|
41
|
+
continue;
|
|
42
|
+
switch (edge.type) {
|
|
43
|
+
case 'sequential':
|
|
44
|
+
out.add(edge.to);
|
|
45
|
+
break;
|
|
46
|
+
case 'parallel':
|
|
47
|
+
for (const to of edge.to)
|
|
48
|
+
out.add(to);
|
|
49
|
+
break;
|
|
50
|
+
case 'conditional':
|
|
51
|
+
for (const to of edge.targets)
|
|
52
|
+
out.add(to);
|
|
53
|
+
break;
|
|
54
|
+
case 'loop':
|
|
55
|
+
out.add(edge.back);
|
|
56
|
+
out.add(edge.exit);
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const reachability = new Map();
|
|
61
|
+
for (const start of successors.keys()) {
|
|
62
|
+
const reached = new Set();
|
|
63
|
+
const queue = [...(successors.get(start) ?? [])];
|
|
64
|
+
while (queue.length > 0) {
|
|
65
|
+
const next = queue.shift();
|
|
66
|
+
if (reached.has(next))
|
|
67
|
+
continue;
|
|
68
|
+
reached.add(next);
|
|
69
|
+
queue.push(...(successors.get(next) ?? []));
|
|
70
|
+
}
|
|
71
|
+
reachability.set(start, reached);
|
|
72
|
+
}
|
|
73
|
+
return reachability;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Split a frontier into nodes that can run now and nodes that must wait because another
|
|
77
|
+
* frontier node still leads to them (join barrier). Nodes on a common cycle never block
|
|
78
|
+
* each other.
|
|
79
|
+
*/
|
|
80
|
+
splitFrontier(frontier, reachability) {
|
|
81
|
+
const runnable = [];
|
|
82
|
+
const deferred = [];
|
|
83
|
+
for (const node of frontier) {
|
|
84
|
+
const waitsForUpstream = frontier.some((other) => other !== node &&
|
|
85
|
+
(reachability.get(other)?.has(node) ?? false) &&
|
|
86
|
+
!(reachability.get(node)?.has(other) ?? false));
|
|
87
|
+
(waitsForUpstream ? deferred : runnable).push(node);
|
|
88
|
+
}
|
|
89
|
+
return { runnable, deferred };
|
|
90
|
+
}
|
|
29
91
|
/**
|
|
30
92
|
* Get nodes ready to execute (all dependencies completed)
|
|
31
93
|
*/
|
|
@@ -110,15 +172,16 @@ export class WorkflowScheduler {
|
|
|
110
172
|
*/
|
|
111
173
|
async runWithConcurrency(tasks, maxConcurrency) {
|
|
112
174
|
const results = [];
|
|
175
|
+
const errors = [];
|
|
113
176
|
const executing = new Set();
|
|
114
177
|
for (const task of tasks) {
|
|
115
178
|
const promise = task().then((result) => {
|
|
116
179
|
results.push(result);
|
|
180
|
+
}, (error) => {
|
|
181
|
+
errors.push(error instanceof Error ? error : new Error(String(error)));
|
|
117
182
|
});
|
|
118
183
|
const tracked = promise.then(() => {
|
|
119
184
|
executing.delete(tracked);
|
|
120
|
-
}, () => {
|
|
121
|
-
executing.delete(tracked);
|
|
122
185
|
});
|
|
123
186
|
executing.add(tracked);
|
|
124
187
|
if (executing.size >= maxConcurrency) {
|
|
@@ -126,17 +189,34 @@ export class WorkflowScheduler {
|
|
|
126
189
|
}
|
|
127
190
|
}
|
|
128
191
|
await Promise.all(executing);
|
|
192
|
+
if (errors.length > 0) {
|
|
193
|
+
throw new AggregateError(errors, `${errors.length.toString()} task(s) failed`);
|
|
194
|
+
}
|
|
129
195
|
return results;
|
|
130
196
|
}
|
|
131
197
|
/**
|
|
132
|
-
*
|
|
198
|
+
* Run tasks with at most `maxConcurrency` in flight; results keep the task order.
|
|
199
|
+
* Rejects with the first failure after in-flight tasks settle.
|
|
133
200
|
*/
|
|
134
201
|
async runParallel(tasks, maxConcurrency) {
|
|
135
|
-
const results =
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
202
|
+
const results = new Array(tasks.length);
|
|
203
|
+
let nextIndex = 0;
|
|
204
|
+
let failure;
|
|
205
|
+
const worker = async () => {
|
|
206
|
+
while (nextIndex < tasks.length && !failure) {
|
|
207
|
+
const index = nextIndex++;
|
|
208
|
+
try {
|
|
209
|
+
results[index] = await tasks[index]();
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
failure ??= { error };
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
const workers = Math.min(Math.max(1, maxConcurrency), tasks.length);
|
|
217
|
+
await Promise.all(Array.from({ length: workers }, () => worker()));
|
|
218
|
+
if (failure) {
|
|
219
|
+
throw failure.error;
|
|
140
220
|
}
|
|
141
221
|
return results;
|
|
142
222
|
}
|
|
@@ -150,23 +230,34 @@ export class WorkflowScheduler {
|
|
|
150
230
|
const results = new Array(tasks.length);
|
|
151
231
|
let nextIndex = 0;
|
|
152
232
|
let completedCount = 0;
|
|
233
|
+
let settled = false;
|
|
153
234
|
return new Promise((resolve, reject) => {
|
|
154
235
|
const startNext = () => {
|
|
236
|
+
if (settled)
|
|
237
|
+
return;
|
|
155
238
|
while (nextIndex < tasks.length && nextIndex - completedCount < maxConcurrency) {
|
|
156
239
|
const index = nextIndex++;
|
|
157
240
|
tasks[index]()
|
|
158
241
|
.then(async (result) => {
|
|
242
|
+
if (settled)
|
|
243
|
+
return;
|
|
159
244
|
results[index] = result;
|
|
160
245
|
await onComplete(result, index);
|
|
161
246
|
completedCount++;
|
|
162
247
|
if (completedCount === tasks.length) {
|
|
248
|
+
settled = true;
|
|
163
249
|
resolve(results);
|
|
164
250
|
}
|
|
165
251
|
else {
|
|
166
252
|
startNext();
|
|
167
253
|
}
|
|
168
254
|
})
|
|
169
|
-
.catch(
|
|
255
|
+
.catch((error) => {
|
|
256
|
+
if (settled)
|
|
257
|
+
return;
|
|
258
|
+
settled = true;
|
|
259
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
260
|
+
});
|
|
170
261
|
}
|
|
171
262
|
};
|
|
172
263
|
startNext();
|
package/dist/scheduler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @cogitator-ai/workflows - Subworkflows module
|
|
3
|
-
*
|
|
4
|
-
* Enables nested and parallel workflow execution.
|
|
5
|
-
*
|
|
6
|
-
* Features:
|
|
7
|
-
* - Single subworkflow execution
|
|
8
|
-
* - Parallel subworkflows with concurrency control
|
|
9
|
-
* - State mapping between parent and child
|
|
10
|
-
* - Error handling strategies
|
|
11
|
-
* - Depth limits to prevent infinite recursion
|
|
12
|
-
* - Race and fallback patterns
|
|
13
|
-
*/
|
|
14
1
|
export { type SubworkflowErrorStrategy, type SubworkflowRetryConfig, type SubworkflowConfig, type SubworkflowContext, type SubworkflowResult, MaxDepthExceededError, executeSubworkflow, subworkflowNode, simpleSubworkflow, nestedSubworkflow, conditionalSubworkflow, } from './subworkflow-node.js';
|
|
15
2
|
export { type ParallelSubworkflowDef, type ParallelSubworkflowsConfig, type ParallelProgress, type ParallelSubworkflowsResult, executeParallelSubworkflows, parallelSubworkflows, fanOutFanIn, scatterGather, raceSubworkflows, fallbackSubworkflows, } from './parallel-subworkflows.js';
|
|
16
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/subworkflows/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/subworkflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,2BAA2B,EAC3B,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC"}
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @cogitator-ai/workflows - Subworkflows module
|
|
3
|
-
*
|
|
4
|
-
* Enables nested and parallel workflow execution.
|
|
5
|
-
*
|
|
6
|
-
* Features:
|
|
7
|
-
* - Single subworkflow execution
|
|
8
|
-
* - Parallel subworkflows with concurrency control
|
|
9
|
-
* - State mapping between parent and child
|
|
10
|
-
* - Error handling strategies
|
|
11
|
-
* - Depth limits to prevent infinite recursion
|
|
12
|
-
* - Race and fallback patterns
|
|
13
|
-
*/
|
|
14
1
|
export { MaxDepthExceededError, executeSubworkflow, subworkflowNode, simpleSubworkflow, nestedSubworkflow, conditionalSubworkflow, } from './subworkflow-node.js';
|
|
15
2
|
export { executeParallelSubworkflows, parallelSubworkflows, fanOutFanIn, scatterGather, raceSubworkflows, fallbackSubworkflows, } from './parallel-subworkflows.js';
|
|
16
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/subworkflows/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/subworkflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAKL,2BAA2B,EAC3B,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC"}
|
|
@@ -1,74 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parallel subworkflow execution
|
|
3
|
-
*
|
|
4
|
-
* Features:
|
|
5
|
-
* - Execute multiple subworkflows in parallel
|
|
6
|
-
* - Configurable concurrency
|
|
7
|
-
* - Aggregate results
|
|
8
|
-
* - Partial failure handling
|
|
9
|
-
*/
|
|
10
1
|
import type { Workflow, WorkflowState, WorkflowResult } from '@cogitator-ai/types';
|
|
11
2
|
import { type SubworkflowContext, type SubworkflowConfig, type SubworkflowResult, type SubworkflowErrorStrategy } from './subworkflow-node.js';
|
|
12
|
-
/**
|
|
13
|
-
* Parallel subworkflow definition
|
|
14
|
-
*/
|
|
15
3
|
export interface ParallelSubworkflowDef<PS extends WorkflowState, CS extends WorkflowState> {
|
|
16
4
|
id: string;
|
|
17
5
|
config: SubworkflowConfig<PS, CS>;
|
|
18
6
|
}
|
|
19
|
-
/**
|
|
20
|
-
* Parallel subworkflows configuration
|
|
21
|
-
*/
|
|
22
7
|
export interface ParallelSubworkflowsConfig<S extends WorkflowState> {
|
|
23
8
|
name: string;
|
|
24
|
-
/**
|
|
25
|
-
* Get subworkflow definitions to execute
|
|
26
|
-
*/
|
|
27
9
|
subworkflows: ParallelSubworkflowDef<S, WorkflowState>[] | ((state: S) => ParallelSubworkflowDef<S, WorkflowState>[]);
|
|
28
|
-
/**
|
|
29
|
-
* Maximum concurrent subworkflows
|
|
30
|
-
* @default Infinity
|
|
31
|
-
*/
|
|
32
10
|
concurrency?: number;
|
|
33
|
-
/**
|
|
34
|
-
* Continue if some subworkflows fail
|
|
35
|
-
* @default false
|
|
36
|
-
*/
|
|
37
11
|
continueOnError?: boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Error handling strategy for all subworkflows
|
|
40
|
-
*/
|
|
41
12
|
onError?: SubworkflowErrorStrategy;
|
|
42
|
-
/**
|
|
43
|
-
* Aggregate results into parent state
|
|
44
|
-
*/
|
|
45
13
|
aggregator: (results: Map<string, SubworkflowResult<S, WorkflowState>>, parentState: S) => S;
|
|
46
|
-
/**
|
|
47
|
-
* Maximum nesting depth for all subworkflows
|
|
48
|
-
* @default 10
|
|
49
|
-
*/
|
|
50
14
|
maxDepth?: number;
|
|
51
|
-
/**
|
|
52
|
-
* Share checkpoint store with parent
|
|
53
|
-
* @default true
|
|
54
|
-
*/
|
|
55
15
|
shareCheckpoints?: boolean;
|
|
56
|
-
/**
|
|
57
|
-
* Called when a subworkflow starts
|
|
58
|
-
*/
|
|
59
16
|
onSubworkflowStart?: (id: string, config: SubworkflowConfig<S, WorkflowState>) => void;
|
|
60
|
-
/**
|
|
61
|
-
* Called when a subworkflow completes
|
|
62
|
-
*/
|
|
63
17
|
onSubworkflowComplete?: (id: string, result: SubworkflowResult<S, WorkflowState>) => void;
|
|
64
|
-
/**
|
|
65
|
-
* Called on progress
|
|
66
|
-
*/
|
|
67
18
|
onProgress?: (progress: ParallelProgress) => void;
|
|
68
19
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Progress event for parallel execution
|
|
71
|
-
*/
|
|
72
20
|
export interface ParallelProgress {
|
|
73
21
|
total: number;
|
|
74
22
|
completed: number;
|
|
@@ -77,9 +25,6 @@ export interface ParallelProgress {
|
|
|
77
25
|
pending: number;
|
|
78
26
|
running: number;
|
|
79
27
|
}
|
|
80
|
-
/**
|
|
81
|
-
* Parallel subworkflows result
|
|
82
|
-
*/
|
|
83
28
|
export interface ParallelSubworkflowsResult<S extends WorkflowState> {
|
|
84
29
|
success: boolean;
|
|
85
30
|
parentState: S;
|
|
@@ -93,18 +38,8 @@ export interface ParallelSubworkflowsResult<S extends WorkflowState> {
|
|
|
93
38
|
skipped: number;
|
|
94
39
|
};
|
|
95
40
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Execute multiple subworkflows in parallel
|
|
98
|
-
*/
|
|
99
41
|
export declare function executeParallelSubworkflows<S extends WorkflowState>(parentState: S, config: ParallelSubworkflowsConfig<S>, context: SubworkflowContext): Promise<ParallelSubworkflowsResult<S>>;
|
|
100
|
-
/**
|
|
101
|
-
* Create a parallel subworkflows node factory
|
|
102
|
-
*/
|
|
103
42
|
export declare function parallelSubworkflows<S extends WorkflowState>(name: string, config: Omit<ParallelSubworkflowsConfig<S>, 'name'>): ParallelSubworkflowsConfig<S>;
|
|
104
|
-
/**
|
|
105
|
-
* Create a fan-out/fan-in pattern
|
|
106
|
-
* Fans out to multiple identical subworkflows with different inputs
|
|
107
|
-
*/
|
|
108
43
|
export declare function fanOutFanIn<S extends WorkflowState, CS extends WorkflowState>(name: string, config: {
|
|
109
44
|
workflow: Workflow<CS>;
|
|
110
45
|
getInputs: (state: S) => {
|
|
@@ -115,25 +50,14 @@ export declare function fanOutFanIn<S extends WorkflowState, CS extends Workflow
|
|
|
115
50
|
concurrency?: number;
|
|
116
51
|
continueOnError?: boolean;
|
|
117
52
|
}): ParallelSubworkflowsConfig<S>;
|
|
118
|
-
/**
|
|
119
|
-
* Create a scatter-gather pattern
|
|
120
|
-
* Scatters work across multiple workflows and gathers results
|
|
121
|
-
*/
|
|
122
53
|
export declare function scatterGather<S extends WorkflowState, CS extends WorkflowState>(name: string, config: {
|
|
123
54
|
workflows: Map<string, Workflow<CS>>;
|
|
124
55
|
inputMapper: (state: S, workflowId: string) => Partial<CS>;
|
|
125
56
|
outputMapper: (results: Map<string, WorkflowResult<CS>>, state: S) => S;
|
|
126
57
|
concurrency?: number;
|
|
127
58
|
timeout?: number;
|
|
59
|
+
continueOnError?: boolean;
|
|
128
60
|
}): ParallelSubworkflowsConfig<S>;
|
|
129
|
-
/**
|
|
130
|
-
* Create a race pattern
|
|
131
|
-
* Executes multiple subworkflows and returns the first successful result
|
|
132
|
-
*/
|
|
133
61
|
export declare function raceSubworkflows<PS extends WorkflowState, CS extends WorkflowState>(parentState: PS, subworkflows: SubworkflowConfig<PS, CS>[], context: SubworkflowContext): Promise<SubworkflowResult<PS, CS> | null>;
|
|
134
|
-
/**
|
|
135
|
-
* Create a fallback pattern
|
|
136
|
-
* Tries subworkflows in order until one succeeds
|
|
137
|
-
*/
|
|
138
62
|
export declare function fallbackSubworkflows<PS extends WorkflowState, CS extends WorkflowState>(parentState: PS, subworkflows: SubworkflowConfig<PS, CS>[], context: SubworkflowContext): Promise<SubworkflowResult<PS, CS>>;
|
|
139
63
|
//# sourceMappingURL=parallel-subworkflows.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-subworkflows.d.ts","sourceRoot":"","sources":["../../src/subworkflows/parallel-subworkflows.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"parallel-subworkflows.d.ts","sourceRoot":"","sources":["../../src/subworkflows/parallel-subworkflows.ts"],"names":[],"mappings":"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"}
|