@decaf-ts/integrations 0.3.7 → 0.3.9

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 (417) hide show
  1. package/dist/integrations.cjs +3 -3
  2. package/dist/integrations.js +3 -3
  3. package/lib/cjs/graph/engine/constants.cjs +58 -0
  4. package/lib/cjs/graph/engine/decorators.cjs +4 -0
  5. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +20 -0
  6. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +27 -0
  7. package/lib/cjs/graph/engine/errors/GraphInputError.cjs +20 -0
  8. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +20 -0
  9. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +20 -0
  10. package/lib/cjs/graph/engine/errors/GraphPortError.cjs +20 -0
  11. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +20 -0
  12. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +20 -0
  13. package/lib/cjs/graph/{errors → engine/errors}/index.cjs +2 -2
  14. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +4 -0
  15. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +40 -0
  16. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +37 -0
  17. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +4 -0
  18. package/lib/cjs/graph/{events → engine/events}/index.cjs +2 -2
  19. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +4 -0
  20. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +79 -0
  21. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +408 -0
  22. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +32 -0
  23. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +30 -0
  24. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +4 -0
  25. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +103 -0
  26. package/lib/cjs/graph/{execution → engine/execution}/index.cjs +2 -2
  27. package/lib/cjs/graph/engine/index.cjs +84 -0
  28. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +87 -0
  29. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +85 -0
  30. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +85 -0
  31. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +16 -0
  32. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +77 -0
  33. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +78 -0
  34. package/lib/cjs/graph/{loops → engine/loops}/index.cjs +2 -2
  35. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +28 -0
  36. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +20 -0
  37. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +34 -0
  38. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +191 -0
  39. package/lib/cjs/graph/{pinning → engine/pinning}/index.cjs +2 -2
  40. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +4 -0
  41. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +4 -0
  42. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +4 -0
  43. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +4 -0
  44. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +197 -0
  45. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +172 -0
  46. package/lib/cjs/graph/engine/planning/GraphTopology.cjs +57 -0
  47. package/lib/cjs/graph/{planning → engine/planning}/index.cjs +2 -2
  48. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +44 -0
  49. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +27 -0
  50. package/lib/cjs/graph/{registry → engine/registry}/index.cjs +2 -2
  51. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +53 -0
  52. package/lib/cjs/graph/{snapshots → engine/snapshots}/index.cjs +2 -2
  53. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +4 -0
  54. package/lib/cjs/graph/engine/store/GraphValueKey.cjs +4 -0
  55. package/lib/cjs/graph/engine/store/GraphValueStore.cjs +76 -0
  56. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +4 -0
  57. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +69 -0
  58. package/lib/cjs/graph/{store → engine/store}/index.cjs +2 -2
  59. package/lib/cjs/graph/engine/types.cjs +4 -0
  60. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +33 -0
  61. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +58 -0
  62. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +52 -0
  63. package/lib/cjs/graph/{validation → engine/validation}/index.cjs +2 -2
  64. package/lib/cjs/graph/index.cjs +10 -60
  65. package/lib/cjs/graph/shared/constants.cjs +44 -0
  66. package/lib/cjs/graph/shared/index.cjs +38 -0
  67. package/lib/cjs/graph/{nodes → shared/nodes}/agent.cjs +2 -2
  68. package/lib/cjs/graph/shared/nodes/base.cjs +35 -0
  69. package/lib/cjs/graph/shared/nodes/category-styles.cjs +38 -0
  70. package/lib/cjs/graph/shared/nodes/flow-control.cjs +464 -0
  71. package/lib/cjs/graph/{nodes → shared/nodes}/index.cjs +2 -2
  72. package/lib/cjs/graph/shared/nodes/triggers.cjs +250 -0
  73. package/lib/cjs/graph/shared/types.cjs +4 -0
  74. package/lib/cjs/index.cjs +3 -3
  75. package/lib/cjs/nest/index.cjs +2 -3
  76. package/lib/esm/graph/engine/constants.js +62 -0
  77. package/lib/esm/graph/engine/decorators.js +2 -0
  78. package/lib/esm/graph/engine/errors/GraphCycleError.js +15 -0
  79. package/lib/esm/graph/engine/errors/GraphExecutionError.js +22 -0
  80. package/lib/esm/graph/engine/errors/GraphInputError.js +15 -0
  81. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +15 -0
  82. package/lib/esm/graph/engine/errors/GraphPinningError.js +15 -0
  83. package/lib/esm/graph/engine/errors/GraphPortError.js +15 -0
  84. package/lib/esm/graph/engine/errors/GraphStoreError.js +15 -0
  85. package/lib/esm/graph/engine/errors/GraphTopologyError.js +15 -0
  86. package/lib/esm/graph/engine/errors/index.js +14 -0
  87. package/lib/esm/graph/engine/events/GraphExecutionEvent.js +2 -0
  88. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +35 -0
  89. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +32 -0
  90. package/lib/esm/graph/engine/events/GraphExecutionObserver.js +2 -0
  91. package/lib/esm/graph/engine/events/index.js +10 -0
  92. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +18 -0
  93. package/lib/esm/graph/engine/execution/GraphExecutionContext.js +74 -0
  94. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +403 -0
  95. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +27 -0
  96. package/lib/esm/graph/engine/execution/GraphExecutionResult.js +26 -0
  97. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +2 -0
  98. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +98 -0
  99. package/lib/esm/graph/engine/execution/index.js +13 -0
  100. package/lib/esm/graph/engine/index.js +67 -0
  101. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +82 -0
  102. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +80 -0
  103. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +80 -0
  104. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +11 -0
  105. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +72 -0
  106. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +73 -0
  107. package/lib/esm/graph/engine/loops/index.js +12 -0
  108. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +23 -0
  109. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +15 -0
  110. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +29 -0
  111. package/lib/esm/graph/engine/pinning/GraphPinningService.js +186 -0
  112. package/lib/esm/graph/engine/pinning/index.js +10 -0
  113. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +2 -0
  114. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +7 -0
  115. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +2 -0
  116. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +2 -0
  117. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +192 -0
  118. package/lib/esm/graph/engine/planning/GraphRelationResolver.js +167 -0
  119. package/lib/esm/graph/engine/planning/GraphTopology.js +52 -0
  120. package/lib/esm/graph/engine/planning/index.js +13 -0
  121. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +39 -0
  122. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +22 -0
  123. package/lib/esm/graph/engine/registry/index.js +8 -0
  124. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +48 -0
  125. package/lib/esm/graph/engine/snapshots/index.js +7 -0
  126. package/lib/esm/graph/engine/store/GraphCachedValue.js +2 -0
  127. package/lib/esm/graph/engine/store/GraphValueKey.js +7 -0
  128. package/lib/esm/graph/engine/store/GraphValueStore.js +71 -0
  129. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +2 -0
  130. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +64 -0
  131. package/lib/esm/graph/engine/store/index.js +11 -0
  132. package/lib/esm/graph/engine/types.js +2 -0
  133. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +28 -0
  134. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +53 -0
  135. package/lib/esm/graph/engine/validation/GraphValueValidator.js +47 -0
  136. package/lib/esm/graph/engine/validation/index.js +9 -0
  137. package/lib/esm/graph/index.js +9 -59
  138. package/lib/esm/graph/shared/constants.js +56 -0
  139. package/lib/esm/graph/shared/index.js +19 -0
  140. package/lib/esm/graph/shared/nodes/agent.js +101 -0
  141. package/lib/esm/graph/shared/nodes/base.js +30 -0
  142. package/lib/esm/graph/shared/nodes/category-styles.js +34 -0
  143. package/lib/esm/graph/shared/nodes/flow-control.js +455 -0
  144. package/lib/esm/graph/shared/nodes/index.js +18 -0
  145. package/lib/esm/graph/shared/nodes/triggers.js +241 -0
  146. package/lib/esm/graph/shared/types.js +2 -0
  147. package/lib/esm/index.js +3 -3
  148. package/lib/esm/nest/index.js +1 -2
  149. package/lib/types/graph/engine/constants.d.cts +59 -0
  150. package/lib/types/graph/engine/constants.d.mts +59 -0
  151. package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.cts +1 -1
  152. package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.mts +1 -1
  153. package/lib/types/graph/engine/index.d.cts +61 -0
  154. package/lib/types/graph/engine/index.d.mts +61 -0
  155. package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.cts +1 -1
  156. package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.mts +1 -1
  157. package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.cts +2 -1
  158. package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.mts +2 -1
  159. package/lib/types/graph/{types.d.cts → engine/types.d.cts} +8 -116
  160. package/lib/types/graph/{types.d.mts → engine/types.d.mts} +8 -116
  161. package/lib/types/graph/index.d.cts +8 -53
  162. package/lib/types/graph/index.d.mts +8 -53
  163. package/lib/types/graph/shared/constants.d.cts +53 -0
  164. package/lib/types/graph/shared/constants.d.mts +53 -0
  165. package/lib/types/graph/shared/index.d.cts +18 -0
  166. package/lib/types/graph/shared/index.d.mts +18 -0
  167. package/lib/types/graph/shared/types.d.cts +121 -0
  168. package/lib/types/graph/shared/types.d.mts +121 -0
  169. package/lib/types/index.d.cts +2 -2
  170. package/lib/types/index.d.mts +2 -2
  171. package/lib/types/nest/index.d.cts +0 -1
  172. package/lib/types/nest/index.d.mts +0 -1
  173. package/package.json +25 -3
  174. package/lib/cjs/graph/constants.cjs +0 -94
  175. package/lib/cjs/graph/decorators.cjs +0 -4
  176. package/lib/cjs/graph/errors/GraphCycleError.cjs +0 -20
  177. package/lib/cjs/graph/errors/GraphExecutionError.cjs +0 -27
  178. package/lib/cjs/graph/errors/GraphInputError.cjs +0 -20
  179. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +0 -20
  180. package/lib/cjs/graph/errors/GraphPinningError.cjs +0 -20
  181. package/lib/cjs/graph/errors/GraphPortError.cjs +0 -20
  182. package/lib/cjs/graph/errors/GraphStoreError.cjs +0 -20
  183. package/lib/cjs/graph/errors/GraphTopologyError.cjs +0 -20
  184. package/lib/cjs/graph/events/GraphExecutionEvent.cjs +0 -4
  185. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +0 -40
  186. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +0 -37
  187. package/lib/cjs/graph/events/GraphExecutionObserver.cjs +0 -4
  188. package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +0 -4
  189. package/lib/cjs/graph/execution/GraphExecutionContext.cjs +0 -79
  190. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +0 -407
  191. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +0 -32
  192. package/lib/cjs/graph/execution/GraphExecutionResult.cjs +0 -30
  193. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +0 -4
  194. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +0 -103
  195. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +0 -87
  196. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +0 -84
  197. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +0 -85
  198. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +0 -16
  199. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +0 -76
  200. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +0 -77
  201. package/lib/cjs/graph/nodes/base.cjs +0 -35
  202. package/lib/cjs/graph/nodes/category-styles.cjs +0 -38
  203. package/lib/cjs/graph/nodes/flow-control.cjs +0 -464
  204. package/lib/cjs/graph/nodes/triggers.cjs +0 -250
  205. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +0 -28
  206. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +0 -20
  207. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +0 -34
  208. package/lib/cjs/graph/pinning/GraphPinningService.cjs +0 -191
  209. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +0 -4
  210. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +0 -4
  211. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +0 -4
  212. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +0 -4
  213. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +0 -197
  214. package/lib/cjs/graph/planning/GraphRelationResolver.cjs +0 -172
  215. package/lib/cjs/graph/planning/GraphTopology.cjs +0 -57
  216. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +0 -44
  217. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +0 -27
  218. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +0 -53
  219. package/lib/cjs/graph/store/GraphCachedValue.cjs +0 -4
  220. package/lib/cjs/graph/store/GraphValueKey.cjs +0 -4
  221. package/lib/cjs/graph/store/GraphValueStore.cjs +0 -76
  222. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +0 -4
  223. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +0 -69
  224. package/lib/cjs/graph/types.cjs +0 -4
  225. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +0 -33
  226. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +0 -58
  227. package/lib/cjs/graph/validation/GraphValueValidator.cjs +0 -52
  228. package/lib/esm/graph/constants.js +0 -106
  229. package/lib/esm/graph/decorators.js +0 -2
  230. package/lib/esm/graph/errors/GraphCycleError.js +0 -15
  231. package/lib/esm/graph/errors/GraphExecutionError.js +0 -22
  232. package/lib/esm/graph/errors/GraphInputError.js +0 -15
  233. package/lib/esm/graph/errors/GraphLoopLimitError.js +0 -15
  234. package/lib/esm/graph/errors/GraphPinningError.js +0 -15
  235. package/lib/esm/graph/errors/GraphPortError.js +0 -15
  236. package/lib/esm/graph/errors/GraphStoreError.js +0 -15
  237. package/lib/esm/graph/errors/GraphTopologyError.js +0 -15
  238. package/lib/esm/graph/errors/index.js +0 -14
  239. package/lib/esm/graph/events/GraphExecutionEvent.js +0 -2
  240. package/lib/esm/graph/events/GraphExecutionEventEmitter.js +0 -35
  241. package/lib/esm/graph/events/GraphExecutionEventFactory.js +0 -32
  242. package/lib/esm/graph/events/GraphExecutionObserver.js +0 -2
  243. package/lib/esm/graph/events/index.js +0 -10
  244. package/lib/esm/graph/execution/CodeSandboxEvaluator.js +0 -18
  245. package/lib/esm/graph/execution/GraphExecutionContext.js +0 -74
  246. package/lib/esm/graph/execution/GraphExecutionEngine.js +0 -402
  247. package/lib/esm/graph/execution/GraphExecutionFrame.js +0 -27
  248. package/lib/esm/graph/execution/GraphExecutionResult.js +0 -26
  249. package/lib/esm/graph/execution/GraphNodeExecutor.js +0 -2
  250. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +0 -98
  251. package/lib/esm/graph/execution/index.js +0 -13
  252. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +0 -82
  253. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +0 -79
  254. package/lib/esm/graph/loops/GraphConditionEvaluator.js +0 -80
  255. package/lib/esm/graph/loops/GraphLoopExecutionContext.js +0 -11
  256. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +0 -71
  257. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +0 -72
  258. package/lib/esm/graph/loops/index.js +0 -12
  259. package/lib/esm/graph/nodes/agent.js +0 -101
  260. package/lib/esm/graph/nodes/base.js +0 -30
  261. package/lib/esm/graph/nodes/category-styles.js +0 -34
  262. package/lib/esm/graph/nodes/flow-control.js +0 -455
  263. package/lib/esm/graph/nodes/index.js +0 -18
  264. package/lib/esm/graph/nodes/triggers.js +0 -241
  265. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +0 -23
  266. package/lib/esm/graph/pinning/GraphPinningMetadata.js +0 -15
  267. package/lib/esm/graph/pinning/GraphPinningPolicy.js +0 -29
  268. package/lib/esm/graph/pinning/GraphPinningService.js +0 -186
  269. package/lib/esm/graph/pinning/index.js +0 -10
  270. package/lib/esm/graph/planning/GraphExecutionPlan.js +0 -2
  271. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +0 -7
  272. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +0 -2
  273. package/lib/esm/graph/planning/GraphExecutionPlanNode.js +0 -2
  274. package/lib/esm/graph/planning/GraphExecutionPlanner.js +0 -192
  275. package/lib/esm/graph/planning/GraphRelationResolver.js +0 -167
  276. package/lib/esm/graph/planning/GraphTopology.js +0 -52
  277. package/lib/esm/graph/planning/index.js +0 -13
  278. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +0 -39
  279. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +0 -22
  280. package/lib/esm/graph/registry/index.js +0 -8
  281. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +0 -48
  282. package/lib/esm/graph/snapshots/index.js +0 -7
  283. package/lib/esm/graph/store/GraphCachedValue.js +0 -2
  284. package/lib/esm/graph/store/GraphValueKey.js +0 -7
  285. package/lib/esm/graph/store/GraphValueStore.js +0 -71
  286. package/lib/esm/graph/store/GraphValueStoreAdapter.js +0 -2
  287. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +0 -64
  288. package/lib/esm/graph/store/index.js +0 -11
  289. package/lib/esm/graph/types.js +0 -2
  290. package/lib/esm/graph/validation/GraphDefinitionValidator.js +0 -28
  291. package/lib/esm/graph/validation/GraphPortSchemaResolver.js +0 -53
  292. package/lib/esm/graph/validation/GraphValueValidator.js +0 -47
  293. package/lib/esm/graph/validation/index.js +0 -9
  294. package/lib/types/graph/constants.d.cts +0 -101
  295. package/lib/types/graph/constants.d.mts +0 -101
  296. /package/lib/types/graph/{decorators.d.cts → engine/decorators.d.cts} +0 -0
  297. /package/lib/types/graph/{decorators.d.mts → engine/decorators.d.mts} +0 -0
  298. /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.cts +0 -0
  299. /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.mts +0 -0
  300. /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.cts +0 -0
  301. /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.mts +0 -0
  302. /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.cts +0 -0
  303. /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.mts +0 -0
  304. /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.cts +0 -0
  305. /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.mts +0 -0
  306. /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.cts +0 -0
  307. /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.mts +0 -0
  308. /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.cts +0 -0
  309. /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.mts +0 -0
  310. /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.cts +0 -0
  311. /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.mts +0 -0
  312. /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.cts +0 -0
  313. /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.mts +0 -0
  314. /package/lib/types/graph/{errors → engine/errors}/index.d.cts +0 -0
  315. /package/lib/types/graph/{errors → engine/errors}/index.d.mts +0 -0
  316. /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.cts +0 -0
  317. /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.mts +0 -0
  318. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.cts +0 -0
  319. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.mts +0 -0
  320. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.cts +0 -0
  321. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.mts +0 -0
  322. /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.cts +0 -0
  323. /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.mts +0 -0
  324. /package/lib/types/graph/{events → engine/events}/index.d.cts +0 -0
  325. /package/lib/types/graph/{events → engine/events}/index.d.mts +0 -0
  326. /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.cts +0 -0
  327. /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.mts +0 -0
  328. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.cts +0 -0
  329. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.mts +0 -0
  330. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.cts +0 -0
  331. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.mts +0 -0
  332. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.cts +0 -0
  333. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.mts +0 -0
  334. /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.cts +0 -0
  335. /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.mts +0 -0
  336. /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.cts +0 -0
  337. /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.mts +0 -0
  338. /package/lib/types/graph/{execution → engine/execution}/index.d.cts +0 -0
  339. /package/lib/types/graph/{execution → engine/execution}/index.d.mts +0 -0
  340. /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.cts +0 -0
  341. /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.mts +0 -0
  342. /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.cts +0 -0
  343. /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.mts +0 -0
  344. /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.cts +0 -0
  345. /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.mts +0 -0
  346. /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.cts +0 -0
  347. /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.mts +0 -0
  348. /package/lib/types/graph/{loops → engine/loops}/index.d.cts +0 -0
  349. /package/lib/types/graph/{loops → engine/loops}/index.d.mts +0 -0
  350. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.cts +0 -0
  351. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.mts +0 -0
  352. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.cts +0 -0
  353. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.mts +0 -0
  354. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.cts +0 -0
  355. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.mts +0 -0
  356. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.cts +0 -0
  357. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.mts +0 -0
  358. /package/lib/types/graph/{pinning → engine/pinning}/index.d.cts +0 -0
  359. /package/lib/types/graph/{pinning → engine/pinning}/index.d.mts +0 -0
  360. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.cts +0 -0
  361. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.mts +0 -0
  362. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.cts +0 -0
  363. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.mts +0 -0
  364. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.cts +0 -0
  365. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.mts +0 -0
  366. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.cts +0 -0
  367. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.mts +0 -0
  368. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.cts +0 -0
  369. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.mts +0 -0
  370. /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.cts +0 -0
  371. /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.mts +0 -0
  372. /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.cts +0 -0
  373. /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.mts +0 -0
  374. /package/lib/types/graph/{planning → engine/planning}/index.d.cts +0 -0
  375. /package/lib/types/graph/{planning → engine/planning}/index.d.mts +0 -0
  376. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.cts +0 -0
  377. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.mts +0 -0
  378. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.cts +0 -0
  379. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.mts +0 -0
  380. /package/lib/types/graph/{registry → engine/registry}/index.d.cts +0 -0
  381. /package/lib/types/graph/{registry → engine/registry}/index.d.mts +0 -0
  382. /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.cts +0 -0
  383. /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.mts +0 -0
  384. /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.cts +0 -0
  385. /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.mts +0 -0
  386. /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.cts +0 -0
  387. /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.mts +0 -0
  388. /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.cts +0 -0
  389. /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.mts +0 -0
  390. /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.cts +0 -0
  391. /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.mts +0 -0
  392. /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.cts +0 -0
  393. /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.mts +0 -0
  394. /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.cts +0 -0
  395. /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.mts +0 -0
  396. /package/lib/types/graph/{store → engine/store}/index.d.cts +0 -0
  397. /package/lib/types/graph/{store → engine/store}/index.d.mts +0 -0
  398. /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.cts +0 -0
  399. /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.mts +0 -0
  400. /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.cts +0 -0
  401. /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.mts +0 -0
  402. /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.cts +0 -0
  403. /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.mts +0 -0
  404. /package/lib/types/graph/{validation → engine/validation}/index.d.cts +0 -0
  405. /package/lib/types/graph/{validation → engine/validation}/index.d.mts +0 -0
  406. /package/lib/types/graph/{nodes → shared/nodes}/agent.d.cts +0 -0
  407. /package/lib/types/graph/{nodes → shared/nodes}/agent.d.mts +0 -0
  408. /package/lib/types/graph/{nodes → shared/nodes}/base.d.cts +0 -0
  409. /package/lib/types/graph/{nodes → shared/nodes}/base.d.mts +0 -0
  410. /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.cts +0 -0
  411. /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.mts +0 -0
  412. /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.cts +0 -0
  413. /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.mts +0 -0
  414. /package/lib/types/graph/{nodes → shared/nodes}/index.d.cts +0 -0
  415. /package/lib/types/graph/{nodes → shared/nodes}/index.d.mts +0 -0
  416. /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.cts +0 -0
  417. /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.mts +0 -0
@@ -0,0 +1,455 @@
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
12
+ * @summary Production flow-control node kind declarations (DECAF-32 §22.2.2).
13
+ * @description Canonical `@node`-decorated classes for the ten ALFRED-5
14
+ * flow-control kinds. These are graph-level macros: the engine's planner
15
+ * recognises them as ordinary executable nodes (§5.7) but they have no
16
+ * built-in executors — downstream projects (e.g. ALFRED) register custom
17
+ * executors or compile them into Mastra composition APIs (§22.2.2).
18
+ *
19
+ * The three loop kinds (`core.loop.foreach/while/until`) already have built-in
20
+ * executors (§5.9) and are NOT redeclared here.
21
+ */
22
+ import { Model, model, required } from "@decaf-ts/decorator-validation";
23
+ import { uielement } from "@decaf-ts/ui-decorators";
24
+ import { graphDefinitionOf, input, node, output, PortDirection, } from "@decaf-ts/ui-decorators/graph";
25
+ import { GraphNode } from "./base.js";
26
+ /**
27
+ * If — conditional branch. Evaluates a `ConditionExpression` (§22.3) and
28
+ * routes the input to the `then` or `else` output.
29
+ */
30
+ let IfFlowNode = class IfFlowNode extends Model {
31
+ };
32
+ __decorate([
33
+ required(),
34
+ uielement("textarea", { label: "Input value", placeholder: "Value to evaluate" }),
35
+ input({ handle: "value" }),
36
+ __metadata("design:type", Object)
37
+ ], IfFlowNode.prototype, "value", void 0);
38
+ __decorate([
39
+ required(),
40
+ uielement("input", { label: "Then", placeholder: "Output when condition is true" }),
41
+ output({ handle: "then" }),
42
+ __metadata("design:type", Object)
43
+ ], IfFlowNode.prototype, "then", void 0);
44
+ __decorate([
45
+ required(),
46
+ uielement("input", { label: "Else", placeholder: "Output when condition is false" }),
47
+ output({ handle: "else" }),
48
+ __metadata("design:type", Object)
49
+ ], IfFlowNode.prototype, "else", void 0);
50
+ IfFlowNode = __decorate([
51
+ node("core.flow.if", {
52
+ kind: "core.flow.if",
53
+ category: "Flow Control",
54
+ color: "#f59e0b",
55
+ icon: "ti-arrows-split-2",
56
+ width: 96,
57
+ height: 96,
58
+ labels: ["flow", "conditional", "branch"],
59
+ metadata: {
60
+ title: "If",
61
+ description: "Conditional branch. Evaluates the configured condition and routes the input to the matching output.",
62
+ condition: { op: "eq", left: { const: true }, right: { const: true } },
63
+ },
64
+ }),
65
+ model()
66
+ ], IfFlowNode);
67
+ export { IfFlowNode };
68
+ /**
69
+ * Switch — multi-branch. Routes the input to one of the case output ports
70
+ * or `default` based on matching conditions. Each case defines a
71
+ * {@link SwitchCaseCondition} (graphical or code mode) and a dedicated
72
+ * output port. Cases are stored in `metadata.switch.cases` and the
73
+ * renderer creates dynamic output ports from them (DECAF-32 §22.2.2).
74
+ *
75
+ * The node grows in height as cases are added. Each case gets its own
76
+ * output port on the right side, labeled with the case label.
77
+ */
78
+ let SwitchFlowNode = class SwitchFlowNode extends GraphNode {
79
+ /**
80
+ * Computes the node's ports, size, and data patch from the given switch
81
+ * metadata. Each case gets its own output port on the right side; the
82
+ * node grows in height as cases are added.
83
+ */
84
+ static applyMetadata(meta) {
85
+ const definition = graphDefinitionOf(this);
86
+ const basePorts = definition.ports.filter((p) => !meta.cases.some((c) => c.outputPort === p.property));
87
+ const casePorts = meta.cases.map((c) => ({
88
+ property: c.outputPort,
89
+ name: c.label,
90
+ direction: PortDirection.OUTPUT,
91
+ label: c.label,
92
+ required: false,
93
+ hidden: false,
94
+ path: c.outputPort,
95
+ }));
96
+ const caseCount = meta.cases.length;
97
+ return {
98
+ ports: [...basePorts, ...casePorts],
99
+ size: {
100
+ width: definition.width ?? 120,
101
+ height: caseCount > 0 ? 140 + caseCount * 24 : definition.height ?? 140,
102
+ },
103
+ dataPatch: { switchMetadata: meta },
104
+ };
105
+ }
106
+ };
107
+ __decorate([
108
+ required(),
109
+ uielement("textarea", { label: "Input value", placeholder: "Value to switch on" }),
110
+ input({ handle: "value" }),
111
+ __metadata("design:type", Object)
112
+ ], SwitchFlowNode.prototype, "value", void 0);
113
+ __decorate([
114
+ required(),
115
+ uielement("input", { label: "Default", placeholder: "Default output when no case matches" }),
116
+ output({ handle: "default" }),
117
+ __metadata("design:type", Object)
118
+ ], SwitchFlowNode.prototype, "default", void 0);
119
+ SwitchFlowNode = __decorate([
120
+ node("core.flow.switch", {
121
+ kind: "core.flow.switch",
122
+ category: "Flow Control",
123
+ color: "#f97316",
124
+ icon: "ti-arrows-shuffle",
125
+ width: 120,
126
+ height: 140,
127
+ labels: ["flow", "switch", "multi-branch"],
128
+ metadata: {
129
+ title: "Switch",
130
+ description: "Multi-branch switch. Routes the input to the first matching case output, or the default output.",
131
+ switch: {
132
+ cases: [],
133
+ defaultPort: "default",
134
+ },
135
+ },
136
+ }),
137
+ model()
138
+ ], SwitchFlowNode);
139
+ export { SwitchFlowNode };
140
+ /**
141
+ * Parallel — splits execution into concurrent branches.
142
+ */
143
+ let ParallelFlowNode = class ParallelFlowNode extends Model {
144
+ };
145
+ __decorate([
146
+ required(),
147
+ uielement("textarea", { label: "Input value", placeholder: "Value to fan out" }),
148
+ input({ handle: "value" }),
149
+ __metadata("design:type", Object)
150
+ ], ParallelFlowNode.prototype, "value", void 0);
151
+ __decorate([
152
+ required(),
153
+ uielement("input", { label: "Branches", placeholder: "Collected branch outputs" }),
154
+ output({ handle: "branches" }),
155
+ __metadata("design:type", Array)
156
+ ], ParallelFlowNode.prototype, "branches", void 0);
157
+ ParallelFlowNode = __decorate([
158
+ node("core.flow.parallel", {
159
+ kind: "core.flow.parallel",
160
+ category: "Flow Control",
161
+ color: "#06b6d4",
162
+ icon: "ti-arrows-vertical",
163
+ width: 96,
164
+ height: 96,
165
+ labels: ["flow", "parallel", "concurrent"],
166
+ metadata: {
167
+ title: "Parallel",
168
+ description: "Splits execution into concurrent branches. All branches run in parallel and outputs are collected.",
169
+ branchCount: 2,
170
+ },
171
+ }),
172
+ model()
173
+ ], ParallelFlowNode);
174
+ export { ParallelFlowNode };
175
+ /**
176
+ * Merge — normalises branch/parallel outputs into a single output.
177
+ */
178
+ let MergeFlowNode = class MergeFlowNode extends Model {
179
+ };
180
+ __decorate([
181
+ required(),
182
+ uielement("textarea", { label: "Branch outputs", placeholder: "Outputs to merge" }),
183
+ input({ handle: "values" }),
184
+ __metadata("design:type", Array)
185
+ ], MergeFlowNode.prototype, "values", void 0);
186
+ __decorate([
187
+ required(),
188
+ uielement("input", { label: "Merged output", placeholder: "Merged result" }),
189
+ output({ handle: "merged" }),
190
+ __metadata("design:type", Object)
191
+ ], MergeFlowNode.prototype, "merged", void 0);
192
+ MergeFlowNode = __decorate([
193
+ node("core.flow.merge", {
194
+ kind: "core.flow.merge",
195
+ category: "Utility",
196
+ color: "#0d9488",
197
+ icon: "ti-arrows-merge",
198
+ width: 96,
199
+ height: 96,
200
+ labels: ["flow", "merge", "join"],
201
+ metadata: {
202
+ title: "Merge",
203
+ description: "Merges multiple branch outputs into a single normalised output object.",
204
+ strategy: "concat",
205
+ },
206
+ }),
207
+ model()
208
+ ], MergeFlowNode);
209
+ export { MergeFlowNode };
210
+ /**
211
+ * Map — transforms the current input into a new output object.
212
+ */
213
+ let MapFlowNode = class MapFlowNode extends Model {
214
+ };
215
+ __decorate([
216
+ required(),
217
+ uielement("textarea", { label: "Input value", placeholder: "Value to transform" }),
218
+ input({ handle: "value" }),
219
+ __metadata("design:type", Object)
220
+ ], MapFlowNode.prototype, "value", void 0);
221
+ __decorate([
222
+ required(),
223
+ uielement("input", { label: "Transformed output", placeholder: "Mapped result" }),
224
+ output({ handle: "result" }),
225
+ __metadata("design:type", Object)
226
+ ], MapFlowNode.prototype, "result", void 0);
227
+ MapFlowNode = __decorate([
228
+ node("core.flow.map", {
229
+ kind: "core.flow.map",
230
+ category: "Utility",
231
+ color: "#84cc16",
232
+ icon: "ti-arrows-right-left",
233
+ width: 96,
234
+ height: 96,
235
+ labels: ["flow", "map", "transform"],
236
+ metadata: {
237
+ title: "Map",
238
+ description: "Transforms the current input into a new output object using the configured mapper.",
239
+ mapper: {},
240
+ },
241
+ }),
242
+ model()
243
+ ], MapFlowNode);
244
+ export { MapFlowNode };
245
+ /**
246
+ * Delay — pauses execution for a configured duration.
247
+ */
248
+ let DelayFlowNode = class DelayFlowNode extends Model {
249
+ };
250
+ __decorate([
251
+ required(),
252
+ uielement("textarea", { label: "Input value", placeholder: "Value to forward after delay" }),
253
+ input({ handle: "value" }),
254
+ __metadata("design:type", Object)
255
+ ], DelayFlowNode.prototype, "value", void 0);
256
+ __decorate([
257
+ required(),
258
+ uielement("input", { label: "Output value", placeholder: "Forwarded value" }),
259
+ output({ handle: "value" }),
260
+ __metadata("design:type", Object)
261
+ ], DelayFlowNode.prototype, "valueOut", void 0);
262
+ DelayFlowNode = __decorate([
263
+ node("core.flow.delay", {
264
+ kind: "core.flow.delay",
265
+ category: "Utility",
266
+ color: "#a3a3a3",
267
+ icon: "ti-clock-hour-4",
268
+ width: 96,
269
+ height: 96,
270
+ labels: ["flow", "delay", "wait"],
271
+ metadata: {
272
+ title: "Delay",
273
+ description: "Pauses execution for the configured duration (in milliseconds), then forwards the input unchanged.",
274
+ durationMs: 1000,
275
+ },
276
+ }),
277
+ model()
278
+ ], DelayFlowNode);
279
+ export { DelayFlowNode };
280
+ /**
281
+ * Error boundary — try/catch/finally workflow behaviour.
282
+ */
283
+ let ErrorBoundaryFlowNode = class ErrorBoundaryFlowNode extends Model {
284
+ };
285
+ __decorate([
286
+ required(),
287
+ uielement("textarea", { label: "Input value", placeholder: "Value to guard" }),
288
+ input({ handle: "value" }),
289
+ __metadata("design:type", Object)
290
+ ], ErrorBoundaryFlowNode.prototype, "value", void 0);
291
+ __decorate([
292
+ required(),
293
+ uielement("input", { label: "Result", placeholder: "Output on success" }),
294
+ output({ handle: "result" }),
295
+ __metadata("design:type", Object)
296
+ ], ErrorBoundaryFlowNode.prototype, "result", void 0);
297
+ __decorate([
298
+ required(),
299
+ uielement("input", { label: "Error", placeholder: "Output on failure" }),
300
+ output({ handle: "error" }),
301
+ __metadata("design:type", Object)
302
+ ], ErrorBoundaryFlowNode.prototype, "error", void 0);
303
+ ErrorBoundaryFlowNode = __decorate([
304
+ node("core.flow.errorBoundary", {
305
+ kind: "core.flow.errorBoundary",
306
+ category: "Flow Control",
307
+ color: "#ef4444",
308
+ icon: "ti-shield-check",
309
+ width: 96,
310
+ height: 96,
311
+ labels: ["flow", "error", "try-catch"],
312
+ metadata: {
313
+ title: "Error boundary",
314
+ description: "Wraps the input in a try/catch/finally. Emits the result on success, or the error on failure.",
315
+ finally: false,
316
+ },
317
+ }),
318
+ model()
319
+ ], ErrorBoundaryFlowNode);
320
+ export { ErrorBoundaryFlowNode };
321
+ /**
322
+ * Human approval — suspends execution until a human approves or rejects.
323
+ */
324
+ let HumanApprovalFlowNode = class HumanApprovalFlowNode extends Model {
325
+ };
326
+ __decorate([
327
+ required(),
328
+ uielement("textarea", { label: "Input value", placeholder: "Value pending approval" }),
329
+ input({ handle: "value" }),
330
+ __metadata("design:type", Object)
331
+ ], HumanApprovalFlowNode.prototype, "value", void 0);
332
+ __decorate([
333
+ required(),
334
+ uielement("input", { label: "Approved", placeholder: "Output when approved" }),
335
+ output({ handle: "approved" }),
336
+ __metadata("design:type", Object)
337
+ ], HumanApprovalFlowNode.prototype, "approved", void 0);
338
+ __decorate([
339
+ required(),
340
+ uielement("input", { label: "Rejected", placeholder: "Output when rejected" }),
341
+ output({ handle: "rejected" }),
342
+ __metadata("design:type", Object)
343
+ ], HumanApprovalFlowNode.prototype, "rejected", void 0);
344
+ HumanApprovalFlowNode = __decorate([
345
+ node("core.flow.humanApproval", {
346
+ kind: "core.flow.humanApproval",
347
+ category: "Flow Control",
348
+ color: "#d946ef",
349
+ icon: "ti-user-check",
350
+ width: 96,
351
+ height: 96,
352
+ labels: ["flow", "approval", "suspend"],
353
+ metadata: {
354
+ title: "Human approval",
355
+ description: "Suspends execution until a human approves or rejects. Emits the approved value or a rejection.",
356
+ approvers: [],
357
+ timeoutMs: 86400000,
358
+ },
359
+ }),
360
+ model()
361
+ ], HumanApprovalFlowNode);
362
+ export { HumanApprovalFlowNode };
363
+ /**
364
+ * Return — defines and normalises the final workflow output.
365
+ */
366
+ let ReturnFlowNode = class ReturnFlowNode extends Model {
367
+ };
368
+ __decorate([
369
+ required(),
370
+ uielement("textarea", { label: "Input value", placeholder: "Value to normalise" }),
371
+ input({ handle: "value" }),
372
+ __metadata("design:type", Object)
373
+ ], ReturnFlowNode.prototype, "value", void 0);
374
+ __decorate([
375
+ required(),
376
+ uielement("input", { label: "Returned output", placeholder: "Normalised output" }),
377
+ output({ handle: "result" }),
378
+ __metadata("design:type", Object)
379
+ ], ReturnFlowNode.prototype, "result", void 0);
380
+ ReturnFlowNode = __decorate([
381
+ node("core.flow.return", {
382
+ kind: "core.flow.return",
383
+ category: "Utility",
384
+ color: "#22c55e",
385
+ icon: "ti-arrow-back-up",
386
+ width: 96,
387
+ height: 96,
388
+ labels: ["flow", "return", "output"],
389
+ metadata: {
390
+ title: "Return",
391
+ description: "Normalises the input into the final workflow output object.",
392
+ outputSchema: {},
393
+ },
394
+ }),
395
+ model()
396
+ ], ReturnFlowNode);
397
+ export { ReturnFlowNode };
398
+ /**
399
+ * Code — sandboxed JS/TS code execution (ALFRED-5 §7).
400
+ *
401
+ * The engine does not implement the sandbox directly (§22.4). A future
402
+ * executor may wrap the `CodeSandbox` contract (ALFRED-5 §7.17) as a
403
+ * pluggable executor. The placeholder syntax (`{{ $input }}`, `{{ $item }}`,
404
+ * `{{ $index }}`, `{{ $vars }}`, `{{ $node["Name"].output }}`) is Mastra-
405
+ * agnostic and lives in the downstream project's `modules/core` (ALFRED-6).
406
+ */
407
+ let CodeFlowNode = class CodeFlowNode extends Model {
408
+ };
409
+ __decorate([
410
+ required(),
411
+ uielement("textarea", { label: "Input", placeholder: "Input object (accessible as $input)" }),
412
+ input({ handle: "input" }),
413
+ __metadata("design:type", Object)
414
+ ], CodeFlowNode.prototype, "input", void 0);
415
+ __decorate([
416
+ required(),
417
+ uielement("input", { label: "Result", placeholder: "Code execution result" }),
418
+ output({ handle: "result" }),
419
+ __metadata("design:type", Object)
420
+ ], CodeFlowNode.prototype, "result", void 0);
421
+ CodeFlowNode = __decorate([
422
+ node("core.flow.code", {
423
+ kind: "core.flow.code",
424
+ category: "Utility",
425
+ color: "#7c3aed",
426
+ icon: "ti-code",
427
+ width: 96,
428
+ height: 96,
429
+ labels: ["flow", "code", "sandbox", "transform"],
430
+ metadata: {
431
+ title: "Code",
432
+ description: "Runs user-authored JS/TS in a restricted VM sandbox. Supports placeholder syntax for workflow data references.",
433
+ code: "",
434
+ language: "javascript",
435
+ },
436
+ }),
437
+ model()
438
+ ], CodeFlowNode);
439
+ export { CodeFlowNode };
440
+ /**
441
+ * All built-in flow-control node constructors.
442
+ */
443
+ export const GRAPH_FLOW_CONTROL_NODES = [
444
+ IfFlowNode,
445
+ SwitchFlowNode,
446
+ ParallelFlowNode,
447
+ MergeFlowNode,
448
+ MapFlowNode,
449
+ DelayFlowNode,
450
+ ErrorBoundaryFlowNode,
451
+ HumanApprovalFlowNode,
452
+ ReturnFlowNode,
453
+ CodeFlowNode,
454
+ ];
455
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3NoYXJlZC9ub2Rlcy9mbG93LWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsSUFBSSxFQUNKLE1BQU0sRUFDTixhQUFhLEdBRWQsTUFBTSwrQkFBK0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFlO0FBRW5DOzs7R0FHRztBQWdCSSxJQUFNLFVBQVUsR0FBaEIsTUFBTSxVQUFXLFNBQVEsS0FBSztDQWVwQyxDQUFBO0FBWEM7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztJQUNqRixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O3lDQUNYO0FBS2hCO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLCtCQUErQixFQUFFLENBQUM7SUFDbkYsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDOzt3Q0FDWjtBQUtmO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGdDQUFnQyxFQUFFLENBQUM7SUFDcEYsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFB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O1lBQzdILElBQUksRUFBRSxFQUFFO1lBQ1IsUUFBUSxFQUFFLFlBQVk7U0FDdkI7S0FDRixDQUFDO0lBQ0QsS0FBSyxFQUFFO0dBQ0ssWUFBWSxDQVV4Qjs7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLFVBQVU7SUFDVixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixXQUFXO0lBQ1gsYUFBYTtJQUNiLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsY0FBYztJQUNkLFlBQVk7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9ub2Rlcy9mbG93LWNvbnRyb2xcbiAqIEBzdW1tYXJ5IFByb2R1Y3Rpb24gZmxvdy1jb250cm9sIG5vZGUga2luZCBkZWNsYXJhdGlvbnMgKERFQ0FGLTMyIMKnMjIuMi4yKS5cbiAqIEBkZXNjcmlwdGlvbiBDYW5vbmljYWwgYEBub2RlYC1kZWNvcmF0ZWQgY2xhc3NlcyBmb3IgdGhlIHRlbiBBTEZSRUQtNVxuICogZmxvdy1jb250cm9sIGtpbmRzLiBUaGVzZSBhcmUgZ3JhcGgtbGV2ZWwgbWFjcm9zOiB0aGUgZW5naW5lJ3MgcGxhbm5lclxuICogcmVjb2duaXNlcyB0aGVtIGFzIG9yZGluYXJ5IGV4ZWN1dGFibGUgbm9kZXMgKMKnNS43KSBidXQgdGhleSBoYXZlIG5vXG4gKiBidWlsdC1pbiBleGVjdXRvcnMg4oCUIGRvd25zdHJlYW0gcHJvamVjdHMgKGUuZy4gQUxGUkVEKSByZWdpc3RlciBjdXN0b21cbiAqIGV4ZWN1dG9ycyBvciBjb21waWxlIHRoZW0gaW50byBNYXN0cmEgY29tcG9zaXRpb24gQVBJcyAowqcyMi4yLjIpLlxuICpcbiAqIFRoZSB0aHJlZSBsb29wIGtpbmRzIChgY29yZS5sb29wLmZvcmVhY2gvd2hpbGUvdW50aWxgKSBhbHJlYWR5IGhhdmUgYnVpbHQtaW5cbiAqIGV4ZWN1dG9ycyAowqc1LjkpIGFuZCBhcmUgTk9UIHJlZGVjbGFyZWQgaGVyZS5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHtcbiAgZ3JhcGhEZWZpbml0aW9uT2YsXG4gIGlucHV0LFxuICBub2RlLFxuICBvdXRwdXQsXG4gIFBvcnREaXJlY3Rpb24sXG4gIHR5cGUgR3JhcGhQb3J0RGVmaW5pdGlvbixcbn0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5pbXBvcnQgdHlwZSB7IE5vZGVNZXRhZGF0YUNoYW5nZSwgU3dpdGNoTm9kZU1ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBHcmFwaE5vZGUgfSBmcm9tIFwiLi9iYXNlXCI7XG5cbi8qKlxuICogSWYg4oCUIGNvbmRpdGlvbmFsIGJyYW5jaC4gRXZhbHVhdGVzIGEgYENvbmRpdGlvbkV4cHJlc3Npb25gICjCpzIyLjMpIGFuZFxuICogcm91dGVzIHRoZSBpbnB1dCB0byB0aGUgYHRoZW5gIG9yIGBlbHNlYCBvdXRwdXQuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmlmXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuaWZcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiNmNTllMGJcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3Mtc3BsaXQtMlwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImNvbmRpdGlvbmFsXCIsIFwiYnJhbmNoXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIklmXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQ29uZGl0aW9uYWwgYnJhbmNoLiBFdmFsdWF0ZXMgdGhlIGNvbmZpZ3VyZWQgY29uZGl0aW9uIGFuZCByb3V0ZXMgdGhlIGlucHV0IHRvIHRoZSBtYXRjaGluZyBvdXRwdXQuXCIsXG4gICAgY29uZGl0aW9uOiB7IG9wOiBcImVxXCIsIGxlZnQ6IHsgY29uc3Q6IHRydWUgfSwgcmlnaHQ6IHsgY29uc3Q6IHRydWUgfSB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgSWZGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gZXZhbHVhdGVcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiVGhlblwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgd2hlbiBjb25kaXRpb24gaXMgdHJ1ZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwidGhlblwiIH0pXG4gIHRoZW4hOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkVsc2VcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gY29uZGl0aW9uIGlzIGZhbHNlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJlbHNlXCIgfSlcbiAgZWxzZSE6IHVua25vd247XG59XG5cbi8qKlxuICogU3dpdGNoIOKAlCBtdWx0aS1icmFuY2guIFJvdXRlcyB0aGUgaW5wdXQgdG8gb25lIG9mIHRoZSBjYXNlIG91dHB1dCBwb3J0c1xuICogb3IgYGRlZmF1bHRgIGJhc2VkIG9uIG1hdGNoaW5nIGNvbmRpdGlvbnMuIEVhY2ggY2FzZSBkZWZpbmVzIGFcbiAqIHtAbGluayBTd2l0Y2hDYXNlQ29uZGl0aW9ufSAoZ3JhcGhpY2FsIG9yIGNvZGUgbW9kZSkgYW5kIGEgZGVkaWNhdGVkXG4gKiBvdXRwdXQgcG9ydC4gQ2FzZXMgYXJlIHN0b3JlZCBpbiBgbWV0YWRhdGEuc3dpdGNoLmNhc2VzYCBhbmQgdGhlXG4gKiByZW5kZXJlciBjcmVhdGVzIGR5bmFtaWMgb3V0cHV0IHBvcnRzIGZyb20gdGhlbSAoREVDQUYtMzIgwqcyMi4yLjIpLlxuICpcbiAqIFRoZSBub2RlIGdyb3dzIGluIGhlaWdodCBhcyBjYXNlcyBhcmUgYWRkZWQuIEVhY2ggY2FzZSBnZXRzIGl0cyBvd25cbiAqIG91dHB1dCBwb3J0IG9uIHRoZSByaWdodCBzaWRlLCBsYWJlbGVkIHdpdGggdGhlIGNhc2UgbGFiZWwuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LnN3aXRjaFwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LnN3aXRjaFwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiI2Y5NzMxNlwiLFxuICBpY29uOiBcInRpLWFycm93cy1zaHVmZmxlXCIsXG4gIHdpZHRoOiAxMjAsXG4gIGhlaWdodDogMTQwLFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJzd2l0Y2hcIiwgXCJtdWx0aS1icmFuY2hcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiU3dpdGNoXCIsXG4gICAgZGVzY3JpcHRpb246IFwiTXVsdGktYnJhbmNoIHN3aXRjaC4gUm91dGVzIHRoZSBpbnB1dCB0byB0aGUgZmlyc3QgbWF0Y2hpbmcgY2FzZSBvdXRwdXQsIG9yIHRoZSBkZWZhdWx0IG91dHB1dC5cIixcbiAgICBzd2l0Y2g6IHtcbiAgICAgIGNhc2VzOiBbXSxcbiAgICAgIGRlZmF1bHRQb3J0OiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU3dpdGNoRmxvd05vZGUgZXh0ZW5kcyBHcmFwaE5vZGUge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBzd2l0Y2ggb25cIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiRGVmYXVsdFwiLCBwbGFjZWhvbGRlcjogXCJEZWZhdWx0IG91dHB1dCB3aGVuIG5vIGNhc2UgbWF0Y2hlc1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZGVmYXVsdFwiIH0pXG4gIGRlZmF1bHQhOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbm9kZSdzIHBvcnRzLCBzaXplLCBhbmQgZGF0YSBwYXRjaCBmcm9tIHRoZSBnaXZlbiBzd2l0Y2hcbiAgICogbWV0YWRhdGEuIEVhY2ggY2FzZSBnZXRzIGl0cyBvd24gb3V0cHV0IHBvcnQgb24gdGhlIHJpZ2h0IHNpZGU7IHRoZVxuICAgKiBub2RlIGdyb3dzIGluIGhlaWdodCBhcyBjYXNlcyBhcmUgYWRkZWQuXG4gICAqL1xuICBzdGF0aWMgb3ZlcnJpZGUgYXBwbHlNZXRhZGF0YShtZXRhOiBTd2l0Y2hOb2RlTWV0YWRhdGEpOiBOb2RlTWV0YWRhdGFDaGFuZ2Uge1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBncmFwaERlZmluaXRpb25PZih0aGlzIGFzIG5ldmVyKTtcbiAgICBjb25zdCBiYXNlUG9ydHMgPSBkZWZpbml0aW9uLnBvcnRzLmZpbHRlcihcbiAgICAgIChwKSA9PiAhbWV0YS5jYXNlcy5zb21lKChjKSA9PiBjLm91dHB1dFBvcnQgPT09IHAucHJvcGVydHkpXG4gICAgKTtcbiAgICBjb25zdCBjYXNlUG9ydHM6IEdyYXBoUG9ydERlZmluaXRpb25bXSA9IG1ldGEuY2FzZXMubWFwKChjKSA9PiAoe1xuICAgICAgcHJvcGVydHk6IGMub3V0cHV0UG9ydCxcbiAgICAgIG5hbWU6IGMubGFiZWwsXG4gICAgICBkaXJlY3Rpb246IFBvcnREaXJlY3Rpb24uT1VUUFVULFxuICAgICAgbGFiZWw6IGMubGFiZWwsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgcGF0aDogYy5vdXRwdXRQb3J0LFxuICAgIH0pKTtcbiAgICBjb25zdCBjYXNlQ291bnQgPSBtZXRhLmNhc2VzLmxlbmd0aDtcbiAgICByZXR1cm4ge1xuICAgICAgcG9ydHM6IFsuLi5iYXNlUG9ydHMsIC4uLmNhc2VQb3J0c10sXG4gICAgICBzaXplOiB7XG4gICAgICAgIHdpZHRoOiBkZWZpbml0aW9uLndpZHRoID8/IDEyMCxcbiAgICAgICAgaGVpZ2h0OiBjYXNlQ291bnQgPiAwID8gMTQwICsgY2FzZUNvdW50ICogMjQgOiBkZWZpbml0aW9uLmhlaWdodCA/PyAxNDAsXG4gICAgICB9LFxuICAgICAgZGF0YVBhdGNoOiB7IHN3aXRjaE1ldGFkYXRhOiBtZXRhIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcmFsbGVsIOKAlCBzcGxpdHMgZXhlY3V0aW9uIGludG8gY29uY3VycmVudCBicmFuY2hlcy5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cucGFyYWxsZWxcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5wYXJhbGxlbFwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiIzA2YjZkNFwiLFxuICBpY29uOiBcInRpLWFycm93cy12ZXJ0aWNhbFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcInBhcmFsbGVsXCIsIFwiY29uY3VycmVudFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJQYXJhbGxlbFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlNwbGl0cyBleGVjdXRpb24gaW50byBjb25jdXJyZW50IGJyYW5jaGVzLiBBbGwgYnJhbmNoZXMgcnVuIGluIHBhcmFsbGVsIGFuZCBvdXRwdXRzIGFyZSBjb2xsZWN0ZWQuXCIsXG4gICAgYnJhbmNoQ291bnQ6IDIsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBQYXJhbGxlbEZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBmYW4gb3V0XCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkJyYW5jaGVzXCIsIHBsYWNlaG9sZGVyOiBcIkNvbGxlY3RlZCBicmFuY2ggb3V0cHV0c1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiYnJhbmNoZXNcIiB9KVxuICBicmFuY2hlcyE6IHVua25vd25bXTtcbn1cblxuLyoqXG4gKiBNZXJnZSDigJQgbm9ybWFsaXNlcyBicmFuY2gvcGFyYWxsZWwgb3V0cHV0cyBpbnRvIGEgc2luZ2xlIG91dHB1dC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cubWVyZ2VcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5tZXJnZVwiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiMwZDk0ODhcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3MtbWVyZ2VcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJtZXJnZVwiLCBcImpvaW5cIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiTWVyZ2VcIixcbiAgICBkZXNjcmlwdGlvbjogXCJNZXJnZXMgbXVsdGlwbGUgYnJhbmNoIG91dHB1dHMgaW50byBhIHNpbmdsZSBub3JtYWxpc2VkIG91dHB1dCBvYmplY3QuXCIsXG4gICAgc3RyYXRlZ3k6IFwiY29uY2F0XCIsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBNZXJnZUZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJCcmFuY2ggb3V0cHV0c1wiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXRzIHRvIG1lcmdlXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlc1wiIH0pXG4gIHZhbHVlcyE6IHVua25vd25bXTtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJNZXJnZWQgb3V0cHV0XCIsIHBsYWNlaG9sZGVyOiBcIk1lcmdlZCByZXN1bHRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcIm1lcmdlZFwiIH0pXG4gIG1lcmdlZCE6IHVua25vd247XG59XG5cbi8qKlxuICogTWFwIOKAlCB0cmFuc2Zvcm1zIHRoZSBjdXJyZW50IGlucHV0IGludG8gYSBuZXcgb3V0cHV0IG9iamVjdC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cubWFwXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cubWFwXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzg0Y2MxNlwiLFxuICBpY29uOiBcInRpLWFycm93cy1yaWdodC1sZWZ0XCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwibWFwXCIsIFwidHJhbnNmb3JtXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIk1hcFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlRyYW5zZm9ybXMgdGhlIGN1cnJlbnQgaW5wdXQgaW50byBhIG5ldyBvdXRwdXQgb2JqZWN0IHVzaW5nIHRoZSBjb25maWd1cmVkIG1hcHBlci5cIixcbiAgICBtYXBwZXI6IHt9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgTWFwRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIHRyYW5zZm9ybVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJUcmFuc2Zvcm1lZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTWFwcGVkIHJlc3VsdFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBEZWxheSDigJQgcGF1c2VzIGV4ZWN1dGlvbiBmb3IgYSBjb25maWd1cmVkIGR1cmF0aW9uLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5kZWxheVwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmRlbGF5XCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiI2EzYTNhM1wiLFxuICBpY29uOiBcInRpLWNsb2NrLWhvdXItNFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImRlbGF5XCIsIFwid2FpdFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJEZWxheVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlBhdXNlcyBleGVjdXRpb24gZm9yIHRoZSBjb25maWd1cmVkIGR1cmF0aW9uIChpbiBtaWxsaXNlY29uZHMpLCB0aGVuIGZvcndhcmRzIHRoZSBpbnB1dCB1bmNoYW5nZWQuXCIsXG4gICAgZHVyYXRpb25NczogMTAwMCxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIERlbGF5Rmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGZvcndhcmQgYWZ0ZXIgZGVsYXlcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiT3V0cHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIkZvcndhcmRlZCB2YWx1ZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZU91dCE6IHVua25vd247XG59XG5cbi8qKlxuICogRXJyb3IgYm91bmRhcnkg4oCUIHRyeS9jYXRjaC9maW5hbGx5IHdvcmtmbG93IGJlaGF2aW91ci5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cuZXJyb3JCb3VuZGFyeVwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmVycm9yQm91bmRhcnlcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiNlZjQ0NDRcIixcbiAgaWNvbjogXCJ0aS1zaGllbGQtY2hlY2tcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJlcnJvclwiLCBcInRyeS1jYXRjaFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJFcnJvciBib3VuZGFyeVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIldyYXBzIHRoZSBpbnB1dCBpbiBhIHRyeS9jYXRjaC9maW5hbGx5LiBFbWl0cyB0aGUgcmVzdWx0IG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBvbiBmYWlsdXJlLlwiLFxuICAgIGZpbmFsbHk6IGZhbHNlLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgRXJyb3JCb3VuZGFyeUZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBndWFyZFwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZXN1bHRcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IG9uIHN1Y2Nlc3NcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pXG4gIHJlc3VsdCE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiRXJyb3JcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IG9uIGZhaWx1cmVcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcImVycm9yXCIgfSlcbiAgZXJyb3IhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEh1bWFuIGFwcHJvdmFsIOKAlCBzdXNwZW5kcyBleGVjdXRpb24gdW50aWwgYSBodW1hbiBhcHByb3ZlcyBvciByZWplY3RzLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5odW1hbkFwcHJvdmFsXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuaHVtYW5BcHByb3ZhbFwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiI2Q5NDZlZlwiLFxuICBpY29uOiBcInRpLXVzZXItY2hlY2tcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJhcHByb3ZhbFwiLCBcInN1c3BlbmRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiSHVtYW4gYXBwcm92YWxcIixcbiAgICBkZXNjcmlwdGlvbjogXCJTdXNwZW5kcyBleGVjdXRpb24gdW50aWwgYSBodW1hbiBhcHByb3ZlcyBvciByZWplY3RzLiBFbWl0cyB0aGUgYXBwcm92ZWQgdmFsdWUgb3IgYSByZWplY3Rpb24uXCIsXG4gICAgYXBwcm92ZXJzOiBbXSxcbiAgICB0aW1lb3V0TXM6IDg2NDAwMDAwLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgSHVtYW5BcHByb3ZhbEZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSBwZW5kaW5nIGFwcHJvdmFsXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkFwcHJvdmVkXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIGFwcHJvdmVkXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJhcHByb3ZlZFwiIH0pXG4gIGFwcHJvdmVkITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZWplY3RlZFwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgd2hlbiByZWplY3RlZFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVqZWN0ZWRcIiB9KVxuICByZWplY3RlZCE6IHVua25vd247XG59XG5cbi8qKlxuICogUmV0dXJuIOKAlCBkZWZpbmVzIGFuZCBub3JtYWxpc2VzIHRoZSBmaW5hbCB3b3JrZmxvdyBvdXRwdXQuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LnJldHVyblwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LnJldHVyblwiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiMyMmM1NWVcIixcbiAgaWNvbjogXCJ0aS1hcnJvdy1iYWNrLXVwXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwicmV0dXJuXCIsIFwib3V0cHV0XCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIlJldHVyblwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk5vcm1hbGlzZXMgdGhlIGlucHV0IGludG8gdGhlIGZpbmFsIHdvcmtmbG93IG91dHB1dCBvYmplY3QuXCIsXG4gICAgb3V0cHV0U2NoZW1hOiB7fSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFJldHVybkZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBub3JtYWxpc2VcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiUmV0dXJuZWQgb3V0cHV0XCIsIHBsYWNlaG9sZGVyOiBcIk5vcm1hbGlzZWQgb3V0cHV0XCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJyZXN1bHRcIiB9KVxuICByZXN1bHQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIENvZGUg4oCUIHNhbmRib3hlZCBKUy9UUyBjb2RlIGV4ZWN1dGlvbiAoQUxGUkVELTUgwqc3KS5cbiAqXG4gKiBUaGUgZW5naW5lIGRvZXMgbm90IGltcGxlbWVudCB0aGUgc2FuZGJveCBkaXJlY3RseSAowqcyMi40KS4gQSBmdXR1cmVcbiAqIGV4ZWN1dG9yIG1heSB3cmFwIHRoZSBgQ29kZVNhbmRib3hgIGNvbnRyYWN0IChBTEZSRUQtNSDCpzcuMTcpIGFzIGFcbiAqIHBsdWdnYWJsZSBleGVjdXRvci4gVGhlIHBsYWNlaG9sZGVyIHN5bnRheCAoYHt7ICRpbnB1dCB9fWAsIGB7eyAkaXRlbSB9fWAsXG4gKiBge3sgJGluZGV4IH19YCwgYHt7ICR2YXJzIH19YCwgYHt7ICRub2RlW1wiTmFtZVwiXS5vdXRwdXQgfX1gKSBpcyBNYXN0cmEtXG4gKiBhZ25vc3RpYyBhbmQgbGl2ZXMgaW4gdGhlIGRvd25zdHJlYW0gcHJvamVjdCdzIGBtb2R1bGVzL2NvcmVgIChBTEZSRUQtNikuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmNvZGVcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5jb2RlXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzdjM2FlZFwiLFxuICBpY29uOiBcInRpLWNvZGVcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJjb2RlXCIsIFwic2FuZGJveFwiLCBcInRyYW5zZm9ybVwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJDb2RlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUnVucyB1c2VyLWF1dGhvcmVkIEpTL1RTIGluIGEgcmVzdHJpY3RlZCBWTSBzYW5kYm94LiBTdXBwb3J0cyBwbGFjZWhvbGRlciBzeW50YXggZm9yIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcy5cIixcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxhbmd1YWdlOiBcImphdmFzY3JpcHRcIixcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIENvZGVGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXRcIiwgcGxhY2Vob2xkZXI6IFwiSW5wdXQgb2JqZWN0IChhY2Nlc3NpYmxlIGFzICRpbnB1dClcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwiaW5wdXRcIiB9KVxuICBpbnB1dCE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiUmVzdWx0XCIsIHBsYWNlaG9sZGVyOiBcIkNvZGUgZXhlY3V0aW9uIHJlc3VsdFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBBbGwgYnVpbHQtaW4gZmxvdy1jb250cm9sIG5vZGUgY29uc3RydWN0b3JzLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfRkxPV19DT05UUk9MX05PREVTID0gW1xuICBJZkZsb3dOb2RlLFxuICBTd2l0Y2hGbG93Tm9kZSxcbiAgUGFyYWxsZWxGbG93Tm9kZSxcbiAgTWVyZ2VGbG93Tm9kZSxcbiAgTWFwRmxvd05vZGUsXG4gIERlbGF5Rmxvd05vZGUsXG4gIEVycm9yQm91bmRhcnlGbG93Tm9kZSxcbiAgSHVtYW5BcHByb3ZhbEZsb3dOb2RlLFxuICBSZXR1cm5GbG93Tm9kZSxcbiAgQ29kZUZsb3dOb2RlLFxuXSBhcyBjb25zdDtcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @module integrations/graph/nodes
3
+ * @summary Production node kind declarations (DECAF-32 §22.2).
4
+ * @description Canonical `@node`-decorated classes for the ALFRED-5 node kind
5
+ * taxonomy. These are the framework's built-in node definitions — triggers
6
+ * (§22.2.1), flow-control/utility nodes (§22.2.2–22.2.3), and the Agent node
7
+ * (§21.3). The three loop kinds (`core.loop.foreach/while/until`) already have
8
+ * built-in executors (§5.9) and are not redeclared here.
9
+ *
10
+ * Consumers (for-angular, ALFRED, etc.) import these declarations to populate
11
+ * node palettes, registries, and reference snapshots.
12
+ */
13
+ export * from "./base.js";
14
+ export * from "./category-styles.js";
15
+ export * from "./triggers.js";
16
+ export * from "./flow-control.js";
17
+ export * from "./agent.js";
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvc2hhcmVkL25vZGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsMEJBQXVCO0FBQ3ZCLHFDQUFrQztBQUNsQyw4QkFBMkI7QUFDM0Isa0NBQStCO0FBQy9CLDJCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvbm9kZXNcbiAqIEBzdW1tYXJ5IFByb2R1Y3Rpb24gbm9kZSBraW5kIGRlY2xhcmF0aW9ucyAoREVDQUYtMzIgwqcyMi4yKS5cbiAqIEBkZXNjcmlwdGlvbiBDYW5vbmljYWwgYEBub2RlYC1kZWNvcmF0ZWQgY2xhc3NlcyBmb3IgdGhlIEFMRlJFRC01IG5vZGUga2luZFxuICogdGF4b25vbXkuIFRoZXNlIGFyZSB0aGUgZnJhbWV3b3JrJ3MgYnVpbHQtaW4gbm9kZSBkZWZpbml0aW9ucyDigJQgdHJpZ2dlcnNcbiAqICjCpzIyLjIuMSksIGZsb3ctY29udHJvbC91dGlsaXR5IG5vZGVzICjCpzIyLjIuMuKAkzIyLjIuMyksIGFuZCB0aGUgQWdlbnQgbm9kZVxuICogKMKnMjEuMykuIFRoZSB0aHJlZSBsb29wIGtpbmRzIChgY29yZS5sb29wLmZvcmVhY2gvd2hpbGUvdW50aWxgKSBhbHJlYWR5IGhhdmVcbiAqIGJ1aWx0LWluIGV4ZWN1dG9ycyAowqc1LjkpIGFuZCBhcmUgbm90IHJlZGVjbGFyZWQgaGVyZS5cbiAqXG4gKiBDb25zdW1lcnMgKGZvci1hbmd1bGFyLCBBTEZSRUQsIGV0Yy4pIGltcG9ydCB0aGVzZSBkZWNsYXJhdGlvbnMgdG8gcG9wdWxhdGVcbiAqIG5vZGUgcGFsZXR0ZXMsIHJlZ2lzdHJpZXMsIGFuZCByZWZlcmVuY2Ugc25hcHNob3RzLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jYXRlZ29yeS1zdHlsZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyaWdnZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mbG93LWNvbnRyb2xcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FnZW50XCI7XG4iXX0=