flowcraft 2.7.1 → 2.8.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.
Files changed (229) hide show
  1. package/README.md +1 -1
  2. package/dist/index-D3dyjW2G.d.mts +1269 -0
  3. package/dist/index.d.mts +2 -0
  4. package/dist/index.mjs +727 -0
  5. package/dist/index.mjs.map +1 -0
  6. package/dist/replay-BB11M6K1.mjs +107 -0
  7. package/dist/replay-BB11M6K1.mjs.map +1 -0
  8. package/dist/runtime-CmefIAu_.mjs +2216 -0
  9. package/dist/runtime-CmefIAu_.mjs.map +1 -0
  10. package/dist/{sdk.d.ts → sdk.d.mts} +14 -12
  11. package/dist/sdk.mjs +29 -0
  12. package/dist/sdk.mjs.map +1 -0
  13. package/dist/testing/index.d.mts +172 -0
  14. package/dist/testing/index.mjs +277 -0
  15. package/dist/testing/index.mjs.map +1 -0
  16. package/package.json +59 -59
  17. package/LICENSE +0 -21
  18. package/dist/adapters/index.d.ts +0 -4
  19. package/dist/adapters/index.js +0 -4
  20. package/dist/adapters/index.js.map +0 -1
  21. package/dist/adapters/persistent-event-bus.d.ts +0 -69
  22. package/dist/adapters/persistent-event-bus.js +0 -3
  23. package/dist/adapters/persistent-event-bus.js.map +0 -1
  24. package/dist/analysis.d.ts +0 -53
  25. package/dist/analysis.js +0 -3
  26. package/dist/analysis.js.map +0 -1
  27. package/dist/chunk-27STBUGG.js +0 -44
  28. package/dist/chunk-27STBUGG.js.map +0 -1
  29. package/dist/chunk-2TSADFQX.js +0 -46
  30. package/dist/chunk-2TSADFQX.js.map +0 -1
  31. package/dist/chunk-3Y5O5EGB.js +0 -3
  32. package/dist/chunk-3Y5O5EGB.js.map +0 -1
  33. package/dist/chunk-4PELJWF7.js +0 -29
  34. package/dist/chunk-4PELJWF7.js.map +0 -1
  35. package/dist/chunk-55J6XMHW.js +0 -3
  36. package/dist/chunk-55J6XMHW.js.map +0 -1
  37. package/dist/chunk-6RKHCJUU.js +0 -29
  38. package/dist/chunk-6RKHCJUU.js.map +0 -1
  39. package/dist/chunk-7EBKWATZ.js +0 -86
  40. package/dist/chunk-7EBKWATZ.js.map +0 -1
  41. package/dist/chunk-7EMUOH77.js +0 -90
  42. package/dist/chunk-7EMUOH77.js.map +0 -1
  43. package/dist/chunk-7M6FHFHP.js +0 -25
  44. package/dist/chunk-7M6FHFHP.js.map +0 -1
  45. package/dist/chunk-AKDL2ZX7.js +0 -287
  46. package/dist/chunk-AKDL2ZX7.js.map +0 -1
  47. package/dist/chunk-BC4G7OM6.js +0 -42
  48. package/dist/chunk-BC4G7OM6.js.map +0 -1
  49. package/dist/chunk-BCMR7Y4U.js +0 -76
  50. package/dist/chunk-BCMR7Y4U.js.map +0 -1
  51. package/dist/chunk-BCRWXTWX.js +0 -21
  52. package/dist/chunk-BCRWXTWX.js.map +0 -1
  53. package/dist/chunk-BEHVGFIM.js +0 -532
  54. package/dist/chunk-BEHVGFIM.js.map +0 -1
  55. package/dist/chunk-DL7KVYZF.js +0 -39
  56. package/dist/chunk-DL7KVYZF.js.map +0 -1
  57. package/dist/chunk-DV2CXHOY.js +0 -74
  58. package/dist/chunk-DV2CXHOY.js.map +0 -1
  59. package/dist/chunk-H4JTZYIT.js +0 -172
  60. package/dist/chunk-H4JTZYIT.js.map +0 -1
  61. package/dist/chunk-HFJXYY4E.js +0 -3
  62. package/dist/chunk-HFJXYY4E.js.map +0 -1
  63. package/dist/chunk-HNHM3FDK.js +0 -52
  64. package/dist/chunk-HNHM3FDK.js.map +0 -1
  65. package/dist/chunk-HXSK5P2X.js +0 -150
  66. package/dist/chunk-HXSK5P2X.js.map +0 -1
  67. package/dist/chunk-I53JB2KW.js +0 -26
  68. package/dist/chunk-I53JB2KW.js.map +0 -1
  69. package/dist/chunk-IDTYHLDQ.js +0 -16
  70. package/dist/chunk-IDTYHLDQ.js.map +0 -1
  71. package/dist/chunk-IKOTX22J.js +0 -85
  72. package/dist/chunk-IKOTX22J.js.map +0 -1
  73. package/dist/chunk-L3MX5MTA.js +0 -33
  74. package/dist/chunk-L3MX5MTA.js.map +0 -1
  75. package/dist/chunk-L46TQXCV.js +0 -144
  76. package/dist/chunk-L46TQXCV.js.map +0 -1
  77. package/dist/chunk-LM4ACVHL.js +0 -73
  78. package/dist/chunk-LM4ACVHL.js.map +0 -1
  79. package/dist/chunk-LNK7LZER.js +0 -51
  80. package/dist/chunk-LNK7LZER.js.map +0 -1
  81. package/dist/chunk-N63S5NEG.js +0 -107
  82. package/dist/chunk-N63S5NEG.js.map +0 -1
  83. package/dist/chunk-NVLZFLYM.js +0 -3
  84. package/dist/chunk-NVLZFLYM.js.map +0 -1
  85. package/dist/chunk-ONH7PIJZ.js +0 -300
  86. package/dist/chunk-ONH7PIJZ.js.map +0 -1
  87. package/dist/chunk-PH2IYZHV.js +0 -48
  88. package/dist/chunk-PH2IYZHV.js.map +0 -1
  89. package/dist/chunk-RAZWRNAJ.js +0 -54
  90. package/dist/chunk-RAZWRNAJ.js.map +0 -1
  91. package/dist/chunk-RM677CNU.js +0 -52
  92. package/dist/chunk-RM677CNU.js.map +0 -1
  93. package/dist/chunk-TKSSRS5U.js +0 -39
  94. package/dist/chunk-TKSSRS5U.js.map +0 -1
  95. package/dist/chunk-U7DKCIWT.js +0 -340
  96. package/dist/chunk-U7DKCIWT.js.map +0 -1
  97. package/dist/chunk-UNORA7EM.js +0 -103
  98. package/dist/chunk-UNORA7EM.js.map +0 -1
  99. package/dist/chunk-WWGFIYKW.js +0 -47
  100. package/dist/chunk-WWGFIYKW.js.map +0 -1
  101. package/dist/chunk-XZZWIJ4G.js +0 -25
  102. package/dist/chunk-XZZWIJ4G.js.map +0 -1
  103. package/dist/chunk-ZETQCNEF.js +0 -139
  104. package/dist/chunk-ZETQCNEF.js.map +0 -1
  105. package/dist/chunk-ZLW4QOTS.js +0 -192
  106. package/dist/chunk-ZLW4QOTS.js.map +0 -1
  107. package/dist/container-factory.d.ts +0 -17
  108. package/dist/container-factory.js +0 -13
  109. package/dist/container-factory.js.map +0 -1
  110. package/dist/container.d.ts +0 -23
  111. package/dist/container.js +0 -3
  112. package/dist/container.js.map +0 -1
  113. package/dist/context.d.ts +0 -65
  114. package/dist/context.js +0 -3
  115. package/dist/context.js.map +0 -1
  116. package/dist/error-mapper.d.ts +0 -15
  117. package/dist/error-mapper.js +0 -4
  118. package/dist/error-mapper.js.map +0 -1
  119. package/dist/errors.d.ts +0 -20
  120. package/dist/errors.js +0 -3
  121. package/dist/errors.js.map +0 -1
  122. package/dist/evaluator.d.ts +0 -32
  123. package/dist/evaluator.js +0 -3
  124. package/dist/evaluator.js.map +0 -1
  125. package/dist/flow.d.ts +0 -85
  126. package/dist/flow.js +0 -4
  127. package/dist/flow.js.map +0 -1
  128. package/dist/index.d.ts +0 -18
  129. package/dist/index.js +0 -38
  130. package/dist/index.js.map +0 -1
  131. package/dist/linter.d.ts +0 -26
  132. package/dist/linter.js +0 -4
  133. package/dist/linter.js.map +0 -1
  134. package/dist/logger.d.ts +0 -20
  135. package/dist/logger.js +0 -3
  136. package/dist/logger.js.map +0 -1
  137. package/dist/node.d.ts +0 -3
  138. package/dist/node.js +0 -3
  139. package/dist/node.js.map +0 -1
  140. package/dist/nodes/batch-gather.d.ts +0 -9
  141. package/dist/nodes/batch-gather.js +0 -4
  142. package/dist/nodes/batch-gather.js.map +0 -1
  143. package/dist/nodes/batch-scatter.d.ts +0 -9
  144. package/dist/nodes/batch-scatter.js +0 -4
  145. package/dist/nodes/batch-scatter.js.map +0 -1
  146. package/dist/nodes/sleep.d.ts +0 -9
  147. package/dist/nodes/sleep.js +0 -4
  148. package/dist/nodes/sleep.js.map +0 -1
  149. package/dist/nodes/subflow.d.ts +0 -9
  150. package/dist/nodes/subflow.js +0 -10
  151. package/dist/nodes/subflow.js.map +0 -1
  152. package/dist/nodes/wait.d.ts +0 -9
  153. package/dist/nodes/wait.js +0 -4
  154. package/dist/nodes/wait.js.map +0 -1
  155. package/dist/nodes/webhook.d.ts +0 -13
  156. package/dist/nodes/webhook.js +0 -4
  157. package/dist/nodes/webhook.js.map +0 -1
  158. package/dist/runtime/adapter.d.ts +0 -114
  159. package/dist/runtime/adapter.js +0 -28
  160. package/dist/runtime/adapter.js.map +0 -1
  161. package/dist/runtime/builtin-keys.d.ts +0 -38
  162. package/dist/runtime/builtin-keys.js +0 -10
  163. package/dist/runtime/builtin-keys.js.map +0 -1
  164. package/dist/runtime/execution-context.d.ts +0 -3
  165. package/dist/runtime/execution-context.js +0 -6
  166. package/dist/runtime/execution-context.js.map +0 -1
  167. package/dist/runtime/executors.d.ts +0 -3
  168. package/dist/runtime/executors.js +0 -4
  169. package/dist/runtime/executors.js.map +0 -1
  170. package/dist/runtime/index.d.ts +0 -7
  171. package/dist/runtime/index.js +0 -31
  172. package/dist/runtime/index.js.map +0 -1
  173. package/dist/runtime/node-executor-factory.d.ts +0 -12
  174. package/dist/runtime/node-executor-factory.js +0 -6
  175. package/dist/runtime/node-executor-factory.js.map +0 -1
  176. package/dist/runtime/orchestrator.d.ts +0 -9
  177. package/dist/runtime/orchestrator.js +0 -8
  178. package/dist/runtime/orchestrator.js.map +0 -1
  179. package/dist/runtime/orchestrators/replay.d.ts +0 -45
  180. package/dist/runtime/orchestrators/replay.js +0 -3
  181. package/dist/runtime/orchestrators/replay.js.map +0 -1
  182. package/dist/runtime/orchestrators/step-by-step.d.ts +0 -16
  183. package/dist/runtime/orchestrators/step-by-step.js +0 -5
  184. package/dist/runtime/orchestrators/step-by-step.js.map +0 -1
  185. package/dist/runtime/orchestrators/utils.d.ts +0 -35
  186. package/dist/runtime/orchestrators/utils.js +0 -4
  187. package/dist/runtime/orchestrators/utils.js.map +0 -1
  188. package/dist/runtime/runtime.d.ts +0 -3
  189. package/dist/runtime/runtime.js +0 -27
  190. package/dist/runtime/runtime.js.map +0 -1
  191. package/dist/runtime/scheduler.d.ts +0 -3
  192. package/dist/runtime/scheduler.js +0 -3
  193. package/dist/runtime/scheduler.js.map +0 -1
  194. package/dist/runtime/state.d.ts +0 -3
  195. package/dist/runtime/state.js +0 -5
  196. package/dist/runtime/state.js.map +0 -1
  197. package/dist/runtime/traverser.d.ts +0 -3
  198. package/dist/runtime/traverser.js +0 -4
  199. package/dist/runtime/traverser.js.map +0 -1
  200. package/dist/runtime/types.d.ts +0 -3
  201. package/dist/runtime/types.js +0 -3
  202. package/dist/runtime/types.js.map +0 -1
  203. package/dist/runtime/workflow-logic-handler.d.ts +0 -17
  204. package/dist/runtime/workflow-logic-handler.js +0 -5
  205. package/dist/runtime/workflow-logic-handler.js.map +0 -1
  206. package/dist/sanitizer.d.ts +0 -12
  207. package/dist/sanitizer.js +0 -3
  208. package/dist/sanitizer.js.map +0 -1
  209. package/dist/sdk.js +0 -20
  210. package/dist/sdk.js.map +0 -1
  211. package/dist/serializer.d.ts +0 -18
  212. package/dist/serializer.js +0 -3
  213. package/dist/serializer.js.map +0 -1
  214. package/dist/testing/event-logger.d.ts +0 -63
  215. package/dist/testing/event-logger.js +0 -3
  216. package/dist/testing/event-logger.js.map +0 -1
  217. package/dist/testing/index.d.ts +0 -7
  218. package/dist/testing/index.js +0 -37
  219. package/dist/testing/index.js.map +0 -1
  220. package/dist/testing/run-with-trace.d.ts +0 -38
  221. package/dist/testing/run-with-trace.js +0 -33
  222. package/dist/testing/run-with-trace.js.map +0 -1
  223. package/dist/testing/stepper.d.ts +0 -79
  224. package/dist/testing/stepper.js +0 -11
  225. package/dist/testing/stepper.js.map +0 -1
  226. package/dist/types-CKhffqyb.d.ts +0 -666
  227. package/dist/types.d.ts +0 -3
  228. package/dist/types.js +0 -3
  229. package/dist/types.js.map +0 -1
@@ -1,139 +0,0 @@
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
- eventBus;
54
- executionId;
55
- sourceNode;
56
- constructor(innerContext, eventBus, executionId, sourceNode) {
57
- this.innerContext = innerContext;
58
- this.eventBus = eventBus;
59
- this.executionId = executionId;
60
- this.sourceNode = sourceNode;
61
- }
62
- async get(key) {
63
- return this.innerContext.get(key);
64
- }
65
- async set(key, value) {
66
- this.deltas.push({ op: "set", key, value });
67
- await this.innerContext.set(key, value);
68
- if (this.eventBus && this.executionId) {
69
- await this.eventBus.emit({
70
- type: "context:change",
71
- payload: {
72
- sourceNode: this.sourceNode || "unknown",
73
- key,
74
- op: "set",
75
- value,
76
- executionId: this.executionId
77
- }
78
- });
79
- }
80
- }
81
- async has(key) {
82
- return this.innerContext.has(key);
83
- }
84
- async delete(key) {
85
- this.deltas.push({ op: "delete", key });
86
- const result = await this.innerContext.delete(key);
87
- if (this.eventBus && this.executionId && result) {
88
- await this.eventBus.emit({
89
- type: "context:change",
90
- payload: {
91
- sourceNode: this.sourceNode || "unknown",
92
- key,
93
- op: "delete",
94
- executionId: this.executionId
95
- }
96
- });
97
- }
98
- return result;
99
- }
100
- toJSON() {
101
- return this.innerContext.toJSON();
102
- }
103
- async patch(operations) {
104
- if (this.innerContext.patch) {
105
- return this.innerContext.patch(operations);
106
- }
107
- for (const op of operations) {
108
- if (op.op === "set") {
109
- await this.innerContext.set(op.key, op.value);
110
- } else if (op.op === "delete") {
111
- await this.innerContext.delete(op.key);
112
- }
113
- }
114
- }
115
- getDeltas() {
116
- return [...this.deltas];
117
- }
118
- clearDeltas() {
119
- this.deltas = [];
120
- }
121
- /**
122
- * Configures the event emitter for tracking context changes.
123
- * This enables the context to emit events when set/delete operations occur,
124
- * allowing for external monitoring and persistence of context mutations.
125
- *
126
- * @param eventBus - The event bus instance to emit context change events
127
- * @param executionId - The unique identifier for the current workflow execution
128
- * @param sourceNode - Optional identifier for the node that triggered the context change
129
- */
130
- configureEventEmitter(eventBus, executionId, sourceNode) {
131
- this.eventBus = eventBus;
132
- this.executionId = executionId;
133
- this.sourceNode = sourceNode;
134
- }
135
- };
136
-
137
- export { AsyncContextView, Context, TrackedAsyncContext };
138
- //# sourceMappingURL=chunk-ZETQCNEF.js.map
139
- //# sourceMappingURL=chunk-ZETQCNEF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/context.ts"],"names":[],"mappings":"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","file":"chunk-ZETQCNEF.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\tprivate eventBus?: any\n\tprivate executionId?: string\n\tprivate sourceNode?: string\n\n\tconstructor(innerContext: IAsyncContext<TContext>, eventBus?: any, executionId?: string, sourceNode?: string) {\n\t\tthis.innerContext = innerContext\n\t\tthis.eventBus = eventBus\n\t\tthis.executionId = executionId\n\t\tthis.sourceNode = sourceNode\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\tawait this.innerContext.set(key, value)\n\t\tif (this.eventBus && this.executionId) {\n\t\t\tawait this.eventBus.emit({\n\t\t\t\ttype: 'context:change',\n\t\t\t\tpayload: {\n\t\t\t\t\tsourceNode: this.sourceNode || 'unknown',\n\t\t\t\t\tkey,\n\t\t\t\t\top: 'set',\n\t\t\t\t\tvalue,\n\t\t\t\t\texecutionId: this.executionId,\n\t\t\t\t},\n\t\t\t})\n\t\t}\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\tconst result = await this.innerContext.delete(key)\n\t\tif (this.eventBus && this.executionId && result) {\n\t\t\tawait this.eventBus.emit({\n\t\t\t\ttype: 'context:change',\n\t\t\t\tpayload: {\n\t\t\t\t\tsourceNode: this.sourceNode || 'unknown',\n\t\t\t\t\tkey,\n\t\t\t\t\top: 'delete',\n\t\t\t\t\texecutionId: this.executionId,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t\treturn result\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\t/**\n\t * Configures the event emitter for tracking context changes.\n\t * This enables the context to emit events when set/delete operations occur,\n\t * allowing for external monitoring and persistence of context mutations.\n\t *\n\t * @param eventBus - The event bus instance to emit context change events\n\t * @param executionId - The unique identifier for the current workflow execution\n\t * @param sourceNode - Optional identifier for the node that triggered the context change\n\t */\n\tconfigureEventEmitter(eventBus: any, executionId: string, sourceNode?: string): void {\n\t\tthis.eventBus = eventBus\n\t\tthis.executionId = executionId\n\t\tthis.sourceNode = sourceNode\n\t}\n}\n"]}
@@ -1,192 +0,0 @@
1
- // src/analysis.ts
2
- function checkForCycles(blueprint) {
3
- const cycles = [];
4
- if (!blueprint || !blueprint.nodes || blueprint.nodes.length === 0) {
5
- return cycles;
6
- }
7
- const allNodeIds = blueprint.nodes.map((node) => node.id);
8
- const adj = /* @__PURE__ */ new Map();
9
- for (const id of allNodeIds) {
10
- adj.set(id, []);
11
- }
12
- for (const edge of blueprint.edges) {
13
- adj.get(edge.source)?.push(edge.target);
14
- }
15
- const state = /* @__PURE__ */ new Map();
16
- for (const id of allNodeIds) {
17
- state.set(id, 0);
18
- }
19
- for (const startNode of allNodeIds) {
20
- if (state.get(startNode) !== 0) continue;
21
- const stack = [{ node: startNode, path: [] }];
22
- const pathSet = /* @__PURE__ */ new Set();
23
- while (stack.length > 0) {
24
- const { node, path } = stack[stack.length - 1];
25
- if (state.get(node) === 0) {
26
- state.set(node, 1);
27
- pathSet.add(node);
28
- path.push(node);
29
- }
30
- const neighbors = adj.get(node) || [];
31
- let foundUnvisited = false;
32
- for (const neighbor of neighbors) {
33
- if (state.get(neighbor) === 1) {
34
- const cycleStartIndex = path.indexOf(neighbor);
35
- const cycle = path.slice(cycleStartIndex);
36
- cycles.push([...cycle, neighbor]);
37
- } else if (state.get(neighbor) === 0) {
38
- stack.push({ node: neighbor, path: [...path] });
39
- foundUnvisited = true;
40
- break;
41
- }
42
- }
43
- if (!foundUnvisited) {
44
- state.set(node, 2);
45
- stack.pop();
46
- pathSet.delete(node);
47
- }
48
- }
49
- }
50
- return cycles;
51
- }
52
- function generateMermaid(blueprint) {
53
- if (!blueprint || !blueprint.nodes || blueprint.nodes.length === 0) {
54
- return "flowchart TD\n empty[Empty Blueprint]";
55
- }
56
- let mermaid = "flowchart TD\n";
57
- for (const node of blueprint.nodes) {
58
- const paramsString = node.params ? `<br/>params: ${JSON.stringify(node.params)}` : "";
59
- const nodeLabel = `${node.id}${paramsString}`;
60
- mermaid += ` ${node.id}["${nodeLabel}"]
61
- `;
62
- }
63
- for (const edge of blueprint.edges || []) {
64
- const labelParts = [];
65
- if (edge.action) {
66
- labelParts.push(edge.action);
67
- }
68
- if (edge.condition) {
69
- labelParts.push(edge.condition);
70
- }
71
- if (edge.transform) {
72
- labelParts.push(edge.transform);
73
- }
74
- if (labelParts.length > 0) {
75
- const edgeLabel = labelParts.join(" | ");
76
- mermaid += ` ${edge.source} -- "${edgeLabel}" --> ${edge.target}
77
- `;
78
- } else {
79
- mermaid += ` ${edge.source} --> ${edge.target}
80
- `;
81
- }
82
- }
83
- return mermaid;
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
- }
156
- function analyzeBlueprint(blueprint) {
157
- if (!blueprint || !blueprint.nodes || blueprint.nodes.length === 0) {
158
- return {
159
- cycles: [],
160
- startNodeIds: [],
161
- terminalNodeIds: [],
162
- nodeCount: 0,
163
- edgeCount: 0,
164
- isDag: true
165
- };
166
- }
167
- const cycles = checkForCycles(blueprint);
168
- const nodeCount = blueprint.nodes.length;
169
- const edgeCount = blueprint.edges?.length || 0;
170
- const nodesWithIncoming = /* @__PURE__ */ new Set();
171
- for (const edge of blueprint.edges || []) {
172
- nodesWithIncoming.add(edge.target);
173
- }
174
- const startNodeIds = blueprint.nodes.map((node) => node.id).filter((nodeId) => !nodesWithIncoming.has(nodeId));
175
- const nodesWithOutgoing = /* @__PURE__ */ new Set();
176
- for (const edge of blueprint.edges || []) {
177
- nodesWithOutgoing.add(edge.source);
178
- }
179
- const terminalNodeIds = blueprint.nodes.map((node) => node.id).filter((nodeId) => !nodesWithOutgoing.has(nodeId));
180
- return {
181
- cycles,
182
- startNodeIds,
183
- terminalNodeIds,
184
- nodeCount,
185
- edgeCount,
186
- isDag: cycles.length === 0
187
- };
188
- }
189
-
190
- export { analyzeBlueprint, checkForCycles, generateMermaid, generateMermaidForRun };
191
- //# sourceMappingURL=chunk-ZLW4QOTS.js.map
192
- //# sourceMappingURL=chunk-ZLW4QOTS.js.map
@@ -1 +0,0 @@
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,17 +0,0 @@
1
- import { DIContainer } from './container.js';
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-CKhffqyb.js';
3
- import './errors.js';
4
-
5
- interface ContainerOptions<TDependencies extends RuntimeDependencies = RuntimeDependencies> {
6
- logger?: ILogger;
7
- serializer?: ISerializer;
8
- evaluator?: IEvaluator;
9
- eventBus?: IEventBus;
10
- middleware?: Middleware[];
11
- registry?: Record<string, NodeFunction | NodeClass>;
12
- blueprints?: Record<string, WorkflowBlueprint>;
13
- dependencies?: TDependencies;
14
- }
15
- declare function createDefaultContainer<TDependencies extends RuntimeDependencies = RuntimeDependencies>(options?: ContainerOptions<TDependencies>): DIContainer;
16
-
17
- export { type ContainerOptions, createDefaultContainer };
@@ -1,13 +0,0 @@
1
- export { createDefaultContainer } from './chunk-7M6FHFHP.js';
2
- import './chunk-DV2CXHOY.js';
3
- import './chunk-N63S5NEG.js';
4
- import './chunk-L3MX5MTA.js';
5
- import './chunk-L46TQXCV.js';
6
- import './chunk-4PELJWF7.js';
7
- import './chunk-6RKHCJUU.js';
8
- import './chunk-WWGFIYKW.js';
9
- import './chunk-ZETQCNEF.js';
10
- import './chunk-BCRWXTWX.js';
11
- import './chunk-PH2IYZHV.js';
12
- //# sourceMappingURL=container-factory.js.map
13
- //# sourceMappingURL=container-factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"container-factory.js"}
@@ -1,23 +0,0 @@
1
- type ServiceToken<_T = any> = string | symbol;
2
- declare class DIContainer {
3
- private services;
4
- private factories;
5
- register<T>(token: ServiceToken<T>, implementation: T): void;
6
- registerFactory<T>(token: ServiceToken<T>, factory: (container: DIContainer) => T): void;
7
- resolve<T>(token: ServiceToken<T>): T;
8
- has(token: ServiceToken): boolean;
9
- createChild(): DIContainer;
10
- }
11
- declare const ServiceTokens: {
12
- readonly Logger: symbol;
13
- readonly Serializer: symbol;
14
- readonly Evaluator: symbol;
15
- readonly EventBus: symbol;
16
- readonly Orchestrator: symbol;
17
- readonly Middleware: symbol;
18
- readonly NodeRegistry: symbol;
19
- readonly BlueprintRegistry: symbol;
20
- readonly Dependencies: symbol;
21
- };
22
-
23
- export { DIContainer, type ServiceToken, ServiceTokens };
package/dist/container.js DELETED
@@ -1,3 +0,0 @@
1
- export { DIContainer, ServiceTokens } from './chunk-WWGFIYKW.js';
2
- //# sourceMappingURL=container.js.map
3
- //# sourceMappingURL=container.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"container.js"}
package/dist/context.d.ts DELETED
@@ -1,65 +0,0 @@
1
- import { t as ISyncContext, u as IAsyncContext, P as PatchOperation } from './types-CKhffqyb.js';
2
- import './errors.js';
3
- import './container.js';
4
-
5
- /**
6
- * A default, high-performance, in-memory implementation of ISyncContext using a Map.
7
- */
8
- declare class Context<TContext extends Record<string, any>> implements ISyncContext<TContext> {
9
- readonly type: "sync";
10
- private data;
11
- constructor(initialData?: Partial<TContext>);
12
- get<K extends keyof TContext>(key: K): TContext[K] | undefined;
13
- set<K extends keyof TContext>(key: K, value: TContext[K]): void;
14
- has<K extends keyof TContext>(key: K): boolean;
15
- delete<K extends keyof TContext>(key: K): boolean;
16
- toJSON(): Record<string, any>;
17
- }
18
- /**
19
- * An adapter that provides a consistent, Promise-based view of a synchronous context.
20
- * This is created by the runtime and is transparent to the node author.
21
- */
22
- declare class AsyncContextView<TContext extends Record<string, any>> implements IAsyncContext<TContext> {
23
- private syncContext;
24
- readonly type: "async";
25
- constructor(syncContext: ISyncContext<TContext>);
26
- get<K extends keyof TContext>(key: K): Promise<TContext[K] | undefined>;
27
- set<K extends keyof TContext>(key: K, value: TContext[K]): Promise<void>;
28
- has<K extends keyof TContext>(key: K): Promise<boolean>;
29
- delete<K extends keyof TContext>(key: K): Promise<boolean>;
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
- private eventBus?;
42
- private executionId?;
43
- private sourceNode?;
44
- constructor(innerContext: IAsyncContext<TContext>, eventBus?: any, executionId?: string, sourceNode?: string);
45
- get<K extends keyof TContext>(key: K): Promise<TContext[K] | undefined>;
46
- set<K extends keyof TContext>(key: K, value: TContext[K]): Promise<void>;
47
- has<K extends keyof TContext>(key: K): Promise<boolean>;
48
- delete<K extends keyof TContext>(key: K): Promise<boolean>;
49
- toJSON(): Promise<Record<string, any>>;
50
- patch(operations: PatchOperation[]): Promise<void>;
51
- getDeltas(): PatchOperation[];
52
- clearDeltas(): void;
53
- /**
54
- * Configures the event emitter for tracking context changes.
55
- * This enables the context to emit events when set/delete operations occur,
56
- * allowing for external monitoring and persistence of context mutations.
57
- *
58
- * @param eventBus - The event bus instance to emit context change events
59
- * @param executionId - The unique identifier for the current workflow execution
60
- * @param sourceNode - Optional identifier for the node that triggered the context change
61
- */
62
- configureEventEmitter(eventBus: any, executionId: string, sourceNode?: string): void;
63
- }
64
-
65
- export { AsyncContextView, Context, TrackedAsyncContext };
package/dist/context.js DELETED
@@ -1,3 +0,0 @@
1
- export { AsyncContextView, Context, TrackedAsyncContext } from './chunk-ZETQCNEF.js';
2
- //# sourceMappingURL=context.js.map
3
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"context.js"}
@@ -1,15 +0,0 @@
1
- import { h as WorkflowBlueprint } from './types-CKhffqyb.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 };
@@ -1,4 +0,0 @@
1
- export { createErrorMapper } from './chunk-27STBUGG.js';
2
- import './chunk-BCRWXTWX.js';
3
- //# sourceMappingURL=error-mapper.js.map
4
- //# sourceMappingURL=error-mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"error-mapper.js"}
package/dist/errors.d.ts DELETED
@@ -1,20 +0,0 @@
1
- /**
2
- * A single, comprehensive error class for the framework.
3
- * Use this for all errors to ensure consistent structure and easy debugging.
4
- */
5
- declare class FlowcraftError extends Error {
6
- readonly message: string;
7
- readonly nodeId?: string;
8
- readonly blueprintId?: string;
9
- readonly executionId?: string;
10
- readonly isFatal: boolean;
11
- constructor(message: string, options?: {
12
- cause?: Error;
13
- nodeId?: string;
14
- blueprintId?: string;
15
- executionId?: string;
16
- isFatal?: boolean;
17
- });
18
- }
19
-
20
- export { FlowcraftError };
package/dist/errors.js DELETED
@@ -1,3 +0,0 @@
1
- export { FlowcraftError } from './chunk-BCRWXTWX.js';
2
- //# sourceMappingURL=errors.js.map
3
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"errors.js"}
@@ -1,32 +0,0 @@
1
- import { x as IEvaluator } from './types-CKhffqyb.js';
2
- import './errors.js';
3
- import './container.js';
4
-
5
- /**
6
- * A safe evaluator that only allows simple property access.
7
- * It cannot execute arbitrary code and is secure for untrusted inputs.
8
- *
9
- * Example expressions:
10
- * - "result.output.status"
11
- * - "context.user.isAdmin"
12
- * - "input.value"
13
- */
14
- declare class PropertyEvaluator implements IEvaluator {
15
- evaluate(expression: string, context: Record<string, any>): any;
16
- }
17
- /**
18
- * @warning This evaluator uses `new Function()` and can execute arbitrary
19
- * JavaScript code. It poses a significant security risk if the expressions
20
- * are not from a trusted source (e.g., user input).
21
- *
22
- * It should only be used in controlled environments where all workflow
23
- * definitions are static and authored by trusted developers.
24
- *
25
- * For safer evaluation, use the default `PropertyEvaluator` or install a
26
- * sandboxed library like `jsep` to create a custom, secure evaluator.
27
- */
28
- declare class UnsafeEvaluator implements IEvaluator {
29
- evaluate(expression: string, context: Record<string, any>): any;
30
- }
31
-
32
- export { PropertyEvaluator, UnsafeEvaluator };
package/dist/evaluator.js DELETED
@@ -1,3 +0,0 @@
1
- export { PropertyEvaluator, UnsafeEvaluator } from './chunk-PH2IYZHV.js';
2
- //# sourceMappingURL=evaluator.js.map
3
- //# sourceMappingURL=evaluator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"evaluator.js"}