flowcraft 2.4.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1 -1
- package/dist/analysis.d.ts +9 -2
- package/dist/analysis.js +1 -1
- package/dist/chunk-27STBUGG.js +44 -0
- package/dist/chunk-27STBUGG.js.map +1 -0
- package/dist/{chunk-OZZP5YI6.js → chunk-2ISKDTSN.js} +3 -3
- package/dist/{chunk-OZZP5YI6.js.map → chunk-2ISKDTSN.js.map} +1 -1
- package/dist/{chunk-OO3FF3DF.js → chunk-5BOUGXZO.js} +8 -8
- package/dist/chunk-5BOUGXZO.js.map +1 -0
- package/dist/{chunk-J3HZD5ES.js → chunk-5XPW6YEP.js} +54 -15
- package/dist/chunk-5XPW6YEP.js.map +1 -0
- package/dist/{chunk-VN2JKKAE.js → chunk-6MGLU3UU.js} +3 -3
- package/dist/{chunk-VN2JKKAE.js.map → chunk-6MGLU3UU.js.map} +1 -1
- package/dist/{chunk-7PBANEG3.js → chunk-7FIOROIR.js} +5 -11
- package/dist/chunk-7FIOROIR.js.map +1 -0
- package/dist/{chunk-G5BGBPFP.js → chunk-FBPY44WL.js} +3 -3
- package/dist/{chunk-G5BGBPFP.js.map → chunk-FBPY44WL.js.map} +1 -1
- package/dist/chunk-HNHM3FDK.js +52 -0
- package/dist/chunk-HNHM3FDK.js.map +1 -0
- package/dist/chunk-I53JB2KW.js +26 -0
- package/dist/chunk-I53JB2KW.js.map +1 -0
- package/dist/{chunk-GVF7GQXQ.js → chunk-IDTYHLDQ.js} +3 -3
- package/dist/chunk-IDTYHLDQ.js.map +1 -0
- package/dist/{chunk-EUJWJWFA.js → chunk-IKOTX22J.js} +3 -3
- package/dist/{chunk-EUJWJWFA.js.map → chunk-IKOTX22J.js.map} +1 -1
- package/dist/{chunk-GIJOZ3AN.js → chunk-JLDHCI2O.js} +5 -5
- package/dist/{chunk-GIJOZ3AN.js.map → chunk-JLDHCI2O.js.map} +1 -1
- package/dist/{chunk-KXXEA5VE.js → chunk-N4NLAIEN.js} +3 -3
- package/dist/{chunk-KXXEA5VE.js.map → chunk-N4NLAIEN.js.map} +1 -1
- package/dist/{chunk-CHG6O6JX.js → chunk-OPRR4TAO.js} +14 -12
- package/dist/chunk-OPRR4TAO.js.map +1 -0
- package/dist/{chunk-MCGK3FXQ.js → chunk-SEI4Z3MO.js} +3 -3
- package/dist/{chunk-MCGK3FXQ.js.map → chunk-SEI4Z3MO.js.map} +1 -1
- package/dist/{chunk-K6LPGUPR.js → chunk-UXIASXSG.js} +7 -7
- package/dist/chunk-UXIASXSG.js.map +1 -0
- package/dist/chunk-XDI4TJHA.js +95 -0
- package/dist/chunk-XDI4TJHA.js.map +1 -0
- package/dist/{chunk-NDWVLU7J.js → chunk-XTW36KQZ.js} +3 -3
- package/dist/{chunk-NDWVLU7J.js.map → chunk-XTW36KQZ.js.map} +1 -1
- package/dist/{chunk-233SESC2.js → chunk-ZLW4QOTS.js} +74 -3
- package/dist/chunk-ZLW4QOTS.js.map +1 -0
- package/dist/container-factory.d.ts +1 -1
- package/dist/container-factory.js +5 -5
- package/dist/context.d.ts +21 -2
- package/dist/context.js +1 -1
- package/dist/error-mapper.d.ts +15 -0
- package/dist/error-mapper.js +4 -0
- package/dist/error-mapper.js.map +1 -0
- package/dist/evaluator.d.ts +1 -1
- package/dist/flow.d.ts +5 -5
- package/dist/flow.js +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.js +20 -18
- package/dist/linter.d.ts +1 -1
- package/dist/linter.js +2 -2
- package/dist/logger.d.ts +1 -1
- package/dist/node.d.ts +1 -1
- package/dist/nodes/batch-gather.d.ts +1 -1
- package/dist/nodes/batch-scatter.d.ts +1 -1
- package/dist/nodes/sleep.d.ts +1 -1
- package/dist/nodes/sleep.js +1 -1
- package/dist/nodes/subflow.d.ts +1 -1
- package/dist/nodes/subflow.js +6 -6
- package/dist/nodes/wait.d.ts +1 -1
- package/dist/nodes/wait.js +1 -1
- package/dist/nodes/webhook.d.ts +13 -0
- package/dist/nodes/webhook.js +4 -0
- package/dist/nodes/webhook.js.map +1 -0
- package/dist/runtime/adapter.d.ts +13 -1
- package/dist/runtime/adapter.js +15 -14
- package/dist/runtime/execution-context.d.ts +1 -1
- package/dist/runtime/execution-context.js +3 -3
- package/dist/runtime/executors.d.ts +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +15 -14
- package/dist/runtime/node-executor-factory.d.ts +1 -1
- package/dist/runtime/orchestrator.d.ts +1 -1
- package/dist/runtime/orchestrator.js +4 -4
- package/dist/runtime/orchestrators/step-by-step.d.ts +1 -1
- package/dist/runtime/orchestrators/utils.d.ts +1 -1
- package/dist/runtime/runtime.d.ts +1 -1
- package/dist/runtime/runtime.js +14 -13
- package/dist/runtime/scheduler.d.ts +1 -1
- package/dist/runtime/state.d.ts +1 -1
- package/dist/runtime/state.js +2 -2
- package/dist/runtime/traverser.d.ts +1 -1
- package/dist/runtime/traverser.js +2 -2
- package/dist/runtime/types.d.ts +1 -1
- package/dist/runtime/workflow-logic-handler.d.ts +1 -1
- package/dist/runtime/workflow-logic-handler.js +2 -2
- package/dist/sanitizer.d.ts +1 -1
- package/dist/sdk.d.ts +29 -0
- package/dist/sdk.js +20 -0
- package/dist/sdk.js.map +1 -0
- package/dist/serializer.d.ts +1 -1
- package/dist/testing/event-logger.d.ts +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +17 -16
- package/dist/testing/run-with-trace.d.ts +1 -1
- package/dist/testing/run-with-trace.js +16 -15
- package/dist/testing/stepper.d.ts +1 -1
- package/dist/testing/stepper.js +6 -6
- package/dist/{types-DWCZW68f.d.ts → types-B-Drn84R.d.ts} +35 -3
- package/dist/types.d.ts +1 -1
- package/package.json +59 -55
- package/dist/chunk-233SESC2.js.map +0 -1
- package/dist/chunk-7PBANEG3.js.map +0 -1
- package/dist/chunk-CHG6O6JX.js.map +0 -1
- package/dist/chunk-GVF7GQXQ.js.map +0 -1
- package/dist/chunk-J3HZD5ES.js.map +0 -1
- package/dist/chunk-K6LPGUPR.js.map +0 -1
- package/dist/chunk-LJ4COM7S.js +0 -20
- package/dist/chunk-LJ4COM7S.js.map +0 -1
- package/dist/chunk-OO3FF3DF.js.map +0 -1
- package/dist/chunk-R3HQXIEL.js +0 -49
- package/dist/chunk-R3HQXIEL.js.map +0 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// src/context.ts
|
|
2
|
+
var Context = class {
|
|
3
|
+
type = "sync";
|
|
4
|
+
data;
|
|
5
|
+
constructor(initialData = {}) {
|
|
6
|
+
this.data = new Map(Object.entries(initialData));
|
|
7
|
+
}
|
|
8
|
+
get(key) {
|
|
9
|
+
return this.data.get(key);
|
|
10
|
+
}
|
|
11
|
+
set(key, value) {
|
|
12
|
+
this.data.set(key, value);
|
|
13
|
+
}
|
|
14
|
+
has(key) {
|
|
15
|
+
return this.data.has(key);
|
|
16
|
+
}
|
|
17
|
+
delete(key) {
|
|
18
|
+
return this.data.delete(key);
|
|
19
|
+
}
|
|
20
|
+
toJSON() {
|
|
21
|
+
return Object.fromEntries(this.data);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var AsyncContextView = class {
|
|
25
|
+
constructor(syncContext) {
|
|
26
|
+
this.syncContext = syncContext;
|
|
27
|
+
}
|
|
28
|
+
type = "async";
|
|
29
|
+
get(key) {
|
|
30
|
+
return Promise.resolve(this.syncContext.get(key));
|
|
31
|
+
}
|
|
32
|
+
set(key, value) {
|
|
33
|
+
this.syncContext.set(key, value);
|
|
34
|
+
return Promise.resolve();
|
|
35
|
+
}
|
|
36
|
+
has(key) {
|
|
37
|
+
return Promise.resolve(this.syncContext.has(key));
|
|
38
|
+
}
|
|
39
|
+
delete(key) {
|
|
40
|
+
return Promise.resolve(this.syncContext.delete(key));
|
|
41
|
+
}
|
|
42
|
+
toJSON() {
|
|
43
|
+
return Promise.resolve(this.syncContext.toJSON());
|
|
44
|
+
}
|
|
45
|
+
async patch(_operations) {
|
|
46
|
+
throw new Error("Patch operations not supported by AsyncContextView");
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var TrackedAsyncContext = class {
|
|
50
|
+
type = "async";
|
|
51
|
+
deltas = [];
|
|
52
|
+
innerContext;
|
|
53
|
+
constructor(innerContext) {
|
|
54
|
+
this.innerContext = innerContext;
|
|
55
|
+
}
|
|
56
|
+
async get(key) {
|
|
57
|
+
return this.innerContext.get(key);
|
|
58
|
+
}
|
|
59
|
+
async set(key, value) {
|
|
60
|
+
this.deltas.push({ op: "set", key, value });
|
|
61
|
+
return this.innerContext.set(key, value);
|
|
62
|
+
}
|
|
63
|
+
async has(key) {
|
|
64
|
+
return this.innerContext.has(key);
|
|
65
|
+
}
|
|
66
|
+
async delete(key) {
|
|
67
|
+
this.deltas.push({ op: "delete", key });
|
|
68
|
+
return this.innerContext.delete(key);
|
|
69
|
+
}
|
|
70
|
+
toJSON() {
|
|
71
|
+
return this.innerContext.toJSON();
|
|
72
|
+
}
|
|
73
|
+
async patch(operations) {
|
|
74
|
+
if (this.innerContext.patch) {
|
|
75
|
+
return this.innerContext.patch(operations);
|
|
76
|
+
}
|
|
77
|
+
for (const op of operations) {
|
|
78
|
+
if (op.op === "set") {
|
|
79
|
+
await this.innerContext.set(op.key, op.value);
|
|
80
|
+
} else if (op.op === "delete") {
|
|
81
|
+
await this.innerContext.delete(op.key);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
getDeltas() {
|
|
86
|
+
return [...this.deltas];
|
|
87
|
+
}
|
|
88
|
+
clearDeltas() {
|
|
89
|
+
this.deltas = [];
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export { AsyncContextView, Context, TrackedAsyncContext };
|
|
94
|
+
//# sourceMappingURL=chunk-XDI4TJHA.js.map
|
|
95
|
+
//# sourceMappingURL=chunk-XDI4TJHA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/context.ts"],"names":[],"mappings":";AAKO,IAAM,UAAN,MAAsF;AAAA,EAC5E,IAAA,GAAO,MAAA;AAAA,EACf,IAAA;AAAA,EAER,WAAA,CAAY,WAAA,GAAiC,EAAC,EAAG;AAChD,IAAA,IAAA,CAAK,OAAO,IAAI,GAAA,CAAI,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAC,CAAA;AAAA,EAChD;AAAA,EAGA,IAAI,GAAA,EAA8B;AACjC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA;AAAA,EACzB;AAAA,EAGA,GAAA,CAAI,KAAa,KAAA,EAAkB;AAClC,IAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,EACzB;AAAA,EAGA,IAAI,GAAA,EAAsB;AACzB,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA;AAAA,EACzB;AAAA,EAGA,OAAO,GAAA,EAAsB;AAC5B,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAAA,EAC5B;AAAA,EAEA,MAAA,GAA8B;AAC7B,IAAA,OAAO,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA;AAAA,EACpC;AACD;AAMO,IAAM,mBAAN,MAAgG;AAAA,EAGtG,YAAoB,WAAA,EAAqC;AAArC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AAAA,EAAsC;AAAA,EAF1C,IAAA,GAAO,OAAA;AAAA,EAKvB,IAAI,GAAA,EAAuC;AAC1C,IAAA,OAAO,QAAQ,OAAA,CAAQ,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,EACjD;AAAA,EAGA,GAAA,CAAI,KAAa,KAAA,EAA2B;AAC3C,IAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAC/B,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACxB;AAAA,EAGA,IAAI,GAAA,EAA+B;AAClC,IAAA,OAAO,QAAQ,OAAA,CAAQ,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,EACjD;AAAA,EAGA,OAAO,GAAA,EAA+B;AACrC,IAAA,OAAO,QAAQ,OAAA,CAAQ,IAAA,CAAK,WAAA,CAAY,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,EACpD;AAAA,EAEA,MAAA,GAAuC;AACtC,IAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,WAAA,CAAY,QAAQ,CAAA;AAAA,EACjD;AAAA,EAEA,MAAM,MAAM,WAAA,EAA8C;AACzD,IAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,EACrE;AACD;AAMO,IAAM,sBAAN,MAAmG;AAAA,EACzF,IAAA,GAAO,OAAA;AAAA,EACf,SAA2B,EAAC;AAAA,EAC5B,YAAA;AAAA,EAER,YAAY,YAAA,EAAuC;AAClD,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAAA,EACrB;AAAA,EAGA,MAAM,IAAI,GAAA,EAAuC;AAChD,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,GAAG,CAAA;AAAA,EACjC;AAAA,EAGA,MAAM,GAAA,CAAI,GAAA,EAAa,KAAA,EAA2B;AACjD,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,EAAE,IAAI,KAAA,EAAO,GAAA,EAAK,OAAO,CAAA;AAC1C,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,EACxC;AAAA,EAGA,MAAM,IAAI,GAAA,EAA+B;AACxC,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,GAAG,CAAA;AAAA,EACjC;AAAA,EAGA,MAAM,OAAO,GAAA,EAA+B;AAC3C,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,EAAE,EAAA,EAAI,QAAA,EAAU,KAAK,CAAA;AACtC,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,GAAG,CAAA;AAAA,EACpC;AAAA,EAEA,MAAA,GAAuC;AACtC,IAAA,OAAO,IAAA,CAAK,aAAa,MAAA,EAAO;AAAA,EACjC;AAAA,EAEA,MAAM,MAAM,UAAA,EAA6C;AACxD,IAAA,IAAI,IAAA,CAAK,aAAa,KAAA,EAAO;AAC5B,MAAA,OAAO,IAAA,CAAK,YAAA,CAAa,KAAA,CAAM,UAAU,CAAA;AAAA,IAC1C;AAEA,IAAA,KAAA,MAAW,MAAM,UAAA,EAAY;AAC5B,MAAA,IAAI,EAAA,CAAG,OAAO,KAAA,EAAO;AACpB,QAAA,MAAM,KAAK,YAAA,CAAa,GAAA,CAAI,EAAA,CAAG,GAAA,EAAK,GAAG,KAAK,CAAA;AAAA,MAC7C,CAAA,MAAA,IAAW,EAAA,CAAG,EAAA,KAAO,QAAA,EAAU;AAC9B,QAAA,MAAM,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,EAAA,CAAG,GAAG,CAAA;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAAA,EAEA,SAAA,GAA8B;AAC7B,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,MAAM,CAAA;AAAA,EACvB;AAAA,EAEA,WAAA,GAAoB;AACnB,IAAA,IAAA,CAAK,SAAS,EAAC;AAAA,EAChB;AACD","file":"chunk-XDI4TJHA.js","sourcesContent":["import type { IAsyncContext, ISyncContext, PatchOperation } from './types'\n\n/**\n * A default, high-performance, in-memory implementation of ISyncContext using a Map.\n */\nexport class Context<TContext extends Record<string, any>> implements ISyncContext<TContext> {\n\tpublic readonly type = 'sync' as const\n\tprivate data: Map<string, any>\n\n\tconstructor(initialData: Partial<TContext> = {}) {\n\t\tthis.data = new Map(Object.entries(initialData))\n\t}\n\n\tget<K extends keyof TContext>(key: K): TContext[K] | undefined\n\tget(key: string): any | undefined {\n\t\treturn this.data.get(key)\n\t}\n\n\tset<K extends keyof TContext>(key: K, value: TContext[K]): void\n\tset(key: string, value: any): void {\n\t\tthis.data.set(key, value)\n\t}\n\n\thas<K extends keyof TContext>(key: K): boolean\n\thas(key: string): boolean {\n\t\treturn this.data.has(key)\n\t}\n\n\tdelete<K extends keyof TContext>(key: K): boolean\n\tdelete(key: string): boolean {\n\t\treturn this.data.delete(key)\n\t}\n\n\ttoJSON(): Record<string, any> {\n\t\treturn Object.fromEntries(this.data)\n\t}\n}\n\n/**\n * An adapter that provides a consistent, Promise-based view of a synchronous context.\n * This is created by the runtime and is transparent to the node author.\n */\nexport class AsyncContextView<TContext extends Record<string, any>> implements IAsyncContext<TContext> {\n\tpublic readonly type = 'async' as const\n\n\tconstructor(private syncContext: ISyncContext<TContext>) {}\n\n\tget<K extends keyof TContext>(key: K): Promise<TContext[K] | undefined>\n\tget(key: string): Promise<any | undefined> {\n\t\treturn Promise.resolve(this.syncContext.get(key))\n\t}\n\n\tset<K extends keyof TContext>(key: K, value: TContext[K]): Promise<void>\n\tset(key: string, value: any): Promise<void> {\n\t\tthis.syncContext.set(key, value)\n\t\treturn Promise.resolve()\n\t}\n\n\thas<K extends keyof TContext>(key: K): Promise<boolean>\n\thas(key: string): Promise<boolean> {\n\t\treturn Promise.resolve(this.syncContext.has(key))\n\t}\n\n\tdelete<K extends keyof TContext>(key: K): Promise<boolean>\n\tdelete(key: string): Promise<boolean> {\n\t\treturn Promise.resolve(this.syncContext.delete(key))\n\t}\n\n\ttoJSON(): Promise<Record<string, any>> {\n\t\treturn Promise.resolve(this.syncContext.toJSON())\n\t}\n\n\tasync patch(_operations: PatchOperation[]): Promise<void> {\n\t\tthrow new Error('Patch operations not supported by AsyncContextView')\n\t}\n}\n\n/**\n * A proxy wrapper that tracks changes to an async context for delta-based persistence.\n * Records all mutations (set/delete operations) to enable efficient partial updates.\n */\nexport class TrackedAsyncContext<TContext extends Record<string, any>> implements IAsyncContext<TContext> {\n\tpublic readonly type = 'async' as const\n\tprivate deltas: PatchOperation[] = []\n\tprivate innerContext: IAsyncContext<TContext>\n\n\tconstructor(innerContext: IAsyncContext<TContext>) {\n\t\tthis.innerContext = innerContext\n\t}\n\n\tasync get<K extends keyof TContext>(key: K): Promise<TContext[K] | undefined>\n\tasync get(key: string): Promise<any | undefined> {\n\t\treturn this.innerContext.get(key)\n\t}\n\n\tasync set<K extends keyof TContext>(key: K, value: TContext[K]): Promise<void>\n\tasync set(key: string, value: any): Promise<void> {\n\t\tthis.deltas.push({ op: 'set', key, value })\n\t\treturn this.innerContext.set(key, value)\n\t}\n\n\tasync has<K extends keyof TContext>(key: K): Promise<boolean>\n\tasync has(key: string): Promise<boolean> {\n\t\treturn this.innerContext.has(key)\n\t}\n\n\tasync delete<K extends keyof TContext>(key: K): Promise<boolean>\n\tasync delete(key: string): Promise<boolean> {\n\t\tthis.deltas.push({ op: 'delete', key })\n\t\treturn this.innerContext.delete(key)\n\t}\n\n\ttoJSON(): Promise<Record<string, any>> {\n\t\treturn this.innerContext.toJSON()\n\t}\n\n\tasync patch(operations: PatchOperation[]): Promise<void> {\n\t\tif (this.innerContext.patch) {\n\t\t\treturn this.innerContext.patch(operations)\n\t\t}\n\n\t\tfor (const op of operations) {\n\t\t\tif (op.op === 'set') {\n\t\t\t\tawait this.innerContext.set(op.key, op.value)\n\t\t\t} else if (op.op === 'delete') {\n\t\t\t\tawait this.innerContext.delete(op.key)\n\t\t\t}\n\t\t}\n\t}\n\n\tgetDeltas(): PatchOperation[] {\n\t\treturn [...this.deltas]\n\t}\n\n\tclearDeltas(): void {\n\t\tthis.deltas = []\n\t}\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { executeBatch, processResults } from './chunk-HAZ26F3P.js';
|
|
2
|
-
import { ExecutionContext } from './chunk-
|
|
2
|
+
import { ExecutionContext } from './chunk-N4NLAIEN.js';
|
|
3
3
|
import { FlowcraftError } from './chunk-BCRWXTWX.js';
|
|
4
4
|
|
|
5
5
|
// src/runtime/orchestrator.ts
|
|
@@ -70,5 +70,5 @@ var DefaultOrchestrator = class {
|
|
|
70
70
|
};
|
|
71
71
|
|
|
72
72
|
export { DefaultOrchestrator };
|
|
73
|
-
//# sourceMappingURL=chunk-
|
|
74
|
-
//# sourceMappingURL=chunk-
|
|
73
|
+
//# sourceMappingURL=chunk-XTW36KQZ.js.map
|
|
74
|
+
//# sourceMappingURL=chunk-XTW36KQZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime/orchestrator.ts"],"names":[],"mappings":";;;;;AAOO,IAAM,sBAAN,MAAmD;AAAA,EACzD,MAAM,GAAA,CAAI,OAAA,EAAqC,SAAA,EAAyD;AACvG,IAAA,MAAM,mBAAA,GAAsB,UAAA,CAAW,SAAA,EAAW,mBAAA,IAAuB,CAAA;AACzE,IAAA,MAAM,iBAAiB,OAAA,CAAQ,WAAA,IAAe,IAAA,CAAK,GAAA,CAAI,qBAAqB,EAAE,CAAA;AAE9E,IAAA,IAAI;AACH,MAAA,OAAA,CAAQ,QAAQ,cAAA,EAAe;AAAA,IAChC,SAAS,KAAA,EAAO;AACf,MAAA,IAAI,KAAA,YAAiB,YAAA,IAAgB,KAAA,CAAM,IAAA,KAAS,YAAA,EAAc;AACjE,QAAA,MAAM,IAAI,cAAA,CAAe,oBAAA,EAAsB,EAAE,OAAA,EAAS,OAAO,CAAA;AAAA,MAClE;AACA,MAAA,MAAM,KAAA;AAAA,IACP;AAEA,IAAA,IAAI,UAAA,GAAa,CAAA;AACjB,IAAA,MAAM,aAAA,GAAgB,GAAA;AAEtB,IAAA,OAAO,SAAA,CAAU,aAAY,EAAG;AAC/B,MAAA,IAAI,EAAE,aAAa,aAAA,EAAe;AACjC,QAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AAAA,MAChF;AAEA,MAAA,IAAI;AACH,QAAA,OAAA,CAAQ,QAAQ,cAAA,EAAe;AAAA,MAChC,SAAS,KAAA,EAAO;AACf,QAAA,IAAI,KAAA,YAAiB,YAAA,IAAgB,KAAA,CAAM,IAAA,KAAS,YAAA,EAAc;AACjE,UAAA,MAAM,IAAI,cAAA,CAAe,oBAAA,EAAsB,EAAE,OAAA,EAAS,OAAO,CAAA;AAAA,QAClE;AACA,QAAA,MAAM,KAAA;AAAA,MACP;AAEA,MAAA,MAAM,UAAA,GAAa,UAAU,aAAA,EAAc;AAC3C,MAAA,MAAM,gBAAA,GAAmB,UAAU,mBAAA,EAAoB;AACvD,MAAA,MAAM,iBAAiB,IAAI,gBAAA;AAAA,QAC1B,gBAAA;AAAA,QACA,OAAA,CAAQ,KAAA;AAAA,QACR,OAAA,CAAQ,YAAA;AAAA,QACR,OAAA,CAAQ,WAAA;AAAA,QACR,OAAA,CAAQ,OAAA;AAAA,QACR,OAAA,CAAQ,QAAA;AAAA,QACR,OAAA,CAAQ,MAAA;AAAA,QACR,OAAA,CAAQ;AAAA,OACT;AACA,MAAA,MAAM,iBAAiB,MAAM,YAAA;AAAA,QAC5B,UAAA;AAAA,QACA,gBAAA;AAAA,QACA,OAAA,CAAQ,KAAA;AAAA,QACR,CAAC,MAAA,KAAmB,OAAA,CAAQ,OAAA,CAAQ,kBAAA,CAAmB,QAAQ,cAAc,CAAA;AAAA,QAC7E,OAAA,CAAQ,OAAA;AAAA,QACR;AAAA,OACD;AAEA,MAAA,MAAM,cAAA;AAAA,QACL,cAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA,CAAQ,KAAA;AAAA,QACR,OAAA,CAAQ,OAAA;AAAA,QACR,OAAA,CAAQ,SAAA;AAAA,QACR,OAAA,CAAQ;AAAA,OACT;AAEA,MAAA,IAAI,OAAA,CAAQ,KAAA,CAAM,UAAA,EAAW,EAAG;AAC/B,QAAA;AAAA,MACD;AAAA,IACD;AAEA,IAAA,MAAM,mBAAA,GAAsB,CAAC,SAAA,CAAU,WAAA,EAAY;AACnD,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAU,mBAAmB,CAAA;AAC1D,IAAA,MAAM,SAAS,MAAM,OAAA,CAAQ,MAAM,QAAA,CAAS,OAAA,CAAQ,SAAS,UAAU,CAAA;AACvE,IAAA,MAAA,CAAO,MAAA,GAAS,MAAA;AAChB,IAAA,OAAO,MAAA;AAAA,EACR;AACD","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/runtime/orchestrator.ts"],"names":[],"mappings":";;;;;AAOO,IAAM,sBAAN,MAAmD;AAAA,EACzD,MAAM,GAAA,CAAI,OAAA,EAAqC,SAAA,EAAyD;AACvG,IAAA,MAAM,mBAAA,GAAsB,UAAA,CAAW,SAAA,EAAW,mBAAA,IAAuB,CAAA;AACzE,IAAA,MAAM,iBAAiB,OAAA,CAAQ,WAAA,IAAe,IAAA,CAAK,GAAA,CAAI,qBAAqB,EAAE,CAAA;AAE9E,IAAA,IAAI;AACH,MAAA,OAAA,CAAQ,QAAQ,cAAA,EAAe;AAAA,IAChC,SAAS,KAAA,EAAO;AACf,MAAA,IAAI,KAAA,YAAiB,YAAA,IAAgB,KAAA,CAAM,IAAA,KAAS,YAAA,EAAc;AACjE,QAAA,MAAM,IAAI,cAAA,CAAe,oBAAA,EAAsB,EAAE,OAAA,EAAS,OAAO,CAAA;AAAA,MAClE;AACA,MAAA,MAAM,KAAA;AAAA,IACP;AAEA,IAAA,IAAI,UAAA,GAAa,CAAA;AACjB,IAAA,MAAM,aAAA,GAAgB,GAAA;AAEtB,IAAA,OAAO,SAAA,CAAU,aAAY,EAAG;AAC/B,MAAA,IAAI,EAAE,aAAa,aAAA,EAAe;AACjC,QAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AAAA,MAChF;AAEA,MAAA,IAAI;AACH,QAAA,OAAA,CAAQ,QAAQ,cAAA,EAAe;AAAA,MAChC,SAAS,KAAA,EAAO;AACf,QAAA,IAAI,KAAA,YAAiB,YAAA,IAAgB,KAAA,CAAM,IAAA,KAAS,YAAA,EAAc;AACjE,UAAA,MAAM,IAAI,cAAA,CAAe,oBAAA,EAAsB,EAAE,OAAA,EAAS,OAAO,CAAA;AAAA,QAClE;AACA,QAAA,MAAM,KAAA;AAAA,MACP;AAEA,MAAA,MAAM,UAAA,GAAa,UAAU,aAAA,EAAc;AAC3C,MAAA,MAAM,gBAAA,GAAmB,UAAU,mBAAA,EAAoB;AACvD,MAAA,MAAM,iBAAiB,IAAI,gBAAA;AAAA,QAC1B,gBAAA;AAAA,QACA,OAAA,CAAQ,KAAA;AAAA,QACR,OAAA,CAAQ,YAAA;AAAA,QACR,OAAA,CAAQ,WAAA;AAAA,QACR,OAAA,CAAQ,OAAA;AAAA,QACR,OAAA,CAAQ,QAAA;AAAA,QACR,OAAA,CAAQ,MAAA;AAAA,QACR,OAAA,CAAQ;AAAA,OACT;AACA,MAAA,MAAM,iBAAiB,MAAM,YAAA;AAAA,QAC5B,UAAA;AAAA,QACA,gBAAA;AAAA,QACA,OAAA,CAAQ,KAAA;AAAA,QACR,CAAC,MAAA,KAAmB,OAAA,CAAQ,OAAA,CAAQ,kBAAA,CAAmB,QAAQ,cAAc,CAAA;AAAA,QAC7E,OAAA,CAAQ,OAAA;AAAA,QACR;AAAA,OACD;AAEA,MAAA,MAAM,cAAA;AAAA,QACL,cAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA,CAAQ,KAAA;AAAA,QACR,OAAA,CAAQ,OAAA;AAAA,QACR,OAAA,CAAQ,SAAA;AAAA,QACR,OAAA,CAAQ;AAAA,OACT;AAEA,MAAA,IAAI,OAAA,CAAQ,KAAA,CAAM,UAAA,EAAW,EAAG;AAC/B,QAAA;AAAA,MACD;AAAA,IACD;AAEA,IAAA,MAAM,mBAAA,GAAsB,CAAC,SAAA,CAAU,WAAA,EAAY;AACnD,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAU,mBAAmB,CAAA;AAC1D,IAAA,MAAM,SAAS,MAAM,OAAA,CAAQ,MAAM,QAAA,CAAS,OAAA,CAAQ,SAAS,UAAU,CAAA;AACvE,IAAA,MAAA,CAAO,MAAA,GAAS,MAAA;AAChB,IAAA,OAAO,MAAA;AAAA,EACR;AACD","file":"chunk-XTW36KQZ.js","sourcesContent":["import { FlowcraftError } from '../errors'\nimport type { WorkflowResult } from '../types'\nimport { ExecutionContext } from './execution-context'\nimport { executeBatch, processResults } from './orchestrators/utils'\nimport type { GraphTraverser } from './traverser'\nimport type { IOrchestrator } from './types'\n\nexport class DefaultOrchestrator implements IOrchestrator {\n\tasync run(context: ExecutionContext<any, any>, traverser: GraphTraverser): Promise<WorkflowResult<any>> {\n\t\tconst hardwareConcurrency = globalThis.navigator?.hardwareConcurrency || 4\n\t\tconst maxConcurrency = context.concurrency ?? Math.min(hardwareConcurrency, 10)\n\n\t\ttry {\n\t\t\tcontext.signal?.throwIfAborted()\n\t\t} catch (error) {\n\t\t\tif (error instanceof DOMException && error.name === 'AbortError') {\n\t\t\t\tthrow new FlowcraftError('Workflow cancelled', { isFatal: false })\n\t\t\t}\n\t\t\tthrow error\n\t\t}\n\n\t\tlet iterations = 0\n\t\tconst maxIterations = 10000\n\n\t\twhile (traverser.hasMoreWork()) {\n\t\t\tif (++iterations > maxIterations) {\n\t\t\t\tthrow new Error('Traversal exceeded maximum iterations, possible infinite loop')\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcontext.signal?.throwIfAborted()\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof DOMException && error.name === 'AbortError') {\n\t\t\t\t\tthrow new FlowcraftError('Workflow cancelled', { isFatal: false })\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\n\t\t\tconst readyNodes = traverser.getReadyNodes()\n\t\t\tconst dynamicBlueprint = traverser.getDynamicBlueprint()\n\t\t\tconst updatedContext = new ExecutionContext(\n\t\t\t\tdynamicBlueprint,\n\t\t\t\tcontext.state,\n\t\t\t\tcontext.nodeRegistry,\n\t\t\t\tcontext.executionId,\n\t\t\t\tcontext.runtime,\n\t\t\t\tcontext.services,\n\t\t\t\tcontext.signal,\n\t\t\t\tcontext.concurrency,\n\t\t\t)\n\t\t\tconst settledResults = await executeBatch(\n\t\t\t\treadyNodes,\n\t\t\t\tdynamicBlueprint,\n\t\t\t\tcontext.state,\n\t\t\t\t(nodeId: string) => context.runtime.getExecutorForNode(nodeId, updatedContext),\n\t\t\t\tcontext.runtime,\n\t\t\t\tmaxConcurrency,\n\t\t\t)\n\n\t\t\tawait processResults(\n\t\t\t\tsettledResults,\n\t\t\t\ttraverser,\n\t\t\t\tcontext.state,\n\t\t\t\tcontext.runtime,\n\t\t\t\tcontext.blueprint,\n\t\t\t\tcontext.executionId,\n\t\t\t)\n\n\t\t\tif (context.state.isAwaiting()) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tconst isTraversalComplete = !traverser.hasMoreWork()\n\t\tconst status = context.state.getStatus(isTraversalComplete)\n\t\tconst result = await context.state.toResult(context.services.serializer)\n\t\tresult.status = status\n\t\treturn result\n\t}\n}\n"]}
|
|
@@ -82,6 +82,77 @@ function generateMermaid(blueprint) {
|
|
|
82
82
|
}
|
|
83
83
|
return mermaid;
|
|
84
84
|
}
|
|
85
|
+
function generateMermaidForRun(blueprint, events) {
|
|
86
|
+
if (!blueprint || !blueprint.nodes || blueprint.nodes.length === 0) {
|
|
87
|
+
return "flowchart TD\n empty[Empty Blueprint]";
|
|
88
|
+
}
|
|
89
|
+
let mermaid = "flowchart TD\n";
|
|
90
|
+
const successfulNodes = /* @__PURE__ */ new Set();
|
|
91
|
+
const failedNodes = /* @__PURE__ */ new Set();
|
|
92
|
+
const takenEdges = /* @__PURE__ */ new Set();
|
|
93
|
+
for (const event of events) {
|
|
94
|
+
switch (event.type) {
|
|
95
|
+
case "node:finish":
|
|
96
|
+
successfulNodes.add(event.payload.nodeId);
|
|
97
|
+
break;
|
|
98
|
+
case "node:error":
|
|
99
|
+
failedNodes.add(event.payload.nodeId);
|
|
100
|
+
break;
|
|
101
|
+
case "edge:evaluate":
|
|
102
|
+
if (event.payload.result) {
|
|
103
|
+
const edgeKey = `${event.payload.source}->${event.payload.target}`;
|
|
104
|
+
takenEdges.add(edgeKey);
|
|
105
|
+
}
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
for (const node of blueprint.nodes) {
|
|
110
|
+
const paramsString = node.params ? `<br/>params: ${JSON.stringify(node.params)}` : "";
|
|
111
|
+
const nodeLabel = `${node.id}${paramsString}`;
|
|
112
|
+
mermaid += ` ${node.id}["${nodeLabel}"]
|
|
113
|
+
`;
|
|
114
|
+
}
|
|
115
|
+
for (const node of blueprint.nodes) {
|
|
116
|
+
if (successfulNodes.has(node.id)) {
|
|
117
|
+
mermaid += ` style ${node.id} fill:#d4edda,stroke:#c3e6cb
|
|
118
|
+
`;
|
|
119
|
+
} else if (failedNodes.has(node.id)) {
|
|
120
|
+
mermaid += ` style ${node.id} fill:#f8d7da,stroke:#f5c6cb
|
|
121
|
+
`;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
let edgeIndex = 0;
|
|
125
|
+
for (const edge of blueprint.edges || []) {
|
|
126
|
+
const labelParts = [];
|
|
127
|
+
if (edge.action) {
|
|
128
|
+
labelParts.push(edge.action);
|
|
129
|
+
}
|
|
130
|
+
if (edge.condition) {
|
|
131
|
+
labelParts.push(edge.condition);
|
|
132
|
+
}
|
|
133
|
+
if (edge.transform) {
|
|
134
|
+
labelParts.push(edge.transform);
|
|
135
|
+
}
|
|
136
|
+
const edgeKey = `${edge.source}->${edge.target}`;
|
|
137
|
+
const isTaken = takenEdges.has(edgeKey);
|
|
138
|
+
let edgeLine;
|
|
139
|
+
if (labelParts.length > 0) {
|
|
140
|
+
const edgeLabel = labelParts.join(" | ");
|
|
141
|
+
edgeLine = ` ${edge.source} -- "${edgeLabel}" --> ${edge.target}
|
|
142
|
+
`;
|
|
143
|
+
} else {
|
|
144
|
+
edgeLine = ` ${edge.source} --> ${edge.target}
|
|
145
|
+
`;
|
|
146
|
+
}
|
|
147
|
+
mermaid += edgeLine;
|
|
148
|
+
if (isTaken) {
|
|
149
|
+
mermaid += ` linkStyle ${edgeIndex} stroke:#007bff,stroke-width:3px
|
|
150
|
+
`;
|
|
151
|
+
}
|
|
152
|
+
edgeIndex++;
|
|
153
|
+
}
|
|
154
|
+
return mermaid;
|
|
155
|
+
}
|
|
85
156
|
function analyzeBlueprint(blueprint) {
|
|
86
157
|
if (!blueprint || !blueprint.nodes || blueprint.nodes.length === 0) {
|
|
87
158
|
return {
|
|
@@ -116,6 +187,6 @@ function analyzeBlueprint(blueprint) {
|
|
|
116
187
|
};
|
|
117
188
|
}
|
|
118
189
|
|
|
119
|
-
export { analyzeBlueprint, checkForCycles, generateMermaid };
|
|
120
|
-
//# sourceMappingURL=chunk-
|
|
121
|
-
//# sourceMappingURL=chunk-
|
|
190
|
+
export { analyzeBlueprint, checkForCycles, generateMermaid, generateMermaidForRun };
|
|
191
|
+
//# sourceMappingURL=chunk-ZLW4QOTS.js.map
|
|
192
|
+
//# sourceMappingURL=chunk-ZLW4QOTS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/analysis.ts"],"names":[],"mappings":"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","file":"chunk-ZLW4QOTS.js","sourcesContent":["import type { FlowcraftEvent, WorkflowBlueprint } from './types'\n\n/**\n * A list of cycles found in the graph. Each cycle is an array of node IDs.\n */\nexport type Cycles = string[][]\n\n/**\n * Analysis result for a workflow blueprint\n */\nexport interface BlueprintAnalysis {\n\t/** Cycles found in the graph */\n\tcycles: Cycles\n\t/** Node IDs that have no incoming edges (start nodes) */\n\tstartNodeIds: string[]\n\t/** Node IDs that have no outgoing edges (terminal nodes) */\n\tterminalNodeIds: string[]\n\t/** Total number of nodes */\n\tnodeCount: number\n\t/** Total number of edges */\n\tedgeCount: number\n\t/** Whether the graph is a valid DAG (no cycles) */\n\tisDag: boolean\n}\n\n/**\n * Analyzes a workflow blueprint to detect cycles using an iterative DFS algorithm.\n * This avoids stack overflow issues for deep graphs compared to the recursive version.\n * @param blueprint The WorkflowBlueprint object containing nodes and edges.\n * @returns An array of cycles found. Each cycle is represented as an array of node IDs.\n */\nexport function checkForCycles(blueprint: WorkflowBlueprint): Cycles {\n\tconst cycles: Cycles = []\n\tif (!blueprint || !blueprint.nodes || blueprint.nodes.length === 0) {\n\t\treturn cycles\n\t}\n\n\tconst allNodeIds = blueprint.nodes.map((node) => node.id)\n\tconst adj = new Map<string, string[]>()\n\tfor (const id of allNodeIds) {\n\t\tadj.set(id, [])\n\t}\n\tfor (const edge of blueprint.edges) {\n\t\tadj.get(edge.source)?.push(edge.target)\n\t}\n\n\t// 0 = not visited, 1 = visiting, 2 = visited\n\tconst state = new Map<string, number>()\n\tfor (const id of allNodeIds) {\n\t\tstate.set(id, 0)\n\t}\n\n\tfor (const startNode of allNodeIds) {\n\t\tif (state.get(startNode) !== 0) continue\n\n\t\tconst stack: { node: string; path: string[] }[] = [{ node: startNode, path: [] }]\n\t\tconst pathSet = new Set<string>()\n\n\t\twhile (stack.length > 0) {\n\t\t\tconst { node, path } = stack[stack.length - 1]\n\n\t\t\tif (state.get(node) === 0) {\n\t\t\t\t// first visit\n\t\t\t\tstate.set(node, 1) // visiting\n\t\t\t\tpathSet.add(node)\n\t\t\t\tpath.push(node)\n\t\t\t}\n\n\t\t\tconst neighbors = adj.get(node) || []\n\t\t\tlet foundUnvisited = false\n\n\t\t\tfor (const neighbor of neighbors) {\n\t\t\t\tif (state.get(neighbor) === 1) {\n\t\t\t\t\t// back edge, cycle found\n\t\t\t\t\tconst cycleStartIndex = path.indexOf(neighbor)\n\t\t\t\t\tconst cycle = path.slice(cycleStartIndex)\n\t\t\t\t\tcycles.push([...cycle, neighbor])\n\t\t\t\t} else if (state.get(neighbor) === 0) {\n\t\t\t\t\t// unvisited neighbor\n\t\t\t\t\tstack.push({ node: neighbor, path: [...path] })\n\t\t\t\t\tfoundUnvisited = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!foundUnvisited) {\n\t\t\t\t// all neighbors visited\n\t\t\t\tstate.set(node, 2) // visited\n\t\t\t\tstack.pop()\n\t\t\t\tpathSet.delete(node)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn cycles\n}\n\n/**\n * Generates Mermaid diagram syntax from a WorkflowBlueprint\n * @param blueprint The WorkflowBlueprint object containing nodes and edges\n * @returns Mermaid syntax string for the flowchart\n */\nexport function generateMermaid(blueprint: WorkflowBlueprint): string {\n\tif (!blueprint || !blueprint.nodes || blueprint.nodes.length === 0) {\n\t\treturn 'flowchart TD\\n empty[Empty Blueprint]'\n\t}\n\n\tlet mermaid = 'flowchart TD\\n'\n\n\tfor (const node of blueprint.nodes) {\n\t\tconst paramsString = node.params ? `<br/>params: ${JSON.stringify(node.params)}` : ''\n\t\tconst nodeLabel = `${node.id}${paramsString}`\n\t\tmermaid += ` ${node.id}[\"${nodeLabel}\"]\\n`\n\t}\n\n\tfor (const edge of blueprint.edges || []) {\n\t\tconst labelParts: string[] = []\n\n\t\tif (edge.action) {\n\t\t\tlabelParts.push(edge.action)\n\t\t}\n\t\tif (edge.condition) {\n\t\t\tlabelParts.push(edge.condition)\n\t\t}\n\t\tif (edge.transform) {\n\t\t\tlabelParts.push(edge.transform)\n\t\t}\n\n\t\tif (labelParts.length > 0) {\n\t\t\tconst edgeLabel = labelParts.join(' | ')\n\t\t\tmermaid += ` ${edge.source} -- \"${edgeLabel}\" --> ${edge.target}\\n`\n\t\t} else {\n\t\t\tmermaid += ` ${edge.source} --> ${edge.target}\\n`\n\t\t}\n\t}\n\n\treturn mermaid\n}\n\n/**\n * Generates Mermaid diagram syntax from a WorkflowBlueprint with execution history styling\n * @param blueprint The WorkflowBlueprint object containing nodes and edges\n * @param events Array of FlowcraftEvent objects from the workflow execution\n * @returns Mermaid syntax string for the flowchart with execution path highlighting\n */\nexport function generateMermaidForRun(blueprint: WorkflowBlueprint, events: FlowcraftEvent[]): string {\n\tif (!blueprint || !blueprint.nodes || blueprint.nodes.length === 0) {\n\t\treturn 'flowchart TD\\n empty[Empty Blueprint]'\n\t}\n\n\tlet mermaid = 'flowchart TD\\n'\n\n\tconst successfulNodes = new Set<string>()\n\tconst failedNodes = new Set<string>()\n\tconst takenEdges = new Set<string>()\n\n\tfor (const event of events) {\n\t\tswitch (event.type) {\n\t\t\tcase 'node:finish':\n\t\t\t\tsuccessfulNodes.add(event.payload.nodeId)\n\t\t\t\tbreak\n\t\t\tcase 'node:error':\n\t\t\t\tfailedNodes.add(event.payload.nodeId)\n\t\t\t\tbreak\n\t\t\tcase 'edge:evaluate':\n\t\t\t\tif (event.payload.result) {\n\t\t\t\t\tconst edgeKey = `${event.payload.source}->${event.payload.target}`\n\t\t\t\t\ttakenEdges.add(edgeKey)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tfor (const node of blueprint.nodes) {\n\t\tconst paramsString = node.params ? `<br/>params: ${JSON.stringify(node.params)}` : ''\n\t\tconst nodeLabel = `${node.id}${paramsString}`\n\t\tmermaid += ` ${node.id}[\"${nodeLabel}\"]\\n`\n\t}\n\n\tfor (const node of blueprint.nodes) {\n\t\tif (successfulNodes.has(node.id)) {\n\t\t\tmermaid += ` style ${node.id} fill:#d4edda,stroke:#c3e6cb\\n`\n\t\t} else if (failedNodes.has(node.id)) {\n\t\t\tmermaid += ` style ${node.id} fill:#f8d7da,stroke:#f5c6cb\\n`\n\t\t}\n\t}\n\n\tlet edgeIndex = 0\n\tfor (const edge of blueprint.edges || []) {\n\t\tconst labelParts: string[] = []\n\n\t\tif (edge.action) {\n\t\t\tlabelParts.push(edge.action)\n\t\t}\n\t\tif (edge.condition) {\n\t\t\tlabelParts.push(edge.condition)\n\t\t}\n\t\tif (edge.transform) {\n\t\t\tlabelParts.push(edge.transform)\n\t\t}\n\n\t\tconst edgeKey = `${edge.source}->${edge.target}`\n\t\tconst isTaken = takenEdges.has(edgeKey)\n\n\t\tlet edgeLine: string\n\t\tif (labelParts.length > 0) {\n\t\t\tconst edgeLabel = labelParts.join(' | ')\n\t\t\tedgeLine = ` ${edge.source} -- \"${edgeLabel}\" --> ${edge.target}\\n`\n\t\t} else {\n\t\t\tedgeLine = ` ${edge.source} --> ${edge.target}\\n`\n\t\t}\n\n\t\tmermaid += edgeLine\n\n\t\tif (isTaken) {\n\t\t\tmermaid += ` linkStyle ${edgeIndex} stroke:#007bff,stroke-width:3px\\n`\n\t\t}\n\n\t\tedgeIndex++\n\t}\n\n\treturn mermaid\n}\n\n/**\n * Analyzes a workflow blueprint and returns comprehensive analysis\n * @param blueprint The WorkflowBlueprint object containing nodes and edges\n * @returns Analysis result with cycles, start nodes, terminal nodes, and other metrics\n */\nexport function analyzeBlueprint(blueprint: WorkflowBlueprint): BlueprintAnalysis {\n\tif (!blueprint || !blueprint.nodes || blueprint.nodes.length === 0) {\n\t\treturn {\n\t\t\tcycles: [],\n\t\t\tstartNodeIds: [],\n\t\t\tterminalNodeIds: [],\n\t\t\tnodeCount: 0,\n\t\t\tedgeCount: 0,\n\t\t\tisDag: true,\n\t\t}\n\t}\n\n\tconst cycles = checkForCycles(blueprint)\n\tconst nodeCount = blueprint.nodes.length\n\tconst edgeCount = blueprint.edges?.length || 0\n\n\tconst nodesWithIncoming = new Set<string>()\n\tfor (const edge of blueprint.edges || []) {\n\t\tnodesWithIncoming.add(edge.target)\n\t}\n\n\tconst startNodeIds = blueprint.nodes.map((node) => node.id).filter((nodeId) => !nodesWithIncoming.has(nodeId))\n\n\tconst nodesWithOutgoing = new Set<string>()\n\tfor (const edge of blueprint.edges || []) {\n\t\tnodesWithOutgoing.add(edge.source)\n\t}\n\n\tconst terminalNodeIds = blueprint.nodes.map((node) => node.id).filter((nodeId) => !nodesWithOutgoing.has(nodeId))\n\n\treturn {\n\t\tcycles,\n\t\tstartNodeIds,\n\t\tterminalNodeIds,\n\t\tnodeCount,\n\t\tedgeCount,\n\t\tisDag: cycles.length === 0,\n\t}\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DIContainer } from './container.js';
|
|
2
|
-
import {
|
|
2
|
+
import { v as RuntimeDependencies, y as ILogger, D as ISerializer, x as IEvaluator, A as IEventBus, M as Middleware, o as NodeFunction, p as NodeClass, h as WorkflowBlueprint } from './types-B-Drn84R.js';
|
|
3
3
|
import './errors.js';
|
|
4
4
|
|
|
5
5
|
interface ContainerOptions<TDependencies extends RuntimeDependencies = RuntimeDependencies> {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { createDefaultContainer } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { createDefaultContainer } from './chunk-2ISKDTSN.js';
|
|
2
|
+
import './chunk-XTW36KQZ.js';
|
|
3
3
|
import './chunk-HAZ26F3P.js';
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import './chunk-N4NLAIEN.js';
|
|
5
|
+
import './chunk-5BOUGXZO.js';
|
|
6
6
|
import './chunk-4PELJWF7.js';
|
|
7
7
|
import './chunk-CYHZ2YVH.js';
|
|
8
8
|
import './chunk-WWGFIYKW.js';
|
|
9
|
-
import './chunk-
|
|
9
|
+
import './chunk-XDI4TJHA.js';
|
|
10
10
|
import './chunk-BCRWXTWX.js';
|
|
11
11
|
import './chunk-PH2IYZHV.js';
|
|
12
12
|
//# sourceMappingURL=container-factory.js.map
|
package/dist/context.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as ISyncContext, u as IAsyncContext, P as PatchOperation } from './types-B-Drn84R.js';
|
|
2
2
|
import './errors.js';
|
|
3
3
|
import './container.js';
|
|
4
4
|
|
|
@@ -28,6 +28,25 @@ declare class AsyncContextView<TContext extends Record<string, any>> implements
|
|
|
28
28
|
has<K extends keyof TContext>(key: K): Promise<boolean>;
|
|
29
29
|
delete<K extends keyof TContext>(key: K): Promise<boolean>;
|
|
30
30
|
toJSON(): Promise<Record<string, any>>;
|
|
31
|
+
patch(_operations: PatchOperation[]): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A proxy wrapper that tracks changes to an async context for delta-based persistence.
|
|
35
|
+
* Records all mutations (set/delete operations) to enable efficient partial updates.
|
|
36
|
+
*/
|
|
37
|
+
declare class TrackedAsyncContext<TContext extends Record<string, any>> implements IAsyncContext<TContext> {
|
|
38
|
+
readonly type: "async";
|
|
39
|
+
private deltas;
|
|
40
|
+
private innerContext;
|
|
41
|
+
constructor(innerContext: IAsyncContext<TContext>);
|
|
42
|
+
get<K extends keyof TContext>(key: K): Promise<TContext[K] | undefined>;
|
|
43
|
+
set<K extends keyof TContext>(key: K, value: TContext[K]): Promise<void>;
|
|
44
|
+
has<K extends keyof TContext>(key: K): Promise<boolean>;
|
|
45
|
+
delete<K extends keyof TContext>(key: K): Promise<boolean>;
|
|
46
|
+
toJSON(): Promise<Record<string, any>>;
|
|
47
|
+
patch(operations: PatchOperation[]): Promise<void>;
|
|
48
|
+
getDeltas(): PatchOperation[];
|
|
49
|
+
clearDeltas(): void;
|
|
31
50
|
}
|
|
32
51
|
|
|
33
|
-
export { AsyncContextView, Context };
|
|
52
|
+
export { AsyncContextView, Context, TrackedAsyncContext };
|
package/dist/context.js
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { h as WorkflowBlueprint } from './types-B-Drn84R.js';
|
|
2
|
+
import './errors.js';
|
|
3
|
+
import './container.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Creates an error mapper function that enhances runtime errors with source location information.
|
|
7
|
+
* The mapper looks up node IDs in the provided manifest blueprints and returns enhanced errors
|
|
8
|
+
* that point to the original TypeScript source code.
|
|
9
|
+
*
|
|
10
|
+
* @param manifestBlueprints - The compiled blueprint manifest containing source location data
|
|
11
|
+
* @returns A function that maps errors to enhanced errors with source location information
|
|
12
|
+
*/
|
|
13
|
+
declare function createErrorMapper(manifestBlueprints: Record<string, WorkflowBlueprint>): (error: Error) => Error;
|
|
14
|
+
|
|
15
|
+
export { createErrorMapper };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"error-mapper.js"}
|
package/dist/evaluator.d.ts
CHANGED
package/dist/flow.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { o as NodeFunction, p as NodeClass, j as NodeDefinition, k as EdgeDefinition, h as WorkflowBlueprint, U as UIGraph } from './types-B-Drn84R.js';
|
|
2
2
|
import './errors.js';
|
|
3
3
|
import './container.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* A fluent API for programmatically constructing a WorkflowBlueprint.
|
|
7
7
|
*/
|
|
8
|
-
declare class
|
|
8
|
+
declare class FlowBuilder<TContext extends Record<string, any> = Record<string, any>, TDependencies extends Record<string, any> = Record<string, any>> {
|
|
9
9
|
private blueprint;
|
|
10
10
|
private functionRegistry;
|
|
11
11
|
private loopControllerIds;
|
|
@@ -32,7 +32,7 @@ declare class Flow<TContext extends Record<string, any> = Record<string, any>, T
|
|
|
32
32
|
outputKey: TOutputKey;
|
|
33
33
|
/** The number of items to process in each chunk to limit memory usage. */
|
|
34
34
|
chunkSize?: number;
|
|
35
|
-
}):
|
|
35
|
+
}): FlowBuilder<TContext & {
|
|
36
36
|
[K in TOutputKey]: TWorkerOutput[];
|
|
37
37
|
}, TDependencies>;
|
|
38
38
|
/**
|
|
@@ -80,6 +80,6 @@ declare class Flow<TContext extends Record<string, any> = Record<string, any>, T
|
|
|
80
80
|
/**
|
|
81
81
|
* Helper function to create a new Flow builder instance.
|
|
82
82
|
*/
|
|
83
|
-
declare function createFlow<TContext extends Record<string, any> = Record<string, any>, TDependencies extends Record<string, any> = Record<string, any>>(id: string):
|
|
83
|
+
declare function createFlow<TContext extends Record<string, any> = Record<string, any>, TDependencies extends Record<string, any> = Record<string, any>>(id: string): FlowBuilder<TContext, TDependencies>;
|
|
84
84
|
|
|
85
|
-
export {
|
|
85
|
+
export { FlowBuilder, createFlow };
|
package/dist/flow.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
export { BlueprintAnalysis, Cycles, analyzeBlueprint, checkForCycles, generateMermaid } from './analysis.js';
|
|
1
|
+
export { BlueprintAnalysis, Cycles, analyzeBlueprint, checkForCycles, generateMermaid, generateMermaidForRun } from './analysis.js';
|
|
2
2
|
export { DIContainer, ServiceToken, ServiceTokens } from './container.js';
|
|
3
3
|
export { ContainerOptions, createDefaultContainer } from './container-factory.js';
|
|
4
|
-
export { AsyncContextView, Context } from './context.js';
|
|
4
|
+
export { AsyncContextView, Context, TrackedAsyncContext } from './context.js';
|
|
5
|
+
export { createErrorMapper } from './error-mapper.js';
|
|
5
6
|
export { FlowcraftError } from './errors.js';
|
|
6
7
|
export { PropertyEvaluator, UnsafeEvaluator } from './evaluator.js';
|
|
7
|
-
export {
|
|
8
|
+
export { FlowBuilder, createFlow } from './flow.js';
|
|
8
9
|
export { LinterIssue, LinterIssueCode, LinterResult, lintBlueprint } from './linter.js';
|
|
9
10
|
export { ConsoleLogger, NullLogger } from './logger.js';
|
|
10
|
-
export { B as BaseNode, C as ClassNodeExecutor,
|
|
11
|
+
export { B as BaseNode, C as ClassNodeExecutor, s as ContextImplementation, k as EdgeDefinition, e as ExecutionServices, E as ExecutionStrategy, c as FlowRuntime, z as FlowcraftEvent, F as FunctionNodeExecutor, G as GraphTraverser, u as IAsyncContext, x as IEvaluator, A as IEventBus, y as ILogger, I as IOrchestrator, f as IRuntime, D as ISerializer, t as ISyncContext, M as Middleware, p as NodeClass, l as NodeConfig, n as NodeContext, j as NodeDefinition, N as NodeExecutionResult, b as NodeExecutor, a as NodeExecutorConfig, d as NodeExecutorFactory, o as NodeFunction, q as NodeImplementation, r as NodeRegistry, m as NodeResult, P as PatchOperation, R as ReadyNode, v as RuntimeDependencies, w as RuntimeOptions, S as SourceLocation, U as UIGraph, h as WorkflowBlueprint, g as WorkflowBlueprintMetadata, H as WorkflowError, K as WorkflowResult, W as WorkflowState, J as WorkflowStatus, i as isNodeClass } from './types-B-Drn84R.js';
|
|
11
12
|
export { AdapterOptions, BaseDistributedAdapter, ICoordinationStore, JobPayload } from './runtime/adapter.js';
|
|
12
13
|
export { DefaultOrchestrator } from './runtime/orchestrator.js';
|
|
13
14
|
export { executeBatch, processResults } from './runtime/orchestrators/utils.js';
|
package/dist/index.js
CHANGED
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
import './chunk-NVJ3ZO3P.js';
|
|
2
2
|
import './chunk-NVLZFLYM.js';
|
|
3
|
-
export { BaseDistributedAdapter } from './chunk-
|
|
4
|
-
export { FlowRuntime } from './chunk-
|
|
3
|
+
export { BaseDistributedAdapter } from './chunk-5XPW6YEP.js';
|
|
4
|
+
export { FlowRuntime } from './chunk-OPRR4TAO.js';
|
|
5
|
+
import './chunk-SEI4Z3MO.js';
|
|
5
6
|
import './chunk-DL7KVYZF.js';
|
|
6
|
-
import './chunk-LM4ACVHL.js';
|
|
7
|
-
import './chunk-MCGK3FXQ.js';
|
|
8
|
-
import './chunk-LJ4COM7S.js';
|
|
9
|
-
import './chunk-K6LPGUPR.js';
|
|
10
|
-
export { GraphTraverser } from './chunk-G5BGBPFP.js';
|
|
11
|
-
import './chunk-GVF7GQXQ.js';
|
|
12
7
|
export { ClassNodeExecutor, FunctionNodeExecutor, NodeExecutor } from './chunk-ONH7PIJZ.js';
|
|
13
|
-
|
|
14
|
-
export { sanitizeBlueprint } from './chunk-DSYAC4WB.js';
|
|
15
|
-
import './chunk-55J6XMHW.js';
|
|
8
|
+
import './chunk-LM4ACVHL.js';
|
|
16
9
|
import './chunk-BC4G7OM6.js';
|
|
17
10
|
import './chunk-RM677CNU.js';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export {
|
|
11
|
+
import './chunk-HNHM3FDK.js';
|
|
12
|
+
import './chunk-UXIASXSG.js';
|
|
13
|
+
export { GraphTraverser } from './chunk-FBPY44WL.js';
|
|
14
|
+
import './chunk-IDTYHLDQ.js';
|
|
15
|
+
import './chunk-I53JB2KW.js';
|
|
16
|
+
export { lintBlueprint } from './chunk-IKOTX22J.js';
|
|
17
|
+
export { sanitizeBlueprint } from './chunk-DSYAC4WB.js';
|
|
18
|
+
import './chunk-55J6XMHW.js';
|
|
19
|
+
export { analyzeBlueprint, checkForCycles, generateMermaid, generateMermaidForRun } from './chunk-ZLW4QOTS.js';
|
|
20
|
+
export { createDefaultContainer } from './chunk-2ISKDTSN.js';
|
|
21
|
+
export { DefaultOrchestrator } from './chunk-XTW36KQZ.js';
|
|
21
22
|
export { executeBatch, processResults } from './chunk-HAZ26F3P.js';
|
|
22
|
-
import './chunk-
|
|
23
|
-
export { WorkflowState } from './chunk-
|
|
23
|
+
import './chunk-N4NLAIEN.js';
|
|
24
|
+
export { WorkflowState } from './chunk-5BOUGXZO.js';
|
|
24
25
|
export { ConsoleLogger, NullLogger } from './chunk-4PELJWF7.js';
|
|
25
26
|
export { JsonSerializer } from './chunk-CYHZ2YVH.js';
|
|
26
27
|
export { DIContainer, ServiceTokens } from './chunk-WWGFIYKW.js';
|
|
27
|
-
export { AsyncContextView, Context } from './chunk-
|
|
28
|
+
export { AsyncContextView, Context, TrackedAsyncContext } from './chunk-XDI4TJHA.js';
|
|
29
|
+
export { createErrorMapper } from './chunk-27STBUGG.js';
|
|
28
30
|
export { FlowcraftError } from './chunk-BCRWXTWX.js';
|
|
29
31
|
export { PropertyEvaluator, UnsafeEvaluator } from './chunk-PH2IYZHV.js';
|
|
30
|
-
export {
|
|
32
|
+
export { FlowBuilder, createFlow } from './chunk-7FIOROIR.js';
|
|
31
33
|
export { BaseNode, isNodeClass } from './chunk-LNK7LZER.js';
|
|
32
34
|
//# sourceMappingURL=index.js.map
|
|
33
35
|
//# sourceMappingURL=index.js.map
|
package/dist/linter.d.ts
CHANGED
package/dist/linter.js
CHANGED
package/dist/logger.d.ts
CHANGED
package/dist/node.d.ts
CHANGED
package/dist/nodes/sleep.d.ts
CHANGED
package/dist/nodes/sleep.js
CHANGED
package/dist/nodes/subflow.d.ts
CHANGED
package/dist/nodes/subflow.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { SubflowNode } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
1
|
+
export { SubflowNode } from '../chunk-UXIASXSG.js';
|
|
2
|
+
import '../chunk-FBPY44WL.js';
|
|
3
|
+
import '../chunk-ZLW4QOTS.js';
|
|
4
|
+
import '../chunk-N4NLAIEN.js';
|
|
5
|
+
import '../chunk-5BOUGXZO.js';
|
|
6
|
+
import '../chunk-XDI4TJHA.js';
|
|
7
7
|
import '../chunk-BCRWXTWX.js';
|
|
8
8
|
import '../chunk-LNK7LZER.js';
|
|
9
9
|
//# sourceMappingURL=subflow.js.map
|
package/dist/nodes/wait.d.ts
CHANGED
package/dist/nodes/wait.js
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-B-Drn84R.js';
|
|
2
|
+
import '../errors.js';
|
|
3
|
+
import '../container.js';
|
|
4
|
+
|
|
5
|
+
declare class WebhookNode extends BaseNode {
|
|
6
|
+
prep(context: NodeContext<Record<string, any>, any, any>): Promise<any>;
|
|
7
|
+
exec(prepResult: {
|
|
8
|
+
url: string;
|
|
9
|
+
event: string;
|
|
10
|
+
}, _context: NodeContext<Record<string, any>, any, any>): Promise<Omit<NodeResult, 'error'>>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { WebhookNode };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"webhook.js"}
|