flowcraft 2.7.0 → 2.8.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.
Files changed (103) hide show
  1. package/dist/adapters/index.d.ts +1 -1
  2. package/dist/adapters/index.js +1 -1
  3. package/dist/adapters/persistent-event-bus.d.ts +1 -1
  4. package/dist/adapters/persistent-event-bus.js +1 -1
  5. package/dist/analysis.d.ts +1 -1
  6. package/dist/{chunk-N63S5NEG.js → chunk-26VTGQAF.js} +4 -8
  7. package/dist/chunk-26VTGQAF.js.map +1 -0
  8. package/dist/{chunk-ASJYJ3NF.js → chunk-2TSADFQX.js} +2 -2
  9. package/dist/{chunk-ASJYJ3NF.js.map → chunk-2TSADFQX.js.map} +1 -1
  10. package/dist/{chunk-K6ID3GRG.js → chunk-4JUPOFSL.js} +6 -6
  11. package/dist/{chunk-K6ID3GRG.js.map → chunk-4JUPOFSL.js.map} +1 -1
  12. package/dist/{chunk-4TVWI6Y6.js → chunk-5A24LVGQ.js} +5 -5
  13. package/dist/{chunk-4TVWI6Y6.js.map → chunk-5A24LVGQ.js.map} +1 -1
  14. package/dist/{chunk-W4IAXDO4.js → chunk-BV6MXL74.js} +12 -16
  15. package/dist/chunk-BV6MXL74.js.map +1 -0
  16. package/dist/{chunk-VDVUF25G.js → chunk-CIXL7AKH.js} +34 -32
  17. package/dist/chunk-CIXL7AKH.js.map +1 -0
  18. package/dist/{chunk-LU5SLE3P.js → chunk-E6ICIXVR.js} +4 -4
  19. package/dist/{chunk-LU5SLE3P.js.map → chunk-E6ICIXVR.js.map} +1 -1
  20. package/dist/{chunk-RF5EYEO6.js → chunk-K446NZ4E.js} +3 -3
  21. package/dist/{chunk-RF5EYEO6.js.map → chunk-K446NZ4E.js.map} +1 -1
  22. package/dist/{chunk-LWN7HOD3.js → chunk-L3MX5MTA.js} +3 -3
  23. package/dist/{chunk-LWN7HOD3.js.map → chunk-L3MX5MTA.js.map} +1 -1
  24. package/dist/{chunk-VSKDQVCG.js → chunk-L46TQXCV.js} +8 -4
  25. package/dist/chunk-L46TQXCV.js.map +1 -0
  26. package/dist/{chunk-WWGFIYKW.js → chunk-OOJEXFYY.js} +11 -11
  27. package/dist/chunk-OOJEXFYY.js.map +1 -0
  28. package/dist/{chunk-HXSK5P2X.js → chunk-PU2VTWJD.js} +23 -9
  29. package/dist/chunk-PU2VTWJD.js.map +1 -0
  30. package/dist/{chunk-TTOS7NW3.js → chunk-QA2WDZPV.js} +4 -4
  31. package/dist/{chunk-TTOS7NW3.js.map → chunk-QA2WDZPV.js.map} +1 -1
  32. package/dist/{chunk-RAZWRNAJ.js → chunk-VZ4BRDBK.js} +3 -3
  33. package/dist/{chunk-RAZWRNAJ.js.map → chunk-VZ4BRDBK.js.map} +1 -1
  34. package/dist/{chunk-AKDL2ZX7.js → chunk-X5RJOZY2.js} +17 -25
  35. package/dist/chunk-X5RJOZY2.js.map +1 -0
  36. package/dist/{chunk-H4JTZYIT.js → chunk-ZKINHLMS.js} +80 -22
  37. package/dist/chunk-ZKINHLMS.js.map +1 -0
  38. package/dist/container-factory.d.ts +1 -1
  39. package/dist/container-factory.js +6 -6
  40. package/dist/container.js +1 -1
  41. package/dist/context.d.ts +1 -1
  42. package/dist/error-mapper.d.ts +1 -1
  43. package/dist/evaluator.d.ts +1 -1
  44. package/dist/flow.d.ts +1 -3
  45. package/dist/flow.js +1 -1
  46. package/dist/index.d.ts +1 -1
  47. package/dist/index.js +17 -17
  48. package/dist/linter.d.ts +1 -1
  49. package/dist/logger.d.ts +1 -1
  50. package/dist/node.d.ts +1 -1
  51. package/dist/nodes/batch-gather.d.ts +1 -1
  52. package/dist/nodes/batch-scatter.d.ts +1 -1
  53. package/dist/nodes/sleep.d.ts +1 -1
  54. package/dist/nodes/subflow.d.ts +1 -1
  55. package/dist/nodes/subflow.js +4 -4
  56. package/dist/nodes/wait.d.ts +1 -1
  57. package/dist/nodes/webhook.d.ts +1 -1
  58. package/dist/runtime/adapter.d.ts +1 -1
  59. package/dist/runtime/adapter.js +13 -13
  60. package/dist/runtime/execution-context.d.ts +1 -1
  61. package/dist/runtime/execution-context.js +2 -2
  62. package/dist/runtime/executors.d.ts +1 -1
  63. package/dist/runtime/index.d.ts +1 -1
  64. package/dist/runtime/index.js +13 -13
  65. package/dist/runtime/node-executor-factory.d.ts +1 -1
  66. package/dist/runtime/orchestrator.d.ts +1 -1
  67. package/dist/runtime/orchestrator.js +4 -4
  68. package/dist/runtime/orchestrators/replay.d.ts +1 -1
  69. package/dist/runtime/orchestrators/step-by-step.d.ts +1 -1
  70. package/dist/runtime/orchestrators/step-by-step.js +2 -2
  71. package/dist/runtime/orchestrators/utils.d.ts +1 -1
  72. package/dist/runtime/orchestrators/utils.js +1 -1
  73. package/dist/runtime/runtime.d.ts +1 -1
  74. package/dist/runtime/runtime.js +12 -12
  75. package/dist/runtime/scheduler.d.ts +1 -1
  76. package/dist/runtime/state.d.ts +1 -1
  77. package/dist/runtime/state.js +1 -1
  78. package/dist/runtime/traverser.d.ts +1 -1
  79. package/dist/runtime/traverser.js +2 -1
  80. package/dist/runtime/types.d.ts +1 -1
  81. package/dist/runtime/workflow-logic-handler.d.ts +1 -1
  82. package/dist/runtime/workflow-logic-handler.js +1 -1
  83. package/dist/sanitizer.d.ts +1 -1
  84. package/dist/serializer.d.ts +1 -1
  85. package/dist/testing/event-logger.d.ts +1 -1
  86. package/dist/testing/index.d.ts +1 -1
  87. package/dist/testing/index.js +18 -18
  88. package/dist/testing/run-with-trace.d.ts +1 -1
  89. package/dist/testing/run-with-trace.js +14 -14
  90. package/dist/testing/stepper.d.ts +1 -1
  91. package/dist/testing/stepper.js +6 -6
  92. package/dist/{types-D-dVKe4_.d.ts → types-Biip2gLh.d.ts} +12 -2
  93. package/dist/types.d.ts +1 -1
  94. package/package.json +59 -59
  95. package/LICENSE +0 -21
  96. package/dist/chunk-AKDL2ZX7.js.map +0 -1
  97. package/dist/chunk-H4JTZYIT.js.map +0 -1
  98. package/dist/chunk-HXSK5P2X.js.map +0 -1
  99. package/dist/chunk-N63S5NEG.js.map +0 -1
  100. package/dist/chunk-VDVUF25G.js.map +0 -1
  101. package/dist/chunk-VSKDQVCG.js.map +0 -1
  102. package/dist/chunk-W4IAXDO4.js.map +0 -1
  103. package/dist/chunk-WWGFIYKW.js.map +0 -1
@@ -1,21 +1,31 @@
1
1
  import { analyzeBlueprint } from './chunk-ZLW4QOTS.js';
2
+ import { FlowcraftError } from './chunk-BCRWXTWX.js';
2
3
 
3
4
  // src/runtime/traverser.ts
4
5
  var GraphTraverser = class _GraphTraverser {
5
6
  frontier = /* @__PURE__ */ new Set();
6
7
  allPredecessors;
8
+ allSuccessors;
7
9
  dynamicBlueprint;
8
10
  completedNodes = /* @__PURE__ */ new Set();
11
+ nodesInLoops;
9
12
  constructor(blueprint, isStrictMode = false) {
10
13
  this.dynamicBlueprint = structuredClone(blueprint);
11
14
  this.allPredecessors = /* @__PURE__ */ new Map();
15
+ this.allSuccessors = /* @__PURE__ */ new Map();
16
+ this.nodesInLoops = /* @__PURE__ */ new Map();
12
17
  for (const node of this.dynamicBlueprint.nodes) {
13
18
  this.allPredecessors.set(node.id, /* @__PURE__ */ new Set());
19
+ this.allSuccessors.set(node.id, /* @__PURE__ */ new Set());
14
20
  }
15
21
  for (const edge of this.dynamicBlueprint.edges) {
16
- this.allPredecessors.get(edge.target)?.add(edge.source);
22
+ this.getPredecessors(edge.target).add(edge.source);
23
+ }
24
+ for (const edge of this.dynamicBlueprint.edges) {
25
+ this.getSuccessors(edge.source).add(edge.target);
17
26
  }
18
27
  const analysis = analyzeBlueprint(blueprint);
28
+ this.filterNodesInLoops(blueprint);
19
29
  this.frontier = new Set(analysis.startNodeIds.filter((id) => !this.isFallbackNode(id)));
20
30
  if (this.frontier.size === 0 && analysis.cycles.length > 0 && !isStrictMode) {
21
31
  const uniqueStartNodes = /* @__PURE__ */ new Set();
@@ -50,7 +60,7 @@ var GraphTraverser = class _GraphTraverser {
50
60
  for (const node of traverser.dynamicBlueprint.nodes) {
51
61
  if (traverser.completedNodes.has(node.id)) continue;
52
62
  const requiredPredecessors = traverser.allPredecessors.get(node.id);
53
- const joinStrategy = traverser.getEffectiveJoinStrategy(node.id);
63
+ const joinStrategy = traverser.getJoinStrategy(node.id);
54
64
  if (!requiredPredecessors || requiredPredecessors.size === 0) {
55
65
  traverser.frontier.add(node.id);
56
66
  continue;
@@ -64,23 +74,36 @@ var GraphTraverser = class _GraphTraverser {
64
74
  isFallbackNode(nodeId) {
65
75
  return this.dynamicBlueprint.nodes.some((n) => n.config?.fallback === nodeId);
66
76
  }
67
- getEffectiveJoinStrategy(nodeId) {
77
+ getJoinStrategy(nodeId) {
68
78
  const node = this.dynamicBlueprint.nodes.find((n) => n.id === nodeId);
69
79
  const baseJoinStrategy = node?.config?.joinStrategy || "all";
70
- if (node?.uses === "loop-controller") {
71
- return "any";
72
- }
73
- const predecessors = this.allPredecessors.get(nodeId);
74
- if (predecessors) {
75
- for (const predecessorId of predecessors) {
76
- const predecessorNode = this.dynamicBlueprint.nodes.find((n) => n.id === predecessorId);
77
- if (predecessorNode?.uses === "loop-controller") {
78
- return "any";
79
- }
80
- }
81
- }
82
80
  return baseJoinStrategy;
83
81
  }
82
+ filterNodesInLoops(blueprint) {
83
+ blueprint.nodes.forEach((node) => {
84
+ if (node.uses !== "loop-controller") return;
85
+ const nextInLoopId = blueprint.edges.find((e) => e.source === node.id && e.action === "continue")?.target;
86
+ if (!nextInLoopId) {
87
+ throw new FlowcraftError(
88
+ `Loop '${node.id}' has no continue edge to start node. Ensure edges are wired inside the loop and incoming/breaking edges point to the loop controller.`,
89
+ { nodeId: node.id, blueprintId: blueprint.id }
90
+ );
91
+ }
92
+ const set = /* @__PURE__ */ new Set();
93
+ set.add(nextInLoopId);
94
+ this.nodesInLoops.set(node.id, this.getAllLoopSuccessors(nextInLoopId, blueprint, set));
95
+ });
96
+ }
97
+ getAllLoopSuccessors(nodeId, blueprint, set) {
98
+ this.getSuccessors(nodeId).forEach((successor) => {
99
+ if (set.has(successor)) return;
100
+ const node = this.getNode(successor, blueprint);
101
+ if (!node || node.uses === "loop-controller") return;
102
+ set.add(successor);
103
+ this.getAllLoopSuccessors(successor, blueprint, set);
104
+ });
105
+ return set;
106
+ }
84
107
  getReadyNodes() {
85
108
  const readyNodes = [];
86
109
  for (const nodeId of this.frontier) {
@@ -103,28 +126,39 @@ var GraphTraverser = class _GraphTraverser {
103
126
  this.dynamicBlueprint.nodes.push(dynamicNode);
104
127
  this.allPredecessors.set(dynamicNode.id, /* @__PURE__ */ new Set([nodeId]));
105
128
  if (gatherNodeId) {
106
- this.allPredecessors.get(gatherNodeId)?.add(dynamicNode.id);
129
+ this.getPredecessors(gatherNodeId).add(dynamicNode.id);
107
130
  }
108
131
  this.frontier.add(dynamicNode.id);
109
132
  }
110
133
  }
111
134
  for (const node of nextNodes) {
112
- const joinStrategy = this.getEffectiveJoinStrategy(node.id);
135
+ const joinStrategy = this.getJoinStrategy(node.id);
113
136
  if (joinStrategy !== "any" && this.completedNodes.has(node.id)) continue;
114
- const requiredPredecessors = this.allPredecessors.get(node.id);
115
- if (!requiredPredecessors) continue;
137
+ const requiredPredecessors = this.getPredecessors(node.id);
116
138
  const isReady = joinStrategy === "any" ? requiredPredecessors.has(nodeId) : [...requiredPredecessors].every((p) => this.completedNodes.has(p));
117
139
  if (isReady) {
118
140
  this.frontier.add(node.id);
141
+ if (node.uses === "loop-controller") {
142
+ this.getNodesInLoop(node.id).forEach((id) => {
143
+ this.resetNodeCompletion(id);
144
+ });
145
+ }
119
146
  }
120
147
  }
121
148
  if (nextNodes.length === 0) {
122
149
  for (const [potentialNextId, predecessors] of this.allPredecessors) {
123
150
  if (predecessors.has(nodeId) && !this.completedNodes.has(potentialNextId)) {
124
- const joinStrategy = this.getEffectiveJoinStrategy(potentialNextId);
151
+ const joinStrategy = this.getJoinStrategy(potentialNextId);
125
152
  const isReady = joinStrategy === "any" ? predecessors.has(nodeId) : [...predecessors].every((p) => this.completedNodes.has(p));
126
153
  if (isReady) {
127
154
  this.frontier.add(potentialNextId);
155
+ const node = this.getNode(potentialNextId, this.dynamicBlueprint);
156
+ if (!node) continue;
157
+ if (node.uses === "loop-controller") {
158
+ this.getNodesInLoop(node.id).forEach((id) => {
159
+ this.resetNodeCompletion(id);
160
+ });
161
+ }
128
162
  }
129
163
  }
130
164
  }
@@ -149,6 +183,30 @@ var GraphTraverser = class _GraphTraverser {
149
183
  getAllPredecessors() {
150
184
  return this.allPredecessors;
151
185
  }
186
+ getAllSuccessors() {
187
+ return this.allSuccessors;
188
+ }
189
+ getPredecessors(nodeId) {
190
+ const predecessors = this.allPredecessors.get(nodeId);
191
+ if (!predecessors) return /* @__PURE__ */ new Set();
192
+ return predecessors;
193
+ }
194
+ getSuccessors(nodeId) {
195
+ const successors = this.allSuccessors.get(nodeId);
196
+ if (!successors) return /* @__PURE__ */ new Set();
197
+ return successors;
198
+ }
199
+ getNodesInLoop(id) {
200
+ const loopNodes = this.nodesInLoops.get(id);
201
+ if (!loopNodes) return /* @__PURE__ */ new Set();
202
+ return loopNodes;
203
+ }
204
+ resetNodeCompletion(nodeId) {
205
+ this.completedNodes.delete(nodeId);
206
+ }
207
+ getNode(nodeId, blueprint) {
208
+ return blueprint.nodes.find((n) => n.id === nodeId);
209
+ }
152
210
  addDynamicNode(_nodeId, dynamicNode, predecessorId, gatherNodeId) {
153
211
  this.dynamicBlueprint.nodes.push(dynamicNode);
154
212
  this.allPredecessors.set(dynamicNode.id, /* @__PURE__ */ new Set([predecessorId]));
@@ -168,5 +226,5 @@ var GraphTraverser = class _GraphTraverser {
168
226
  };
169
227
 
170
228
  export { GraphTraverser };
171
- //# sourceMappingURL=chunk-H4JTZYIT.js.map
172
- //# sourceMappingURL=chunk-H4JTZYIT.js.map
229
+ //# sourceMappingURL=chunk-ZKINHLMS.js.map
230
+ //# sourceMappingURL=chunk-ZKINHLMS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/runtime/traverser.ts"],"names":[],"mappings":";;;;AAUO,IAAM,cAAA,GAAN,MAAM,eAAA,CAAe;AAAA,EACnB,QAAA,uBAAe,GAAA,EAAY;AAAA,EAC3B,eAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA,uBAAqB,GAAA,EAAY;AAAA,EACjC,YAAA;AAAA,EAER,WAAA,CAAY,SAAA,EAA8B,YAAA,GAAwB,KAAA,EAAO;AACxE,IAAA,IAAA,CAAK,gBAAA,GAAmB,gBAAgB,SAAS,CAAA;AACjD,IAAA,IAAA,CAAK,eAAA,uBAAsB,GAAA,EAAyB;AACpD,IAAA,IAAA,CAAK,aAAA,uBAAoB,GAAA,EAAyB;AAClD,IAAA,IAAA,CAAK,YAAA,uBAAmB,GAAA,EAAyB;AACjD,IAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO;AAC/C,MAAA,IAAA,CAAK,gBAAgB,GAAA,CAAI,IAAA,CAAK,EAAA,kBAAI,IAAI,KAAK,CAAA;AAC3C,MAAA,IAAA,CAAK,cAAc,GAAA,CAAI,IAAA,CAAK,EAAA,kBAAI,IAAI,KAAK,CAAA;AAAA,IAC1C;AACA,IAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO;AAC/C,MAAA,IAAA,CAAK,gBAAgB,IAAA,CAAK,MAAM,CAAA,CAAE,GAAA,CAAI,KAAK,MAAM,CAAA;AAAA,IAClD;AACA,IAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO;AAC/C,MAAA,IAAA,CAAK,cAAc,IAAA,CAAK,MAAM,CAAA,CAAE,GAAA,CAAI,KAAK,MAAM,CAAA;AAAA,IAChD;AACA,IAAA,MAAM,QAAA,GAAW,iBAAiB,SAAS,CAAA;AAC3C,IAAA,IAAA,CAAK,mBAAmB,SAAS,CAAA;AACjC,IAAA,IAAA,CAAK,QAAA,GAAW,IAAI,GAAA,CAAI,QAAA,CAAS,YAAA,CAAa,MAAA,CAAO,CAAC,EAAA,KAAO,CAAC,IAAA,CAAK,cAAA,CAAe,EAAE,CAAC,CAAC,CAAA;AACtF,IAAA,IAAI,IAAA,CAAK,SAAS,IAAA,KAAS,CAAA,IAAK,SAAS,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,CAAC,YAAA,EAAc;AAC5E,MAAA,MAAM,gBAAA,uBAAuB,GAAA,EAAY;AACzC,MAAA,MAAM,mBAAmB,IAAI,GAAA,CAAI,UAAU,QAAA,EAAU,gBAAA,IAAoB,EAAE,CAAA;AAC3E,MAAA,KAAA,MAAW,KAAA,IAAS,SAAS,MAAA,EAAQ;AACpC,QAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACrB,UAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,CAAC,SAAS,gBAAA,CAAiB,GAAA,CAAI,IAAI,CAAC,CAAA;AAClE,UAAA,gBAAA,CAAiB,GAAA,CAAI,UAAA,IAAc,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,QAC5C;AAAA,MACD;AACA,MAAA,IAAA,CAAK,QAAA,GAAW,IAAI,GAAA,CAAI,gBAAgB,CAAA;AAAA,IACzC;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAKO,aAAA,GAAsB;AAC5B,IAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAc,SAAA,CAAU,SAAA,EAA8B,KAAA,EAA2C;AAChG,IAAA,MAAM,SAAA,GAAY,IAAI,eAAA,CAAe,SAAS,CAAA;AAG9C,IAAA,SAAA,CAAU,aAAA,EAAc;AAGxB,IAAA,MAAM,cAAA,GAAiB,MAAM,iBAAA,EAAkB;AAC/C,IAAA,SAAA,CAAU,cAAA,GAAiB,IAAI,GAAA,CAAI,cAAc,CAAA;AAEjD,IAAA,KAAA,MAAW,IAAA,IAAQ,SAAA,CAAU,gBAAA,CAAiB,KAAA,EAAO;AACpD,MAAA,IAAI,SAAA,CAAU,cAAA,CAAe,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG;AAE3C,MAAA,MAAM,oBAAA,GAAuB,SAAA,CAAU,eAAA,CAAgB,GAAA,CAAI,KAAK,EAAE,CAAA;AAClE,MAAA,MAAM,YAAA,GAAe,SAAA,CAAU,eAAA,CAAgB,IAAA,CAAK,EAAE,CAAA;AAGtD,MAAA,IAAI,CAAC,oBAAA,IAAwB,oBAAA,CAAqB,IAAA,KAAS,CAAA,EAAG;AAC7D,QAAA,SAAA,CAAU,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AAC9B,QAAA;AAAA,MACD;AAEA,MAAA,MAAM,qBAAA,GAAwB,CAAC,GAAG,oBAAoB,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,SAAA,CAAU,cAAA,CAAe,GAAA,CAAI,CAAC,CAAC,CAAA;AACrG,MAAA,MAAM,OAAA,GACL,iBAAiB,KAAA,GACd,qBAAA,CAAsB,SAAS,CAAA,GAC/B,qBAAA,CAAsB,WAAW,oBAAA,CAAqB,IAAA;AAE1D,MAAA,IAAI,OAAA,EAAS,SAAA,CAAU,QAAA,CAAS,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,IAC5C;AAEA,IAAA,OAAO,SAAA;AAAA,EACR;AAAA,EAEQ,eAAe,MAAA,EAAyB;AAC/C,IAAA,OAAO,IAAA,CAAK,iBAAiB,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,EAAQ,QAAA,KAAa,MAAM,CAAA;AAAA,EAC7E;AAAA,EAEQ,gBAAgB,MAAA,EAA+B;AACtD,IAAA,MAAM,IAAA,GAAO,KAAK,gBAAA,CAAiB,KAAA,CAAM,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,MAAM,CAAA;AACpE,IAAA,MAAM,gBAAA,GAAmB,IAAA,EAAM,MAAA,EAAQ,YAAA,IAAgB,KAAA;AACvD,IAAA,OAAO,gBAAA;AAAA,EACR;AAAA,EAEQ,mBAAmB,SAAA,EAAoC;AAC9D,IAAA,SAAA,CAAU,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,KAAS;AACjC,MAAA,IAAI,IAAA,CAAK,SAAS,iBAAA,EAAmB;AAErC,MAAA,MAAM,YAAA,GAAe,SAAA,CAAU,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,KAAW,IAAA,CAAK,EAAA,IAAM,CAAA,CAAE,MAAA,KAAW,UAAU,CAAA,EAAG,MAAA;AACnG,MAAA,IAAI,CAAC,YAAA,EAAc;AAClB,QAAA,MAAM,IAAI,cAAA;AAAA,UACT,CAAA,MAAA,EAAS,KAAK,EAAE,CAAA,sIAAA,CAAA;AAAA,UAEhB,EAAE,MAAA,EAAQ,IAAA,CAAK,EAAA,EAAI,WAAA,EAAa,UAAU,EAAA;AAAG,SAC9C;AAAA,MACD;AAEA,MAAA,MAAM,GAAA,uBAAuB,GAAA,EAAI;AACjC,MAAA,GAAA,CAAI,IAAI,YAAY,CAAA;AACpB,MAAA,IAAA,CAAK,YAAA,CAAa,IAAI,IAAA,CAAK,EAAA,EAAI,KAAK,oBAAA,CAAqB,YAAA,EAAc,SAAA,EAAW,GAAG,CAAC,CAAA;AAAA,IACvF,CAAC,CAAA;AAAA,EACF;AAAA,EAEQ,oBAAA,CAAqB,MAAA,EAAgB,SAAA,EAA8B,GAAA,EAA+B;AACzG,IAAA,IAAA,CAAK,aAAA,CAAc,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,SAAA,KAAc;AACjD,MAAA,IAAI,GAAA,CAAI,GAAA,CAAI,SAAS,CAAA,EAAG;AACxB,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,SAAA,EAAW,SAAS,CAAA;AAC9C,MAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,iBAAA,EAAmB;AAC9C,MAAA,GAAA,CAAI,IAAI,SAAS,CAAA;AACjB,MAAA,IAAA,CAAK,oBAAA,CAAqB,SAAA,EAAW,SAAA,EAAW,GAAG,CAAA;AAAA,IACpD,CAAC,CAAA;AACD,IAAA,OAAO,GAAA;AAAA,EACR;AAAA,EAEA,aAAA,GAA6B;AAC5B,IAAA,MAAM,aAA0B,EAAC;AACjC,IAAA,KAAA,MAAW,MAAA,IAAU,KAAK,QAAA,EAAU;AACnC,MAAA,MAAM,OAAA,GAAU,KAAK,gBAAA,CAAiB,KAAA,CAAM,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,MAAM,CAAA;AACvE,MAAA,IAAI,OAAA,EAAS;AACZ,QAAA,UAAA,CAAW,IAAA,CAAK,EAAE,MAAA,EAAQ,OAAA,EAAS,CAAA;AAAA,MACpC;AAAA,IACD;AACA,IAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AACpB,IAAA,OAAO,UAAA;AAAA,EACR;AAAA,EAEA,WAAA,GAAuB;AACtB,IAAA,OAAO,IAAA,CAAK,SAAS,IAAA,GAAO,CAAA;AAAA,EAC7B;AAAA,EAEA,iBAAA,CAAkB,MAAA,EAAgB,MAAA,EAA8B,SAAA,EAAmC;AAClG,IAAA,IAAA,CAAK,cAAA,CAAe,IAAI,MAAM,CAAA;AAE9B,IAAA,IAAI,MAAA,EAAQ,YAAA,IAAgB,MAAA,CAAO,YAAA,CAAa,SAAS,CAAA,EAAG;AAC3D,MAAA,MAAM,YAAA,GAAe,OAAO,MAAA,EAAQ,YAAA;AACpC,MAAA,KAAA,MAAW,WAAA,IAAe,OAAO,YAAA,EAAc;AAC9C,QAAA,IAAA,CAAK,gBAAA,CAAiB,KAAA,CAAM,IAAA,CAAK,WAAW,CAAA;AAC5C,QAAA,IAAA,CAAK,eAAA,CAAgB,IAAI,WAAA,CAAY,EAAA,sBAAQ,GAAA,CAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AAC1D,QAAA,IAAI,YAAA,EAAc;AACjB,UAAA,IAAA,CAAK,eAAA,CAAgB,YAAY,CAAA,CAAE,GAAA,CAAI,YAAY,EAAE,CAAA;AAAA,QACtD;AACA,QAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,WAAA,CAAY,EAAE,CAAA;AAAA,MACjC;AAAA,IACD;AAEA,IAAA,KAAA,MAAW,QAAQ,SAAA,EAAW;AAC7B,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,EAAE,CAAA;AACjD,MAAA,IAAI,iBAAiB,KAAA,IAAS,IAAA,CAAK,eAAe,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG;AAEhE,MAAA,MAAM,oBAAA,GAAuB,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,EAAE,CAAA;AAEzD,MAAA,MAAM,UACL,YAAA,KAAiB,KAAA,GACd,qBAAqB,GAAA,CAAI,MAAM,IAC/B,CAAC,GAAG,oBAAoB,CAAA,CAAE,MAAM,CAAC,CAAA,KAAM,KAAK,cAAA,CAAe,GAAA,CAAI,CAAC,CAAC,CAAA;AAErE,MAAA,IAAI,OAAA,EAAS;AACZ,QAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AAEzB,QAAA,IAAI,IAAA,CAAK,SAAS,iBAAA,EAAmB;AACpC,UAAA,IAAA,CAAK,eAAe,IAAA,CAAK,EAAE,CAAA,CAAE,OAAA,CAAQ,CAAC,EAAA,KAAO;AAC5C,YAAA,IAAA,CAAK,oBAAoB,EAAE,CAAA;AAAA,UAC5B,CAAC,CAAA;AAAA,QACF;AAAA,MACD;AAAA,IACD;AAEA,IAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC3B,MAAA,KAAA,MAAW,CAAC,eAAA,EAAiB,YAAY,CAAA,IAAK,KAAK,eAAA,EAAiB;AACnE,QAAA,IAAI,YAAA,CAAa,IAAI,MAAM,CAAA,IAAK,CAAC,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,eAAe,CAAA,EAAG;AAC1E,UAAA,MAAM,YAAA,GAAe,IAAA,CAAK,eAAA,CAAgB,eAAe,CAAA;AACzD,UAAA,MAAM,UACL,YAAA,KAAiB,KAAA,GACd,aAAa,GAAA,CAAI,MAAM,IACvB,CAAC,GAAG,YAAY,CAAA,CAAE,MAAM,CAAC,CAAA,KAAM,KAAK,cAAA,CAAe,GAAA,CAAI,CAAC,CAAC,CAAA;AAC7D,UAAA,IAAI,OAAA,EAAS;AACZ,YAAA,IAAA,CAAK,QAAA,CAAS,IAAI,eAAe,CAAA;AACjC,YAAA,MAAM,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,eAAA,EAAiB,KAAK,gBAAgB,CAAA;AAChE,YAAA,IAAI,CAAC,IAAA,EAAM;AAEX,YAAA,IAAI,IAAA,CAAK,SAAS,iBAAA,EAAmB;AACpC,cAAA,IAAA,CAAK,eAAe,IAAA,CAAK,EAAE,CAAA,CAAE,OAAA,CAAQ,CAAC,EAAA,KAAO;AAC5C,gBAAA,IAAA,CAAK,oBAAoB,EAAE,CAAA;AAAA,cAC5B,CAAC,CAAA;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,aAAA,GAA6B;AAC5B,IAAA,OAAO,IAAI,GAAA,CAAI,IAAA,CAAK,gBAAA,CAAiB,KAAA,CAAM,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,EAC5D;AAAA,EAEA,kBAAA,GAAkC;AACjC,IAAA,MAAM,eAAA,uBAAsB,GAAA,EAAY;AACxC,IAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO;AAC/C,MAAA,IAAI,KAAK,MAAA,EAAQ,QAAA,kBAA0B,GAAA,CAAI,IAAA,CAAK,OAAO,QAAQ,CAAA;AAAA,IACpE;AACA,IAAA,OAAO,eAAA;AAAA,EACR;AAAA,EAEA,iBAAA,GAAiC;AAChC,IAAA,OAAO,IAAI,GAAA,CAAI,IAAA,CAAK,cAAc,CAAA;AAAA,EACnC;AAAA,EAEA,mBAAA,GAAyC;AACxC,IAAA,OAAO,IAAA,CAAK,gBAAA;AAAA,EACb;AAAA,EAEA,kBAAA,GAA+C;AAC9C,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA,EACb;AAAA,EAEA,gBAAA,GAA6C;AAC5C,IAAA,OAAO,IAAA,CAAK,aAAA;AAAA,EACb;AAAA,EAEA,gBAAgB,MAAA,EAA6B;AAC5C,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,MAAM,CAAA;AACpD,IAAA,IAAI,CAAC,YAAA,EAAc,uBAAO,IAAI,GAAA,EAAI;AAClC,IAAA,OAAO,YAAA;AAAA,EACR;AAAA,EAEA,cAAc,MAAA,EAA6B;AAC1C,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,MAAM,CAAA;AAChD,IAAA,IAAI,CAAC,UAAA,EAAY,uBAAO,IAAI,GAAA,EAAI;AAChC,IAAA,OAAO,UAAA;AAAA,EACR;AAAA,EAEA,eAAe,EAAA,EAAyB;AACvC,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,EAAE,CAAA;AAC1C,IAAA,IAAI,CAAC,SAAA,EAAW,uBAAO,IAAI,GAAA,EAAI;AAC/B,IAAA,OAAO,SAAA;AAAA,EACR;AAAA,EAEA,oBAAoB,MAAA,EAAsB;AACzC,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,MAAM,CAAA;AAAA,EAClC;AAAA,EAEA,OAAA,CAAQ,QAAgB,SAAA,EAA0D;AACjF,IAAA,OAAO,UAAU,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,MAAM,CAAA;AAAA,EACnD;AAAA,EAEA,cAAA,CAAe,OAAA,EAAiB,WAAA,EAA6B,aAAA,EAAuB,YAAA,EAA6B;AAChH,IAAA,IAAA,CAAK,gBAAA,CAAiB,KAAA,CAAM,IAAA,CAAK,WAAW,CAAA;AAC5C,IAAA,IAAA,CAAK,eAAA,CAAgB,IAAI,WAAA,CAAY,EAAA,sBAAQ,GAAA,CAAI,CAAC,aAAa,CAAC,CAAC,CAAA;AACjE,IAAA,IAAI,YAAA,EAAc;AACjB,MAAA,IAAA,CAAK,gBAAgB,GAAA,CAAI,YAAY,CAAA,EAAG,GAAA,CAAI,YAAY,EAAE,CAAA;AAAA,IAC3D;AACA,IAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,WAAA,CAAY,EAAE,CAAA;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,cAAc,MAAA,EAAsB;AAC1C,IAAA,IAAA,CAAK,QAAA,CAAS,IAAI,MAAM,CAAA;AAAA,EACzB;AACD","file":"chunk-ZKINHLMS.js","sourcesContent":["import { analyzeBlueprint } from '../analysis'\nimport { FlowcraftError } from '../errors'\nimport type { NodeDefinition, NodeResult, WorkflowBlueprint } from '../types'\nimport type { WorkflowState } from './state'\n\nexport interface ReadyNode {\n\tnodeId: string\n\tnodeDef: NodeDefinition\n}\n\nexport class GraphTraverser {\n\tprivate frontier = new Set<string>()\n\tprivate allPredecessors: Map<string, Set<string>>\n\tprivate allSuccessors: Map<string, Set<string>>\n\tprivate dynamicBlueprint: WorkflowBlueprint\n\tprivate completedNodes = new Set<string>()\n\tprivate nodesInLoops: Map<string, Set<string>>\n\n\tconstructor(blueprint: WorkflowBlueprint, isStrictMode: boolean = false) {\n\t\tthis.dynamicBlueprint = structuredClone(blueprint) as WorkflowBlueprint\n\t\tthis.allPredecessors = new Map<string, Set<string>>()\n\t\tthis.allSuccessors = new Map<string, Set<string>>()\n\t\tthis.nodesInLoops = new Map<string, Set<string>>()\n\t\tfor (const node of this.dynamicBlueprint.nodes) {\n\t\t\tthis.allPredecessors.set(node.id, new Set())\n\t\t\tthis.allSuccessors.set(node.id, new Set())\n\t\t}\n\t\tfor (const edge of this.dynamicBlueprint.edges) {\n\t\t\tthis.getPredecessors(edge.target).add(edge.source)\n\t\t}\n\t\tfor (const edge of this.dynamicBlueprint.edges) {\n\t\t\tthis.getSuccessors(edge.source).add(edge.target)\n\t\t}\n\t\tconst analysis = analyzeBlueprint(blueprint)\n\t\tthis.filterNodesInLoops(blueprint)\n\t\tthis.frontier = new Set(analysis.startNodeIds.filter((id) => !this.isFallbackNode(id)))\n\t\tif (this.frontier.size === 0 && analysis.cycles.length > 0 && !isStrictMode) {\n\t\t\tconst uniqueStartNodes = new Set<string>()\n\t\t\tconst cycleEntryPoints = new Set(blueprint.metadata?.cycleEntryPoints || [])\n\t\t\tfor (const cycle of analysis.cycles) {\n\t\t\t\tif (cycle.length > 0) {\n\t\t\t\t\tconst entryPoint = cycle.find((node) => cycleEntryPoints.has(node))\n\t\t\t\t\tuniqueStartNodes.add(entryPoint || cycle[0])\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.frontier = new Set(uniqueStartNodes)\n\t\t}\n\t}\n\n\t/**\n\t * Clears all nodes from the execution frontier.\n\t */\n\tpublic clearFrontier(): void {\n\t\tthis.frontier.clear()\n\t}\n\n\t/**\n\t * Creates and initializes a GraphTraverser from a saved workflow state.\n\t * This is the correct way to prepare a traverser for a `resume` operation.\n\t * @param blueprint The workflow blueprint.\n\t * @param state The workflow state being resumed.\n\t * @returns A configured GraphTraverser instance.\n\t */\n\tpublic static fromState(blueprint: WorkflowBlueprint, state: WorkflowState<any>): GraphTraverser {\n\t\tconst traverser = new GraphTraverser(blueprint)\n\n\t\t// clear auto-populated frontier from constructor\n\t\ttraverser.clearFrontier()\n\n\t\t// re-hydrate the set of completed nodes\n\t\tconst completedNodes = state.getCompletedNodes()\n\t\ttraverser.completedNodes = new Set(completedNodes)\n\n\t\tfor (const node of traverser.dynamicBlueprint.nodes) {\n\t\t\tif (traverser.completedNodes.has(node.id)) continue\n\n\t\t\tconst requiredPredecessors = traverser.allPredecessors.get(node.id)\n\t\t\tconst joinStrategy = traverser.getJoinStrategy(node.id)\n\n\t\t\t// if no predecessors and not completed, it's a start node and should be in the frontier\n\t\t\tif (!requiredPredecessors || requiredPredecessors.size === 0) {\n\t\t\t\ttraverser.frontier.add(node.id)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst completedPredecessors = [...requiredPredecessors].filter((p) => traverser.completedNodes.has(p))\n\t\t\tconst isReady =\n\t\t\t\tjoinStrategy === 'any'\n\t\t\t\t\t? completedPredecessors.length > 0\n\t\t\t\t\t: completedPredecessors.length === requiredPredecessors.size\n\n\t\t\tif (isReady) traverser.frontier.add(node.id)\n\t\t}\n\n\t\treturn traverser\n\t}\n\n\tprivate isFallbackNode(nodeId: string): boolean {\n\t\treturn this.dynamicBlueprint.nodes.some((n) => n.config?.fallback === nodeId)\n\t}\n\n\tprivate getJoinStrategy(nodeId: string): 'any' | 'all' {\n\t\tconst node = this.dynamicBlueprint.nodes.find((n) => n.id === nodeId)\n\t\tconst baseJoinStrategy = node?.config?.joinStrategy || 'all'\n\t\treturn baseJoinStrategy\n\t}\n\n\tprivate filterNodesInLoops(blueprint: WorkflowBlueprint): void {\n\t\tblueprint.nodes.forEach((node) => {\n\t\t\tif (node.uses !== 'loop-controller') return\n\n\t\t\tconst nextInLoopId = blueprint.edges.find((e) => e.source === node.id && e.action === 'continue')?.target\n\t\t\tif (!nextInLoopId) {\n\t\t\t\tthrow new FlowcraftError(\n\t\t\t\t\t`Loop '${node.id}' has no continue edge to start node. ` +\n\t\t\t\t\t\t`Ensure edges are wired inside the loop and incoming/breaking edges point to the loop controller.`,\n\t\t\t\t\t{ nodeId: node.id, blueprintId: blueprint.id },\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tconst set: Set<string> = new Set()\n\t\t\tset.add(nextInLoopId)\n\t\t\tthis.nodesInLoops.set(node.id, this.getAllLoopSuccessors(nextInLoopId, blueprint, set))\n\t\t})\n\t}\n\n\tprivate getAllLoopSuccessors(nodeId: string, blueprint: WorkflowBlueprint, set: Set<string>): Set<string> {\n\t\tthis.getSuccessors(nodeId).forEach((successor) => {\n\t\t\tif (set.has(successor)) return\n\t\t\tconst node = this.getNode(successor, blueprint)\n\t\t\tif (!node || node.uses === 'loop-controller') return\n\t\t\tset.add(successor)\n\t\t\tthis.getAllLoopSuccessors(successor, blueprint, set)\n\t\t})\n\t\treturn set\n\t}\n\n\tgetReadyNodes(): ReadyNode[] {\n\t\tconst readyNodes: ReadyNode[] = []\n\t\tfor (const nodeId of this.frontier) {\n\t\t\tconst nodeDef = this.dynamicBlueprint.nodes.find((n) => n.id === nodeId)\n\t\t\tif (nodeDef) {\n\t\t\t\treadyNodes.push({ nodeId, nodeDef })\n\t\t\t}\n\t\t}\n\t\tthis.frontier.clear()\n\t\treturn readyNodes\n\t}\n\n\thasMoreWork(): boolean {\n\t\treturn this.frontier.size > 0\n\t}\n\n\tmarkNodeCompleted(nodeId: string, result: NodeResult<any, any>, nextNodes: NodeDefinition[]): void {\n\t\tthis.completedNodes.add(nodeId)\n\n\t\tif (result?.dynamicNodes && result.dynamicNodes.length > 0) {\n\t\t\tconst gatherNodeId = result.output?.gatherNodeId\n\t\t\tfor (const dynamicNode of result.dynamicNodes) {\n\t\t\t\tthis.dynamicBlueprint.nodes.push(dynamicNode)\n\t\t\t\tthis.allPredecessors.set(dynamicNode.id, new Set([nodeId]))\n\t\t\t\tif (gatherNodeId) {\n\t\t\t\t\tthis.getPredecessors(gatherNodeId).add(dynamicNode.id)\n\t\t\t\t}\n\t\t\t\tthis.frontier.add(dynamicNode.id)\n\t\t\t}\n\t\t}\n\n\t\tfor (const node of nextNodes) {\n\t\t\tconst joinStrategy = this.getJoinStrategy(node.id)\n\t\t\tif (joinStrategy !== 'any' && this.completedNodes.has(node.id)) continue\n\n\t\t\tconst requiredPredecessors = this.getPredecessors(node.id)\n\n\t\t\tconst isReady =\n\t\t\t\tjoinStrategy === 'any'\n\t\t\t\t\t? requiredPredecessors.has(nodeId)\n\t\t\t\t\t: [...requiredPredecessors].every((p) => this.completedNodes.has(p))\n\n\t\t\tif (isReady) {\n\t\t\t\tthis.frontier.add(node.id)\n\t\t\t\t// reset to uncompleted for all nodes in a loop\n\t\t\t\tif (node.uses === 'loop-controller') {\n\t\t\t\t\tthis.getNodesInLoop(node.id).forEach((id) => {\n\t\t\t\t\t\tthis.resetNodeCompletion(id)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nextNodes.length === 0) {\n\t\t\tfor (const [potentialNextId, predecessors] of this.allPredecessors) {\n\t\t\t\tif (predecessors.has(nodeId) && !this.completedNodes.has(potentialNextId)) {\n\t\t\t\t\tconst joinStrategy = this.getJoinStrategy(potentialNextId)\n\t\t\t\t\tconst isReady =\n\t\t\t\t\t\tjoinStrategy === 'any'\n\t\t\t\t\t\t\t? predecessors.has(nodeId)\n\t\t\t\t\t\t\t: [...predecessors].every((p) => this.completedNodes.has(p))\n\t\t\t\t\tif (isReady) {\n\t\t\t\t\t\tthis.frontier.add(potentialNextId)\n\t\t\t\t\t\tconst node = this.getNode(potentialNextId, this.dynamicBlueprint)\n\t\t\t\t\t\tif (!node) continue\n\t\t\t\t\t\t// reset to uncompleted for all nodes in a loop\n\t\t\t\t\t\tif (node.uses === 'loop-controller') {\n\t\t\t\t\t\t\tthis.getNodesInLoop(node.id).forEach((id) => {\n\t\t\t\t\t\t\t\tthis.resetNodeCompletion(id)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetAllNodeIds(): Set<string> {\n\t\treturn new Set(this.dynamicBlueprint.nodes.map((n) => n.id))\n\t}\n\n\tgetFallbackNodeIds(): Set<string> {\n\t\tconst fallbackNodeIds = new Set<string>()\n\t\tfor (const node of this.dynamicBlueprint.nodes) {\n\t\t\tif (node.config?.fallback) fallbackNodeIds.add(node.config.fallback)\n\t\t}\n\t\treturn fallbackNodeIds\n\t}\n\n\tgetCompletedNodes(): Set<string> {\n\t\treturn new Set(this.completedNodes)\n\t}\n\n\tgetDynamicBlueprint(): WorkflowBlueprint {\n\t\treturn this.dynamicBlueprint\n\t}\n\n\tgetAllPredecessors(): Map<string, Set<string>> {\n\t\treturn this.allPredecessors\n\t}\n\n\tgetAllSuccessors(): Map<string, Set<string>> {\n\t\treturn this.allSuccessors\n\t}\n\n\tgetPredecessors(nodeId: string): Set<string> {\n\t\tconst predecessors = this.allPredecessors.get(nodeId)\n\t\tif (!predecessors) return new Set()\n\t\treturn predecessors\n\t}\n\n\tgetSuccessors(nodeId: string): Set<string> {\n\t\tconst successors = this.allSuccessors.get(nodeId)\n\t\tif (!successors) return new Set()\n\t\treturn successors\n\t}\n\n\tgetNodesInLoop(id: string): Set<string> {\n\t\tconst loopNodes = this.nodesInLoops.get(id)\n\t\tif (!loopNodes) return new Set()\n\t\treturn loopNodes\n\t}\n\n\tresetNodeCompletion(nodeId: string): void {\n\t\tthis.completedNodes.delete(nodeId)\n\t}\n\n\tgetNode(nodeId: string, blueprint: WorkflowBlueprint): NodeDefinition | undefined {\n\t\treturn blueprint.nodes.find((n) => n.id === nodeId)\n\t}\n\n\taddDynamicNode(_nodeId: string, dynamicNode: NodeDefinition, predecessorId: string, gatherNodeId?: string): void {\n\t\tthis.dynamicBlueprint.nodes.push(dynamicNode)\n\t\tthis.allPredecessors.set(dynamicNode.id, new Set([predecessorId]))\n\t\tif (gatherNodeId) {\n\t\t\tthis.allPredecessors.get(gatherNodeId)?.add(dynamicNode.id)\n\t\t}\n\t\tthis.frontier.add(dynamicNode.id)\n\t}\n\n\t/**\n\t * Manually adds a node ID back to the execution frontier.\n\t * Used by orchestrators that need fine-grained control over steps.\n\t * @param nodeId The ID of the node to add to the frontier.\n\t */\n\tpublic addToFrontier(nodeId: string): void {\n\t\tthis.frontier.add(nodeId)\n\t}\n}\n"]}
@@ -1,5 +1,5 @@
1
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-D-dVKe4_.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-Biip2gLh.js';
3
3
  import './errors.js';
4
4
 
5
5
  interface ContainerOptions<TDependencies extends RuntimeDependencies = RuntimeDependencies> {
@@ -1,11 +1,11 @@
1
- export { createDefaultContainer } from './chunk-LU5SLE3P.js';
2
- import './chunk-TTOS7NW3.js';
3
- import './chunk-N63S5NEG.js';
4
- import './chunk-LWN7HOD3.js';
5
- import './chunk-VSKDQVCG.js';
1
+ export { createDefaultContainer } from './chunk-E6ICIXVR.js';
2
+ import './chunk-QA2WDZPV.js';
3
+ import './chunk-26VTGQAF.js';
4
+ import './chunk-L3MX5MTA.js';
5
+ import './chunk-L46TQXCV.js';
6
6
  import './chunk-4PELJWF7.js';
7
7
  import './chunk-6RKHCJUU.js';
8
- import './chunk-WWGFIYKW.js';
8
+ import './chunk-OOJEXFYY.js';
9
9
  import './chunk-ZETQCNEF.js';
10
10
  import './chunk-BCRWXTWX.js';
11
11
  import './chunk-PH2IYZHV.js';
package/dist/container.js CHANGED
@@ -1,3 +1,3 @@
1
- export { DIContainer, ServiceTokens } from './chunk-WWGFIYKW.js';
1
+ export { DIContainer, ServiceTokens } from './chunk-OOJEXFYY.js';
2
2
  //# sourceMappingURL=container.js.map
3
3
  //# sourceMappingURL=container.js.map
package/dist/context.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as ISyncContext, u as IAsyncContext, P as PatchOperation } from './types-D-dVKe4_.js';
1
+ import { t as ISyncContext, u as IAsyncContext, P as PatchOperation } from './types-Biip2gLh.js';
2
2
  import './errors.js';
3
3
  import './container.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { h as WorkflowBlueprint } from './types-D-dVKe4_.js';
1
+ import { h as WorkflowBlueprint } from './types-Biip2gLh.js';
2
2
  import './errors.js';
3
3
  import './container.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { x as IEvaluator } from './types-D-dVKe4_.js';
1
+ import { x as IEvaluator } from './types-Biip2gLh.js';
2
2
  import './errors.js';
3
3
  import './container.js';
4
4
 
package/dist/flow.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { o as NodeFunction, p as NodeClass, j as NodeDefinition, k as EdgeDefinition, h as WorkflowBlueprint, U as UIGraph } from './types-D-dVKe4_.js';
1
+ import { o as NodeFunction, p as NodeClass, j as NodeDefinition, k as EdgeDefinition, h as WorkflowBlueprint, U as UIGraph } from './types-Biip2gLh.js';
2
2
  import './errors.js';
3
3
  import './container.js';
4
4
 
@@ -8,7 +8,6 @@ import './container.js';
8
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
- private loopControllerIds;
12
11
  private loopDefinitions;
13
12
  private batchDefinitions;
14
13
  private cycleEntryPoints;
@@ -66,7 +65,6 @@ declare class FlowBuilder<TContext extends Record<string, any> = Record<string,
66
65
  /** An expression that, if true, causes the loop to run again. */
67
66
  condition: string;
68
67
  }): this;
69
- getLoopControllerId(id: string): string;
70
68
  /**
71
69
  * Sets the preferred entry point for a cycle in non-DAG workflows.
72
70
  * This helps remove ambiguity when the runtime needs to choose a starting node for cycles.
package/dist/flow.js CHANGED
@@ -1,4 +1,4 @@
1
- export { FlowBuilder, createFlow } from './chunk-AKDL2ZX7.js';
1
+ export { FlowBuilder, createFlow } from './chunk-X5RJOZY2.js';
2
2
  import './chunk-LNK7LZER.js';
3
3
  //# sourceMappingURL=flow.js.map
4
4
  //# sourceMappingURL=flow.js.map
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ export { PropertyEvaluator, UnsafeEvaluator } from './evaluator.js';
9
9
  export { FlowBuilder, createFlow } from './flow.js';
10
10
  export { LinterIssue, LinterIssueCode, LinterResult, lintBlueprint } from './linter.js';
11
11
  export { ConsoleLogger, NullLogger } from './logger.js';
12
- 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-D-dVKe4_.js';
12
+ 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-Biip2gLh.js';
13
13
  export { AdapterOptions, BaseDistributedAdapter, ICoordinationStore, JobPayload } from './runtime/adapter.js';
14
14
  export { DefaultOrchestrator } from './runtime/orchestrator.js';
15
15
  export { ReplayOrchestrator } from './runtime/orchestrators/replay.js';
package/dist/index.js CHANGED
@@ -1,38 +1,38 @@
1
- import './chunk-3Y5O5EGB.js';
2
- export { InMemoryEventStore, PersistentEventBusAdapter } from './chunk-ASJYJ3NF.js';
3
1
  import './chunk-HFJXYY4E.js';
4
2
  export { ReplayOrchestrator } from './chunk-UNORA7EM.js';
5
3
  import './chunk-NVLZFLYM.js';
6
- export { BaseDistributedAdapter } from './chunk-W4IAXDO4.js';
7
- export { FlowRuntime } from './chunk-VDVUF25G.js';
8
- import './chunk-HXSK5P2X.js';
4
+ export { BaseDistributedAdapter } from './chunk-BV6MXL74.js';
5
+ export { FlowRuntime } from './chunk-CIXL7AKH.js';
6
+ import './chunk-PU2VTWJD.js';
9
7
  import './chunk-DL7KVYZF.js';
10
8
  import './chunk-LM4ACVHL.js';
11
- import './chunk-HNHM3FDK.js';
12
- import './chunk-4TVWI6Y6.js';
13
- import './chunk-IDTYHLDQ.js';
14
- import './chunk-I53JB2KW.js';
15
9
  export { ClassNodeExecutor, FunctionNodeExecutor, NodeExecutor } from './chunk-ONH7PIJZ.js';
16
- export { GraphTraverser } from './chunk-H4JTZYIT.js';
10
+ import './chunk-3Y5O5EGB.js';
11
+ export { InMemoryEventStore, PersistentEventBusAdapter } from './chunk-2TSADFQX.js';
17
12
  import './chunk-BC4G7OM6.js';
18
13
  import './chunk-RM677CNU.js';
14
+ import './chunk-HNHM3FDK.js';
15
+ import './chunk-5A24LVGQ.js';
16
+ export { GraphTraverser } from './chunk-ZKINHLMS.js';
17
+ import './chunk-IDTYHLDQ.js';
18
+ import './chunk-I53JB2KW.js';
19
19
  export { lintBlueprint } from './chunk-IKOTX22J.js';
20
20
  export { sanitizeBlueprint } from './chunk-TKSSRS5U.js';
21
21
  import './chunk-55J6XMHW.js';
22
22
  export { analyzeBlueprint, checkForCycles, generateMermaid, generateMermaidForRun } from './chunk-ZLW4QOTS.js';
23
- export { createDefaultContainer } from './chunk-LU5SLE3P.js';
24
- export { DefaultOrchestrator } from './chunk-TTOS7NW3.js';
25
- export { executeBatch, processResults } from './chunk-N63S5NEG.js';
26
- import './chunk-LWN7HOD3.js';
27
- export { WorkflowState } from './chunk-VSKDQVCG.js';
23
+ export { createDefaultContainer } from './chunk-E6ICIXVR.js';
24
+ export { DefaultOrchestrator } from './chunk-QA2WDZPV.js';
25
+ export { executeBatch, processResults } from './chunk-26VTGQAF.js';
26
+ import './chunk-L3MX5MTA.js';
27
+ export { WorkflowState } from './chunk-L46TQXCV.js';
28
28
  export { ConsoleLogger, NullLogger } from './chunk-4PELJWF7.js';
29
29
  export { JsonSerializer } from './chunk-6RKHCJUU.js';
30
- export { DIContainer, ServiceTokens } from './chunk-WWGFIYKW.js';
30
+ export { DIContainer, ServiceTokens } from './chunk-OOJEXFYY.js';
31
31
  export { AsyncContextView, Context, TrackedAsyncContext } from './chunk-ZETQCNEF.js';
32
32
  export { createErrorMapper } from './chunk-27STBUGG.js';
33
33
  export { FlowcraftError } from './chunk-BCRWXTWX.js';
34
34
  export { PropertyEvaluator, UnsafeEvaluator } from './chunk-PH2IYZHV.js';
35
- export { FlowBuilder, createFlow } from './chunk-AKDL2ZX7.js';
35
+ export { FlowBuilder, createFlow } from './chunk-X5RJOZY2.js';
36
36
  export { BaseNode, isNodeClass } from './chunk-LNK7LZER.js';
37
37
  //# sourceMappingURL=index.js.map
38
38
  //# sourceMappingURL=index.js.map
package/dist/linter.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { h as WorkflowBlueprint, o as NodeFunction, p as NodeClass } from './types-D-dVKe4_.js';
1
+ import { h as WorkflowBlueprint, o as NodeFunction, p as NodeClass } from './types-Biip2gLh.js';
2
2
  import './errors.js';
3
3
  import './container.js';
4
4
 
package/dist/logger.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { y as ILogger } from './types-D-dVKe4_.js';
1
+ import { y as ILogger } from './types-Biip2gLh.js';
2
2
  import './errors.js';
3
3
  import './container.js';
4
4
 
package/dist/node.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { B as BaseNode, i as isNodeClass } from './types-D-dVKe4_.js';
1
+ export { B as BaseNode, i as isNodeClass } from './types-Biip2gLh.js';
2
2
  import './errors.js';
3
3
  import './container.js';
@@ -1,4 +1,4 @@
1
- import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-D-dVKe4_.js';
1
+ import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-Biip2gLh.js';
2
2
  import '../errors.js';
3
3
  import '../container.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-D-dVKe4_.js';
1
+ import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-Biip2gLh.js';
2
2
  import '../errors.js';
3
3
  import '../container.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-D-dVKe4_.js';
1
+ import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-Biip2gLh.js';
2
2
  import '../errors.js';
3
3
  import '../container.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-D-dVKe4_.js';
1
+ import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-Biip2gLh.js';
2
2
  import '../errors.js';
3
3
  import '../container.js';
4
4
 
@@ -1,8 +1,8 @@
1
- export { SubflowNode } from '../chunk-4TVWI6Y6.js';
2
- import '../chunk-H4JTZYIT.js';
1
+ export { SubflowNode } from '../chunk-5A24LVGQ.js';
2
+ import '../chunk-ZKINHLMS.js';
3
3
  import '../chunk-ZLW4QOTS.js';
4
- import '../chunk-LWN7HOD3.js';
5
- import '../chunk-VSKDQVCG.js';
4
+ import '../chunk-L3MX5MTA.js';
5
+ import '../chunk-L46TQXCV.js';
6
6
  import '../chunk-ZETQCNEF.js';
7
7
  import '../chunk-BCRWXTWX.js';
8
8
  import '../chunk-LNK7LZER.js';
@@ -1,4 +1,4 @@
1
- import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-D-dVKe4_.js';
1
+ import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-Biip2gLh.js';
2
2
  import '../errors.js';
3
3
  import '../container.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-D-dVKe4_.js';
1
+ import { B as BaseNode, n as NodeContext, m as NodeResult } from '../types-Biip2gLh.js';
2
2
  import '../errors.js';
3
3
  import '../container.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { w as RuntimeOptions, A as IEventBus, c as FlowRuntime, D as ISerializer, y as ILogger, u as IAsyncContext, K as WorkflowResult, h as WorkflowBlueprint } from '../types-D-dVKe4_.js';
1
+ import { w as RuntimeOptions, A as IEventBus, c as FlowRuntime, D as ISerializer, y as ILogger, u as IAsyncContext, K as WorkflowResult, h as WorkflowBlueprint } from '../types-Biip2gLh.js';
2
2
  import '../errors.js';
3
3
  import '../container.js';
4
4
 
@@ -1,25 +1,25 @@
1
- export { BaseDistributedAdapter } from '../chunk-W4IAXDO4.js';
2
- import '../chunk-VDVUF25G.js';
3
- import '../chunk-HXSK5P2X.js';
1
+ export { BaseDistributedAdapter } from '../chunk-BV6MXL74.js';
2
+ import '../chunk-CIXL7AKH.js';
3
+ import '../chunk-PU2VTWJD.js';
4
4
  import '../chunk-DL7KVYZF.js';
5
5
  import '../chunk-LM4ACVHL.js';
6
- import '../chunk-HNHM3FDK.js';
7
- import '../chunk-4TVWI6Y6.js';
8
- import '../chunk-IDTYHLDQ.js';
9
- import '../chunk-I53JB2KW.js';
10
6
  import '../chunk-ONH7PIJZ.js';
11
- import '../chunk-H4JTZYIT.js';
12
7
  import '../chunk-BC4G7OM6.js';
13
8
  import '../chunk-RM677CNU.js';
9
+ import '../chunk-HNHM3FDK.js';
10
+ import '../chunk-5A24LVGQ.js';
11
+ import '../chunk-ZKINHLMS.js';
12
+ import '../chunk-IDTYHLDQ.js';
13
+ import '../chunk-I53JB2KW.js';
14
14
  import '../chunk-TKSSRS5U.js';
15
15
  import '../chunk-ZLW4QOTS.js';
16
- import '../chunk-TTOS7NW3.js';
17
- import '../chunk-N63S5NEG.js';
18
- import '../chunk-LWN7HOD3.js';
19
- import '../chunk-VSKDQVCG.js';
16
+ import '../chunk-QA2WDZPV.js';
17
+ import '../chunk-26VTGQAF.js';
18
+ import '../chunk-L3MX5MTA.js';
19
+ import '../chunk-L46TQXCV.js';
20
20
  import '../chunk-4PELJWF7.js';
21
21
  import '../chunk-6RKHCJUU.js';
22
- import '../chunk-WWGFIYKW.js';
22
+ import '../chunk-OOJEXFYY.js';
23
23
  import '../chunk-ZETQCNEF.js';
24
24
  import '../chunk-BCRWXTWX.js';
25
25
  import '../chunk-PH2IYZHV.js';
@@ -1,3 +1,3 @@
1
- export { L as ExecutionContext } from '../types-D-dVKe4_.js';
1
+ export { L as ExecutionContext } from '../types-Biip2gLh.js';
2
2
  import '../errors.js';
3
3
  import '../container.js';
@@ -1,5 +1,5 @@
1
- export { ExecutionContext } from '../chunk-LWN7HOD3.js';
2
- import '../chunk-VSKDQVCG.js';
1
+ export { ExecutionContext } from '../chunk-L3MX5MTA.js';
2
+ import '../chunk-L46TQXCV.js';
3
3
  import '../chunk-ZETQCNEF.js';
4
4
  import '../chunk-BCRWXTWX.js';
5
5
  //# sourceMappingURL=execution-context.js.map
@@ -1,3 +1,3 @@
1
1
  import '../errors.js';
2
- export { C as ClassNodeExecutor, E as ExecutionStrategy, F as FunctionNodeExecutor, N as NodeExecutionResult, b as NodeExecutor, a as NodeExecutorConfig } from '../types-D-dVKe4_.js';
2
+ export { C as ClassNodeExecutor, E as ExecutionStrategy, F as FunctionNodeExecutor, N as NodeExecutionResult, b as NodeExecutor, a as NodeExecutorConfig } from '../types-Biip2gLh.js';
3
3
  import '../container.js';
@@ -1,5 +1,5 @@
1
1
  export { AdapterOptions, BaseDistributedAdapter, ICoordinationStore, JobPayload } from './adapter.js';
2
- export { C as ClassNodeExecutor, e as ExecutionServices, E as ExecutionStrategy, c as FlowRuntime, F as FunctionNodeExecutor, G as GraphTraverser, I as IOrchestrator, f as IRuntime, N as NodeExecutionResult, b as NodeExecutor, a as NodeExecutorConfig, d as NodeExecutorFactory, R as ReadyNode, W as WorkflowState } from '../types-D-dVKe4_.js';
2
+ export { C as ClassNodeExecutor, e as ExecutionServices, E as ExecutionStrategy, c as FlowRuntime, F as FunctionNodeExecutor, G as GraphTraverser, I as IOrchestrator, f as IRuntime, N as NodeExecutionResult, b as NodeExecutor, a as NodeExecutorConfig, d as NodeExecutorFactory, R as ReadyNode, W as WorkflowState } from '../types-Biip2gLh.js';
3
3
  export { DefaultOrchestrator } from './orchestrator.js';
4
4
  export { ReplayOrchestrator } from './orchestrators/replay.js';
5
5
  export { executeBatch, processResults } from './orchestrators/utils.js';
@@ -1,28 +1,28 @@
1
1
  import '../chunk-HFJXYY4E.js';
2
2
  export { ReplayOrchestrator } from '../chunk-UNORA7EM.js';
3
3
  import '../chunk-NVLZFLYM.js';
4
- export { BaseDistributedAdapter } from '../chunk-W4IAXDO4.js';
5
- export { FlowRuntime } from '../chunk-VDVUF25G.js';
6
- import '../chunk-HXSK5P2X.js';
4
+ export { BaseDistributedAdapter } from '../chunk-BV6MXL74.js';
5
+ export { FlowRuntime } from '../chunk-CIXL7AKH.js';
6
+ import '../chunk-PU2VTWJD.js';
7
7
  import '../chunk-DL7KVYZF.js';
8
8
  import '../chunk-LM4ACVHL.js';
9
- import '../chunk-HNHM3FDK.js';
10
- import '../chunk-4TVWI6Y6.js';
11
- import '../chunk-IDTYHLDQ.js';
12
- import '../chunk-I53JB2KW.js';
13
9
  export { ClassNodeExecutor, FunctionNodeExecutor, NodeExecutor } from '../chunk-ONH7PIJZ.js';
14
- export { GraphTraverser } from '../chunk-H4JTZYIT.js';
15
10
  import '../chunk-BC4G7OM6.js';
16
11
  import '../chunk-RM677CNU.js';
12
+ import '../chunk-HNHM3FDK.js';
13
+ import '../chunk-5A24LVGQ.js';
14
+ export { GraphTraverser } from '../chunk-ZKINHLMS.js';
15
+ import '../chunk-IDTYHLDQ.js';
16
+ import '../chunk-I53JB2KW.js';
17
17
  import '../chunk-TKSSRS5U.js';
18
18
  import '../chunk-ZLW4QOTS.js';
19
- export { DefaultOrchestrator } from '../chunk-TTOS7NW3.js';
20
- export { executeBatch, processResults } from '../chunk-N63S5NEG.js';
21
- import '../chunk-LWN7HOD3.js';
22
- export { WorkflowState } from '../chunk-VSKDQVCG.js';
19
+ export { DefaultOrchestrator } from '../chunk-QA2WDZPV.js';
20
+ export { executeBatch, processResults } from '../chunk-26VTGQAF.js';
21
+ import '../chunk-L3MX5MTA.js';
22
+ export { WorkflowState } from '../chunk-L46TQXCV.js';
23
23
  import '../chunk-4PELJWF7.js';
24
24
  import '../chunk-6RKHCJUU.js';
25
- import '../chunk-WWGFIYKW.js';
25
+ import '../chunk-OOJEXFYY.js';
26
26
  import '../chunk-ZETQCNEF.js';
27
27
  import '../chunk-BCRWXTWX.js';
28
28
  import '../chunk-PH2IYZHV.js';
@@ -1,4 +1,4 @@
1
- import { A as IEventBus, L as ExecutionContext, b as NodeExecutor } from '../types-D-dVKe4_.js';
1
+ import { A as IEventBus, L as ExecutionContext, b as NodeExecutor } from '../types-Biip2gLh.js';
2
2
  import '../errors.js';
3
3
  import '../container.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { I as IOrchestrator, L as ExecutionContext, G as GraphTraverser, K as WorkflowResult } from '../types-D-dVKe4_.js';
1
+ import { I as IOrchestrator, L as ExecutionContext, G as GraphTraverser, K as WorkflowResult } from '../types-Biip2gLh.js';
2
2
  import '../errors.js';
3
3
  import '../container.js';
4
4
 
@@ -1,7 +1,7 @@
1
- export { DefaultOrchestrator } from '../chunk-TTOS7NW3.js';
2
- import '../chunk-N63S5NEG.js';
3
- import '../chunk-LWN7HOD3.js';
4
- import '../chunk-VSKDQVCG.js';
1
+ export { DefaultOrchestrator } from '../chunk-QA2WDZPV.js';
2
+ import '../chunk-26VTGQAF.js';
3
+ import '../chunk-L3MX5MTA.js';
4
+ import '../chunk-L46TQXCV.js';
5
5
  import '../chunk-ZETQCNEF.js';
6
6
  import '../chunk-BCRWXTWX.js';
7
7
  //# sourceMappingURL=orchestrator.js.map
@@ -1,4 +1,4 @@
1
- import { I as IOrchestrator, z as FlowcraftEvent, L as ExecutionContext, G as GraphTraverser, K as WorkflowResult } from '../../types-D-dVKe4_.js';
1
+ import { I as IOrchestrator, z as FlowcraftEvent, L as ExecutionContext, G as GraphTraverser, K as WorkflowResult } from '../../types-Biip2gLh.js';
2
2
  import '../../errors.js';
3
3
  import '../../container.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { I as IOrchestrator, L as ExecutionContext, G as GraphTraverser, K as WorkflowResult } from '../../types-D-dVKe4_.js';
1
+ import { I as IOrchestrator, L as ExecutionContext, G as GraphTraverser, K as WorkflowResult } from '../../types-Biip2gLh.js';
2
2
  import '../../errors.js';
3
3
  import '../../container.js';
4
4
 
@@ -1,5 +1,5 @@
1
- export { StepByStepOrchestrator } from '../../chunk-RAZWRNAJ.js';
2
- import '../../chunk-N63S5NEG.js';
1
+ export { StepByStepOrchestrator } from '../../chunk-VZ4BRDBK.js';
2
+ import '../../chunk-26VTGQAF.js';
3
3
  import '../../chunk-BCRWXTWX.js';
4
4
  //# sourceMappingURL=step-by-step.js.map
5
5
  //# sourceMappingURL=step-by-step.js.map