@decaf-ts/integrations 0.10.5 → 0.10.8

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 (294) hide show
  1. package/dist/integrations.cjs +1 -1
  2. package/lib/cjs/graph/engine/catalog/GraphBuiltInRegistrations.cjs +12 -73
  3. package/lib/cjs/graph/engine/catalog/GraphBuiltInRegistrations.cjs.map +1 -1
  4. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +5 -1
  5. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs.map +1 -1
  6. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +66 -1
  7. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs.map +1 -1
  8. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +16 -0
  9. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs.map +1 -1
  10. package/lib/cjs/graph/engine/execution/index.cjs +0 -4
  11. package/lib/cjs/graph/engine/execution/index.cjs.map +1 -1
  12. package/lib/cjs/graph/engine/index.cjs +0 -7
  13. package/lib/cjs/graph/engine/index.cjs.map +1 -1
  14. package/lib/cjs/graph/engine/loops/index.cjs +0 -3
  15. package/lib/cjs/graph/engine/loops/index.cjs.map +1 -1
  16. package/lib/cjs/graph/engine/validation/GraphLooseNodeValidation.cjs +36 -0
  17. package/lib/cjs/graph/engine/validation/GraphLooseNodeValidation.cjs.map +1 -0
  18. package/lib/cjs/graph/engine/validation/GraphParameterValidator.cjs +36 -3
  19. package/lib/cjs/graph/engine/validation/GraphParameterValidator.cjs.map +1 -1
  20. package/lib/cjs/graph/engine/validation/GraphWorkflowDocumentValidator.cjs +32 -1
  21. package/lib/cjs/graph/engine/validation/GraphWorkflowDocumentValidator.cjs.map +1 -1
  22. package/lib/cjs/graph/engine/validation/index.cjs +1 -0
  23. package/lib/cjs/graph/engine/validation/index.cjs.map +1 -1
  24. package/lib/cjs/graph/nodes/agents/agent.cjs +118 -0
  25. package/lib/cjs/graph/nodes/agents/agent.cjs.map +1 -0
  26. package/lib/cjs/graph/nodes/base.cjs +61 -0
  27. package/lib/cjs/graph/nodes/base.cjs.map +1 -0
  28. package/lib/cjs/graph/nodes/boundary/input-value.cjs +59 -0
  29. package/lib/cjs/graph/nodes/boundary/input-value.cjs.map +1 -0
  30. package/lib/cjs/graph/nodes/flow-control/break.cjs +71 -0
  31. package/lib/cjs/graph/nodes/flow-control/break.cjs.map +1 -0
  32. package/lib/cjs/graph/nodes/flow-control/error-boundary.cjs +72 -0
  33. package/lib/cjs/graph/nodes/flow-control/error-boundary.cjs.map +1 -0
  34. package/lib/cjs/graph/nodes/flow-control/human-approval.cjs +80 -0
  35. package/lib/cjs/graph/nodes/flow-control/human-approval.cjs.map +1 -0
  36. package/lib/cjs/graph/nodes/flow-control/if.cjs +82 -0
  37. package/lib/cjs/graph/nodes/flow-control/if.cjs.map +1 -0
  38. package/lib/cjs/graph/nodes/flow-control/parallel.cjs +69 -0
  39. package/lib/cjs/graph/nodes/flow-control/parallel.cjs.map +1 -0
  40. package/lib/cjs/graph/nodes/flow-control/switch.cjs +190 -0
  41. package/lib/cjs/graph/nodes/flow-control/switch.cjs.map +1 -0
  42. package/lib/cjs/graph/nodes/index.cjs +162 -0
  43. package/lib/cjs/graph/nodes/index.cjs.map +1 -0
  44. package/lib/cjs/graph/nodes/loops/foreach.cjs +189 -0
  45. package/lib/cjs/graph/nodes/loops/foreach.cjs.map +1 -0
  46. package/lib/cjs/graph/nodes/loops/loop-metadata.cjs +48 -0
  47. package/lib/cjs/graph/nodes/loops/loop-metadata.cjs.map +1 -0
  48. package/lib/cjs/graph/nodes/loops/until.cjs +136 -0
  49. package/lib/cjs/graph/nodes/loops/until.cjs.map +1 -0
  50. package/lib/cjs/graph/nodes/loops/while.cjs +133 -0
  51. package/lib/cjs/graph/nodes/loops/while.cjs.map +1 -0
  52. package/lib/cjs/graph/nodes/manifests.cjs +342 -0
  53. package/lib/cjs/graph/nodes/manifests.cjs.map +1 -0
  54. package/lib/cjs/graph/nodes/triggers/chat.cjs +82 -0
  55. package/lib/cjs/graph/nodes/triggers/chat.cjs.map +1 -0
  56. package/lib/cjs/graph/nodes/triggers/event.cjs +63 -0
  57. package/lib/cjs/graph/nodes/triggers/event.cjs.map +1 -0
  58. package/lib/cjs/graph/nodes/triggers/form.cjs +64 -0
  59. package/lib/cjs/graph/nodes/triggers/form.cjs.map +1 -0
  60. package/lib/cjs/graph/nodes/triggers/manual.cjs +65 -0
  61. package/lib/cjs/graph/nodes/triggers/manual.cjs.map +1 -0
  62. package/lib/cjs/graph/nodes/triggers/schedule.cjs +65 -0
  63. package/lib/cjs/graph/nodes/triggers/schedule.cjs.map +1 -0
  64. package/lib/cjs/graph/nodes/triggers/webhook.cjs +67 -0
  65. package/lib/cjs/graph/nodes/triggers/webhook.cjs.map +1 -0
  66. package/lib/cjs/graph/nodes/utility/code.cjs +139 -0
  67. package/lib/cjs/graph/nodes/utility/code.cjs.map +1 -0
  68. package/lib/cjs/graph/nodes/utility/delay.cjs +66 -0
  69. package/lib/cjs/graph/nodes/utility/delay.cjs.map +1 -0
  70. package/lib/cjs/graph/nodes/utility/log.cjs +70 -0
  71. package/lib/cjs/graph/nodes/utility/log.cjs.map +1 -0
  72. package/lib/cjs/graph/nodes/utility/map.cjs +69 -0
  73. package/lib/cjs/graph/nodes/utility/map.cjs.map +1 -0
  74. package/lib/cjs/graph/nodes/utility/merge.cjs +67 -0
  75. package/lib/cjs/graph/nodes/utility/merge.cjs.map +1 -0
  76. package/lib/cjs/graph/nodes/utility/return.cjs +69 -0
  77. package/lib/cjs/graph/nodes/utility/return.cjs.map +1 -0
  78. package/lib/cjs/graph/nodes/utility/utility-log.cjs +77 -0
  79. package/lib/cjs/graph/nodes/utility/utility-log.cjs.map +1 -0
  80. package/lib/cjs/index.cjs +3 -3
  81. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +8 -4
  82. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs.map +1 -1
  83. package/lib/cjs/nest/graph/GraphWorkflowBoundaryValidation.cjs +2 -0
  84. package/lib/cjs/nest/graph/GraphWorkflowBoundaryValidation.cjs.map +1 -1
  85. package/lib/cjs/nest/graph/GraphWorkflowService.cjs +1 -13
  86. package/lib/cjs/nest/graph/GraphWorkflowService.cjs.map +1 -1
  87. package/lib/esm/graph/engine/catalog/GraphBuiltInRegistrations.js +11 -72
  88. package/lib/esm/graph/engine/catalog/GraphBuiltInRegistrations.js.map +1 -1
  89. package/lib/esm/graph/engine/execution/GraphExecutionContext.js +5 -1
  90. package/lib/esm/graph/engine/execution/GraphExecutionContext.js.map +1 -1
  91. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +66 -1
  92. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js.map +1 -1
  93. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +16 -0
  94. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js.map +1 -1
  95. package/lib/esm/graph/engine/execution/index.js +0 -4
  96. package/lib/esm/graph/engine/execution/index.js.map +1 -1
  97. package/lib/esm/graph/engine/index.js +0 -7
  98. package/lib/esm/graph/engine/index.js.map +1 -1
  99. package/lib/esm/graph/engine/loops/index.js +0 -3
  100. package/lib/esm/graph/engine/loops/index.js.map +1 -1
  101. package/lib/esm/graph/engine/validation/GraphLooseNodeValidation.js +32 -0
  102. package/lib/esm/graph/engine/validation/GraphLooseNodeValidation.js.map +1 -0
  103. package/lib/esm/graph/engine/validation/GraphParameterValidator.js +36 -3
  104. package/lib/esm/graph/engine/validation/GraphParameterValidator.js.map +1 -1
  105. package/lib/esm/graph/engine/validation/GraphWorkflowDocumentValidator.js +32 -1
  106. package/lib/esm/graph/engine/validation/GraphWorkflowDocumentValidator.js.map +1 -1
  107. package/lib/esm/graph/engine/validation/index.js +1 -0
  108. package/lib/esm/graph/engine/validation/index.js.map +1 -1
  109. package/lib/esm/graph/nodes/agents/agent.js +109 -0
  110. package/lib/esm/graph/nodes/agents/agent.js.map +1 -0
  111. package/lib/esm/graph/nodes/base.js +56 -0
  112. package/lib/esm/graph/nodes/base.js.map +1 -0
  113. package/lib/esm/graph/nodes/boundary/input-value.js +50 -0
  114. package/lib/esm/graph/nodes/boundary/input-value.js.map +1 -0
  115. package/lib/esm/graph/nodes/flow-control/break.js +62 -0
  116. package/lib/esm/graph/nodes/flow-control/break.js.map +1 -0
  117. package/lib/esm/graph/nodes/flow-control/error-boundary.js +63 -0
  118. package/lib/esm/graph/nodes/flow-control/error-boundary.js.map +1 -0
  119. package/lib/esm/graph/nodes/flow-control/human-approval.js +71 -0
  120. package/lib/esm/graph/nodes/flow-control/human-approval.js.map +1 -0
  121. package/lib/esm/graph/nodes/flow-control/if.js +73 -0
  122. package/lib/esm/graph/nodes/flow-control/if.js.map +1 -0
  123. package/lib/esm/graph/nodes/flow-control/parallel.js +60 -0
  124. package/lib/esm/graph/nodes/flow-control/parallel.js.map +1 -0
  125. package/lib/esm/graph/nodes/flow-control/switch.js +181 -0
  126. package/lib/esm/graph/nodes/flow-control/switch.js.map +1 -0
  127. package/lib/esm/graph/nodes/index.js +144 -0
  128. package/lib/esm/graph/nodes/index.js.map +1 -0
  129. package/lib/esm/graph/nodes/loops/foreach.js +180 -0
  130. package/lib/esm/graph/nodes/loops/foreach.js.map +1 -0
  131. package/lib/esm/graph/nodes/loops/loop-metadata.js +44 -0
  132. package/lib/esm/graph/nodes/loops/loop-metadata.js.map +1 -0
  133. package/lib/esm/graph/nodes/loops/until.js +127 -0
  134. package/lib/esm/graph/nodes/loops/until.js.map +1 -0
  135. package/lib/esm/graph/nodes/loops/while.js +124 -0
  136. package/lib/esm/graph/nodes/loops/while.js.map +1 -0
  137. package/lib/esm/graph/nodes/manifests.js +338 -0
  138. package/lib/esm/graph/nodes/manifests.js.map +1 -0
  139. package/lib/esm/graph/nodes/triggers/chat.js +73 -0
  140. package/lib/esm/graph/nodes/triggers/chat.js.map +1 -0
  141. package/lib/esm/graph/nodes/triggers/event.js +54 -0
  142. package/lib/esm/graph/nodes/triggers/event.js.map +1 -0
  143. package/lib/esm/graph/nodes/triggers/form.js +55 -0
  144. package/lib/esm/graph/nodes/triggers/form.js.map +1 -0
  145. package/lib/esm/graph/nodes/triggers/manual.js +56 -0
  146. package/lib/esm/graph/nodes/triggers/manual.js.map +1 -0
  147. package/lib/esm/graph/nodes/triggers/schedule.js +56 -0
  148. package/lib/esm/graph/nodes/triggers/schedule.js.map +1 -0
  149. package/lib/esm/graph/nodes/triggers/webhook.js +58 -0
  150. package/lib/esm/graph/nodes/triggers/webhook.js.map +1 -0
  151. package/lib/esm/graph/nodes/utility/code.js +130 -0
  152. package/lib/esm/graph/nodes/utility/code.js.map +1 -0
  153. package/lib/esm/graph/nodes/utility/delay.js +57 -0
  154. package/lib/esm/graph/nodes/utility/delay.js.map +1 -0
  155. package/lib/esm/graph/nodes/utility/log.js +61 -0
  156. package/lib/esm/graph/nodes/utility/log.js.map +1 -0
  157. package/lib/esm/graph/nodes/utility/map.js +60 -0
  158. package/lib/esm/graph/nodes/utility/map.js.map +1 -0
  159. package/lib/esm/graph/nodes/utility/merge.js +58 -0
  160. package/lib/esm/graph/nodes/utility/merge.js.map +1 -0
  161. package/lib/esm/graph/nodes/utility/return.js +60 -0
  162. package/lib/esm/graph/nodes/utility/return.js.map +1 -0
  163. package/lib/esm/graph/nodes/utility/utility-log.js +68 -0
  164. package/lib/esm/graph/nodes/utility/utility-log.js.map +1 -0
  165. package/lib/esm/index.js +3 -3
  166. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +8 -4
  167. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js.map +1 -1
  168. package/lib/esm/nest/graph/GraphWorkflowBoundaryValidation.js +2 -0
  169. package/lib/esm/nest/graph/GraphWorkflowBoundaryValidation.js.map +1 -1
  170. package/lib/esm/nest/graph/GraphWorkflowService.js +2 -14
  171. package/lib/esm/nest/graph/GraphWorkflowService.js.map +1 -1
  172. package/lib/types/graph/engine/catalog/GraphBuiltInRegistrations.d.cts +4 -7
  173. package/lib/types/graph/engine/catalog/GraphBuiltInRegistrations.d.mts +4 -7
  174. package/lib/types/graph/engine/execution/GraphExecutionContext.d.cts +6 -1
  175. package/lib/types/graph/engine/execution/GraphExecutionContext.d.mts +6 -1
  176. package/lib/types/graph/engine/execution/GraphExecutionEngine.d.cts +27 -0
  177. package/lib/types/graph/engine/execution/GraphExecutionEngine.d.mts +27 -0
  178. package/lib/types/graph/engine/execution/GraphExecutionFrame.d.cts +12 -0
  179. package/lib/types/graph/engine/execution/GraphExecutionFrame.d.mts +12 -0
  180. package/lib/types/graph/engine/execution/index.d.cts +0 -4
  181. package/lib/types/graph/engine/execution/index.d.mts +0 -4
  182. package/lib/types/graph/engine/index.d.cts +0 -7
  183. package/lib/types/graph/engine/index.d.mts +0 -7
  184. package/lib/types/graph/engine/loops/index.d.cts +0 -3
  185. package/lib/types/graph/engine/loops/index.d.mts +0 -3
  186. package/lib/types/graph/engine/validation/GraphLooseNodeValidation.d.cts +21 -0
  187. package/lib/types/graph/engine/validation/GraphLooseNodeValidation.d.mts +21 -0
  188. package/lib/types/graph/engine/validation/GraphParameterValidator.d.cts +25 -1
  189. package/lib/types/graph/engine/validation/GraphParameterValidator.d.mts +25 -1
  190. package/lib/types/graph/engine/validation/index.d.cts +1 -0
  191. package/lib/types/graph/engine/validation/index.d.mts +1 -0
  192. package/lib/types/graph/nodes/agents/agent.d.cts +31 -0
  193. package/lib/types/graph/nodes/agents/agent.d.mts +31 -0
  194. package/lib/types/graph/nodes/base.d.cts +58 -0
  195. package/lib/types/graph/nodes/base.d.mts +58 -0
  196. package/lib/types/graph/nodes/boundary/input-value.d.cts +6 -0
  197. package/lib/types/graph/nodes/boundary/input-value.d.mts +6 -0
  198. package/lib/types/graph/nodes/flow-control/break.d.cts +8 -0
  199. package/lib/types/graph/nodes/flow-control/break.d.mts +8 -0
  200. package/lib/types/graph/nodes/flow-control/error-boundary.d.cts +8 -0
  201. package/lib/types/graph/nodes/flow-control/error-boundary.d.mts +8 -0
  202. package/lib/types/graph/nodes/flow-control/human-approval.d.cts +8 -0
  203. package/lib/types/graph/nodes/flow-control/human-approval.d.mts +8 -0
  204. package/lib/types/graph/nodes/flow-control/if.d.cts +8 -0
  205. package/lib/types/graph/nodes/flow-control/if.d.mts +8 -0
  206. package/lib/types/graph/nodes/flow-control/parallel.d.cts +7 -0
  207. package/lib/types/graph/nodes/flow-control/parallel.d.mts +7 -0
  208. package/lib/types/graph/nodes/flow-control/switch.d.cts +23 -0
  209. package/lib/types/graph/nodes/flow-control/switch.d.mts +23 -0
  210. package/lib/types/graph/nodes/index.d.cts +93 -0
  211. package/lib/types/graph/nodes/index.d.mts +93 -0
  212. package/lib/types/graph/nodes/loops/foreach.d.cts +11 -0
  213. package/lib/types/graph/nodes/loops/foreach.d.mts +11 -0
  214. package/lib/types/graph/nodes/loops/loop-metadata.d.cts +20 -0
  215. package/lib/types/graph/nodes/loops/loop-metadata.d.mts +20 -0
  216. package/lib/types/graph/nodes/loops/until.d.cts +8 -0
  217. package/lib/types/graph/nodes/loops/until.d.mts +8 -0
  218. package/lib/types/graph/nodes/loops/while.d.cts +8 -0
  219. package/lib/types/graph/nodes/loops/while.d.mts +8 -0
  220. package/lib/types/graph/nodes/manifests.d.cts +62 -0
  221. package/lib/types/graph/nodes/manifests.d.mts +62 -0
  222. package/lib/types/graph/nodes/triggers/chat.d.cts +8 -0
  223. package/lib/types/graph/nodes/triggers/chat.d.mts +8 -0
  224. package/lib/types/graph/nodes/triggers/event.d.cts +6 -0
  225. package/lib/types/graph/nodes/triggers/event.d.mts +6 -0
  226. package/lib/types/graph/nodes/triggers/form.d.cts +6 -0
  227. package/lib/types/graph/nodes/triggers/form.d.mts +6 -0
  228. package/lib/types/graph/nodes/triggers/manual.d.cts +6 -0
  229. package/lib/types/graph/nodes/triggers/manual.d.mts +6 -0
  230. package/lib/types/graph/nodes/triggers/schedule.d.cts +6 -0
  231. package/lib/types/graph/nodes/triggers/schedule.d.mts +6 -0
  232. package/lib/types/graph/nodes/triggers/webhook.d.cts +6 -0
  233. package/lib/types/graph/nodes/triggers/webhook.d.mts +6 -0
  234. package/lib/types/graph/nodes/utility/code.d.cts +36 -0
  235. package/lib/types/graph/nodes/utility/code.d.mts +36 -0
  236. package/lib/types/graph/nodes/utility/delay.d.cts +7 -0
  237. package/lib/types/graph/nodes/utility/delay.d.mts +7 -0
  238. package/lib/types/graph/nodes/utility/log.d.cts +8 -0
  239. package/lib/types/graph/nodes/utility/log.d.mts +8 -0
  240. package/lib/types/graph/nodes/utility/map.d.cts +7 -0
  241. package/lib/types/graph/nodes/utility/map.d.mts +7 -0
  242. package/lib/types/graph/nodes/utility/merge.d.cts +7 -0
  243. package/lib/types/graph/nodes/utility/merge.d.mts +7 -0
  244. package/lib/types/graph/nodes/utility/return.d.cts +7 -0
  245. package/lib/types/graph/nodes/utility/return.d.mts +7 -0
  246. package/lib/types/graph/nodes/utility/utility-log.d.cts +10 -0
  247. package/lib/types/graph/nodes/utility/utility-log.d.mts +10 -0
  248. package/lib/types/index.d.cts +2 -2
  249. package/lib/types/index.d.mts +2 -2
  250. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +5 -3
  251. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +5 -3
  252. package/package.json +1 -1
  253. package/lib/cjs/graph/engine/execution/BreakGraphNodeExecutor.cjs +0 -24
  254. package/lib/cjs/graph/engine/execution/BreakGraphNodeExecutor.cjs.map +0 -1
  255. package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs +0 -103
  256. package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs.map +0 -1
  257. package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs +0 -47
  258. package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs.map +0 -1
  259. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +0 -121
  260. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs.map +0 -1
  261. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +0 -146
  262. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs.map +0 -1
  263. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +0 -102
  264. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs.map +0 -1
  265. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +0 -103
  266. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs.map +0 -1
  267. package/lib/esm/graph/engine/execution/BreakGraphNodeExecutor.js +0 -19
  268. package/lib/esm/graph/engine/execution/BreakGraphNodeExecutor.js.map +0 -1
  269. package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js +0 -98
  270. package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js.map +0 -1
  271. package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js +0 -42
  272. package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js.map +0 -1
  273. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +0 -116
  274. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js.map +0 -1
  275. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +0 -141
  276. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js.map +0 -1
  277. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +0 -97
  278. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js.map +0 -1
  279. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +0 -98
  280. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js.map +0 -1
  281. package/lib/types/graph/engine/execution/BreakGraphNodeExecutor.d.cts +0 -22
  282. package/lib/types/graph/engine/execution/BreakGraphNodeExecutor.d.mts +0 -22
  283. package/lib/types/graph/engine/execution/CodeGraphNodeExecutor.d.cts +0 -65
  284. package/lib/types/graph/engine/execution/CodeGraphNodeExecutor.d.mts +0 -65
  285. package/lib/types/graph/engine/execution/LogGraphNodeExecutor.d.cts +0 -25
  286. package/lib/types/graph/engine/execution/LogGraphNodeExecutor.d.mts +0 -25
  287. package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.cts +0 -43
  288. package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.mts +0 -43
  289. package/lib/types/graph/engine/loops/ForeachGraphNodeExecutor.d.cts +0 -35
  290. package/lib/types/graph/engine/loops/ForeachGraphNodeExecutor.d.mts +0 -35
  291. package/lib/types/graph/engine/loops/UntilGraphNodeExecutor.d.cts +0 -22
  292. package/lib/types/graph/engine/loops/UntilGraphNodeExecutor.d.mts +0 -22
  293. package/lib/types/graph/engine/loops/WhileGraphNodeExecutor.d.cts +0 -26
  294. package/lib/types/graph/engine/loops/WhileGraphNodeExecutor.d.mts +0 -26
@@ -0,0 +1,181 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ /**
11
+ * @module integrations/graph/nodes/flow-control/switch
12
+ * @summary Switch flow-control node declaration (DECAF-32 §22.2.2).
13
+ * @description Switch — multi-branch. Routes the input to one of the case
14
+ * output ports or `default` based on matching conditions. Each case defines
15
+ * a `SwitchCaseCondition` (graphical or code mode) and a dedicated output
16
+ * port. Cases are stored in `metadata.switch.cases` and the renderer creates
17
+ * dynamic output ports from them (DECAF-32 §22.2.2).
18
+ *
19
+ * The node grows in height as cases are added. Each case gets its own
20
+ * output port on the right side, labeled with the case label.
21
+ */
22
+ import { model, required } from "@decaf-ts/decorator-validation";
23
+ import { uielement } from "@decaf-ts/ui-decorators";
24
+ import { input, node, output, } from "@decaf-ts/ui-decorators/graph";
25
+ import { PortDirection, graphNodeSizeOf, } from "@decaf-ts/ui-decorators/graph";
26
+ import { graphDefinitionOf } from "@decaf-ts/ui-decorators/graph";
27
+ import { GraphNode } from "./../base.js";
28
+ import { GraphExecutionError } from "./../../engine/errors/GraphExecutionError.js";
29
+ import { ConditionExpressionEvaluator } from "./../../engine/loops/ConditionExpressionEvaluator.js";
30
+ function readSwitchMetadata(context) {
31
+ const parameters = (context.node.parameters ?? {});
32
+ const metadata = context.node.metadata;
33
+ const raw = parameters["switch"] ?? metadata?.["switch"];
34
+ const switchMeta = raw;
35
+ if (!switchMeta || !Array.isArray(switchMeta.cases)) {
36
+ return { cases: [], defaultPort: "default", hasDefault: false };
37
+ }
38
+ return {
39
+ cases: switchMeta.cases,
40
+ defaultPort: switchMeta.defaultPort ?? "default",
41
+ hasDefault: switchMeta.hasDefault === true,
42
+ };
43
+ }
44
+ function isCodeCondition(cond) {
45
+ return (typeof cond === "object" && cond !== null && "type" in cond && cond.type === "code");
46
+ }
47
+ function isConditionExpression(cond) {
48
+ return (typeof cond === "object" && cond !== null && "op" in cond && typeof cond.op === "string");
49
+ }
50
+ async function evaluateSwitchCondition(condition, inputValue, fullInput, context) {
51
+ if (isCodeCondition(condition)) {
52
+ const evaluator = context.engine?.codeSandboxEvaluator;
53
+ if (!evaluator) {
54
+ throw new GraphExecutionError("Code conditions require a CodeSandboxEvaluator to be registered in GraphExecutionEngineConfig.codeSandboxEvaluator", "GRAPH_CODE_SANDBOX_NOT_CONFIGURED", { code: condition.code });
55
+ }
56
+ await context.log("Evaluating code condition", {
57
+ language: condition.language ?? "javascript",
58
+ });
59
+ const md = context.metadata;
60
+ const result = await evaluator.evaluate({
61
+ code: condition.code,
62
+ language: condition.language,
63
+ input: fullInput,
64
+ vars: md?.vars ?? undefined,
65
+ item: md?.item,
66
+ index: md?.index,
67
+ nodes: md?.nodes ??
68
+ undefined,
69
+ logger: context.logger,
70
+ });
71
+ return !!result;
72
+ }
73
+ if (isConditionExpression(condition)) {
74
+ return new ConditionExpressionEvaluator().evaluate(condition, inputValue);
75
+ }
76
+ throw new GraphExecutionError("Unknown switch case condition type — must be ConditionExpression (op) or CodeCondition (type: 'code')", "GRAPH_UNKNOWN_SWITCH_CONDITION", { condition });
77
+ }
78
+ let SwitchFlowNode = class SwitchFlowNode extends GraphNode {
79
+ static async execute(request, context) {
80
+ const meta = readSwitchMetadata(context);
81
+ const input = request.inputs;
82
+ const inputValue = input["value"] ?? input;
83
+ for (const switchCase of meta.cases) {
84
+ const matches = await evaluateSwitchCondition(switchCase.condition, inputValue, input, context);
85
+ if (matches) {
86
+ return { [switchCase.outputPort]: inputValue };
87
+ }
88
+ }
89
+ if (meta.hasDefault !== true) {
90
+ throw new GraphExecutionError("No switch case matched and default port is not enabled", "GRAPH_SWITCH_NO_MATCH", { cases: meta.cases.map((c) => c.id) });
91
+ }
92
+ const defaultPort = meta.defaultPort ?? "default";
93
+ return { [defaultPort]: inputValue };
94
+ }
95
+ /**
96
+ * Computes the node's ports, size, and data patch from the given switch
97
+ * metadata. Each case gets its own output port on the right side; the
98
+ * `default` port always renders **last** (DECAF-32 §21 port-ordering rule,
99
+ * DECAF-34 §6.2). When `hasDefault` is `false`, the `default` output port
100
+ * is omitted entirely. The node grows in height as cases are added.
101
+ *
102
+ * @param meta - The switch metadata patch (`metadata.switch`), carrying
103
+ * the cases and the optional default-port configuration.
104
+ * @returns The computed {@link NodeMetadataChange}: reordered ports
105
+ * (case outputs inserted before the optional default), the grown size,
106
+ * and the `switchMetadata` data patch.
107
+ */
108
+ static applyMetadata(meta) {
109
+ const definition = graphDefinitionOf(this);
110
+ const defaultPortName = meta.defaultPort ?? "default";
111
+ const hasDefault = meta.hasDefault === true;
112
+ // Base ports excluding any port that collides with a case output port.
113
+ const basePorts = definition.ports.filter((p) => !meta.cases.some((c) => c.outputPort === p.property));
114
+ // Separate the default output port so it can be placed last (or omitted).
115
+ const nonDefaultPorts = basePorts.filter((p) => p.property !== defaultPortName);
116
+ const defaultPort = basePorts.find((p) => p.property === defaultPortName);
117
+ const casePorts = meta.cases.map((c) => ({
118
+ property: c.outputPort,
119
+ name: c.label,
120
+ direction: PortDirection.OUTPUT,
121
+ label: c.label,
122
+ required: false,
123
+ hidden: false,
124
+ path: c.outputPort,
125
+ }));
126
+ // Port order: inputs/non-default outputs first, case outputs next, default last.
127
+ const ports = [...nonDefaultPorts, ...casePorts];
128
+ if (hasDefault && defaultPort) {
129
+ ports.push(defaultPort);
130
+ }
131
+ const caseCount = meta.cases.length;
132
+ return {
133
+ ports,
134
+ size: graphNodeSizeOf(definition, { cases: caseCount }),
135
+ dataPatch: { switchMetadata: meta },
136
+ };
137
+ }
138
+ };
139
+ __decorate([
140
+ required(),
141
+ uielement("textarea", { label: "Input value", placeholder: "Value to switch on" }),
142
+ input({ handle: "value" }),
143
+ __metadata("design:type", Object)
144
+ ], SwitchFlowNode.prototype, "value", void 0);
145
+ __decorate([
146
+ required(),
147
+ uielement("input", { label: "Default", placeholder: "Default output when no case matches" }),
148
+ output({ handle: "default" }),
149
+ __metadata("design:type", Object)
150
+ ], SwitchFlowNode.prototype, "default", void 0);
151
+ SwitchFlowNode = __decorate([
152
+ node("core.flow.switch", {
153
+ kind: "core.flow.switch",
154
+ category: "Flow Control",
155
+ color: "#f59e0b",
156
+ icon: "ti-arrows-shuffle",
157
+ width: 120,
158
+ height: 140,
159
+ sizeRules: [
160
+ {
161
+ type: "parameterCount",
162
+ parameter: "cases",
163
+ dimension: "height",
164
+ perItem: 24,
165
+ },
166
+ ],
167
+ labels: ["flow", "switch", "multi-branch"],
168
+ metadata: {
169
+ title: "Switch",
170
+ description: "Multi-branch switch. Routes the input to the first matching case output, or the default output.",
171
+ switch: {
172
+ cases: [],
173
+ defaultPort: "default",
174
+ hasDefault: false,
175
+ },
176
+ },
177
+ }),
178
+ model()
179
+ ], SwitchFlowNode);
180
+ export { SwitchFlowNode };
181
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../../../src/graph/nodes/flow-control/switch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * @module integrations/graph/nodes
3
+ * @summary Shared node kind declarations (DECAF-32 §22.2, DECAF-50 Phase A).
4
+ * @description Canonical `@node`-decorated classes for the ALFRED-5 node kind
5
+ * taxonomy, laid out one node per file under `nodes/<category>/<node>.ts`:
6
+ * triggers (§22.2.1), flow-control and utility nodes (§22.2.2–22.2.3), the
7
+ * Agent node (§21.3), the three loop kinds (`core.loop.foreach/while/until`,
8
+ * §5.9), and the workflow input-value boundary node. Shared non-node support
9
+ * (the base class and manifests) lives in sibling files under the same tree;
10
+ * category styles remain in `@decaf-ts/ui-decorators` (`graph/category-styles`).
11
+ * Consumers (for-angular, ALFRED, etc.) import these declarations
12
+ * to populate node palettes, registries, and reference snapshots.
13
+ */
14
+ export * from "./base.js";
15
+ export * from "./flow-control/break.js";
16
+ export * from "./flow-control/error-boundary.js";
17
+ export * from "./flow-control/human-approval.js";
18
+ export * from "./flow-control/if.js";
19
+ export * from "./flow-control/parallel.js";
20
+ export * from "./flow-control/switch.js";
21
+ export * from "./utility/code.js";
22
+ export * from "./utility/delay.js";
23
+ export * from "./utility/log.js";
24
+ export * from "./utility/map.js";
25
+ export * from "./utility/merge.js";
26
+ export * from "./utility/return.js";
27
+ export * from "./utility/utility-log.js";
28
+ export * from "./triggers/chat.js";
29
+ export * from "./triggers/event.js";
30
+ export * from "./triggers/form.js";
31
+ export * from "./triggers/manual.js";
32
+ export * from "./triggers/schedule.js";
33
+ export * from "./triggers/webhook.js";
34
+ export * from "./agents/agent.js";
35
+ export * from "./loops/foreach.js";
36
+ export * from "./loops/until.js";
37
+ export * from "./loops/while.js";
38
+ import { AgentNode } from "./agents/agent.js";
39
+ export * from "./boundary/input-value.js";
40
+ export * from "./manifests.js";
41
+ import { BreakFlowNode } from "./flow-control/break.js";
42
+ import { ErrorBoundaryFlowNode } from "./flow-control/error-boundary.js";
43
+ import { HumanApprovalFlowNode } from "./flow-control/human-approval.js";
44
+ import { IfFlowNode } from "./flow-control/if.js";
45
+ import { ParallelFlowNode } from "./flow-control/parallel.js";
46
+ import { SwitchFlowNode } from "./flow-control/switch.js";
47
+ import { CodeNode } from "./utility/code.js";
48
+ import { DelayFlowNode } from "./utility/delay.js";
49
+ import { LogFlowNode } from "./utility/log.js";
50
+ import { MapNode } from "./utility/map.js";
51
+ import { MergeFlowNode } from "./utility/merge.js";
52
+ import { ReturnFlowNode } from "./utility/return.js";
53
+ import { UtilityLogNode } from "./utility/utility-log.js";
54
+ import { ChatTriggerNode } from "./triggers/chat.js";
55
+ import { EventTriggerNode } from "./triggers/event.js";
56
+ import { FormTriggerNode } from "./triggers/form.js";
57
+ import { ManualTriggerNode } from "./triggers/manual.js";
58
+ import { ScheduleTriggerNode } from "./triggers/schedule.js";
59
+ import { WebhookTriggerNode } from "./triggers/webhook.js";
60
+ import { GraphForeachLoopNode } from "./loops/foreach.js";
61
+ import { GraphUntilLoopNode } from "./loops/until.js";
62
+ import { GraphWhileLoopNode } from "./loops/while.js";
63
+ import { GraphInputValueNode } from "./boundary/input-value.js";
64
+ /**
65
+ * All built-in trigger node constructors.
66
+ */
67
+ export const GRAPH_TRIGGER_NODES = [
68
+ ManualTriggerNode,
69
+ WebhookTriggerNode,
70
+ ScheduleTriggerNode,
71
+ EventTriggerNode,
72
+ FormTriggerNode,
73
+ ChatTriggerNode,
74
+ ];
75
+ /**
76
+ * All built-in flow-control node constructors (branching/routing/looping/
77
+ * termination semantics).
78
+ */
79
+ export const GRAPH_FLOW_CONTROL_NODES = [
80
+ IfFlowNode,
81
+ SwitchFlowNode,
82
+ ParallelFlowNode,
83
+ MergeFlowNode,
84
+ DelayFlowNode,
85
+ ErrorBoundaryFlowNode,
86
+ HumanApprovalFlowNode,
87
+ ReturnFlowNode,
88
+ LogFlowNode,
89
+ BreakFlowNode,
90
+ ];
91
+ /**
92
+ * All built-in utility node constructors (side-effect/data-transformation
93
+ * semantics — no branching).
94
+ */
95
+ export const GRAPH_UTILITY_NODES = [
96
+ CodeNode,
97
+ MapNode,
98
+ UtilityLogNode,
99
+ ];
100
+ /**
101
+ * All built-in loop node constructors (shared declarations of the
102
+ * `core.loop.*` system kinds).
103
+ */
104
+ export const GRAPH_LOOP_NODES = [
105
+ GraphForeachLoopNode,
106
+ GraphWhileLoopNode,
107
+ GraphUntilLoopNode,
108
+ ];
109
+ /**
110
+ * All built-in boundary node constructors.
111
+ */
112
+ export const GRAPH_BOUNDARY_NODES = [GraphInputValueNode];
113
+ /**
114
+ * Kind→class map for every built-in node kind the backend executes
115
+ * (DECAF-50 §4.26 R2-1). The catalogue derives each registration's
116
+ * manifest and executor from the class, so this is the single authority for
117
+ * built-in node behaviour.
118
+ */
119
+ export const GRAPH_BUILT_IN_NODE_CLASSES_BY_KIND = {
120
+ "core.trigger.manual": ManualTriggerNode,
121
+ "core.trigger.webhook": WebhookTriggerNode,
122
+ "core.trigger.schedule": ScheduleTriggerNode,
123
+ "core.trigger.event": EventTriggerNode,
124
+ "core.trigger.form": FormTriggerNode,
125
+ "core.trigger.chat": ChatTriggerNode,
126
+ "core.flow.if": IfFlowNode,
127
+ "core.flow.switch": SwitchFlowNode,
128
+ "core.flow.parallel": ParallelFlowNode,
129
+ "core.flow.merge": MergeFlowNode,
130
+ "core.utility.map": MapNode,
131
+ "core.flow.delay": DelayFlowNode,
132
+ "core.flow.errorBoundary": ErrorBoundaryFlowNode,
133
+ "core.flow.humanApproval": HumanApprovalFlowNode,
134
+ "core.flow.return": ReturnFlowNode,
135
+ "core.utility.code": CodeNode,
136
+ "core.flow.log": LogFlowNode,
137
+ "core.utility.log": UtilityLogNode,
138
+ "core.flow.break": BreakFlowNode,
139
+ "core.agent": AgentNode,
140
+ "core.loop.foreach": GraphForeachLoopNode,
141
+ "core.loop.while": GraphWhileLoopNode,
142
+ "core.loop.until": GraphUntilLoopNode,
143
+ };
144
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/graph/nodes/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ /**
11
+ * @module integrations/graph/nodes/loops/foreach
12
+ * @summary Foreach loop node declaration.
13
+ * @description Shared declaration for the `core.loop.foreach` system node
14
+ * kind (decorator id `graph-foreach-loop-node`), ported from the for-angular
15
+ * demo app so the loop kinds become shared canvas nodes. The class's own
16
+ * `static execute` is the only implementation of the kind, derived by
17
+ * `GraphBuiltInRegistrations`, and reaches engine services through
18
+ * `GraphExecutionContext.engine`. The loop-body workflow is demo/app-side
19
+ * content and is not part of the shared declaration — the shared class
20
+ * carries the port/metadata shape only.
21
+ */
22
+ import { model, required } from "@decaf-ts/decorator-validation";
23
+ import { uielement } from "@decaf-ts/ui-decorators";
24
+ import { connection, input, node, output } from "@decaf-ts/ui-decorators/graph";
25
+ import { GraphNode } from "./../base.js";
26
+ import { GraphExecutionEventType } from "@decaf-ts/ui-decorators/graph";
27
+ import { GraphExecutionError } from "./../../engine/errors/GraphExecutionError.js";
28
+ import { GraphInputError } from "./../../engine/errors/GraphInputError.js";
29
+ import { GraphLoopLimitError } from "./../../engine/errors/GraphLoopLimitError.js";
30
+ import { extractLoopMetadata } from "./loop-metadata.js";
31
+ import { GRAPH_DEFAULT_MAX_FOREACH_ITERATIONS } from "./../../engine/constants.js";
32
+ import { GraphBreakSignal } from "./../../engine/errors/GraphBreakSignal.js";
33
+ let GraphForeachLoopNode = class GraphForeachLoopNode extends GraphNode {
34
+ static async execute(request, context) {
35
+ const metadata = extractLoopMetadata(context, "foreach");
36
+ const input = request.inputs;
37
+ const items = input.items;
38
+ const maxIterations = metadata.maxIterations ?? GRAPH_DEFAULT_MAX_FOREACH_ITERATIONS;
39
+ if (!Array.isArray(items)) {
40
+ throw new GraphInputError("foreach input 'items' must be an array");
41
+ }
42
+ const engine = context.engine;
43
+ if (!engine) {
44
+ throw new GraphExecutionError("foreach node requires engine access", "GRAPH_ENGINE_NOT_AVAILABLE");
45
+ }
46
+ const sliceRaw = Number(input.slice ?? metadata.slice ?? 1);
47
+ const slice = Number.isFinite(sliceRaw) && sliceRaw > 0 ? Math.floor(sliceRaw) : 1;
48
+ const iterations = slice > 1 ? Math.ceil(items.length / slice) : items.length;
49
+ if (iterations > maxIterations) {
50
+ throw new GraphLoopLimitError(`foreach exceeded max iterations (${iterations} > ${maxIterations})`);
51
+ }
52
+ const itemPort = metadata.itemPort ?? "item";
53
+ const resultPort = metadata.resultPort ?? "result";
54
+ const statePort = metadata.statePort ?? "state";
55
+ const bodyWorkflow = metadata.body;
56
+ const results = [];
57
+ let state = input.state;
58
+ let broken = false;
59
+ await context.emit({ type: GraphExecutionEventType.LOOP_STARTED });
60
+ for (let i = 0; i < iterations; i++) {
61
+ await context.emit({
62
+ type: GraphExecutionEventType.LOOP_ITERATION_STARTED,
63
+ iteration: i,
64
+ });
65
+ const sliceItems = slice > 1 ? items.slice(i * slice, i * slice + slice) : items[i];
66
+ const childInputs = {
67
+ [itemPort]: sliceItems,
68
+ index: i,
69
+ };
70
+ if (slice > 1)
71
+ childInputs["slice"] = sliceItems;
72
+ if (state !== undefined)
73
+ childInputs[statePort] = state;
74
+ try {
75
+ const childResult = await engine.execute(bodyWorkflow, childInputs, {
76
+ parentRunId: context.runId,
77
+ path: [...context.path, `iteration:${i}`],
78
+ metadata: { item: sliceItems, index: i, slice },
79
+ });
80
+ results.push(childResult.outputs[resultPort]);
81
+ if (childResult.outputs[statePort] !== undefined) {
82
+ state = childResult.outputs[statePort];
83
+ }
84
+ }
85
+ catch (err) {
86
+ if (err instanceof GraphBreakSignal) {
87
+ const carried = err.details
88
+ ?.value;
89
+ if (carried !== undefined)
90
+ results.push(carried);
91
+ broken = true;
92
+ await context.emit({
93
+ type: GraphExecutionEventType.LOOP_ITERATION_COMPLETED,
94
+ iteration: i,
95
+ metadata: { broken: true },
96
+ });
97
+ break;
98
+ }
99
+ throw err;
100
+ }
101
+ await context.emit({
102
+ type: GraphExecutionEventType.LOOP_ITERATION_COMPLETED,
103
+ iteration: i,
104
+ });
105
+ }
106
+ await context.emit({
107
+ type: GraphExecutionEventType.LOOP_COMPLETED,
108
+ metadata: { broken },
109
+ });
110
+ const output = {
111
+ results,
112
+ completed: results,
113
+ iterations: results.length,
114
+ broken,
115
+ };
116
+ if (state !== undefined)
117
+ output[statePort] = state;
118
+ return output;
119
+ }
120
+ };
121
+ __decorate([
122
+ required(),
123
+ uielement("textarea", {
124
+ label: "Items",
125
+ placeholder: "Array to iterate over",
126
+ }),
127
+ input({ handle: "items" }),
128
+ __metadata("design:type", Array)
129
+ ], GraphForeachLoopNode.prototype, "items", void 0);
130
+ __decorate([
131
+ required(),
132
+ uielement("input", {
133
+ label: "Slice size",
134
+ placeholder: "Items per iteration (default 1)",
135
+ }),
136
+ input({ handle: "slice" }),
137
+ __metadata("design:type", Number)
138
+ ], GraphForeachLoopNode.prototype, "slice", void 0);
139
+ __decorate([
140
+ required(),
141
+ output({ handle: "item" }),
142
+ __metadata("design:type", Object)
143
+ ], GraphForeachLoopNode.prototype, "item", void 0);
144
+ __decorate([
145
+ required(),
146
+ connection({
147
+ handle: "loop",
148
+ connectionRules: { allowSelf: true, maxConnections: 1 },
149
+ }),
150
+ __metadata("design:type", Object)
151
+ ], GraphForeachLoopNode.prototype, "loop", void 0);
152
+ __decorate([
153
+ required(),
154
+ output({ handle: "completed" }),
155
+ __metadata("design:type", Array)
156
+ ], GraphForeachLoopNode.prototype, "completed", void 0);
157
+ GraphForeachLoopNode = __decorate([
158
+ node("graph-foreach-loop-node", {
159
+ kind: "core.loop.foreach",
160
+ category: "Loop",
161
+ color: "#eab308",
162
+ icon: "ti-repeat",
163
+ width: 120,
164
+ height: 140,
165
+ labels: ["loop", "iteration", "foreach"],
166
+ metadata: {
167
+ title: "Foreach loop",
168
+ description: "Iterates over an array input and executes the body once per item (or per slice of items).",
169
+ loop: {
170
+ maxIterations: 100,
171
+ itemPort: "item",
172
+ resultPort: "result",
173
+ slice: 1,
174
+ },
175
+ },
176
+ }),
177
+ model()
178
+ ], GraphForeachLoopNode);
179
+ export { GraphForeachLoopNode };
180
+ //# sourceMappingURL=foreach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foreach.js","sourceRoot":"","sources":["../../../../../src/graph/nodes/loops/foreach.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { GraphInputError } from "./../../engine/errors/GraphInputError.js";
2
+ /**
3
+ * Extracts the loop metadata for the executing loop node.
4
+ *
5
+ * @param context - The run-scoped execution context for the loop node.
6
+ * @param label - The loop kind label used in error messages.
7
+ * @returns The effective loop metadata (body, limits, ports, condition).
8
+ * @throws {GraphInputError} when the node carries no loop body configuration.
9
+ */
10
+ export function extractLoopMetadata(context, label) {
11
+ const instance = context.node;
12
+ const parameters = (instance.parameters ?? {});
13
+ const loop = instance.loop;
14
+ const fallback = context.metadata?.["loop"];
15
+ if (!loop?.body && !fallback?.["body"]) {
16
+ throw new GraphInputError(`${label} node is missing loop configuration (instance.loop.body)`);
17
+ }
18
+ const body = (loop?.body ?? fallback?.["body"]);
19
+ const number = (key) => {
20
+ const raw = parameters[key] ??
21
+ loop?.[key] ??
22
+ fallback?.[key];
23
+ const value = Number(raw);
24
+ return raw !== undefined && Number.isFinite(value) ? value : undefined;
25
+ };
26
+ const string = (key) => {
27
+ const raw = parameters[key] ?? fallback?.[key];
28
+ return typeof raw === "string" ? raw : undefined;
29
+ };
30
+ return {
31
+ body,
32
+ maxIterations: number("maxIterations"),
33
+ timeoutMs: number("timeoutMs"),
34
+ concurrency: number("concurrency"),
35
+ condition: (parameters["condition"] ?? fallback?.["condition"]),
36
+ inputPort: string("inputPort"),
37
+ outputPort: string("outputPort"),
38
+ itemPort: string("itemPort"),
39
+ resultPort: string("resultPort"),
40
+ statePort: string("statePort"),
41
+ slice: number("slice"),
42
+ };
43
+ }
44
+ //# sourceMappingURL=loop-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-metadata.js","sourceRoot":"","sources":["../../../../../src/graph/nodes/loops/loop-metadata.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,iDAA4C;AAEtE;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA8B,EAC9B,KAAa;IAEb,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9B,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAA4B,CAAC;IAC1E,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,QAAQ,GAAI,OAAO,CAAC,QAAgD,EAAE,CAC1E,MAAM,CACgC,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,eAAe,CACvB,GAAG,KAAK,0DAA0D,CACnE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,QAAQ,EAAE,CAAC,MAAM,CAAC,CAA8B,CAAC;IAC7E,MAAM,MAAM,GAAG,CAAC,GAAW,EAAsB,EAAE;QACjD,MAAM,GAAG,GACP,UAAU,CAAC,GAAG,CAAC;YACf,IAAI,EAAE,CAAC,GAAoD,CAAC;YAC5D,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;QAClB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,GAAW,EAAsB,EAAE;QACjD,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC,CAAC;IACF,OAAO;QACL,IAAI;QACJ,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;QAC9B,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;QAClC,SAAS,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,QAAQ,EAAE,CAAC,WAAW,CAAC,CAEjD;QACb,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;KACvB,CAAC;AACJ,CAAC"}