@decaf-ts/integrations 0.3.8 → 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 (413) 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/esm/graph/engine/constants.js +62 -0
  76. package/lib/esm/graph/engine/decorators.js +2 -0
  77. package/lib/esm/graph/engine/errors/GraphCycleError.js +15 -0
  78. package/lib/esm/graph/engine/errors/GraphExecutionError.js +22 -0
  79. package/lib/esm/graph/engine/errors/GraphInputError.js +15 -0
  80. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +15 -0
  81. package/lib/esm/graph/engine/errors/GraphPinningError.js +15 -0
  82. package/lib/esm/graph/engine/errors/GraphPortError.js +15 -0
  83. package/lib/esm/graph/engine/errors/GraphStoreError.js +15 -0
  84. package/lib/esm/graph/engine/errors/GraphTopologyError.js +15 -0
  85. package/lib/esm/graph/engine/errors/index.js +14 -0
  86. package/lib/esm/graph/engine/events/GraphExecutionEvent.js +2 -0
  87. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +35 -0
  88. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +32 -0
  89. package/lib/esm/graph/engine/events/GraphExecutionObserver.js +2 -0
  90. package/lib/esm/graph/engine/events/index.js +10 -0
  91. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +18 -0
  92. package/lib/esm/graph/engine/execution/GraphExecutionContext.js +74 -0
  93. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +403 -0
  94. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +27 -0
  95. package/lib/esm/graph/engine/execution/GraphExecutionResult.js +26 -0
  96. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +2 -0
  97. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +98 -0
  98. package/lib/esm/graph/engine/execution/index.js +13 -0
  99. package/lib/esm/graph/engine/index.js +67 -0
  100. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +82 -0
  101. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +80 -0
  102. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +80 -0
  103. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +11 -0
  104. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +72 -0
  105. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +73 -0
  106. package/lib/esm/graph/engine/loops/index.js +12 -0
  107. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +23 -0
  108. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +15 -0
  109. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +29 -0
  110. package/lib/esm/graph/engine/pinning/GraphPinningService.js +186 -0
  111. package/lib/esm/graph/engine/pinning/index.js +10 -0
  112. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +2 -0
  113. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +7 -0
  114. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +2 -0
  115. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +2 -0
  116. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +192 -0
  117. package/lib/esm/graph/engine/planning/GraphRelationResolver.js +167 -0
  118. package/lib/esm/graph/engine/planning/GraphTopology.js +52 -0
  119. package/lib/esm/graph/engine/planning/index.js +13 -0
  120. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +39 -0
  121. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +22 -0
  122. package/lib/esm/graph/engine/registry/index.js +8 -0
  123. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +48 -0
  124. package/lib/esm/graph/engine/snapshots/index.js +7 -0
  125. package/lib/esm/graph/engine/store/GraphCachedValue.js +2 -0
  126. package/lib/esm/graph/engine/store/GraphValueKey.js +7 -0
  127. package/lib/esm/graph/engine/store/GraphValueStore.js +71 -0
  128. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +2 -0
  129. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +64 -0
  130. package/lib/esm/graph/engine/store/index.js +11 -0
  131. package/lib/esm/graph/engine/types.js +2 -0
  132. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +28 -0
  133. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +53 -0
  134. package/lib/esm/graph/engine/validation/GraphValueValidator.js +47 -0
  135. package/lib/esm/graph/engine/validation/index.js +9 -0
  136. package/lib/esm/graph/index.js +9 -59
  137. package/lib/esm/graph/shared/constants.js +56 -0
  138. package/lib/esm/graph/shared/index.js +19 -0
  139. package/lib/esm/graph/shared/nodes/agent.js +101 -0
  140. package/lib/esm/graph/shared/nodes/base.js +30 -0
  141. package/lib/esm/graph/shared/nodes/category-styles.js +34 -0
  142. package/lib/esm/graph/shared/nodes/flow-control.js +455 -0
  143. package/lib/esm/graph/shared/nodes/index.js +18 -0
  144. package/lib/esm/graph/shared/nodes/triggers.js +241 -0
  145. package/lib/esm/graph/shared/types.js +2 -0
  146. package/lib/esm/index.js +3 -3
  147. package/lib/types/graph/engine/constants.d.cts +59 -0
  148. package/lib/types/graph/engine/constants.d.mts +59 -0
  149. package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.cts +1 -1
  150. package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.mts +1 -1
  151. package/lib/types/graph/engine/index.d.cts +61 -0
  152. package/lib/types/graph/engine/index.d.mts +61 -0
  153. package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.cts +1 -1
  154. package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.mts +1 -1
  155. package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.cts +2 -1
  156. package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.mts +2 -1
  157. package/lib/types/graph/{types.d.cts → engine/types.d.cts} +8 -116
  158. package/lib/types/graph/{types.d.mts → engine/types.d.mts} +8 -116
  159. package/lib/types/graph/index.d.cts +8 -53
  160. package/lib/types/graph/index.d.mts +8 -53
  161. package/lib/types/graph/shared/constants.d.cts +53 -0
  162. package/lib/types/graph/shared/constants.d.mts +53 -0
  163. package/lib/types/graph/shared/index.d.cts +18 -0
  164. package/lib/types/graph/shared/index.d.mts +18 -0
  165. package/lib/types/graph/shared/types.d.cts +121 -0
  166. package/lib/types/graph/shared/types.d.mts +121 -0
  167. package/lib/types/index.d.cts +2 -2
  168. package/lib/types/index.d.mts +2 -2
  169. package/package.json +14 -3
  170. package/lib/cjs/graph/constants.cjs +0 -94
  171. package/lib/cjs/graph/decorators.cjs +0 -4
  172. package/lib/cjs/graph/errors/GraphCycleError.cjs +0 -20
  173. package/lib/cjs/graph/errors/GraphExecutionError.cjs +0 -27
  174. package/lib/cjs/graph/errors/GraphInputError.cjs +0 -20
  175. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +0 -20
  176. package/lib/cjs/graph/errors/GraphPinningError.cjs +0 -20
  177. package/lib/cjs/graph/errors/GraphPortError.cjs +0 -20
  178. package/lib/cjs/graph/errors/GraphStoreError.cjs +0 -20
  179. package/lib/cjs/graph/errors/GraphTopologyError.cjs +0 -20
  180. package/lib/cjs/graph/events/GraphExecutionEvent.cjs +0 -4
  181. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +0 -40
  182. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +0 -37
  183. package/lib/cjs/graph/events/GraphExecutionObserver.cjs +0 -4
  184. package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +0 -4
  185. package/lib/cjs/graph/execution/GraphExecutionContext.cjs +0 -79
  186. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +0 -407
  187. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +0 -32
  188. package/lib/cjs/graph/execution/GraphExecutionResult.cjs +0 -30
  189. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +0 -4
  190. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +0 -103
  191. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +0 -87
  192. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +0 -84
  193. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +0 -85
  194. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +0 -16
  195. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +0 -76
  196. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +0 -77
  197. package/lib/cjs/graph/nodes/base.cjs +0 -35
  198. package/lib/cjs/graph/nodes/category-styles.cjs +0 -38
  199. package/lib/cjs/graph/nodes/flow-control.cjs +0 -464
  200. package/lib/cjs/graph/nodes/triggers.cjs +0 -250
  201. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +0 -28
  202. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +0 -20
  203. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +0 -34
  204. package/lib/cjs/graph/pinning/GraphPinningService.cjs +0 -191
  205. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +0 -4
  206. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +0 -4
  207. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +0 -4
  208. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +0 -4
  209. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +0 -197
  210. package/lib/cjs/graph/planning/GraphRelationResolver.cjs +0 -172
  211. package/lib/cjs/graph/planning/GraphTopology.cjs +0 -57
  212. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +0 -44
  213. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +0 -27
  214. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +0 -53
  215. package/lib/cjs/graph/store/GraphCachedValue.cjs +0 -4
  216. package/lib/cjs/graph/store/GraphValueKey.cjs +0 -4
  217. package/lib/cjs/graph/store/GraphValueStore.cjs +0 -76
  218. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +0 -4
  219. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +0 -69
  220. package/lib/cjs/graph/types.cjs +0 -4
  221. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +0 -33
  222. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +0 -58
  223. package/lib/cjs/graph/validation/GraphValueValidator.cjs +0 -52
  224. package/lib/esm/graph/constants.js +0 -106
  225. package/lib/esm/graph/decorators.js +0 -2
  226. package/lib/esm/graph/errors/GraphCycleError.js +0 -15
  227. package/lib/esm/graph/errors/GraphExecutionError.js +0 -22
  228. package/lib/esm/graph/errors/GraphInputError.js +0 -15
  229. package/lib/esm/graph/errors/GraphLoopLimitError.js +0 -15
  230. package/lib/esm/graph/errors/GraphPinningError.js +0 -15
  231. package/lib/esm/graph/errors/GraphPortError.js +0 -15
  232. package/lib/esm/graph/errors/GraphStoreError.js +0 -15
  233. package/lib/esm/graph/errors/GraphTopologyError.js +0 -15
  234. package/lib/esm/graph/errors/index.js +0 -14
  235. package/lib/esm/graph/events/GraphExecutionEvent.js +0 -2
  236. package/lib/esm/graph/events/GraphExecutionEventEmitter.js +0 -35
  237. package/lib/esm/graph/events/GraphExecutionEventFactory.js +0 -32
  238. package/lib/esm/graph/events/GraphExecutionObserver.js +0 -2
  239. package/lib/esm/graph/events/index.js +0 -10
  240. package/lib/esm/graph/execution/CodeSandboxEvaluator.js +0 -18
  241. package/lib/esm/graph/execution/GraphExecutionContext.js +0 -74
  242. package/lib/esm/graph/execution/GraphExecutionEngine.js +0 -402
  243. package/lib/esm/graph/execution/GraphExecutionFrame.js +0 -27
  244. package/lib/esm/graph/execution/GraphExecutionResult.js +0 -26
  245. package/lib/esm/graph/execution/GraphNodeExecutor.js +0 -2
  246. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +0 -98
  247. package/lib/esm/graph/execution/index.js +0 -13
  248. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +0 -82
  249. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +0 -79
  250. package/lib/esm/graph/loops/GraphConditionEvaluator.js +0 -80
  251. package/lib/esm/graph/loops/GraphLoopExecutionContext.js +0 -11
  252. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +0 -71
  253. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +0 -72
  254. package/lib/esm/graph/loops/index.js +0 -12
  255. package/lib/esm/graph/nodes/agent.js +0 -101
  256. package/lib/esm/graph/nodes/base.js +0 -30
  257. package/lib/esm/graph/nodes/category-styles.js +0 -34
  258. package/lib/esm/graph/nodes/flow-control.js +0 -455
  259. package/lib/esm/graph/nodes/index.js +0 -18
  260. package/lib/esm/graph/nodes/triggers.js +0 -241
  261. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +0 -23
  262. package/lib/esm/graph/pinning/GraphPinningMetadata.js +0 -15
  263. package/lib/esm/graph/pinning/GraphPinningPolicy.js +0 -29
  264. package/lib/esm/graph/pinning/GraphPinningService.js +0 -186
  265. package/lib/esm/graph/pinning/index.js +0 -10
  266. package/lib/esm/graph/planning/GraphExecutionPlan.js +0 -2
  267. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +0 -7
  268. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +0 -2
  269. package/lib/esm/graph/planning/GraphExecutionPlanNode.js +0 -2
  270. package/lib/esm/graph/planning/GraphExecutionPlanner.js +0 -192
  271. package/lib/esm/graph/planning/GraphRelationResolver.js +0 -167
  272. package/lib/esm/graph/planning/GraphTopology.js +0 -52
  273. package/lib/esm/graph/planning/index.js +0 -13
  274. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +0 -39
  275. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +0 -22
  276. package/lib/esm/graph/registry/index.js +0 -8
  277. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +0 -48
  278. package/lib/esm/graph/snapshots/index.js +0 -7
  279. package/lib/esm/graph/store/GraphCachedValue.js +0 -2
  280. package/lib/esm/graph/store/GraphValueKey.js +0 -7
  281. package/lib/esm/graph/store/GraphValueStore.js +0 -71
  282. package/lib/esm/graph/store/GraphValueStoreAdapter.js +0 -2
  283. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +0 -64
  284. package/lib/esm/graph/store/index.js +0 -11
  285. package/lib/esm/graph/types.js +0 -2
  286. package/lib/esm/graph/validation/GraphDefinitionValidator.js +0 -28
  287. package/lib/esm/graph/validation/GraphPortSchemaResolver.js +0 -53
  288. package/lib/esm/graph/validation/GraphValueValidator.js +0 -47
  289. package/lib/esm/graph/validation/index.js +0 -9
  290. package/lib/types/graph/constants.d.cts +0 -101
  291. package/lib/types/graph/constants.d.mts +0 -101
  292. /package/lib/types/graph/{decorators.d.cts → engine/decorators.d.cts} +0 -0
  293. /package/lib/types/graph/{decorators.d.mts → engine/decorators.d.mts} +0 -0
  294. /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.cts +0 -0
  295. /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.mts +0 -0
  296. /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.cts +0 -0
  297. /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.mts +0 -0
  298. /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.cts +0 -0
  299. /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.mts +0 -0
  300. /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.cts +0 -0
  301. /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.mts +0 -0
  302. /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.cts +0 -0
  303. /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.mts +0 -0
  304. /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.cts +0 -0
  305. /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.mts +0 -0
  306. /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.cts +0 -0
  307. /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.mts +0 -0
  308. /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.cts +0 -0
  309. /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.mts +0 -0
  310. /package/lib/types/graph/{errors → engine/errors}/index.d.cts +0 -0
  311. /package/lib/types/graph/{errors → engine/errors}/index.d.mts +0 -0
  312. /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.cts +0 -0
  313. /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.mts +0 -0
  314. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.cts +0 -0
  315. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.mts +0 -0
  316. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.cts +0 -0
  317. /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.mts +0 -0
  318. /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.cts +0 -0
  319. /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.mts +0 -0
  320. /package/lib/types/graph/{events → engine/events}/index.d.cts +0 -0
  321. /package/lib/types/graph/{events → engine/events}/index.d.mts +0 -0
  322. /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.cts +0 -0
  323. /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.mts +0 -0
  324. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.cts +0 -0
  325. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.mts +0 -0
  326. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.cts +0 -0
  327. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.mts +0 -0
  328. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.cts +0 -0
  329. /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.mts +0 -0
  330. /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.cts +0 -0
  331. /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.mts +0 -0
  332. /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.cts +0 -0
  333. /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.mts +0 -0
  334. /package/lib/types/graph/{execution → engine/execution}/index.d.cts +0 -0
  335. /package/lib/types/graph/{execution → engine/execution}/index.d.mts +0 -0
  336. /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.cts +0 -0
  337. /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.mts +0 -0
  338. /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.cts +0 -0
  339. /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.mts +0 -0
  340. /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.cts +0 -0
  341. /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.mts +0 -0
  342. /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.cts +0 -0
  343. /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.mts +0 -0
  344. /package/lib/types/graph/{loops → engine/loops}/index.d.cts +0 -0
  345. /package/lib/types/graph/{loops → engine/loops}/index.d.mts +0 -0
  346. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.cts +0 -0
  347. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.mts +0 -0
  348. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.cts +0 -0
  349. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.mts +0 -0
  350. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.cts +0 -0
  351. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.mts +0 -0
  352. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.cts +0 -0
  353. /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.mts +0 -0
  354. /package/lib/types/graph/{pinning → engine/pinning}/index.d.cts +0 -0
  355. /package/lib/types/graph/{pinning → engine/pinning}/index.d.mts +0 -0
  356. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.cts +0 -0
  357. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.mts +0 -0
  358. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.cts +0 -0
  359. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.mts +0 -0
  360. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.cts +0 -0
  361. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.mts +0 -0
  362. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.cts +0 -0
  363. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.mts +0 -0
  364. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.cts +0 -0
  365. /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.mts +0 -0
  366. /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.cts +0 -0
  367. /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.mts +0 -0
  368. /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.cts +0 -0
  369. /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.mts +0 -0
  370. /package/lib/types/graph/{planning → engine/planning}/index.d.cts +0 -0
  371. /package/lib/types/graph/{planning → engine/planning}/index.d.mts +0 -0
  372. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.cts +0 -0
  373. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.mts +0 -0
  374. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.cts +0 -0
  375. /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.mts +0 -0
  376. /package/lib/types/graph/{registry → engine/registry}/index.d.cts +0 -0
  377. /package/lib/types/graph/{registry → engine/registry}/index.d.mts +0 -0
  378. /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.cts +0 -0
  379. /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.mts +0 -0
  380. /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.cts +0 -0
  381. /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.mts +0 -0
  382. /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.cts +0 -0
  383. /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.mts +0 -0
  384. /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.cts +0 -0
  385. /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.mts +0 -0
  386. /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.cts +0 -0
  387. /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.mts +0 -0
  388. /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.cts +0 -0
  389. /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.mts +0 -0
  390. /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.cts +0 -0
  391. /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.mts +0 -0
  392. /package/lib/types/graph/{store → engine/store}/index.d.cts +0 -0
  393. /package/lib/types/graph/{store → engine/store}/index.d.mts +0 -0
  394. /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.cts +0 -0
  395. /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.mts +0 -0
  396. /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.cts +0 -0
  397. /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.mts +0 -0
  398. /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.cts +0 -0
  399. /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.mts +0 -0
  400. /package/lib/types/graph/{validation → engine/validation}/index.d.cts +0 -0
  401. /package/lib/types/graph/{validation → engine/validation}/index.d.mts +0 -0
  402. /package/lib/types/graph/{nodes → shared/nodes}/agent.d.cts +0 -0
  403. /package/lib/types/graph/{nodes → shared/nodes}/agent.d.mts +0 -0
  404. /package/lib/types/graph/{nodes → shared/nodes}/base.d.cts +0 -0
  405. /package/lib/types/graph/{nodes → shared/nodes}/base.d.mts +0 -0
  406. /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.cts +0 -0
  407. /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.mts +0 -0
  408. /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.cts +0 -0
  409. /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.mts +0 -0
  410. /package/lib/types/graph/{nodes → shared/nodes}/index.d.cts +0 -0
  411. /package/lib/types/graph/{nodes → shared/nodes}/index.d.mts +0 -0
  412. /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.cts +0 -0
  413. /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.mts +0 -0
@@ -0,0 +1,73 @@
1
+ import { GRAPH_DEFAULT_MAX_LOOP_ITERATIONS } from "./../constants.js";
2
+ import { GraphExecutionEventType } from "./../../shared/constants.js";
3
+ import { GraphInputError } from "./../errors/GraphInputError.js";
4
+ import { GraphLoopLimitError } from "./../errors/GraphLoopLimitError.js";
5
+ import { GraphConditionEvaluator } from "./GraphConditionEvaluator.js";
6
+ /**
7
+ * Executor for `core.loop.while` nodes.
8
+ *
9
+ * Expects input:
10
+ * - `state`: initial state
11
+ *
12
+ * Produces output:
13
+ * - `state`: final state
14
+ * - `iterations`: number of iterations executed
15
+ */
16
+ export class WhileGraphNodeExecutor {
17
+ constructor(engine) {
18
+ this.engine = engine;
19
+ this.evaluator = new GraphConditionEvaluator();
20
+ }
21
+ async execute(input, context) {
22
+ const metadata = this.extractMetadata(context);
23
+ const maxIterations = metadata.maxIterations ?? GRAPH_DEFAULT_MAX_LOOP_ITERATIONS;
24
+ const condition = metadata.condition;
25
+ if (!condition) {
26
+ throw new GraphInputError("while node is missing a condition");
27
+ }
28
+ const statePort = metadata.statePort ?? "state";
29
+ const bodyWorkflow = metadata.body;
30
+ let state = input.state;
31
+ let iteration = 0;
32
+ await context.emit({ type: GraphExecutionEventType.LOOP_STARTED });
33
+ while (this.evaluator.evaluate(condition, state)) {
34
+ if (iteration >= maxIterations) {
35
+ await context.emit({
36
+ type: GraphExecutionEventType.LOOP_LIMIT_REACHED,
37
+ iteration,
38
+ });
39
+ throw new GraphLoopLimitError(`while loop exceeded max iterations (${maxIterations})`);
40
+ }
41
+ await context.emit({
42
+ type: GraphExecutionEventType.LOOP_CONDITION_EVALUATED,
43
+ iteration,
44
+ payload: { result: true },
45
+ });
46
+ await context.emit({
47
+ type: GraphExecutionEventType.LOOP_ITERATION_STARTED,
48
+ iteration,
49
+ });
50
+ const childResult = await this.engine.execute(bodyWorkflow, { [statePort]: state, iteration }, {
51
+ parentRunId: context.runId,
52
+ path: [...context.path, `iteration:${iteration}`],
53
+ });
54
+ state = childResult.outputs[statePort];
55
+ await context.emit({
56
+ type: GraphExecutionEventType.LOOP_ITERATION_COMPLETED,
57
+ iteration,
58
+ });
59
+ iteration++;
60
+ }
61
+ await context.emit({ type: GraphExecutionEventType.LOOP_COMPLETED });
62
+ return { [statePort]: state, iterations: iteration };
63
+ }
64
+ extractMetadata(context) {
65
+ const raw = context.node.graph?.metadata?.loop ??
66
+ context.metadata?.loop;
67
+ if (!raw) {
68
+ throw new GraphInputError("while node is missing loop metadata");
69
+ }
70
+ return raw;
71
+ }
72
+ }
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2hpbGVHcmFwaE5vZGVFeGVjdXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvbG9vcHMvV2hpbGVHcmFwaE5vZGVFeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsMEJBQXFCO0FBQ2pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxvQ0FBK0I7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSx1Q0FBa0M7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDJDQUFzQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUscUNBQWtDO0FBRXBFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFBNkIsTUFBNEI7UUFBNUIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFGeEMsY0FBUyxHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQztJQUVDLENBQUM7SUFFN0QsS0FBSyxDQUFDLE9BQU8sQ0FDWCxLQUEyQixFQUMzQixPQUE4QjtRQUU5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sYUFBYSxHQUNqQixRQUFRLENBQUMsYUFBYSxJQUFJLGlDQUFpQyxDQUFDO1FBQzlELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLGVBQWUsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBK0IsQ0FBQztRQUU5RCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUVsQixNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUVuRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pELElBQUksU0FBUyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxrQkFBa0I7b0JBQ2hELFNBQVM7aUJBQ1YsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0IsdUNBQXVDLGFBQWEsR0FBRyxDQUN4RCxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLHdCQUF3QjtnQkFDdEQsU0FBUztnQkFDVCxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2FBQzFCLENBQUMsQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLHNCQUFzQjtnQkFDcEQsU0FBUzthQUNWLENBQUMsQ0FBQztZQUVILE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQzNDLFlBQVksRUFDWixFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUNqQztnQkFDRSxXQUFXLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQzFCLElBQUksRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxhQUFhLFNBQVMsRUFBRSxDQUFDO2FBQ2xELENBQ0YsQ0FBQztZQUVGLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXZDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLHdCQUF3QjtnQkFDdEQsU0FBUzthQUNWLENBQUMsQ0FBQztZQUVILFNBQVMsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxPQUE4QjtRQUNwRCxNQUFNLEdBQUcsR0FBSSxPQUFPLENBQUMsSUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTtZQUNwRCxPQUFPLENBQUMsUUFBZ0IsRUFBRSxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLGVBQWUsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxPQUFPLEdBQXdCLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9sb29wcy9XaGlsZUdyYXBoTm9kZUV4ZWN1dG9yXG4gKiBAc3VtbWFyeSBXaGlsZSBsb29wIG5vZGUgZXhlY3V0b3IuXG4gKiBAZGVzY3JpcHRpb24gRXhlY3V0ZXMgYSBib2R5IHdvcmtmbG93IHJlcGVhdGVkbHkgd2hpbGUgYSBjb25kaXRpb24gaXMgdHJ1ZSwgZW5mb3JjaW5nIGEgbWF4aW11bSBpdGVyYXRpb24gbGltaXQuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRXhlY3V0b3IgfSBmcm9tIFwiLi4vZXhlY3V0aW9uL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gXCIuLi9leGVjdXRpb24vR3JhcGhFeGVjdXRpb25Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uRW5naW5lIH0gZnJvbSBcIi4uL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvbkVuZ2luZVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblZhbHVlcywgR3JhcGhMb29wTWV0YWRhdGEgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHsgR1JBUEhfREVGQVVMVF9NQVhfTE9PUF9JVEVSQVRJT05TIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25FdmVudFR5cGUgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgR3JhcGhJbnB1dEVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaElucHV0RXJyb3JcIjtcbmltcG9ydCB7IEdyYXBoTG9vcExpbWl0RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL0dyYXBoTG9vcExpbWl0RXJyb3JcIjtcbmltcG9ydCB7IEdyYXBoQ29uZGl0aW9uRXZhbHVhdG9yIH0gZnJvbSBcIi4vR3JhcGhDb25kaXRpb25FdmFsdWF0b3JcIjtcblxuLyoqXG4gKiBFeGVjdXRvciBmb3IgYGNvcmUubG9vcC53aGlsZWAgbm9kZXMuXG4gKlxuICogRXhwZWN0cyBpbnB1dDpcbiAqIC0gYHN0YXRlYDogaW5pdGlhbCBzdGF0ZVxuICpcbiAqIFByb2R1Y2VzIG91dHB1dDpcbiAqIC0gYHN0YXRlYDogZmluYWwgc3RhdGVcbiAqIC0gYGl0ZXJhdGlvbnNgOiBudW1iZXIgb2YgaXRlcmF0aW9ucyBleGVjdXRlZFxuICovXG5leHBvcnQgY2xhc3MgV2hpbGVHcmFwaE5vZGVFeGVjdXRvciBpbXBsZW1lbnRzIEdyYXBoTm9kZUV4ZWN1dG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBldmFsdWF0b3IgPSBuZXcgR3JhcGhDb25kaXRpb25FdmFsdWF0b3IoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVuZ2luZTogR3JhcGhFeGVjdXRpb25FbmdpbmUpIHt9XG5cbiAgYXN5bmMgZXhlY3V0ZShcbiAgICBpbnB1dDogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4gICk6IFByb21pc2U8R3JhcGhFeGVjdXRpb25WYWx1ZXM+IHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXh0cmFjdE1ldGFkYXRhKGNvbnRleHQpO1xuICAgIGNvbnN0IG1heEl0ZXJhdGlvbnMgPVxuICAgICAgbWV0YWRhdGEubWF4SXRlcmF0aW9ucyA/PyBHUkFQSF9ERUZBVUxUX01BWF9MT09QX0lURVJBVElPTlM7XG4gICAgY29uc3QgY29uZGl0aW9uID0gbWV0YWRhdGEuY29uZGl0aW9uO1xuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhJbnB1dEVycm9yKFwid2hpbGUgbm9kZSBpcyBtaXNzaW5nIGEgY29uZGl0aW9uXCIpO1xuICAgIH1cbiAgICBjb25zdCBzdGF0ZVBvcnQgPSBtZXRhZGF0YS5zdGF0ZVBvcnQgPz8gXCJzdGF0ZVwiO1xuICAgIGNvbnN0IGJvZHlXb3JrZmxvdyA9IG1ldGFkYXRhLmJvZHkgYXMgR3JhcGhXb3JrZmxvd0RlZmluaXRpb247XG5cbiAgICBsZXQgc3RhdGUgPSBpbnB1dC5zdGF0ZTtcbiAgICBsZXQgaXRlcmF0aW9uID0gMDtcblxuICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7IHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfU1RBUlRFRCB9KTtcblxuICAgIHdoaWxlICh0aGlzLmV2YWx1YXRvci5ldmFsdWF0ZShjb25kaXRpb24sIHN0YXRlKSkge1xuICAgICAgaWYgKGl0ZXJhdGlvbiA+PSBtYXhJdGVyYXRpb25zKSB7XG4gICAgICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7XG4gICAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTE9PUF9MSU1JVF9SRUFDSEVELFxuICAgICAgICAgIGl0ZXJhdGlvbixcbiAgICAgICAgfSk7XG4gICAgICAgIHRocm93IG5ldyBHcmFwaExvb3BMaW1pdEVycm9yKFxuICAgICAgICAgIGB3aGlsZSBsb29wIGV4Y2VlZGVkIG1heCBpdGVyYXRpb25zICgke21heEl0ZXJhdGlvbnN9KWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgY29udGV4dC5lbWl0KHtcbiAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTE9PUF9DT05ESVRJT05fRVZBTFVBVEVELFxuICAgICAgICBpdGVyYXRpb24sXG4gICAgICAgIHBheWxvYWQ6IHsgcmVzdWx0OiB0cnVlIH0sXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7XG4gICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfSVRFUkFUSU9OX1NUQVJURUQsXG4gICAgICAgIGl0ZXJhdGlvbixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjaGlsZFJlc3VsdCA9IGF3YWl0IHRoaXMuZW5naW5lLmV4ZWN1dGUoXG4gICAgICAgIGJvZHlXb3JrZmxvdyxcbiAgICAgICAgeyBbc3RhdGVQb3J0XTogc3RhdGUsIGl0ZXJhdGlvbiB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyZW50UnVuSWQ6IGNvbnRleHQucnVuSWQsXG4gICAgICAgICAgcGF0aDogWy4uLmNvbnRleHQucGF0aCwgYGl0ZXJhdGlvbjoke2l0ZXJhdGlvbn1gXSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgc3RhdGUgPSBjaGlsZFJlc3VsdC5vdXRwdXRzW3N0YXRlUG9ydF07XG5cbiAgICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7XG4gICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfSVRFUkFUSU9OX0NPTVBMRVRFRCxcbiAgICAgICAgaXRlcmF0aW9uLFxuICAgICAgfSk7XG5cbiAgICAgIGl0ZXJhdGlvbisrO1xuICAgIH1cblxuICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7IHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfQ09NUExFVEVEIH0pO1xuXG4gICAgcmV0dXJuIHsgW3N0YXRlUG9ydF06IHN0YXRlLCBpdGVyYXRpb25zOiBpdGVyYXRpb24gfTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdE1ldGFkYXRhKGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dCk6IEdyYXBoTG9vcE1ldGFkYXRhIHtcbiAgICBjb25zdCByYXcgPSAoY29udGV4dC5ub2RlIGFzIGFueSkuZ3JhcGg/Lm1ldGFkYXRhPy5sb29wID8/XG4gICAgICAoY29udGV4dC5tZXRhZGF0YSBhcyBhbnkpPy5sb29wO1xuICAgIGlmICghcmF3KSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhJbnB1dEVycm9yKFwid2hpbGUgbm9kZSBpcyBtaXNzaW5nIGxvb3AgbWV0YWRhdGFcIik7XG4gICAgfVxuICAgIHJldHVybiByYXcgYXMgR3JhcGhMb29wTWV0YWRhdGE7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @module integrations/graph/loops
3
+ * @summary Structured loop executors.
4
+ * @description Re-exports the condition evaluator, loop execution context, and foreach/while/until executors.
5
+ */
6
+ export * from "./GraphConditionEvaluator.js";
7
+ export * from "./ConditionExpressionEvaluator.js";
8
+ export * from "./GraphLoopExecutionContext.js";
9
+ export * from "./ForeachGraphNodeExecutor.js";
10
+ export * from "./WhileGraphNodeExecutor.js";
11
+ export * from "./UntilGraphNodeExecutor.js";
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2xvb3BzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCw2Q0FBMEM7QUFDMUMsa0RBQStDO0FBQy9DLCtDQUE0QztBQUM1Qyw4Q0FBMkM7QUFDM0MsNENBQXlDO0FBQ3pDLDRDQUF5QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvbG9vcHNcbiAqIEBzdW1tYXJ5IFN0cnVjdHVyZWQgbG9vcCBleGVjdXRvcnMuXG4gKiBAZGVzY3JpcHRpb24gUmUtZXhwb3J0cyB0aGUgY29uZGl0aW9uIGV2YWx1YXRvciwgbG9vcCBleGVjdXRpb24gY29udGV4dCwgYW5kIGZvcmVhY2gvd2hpbGUvdW50aWwgZXhlY3V0b3JzLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaENvbmRpdGlvbkV2YWx1YXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhMb29wRXhlY3V0aW9uQ29udGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vRm9yZWFjaEdyYXBoTm9kZUV4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9XaGlsZUdyYXBoTm9kZUV4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9VbnRpbEdyYXBoTm9kZUV4ZWN1dG9yXCI7XG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { GraphTopology } from "./../planning/GraphTopology.js";
2
+ /**
3
+ * Resolves the upstream dependency subtree of a node for pinning operations.
4
+ */
5
+ export class GraphPinningDependencyResolver {
6
+ /**
7
+ * Returns the set of upstream node ids that the given node depends on,
8
+ * excluding the workflow boundary.
9
+ */
10
+ getDependencies(plan, nodeId) {
11
+ return GraphTopology.upstreamNodes(nodeId, plan.incomingByNode, false);
12
+ }
13
+ /**
14
+ * Returns the full set of node ids to pin: the node itself plus all its
15
+ * upstream dependencies.
16
+ */
17
+ getPinSet(plan, nodeId) {
18
+ const deps = this.getDependencies(plan, nodeId);
19
+ deps.add(nodeId);
20
+ return deps;
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL2VuZ2luZS9waW5uaW5nL0dyYXBoUGlubmluZ0RlcGVuZGVuY3lSZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsYUFBYSxFQUFFLHVDQUFrQztBQUUxRDs7R0FFRztBQUNILE1BQU0sT0FBTyw4QkFBOEI7SUFDekM7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLElBQXdCLEVBQUUsTUFBYztRQUN0RCxPQUFPLGFBQWEsQ0FBQyxhQUFhLENBQ2hDLE1BQU0sRUFDTixJQUFJLENBQUMsY0FBYyxFQUNuQixLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsSUFBd0IsRUFBRSxNQUFjO1FBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3Bpbm5pbmcvR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyXG4gKiBAc3VtbWFyeSBSZXNvbHZlcyB1cHN0cmVhbSBkZXBlbmRlbmN5IHN1YnRyZWVzIGZvciBwaW5uaW5nLlxuICogQGRlc2NyaXB0aW9uIFdoZW4gYSBub2RlIGlzIHBpbm5lZCwgYWxsIHVwc3RyZWFtIG5vZGVzIGl0IGRlcGVuZHMgb24gbXVzdCBhbHNvIGJlIHBpbm5lZC4gVGhpcyByZXNvbHZlciBjb21wdXRlcyB0aGUgZGVwZW5kZW5jeSBzZXQuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuIH0gZnJvbSBcIi4uL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhblwiO1xuaW1wb3J0IHsgR3JhcGhUb3BvbG9neSB9IGZyb20gXCIuLi9wbGFubmluZy9HcmFwaFRvcG9sb2d5XCI7XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHVwc3RyZWFtIGRlcGVuZGVuY3kgc3VidHJlZSBvZiBhIG5vZGUgZm9yIHBpbm5pbmcgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUGlubmluZ0RlcGVuZGVuY3lSZXNvbHZlciB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgdXBzdHJlYW0gbm9kZSBpZHMgdGhhdCB0aGUgZ2l2ZW4gbm9kZSBkZXBlbmRzIG9uLFxuICAgKiBleGNsdWRpbmcgdGhlIHdvcmtmbG93IGJvdW5kYXJ5LlxuICAgKi9cbiAgZ2V0RGVwZW5kZW5jaWVzKHBsYW46IEdyYXBoRXhlY3V0aW9uUGxhbiwgbm9kZUlkOiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gICAgcmV0dXJuIEdyYXBoVG9wb2xvZ3kudXBzdHJlYW1Ob2RlcyhcbiAgICAgIG5vZGVJZCxcbiAgICAgIHBsYW4uaW5jb21pbmdCeU5vZGUsXG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZnVsbCBzZXQgb2Ygbm9kZSBpZHMgdG8gcGluOiB0aGUgbm9kZSBpdHNlbGYgcGx1cyBhbGwgaXRzXG4gICAqIHVwc3RyZWFtIGRlcGVuZGVuY2llcy5cbiAgICovXG4gIGdldFBpblNldChwbGFuOiBHcmFwaEV4ZWN1dGlvblBsYW4sIG5vZGVJZDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvbnN0IGRlcHMgPSB0aGlzLmdldERlcGVuZGVuY2llcyhwbGFuLCBub2RlSWQpO1xuICAgIGRlcHMuYWRkKG5vZGVJZCk7XG4gICAgcmV0dXJuIGRlcHM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Default pinning metadata applied when `@pinnable()` is used without options.
3
+ */
4
+ export const DEFAULT_PINNING_METADATA = {
5
+ enabled: true,
6
+ strategy: "manual",
7
+ includeDependencies: true,
8
+ };
9
+ /**
10
+ * Returns `true` when the given metadata allows pinning.
11
+ */
12
+ export function isPinnable(metadata) {
13
+ return metadata?.enabled === true && metadata.strategy !== "disabled";
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nTWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL3Bpbm5pbmcvR3JhcGhQaW5uaW5nTWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBeUI7SUFDNUQsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsUUFBUTtJQUNsQixtQkFBbUIsRUFBRSxJQUFJO0NBQzFCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsUUFBMEM7SUFDbkUsT0FBTyxRQUFRLEVBQUUsT0FBTyxLQUFLLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9waW5uaW5nL0dyYXBoUGlubmluZ01ldGFkYXRhXG4gKiBAc3VtbWFyeSBQaW5uaW5nIG1ldGFkYXRhIGRlZmF1bHRzIGFuZCBoZWxwZXJzLlxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGRlZmF1bHQgcGlubmluZyBtZXRhZGF0YSB2YWx1ZXMgYW5kIGEgaGVscGVyIHRvIGNoZWNrIHBpbm5hYmlsaXR5LiBUaGUgYEdyYXBoUGlubmluZ01ldGFkYXRhYCB0eXBlIGl0c2VsZiBpcyBkZWZpbmVkIGluIGAuLi90eXBlc2AgYW5kIHJlLWV4cG9ydGVkIGZyb20gdGhlIHBhY2thZ2Ugcm9vdC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaFBpbm5pbmdNZXRhZGF0YSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIERlZmF1bHQgcGlubmluZyBtZXRhZGF0YSBhcHBsaWVkIHdoZW4gYEBwaW5uYWJsZSgpYCBpcyB1c2VkIHdpdGhvdXQgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUElOTklOR19NRVRBREFUQTogR3JhcGhQaW5uaW5nTWV0YWRhdGEgPSB7XG4gIGVuYWJsZWQ6IHRydWUsXG4gIHN0cmF0ZWd5OiBcIm1hbnVhbFwiLFxuICBpbmNsdWRlRGVwZW5kZW5jaWVzOiB0cnVlLFxufTtcblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBnaXZlbiBtZXRhZGF0YSBhbGxvd3MgcGlubmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGlubmFibGUobWV0YWRhdGE6IEdyYXBoUGlubmluZ01ldGFkYXRhIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiBtZXRhZGF0YT8uZW5hYmxlZCA9PT0gdHJ1ZSAmJiBtZXRhZGF0YS5zdHJhdGVneSAhPT0gXCJkaXNhYmxlZFwiO1xufVxuIl19
@@ -0,0 +1,29 @@
1
+ import { DEFAULT_PINNING_METADATA, isPinnable } from "./GraphPinningMetadata.js";
2
+ /**
3
+ * Policy that decides pinning behaviour for a plan node.
4
+ */
5
+ export class GraphPinningPolicy {
6
+ /** Returns whether the node is allowed to be pinned. */
7
+ canPin(node) {
8
+ return isPinnable(this.getPinningMetadata(node));
9
+ }
10
+ /** Returns whether the engine should attempt to use a pinned value for the node. */
11
+ shouldUsePinnedValue(node) {
12
+ const metadata = this.getPinningMetadata(node);
13
+ return metadata.enabled === true && metadata.strategy !== "disabled";
14
+ }
15
+ /** Returns whether automatic pinning should occur after execution. */
16
+ shouldAutoPin(node) {
17
+ const metadata = this.getPinningMetadata(node);
18
+ return metadata.enabled === true && metadata.strategy === "automatic";
19
+ }
20
+ /** Extracts pinning metadata from a plan node. */
21
+ getPinningMetadata(node) {
22
+ const raw = node.definition?.graph?.metadata?.pinnable ??
23
+ node.metadata?.pinnable;
24
+ return raw
25
+ ? { ...DEFAULT_PINNING_METADATA, ...raw }
26
+ : { ...DEFAULT_PINNING_METADATA, enabled: false };
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nUG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL2VuZ2luZS9waW5uaW5nL0dyYXBoUGlubmluZ1BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsVUFBVSxFQUFFLGtDQUErQjtBQUU5RTs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0Isd0RBQXdEO0lBQ3hELE1BQU0sQ0FBQyxJQUE0QjtRQUNqQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsb0ZBQW9GO0lBQ3BGLG9CQUFvQixDQUFDLElBQTRCO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsYUFBYSxDQUFDLElBQTRCO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsa0JBQWtCLENBQUMsSUFBNEI7UUFDN0MsTUFBTSxHQUFHLEdBQ04sSUFBSSxDQUFDLFVBQWtCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRO1lBQ2xELElBQUksQ0FBQyxRQUFnQixFQUFFLFFBQVEsQ0FBQztRQUNuQyxPQUFPLEdBQUc7WUFDUixDQUFDLENBQUMsRUFBRSxHQUFHLHdCQUF3QixFQUFFLEdBQUcsR0FBRyxFQUFFO1lBQ3pDLENBQUMsQ0FBQyxFQUFFLEdBQUcsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3RELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGlubmluZy9HcmFwaFBpbm5pbmdQb2xpY3lcbiAqIEBzdW1tYXJ5IERlY2lkZXMgd2hldGhlciBhIG5vZGUgY2FuIGJlIHBpbm5lZCBhbmQgd2hldGhlciBwaW5uZWQgdmFsdWVzIHNob3VsZCBiZSB1c2VkLlxuICogQGRlc2NyaXB0aW9uIFJlYWRzIHBpbm5pbmcgbWV0YWRhdGEgZnJvbSBwbGFuIG5vZGVzIGFuZCBlbmZvcmNlcyB0aGUgcGlubmluZyBzdHJhdGVneS5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlIH0gZnJvbSBcIi4uL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbk5vZGVcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhQaW5uaW5nTWV0YWRhdGEgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IERFRkFVTFRfUElOTklOR19NRVRBREFUQSwgaXNQaW5uYWJsZSB9IGZyb20gXCIuL0dyYXBoUGlubmluZ01ldGFkYXRhXCI7XG5cbi8qKlxuICogUG9saWN5IHRoYXQgZGVjaWRlcyBwaW5uaW5nIGJlaGF2aW91ciBmb3IgYSBwbGFuIG5vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFBpbm5pbmdQb2xpY3kge1xuICAvKiogUmV0dXJucyB3aGV0aGVyIHRoZSBub2RlIGlzIGFsbG93ZWQgdG8gYmUgcGlubmVkLiAqL1xuICBjYW5QaW4obm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1Bpbm5hYmxlKHRoaXMuZ2V0UGlubmluZ01ldGFkYXRhKG5vZGUpKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGVuZ2luZSBzaG91bGQgYXR0ZW1wdCB0byB1c2UgYSBwaW5uZWQgdmFsdWUgZm9yIHRoZSBub2RlLiAqL1xuICBzaG91bGRVc2VQaW5uZWRWYWx1ZShub2RlOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmdldFBpbm5pbmdNZXRhZGF0YShub2RlKTtcbiAgICByZXR1cm4gbWV0YWRhdGEuZW5hYmxlZCA9PT0gdHJ1ZSAmJiBtZXRhZGF0YS5zdHJhdGVneSAhPT0gXCJkaXNhYmxlZFwiO1xuICB9XG5cbiAgLyoqIFJldHVybnMgd2hldGhlciBhdXRvbWF0aWMgcGlubmluZyBzaG91bGQgb2NjdXIgYWZ0ZXIgZXhlY3V0aW9uLiAqL1xuICBzaG91bGRBdXRvUGluKG5vZGU6IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZ2V0UGlubmluZ01ldGFkYXRhKG5vZGUpO1xuICAgIHJldHVybiBtZXRhZGF0YS5lbmFibGVkID09PSB0cnVlICYmIG1ldGFkYXRhLnN0cmF0ZWd5ID09PSBcImF1dG9tYXRpY1wiO1xuICB9XG5cbiAgLyoqIEV4dHJhY3RzIHBpbm5pbmcgbWV0YWRhdGEgZnJvbSBhIHBsYW4gbm9kZS4gKi9cbiAgZ2V0UGlubmluZ01ldGFkYXRhKG5vZGU6IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUpOiBHcmFwaFBpbm5pbmdNZXRhZGF0YSB7XG4gICAgY29uc3QgcmF3ID1cbiAgICAgIChub2RlLmRlZmluaXRpb24gYXMgYW55KT8uZ3JhcGg/Lm1ldGFkYXRhPy5waW5uYWJsZSA/P1xuICAgICAgKG5vZGUubWV0YWRhdGEgYXMgYW55KT8ucGlubmFibGU7XG4gICAgcmV0dXJuIHJhd1xuICAgICAgPyB7IC4uLkRFRkFVTFRfUElOTklOR19NRVRBREFUQSwgLi4ucmF3IH1cbiAgICAgIDogeyAuLi5ERUZBVUxUX1BJTk5JTkdfTUVUQURBVEEsIGVuYWJsZWQ6IGZhbHNlIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @module integrations/graph/pinning/GraphPinningService
3
+ * @summary Service for pinning and unpinning graph node values.
4
+ * @description Computes stable fingerprints, pins/unpins nodes and their upstream dependencies, reads pinned values, and emits pinning events. Pinning is all-or-nothing: if any upstream dependency is not pinnable, the operation fails.
5
+ */
6
+ import { GRAPH_PINNING_METADATA_KEY } from "./../constants.js";
7
+ import { GraphPinningError } from "./../errors/GraphPinningError.js";
8
+ import { GraphTopology } from "./../planning/GraphTopology.js";
9
+ /**
10
+ * Service that manages pinning and unpinning of graph node values.
11
+ */
12
+ export class GraphPinningService {
13
+ constructor(store, policy, dependencyResolver) {
14
+ this.store = store;
15
+ this.policy = policy;
16
+ this.dependencyResolver = dependencyResolver;
17
+ }
18
+ /**
19
+ * Pins a node and all its upstream dependencies.
20
+ *
21
+ * @throws {GraphPinningError} when the node or any dependency is not pinnable.
22
+ */
23
+ async pinNode(options) {
24
+ const plan = options.plan;
25
+ const includeDependencies = options.includeDependencies ?? true;
26
+ const pinSet = includeDependencies
27
+ ? this.dependencyResolver.getPinSet(plan, options.nodeId)
28
+ : new Set([options.nodeId]);
29
+ // Validate all-or-nothing
30
+ for (const nodeId of pinSet) {
31
+ const node = plan.nodes.find((n) => n.id === nodeId);
32
+ if (!node) {
33
+ throw new GraphPinningError(`Node '${nodeId}' not found in plan`);
34
+ }
35
+ if (!this.policy.canPin(node)) {
36
+ throw new GraphPinningError(`Node '${nodeId}' is not pinnable`, { nodeId });
37
+ }
38
+ }
39
+ // Pin dependencies first, then the selected node
40
+ const ordered = this.topologicalOrder(plan, pinSet);
41
+ for (const nodeId of ordered) {
42
+ const node = plan.nodes.find((n) => n.id === nodeId);
43
+ const result = options.result.nodeResults[nodeId];
44
+ if (!result || !result.outputs) {
45
+ throw new GraphPinningError(`Node '${nodeId}' has no completed output to pin`);
46
+ }
47
+ const inputs = result.inputs ?? {};
48
+ const depFingerprints = this.dependencyFingerprints(plan, nodeId, options.result);
49
+ const key = this.createValueKey(options.workflow, node, inputs, depFingerprints, options.namespace);
50
+ const now = new Date().toISOString();
51
+ const cached = {
52
+ key,
53
+ outputs: result.outputs,
54
+ pinned: true,
55
+ createdAt: now,
56
+ updatedAt: now,
57
+ metadata: { ...options.result.metadata, nodeId },
58
+ };
59
+ await this.store.writeCached(key, cached);
60
+ }
61
+ }
62
+ /**
63
+ * Unpins a single node (does not unpin dependents in v1).
64
+ */
65
+ async unpinNode(options) {
66
+ const key = {
67
+ workflowId: options.workflow.name,
68
+ nodeId: options.nodeId,
69
+ fingerprint: options.fingerprint,
70
+ namespace: options.namespace,
71
+ };
72
+ await this.store.deleteCached(key);
73
+ }
74
+ /**
75
+ * Reads a pinned value for a node, returning `undefined` when no valid
76
+ * pinned value exists.
77
+ */
78
+ async readPinnedValue(workflow, node, inputs, dependencyFingerprints, namespace) {
79
+ const key = this.createValueKey(workflow, node, inputs, dependencyFingerprints, namespace);
80
+ const cached = await this.store.readCached(key);
81
+ if (cached && cached.pinned) {
82
+ if (cached.expiresAt && new Date(cached.expiresAt) < new Date()) {
83
+ return undefined;
84
+ }
85
+ return cached;
86
+ }
87
+ return undefined;
88
+ }
89
+ /**
90
+ * Creates a stable value key for a node.
91
+ */
92
+ createValueKey(workflow, node, inputs, dependencyFingerprints, namespace) {
93
+ return {
94
+ workflowId: workflow.name,
95
+ nodeId: node.id,
96
+ fingerprint: this.computeFingerprint(workflow, node, inputs, dependencyFingerprints),
97
+ namespace,
98
+ };
99
+ }
100
+ /**
101
+ * Computes a stable fingerprint for a node's inputs and dependencies.
102
+ */
103
+ computeFingerprint(workflow, node, inputs, dependencyFingerprints) {
104
+ const data = {
105
+ workflowId: workflow.name,
106
+ nodeId: node.id,
107
+ nodeKind: node.kind,
108
+ nodeDefinitionVersion: node.definition?.graph?.metadata?.version,
109
+ inputs: this.stableSerialize(inputs),
110
+ dependencyFingerprints: this.stableSerialize(dependencyFingerprints),
111
+ };
112
+ const json = this.stableSerialize(data);
113
+ // Use a deterministic non-cryptographic hash that works in both browser
114
+ // and Node environments without requiring `node:crypto`.
115
+ return this.simpleHash(json);
116
+ }
117
+ /**
118
+ * Returns a topological ordering of the given node set.
119
+ */
120
+ topologicalOrder(plan, nodeSet) {
121
+ const result = [];
122
+ const visited = new Set();
123
+ const visit = (nodeId) => {
124
+ if (visited.has(nodeId))
125
+ return;
126
+ visited.add(nodeId);
127
+ const deps = GraphTopology.upstreamNodes(nodeId, plan.incomingByNode, false);
128
+ for (const dep of deps) {
129
+ if (nodeSet.has(dep))
130
+ visit(dep);
131
+ }
132
+ result.push(nodeId);
133
+ };
134
+ for (const nodeId of nodeSet)
135
+ visit(nodeId);
136
+ return result;
137
+ }
138
+ /**
139
+ * Computes fingerprints for all upstream dependencies of a node.
140
+ */
141
+ dependencyFingerprints(plan, nodeId, result) {
142
+ const deps = this.dependencyResolver.getDependencies(plan, nodeId);
143
+ const fingerprints = {};
144
+ for (const dep of deps) {
145
+ const node = plan.nodes.find((n) => n.id === dep);
146
+ if (node) {
147
+ const depResult = result.nodeResults[dep];
148
+ const inputs = depResult?.inputs ?? {};
149
+ const nestedDeps = this.dependencyFingerprints(plan, dep, result);
150
+ fingerprints[dep] = this.computeFingerprint(plan.workflow, node, inputs, nestedDeps);
151
+ }
152
+ }
153
+ return fingerprints;
154
+ }
155
+ /**
156
+ * Serializes a value with recursively sorted keys for stable hashing.
157
+ */
158
+ stableSerialize(value) {
159
+ if (value === null || typeof value !== "object") {
160
+ return JSON.stringify(value);
161
+ }
162
+ if (Array.isArray(value)) {
163
+ return `[${value.map((v) => this.stableSerialize(v)).join(",")}]`;
164
+ }
165
+ const keys = Object.keys(value).sort();
166
+ const pairs = keys.map((k) => `${JSON.stringify(k)}:${this.stableSerialize(value[k])}`);
167
+ return `{${pairs.join(",")}}`;
168
+ }
169
+ /**
170
+ * Simple non-cryptographic hash for browser environments where
171
+ * `node:crypto` is unavailable. Produces a deterministic hex-like string
172
+ * from the input. This is NOT cryptographically secure but is sufficient
173
+ * for fingerprint-based cache keys.
174
+ */
175
+ simpleHash(str) {
176
+ let hash = 0;
177
+ for (let i = 0; i < str.length; i++) {
178
+ const char = str.charCodeAt(i);
179
+ hash = (hash << 5) - hash + char;
180
+ hash |= 0;
181
+ }
182
+ return `fp_${Math.abs(hash).toString(16).padStart(8, "0")}_${str.length}`;
183
+ }
184
+ }
185
+ void GRAPH_PINNING_METADATA_KEY;
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvcGlubmluZy9HcmFwaFBpbm5pbmdTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsMEJBQXFCO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx5Q0FBb0M7QUFHaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSx1Q0FBa0M7QUFlMUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ21CLEtBQXNCLEVBQ3RCLE1BQTBCLEVBQzFCLGtCQUFrRDtRQUZsRCxVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWdDO0lBQ2xFLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUE0QjtRQUN4QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBMEIsQ0FBQztRQUNoRCxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUM7UUFFaEUsTUFBTSxNQUFNLEdBQUcsbUJBQW1CO1lBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3pELENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTlCLDBCQUEwQjtRQUMxQixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENB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QUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3BCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBRSxLQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN6RSxDQUFDO1FBQ0YsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxVQUFVLENBQUMsR0FBVztRQUM1QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBRUQsS0FBSywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGlubmluZy9HcmFwaFBpbm5pbmdTZXJ2aWNlXG4gKiBAc3VtbWFyeSBTZXJ2aWNlIGZvciBwaW5uaW5nIGFuZCB1bnBpbm5pbmcgZ3JhcGggbm9kZSB2YWx1ZXMuXG4gKiBAZGVzY3JpcHRpb24gQ29tcHV0ZXMgc3RhYmxlIGZpbmdlcnByaW50cywgcGlucy91bnBpbnMgbm9kZXMgYW5kIHRoZWlyIHVwc3RyZWFtIGRlcGVuZGVuY2llcywgcmVhZHMgcGlubmVkIHZhbHVlcywgYW5kIGVtaXRzIHBpbm5pbmcgZXZlbnRzLiBQaW5uaW5nIGlzIGFsbC1vci1ub3RoaW5nOiBpZiBhbnkgdXBzdHJlYW0gZGVwZW5kZW5jeSBpcyBub3QgcGlubmFibGUsIHRoZSBvcGVyYXRpb24gZmFpbHMuXG4gKi9cbmltcG9ydCB7IEdSQVBIX1BJTk5JTkdfTUVUQURBVEFfS0VZIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgR3JhcGhQaW5uaW5nRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL0dyYXBoUGlubmluZ0Vycm9yXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbiB9IGZyb20gXCIuLi9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5cIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuTm9kZSB9IGZyb20gXCIuLi9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5Ob2RlXCI7XG5pbXBvcnQgeyBHcmFwaFRvcG9sb2d5IH0gZnJvbSBcIi4uL3BsYW5uaW5nL0dyYXBoVG9wb2xvZ3lcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhWYWx1ZVN0b3JlIH0gZnJvbSBcIi4uL3N0b3JlL0dyYXBoVmFsdWVTdG9yZVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaFZhbHVlS2V5IH0gZnJvbSBcIi4uL3N0b3JlL0dyYXBoVmFsdWVLZXlcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhDYWNoZWRWYWx1ZSB9IGZyb20gXCIuLi9zdG9yZS9HcmFwaENhY2hlZFZhbHVlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEdyYXBoRXhlY3V0aW9uUmVzdWx0LFxuICBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgR3JhcGhQaW5Ob2RlT3B0aW9ucyxcbiAgR3JhcGhVbnBpbk5vZGVPcHRpb25zLFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHR5cGUgeyBHcmFwaFBpbm5pbmdQb2xpY3kgfSBmcm9tIFwiLi9HcmFwaFBpbm5pbmdQb2xpY3lcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyIH0gZnJvbSBcIi4vR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyXCI7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1hbmFnZXMgcGlubmluZyBhbmQgdW5waW5uaW5nIG9mIGdyYXBoIG5vZGUgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhQaW5uaW5nU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IEdyYXBoVmFsdWVTdG9yZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvbGljeTogR3JhcGhQaW5uaW5nUG9saWN5LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kZW5jeVJlc29sdmVyOiBHcmFwaFBpbm5pbmdEZXBlbmRlbmN5UmVzb2x2ZXJcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBQaW5zIGEgbm9kZSBhbmQgYWxsIGl0cyB1cHN0cmVhbSBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIEB0aHJvd3Mge0dyYXBoUGlubmluZ0Vycm9yfSB3aGVuIHRoZSBub2RlIG9yIGFueSBkZXBlbmRlbmN5IGlzIG5vdCBwaW5uYWJsZS5cbiAgICovXG4gIGFzeW5jIHBpbk5vZGUob3B0aW9uczogR3JhcGhQaW5Ob2RlT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBsYW4gPSBvcHRpb25zLnBsYW4gYXMgR3JhcGhFeGVjdXRpb25QbGFuO1xuICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBvcHRpb25zLmluY2x1ZGVEZXBlbmRlbmNpZXMgPz8gdHJ1ZTtcblxuICAgIGNvbnN0IHBpblNldCA9IGluY2x1ZGVEZXBlbmRlbmNpZXNcbiAgICAgID8gdGhpcy5kZXBlbmRlbmN5UmVzb2x2ZXIuZ2V0UGluU2V0KHBsYW4sIG9wdGlvbnMubm9kZUlkKVxuICAgICAgOiBuZXcgU2V0KFtvcHRpb25zLm5vZGVJZF0pO1xuXG4gICAgLy8gVmFsaWRhdGUgYWxsLW9yLW5vdGhpbmdcbiAgICBmb3IgKGNvbnN0IG5vZGVJZCBvZiBwaW5TZXQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwbGFuLm5vZGVzLmZpbmQoKG4pID0+IG4uaWQgPT09IG5vZGVJZCk7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoUGlubmluZ0Vycm9yKGBOb2RlICcke25vZGVJZH0nIG5vdCBmb3VuZCBpbiBwbGFuYCk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMucG9saWN5LmNhblBpbihub2RlKSkge1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhQaW5uaW5nRXJyb3IoXG4gICAgICAgICAgYE5vZGUgJyR7bm9kZUlkfScgaXMgbm90IHBpbm5hYmxlYCxcbiAgICAgICAgICB7IG5vZGVJZCB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUGluIGRlcGVuZGVuY2llcyBmaXJzdCwgdGhlbiB0aGUgc2VsZWN0ZWQgbm9kZVxuICAgIGNvbnN0IG9yZGVyZWQgPSB0aGlzLnRvcG9sb2dpY2FsT3JkZXIocGxhbiwgcGluU2V0KTtcbiAgICBmb3IgKGNvbnN0IG5vZGVJZCBvZiBvcmRlcmVkKSB7XG4gICAgICBjb25zdCBub2RlID0gcGxhbi5ub2Rlcy5maW5kKChuKSA9PiBuLmlkID09PSBub2RlSWQpITtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdGlvbnMucmVzdWx0Lm5vZGVSZXN1bHRzW25vZGVJZF07XG4gICAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0Lm91dHB1dHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoUGlubmluZ0Vycm9yKFxuICAgICAgICAgIGBOb2RlICcke25vZGVJZH0nIGhhcyBubyBjb21wbGV0ZWQgb3V0cHV0IHRvIHBpbmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlucHV0cyA9IHJlc3VsdC5pbnB1dHMgPz8ge307XG4gICAgICBjb25zdCBkZXBGaW5nZXJwcmludHMgPSB0aGlzLmRlcGVuZGVuY3lGaW5nZXJwcmludHMocGxhbiwgbm9kZUlkLCBvcHRpb25zLnJlc3VsdCk7XG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmNyZWF0ZVZhbHVlS2V5KG9wdGlvbnMud29ya2Zsb3csIG5vZGUsIGlucHV0cywgZGVwRmluZ2VycHJpbnRzLCBvcHRpb25zLm5hbWVzcGFjZSk7XG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICBjb25zdCBjYWNoZWQ6IEdyYXBoQ2FjaGVkVmFsdWUgPSB7XG4gICAgICAgIGtleSxcbiAgICAgICAgb3V0cHV0czogcmVzdWx0Lm91dHB1dHMsXG4gICAgICAgIHBpbm5lZDogdHJ1ZSxcbiAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgICBtZXRhZGF0YTogeyAuLi5vcHRpb25zLnJlc3VsdC5tZXRhZGF0YSwgbm9kZUlkIH0sXG4gICAgICB9O1xuICAgICAgYXdhaXQgdGhpcy5zdG9yZS53cml0ZUNhY2hlZChrZXksIGNhY2hlZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVucGlucyBhIHNpbmdsZSBub2RlIChkb2VzIG5vdCB1bnBpbiBkZXBlbmRlbnRzIGluIHYxKS5cbiAgICovXG4gIGFzeW5jIHVucGluTm9kZShvcHRpb25zOiBHcmFwaFVucGluTm9kZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBrZXk6IEdyYXBoVmFsdWVLZXkgPSB7XG4gICAgICB3b3JrZmxvd0lkOiBvcHRpb25zLndvcmtmbG93Lm5hbWUsXG4gICAgICBub2RlSWQ6IG9wdGlvbnMubm9kZUlkLFxuICAgICAgZmluZ2VycHJpbnQ6IG9wdGlvbnMuZmluZ2VycHJpbnQsXG4gICAgICBuYW1lc3BhY2U6IG9wdGlvbnMubmFtZXNwYWNlLFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5zdG9yZS5kZWxldGVDYWNoZWQoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhIHBpbm5lZCB2YWx1ZSBmb3IgYSBub2RlLCByZXR1cm5pbmcgYHVuZGVmaW5lZGAgd2hlbiBubyB2YWxpZFxuICAgKiBwaW5uZWQgdmFsdWUgZXhpc3RzLlxuICAgKi9cbiAgYXN5bmMgcmVhZFBpbm5lZFZhbHVlKFxuICAgIHdvcmtmbG93OiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbixcbiAgICBub2RlOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlLFxuICAgIGlucHV0czogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgZGVwZW5kZW5jeUZpbmdlcnByaW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBuYW1lc3BhY2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxHcmFwaENhY2hlZFZhbHVlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5jcmVhdGVWYWx1ZUtleSh3b3JrZmxvdywgbm9kZSwgaW5wdXRzLCBkZXBlbmRlbmN5RmluZ2VycHJpbnRzLCBuYW1lc3BhY2UpO1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMuc3RvcmUucmVhZENhY2hlZChrZXkpO1xuICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLnBpbm5lZCkge1xuICAgICAgaWYgKGNhY2hlZC5leHBpcmVzQXQgJiYgbmV3IERhdGUoY2FjaGVkLmV4cGlyZXNBdCkgPCBuZXcgRGF0ZSgpKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FjaGVkO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdGFibGUgdmFsdWUga2V5IGZvciBhIG5vZGUuXG4gICAqL1xuICBjcmVhdGVWYWx1ZUtleShcbiAgICB3b3JrZmxvdzogR3JhcGhXb3JrZmxvd0RlZmluaXRpb24sXG4gICAgbm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSxcbiAgICBpbnB1dHM6IEdyYXBoRXhlY3V0aW9uVmFsdWVzLFxuICAgIGRlcGVuZGVuY3lGaW5nZXJwcmludHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgbmFtZXNwYWNlPzogc3RyaW5nXG4gICk6IEdyYXBoVmFsdWVLZXkge1xuICAgIHJldHVybiB7XG4gICAgICB3b3JrZmxvd0lkOiB3b3JrZmxvdy5uYW1lLFxuICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgZmluZ2VycHJpbnQ6IHRoaXMuY29tcHV0ZUZpbmdlcnByaW50KHdvcmtmbG93LCBub2RlLCBpbnB1dHMsIGRlcGVuZGVuY3lGaW5nZXJwcmludHMpLFxuICAgICAgbmFtZXNwYWNlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYSBzdGFibGUgZmluZ2VycHJpbnQgZm9yIGEgbm9kZSdzIGlucHV0cyBhbmQgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgY29tcHV0ZUZpbmdlcnByaW50KFxuICAgIHdvcmtmbG93OiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbixcbiAgICBub2RlOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlLFxuICAgIGlucHV0czogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgZGVwZW5kZW5jeUZpbmdlcnByaW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICB3b3JrZmxvd0lkOiB3b3JrZmxvdy5uYW1lLFxuICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgbm9kZUtpbmQ6IG5vZGUua2luZCxcbiAgICAgIG5vZGVEZWZpbml0aW9uVmVyc2lvbjogKG5vZGUuZGVmaW5pdGlvbiBhcyBhbnkpPy5ncmFwaD8ubWV0YWRhdGE/LnZlcnNpb24sXG4gICAgICBpbnB1dHM6IHRoaXMuc3RhYmxlU2VyaWFsaXplKGlucHV0cyksXG4gICAgICBkZXBlbmRlbmN5RmluZ2VycHJpbnRzOiB0aGlzLnN0YWJsZVNlcmlhbGl6ZShkZXBlbmRlbmN5RmluZ2VycHJpbnRzKSxcbiAgICB9O1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLnN0YWJsZVNlcmlhbGl6ZShkYXRhKTtcbiAgICAvLyBVc2UgYSBkZXRlcm1pbmlzdGljIG5vbi1jcnlwdG9ncmFwaGljIGhhc2ggdGhhdCB3b3JrcyBpbiBib3RoIGJyb3dzZXJcbiAgICAvLyBhbmQgTm9kZSBlbnZpcm9ubWVudHMgd2l0aG91dCByZXF1aXJpbmcgYG5vZGU6Y3J5cHRvYC5cbiAgICByZXR1cm4gdGhpcy5zaW1wbGVIYXNoKGpzb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB0b3BvbG9naWNhbCBvcmRlcmluZyBvZiB0aGUgZ2l2ZW4gbm9kZSBzZXQuXG4gICAqL1xuICBwcml2YXRlIHRvcG9sb2dpY2FsT3JkZXIoXG4gICAgcGxhbjogR3JhcGhFeGVjdXRpb25QbGFuLFxuICAgIG5vZGVTZXQ6IFNldDxzdHJpbmc+XG4gICk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHZpc2l0ID0gKG5vZGVJZDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAodmlzaXRlZC5oYXMobm9kZUlkKSkgcmV0dXJuO1xuICAgICAgdmlzaXRlZC5hZGQobm9kZUlkKTtcbiAgICAgIGNvbnN0IGRlcHMgPSBHcmFwaFRvcG9sb2d5LnVwc3RyZWFtTm9kZXMobm9kZUlkLCBwbGFuLmluY29taW5nQnlOb2RlLCBmYWxzZSk7XG4gICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XG4gICAgICAgIGlmIChub2RlU2V0LmhhcyhkZXApKSB2aXNpdChkZXApO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2gobm9kZUlkKTtcbiAgICB9O1xuICAgIGZvciAoY29uc3Qgbm9kZUlkIG9mIG5vZGVTZXQpIHZpc2l0KG5vZGVJZCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBmaW5nZXJwcmludHMgZm9yIGFsbCB1cHN0cmVhbSBkZXBlbmRlbmNpZXMgb2YgYSBub2RlLlxuICAgKi9cbiAgcHJpdmF0ZSBkZXBlbmRlbmN5RmluZ2VycHJpbnRzKFxuICAgIHBsYW46IEdyYXBoRXhlY3V0aW9uUGxhbixcbiAgICBub2RlSWQ6IHN0cmluZyxcbiAgICByZXN1bHQ6IEdyYXBoRXhlY3V0aW9uUmVzdWx0XG4gICk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IGRlcHMgPSB0aGlzLmRlcGVuZGVuY3lSZXNvbHZlci5nZXREZXBlbmRlbmNpZXMocGxhbiwgbm9kZUlkKTtcbiAgICBjb25zdCBmaW5nZXJwcmludHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XG4gICAgICBjb25zdCBub2RlID0gcGxhbi5ub2Rlcy5maW5kKChuKSA9PiBuLmlkID09PSBkZXApO1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgY29uc3QgZGVwUmVzdWx0ID0gcmVzdWx0Lm5vZGVSZXN1bHRzW2RlcF07XG4gICAgICAgIGNvbnN0IGlucHV0cyA9IGRlcFJlc3VsdD8uaW5wdXRzID8/IHt9O1xuICAgICAgICBjb25zdCBuZXN0ZWREZXBzID0gdGhpcy5kZXBlbmRlbmN5RmluZ2VycHJpbnRzKHBsYW4sIGRlcCwgcmVzdWx0KTtcbiAgICAgICAgZmluZ2VycHJpbnRzW2RlcF0gPSB0aGlzLmNvbXB1dGVGaW5nZXJwcmludChwbGFuLndvcmtmbG93LCBub2RlLCBpbnB1dHMsIG5lc3RlZERlcHMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmluZ2VycHJpbnRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgYSB2YWx1ZSB3aXRoIHJlY3Vyc2l2ZWx5IHNvcnRlZCBrZXlzIGZvciBzdGFibGUgaGFzaGluZy5cbiAgICovXG4gIHByaXZhdGUgc3RhYmxlU2VyaWFsaXplKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBgWyR7dmFsdWUubWFwKCh2KSA9PiB0aGlzLnN0YWJsZVNlcmlhbGl6ZSh2KSkuam9pbihcIixcIil9XWA7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSkuc29ydCgpO1xuICAgIGNvbnN0IHBhaXJzID0ga2V5cy5tYXAoXG4gICAgICAoaykgPT4gYCR7SlNPTi5zdHJpbmdpZnkoayl9OiR7dGhpcy5zdGFibGVTZXJpYWxpemUoKHZhbHVlIGFzIGFueSlba10pfWBcbiAgICApO1xuICAgIHJldHVybiBgeyR7cGFpcnMuam9pbihcIixcIil9fWA7XG4gIH1cblxuICAvKipcbiAgICogU2ltcGxlIG5vbi1jcnlwdG9ncmFwaGljIGhhc2ggZm9yIGJyb3dzZXIgZW52aXJvbm1lbnRzIHdoZXJlXG4gICAqIGBub2RlOmNyeXB0b2AgaXMgdW5hdmFpbGFibGUuIFByb2R1Y2VzIGEgZGV0ZXJtaW5pc3RpYyBoZXgtbGlrZSBzdHJpbmdcbiAgICogZnJvbSB0aGUgaW5wdXQuIFRoaXMgaXMgTk9UIGNyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBidXQgaXMgc3VmZmljaWVudFxuICAgKiBmb3IgZmluZ2VycHJpbnQtYmFzZWQgY2FjaGUga2V5cy5cbiAgICovXG4gIHByaXZhdGUgc2ltcGxlSGFzaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGhhc2ggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgICAgIGhhc2ggfD0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGBmcF8ke01hdGguYWJzKGhhc2gpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBcIjBcIil9XyR7c3RyLmxlbmd0aH1gO1xuICB9XG59XG5cbnZvaWQgR1JBUEhfUElOTklOR19NRVRBREFUQV9LRVk7XG4iXX0=
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @module integrations/graph/pinning
3
+ * @summary Graph pinning subsystem.
4
+ * @description Re-exports the pinning metadata, policy, dependency resolver, and service.
5
+ */
6
+ export * from "./GraphPinningMetadata.js";
7
+ export * from "./GraphPinningPolicy.js";
8
+ export * from "./GraphPinningDependencyResolver.js";
9
+ export * from "./GraphPinningService.js";
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL3Bpbm5pbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILDBDQUF1QztBQUN2Qyx3Q0FBcUM7QUFDckMsb0RBQWlEO0FBQ2pELHlDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGlubmluZ1xuICogQHN1bW1hcnkgR3JhcGggcGlubmluZyBzdWJzeXN0ZW0uXG4gKiBAZGVzY3JpcHRpb24gUmUtZXhwb3J0cyB0aGUgcGlubmluZyBtZXRhZGF0YSwgcG9saWN5LCBkZXBlbmRlbmN5IHJlc29sdmVyLCBhbmQgc2VydmljZS5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhQaW5uaW5nTWV0YWRhdGFcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoUGlubmluZ1BvbGljeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaFBpbm5pbmdTZXJ2aWNlXCI7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL2VuZ2luZS9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuXG4gKiBAc3VtbWFyeSBUaGUgY29tcGxldGUgZXhlY3V0aW9uIHBsYW4gZm9yIGEgd29ya2Zsb3cuXG4gKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgcmVzb2x2ZWQgbm9kZXMsIGVkZ2VzLCB0b3BvbG9naWNhbCBsYXllcnMsIGFuZCBpbmNvbWluZy9vdXRnb2luZyBtYXBzLlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblBsYW5Ob2RlXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbkVkZ2UgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblBsYW5FZGdlXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbkxheWVyIH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXJcIjtcblxuLyoqXG4gKiBUaGUgcmVzb2x2ZWQgZXhlY3V0aW9uIHBsYW4gZm9yIGEgc2luZ2xlIHdvcmtmbG93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoRXhlY3V0aW9uUGxhbiB7XG4gIHdvcmtmbG93OiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbjtcbiAgd29ya2Zsb3dJZDogc3RyaW5nO1xuICBub2RlczogR3JhcGhFeGVjdXRpb25QbGFuTm9kZVtdO1xuICBlZGdlczogR3JhcGhFeGVjdXRpb25QbGFuRWRnZVtdO1xuICBsYXllcnM6IEdyYXBoRXhlY3V0aW9uUGxhbkxheWVyW107XG4gIGluY29taW5nQnlOb2RlOiBNYXA8c3RyaW5nLCBHcmFwaEV4ZWN1dGlvblBsYW5FZGdlW10+O1xuICBvdXRnb2luZ0J5Tm9kZTogTWFwPHN0cmluZywgR3JhcGhFeGVjdXRpb25QbGFuRWRnZVtdPjtcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @module integrations/graph/planning/GraphExecutionPlanEdge
3
+ * @summary Plan edge type for the execution plan.
4
+ * @description Represents a directed value route between two endpoints (node-to-node or node-to-workflow-boundary).
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuRWRnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuRWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5FZGdlXG4gKiBAc3VtbWFyeSBQbGFuIGVkZ2UgdHlwZSBmb3IgdGhlIGV4ZWN1dGlvbiBwbGFuLlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBkaXJlY3RlZCB2YWx1ZSByb3V0ZSBiZXR3ZWVuIHR3byBlbmRwb2ludHMgKG5vZGUtdG8tbm9kZSBvciBub2RlLXRvLXdvcmtmbG93LWJvdW5kYXJ5KS5cbiAqL1xuXG4vKipcbiAqIEFuIGVkZ2UgaW4gdGhlIGV4ZWN1dGlvbiBwbGFuIHJlcHJlc2VudGluZyBhIHZhbHVlIHJvdXRlIGZyb20gYSBzb3VyY2VcbiAqIHBvcnQgdG8gYSB0YXJnZXQgcG9ydC5cbiAqXG4gKiBgc291cmNlTm9kZUlkYCBvciBgdGFyZ2V0Tm9kZUlkYCBtYXkgYmUge0BsaW5rIEdSQVBIX1dPUktGTE9XX0JPVU5EQVJZfSB3aGVuXG4gKiB0aGUgZWRnZSBjb25uZWN0cyB0byB0aGUgd29ya2Zsb3cgYm91bmRhcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFeGVjdXRpb25QbGFuRWRnZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNvdXJjZU5vZGVJZDogc3RyaW5nO1xuICBzb3VyY2VQb3J0OiBzdHJpbmc7XG4gIHRhcmdldE5vZGVJZDogc3RyaW5nO1xuICB0YXJnZXRQb3J0OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbkxheWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbkxheWVyXG4gKiBAc3VtbWFyeSBBIGxheWVyIG9mIG5vZGVzIHRoYXQgY2FuIGV4ZWN1dGUgaW4gcGFyYWxsZWwuXG4gKiBAZGVzY3JpcHRpb24gUHJvZHVjZWQgYnkgdGhlIHRvcG9sb2dpY2FsIHBsYW5uZXI7IGFsbCBub2RlcyBpbiBhIGxheWVyIGhhdmUgbm8gZGVwZW5kZW5jaWVzIG9uIGVhY2ggb3RoZXIuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuTm9kZSB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUGxhbk5vZGVcIjtcblxuLyoqXG4gKiBBIHRvcG9sb2dpY2FsIGxheWVyIG9mIG5vZGVzIHRoYXQgbWF5IGV4ZWN1dGUgaW4gcGFyYWxsZWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXIge1xuICBpbmRleDogbnVtYmVyO1xuICBub2RlczogR3JhcGhFeGVjdXRpb25QbGFuTm9kZVtdO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5Ob2RlXG4gKiBAc3VtbWFyeSBQbGFuIG5vZGUgdHlwZSBmb3IgdGhlIGV4ZWN1dGlvbiBwbGFuLlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBzaW5nbGUgbm9kZSByZXNvbHZlZCBmcm9tIGEgd29ya2Zsb3cgZGVmaW5pdGlvbiwgcmVhZHkgZm9yIGV4ZWN1dGlvbi5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBHcmFwaE5vZGVEZWZpbml0aW9uLFxuICBHcmFwaFdvcmtmbG93Tm9kZU1ldGFkYXRhLFxufSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuLyoqXG4gKiBBIG5vZGUgaW4gdGhlIGV4ZWN1dGlvbiBwbGFuLCBkZXJpdmVkIGZyb20gYSB3b3JrZmxvdydzIG5vZGUgbWV0YWRhdGEgYW5kXG4gKiBpdHMgcmVzb2x2ZWQgZ3JhcGggZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlIHtcbiAgaWQ6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgc291cmNlOiBHcmFwaFdvcmtmbG93Tm9kZU1ldGFkYXRhO1xuICBkZWZpbml0aW9uOiBHcmFwaE5vZGVEZWZpbml0aW9uO1xuICBpbnB1dFBvcnRzOiBzdHJpbmdbXTtcbiAgb3V0cHV0UG9ydHM6IHN0cmluZ1tdO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuIl19