@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/builder.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WorkflowBuilder - Fluent API for constructing workflows
|
|
3
3
|
*/
|
|
4
|
-
import type { Workflow, WorkflowState, NodeFn, AddNodeOptions, AddConditionalOptions, AddLoopOptions, AddParallelOptions } from '@cogitator-ai/types';
|
|
4
|
+
import type { Workflow, WorkflowNode, WorkflowState, NodeFn, AddNodeOptions, AddConditionalOptions, AddLoopOptions, AddParallelOptions } from '@cogitator-ai/types';
|
|
5
5
|
export declare class WorkflowBuilder<S extends WorkflowState = WorkflowState> {
|
|
6
6
|
private name;
|
|
7
7
|
private state;
|
|
@@ -22,9 +22,10 @@ export declare class WorkflowBuilder<S extends WorkflowState = WorkflowState> {
|
|
|
22
22
|
*/
|
|
23
23
|
entryPoint(nodeName: string): this;
|
|
24
24
|
/**
|
|
25
|
-
* Add a node to the workflow
|
|
25
|
+
* Add a node to the workflow. Accepts a node function or a node created by a factory
|
|
26
|
+
* (`agentNode`, `toolNode`, `functionNode`, `customNode`, ...).
|
|
26
27
|
*/
|
|
27
|
-
addNode(name: string,
|
|
28
|
+
addNode(name: string, node: NodeFn<S> | WorkflowNode<S>, options?: AddNodeOptions): this;
|
|
28
29
|
/**
|
|
29
30
|
* Add a conditional routing node
|
|
30
31
|
*/
|
|
@@ -38,6 +39,6 @@ export declare class WorkflowBuilder<S extends WorkflowState = WorkflowState> {
|
|
|
38
39
|
* Build and validate the workflow
|
|
39
40
|
*/
|
|
40
41
|
build(): Workflow<S>;
|
|
41
|
-
private
|
|
42
|
+
private validateEdges;
|
|
42
43
|
}
|
|
43
44
|
//# sourceMappingURL=builder.d.ts.map
|
package/dist/builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,MAAM,EAEN,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AA6B7B,qBAAa,eAAe,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IAClE,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,SAAS,CAAqB;gBAE1B,IAAI,EAAE,MAAM;IAKxB,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAK5B;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKlC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IAgBxF;;OAEG;IACH,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,EAAE,EAC1C,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI;IAUP;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAYpD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAUhF;;OAEG;IACH,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;IAiKpB,OAAO,CAAC,aAAa;CAgCtB"}
|
package/dist/builder.js
CHANGED
|
@@ -35,14 +35,18 @@ export class WorkflowBuilder {
|
|
|
35
35
|
return this;
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
|
-
* Add a node to the workflow
|
|
38
|
+
* Add a node to the workflow. Accepts a node function or a node created by a factory
|
|
39
|
+
* (`agentNode`, `toolNode`, `functionNode`, `customNode`, ...).
|
|
39
40
|
*/
|
|
40
|
-
addNode(name,
|
|
41
|
+
addNode(name, node, options) {
|
|
41
42
|
this.registerName(name);
|
|
43
|
+
const fn = typeof node === 'function' ? node : node.fn;
|
|
44
|
+
const nodeConfig = typeof node === 'function' ? undefined : node.config;
|
|
45
|
+
const config = nodeConfig || options?.config ? { ...nodeConfig, ...options?.config } : undefined;
|
|
42
46
|
this.nodes.push({
|
|
43
47
|
name,
|
|
44
48
|
fn,
|
|
45
|
-
config
|
|
49
|
+
config,
|
|
46
50
|
after: options?.after ?? [],
|
|
47
51
|
});
|
|
48
52
|
return this;
|
|
@@ -115,36 +119,44 @@ export class WorkflowBuilder {
|
|
|
115
119
|
config: undefined,
|
|
116
120
|
});
|
|
117
121
|
}
|
|
118
|
-
const edges = [];
|
|
119
122
|
const conditionalNames = new Set(this.conditionals.map((c) => c.name));
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
const loopsByName = new Map(this.loops.map((l) => [l.name, l]));
|
|
124
|
+
const entries = [
|
|
125
|
+
...this.nodes,
|
|
126
|
+
...this.conditionals,
|
|
127
|
+
...this.loops,
|
|
128
|
+
...this.parallels,
|
|
129
|
+
];
|
|
130
|
+
const edges = [];
|
|
131
|
+
const conditionalTargets = new Map();
|
|
132
|
+
const parallelTargets = new Map(this.parallels.map((p) => [p.name, [...p.targets]]));
|
|
133
|
+
for (const entry of entries) {
|
|
134
|
+
for (const dep of entry.after) {
|
|
135
|
+
if (conditionalNames.has(dep)) {
|
|
136
|
+
const targets = conditionalTargets.get(dep) ?? [];
|
|
137
|
+
targets.push(entry.name);
|
|
138
|
+
conditionalTargets.set(dep, targets);
|
|
125
139
|
continue;
|
|
126
140
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
141
|
+
const loop = loopsByName.get(dep);
|
|
142
|
+
if (loop) {
|
|
143
|
+
if (entry.name !== loop.back && entry.name !== loop.exit) {
|
|
144
|
+
throw new Error(`'${entry.name}' runs after loop '${dep}' but is neither its back ('${loop.back}') nor exit ('${loop.exit}') node`);
|
|
145
|
+
}
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const parallelTargetList = parallelTargets.get(dep);
|
|
149
|
+
if (parallelTargetList) {
|
|
150
|
+
if (!parallelTargetList.includes(entry.name)) {
|
|
151
|
+
parallelTargetList.push(entry.name);
|
|
152
|
+
}
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
edges.push({ type: 'sequential', from: dep, to: entry.name });
|
|
132
156
|
}
|
|
133
157
|
}
|
|
134
158
|
for (const cond of this.conditionals) {
|
|
135
|
-
|
|
136
|
-
edges.push({
|
|
137
|
-
type: 'sequential',
|
|
138
|
-
from: dep,
|
|
139
|
-
to: cond.name,
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
const targets = [];
|
|
143
|
-
for (const node of this.nodes) {
|
|
144
|
-
if (node.after.includes(cond.name)) {
|
|
145
|
-
targets.push(node.name);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
159
|
+
const targets = conditionalTargets.get(cond.name) ?? [];
|
|
148
160
|
if (targets.length > 0) {
|
|
149
161
|
edges.push({
|
|
150
162
|
type: 'conditional',
|
|
@@ -155,13 +167,6 @@ export class WorkflowBuilder {
|
|
|
155
167
|
}
|
|
156
168
|
}
|
|
157
169
|
for (const loop of this.loops) {
|
|
158
|
-
for (const dep of loop.after) {
|
|
159
|
-
edges.push({
|
|
160
|
-
type: 'sequential',
|
|
161
|
-
from: dep,
|
|
162
|
-
to: loop.name,
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
170
|
edges.push({
|
|
166
171
|
type: 'loop',
|
|
167
172
|
from: loop.name,
|
|
@@ -171,60 +176,42 @@ export class WorkflowBuilder {
|
|
|
171
176
|
});
|
|
172
177
|
}
|
|
173
178
|
for (const parallel of this.parallels) {
|
|
174
|
-
for (const dep of parallel.after) {
|
|
175
|
-
edges.push({
|
|
176
|
-
type: 'sequential',
|
|
177
|
-
from: dep,
|
|
178
|
-
to: parallel.name,
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
179
|
edges.push({
|
|
182
180
|
type: 'parallel',
|
|
183
181
|
from: parallel.name,
|
|
184
|
-
to: parallel.
|
|
182
|
+
to: parallelTargets.get(parallel.name) ?? [],
|
|
185
183
|
});
|
|
186
184
|
}
|
|
185
|
+
this.validateEdges(nodesMap, edges);
|
|
187
186
|
let entryPoint = this.entryPointName;
|
|
188
187
|
if (!entryPoint) {
|
|
189
|
-
const
|
|
190
|
-
for (const
|
|
191
|
-
for (const
|
|
192
|
-
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
for (const cond of this.conditionals) {
|
|
196
|
-
for (const dep of cond.after) {
|
|
197
|
-
allDeps.add(dep);
|
|
198
|
-
}
|
|
188
|
+
const routedTargets = new Set();
|
|
189
|
+
for (const targets of parallelTargets.values()) {
|
|
190
|
+
for (const target of targets)
|
|
191
|
+
routedTargets.add(target);
|
|
199
192
|
}
|
|
200
|
-
for (const
|
|
201
|
-
|
|
202
|
-
allDeps.add(dep);
|
|
203
|
-
}
|
|
204
|
-
for (const target of parallel.targets) {
|
|
205
|
-
allDeps.add(target);
|
|
206
|
-
}
|
|
193
|
+
for (const loop of this.loops) {
|
|
194
|
+
routedTargets.add(loop.exit);
|
|
207
195
|
}
|
|
208
|
-
const roots =
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
196
|
+
const roots = entries
|
|
197
|
+
.filter((e) => e.after.length === 0 && !routedTargets.has(e.name))
|
|
198
|
+
.map((e) => e.name);
|
|
199
|
+
if (entries.length === 0) {
|
|
200
|
+
throw new Error('Workflow has no nodes');
|
|
213
201
|
}
|
|
214
202
|
if (roots.length === 0) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
else if (roots.length === 1) {
|
|
218
|
-
entryPoint = roots[0];
|
|
203
|
+
throw new Error('Workflow has no root node (every node depends on another). ' +
|
|
204
|
+
'Use .entryPoint() to specify where execution starts.');
|
|
219
205
|
}
|
|
220
|
-
|
|
221
|
-
|
|
206
|
+
if (roots.length > 1) {
|
|
207
|
+
throw new Error(`Workflow has multiple root nodes: ${roots.join(', ')}. ` +
|
|
208
|
+
'Use .entryPoint() to specify which one should be the entry point.');
|
|
222
209
|
}
|
|
210
|
+
entryPoint = roots[0];
|
|
223
211
|
}
|
|
224
|
-
if (!entryPoint) {
|
|
225
|
-
throw new Error('
|
|
212
|
+
if (!nodesMap.has(entryPoint)) {
|
|
213
|
+
throw new Error(`Entry point '${entryPoint}' not found in nodes`);
|
|
226
214
|
}
|
|
227
|
-
this.validate(nodesMap, edges, entryPoint);
|
|
228
215
|
return {
|
|
229
216
|
name: this.name,
|
|
230
217
|
initialState: this.state,
|
|
@@ -233,10 +220,7 @@ export class WorkflowBuilder {
|
|
|
233
220
|
entryPoint,
|
|
234
221
|
};
|
|
235
222
|
}
|
|
236
|
-
|
|
237
|
-
if (!nodes.has(entryPoint)) {
|
|
238
|
-
throw new Error(`Entry point '${entryPoint}' not found in nodes`);
|
|
239
|
-
}
|
|
223
|
+
validateEdges(nodes, edges) {
|
|
240
224
|
for (const edge of edges) {
|
|
241
225
|
if (!nodes.has(edge.from)) {
|
|
242
226
|
throw new Error(`Edge references unknown node '${edge.from}'`);
|
package/dist/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0CH,MAAM,OAAO,eAAe;IAClB,IAAI,CAAS;IACb,KAAK,CAAI;IACT,KAAK,GAAsB,EAAE,CAAC;IAC9B,YAAY,GAA6B,EAAE,CAAC;IAC5C,KAAK,GAAsB,EAAE,CAAC;IAC9B,SAAS,GAAuB,EAAE,CAAC;IACnC,cAAc,GAAkB,IAAI,CAAC;IACrC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,EAAO,CAAC;IACvB,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,GAAG,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,KAAQ;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,QAAgB;QACzB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/checkpoint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAK/E;;GAEG;AACH,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,WAAW,CAAyC;IAEtD,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKpD,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAUzD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,KAAK,IAAI,IAAI;CAGd;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,CAAC,EAAE,MAAM;YAIhB,eAAe;
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAK/E;;GAEG;AACH,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,WAAW,CAAyC;IAEtD,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKpD,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAUzD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,KAAK,IAAI,IAAI;CAGd;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,CAAC,EAAE,MAAM;YAIhB,eAAe;IAI7B,OAAO,CAAC,WAAW;IAKb,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAgBpD,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA0BzD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
|
package/dist/checkpoint.js
CHANGED
|
@@ -10,17 +10,17 @@ import * as path from 'node:path';
|
|
|
10
10
|
export class InMemoryCheckpointStore {
|
|
11
11
|
checkpoints = new Map();
|
|
12
12
|
async save(checkpoint) {
|
|
13
|
-
this.checkpoints.set(checkpoint.id,
|
|
13
|
+
this.checkpoints.set(checkpoint.id, structuredClone(checkpoint));
|
|
14
14
|
}
|
|
15
15
|
async load(id) {
|
|
16
16
|
const checkpoint = this.checkpoints.get(id);
|
|
17
|
-
return checkpoint ?
|
|
17
|
+
return checkpoint ? structuredClone(checkpoint) : null;
|
|
18
18
|
}
|
|
19
19
|
async list(workflowName) {
|
|
20
20
|
const result = [];
|
|
21
21
|
for (const checkpoint of this.checkpoints.values()) {
|
|
22
22
|
if (checkpoint.workflowName === workflowName) {
|
|
23
|
-
result.push(
|
|
23
|
+
result.push(structuredClone(checkpoint));
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
return result.sort((a, b) => b.timestamp - a.timestamp);
|
|
@@ -41,10 +41,7 @@ export class FileCheckpointStore {
|
|
|
41
41
|
this.directory = directory ?? '.cogitator/checkpoints';
|
|
42
42
|
}
|
|
43
43
|
async ensureDirectory() {
|
|
44
|
-
|
|
45
|
-
await fs.mkdir(this.directory, { recursive: true });
|
|
46
|
-
}
|
|
47
|
-
catch { }
|
|
44
|
+
await fs.mkdir(this.directory, { recursive: true });
|
|
48
45
|
}
|
|
49
46
|
getFilePath(id) {
|
|
50
47
|
const sanitized = path.basename(id);
|
|
@@ -53,17 +50,23 @@ export class FileCheckpointStore {
|
|
|
53
50
|
async save(checkpoint) {
|
|
54
51
|
await this.ensureDirectory();
|
|
55
52
|
const filePath = this.getFilePath(checkpoint.id);
|
|
56
|
-
|
|
53
|
+
const tmpPath = `${filePath}.tmp`;
|
|
54
|
+
await fs.writeFile(tmpPath, JSON.stringify(checkpoint, null, 2), 'utf-8');
|
|
55
|
+
await fs.rename(tmpPath, filePath);
|
|
57
56
|
}
|
|
58
57
|
async load(id) {
|
|
58
|
+
const filePath = this.getFilePath(id);
|
|
59
|
+
let content;
|
|
59
60
|
try {
|
|
60
|
-
|
|
61
|
-
const content = await fs.readFile(filePath, 'utf-8');
|
|
62
|
-
return JSON.parse(content);
|
|
61
|
+
content = await fs.readFile(filePath, 'utf-8');
|
|
63
62
|
}
|
|
64
|
-
catch {
|
|
65
|
-
|
|
63
|
+
catch (e) {
|
|
64
|
+
if (e instanceof Error && 'code' in e && e.code === 'ENOENT') {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
throw e;
|
|
66
68
|
}
|
|
69
|
+
return JSON.parse(content);
|
|
67
70
|
}
|
|
68
71
|
async list(workflowName) {
|
|
69
72
|
await this.ensureDirectory();
|
|
@@ -91,10 +94,14 @@ export class FileCheckpointStore {
|
|
|
91
94
|
}
|
|
92
95
|
async delete(id) {
|
|
93
96
|
try {
|
|
94
|
-
|
|
95
|
-
|
|
97
|
+
await fs.unlink(this.getFilePath(id));
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
if (e instanceof Error && 'code' in e && e.code === 'ENOENT') {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
throw e;
|
|
96
104
|
}
|
|
97
|
-
catch { }
|
|
98
105
|
}
|
|
99
106
|
}
|
|
100
107
|
/**
|
package/dist/checkpoint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,uBAAuB;IAC1B,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;IAE5D,KAAK,CAAC,IAAI,CAAC,UAA8B;QACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"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"}
|
package/dist/executor.d.ts
CHANGED
|
@@ -1,21 +1,53 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WorkflowExecutor - Main execution engine for workflows
|
|
3
3
|
*/
|
|
4
|
-
import type { Workflow, WorkflowState, WorkflowResult, WorkflowExecuteOptions, StreamingWorkflowEvent, CheckpointStore } from '@cogitator-ai/types';
|
|
4
|
+
import type { Workflow, WorkflowState, WorkflowResult, WorkflowExecuteOptions, StreamingWorkflowEvent, CheckpointStore, RetryConfig, CircuitBreakerConfig, DeadLetterQueue, IdempotencyStore, ApprovalStore, ApprovalNotifier, TimerStore } from '@cogitator-ai/types';
|
|
5
5
|
import type { Cogitator } from '@cogitator-ai/core';
|
|
6
|
+
import type { WorkflowTracer } from './observability/tracer.js';
|
|
7
|
+
import type { WorkflowMetricsCollector } from './observability/metrics.js';
|
|
8
|
+
export interface ExecutorExecuteOptions extends WorkflowExecuteOptions {
|
|
9
|
+
/** Abort the run; checked between steps and passed to nodes (`ctx.signal`) */
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
/** Emit a workflow span and one span per node execution */
|
|
12
|
+
tracer?: WorkflowTracer;
|
|
13
|
+
/** Record workflow and node executions */
|
|
14
|
+
metricsCollector?: WorkflowMetricsCollector;
|
|
15
|
+
/** Subworkflow nesting depth, exposed to nodes as `ctx.depth` */
|
|
16
|
+
depth?: number;
|
|
17
|
+
/** Retry policy for nodes without their own `config.retries` */
|
|
18
|
+
defaultRetry?: RetryConfig;
|
|
19
|
+
/** Circuit breaker per node name, shared across runs of this executor */
|
|
20
|
+
defaultCircuitBreaker?: CircuitBreakerConfig;
|
|
21
|
+
/** Receives an entry for every node that finally failed */
|
|
22
|
+
deadLetterQueue?: DeadLetterQueue;
|
|
23
|
+
/** Reuse results of nodes that already completed for the same workflow id and step */
|
|
24
|
+
idempotencyStore?: IdempotencyStore;
|
|
25
|
+
/** Defaults for human-in-the-loop nodes (`humanWorkflowNode`) */
|
|
26
|
+
approvalStore?: ApprovalStore;
|
|
27
|
+
approvalNotifier?: ApprovalNotifier;
|
|
28
|
+
/** Default store for persisted timers (`timerWorkflowNode`) */
|
|
29
|
+
timerStore?: TimerStore;
|
|
30
|
+
}
|
|
6
31
|
export declare class NodeExecutionError extends Error {
|
|
7
32
|
readonly nodeName: string;
|
|
8
33
|
constructor(nodeName: string, cause: Error);
|
|
9
34
|
}
|
|
35
|
+
export declare class NodeTimeoutError extends Error {
|
|
36
|
+
readonly nodeName: string;
|
|
37
|
+
readonly timeoutMs: number;
|
|
38
|
+
constructor(nodeName: string, timeoutMs: number);
|
|
39
|
+
}
|
|
10
40
|
export declare class WorkflowExecutor {
|
|
11
41
|
private cogitator;
|
|
12
42
|
private checkpointStore;
|
|
13
43
|
private scheduler;
|
|
44
|
+
private breakers;
|
|
14
45
|
constructor(cogitator: Cogitator, checkpointStore?: CheckpointStore);
|
|
15
46
|
/**
|
|
16
47
|
* Execute a workflow
|
|
17
48
|
*/
|
|
18
|
-
execute<S extends WorkflowState>(workflow: Workflow<S>, input?: Partial<S>, options?:
|
|
49
|
+
execute<S extends WorkflowState>(workflow: Workflow<S>, input?: Partial<S>, options?: ExecutorExecuteOptions): Promise<WorkflowResult<S>>;
|
|
50
|
+
private getBreaker;
|
|
19
51
|
/**
|
|
20
52
|
* Resume a workflow from a checkpoint
|
|
21
53
|
*/
|
package/dist/executor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EAKf,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKpD,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAKxE,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,8EAA8E;IAC9E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,yEAAyE;IACzE,qBAAqB,CAAC,EAAE,oBAAoB,CAAC;IAC7C,2DAA2D;IAC3D,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,iEAAiE;IACjE,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAKD,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;CAM3C;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAMhD;AAgHD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAAuD;gBAE3D,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,eAAe;IAMnE;;OAEG;IACG,OAAO,CAAC,CAAC,SAAS,aAAa,EACnC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAoR7B,OAAO,CAAC,UAAU;IASlB;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,aAAa,EAClC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAqC7B;;OAEG;IACI,MAAM,CAAC,CAAC,SAAS,aAAa,EACnC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,OAAO,CAAC,EAAE,IAAI,CACZ,sBAAsB,EACtB,aAAa,GAAG,gBAAgB,GAAG,aAAa,GAAG,gBAAgB,CACpE,GACA,aAAa,CAAC,sBAAsB,CAAC;CAsEzC"}
|