@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
@@ -1,241 +0,0 @@
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/triggers
12
- * @summary Production trigger node kind declarations (DECAF-32 §22.2.1).
13
- * @description Canonical `@node`-decorated classes for the six ALFRED-5 trigger
14
- * kinds. Triggers are metadata-only entrypoints: they define how a workflow
15
- * starts and produce a trigger payload on their `@output` ports. They have no
16
- * `@input` ports (nothing feeds a trigger) and no built-in executors — the
17
- * engine's execution model starts from workflow inputs (§5.8) and treats
18
- * trigger nodes as metadata-only entrypoints.
19
- */
20
- import { Model, model, required } from "@decaf-ts/decorator-validation";
21
- import { uielement } from "@decaf-ts/ui-decorators";
22
- import { node, output } from "@decaf-ts/ui-decorators/graph";
23
- /**
24
- * Manual trigger — user clicks Run; input form generated from `inputSchema`.
25
- */
26
- let ManualTriggerNode = class ManualTriggerNode extends Model {
27
- };
28
- __decorate([
29
- required(),
30
- uielement("textarea", { label: "Trigger payload", placeholder: "Manual trigger payload" }),
31
- output({ handle: "payload" }),
32
- __metadata("design:type", Object)
33
- ], ManualTriggerNode.prototype, "payload", void 0);
34
- ManualTriggerNode = __decorate([
35
- node("core.trigger.manual", {
36
- kind: "core.trigger.manual",
37
- category: "Trigger",
38
- color: "#3b82f6",
39
- icon: "ti-hand-click",
40
- width: 96,
41
- height: 96,
42
- labels: ["trigger", "manual", "entrypoint"],
43
- metadata: {
44
- title: "Manual trigger",
45
- description: "Starts the workflow when the user clicks Run. The input form is generated from the trigger's input schema.",
46
- trigger: {
47
- type: "manual",
48
- inputSchema: {},
49
- },
50
- },
51
- }),
52
- model()
53
- ], ManualTriggerNode);
54
- export { ManualTriggerNode };
55
- /**
56
- * Webhook trigger — HTTP request received; path/method/auth/responseMode config.
57
- */
58
- let WebhookTriggerNode = class WebhookTriggerNode extends Model {
59
- };
60
- __decorate([
61
- required(),
62
- uielement("textarea", { label: "Request payload", placeholder: "Webhook request body" }),
63
- output({ handle: "payload" }),
64
- __metadata("design:type", Object)
65
- ], WebhookTriggerNode.prototype, "payload", void 0);
66
- WebhookTriggerNode = __decorate([
67
- node("core.trigger.webhook", {
68
- kind: "core.trigger.webhook",
69
- category: "Trigger",
70
- color: "#0ea5e9",
71
- icon: "ti-webhook",
72
- width: 96,
73
- height: 96,
74
- labels: ["trigger", "webhook", "http"],
75
- metadata: {
76
- title: "Webhook trigger",
77
- description: "Starts the workflow when an HTTP request is received on the configured path and method.",
78
- trigger: {
79
- type: "webhook",
80
- path: "/webhook",
81
- method: "POST",
82
- auth: "none",
83
- responseMode: "onReceived",
84
- },
85
- },
86
- }),
87
- model()
88
- ], WebhookTriggerNode);
89
- export { WebhookTriggerNode };
90
- /**
91
- * Schedule trigger — cron-like schedule; timezone + payload config.
92
- */
93
- let ScheduleTriggerNode = class ScheduleTriggerNode extends Model {
94
- };
95
- __decorate([
96
- required(),
97
- uielement("textarea", { label: "Scheduled payload", placeholder: "Payload for the scheduled run" }),
98
- output({ handle: "payload" }),
99
- __metadata("design:type", Object)
100
- ], ScheduleTriggerNode.prototype, "payload", void 0);
101
- ScheduleTriggerNode = __decorate([
102
- node("core.trigger.schedule", {
103
- kind: "core.trigger.schedule",
104
- category: "Trigger",
105
- color: "#6366f1",
106
- icon: "ti-calendar-time",
107
- width: 96,
108
- height: 96,
109
- labels: ["trigger", "schedule", "cron"],
110
- metadata: {
111
- title: "Schedule trigger",
112
- description: "Starts the workflow on a cron-like schedule with timezone support.",
113
- trigger: {
114
- type: "schedule",
115
- schedule: "0 * * * *",
116
- timezone: "UTC",
117
- },
118
- },
119
- }),
120
- model()
121
- ], ScheduleTriggerNode);
122
- export { ScheduleTriggerNode };
123
- /**
124
- * Event trigger — internal event bus topic subscriber.
125
- */
126
- let EventTriggerNode = class EventTriggerNode extends Model {
127
- };
128
- __decorate([
129
- required(),
130
- uielement("textarea", { label: "Event payload", placeholder: "Event bus payload" }),
131
- output({ handle: "payload" }),
132
- __metadata("design:type", Object)
133
- ], EventTriggerNode.prototype, "payload", void 0);
134
- EventTriggerNode = __decorate([
135
- node("core.trigger.event", {
136
- kind: "core.trigger.event",
137
- category: "Trigger",
138
- color: "#8b5cf6",
139
- icon: "ti-broadcast",
140
- width: 96,
141
- height: 96,
142
- labels: ["trigger", "event", "bus"],
143
- metadata: {
144
- title: "Event trigger",
145
- description: "Starts the workflow when an event is published on the configured internal event bus topic.",
146
- trigger: {
147
- type: "event",
148
- topic: "default",
149
- },
150
- },
151
- }),
152
- model()
153
- ], EventTriggerNode);
154
- export { EventTriggerNode };
155
- /**
156
- * Form trigger — generated public/internal form; field definitions.
157
- */
158
- let FormTriggerNode = class FormTriggerNode extends Model {
159
- };
160
- __decorate([
161
- required(),
162
- uielement("textarea", { label: "Form submission", placeholder: "Form submission payload" }),
163
- output({ handle: "payload" }),
164
- __metadata("design:type", Object)
165
- ], FormTriggerNode.prototype, "payload", void 0);
166
- FormTriggerNode = __decorate([
167
- node("core.trigger.form", {
168
- kind: "core.trigger.form",
169
- category: "Trigger",
170
- color: "#ec4899",
171
- icon: "ti-forms",
172
- width: 96,
173
- height: 96,
174
- labels: ["trigger", "form", "public"],
175
- metadata: {
176
- title: "Form trigger",
177
- description: "Starts the workflow when a generated form is submitted. Field definitions drive the form schema.",
178
- trigger: {
179
- type: "form",
180
- fields: [],
181
- },
182
- },
183
- }),
184
- model()
185
- ], FormTriggerNode);
186
- export { FormTriggerNode };
187
- /**
188
- * Chat trigger — chat message entrypoint; message/sessionId/userId schema.
189
- */
190
- let ChatTriggerNode = class ChatTriggerNode extends Model {
191
- };
192
- __decorate([
193
- required(),
194
- uielement("input", { label: "Message", placeholder: "Incoming chat message" }),
195
- output({ handle: "message" }),
196
- __metadata("design:type", String)
197
- ], ChatTriggerNode.prototype, "message", void 0);
198
- __decorate([
199
- required(),
200
- uielement("input", { label: "Session ID", placeholder: "Chat session identifier" }),
201
- output({ handle: "sessionId" }),
202
- __metadata("design:type", String)
203
- ], ChatTriggerNode.prototype, "sessionId", void 0);
204
- __decorate([
205
- required(),
206
- uielement("input", { label: "User ID", placeholder: "Chat user identifier" }),
207
- output({ handle: "userId" }),
208
- __metadata("design:type", String)
209
- ], ChatTriggerNode.prototype, "userId", void 0);
210
- ChatTriggerNode = __decorate([
211
- node("core.trigger.chat", {
212
- kind: "core.trigger.chat",
213
- category: "Trigger",
214
- color: "#14b8a6",
215
- icon: "ti-message-circle",
216
- width: 96,
217
- height: 96,
218
- labels: ["trigger", "chat", "entrypoint"],
219
- metadata: {
220
- title: "Chat trigger",
221
- description: "Starts the workflow when a chat message is received. Emits message, sessionId, and userId.",
222
- trigger: {
223
- type: "chat",
224
- },
225
- },
226
- }),
227
- model()
228
- ], ChatTriggerNode);
229
- export { ChatTriggerNode };
230
- /**
231
- * All built-in trigger node constructors.
232
- */
233
- export const GRAPH_TRIGGER_NODES = [
234
- ManualTriggerNode,
235
- WebhookTriggerNode,
236
- ScheduleTriggerNode,
237
- EventTriggerNode,
238
- FormTriggerNode,
239
- ChatTriggerNode,
240
- ];
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbm9kZXMvdHJpZ2dlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0Q7O0dBRUc7QUFtQkksSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBa0IsU0FBUSxLQUFLO0NBSzNDLENBQUE7QUFEQztJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLENBQUM7SUFDMUYsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDOztrREFDWjtBQUpQLGlCQUFpQjtJQWxCN0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1FBQzNCLElBQUksRUFBRSxxQkFBcUI7UUFDM0IsUUFBUSxFQUFFLFNBQVM7UUFDbkIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsSUFBSSxFQUFFLGVBQWU7UUFDckIsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDO1FBQzNDLFFBQVEsRUFBRTtZQUNSLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsV0FBVyxFQUFFLDRHQUE0RztZQUN6SCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLEVBQUU7YUFDaEI7U0FDRjtLQUNGLENBQUM7SUFDRCxLQUFL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dGlvbnMvZ3JhcGgvbm9kZXMvdHJpZ2dlcnNcbiAqIEBzdW1tYXJ5IFByb2R1Y3Rpb24gdHJpZ2dlciBub2RlIGtpbmQgZGVjbGFyYXRpb25zIChERUNBRi0zMiDCpzIyLjIuMSkuXG4gKiBAZGVzY3JpcHRpb24gQ2Fub25pY2FsIGBAbm9kZWAtZGVjb3JhdGVkIGNsYXNzZXMgZm9yIHRoZSBzaXggQUxGUkVELTUgdHJpZ2dlclxuICoga2luZHMuIFRyaWdnZXJzIGFyZSBtZXRhZGF0YS1vbmx5IGVudHJ5cG9pbnRzOiB0aGV5IGRlZmluZSBob3cgYSB3b3JrZmxvd1xuICogc3RhcnRzIGFuZCBwcm9kdWNlIGEgdHJpZ2dlciBwYXlsb2FkIG9uIHRoZWlyIGBAb3V0cHV0YCBwb3J0cy4gVGhleSBoYXZlIG5vXG4gKiBgQGlucHV0YCBwb3J0cyAobm90aGluZyBmZWVkcyBhIHRyaWdnZXIpIGFuZCBubyBidWlsdC1pbiBleGVjdXRvcnMg4oCUIHRoZVxuICogZW5naW5lJ3MgZXhlY3V0aW9uIG1vZGVsIHN0YXJ0cyBmcm9tIHdvcmtmbG93IGlucHV0cyAowqc1LjgpIGFuZCB0cmVhdHNcbiAqIHRyaWdnZXIgbm9kZXMgYXMgbWV0YWRhdGEtb25seSBlbnRyeXBvaW50cy5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgbm9kZSwgb3V0cHV0IH0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5cbi8qKlxuICogTWFudWFsIHRyaWdnZXIg4oCUIHVzZXIgY2xpY2tzIFJ1bjsgaW5wdXQgZm9ybSBnZW5lcmF0ZWQgZnJvbSBgaW5wdXRTY2hlbWFgLlxuICovXG5Abm9kZShcImNvcmUudHJpZ2dlci5tYW51YWxcIiwge1xuICBraW5kOiBcImNvcmUudHJpZ2dlci5tYW51YWxcIixcbiAgY2F0ZWdvcnk6IFwiVHJpZ2dlclwiLFxuICBjb2xvcjogXCIjM2I4MmY2XCIsXG4gIGljb246IFwidGktaGFuZC1jbGlja1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1widHJpZ2dlclwiLCBcIm1hbnVhbFwiLCBcImVudHJ5cG9pbnRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiTWFudWFsIHRyaWdnZXJcIixcbiAgICBkZXNjcmlwdGlvbjogXCJTdGFydHMgdGhlIHdvcmtmbG93IHdoZW4gdGhlIHVzZXIgY2xpY2tzIFJ1bi4gVGhlIGlucHV0IGZvcm0gaXMgZ2VuZXJhdGVkIGZyb20gdGhlIHRyaWdnZXIncyBpbnB1dCBzY2hlbWEuXCIsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogXCJtYW51YWxcIixcbiAgICAgIGlucHV0U2NoZW1hOiB7fSxcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgTWFudWFsVHJpZ2dlck5vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIlRyaWdnZXIgcGF5bG9hZFwiLCBwbGFjZWhvbGRlcjogXCJNYW51YWwgdHJpZ2dlciBwYXlsb2FkXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJwYXlsb2FkXCIgfSlcbiAgcGF5bG9hZCE6IHVua25vd247XG59XG5cbi8qKlxuICogV2ViaG9vayB0cmlnZ2VyIOKAlCBIVFRQIHJlcXVlc3QgcmVjZWl2ZWQ7IHBhdGgvbWV0aG9kL2F1dGgvcmVzcG9uc2VNb2RlIGNvbmZpZy5cbiAqL1xuQG5vZGUoXCJjb3JlLnRyaWdnZXIud2ViaG9va1wiLCB7XG4gIGtpbmQ6IFwiY29yZS50cmlnZ2VyLndlYmhvb2tcIixcbiAgY2F0ZWdvcnk6IFwiVHJpZ2dlclwiLFxuICBjb2xvcjogXCIjMGVhNWU5XCIsXG4gIGljb246IFwidGktd2ViaG9va1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1widHJpZ2dlclwiLCBcIndlYmhvb2tcIiwgXCJodHRwXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIldlYmhvb2sgdHJpZ2dlclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlN0YXJ0cyB0aGUgd29ya2Zsb3cgd2hlbiBhbiBIVFRQIHJlcXVlc3QgaXMgcmVjZWl2ZWQgb24gdGhlIGNvbmZpZ3VyZWQgcGF0aCBhbmQgbWV0aG9kLlwiLFxuICAgIHRyaWdnZXI6IHtcbiAgICAgIHR5cGU6IFwid2ViaG9va1wiLFxuICAgICAgcGF0aDogXCIvd2ViaG9va1wiLFxuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGF1dGg6IFwibm9uZVwiLFxuICAgICAgcmVzcG9uc2VNb2RlOiBcIm9uUmVjZWl2ZWRcIixcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgV2ViaG9va1RyaWdnZXJOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJSZXF1ZXN0IHBheWxvYWRcIiwgcGxhY2Vob2xkZXI6IFwiV2ViaG9vayByZXF1ZXN0IGJvZHlcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInBheWxvYWRcIiB9KVxuICBwYXlsb2FkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBTY2hlZHVsZSB0cmlnZ2VyIOKAlCBjcm9uLWxpa2Ugc2NoZWR1bGU7IHRpbWV6b25lICsgcGF5bG9hZCBjb25maWcuXG4gKi9cbkBub2RlKFwiY29yZS50cmlnZ2VyLnNjaGVkdWxlXCIsIHtcbiAga2luZDogXCJjb3JlLnRyaWdnZXIuc2NoZWR1bGVcIixcbiAgY2F0ZWdvcnk6IFwiVHJpZ2dlclwiLFxuICBjb2xvcjogXCIjNjM2NmYxXCIsXG4gIGljb246IFwidGktY2FsZW5kYXItdGltZVwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1widHJpZ2dlclwiLCBcInNjaGVkdWxlXCIsIFwiY3JvblwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJTY2hlZHVsZSB0cmlnZ2VyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSB3b3JrZmxvdyBvbiBhIGNyb24tbGlrZSBzY2hlZHVsZSB3aXRoIHRpbWV6b25lIHN1cHBvcnQuXCIsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogXCJzY2hlZHVsZVwiLFxuICAgICAgc2NoZWR1bGU6IFwiMCAqICogKiAqXCIsXG4gICAgICB0aW1lem9uZTogXCJVVENcIixcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVUcmlnZ2VyTm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiU2NoZWR1bGVkIHBheWxvYWRcIiwgcGxhY2Vob2xkZXI6IFwiUGF5bG9hZCBmb3IgdGhlIHNjaGVkdWxlZCBydW5cIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInBheWxvYWRcIiB9KVxuICBwYXlsb2FkITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBFdmVudCB0cmlnZ2VyIOKAlCBpbnRlcm5hbCBldmVudCBidXMgdG9waWMgc3Vic2NyaWJlci5cbiAqL1xuQG5vZGUoXCJjb3JlLnRyaWdnZXIuZXZlbnRcIiwge1xuICBraW5kOiBcImNvcmUudHJpZ2dlci5ldmVudFwiLFxuICBjYXRlZ29yeTogXCJUcmlnZ2VyXCIsXG4gIGNvbG9yOiBcIiM4YjVjZjZcIixcbiAgaWNvbjogXCJ0aS1icm9hZGNhc3RcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcInRyaWdnZXJcIiwgXCJldmVudFwiLCBcImJ1c1wiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJFdmVudCB0cmlnZ2VyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSB3b3JrZmxvdyB3aGVuIGFuIGV2ZW50IGlzIHB1Ymxpc2hlZCBvbiB0aGUgY29uZmlndXJlZCBpbnRlcm5hbCBldmVudCBidXMgdG9waWMuXCIsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogXCJldmVudFwiLFxuICAgICAgdG9waWM6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBFdmVudFRyaWdnZXJOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJFdmVudCBwYXlsb2FkXCIsIHBsYWNlaG9sZGVyOiBcIkV2ZW50IGJ1cyBwYXlsb2FkXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJwYXlsb2FkXCIgfSlcbiAgcGF5bG9hZCE6IHVua25vd247XG59XG5cbi8qKlxuICogRm9ybSB0cmlnZ2VyIOKAlCBnZW5lcmF0ZWQgcHVibGljL2ludGVybmFsIGZvcm07IGZpZWxkIGRlZmluaXRpb25zLlxuICovXG5Abm9kZShcImNvcmUudHJpZ2dlci5mb3JtXCIsIHtcbiAga2luZDogXCJjb3JlLnRyaWdnZXIuZm9ybVwiLFxuICBjYXRlZ29yeTogXCJUcmlnZ2VyXCIsXG4gIGNvbG9yOiBcIiNlYzQ4OTlcIixcbiAgaWNvbjogXCJ0aS1mb3Jtc1wiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1widHJpZ2dlclwiLCBcImZvcm1cIiwgXCJwdWJsaWNcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiRm9ybSB0cmlnZ2VyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSB3b3JrZmxvdyB3aGVuIGEgZ2VuZXJhdGVkIGZvcm0gaXMgc3VibWl0dGVkLiBGaWVsZCBkZWZpbml0aW9ucyBkcml2ZSB0aGUgZm9ybSBzY2hlbWEuXCIsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogXCJmb3JtXCIsXG4gICAgICBmaWVsZHM6IFtdLFxuICAgIH0sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBGb3JtVHJpZ2dlck5vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIkZvcm0gc3VibWlzc2lvblwiLCBwbGFjZWhvbGRlcjogXCJGb3JtIHN1Ym1pc3Npb24gcGF5bG9hZFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicGF5bG9hZFwiIH0pXG4gIHBheWxvYWQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIENoYXQgdHJpZ2dlciDigJQgY2hhdCBtZXNzYWdlIGVudHJ5cG9pbnQ7IG1lc3NhZ2Uvc2Vzc2lvbklkL3VzZXJJZCBzY2hlbWEuXG4gKi9cbkBub2RlKFwiY29yZS50cmlnZ2VyLmNoYXRcIiwge1xuICBraW5kOiBcImNvcmUudHJpZ2dlci5jaGF0XCIsXG4gIGNhdGVnb3J5OiBcIlRyaWdnZXJcIixcbiAgY29sb3I6IFwiIzE0YjhhNlwiLFxuICBpY29uOiBcInRpLW1lc3NhZ2UtY2lyY2xlXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJ0cmlnZ2VyXCIsIFwiY2hhdFwiLCBcImVudHJ5cG9pbnRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiQ2hhdCB0cmlnZ2VyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSB3b3JrZmxvdyB3aGVuIGEgY2hhdCBtZXNzYWdlIGlzIHJlY2VpdmVkLiBFbWl0cyBtZXNzYWdlLCBzZXNzaW9uSWQsIGFuZCB1c2VySWQuXCIsXG4gICAgdHJpZ2dlcjoge1xuICAgICAgdHlwZTogXCJjaGF0XCIsXG4gICAgfSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIENoYXRUcmlnZ2VyTm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiTWVzc2FnZVwiLCBwbGFjZWhvbGRlcjogXCJJbmNvbWluZyBjaGF0IG1lc3NhZ2VcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcIm1lc3NhZ2VcIiB9KVxuICBtZXNzYWdlITogc3RyaW5nO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlNlc3Npb24gSURcIiwgcGxhY2Vob2xkZXI6IFwiQ2hhdCBzZXNzaW9uIGlkZW50aWZpZXJcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInNlc3Npb25JZFwiIH0pXG4gIHNlc3Npb25JZCE6IHN0cmluZztcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJVc2VyIElEXCIsIHBsYWNlaG9sZGVyOiBcIkNoYXQgdXNlciBpZGVudGlmaWVyXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJ1c2VySWRcIiB9KVxuICB1c2VySWQhOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQWxsIGJ1aWx0LWluIHRyaWdnZXIgbm9kZSBjb25zdHJ1Y3RvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBHUkFQSF9UUklHR0VSX05PREVTID0gW1xuICBNYW51YWxUcmlnZ2VyTm9kZSxcbiAgV2ViaG9va1RyaWdnZXJOb2RlLFxuICBTY2hlZHVsZVRyaWdnZXJOb2RlLFxuICBFdmVudFRyaWdnZXJOb2RlLFxuICBGb3JtVHJpZ2dlck5vZGUsXG4gIENoYXRUcmlnZ2VyTm9kZSxcbl0gYXMgY29uc3Q7XG4iXX0=
@@ -1,23 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3Bpbm5pbmcvR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxhQUFhLEVBQUUsdUNBQWtDO0FBRTFEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDhCQUE4QjtJQUN6Qzs7O09BR0c7SUFDSCxlQUFlLENBQUMsSUFBd0IsRUFBRSxNQUFjO1FBQ3RELE9BQU8sYUFBYSxDQUFDLGFBQWEsQ0FDaEMsTUFBTSxFQUNOLElBQUksQ0FBQyxjQUFjLEVBQ25CLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxJQUF3QixFQUFFLE1BQWM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGlubmluZy9HcmFwaFBpbm5pbmdEZXBlbmRlbmN5UmVzb2x2ZXJcbiAqIEBzdW1tYXJ5IFJlc29sdmVzIHVwc3RyZWFtIGRlcGVuZGVuY3kgc3VidHJlZXMgZm9yIHBpbm5pbmcuXG4gKiBAZGVzY3JpcHRpb24gV2hlbiBhIG5vZGUgaXMgcGlubmVkLCBhbGwgdXBzdHJlYW0gbm9kZXMgaXQgZGVwZW5kcyBvbiBtdXN0IGFsc28gYmUgcGlubmVkLiBUaGlzIHJlc29sdmVyIGNvbXB1dGVzIHRoZSBkZXBlbmRlbmN5IHNldC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblBsYW4gfSBmcm9tIFwiLi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuXCI7XG5pbXBvcnQgeyBHcmFwaFRvcG9sb2d5IH0gZnJvbSBcIi4uL3BsYW5uaW5nL0dyYXBoVG9wb2xvZ3lcIjtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jeSBzdWJ0cmVlIG9mIGEgbm9kZSBmb3IgcGlubmluZyBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyIHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNldCBvZiB1cHN0cmVhbSBub2RlIGlkcyB0aGF0IHRoZSBnaXZlbiBub2RlIGRlcGVuZHMgb24sXG4gICAqIGV4Y2x1ZGluZyB0aGUgd29ya2Zsb3cgYm91bmRhcnkuXG4gICAqL1xuICBnZXREZXBlbmRlbmNpZXMocGxhbjogR3JhcGhFeGVjdXRpb25QbGFuLCBub2RlSWQ6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgICByZXR1cm4gR3JhcGhUb3BvbG9neS51cHN0cmVhbU5vZGVzKFxuICAgICAgbm9kZUlkLFxuICAgICAgcGxhbi5pbmNvbWluZ0J5Tm9kZSxcbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBub2RlIGlkcyB0byBwaW46IHRoZSBub2RlIGl0c2VsZiBwbHVzIGFsbCBpdHNcbiAgICogdXBzdHJlYW0gZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgZ2V0UGluU2V0KHBsYW46IEdyYXBoRXhlY3V0aW9uUGxhbiwgbm9kZUlkOiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29uc3QgZGVwcyA9IHRoaXMuZ2V0RGVwZW5kZW5jaWVzKHBsYW4sIG5vZGVJZCk7XG4gICAgZGVwcy5hZGQobm9kZUlkKTtcbiAgICByZXR1cm4gZGVwcztcbiAgfVxufVxuIl19
@@ -1,15 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nTWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvcGlubmluZy9HcmFwaFBpbm5pbmdNZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUF5QjtJQUM1RCxPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLG1CQUFtQixFQUFFLElBQUk7Q0FDMUIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxRQUEwQztJQUNuRSxPQUFPLFFBQVEsRUFBRSxPQUFPLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3Bpbm5pbmcvR3JhcGhQaW5uaW5nTWV0YWRhdGFcbiAqIEBzdW1tYXJ5IFBpbm5pbmcgbWV0YWRhdGEgZGVmYXVsdHMgYW5kIGhlbHBlcnMuXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgZGVmYXVsdCBwaW5uaW5nIG1ldGFkYXRhIHZhbHVlcyBhbmQgYSBoZWxwZXIgdG8gY2hlY2sgcGlubmFiaWxpdHkuIFRoZSBgR3JhcGhQaW5uaW5nTWV0YWRhdGFgIHR5cGUgaXRzZWxmIGlzIGRlZmluZWQgaW4gYC4uL3R5cGVzYCBhbmQgcmUtZXhwb3J0ZWQgZnJvbSB0aGUgcGFja2FnZSByb290LlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoUGlubmluZ01ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbi8qKlxuICogRGVmYXVsdCBwaW5uaW5nIG1ldGFkYXRhIGFwcGxpZWQgd2hlbiBgQHBpbm5hYmxlKClgIGlzIHVzZWQgd2l0aG91dCBvcHRpb25zLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9QSU5OSU5HX01FVEFEQVRBOiBHcmFwaFBpbm5pbmdNZXRhZGF0YSA9IHtcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgc3RyYXRlZ3k6IFwibWFudWFsXCIsXG4gIGluY2x1ZGVEZXBlbmRlbmNpZXM6IHRydWUsXG59O1xuXG4vKipcbiAqIFJldHVybnMgYHRydWVgIHdoZW4gdGhlIGdpdmVuIG1ldGFkYXRhIGFsbG93cyBwaW5uaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQaW5uYWJsZShtZXRhZGF0YTogR3JhcGhQaW5uaW5nTWV0YWRhdGEgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIG1ldGFkYXRhPy5lbmFibGVkID09PSB0cnVlICYmIG1ldGFkYXRhLnN0cmF0ZWd5ICE9PSBcImRpc2FibGVkXCI7XG59XG4iXX0=
@@ -1,29 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nUG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3Bpbm5pbmcvR3JhcGhQaW5uaW5nUG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsa0NBQStCO0FBRTlFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qix3REFBd0Q7SUFDeEQsTUFBTSxDQUFDLElBQTRCO1FBQ2pDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxvRkFBb0Y7SUFDcEYsb0JBQW9CLENBQUMsSUFBNEI7UUFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE9BQU8sUUFBUSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7SUFDdkUsQ0FBQztJQUVELHNFQUFzRTtJQUN0RSxhQUFhLENBQUMsSUFBNEI7UUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE9BQU8sUUFBUSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUM7SUFDeEUsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxrQkFBa0IsQ0FBQyxJQUE0QjtRQUM3QyxNQUFNLEdBQUcsR0FDTixJQUFJLENBQUMsVUFBa0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVE7WUFDbEQsSUFBSSxDQUFDLFFBQWdCLEVBQUUsUUFBUSxDQUFDO1FBQ25DLE9BQU8sR0FBRztZQUNSLENBQUMsQ0FBQyxFQUFFLEdBQUcsd0JBQXdCLEVBQUUsR0FBRyxHQUFHLEVBQUU7WUFDekMsQ0FBQyxDQUFDLEVBQUUsR0FBRyx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDdEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9waW5uaW5nL0dyYXBoUGlubmluZ1BvbGljeVxuICogQHN1bW1hcnkgRGVjaWRlcyB3aGV0aGVyIGEgbm9kZSBjYW4gYmUgcGlubmVkIGFuZCB3aGV0aGVyIHBpbm5lZCB2YWx1ZXMgc2hvdWxkIGJlIHVzZWQuXG4gKiBAZGVzY3JpcHRpb24gUmVhZHMgcGlubmluZyBtZXRhZGF0YSBmcm9tIHBsYW4gbm9kZXMgYW5kIGVuZm9yY2VzIHRoZSBwaW5uaW5nIHN0cmF0ZWd5LlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUgfSBmcm9tIFwiLi4vcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuTm9kZVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaFBpbm5pbmdNZXRhZGF0YSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgREVGQVVMVF9QSU5OSU5HX01FVEFEQVRBLCBpc1Bpbm5hYmxlIH0gZnJvbSBcIi4vR3JhcGhQaW5uaW5nTWV0YWRhdGFcIjtcblxuLyoqXG4gKiBQb2xpY3kgdGhhdCBkZWNpZGVzIHBpbm5pbmcgYmVoYXZpb3VyIGZvciBhIHBsYW4gbm9kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUGlubmluZ1BvbGljeSB7XG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG5vZGUgaXMgYWxsb3dlZCB0byBiZSBwaW5uZWQuICovXG4gIGNhblBpbihub2RlOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUGlubmFibGUodGhpcy5nZXRQaW5uaW5nTWV0YWRhdGEobm9kZSkpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgd2hldGhlciB0aGUgZW5naW5lIHNob3VsZCBhdHRlbXB0IHRvIHVzZSBhIHBpbm5lZCB2YWx1ZSBmb3IgdGhlIG5vZGUuICovXG4gIHNob3VsZFVzZVBpbm5lZFZhbHVlKG5vZGU6IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZ2V0UGlubmluZ01ldGFkYXRhKG5vZGUpO1xuICAgIHJldHVybiBtZXRhZGF0YS5lbmFibGVkID09PSB0cnVlICYmIG1ldGFkYXRhLnN0cmF0ZWd5ICE9PSBcImRpc2FibGVkXCI7XG4gIH1cblxuICAvKiogUmV0dXJucyB3aGV0aGVyIGF1dG9tYXRpYyBwaW5uaW5nIHNob3VsZCBvY2N1ciBhZnRlciBleGVjdXRpb24uICovXG4gIHNob3VsZEF1dG9QaW4obm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5nZXRQaW5uaW5nTWV0YWRhdGEobm9kZSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhLmVuYWJsZWQgPT09IHRydWUgJiYgbWV0YWRhdGEuc3RyYXRlZ3kgPT09IFwiYXV0b21hdGljXCI7XG4gIH1cblxuICAvKiogRXh0cmFjdHMgcGlubmluZyBtZXRhZGF0YSBmcm9tIGEgcGxhbiBub2RlLiAqL1xuICBnZXRQaW5uaW5nTWV0YWRhdGEobm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSk6IEdyYXBoUGlubmluZ01ldGFkYXRhIHtcbiAgICBjb25zdCByYXcgPVxuICAgICAgKG5vZGUuZGVmaW5pdGlvbiBhcyBhbnkpPy5ncmFwaD8ubWV0YWRhdGE/LnBpbm5hYmxlID8/XG4gICAgICAobm9kZS5tZXRhZGF0YSBhcyBhbnkpPy5waW5uYWJsZTtcbiAgICByZXR1cm4gcmF3XG4gICAgICA/IHsgLi4uREVGQVVMVF9QSU5OSU5HX01FVEFEQVRBLCAuLi5yYXcgfVxuICAgICAgOiB7IC4uLkRFRkFVTFRfUElOTklOR19NRVRBREFUQSwgZW5hYmxlZDogZmFsc2UgfTtcbiAgfVxufVxuIl19
@@ -1,186 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9waW5uaW5nL0dyYXBoUGlubmluZ1NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSwwQkFBcUI7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHlDQUFvQztBQUdoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLHVDQUFrQztBQWUxRDs7R0FFRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFDbUIsS0FBc0IsRUFDdEIsTUFBMEIsRUFDMUIsa0JBQWtEO1FBRmxELFVBQUssR0FBTCxLQUFLLENBQWlCO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBZ0M7SUFDbEUsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQTRCO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUEwQixDQUFDO1FBQ2hELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQztRQUVoRSxNQUFNLE1BQU0sR0FBRyxtQkFBbUI7WUFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDekQsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFOUIsMEJBQTBCO1FBQzFCLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtB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QU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDcEIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFFLEtBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3pFLENBQUM7UUFDRixPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFVBQVUsQ0FBQyxHQUFXO1FBQzVCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQixJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0NBQ0Y7QUFFRCxLQUFLLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9waW5uaW5nL0dyYXBoUGlubmluZ1NlcnZpY2VcbiAqIEBzdW1tYXJ5IFNlcnZpY2UgZm9yIHBpbm5pbmcgYW5kIHVucGlubmluZyBncmFwaCBub2RlIHZhbHVlcy5cbiAqIEBkZXNjcmlwdGlvbiBDb21wdXRlcyBzdGFibGUgZmluZ2VycHJpbnRzLCBwaW5zL3VucGlucyBub2RlcyBhbmQgdGhlaXIgdXBzdHJlYW0gZGVwZW5kZW5jaWVzLCByZWFkcyBwaW5uZWQgdmFsdWVzLCBhbmQgZW1pdHMgcGlubmluZyBldmVudHMuIFBpbm5pbmcgaXMgYWxsLW9yLW5vdGhpbmc6IGlmIGFueSB1cHN0cmVhbSBkZXBlbmRlbmN5IGlzIG5vdCBwaW5uYWJsZSwgdGhlIG9wZXJhdGlvbiBmYWlscy5cbiAqL1xuaW1wb3J0IHsgR1JBUEhfUElOTklOR19NRVRBREFUQV9LRVkgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBHcmFwaFBpbm5pbmdFcnJvciB9IGZyb20gXCIuLi9lcnJvcnMvR3JhcGhQaW5uaW5nRXJyb3JcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuIH0gZnJvbSBcIi4uL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhblwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlIH0gZnJvbSBcIi4uL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbk5vZGVcIjtcbmltcG9ydCB7IEdyYXBoVG9wb2xvZ3kgfSBmcm9tIFwiLi4vcGxhbm5pbmcvR3JhcGhUb3BvbG9neVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaFZhbHVlU3RvcmUgfSBmcm9tIFwiLi4vc3RvcmUvR3JhcGhWYWx1ZVN0b3JlXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoVmFsdWVLZXkgfSBmcm9tIFwiLi4vc3RvcmUvR3JhcGhWYWx1ZUtleVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaENhY2hlZFZhbHVlIH0gZnJvbSBcIi4uL3N0b3JlL0dyYXBoQ2FjaGVkVmFsdWVcIjtcbmltcG9ydCB0eXBlIHtcbiAgR3JhcGhFeGVjdXRpb25SZXN1bHQsXG4gIEdyYXBoRXhlY3V0aW9uVmFsdWVzLFxuICBHcmFwaFBpbk5vZGVPcHRpb25zLFxuICBHcmFwaFVucGluTm9kZU9wdGlvbnMsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuXG5pbXBvcnQgdHlwZSB7IEdyYXBoUGlubmluZ1BvbGljeSB9IGZyb20gXCIuL0dyYXBoUGlubmluZ1BvbGljeVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaFBpbm5pbmdEZXBlbmRlbmN5UmVzb2x2ZXIgfSBmcm9tIFwiLi9HcmFwaFBpbm5pbmdEZXBlbmRlbmN5UmVzb2x2ZXJcIjtcblxuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgbWFuYWdlcyBwaW5uaW5nIGFuZCB1bnBpbm5pbmcgb2YgZ3JhcGggbm9kZSB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFBpbm5pbmdTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogR3JhcGhWYWx1ZVN0b3JlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9saWN5OiBHcmFwaFBpbm5pbmdQb2xpY3ksXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRlbmN5UmVzb2x2ZXI6IEdyYXBoUGlubmluZ0RlcGVuZGVuY3lSZXNvbHZlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIFBpbnMgYSBub2RlIGFuZCBhbGwgaXRzIHVwc3RyZWFtIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHRocm93cyB7R3JhcGhQaW5uaW5nRXJyb3J9IHdoZW4gdGhlIG5vZGUgb3IgYW55IGRlcGVuZGVuY3kgaXMgbm90IHBpbm5hYmxlLlxuICAgKi9cbiAgYXN5bmMgcGluTm9kZShvcHRpb25zOiBHcmFwaFBpbk5vZGVPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGxhbiA9IG9wdGlvbnMucGxhbiBhcyBHcmFwaEV4ZWN1dGlvblBsYW47XG4gICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IG9wdGlvbnMuaW5jbHVkZURlcGVuZGVuY2llcyA/PyB0cnVlO1xuXG4gICAgY29uc3QgcGluU2V0ID0gaW5jbHVkZURlcGVuZGVuY2llc1xuICAgICAgPyB0aGlzLmRlcGVuZGVuY3lSZXNvbHZlci5nZXRQaW5TZXQocGxhbiwgb3B0aW9ucy5ub2RlSWQpXG4gICAgICA6IG5ldyBTZXQoW29wdGlvbnMubm9kZUlkXSk7XG5cbiAgICAvLyBWYWxpZGF0ZSBhbGwtb3Itbm90aGluZ1xuICAgIGZvciAoY29uc3Qgbm9kZUlkIG9mIHBpblNldCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHBsYW4ubm9kZXMuZmluZCgobikgPT4gbi5pZCA9PT0gbm9kZUlkKTtcbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhQaW5uaW5nRXJyb3IoYE5vZGUgJyR7bm9kZUlkfScgbm90IGZvdW5kIGluIHBsYW5gKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wb2xpY3kuY2FuUGluKG5vZGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBHcmFwaFBpbm5pbmdFcnJvcihcbiAgICAgICAgICBgTm9kZSAnJHtub2RlSWR9JyBpcyBub3QgcGlubmFibGVgLFxuICAgICAgICAgIHsgbm9kZUlkIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQaW4gZGVwZW5kZW5jaWVzIGZpcnN0LCB0aGVuIHRoZSBzZWxlY3RlZCBub2RlXG4gICAgY29uc3Qgb3JkZXJlZCA9IHRoaXMudG9wb2xvZ2ljYWxPcmRlcihwbGFuLCBwaW5TZXQpO1xuICAgIGZvciAoY29uc3Qgbm9kZUlkIG9mIG9yZGVyZWQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwbGFuLm5vZGVzLmZpbmQoKG4pID0+IG4uaWQgPT09IG5vZGVJZCkhO1xuICAgICAgY29uc3QgcmVzdWx0ID0gb3B0aW9ucy5yZXN1bHQubm9kZVJlc3VsdHNbbm9kZUlkXTtcbiAgICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQub3V0cHV0cykge1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhQaW5uaW5nRXJyb3IoXG4gICAgICAgICAgYE5vZGUgJyR7bm9kZUlkfScgaGFzIG5vIGNvbXBsZXRlZCBvdXRwdXQgdG8gcGluYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5wdXRzID0gcmVzdWx0LmlucHV0cyA/PyB7fTtcbiAgICAgIGNvbnN0IGRlcEZpbmdlcnByaW50cyA9IHRoaXMuZGVwZW5kZW5jeUZpbmdlcnByaW50cyhwbGFuLCBub2RlSWQsIG9wdGlvbnMucmVzdWx0KTtcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuY3JlYXRlVmFsdWVLZXkob3B0aW9ucy53b3JrZmxvdywgbm9kZSwgaW5wdXRzLCBkZXBGaW5nZXJwcmludHMsIG9wdGlvbnMubmFtZXNwYWNlKTtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgIGNvbnN0IGNhY2hlZDogR3JhcGhDYWNoZWRWYWx1ZSA9IHtcbiAgICAgICAga2V5LFxuICAgICAgICBvdXRwdXRzOiByZXN1bHQub3V0cHV0cyxcbiAgICAgICAgcGlubmVkOiB0cnVlLFxuICAgICAgICBjcmVhdGVkQXQ6IG5vdyxcbiAgICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICAgIG1ldGFkYXRhOiB7IC4uLm9wdGlvbnMucmVzdWx0Lm1ldGFkYXRhLCBub2RlSWQgfSxcbiAgICAgIH07XG4gICAgICBhd2FpdCB0aGlzLnN0b3JlLndyaXRlQ2FjaGVkKGtleSwgY2FjaGVkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5waW5zIGEgc2luZ2xlIG5vZGUgKGRvZXMgbm90IHVucGluIGRlcGVuZGVudHMgaW4gdjEpLlxuICAgKi9cbiAgYXN5bmMgdW5waW5Ob2RlKG9wdGlvbnM6IEdyYXBoVW5waW5Ob2RlT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGtleTogR3JhcGhWYWx1ZUtleSA9IHtcbiAgICAgIHdvcmtmbG93SWQ6IG9wdGlvbnMud29ya2Zsb3cubmFtZSxcbiAgICAgIG5vZGVJZDogb3B0aW9ucy5ub2RlSWQsXG4gICAgICBmaW5nZXJwcmludDogb3B0aW9ucy5maW5nZXJwcmludCxcbiAgICAgIG5hbWVzcGFjZTogb3B0aW9ucy5uYW1lc3BhY2UsXG4gICAgfTtcbiAgICBhd2FpdCB0aGlzLnN0b3JlLmRlbGV0ZUNhY2hlZChrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIGEgcGlubmVkIHZhbHVlIGZvciBhIG5vZGUsIHJldHVybmluZyBgdW5kZWZpbmVkYCB3aGVuIG5vIHZhbGlkXG4gICAqIHBpbm5lZCB2YWx1ZSBleGlzdHMuXG4gICAqL1xuICBhc3luYyByZWFkUGlubmVkVmFsdWUoXG4gICAgd29ya2Zsb3c6IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uLFxuICAgIG5vZGU6IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUsXG4gICAgaW5wdXRzOiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgICBkZXBlbmRlbmN5RmluZ2VycHJpbnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIG5hbWVzcGFjZT86IHN0cmluZ1xuICApOiBQcm9taXNlPEdyYXBoQ2FjaGVkVmFsdWUgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNyZWF0ZVZhbHVlS2V5KHdvcmtmbG93LCBub2RlLCBpbnB1dHMsIGRlcGVuZGVuY3lGaW5nZXJwcmludHMsIG5hbWVzcGFjZSk7XG4gICAgY29uc3QgY2FjaGVkID0gYXdhaXQgdGhpcy5zdG9yZS5yZWFkQ2FjaGVkKGtleSk7XG4gICAgaWYgKGNhY2hlZCAmJiBjYWNoZWQucGlubmVkKSB7XG4gICAgICBpZiAoY2FjaGVkLmV4cGlyZXNBdCAmJiBuZXcgRGF0ZShjYWNoZWQuZXhwaXJlc0F0KSA8IG5ldyBEYXRlKCkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYWNoZWQ7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHN0YWJsZSB2YWx1ZSBrZXkgZm9yIGEgbm9kZS5cbiAgICovXG4gIGNyZWF0ZVZhbHVlS2V5KFxuICAgIHdvcmtmbG93OiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbixcbiAgICBub2RlOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlLFxuICAgIGlucHV0czogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgZGVwZW5kZW5jeUZpbmdlcnByaW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBuYW1lc3BhY2U/OiBzdHJpbmdcbiAgKTogR3JhcGhWYWx1ZUtleSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93Lm5hbWUsXG4gICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICBmaW5nZXJwcmludDogdGhpcy5jb21wdXRlRmluZ2VycHJpbnQod29ya2Zsb3csIG5vZGUsIGlucHV0cywgZGVwZW5kZW5jeUZpbmdlcnByaW50cyksXG4gICAgICBuYW1lc3BhY2UsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBhIHN0YWJsZSBmaW5nZXJwcmludCBmb3IgYSBub2RlJ3MgaW5wdXRzIGFuZCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBjb21wdXRlRmluZ2VycHJpbnQoXG4gICAgd29ya2Zsb3c6IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uLFxuICAgIG5vZGU6IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUsXG4gICAgaW5wdXRzOiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgICBkZXBlbmRlbmN5RmluZ2VycHJpbnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93Lm5hbWUsXG4gICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICBub2RlS2luZDogbm9kZS5raW5kLFxuICAgICAgbm9kZURlZmluaXRpb25WZXJzaW9uOiAobm9kZS5kZWZpbml0aW9uIGFzIGFueSk/LmdyYXBoPy5tZXRhZGF0YT8udmVyc2lvbixcbiAgICAgIGlucHV0czogdGhpcy5zdGFibGVTZXJpYWxpemUoaW5wdXRzKSxcbiAgICAgIGRlcGVuZGVuY3lGaW5nZXJwcmludHM6IHRoaXMuc3RhYmxlU2VyaWFsaXplKGRlcGVuZGVuY3lGaW5nZXJwcmludHMpLFxuICAgIH07XG4gICAgY29uc3QganNvbiA9IHRoaXMuc3RhYmxlU2VyaWFsaXplKGRhdGEpO1xuICAgIC8vIFVzZSBhIGRldGVybWluaXN0aWMgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCB0aGF0IHdvcmtzIGluIGJvdGggYnJvd3NlclxuICAgIC8vIGFuZCBOb2RlIGVudmlyb25tZW50cyB3aXRob3V0IHJlcXVpcmluZyBgbm9kZTpjcnlwdG9gLlxuICAgIHJldHVybiB0aGlzLnNpbXBsZUhhc2goanNvbik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHRvcG9sb2dpY2FsIG9yZGVyaW5nIG9mIHRoZSBnaXZlbiBub2RlIHNldC5cbiAgICovXG4gIHByaXZhdGUgdG9wb2xvZ2ljYWxPcmRlcihcbiAgICBwbGFuOiBHcmFwaEV4ZWN1dGlvblBsYW4sXG4gICAgbm9kZVNldDogU2V0PHN0cmluZz5cbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgdmlzaXQgPSAobm9kZUlkOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2aXNpdGVkLmhhcyhub2RlSWQpKSByZXR1cm47XG4gICAgICB2aXNpdGVkLmFkZChub2RlSWQpO1xuICAgICAgY29uc3QgZGVwcyA9IEdyYXBoVG9wb2xvZ3kudXBzdHJlYW1Ob2Rlcyhub2RlSWQsIHBsYW4uaW5jb21pbmdCeU5vZGUsIGZhbHNlKTtcbiAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcbiAgICAgICAgaWYgKG5vZGVTZXQuaGFzKGRlcCkpIHZpc2l0KGRlcCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaChub2RlSWQpO1xuICAgIH07XG4gICAgZm9yIChjb25zdCBub2RlSWQgb2Ygbm9kZVNldCkgdmlzaXQobm9kZUlkKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIGZpbmdlcnByaW50cyBmb3IgYWxsIHVwc3RyZWFtIGRlcGVuZGVuY2llcyBvZiBhIG5vZGUuXG4gICAqL1xuICBwcml2YXRlIGRlcGVuZGVuY3lGaW5nZXJwcmludHMoXG4gICAgcGxhbjogR3JhcGhFeGVjdXRpb25QbGFuLFxuICAgIG5vZGVJZDogc3RyaW5nLFxuICAgIHJlc3VsdDogR3JhcGhFeGVjdXRpb25SZXN1bHRcbiAgKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgZGVwcyA9IHRoaXMuZGVwZW5kZW5jeVJlc29sdmVyLmdldERlcGVuZGVuY2llcyhwbGFuLCBub2RlSWQpO1xuICAgIGNvbnN0IGZpbmdlcnByaW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwbGFuLm5vZGVzLmZpbmQoKG4pID0+IG4uaWQgPT09IGRlcCk7XG4gICAgICBpZiAobm9kZSkge1xuICAgICAgICBjb25zdCBkZXBSZXN1bHQgPSByZXN1bHQubm9kZVJlc3VsdHNbZGVwXTtcbiAgICAgICAgY29uc3QgaW5wdXRzID0gZGVwUmVzdWx0Py5pbnB1dHMgPz8ge307XG4gICAgICAgIGNvbnN0IG5lc3RlZERlcHMgPSB0aGlzLmRlcGVuZGVuY3lGaW5nZXJwcmludHMocGxhbiwgZGVwLCByZXN1bHQpO1xuICAgICAgICBmaW5nZXJwcmludHNbZGVwXSA9IHRoaXMuY29tcHV0ZUZpbmdlcnByaW50KHBsYW4ud29ya2Zsb3csIG5vZGUsIGlucHV0cywgbmVzdGVkRGVwcyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmaW5nZXJwcmludHM7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplcyBhIHZhbHVlIHdpdGggcmVjdXJzaXZlbHkgc29ydGVkIGtleXMgZm9yIHN0YWJsZSBoYXNoaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGFibGVTZXJpYWxpemUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGBbJHt2YWx1ZS5tYXAoKHYpID0+IHRoaXMuc3RhYmxlU2VyaWFsaXplKHYpKS5qb2luKFwiLFwiKX1dYDtcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKS5zb3J0KCk7XG4gICAgY29uc3QgcGFpcnMgPSBrZXlzLm1hcChcbiAgICAgIChrKSA9PiBgJHtKU09OLnN0cmluZ2lmeShrKX06JHt0aGlzLnN0YWJsZVNlcmlhbGl6ZSgodmFsdWUgYXMgYW55KVtrXSl9YFxuICAgICk7XG4gICAgcmV0dXJuIGB7JHtwYWlycy5qb2luKFwiLFwiKX19YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaW1wbGUgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCBmb3IgYnJvd3NlciBlbnZpcm9ubWVudHMgd2hlcmVcbiAgICogYG5vZGU6Y3J5cHRvYCBpcyB1bmF2YWlsYWJsZS4gUHJvZHVjZXMgYSBkZXRlcm1pbmlzdGljIGhleC1saWtlIHN0cmluZ1xuICAgKiBmcm9tIHRoZSBpbnB1dC4gVGhpcyBpcyBOT1QgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIGJ1dCBpcyBzdWZmaWNpZW50XG4gICAqIGZvciBmaW5nZXJwcmludC1iYXNlZCBjYWNoZSBrZXlzLlxuICAgKi9cbiAgcHJpdmF0ZSBzaW1wbGVIYXNoKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgaGFzaCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYXIgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgIGhhc2ggPSAoaGFzaCA8PCA1KSAtIGhhc2ggKyBjaGFyO1xuICAgICAgaGFzaCB8PSAwO1xuICAgIH1cbiAgICByZXR1cm4gYGZwXyR7TWF0aC5hYnMoaGFzaCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIFwiMFwiKX1fJHtzdHIubGVuZ3RofWA7XG4gIH1cbn1cblxudm9pZCBHUkFQSF9QSU5OSU5HX01FVEFEQVRBX0tFWTtcbiJdfQ==
@@ -1,10 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvcGlubmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsMENBQXVDO0FBQ3ZDLHdDQUFxQztBQUNyQyxvREFBaUQ7QUFDakQseUNBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9waW5uaW5nXG4gKiBAc3VtbWFyeSBHcmFwaCBwaW5uaW5nIHN1YnN5c3RlbS5cbiAqIEBkZXNjcmlwdGlvbiBSZS1leHBvcnRzIHRoZSBwaW5uaW5nIG1ldGFkYXRhLCBwb2xpY3ksIGRlcGVuZGVuY3kgcmVzb2x2ZXIsIGFuZCBzZXJ2aWNlLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaFBpbm5pbmdNZXRhZGF0YVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhQaW5uaW5nUG9saWN5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaFBpbm5pbmdEZXBlbmRlbmN5UmVzb2x2ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoUGlubmluZ1NlcnZpY2VcIjtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5cbiAqIEBzdW1tYXJ5IFRoZSBjb21wbGV0ZSBleGVjdXRpb24gcGxhbiBmb3IgYSB3b3JrZmxvdy5cbiAqIEBkZXNjcmlwdGlvbiBDb250YWlucyByZXNvbHZlZCBub2RlcywgZWRnZXMsIHRvcG9sb2dpY2FsIGxheWVycywgYW5kIGluY29taW5nL291dGdvaW5nIG1hcHMuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuTm9kZSB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUGxhbk5vZGVcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuRWRnZSB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUGxhbkVkZ2VcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXIgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblBsYW5MYXllclwiO1xuXG4vKipcbiAqIFRoZSByZXNvbHZlZCBleGVjdXRpb24gcGxhbiBmb3IgYSBzaW5nbGUgd29ya2Zsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFeGVjdXRpb25QbGFuIHtcbiAgd29ya2Zsb3c6IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uO1xuICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gIG5vZGVzOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlW107XG4gIGVkZ2VzOiBHcmFwaEV4ZWN1dGlvblBsYW5FZGdlW107XG4gIGxheWVyczogR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXJbXTtcbiAgaW5jb21pbmdCeU5vZGU6IE1hcDxzdHJpbmcsIEdyYXBoRXhlY3V0aW9uUGxhbkVkZ2VbXT47XG4gIG91dGdvaW5nQnlOb2RlOiBNYXA8c3RyaW5nLCBHcmFwaEV4ZWN1dGlvblBsYW5FZGdlW10+O1xufVxuIl19
@@ -1,7 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuRWRnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5FZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbkVkZ2VcbiAqIEBzdW1tYXJ5IFBsYW4gZWRnZSB0eXBlIGZvciB0aGUgZXhlY3V0aW9uIHBsYW4uXG4gKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyBhIGRpcmVjdGVkIHZhbHVlIHJvdXRlIGJldHdlZW4gdHdvIGVuZHBvaW50cyAobm9kZS10by1ub2RlIG9yIG5vZGUtdG8td29ya2Zsb3ctYm91bmRhcnkpLlxuICovXG5cbi8qKlxuICogQW4gZWRnZSBpbiB0aGUgZXhlY3V0aW9uIHBsYW4gcmVwcmVzZW50aW5nIGEgdmFsdWUgcm91dGUgZnJvbSBhIHNvdXJjZVxuICogcG9ydCB0byBhIHRhcmdldCBwb3J0LlxuICpcbiAqIGBzb3VyY2VOb2RlSWRgIG9yIGB0YXJnZXROb2RlSWRgIG1heSBiZSB7QGxpbmsgR1JBUEhfV09SS0ZMT1dfQk9VTkRBUll9IHdoZW5cbiAqIHRoZSBlZGdlIGNvbm5lY3RzIHRvIHRoZSB3b3JrZmxvdyBib3VuZGFyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaEV4ZWN1dGlvblBsYW5FZGdlIHtcbiAgaWQ6IHN0cmluZztcbiAgc291cmNlTm9kZUlkOiBzdHJpbmc7XG4gIHNvdXJjZVBvcnQ6IHN0cmluZztcbiAgdGFyZ2V0Tm9kZUlkOiBzdHJpbmc7XG4gIHRhcmdldFBvcnQ6IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXJcbiAqIEBzdW1tYXJ5IEEgbGF5ZXIgb2Ygbm9kZXMgdGhhdCBjYW4gZXhlY3V0ZSBpbiBwYXJhbGxlbC5cbiAqIEBkZXNjcmlwdGlvbiBQcm9kdWNlZCBieSB0aGUgdG9wb2xvZ2ljYWwgcGxhbm5lcjsgYWxsIG5vZGVzIGluIGEgbGF5ZXIgaGF2ZSBubyBkZXBlbmRlbmNpZXMgb24gZWFjaCBvdGhlci5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlIH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25QbGFuTm9kZVwiO1xuXG4vKipcbiAqIEEgdG9wb2xvZ2ljYWwgbGF5ZXIgb2Ygbm9kZXMgdGhhdCBtYXkgZXhlY3V0ZSBpbiBwYXJhbGxlbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaEV4ZWN1dGlvblBsYW5MYXllciB7XG4gIGluZGV4OiBudW1iZXI7XG4gIG5vZGVzOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlW107XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5Ob2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbk5vZGVcbiAqIEBzdW1tYXJ5IFBsYW4gbm9kZSB0eXBlIGZvciB0aGUgZXhlY3V0aW9uIHBsYW4uXG4gKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyBhIHNpbmdsZSBub2RlIHJlc29sdmVkIGZyb20gYSB3b3JrZmxvdyBkZWZpbml0aW9uLCByZWFkeSBmb3IgZXhlY3V0aW9uLlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIEdyYXBoTm9kZURlZmluaXRpb24sXG4gIEdyYXBoV29ya2Zsb3dOb2RlTWV0YWRhdGEsXG59IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuXG4vKipcbiAqIEEgbm9kZSBpbiB0aGUgZXhlY3V0aW9uIHBsYW4sIGRlcml2ZWQgZnJvbSBhIHdvcmtmbG93J3Mgbm9kZSBtZXRhZGF0YSBhbmRcbiAqIGl0cyByZXNvbHZlZCBncmFwaCBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUge1xuICBpZDogc3RyaW5nO1xuICBraW5kOiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBzb3VyY2U6IEdyYXBoV29ya2Zsb3dOb2RlTWV0YWRhdGE7XG4gIGRlZmluaXRpb246IEdyYXBoTm9kZURlZmluaXRpb247XG4gIGlucHV0UG9ydHM6IHN0cmluZ1tdO1xuICBvdXRwdXRQb3J0czogc3RyaW5nW107XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG4iXX0=