@decaf-ts/integrations 0.3.1 → 0.3.3

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 (418) hide show
  1. package/dist/integrations.cjs +1 -1
  2. package/lib/cjs/graph/constants.cjs +94 -0
  3. package/lib/cjs/graph/constants.cjs.map +1 -0
  4. package/lib/cjs/graph/decorators.cjs +4 -0
  5. package/lib/cjs/graph/decorators.cjs.map +1 -0
  6. package/lib/cjs/graph/errors/GraphCycleError.cjs +20 -0
  7. package/lib/cjs/graph/errors/GraphCycleError.cjs.map +1 -0
  8. package/lib/cjs/graph/errors/GraphExecutionError.cjs +27 -0
  9. package/lib/cjs/graph/errors/GraphExecutionError.cjs.map +1 -0
  10. package/lib/cjs/graph/errors/GraphInputError.cjs +20 -0
  11. package/lib/cjs/graph/errors/GraphInputError.cjs.map +1 -0
  12. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +20 -0
  13. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs.map +1 -0
  14. package/lib/cjs/graph/errors/GraphPinningError.cjs +20 -0
  15. package/lib/cjs/graph/errors/GraphPinningError.cjs.map +1 -0
  16. package/lib/cjs/graph/errors/GraphPortError.cjs +20 -0
  17. package/lib/cjs/graph/errors/GraphPortError.cjs.map +1 -0
  18. package/lib/cjs/graph/errors/GraphStoreError.cjs +20 -0
  19. package/lib/cjs/graph/errors/GraphStoreError.cjs.map +1 -0
  20. package/lib/cjs/graph/errors/GraphTopologyError.cjs +20 -0
  21. package/lib/cjs/graph/errors/GraphTopologyError.cjs.map +1 -0
  22. package/lib/cjs/graph/errors/index.cjs +31 -0
  23. package/lib/cjs/graph/errors/index.cjs.map +1 -0
  24. package/lib/cjs/graph/events/GraphExecutionEvent.cjs +4 -0
  25. package/lib/cjs/graph/events/GraphExecutionEvent.cjs.map +1 -0
  26. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +40 -0
  27. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs.map +1 -0
  28. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +37 -0
  29. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs.map +1 -0
  30. package/lib/cjs/graph/events/GraphExecutionObserver.cjs +4 -0
  31. package/lib/cjs/graph/events/GraphExecutionObserver.cjs.map +1 -0
  32. package/lib/cjs/graph/events/index.cjs +27 -0
  33. package/lib/cjs/graph/events/index.cjs.map +1 -0
  34. package/lib/cjs/graph/execution/GraphExecutionContext.cjs +79 -0
  35. package/lib/cjs/graph/execution/GraphExecutionContext.cjs.map +1 -0
  36. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +405 -0
  37. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs.map +1 -0
  38. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +32 -0
  39. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs.map +1 -0
  40. package/lib/cjs/graph/execution/GraphExecutionResult.cjs +30 -0
  41. package/lib/cjs/graph/execution/GraphExecutionResult.cjs.map +1 -0
  42. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +4 -0
  43. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs.map +1 -0
  44. package/lib/cjs/graph/execution/index.cjs +28 -0
  45. package/lib/cjs/graph/execution/index.cjs.map +1 -0
  46. package/lib/cjs/graph/index.cjs +74 -0
  47. package/lib/cjs/graph/index.cjs.map +1 -0
  48. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +84 -0
  49. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs.map +1 -0
  50. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +63 -0
  51. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs.map +1 -0
  52. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +16 -0
  53. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs.map +1 -0
  54. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +76 -0
  55. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs.map +1 -0
  56. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +77 -0
  57. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs.map +1 -0
  58. package/lib/cjs/graph/loops/index.cjs +28 -0
  59. package/lib/cjs/graph/loops/index.cjs.map +1 -0
  60. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +28 -0
  61. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs.map +1 -0
  62. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +20 -0
  63. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs.map +1 -0
  64. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +34 -0
  65. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs.map +1 -0
  66. package/lib/cjs/graph/pinning/GraphPinningService.cjs +191 -0
  67. package/lib/cjs/graph/pinning/GraphPinningService.cjs.map +1 -0
  68. package/lib/cjs/graph/pinning/index.cjs +27 -0
  69. package/lib/cjs/graph/pinning/index.cjs.map +1 -0
  70. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +4 -0
  71. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs.map +1 -0
  72. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +4 -0
  73. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs.map +1 -0
  74. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +4 -0
  75. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs.map +1 -0
  76. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +4 -0
  77. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs.map +1 -0
  78. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +197 -0
  79. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs.map +1 -0
  80. package/lib/cjs/graph/planning/GraphRelationResolver.cjs +172 -0
  81. package/lib/cjs/graph/planning/GraphRelationResolver.cjs.map +1 -0
  82. package/lib/cjs/graph/planning/GraphTopology.cjs +57 -0
  83. package/lib/cjs/graph/planning/GraphTopology.cjs.map +1 -0
  84. package/lib/cjs/graph/planning/index.cjs +30 -0
  85. package/lib/cjs/graph/planning/index.cjs.map +1 -0
  86. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +44 -0
  87. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs.map +1 -0
  88. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +27 -0
  89. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs.map +1 -0
  90. package/lib/cjs/graph/registry/index.cjs +25 -0
  91. package/lib/cjs/graph/registry/index.cjs.map +1 -0
  92. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +53 -0
  93. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs.map +1 -0
  94. package/lib/cjs/graph/snapshots/index.cjs +24 -0
  95. package/lib/cjs/graph/snapshots/index.cjs.map +1 -0
  96. package/lib/cjs/graph/store/GraphCachedValue.cjs +4 -0
  97. package/lib/cjs/graph/store/GraphCachedValue.cjs.map +1 -0
  98. package/lib/cjs/graph/store/GraphValueKey.cjs +4 -0
  99. package/lib/cjs/graph/store/GraphValueKey.cjs.map +1 -0
  100. package/lib/cjs/graph/store/GraphValueStore.cjs +76 -0
  101. package/lib/cjs/graph/store/GraphValueStore.cjs.map +1 -0
  102. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +4 -0
  103. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs.map +1 -0
  104. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +69 -0
  105. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs.map +1 -0
  106. package/lib/cjs/graph/store/index.cjs +28 -0
  107. package/lib/cjs/graph/store/index.cjs.map +1 -0
  108. package/lib/cjs/graph/types.cjs +4 -0
  109. package/lib/cjs/graph/types.cjs.map +1 -0
  110. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +33 -0
  111. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs.map +1 -0
  112. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +58 -0
  113. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs.map +1 -0
  114. package/lib/cjs/graph/validation/GraphValueValidator.cjs +52 -0
  115. package/lib/cjs/graph/validation/GraphValueValidator.cjs.map +1 -0
  116. package/lib/cjs/graph/validation/index.cjs +26 -0
  117. package/lib/cjs/graph/validation/index.cjs.map +1 -0
  118. package/lib/cjs/index.cjs +3 -3
  119. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  120. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +1 -1
  121. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  122. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +1 -1
  123. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  124. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +1 -1
  125. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  126. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +1 -1
  127. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  128. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +1 -1
  129. package/lib/cjs/keycloak/services/KeycloakService.cjs +16 -9
  130. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +1 -1
  131. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  132. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +1 -1
  133. package/lib/cjs/kibana/services/KibanaAuthService.cjs +3 -3
  134. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +1 -1
  135. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +3 -3
  136. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +1 -1
  137. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  138. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +1 -1
  139. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  140. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +1 -1
  141. package/lib/cjs/kibana/services/KibanaService.cjs +16 -9
  142. package/lib/cjs/kibana/services/KibanaService.cjs.map +1 -1
  143. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  144. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +1 -1
  145. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  146. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +1 -1
  147. package/lib/esm/graph/constants.js +106 -0
  148. package/lib/esm/graph/constants.js.map +1 -0
  149. package/lib/esm/graph/decorators.js +2 -0
  150. package/lib/esm/graph/decorators.js.map +1 -0
  151. package/lib/esm/graph/errors/GraphCycleError.js +15 -0
  152. package/lib/esm/graph/errors/GraphCycleError.js.map +1 -0
  153. package/lib/esm/graph/errors/GraphExecutionError.js +22 -0
  154. package/lib/esm/graph/errors/GraphExecutionError.js.map +1 -0
  155. package/lib/esm/graph/errors/GraphInputError.js +15 -0
  156. package/lib/esm/graph/errors/GraphInputError.js.map +1 -0
  157. package/lib/esm/graph/errors/GraphLoopLimitError.js +15 -0
  158. package/lib/esm/graph/errors/GraphLoopLimitError.js.map +1 -0
  159. package/lib/esm/graph/errors/GraphPinningError.js +15 -0
  160. package/lib/esm/graph/errors/GraphPinningError.js.map +1 -0
  161. package/lib/esm/graph/errors/GraphPortError.js +15 -0
  162. package/lib/esm/graph/errors/GraphPortError.js.map +1 -0
  163. package/lib/esm/graph/errors/GraphStoreError.js +15 -0
  164. package/lib/esm/graph/errors/GraphStoreError.js.map +1 -0
  165. package/lib/esm/graph/errors/GraphTopologyError.js +15 -0
  166. package/lib/esm/graph/errors/GraphTopologyError.js.map +1 -0
  167. package/lib/esm/graph/errors/index.js +14 -0
  168. package/lib/esm/graph/errors/index.js.map +1 -0
  169. package/lib/esm/graph/events/GraphExecutionEvent.js +2 -0
  170. package/lib/esm/graph/events/GraphExecutionEvent.js.map +1 -0
  171. package/lib/esm/graph/events/GraphExecutionEventEmitter.js +35 -0
  172. package/lib/esm/graph/events/GraphExecutionEventEmitter.js.map +1 -0
  173. package/lib/esm/graph/events/GraphExecutionEventFactory.js +32 -0
  174. package/lib/esm/graph/events/GraphExecutionEventFactory.js.map +1 -0
  175. package/lib/esm/graph/events/GraphExecutionObserver.js +2 -0
  176. package/lib/esm/graph/events/GraphExecutionObserver.js.map +1 -0
  177. package/lib/esm/graph/events/index.js +10 -0
  178. package/lib/esm/graph/events/index.js.map +1 -0
  179. package/lib/esm/graph/execution/GraphExecutionContext.js +74 -0
  180. package/lib/esm/graph/execution/GraphExecutionContext.js.map +1 -0
  181. package/lib/esm/graph/execution/GraphExecutionEngine.js +400 -0
  182. package/lib/esm/graph/execution/GraphExecutionEngine.js.map +1 -0
  183. package/lib/esm/graph/execution/GraphExecutionFrame.js +27 -0
  184. package/lib/esm/graph/execution/GraphExecutionFrame.js.map +1 -0
  185. package/lib/esm/graph/execution/GraphExecutionResult.js +26 -0
  186. package/lib/esm/graph/execution/GraphExecutionResult.js.map +1 -0
  187. package/lib/esm/graph/execution/GraphNodeExecutor.js +2 -0
  188. package/lib/esm/graph/execution/GraphNodeExecutor.js.map +1 -0
  189. package/lib/esm/graph/execution/index.js +11 -0
  190. package/lib/esm/graph/execution/index.js.map +1 -0
  191. package/lib/esm/graph/index.js +57 -0
  192. package/lib/esm/graph/index.js.map +1 -0
  193. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +79 -0
  194. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js.map +1 -0
  195. package/lib/esm/graph/loops/GraphConditionEvaluator.js +58 -0
  196. package/lib/esm/graph/loops/GraphConditionEvaluator.js.map +1 -0
  197. package/lib/esm/graph/loops/GraphLoopExecutionContext.js +11 -0
  198. package/lib/esm/graph/loops/GraphLoopExecutionContext.js.map +1 -0
  199. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +71 -0
  200. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js.map +1 -0
  201. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +72 -0
  202. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js.map +1 -0
  203. package/lib/esm/graph/loops/index.js +11 -0
  204. package/lib/esm/graph/loops/index.js.map +1 -0
  205. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +23 -0
  206. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js.map +1 -0
  207. package/lib/esm/graph/pinning/GraphPinningMetadata.js +15 -0
  208. package/lib/esm/graph/pinning/GraphPinningMetadata.js.map +1 -0
  209. package/lib/esm/graph/pinning/GraphPinningPolicy.js +29 -0
  210. package/lib/esm/graph/pinning/GraphPinningPolicy.js.map +1 -0
  211. package/lib/esm/graph/pinning/GraphPinningService.js +186 -0
  212. package/lib/esm/graph/pinning/GraphPinningService.js.map +1 -0
  213. package/lib/esm/graph/pinning/index.js +10 -0
  214. package/lib/esm/graph/pinning/index.js.map +1 -0
  215. package/lib/esm/graph/planning/GraphExecutionPlan.js +2 -0
  216. package/lib/esm/graph/planning/GraphExecutionPlan.js.map +1 -0
  217. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +7 -0
  218. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js.map +1 -0
  219. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +2 -0
  220. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js.map +1 -0
  221. package/lib/esm/graph/planning/GraphExecutionPlanNode.js +2 -0
  222. package/lib/esm/graph/planning/GraphExecutionPlanNode.js.map +1 -0
  223. package/lib/esm/graph/planning/GraphExecutionPlanner.js +192 -0
  224. package/lib/esm/graph/planning/GraphExecutionPlanner.js.map +1 -0
  225. package/lib/esm/graph/planning/GraphRelationResolver.js +167 -0
  226. package/lib/esm/graph/planning/GraphRelationResolver.js.map +1 -0
  227. package/lib/esm/graph/planning/GraphTopology.js +52 -0
  228. package/lib/esm/graph/planning/GraphTopology.js.map +1 -0
  229. package/lib/esm/graph/planning/index.js +13 -0
  230. package/lib/esm/graph/planning/index.js.map +1 -0
  231. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +39 -0
  232. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js.map +1 -0
  233. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +22 -0
  234. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js.map +1 -0
  235. package/lib/esm/graph/registry/index.js +8 -0
  236. package/lib/esm/graph/registry/index.js.map +1 -0
  237. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +48 -0
  238. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js.map +1 -0
  239. package/lib/esm/graph/snapshots/index.js +7 -0
  240. package/lib/esm/graph/snapshots/index.js.map +1 -0
  241. package/lib/esm/graph/store/GraphCachedValue.js +2 -0
  242. package/lib/esm/graph/store/GraphCachedValue.js.map +1 -0
  243. package/lib/esm/graph/store/GraphValueKey.js +7 -0
  244. package/lib/esm/graph/store/GraphValueKey.js.map +1 -0
  245. package/lib/esm/graph/store/GraphValueStore.js +71 -0
  246. package/lib/esm/graph/store/GraphValueStore.js.map +1 -0
  247. package/lib/esm/graph/store/GraphValueStoreAdapter.js +2 -0
  248. package/lib/esm/graph/store/GraphValueStoreAdapter.js.map +1 -0
  249. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +64 -0
  250. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js.map +1 -0
  251. package/lib/esm/graph/store/index.js +11 -0
  252. package/lib/esm/graph/store/index.js.map +1 -0
  253. package/lib/esm/graph/types.js +2 -0
  254. package/lib/esm/graph/types.js.map +1 -0
  255. package/lib/esm/graph/validation/GraphDefinitionValidator.js +28 -0
  256. package/lib/esm/graph/validation/GraphDefinitionValidator.js.map +1 -0
  257. package/lib/esm/graph/validation/GraphPortSchemaResolver.js +53 -0
  258. package/lib/esm/graph/validation/GraphPortSchemaResolver.js.map +1 -0
  259. package/lib/esm/graph/validation/GraphValueValidator.js +47 -0
  260. package/lib/esm/graph/validation/GraphValueValidator.js.map +1 -0
  261. package/lib/esm/graph/validation/index.js +9 -0
  262. package/lib/esm/graph/validation/index.js.map +1 -0
  263. package/lib/esm/index.js +3 -3
  264. package/lib/esm/keycloak/services/KeycloakAuthService.js +2 -2
  265. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +1 -1
  266. package/lib/esm/keycloak/services/KeycloakClientService.js +2 -2
  267. package/lib/esm/keycloak/services/KeycloakClientService.js.map +1 -1
  268. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +2 -2
  269. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +1 -1
  270. package/lib/esm/keycloak/services/KeycloakRealmService.js +2 -2
  271. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +1 -1
  272. package/lib/esm/keycloak/services/KeycloakRoleService.js +2 -2
  273. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +1 -1
  274. package/lib/esm/keycloak/services/KeycloakService.js +16 -9
  275. package/lib/esm/keycloak/services/KeycloakService.js.map +1 -1
  276. package/lib/esm/keycloak/services/KeycloakUserService.js +2 -2
  277. package/lib/esm/keycloak/services/KeycloakUserService.js.map +1 -1
  278. package/lib/esm/kibana/services/KibanaAuthService.js +3 -3
  279. package/lib/esm/kibana/services/KibanaAuthService.js.map +1 -1
  280. package/lib/esm/kibana/services/KibanaDashboardService.js +3 -3
  281. package/lib/esm/kibana/services/KibanaDashboardService.js.map +1 -1
  282. package/lib/esm/kibana/services/KibanaDataViewService.js +2 -2
  283. package/lib/esm/kibana/services/KibanaDataViewService.js.map +1 -1
  284. package/lib/esm/kibana/services/KibanaRoleService.js +2 -2
  285. package/lib/esm/kibana/services/KibanaRoleService.js.map +1 -1
  286. package/lib/esm/kibana/services/KibanaService.js +16 -9
  287. package/lib/esm/kibana/services/KibanaService.js.map +1 -1
  288. package/lib/esm/kibana/services/KibanaSpaceService.js +2 -2
  289. package/lib/esm/kibana/services/KibanaSpaceService.js.map +1 -1
  290. package/lib/esm/kibana/services/KibanaUserService.js +2 -2
  291. package/lib/esm/kibana/services/KibanaUserService.js.map +1 -1
  292. package/lib/types/graph/constants.d.cts +101 -0
  293. package/lib/types/graph/constants.d.mts +101 -0
  294. package/lib/types/graph/decorators.d.cts +6 -0
  295. package/lib/types/graph/decorators.d.mts +6 -0
  296. package/lib/types/graph/errors/GraphCycleError.d.cts +12 -0
  297. package/lib/types/graph/errors/GraphCycleError.d.mts +12 -0
  298. package/lib/types/graph/errors/GraphExecutionError.d.cts +19 -0
  299. package/lib/types/graph/errors/GraphExecutionError.d.mts +19 -0
  300. package/lib/types/graph/errors/GraphInputError.d.cts +12 -0
  301. package/lib/types/graph/errors/GraphInputError.d.mts +12 -0
  302. package/lib/types/graph/errors/GraphLoopLimitError.d.cts +12 -0
  303. package/lib/types/graph/errors/GraphLoopLimitError.d.mts +12 -0
  304. package/lib/types/graph/errors/GraphPinningError.d.cts +12 -0
  305. package/lib/types/graph/errors/GraphPinningError.d.mts +12 -0
  306. package/lib/types/graph/errors/GraphPortError.d.cts +12 -0
  307. package/lib/types/graph/errors/GraphPortError.d.mts +12 -0
  308. package/lib/types/graph/errors/GraphStoreError.d.cts +12 -0
  309. package/lib/types/graph/errors/GraphStoreError.d.mts +12 -0
  310. package/lib/types/graph/errors/GraphTopologyError.d.cts +12 -0
  311. package/lib/types/graph/errors/GraphTopologyError.d.mts +12 -0
  312. package/lib/types/graph/errors/index.d.cts +13 -0
  313. package/lib/types/graph/errors/index.d.mts +13 -0
  314. package/lib/types/graph/events/GraphExecutionEvent.d.cts +6 -0
  315. package/lib/types/graph/events/GraphExecutionEvent.d.mts +6 -0
  316. package/lib/types/graph/events/GraphExecutionEventEmitter.d.cts +26 -0
  317. package/lib/types/graph/events/GraphExecutionEventEmitter.d.mts +26 -0
  318. package/lib/types/graph/events/GraphExecutionEventFactory.d.cts +25 -0
  319. package/lib/types/graph/events/GraphExecutionEventFactory.d.mts +25 -0
  320. package/lib/types/graph/events/GraphExecutionObserver.d.cts +17 -0
  321. package/lib/types/graph/events/GraphExecutionObserver.d.mts +17 -0
  322. package/lib/types/graph/events/index.d.cts +9 -0
  323. package/lib/types/graph/events/index.d.mts +9 -0
  324. package/lib/types/graph/execution/GraphExecutionContext.d.cts +50 -0
  325. package/lib/types/graph/execution/GraphExecutionContext.d.mts +50 -0
  326. package/lib/types/graph/execution/GraphExecutionEngine.d.cts +112 -0
  327. package/lib/types/graph/execution/GraphExecutionEngine.d.mts +112 -0
  328. package/lib/types/graph/execution/GraphExecutionFrame.d.cts +29 -0
  329. package/lib/types/graph/execution/GraphExecutionFrame.d.mts +29 -0
  330. package/lib/types/graph/execution/GraphExecutionResult.d.cts +13 -0
  331. package/lib/types/graph/execution/GraphExecutionResult.d.mts +13 -0
  332. package/lib/types/graph/execution/GraphNodeExecutor.d.cts +23 -0
  333. package/lib/types/graph/execution/GraphNodeExecutor.d.mts +23 -0
  334. package/lib/types/graph/execution/index.d.cts +10 -0
  335. package/lib/types/graph/execution/index.d.mts +10 -0
  336. package/lib/types/graph/index.d.cts +52 -0
  337. package/lib/types/graph/index.d.mts +52 -0
  338. package/lib/types/graph/loops/ForeachGraphNodeExecutor.d.cts +27 -0
  339. package/lib/types/graph/loops/ForeachGraphNodeExecutor.d.mts +27 -0
  340. package/lib/types/graph/loops/GraphConditionEvaluator.d.cts +23 -0
  341. package/lib/types/graph/loops/GraphConditionEvaluator.d.mts +23 -0
  342. package/lib/types/graph/loops/GraphLoopExecutionContext.d.cts +15 -0
  343. package/lib/types/graph/loops/GraphLoopExecutionContext.d.mts +15 -0
  344. package/lib/types/graph/loops/UntilGraphNodeExecutor.d.cts +22 -0
  345. package/lib/types/graph/loops/UntilGraphNodeExecutor.d.mts +22 -0
  346. package/lib/types/graph/loops/WhileGraphNodeExecutor.d.cts +26 -0
  347. package/lib/types/graph/loops/WhileGraphNodeExecutor.d.mts +26 -0
  348. package/lib/types/graph/loops/index.d.cts +10 -0
  349. package/lib/types/graph/loops/index.d.mts +10 -0
  350. package/lib/types/graph/pinning/GraphPinningDependencyResolver.d.cts +21 -0
  351. package/lib/types/graph/pinning/GraphPinningDependencyResolver.d.mts +21 -0
  352. package/lib/types/graph/pinning/GraphPinningMetadata.d.cts +14 -0
  353. package/lib/types/graph/pinning/GraphPinningMetadata.d.mts +14 -0
  354. package/lib/types/graph/pinning/GraphPinningPolicy.d.cts +20 -0
  355. package/lib/types/graph/pinning/GraphPinningPolicy.d.mts +20 -0
  356. package/lib/types/graph/pinning/GraphPinningService.d.cts +59 -0
  357. package/lib/types/graph/pinning/GraphPinningService.d.mts +59 -0
  358. package/lib/types/graph/pinning/index.d.cts +9 -0
  359. package/lib/types/graph/pinning/index.d.mts +9 -0
  360. package/lib/types/graph/planning/GraphExecutionPlan.d.cts +21 -0
  361. package/lib/types/graph/planning/GraphExecutionPlan.d.mts +21 -0
  362. package/lib/types/graph/planning/GraphExecutionPlanEdge.d.cts +21 -0
  363. package/lib/types/graph/planning/GraphExecutionPlanEdge.d.mts +21 -0
  364. package/lib/types/graph/planning/GraphExecutionPlanLayer.d.cts +13 -0
  365. package/lib/types/graph/planning/GraphExecutionPlanLayer.d.mts +13 -0
  366. package/lib/types/graph/planning/GraphExecutionPlanNode.d.cts +20 -0
  367. package/lib/types/graph/planning/GraphExecutionPlanNode.d.mts +20 -0
  368. package/lib/types/graph/planning/GraphExecutionPlanner.d.cts +60 -0
  369. package/lib/types/graph/planning/GraphExecutionPlanner.d.mts +60 -0
  370. package/lib/types/graph/planning/GraphRelationResolver.d.cts +62 -0
  371. package/lib/types/graph/planning/GraphRelationResolver.d.mts +62 -0
  372. package/lib/types/graph/planning/GraphTopology.d.cts +23 -0
  373. package/lib/types/graph/planning/GraphTopology.d.mts +23 -0
  374. package/lib/types/graph/planning/index.d.cts +12 -0
  375. package/lib/types/graph/planning/index.d.mts +12 -0
  376. package/lib/types/graph/registry/GraphNodeExecutorRegistry.d.cts +25 -0
  377. package/lib/types/graph/registry/GraphNodeExecutorRegistry.d.mts +25 -0
  378. package/lib/types/graph/registry/GraphNodeExecutorResolver.d.cts +21 -0
  379. package/lib/types/graph/registry/GraphNodeExecutorResolver.d.mts +21 -0
  380. package/lib/types/graph/registry/index.d.cts +7 -0
  381. package/lib/types/graph/registry/index.d.mts +7 -0
  382. package/lib/types/graph/snapshots/GraphExecutionSnapshotMapper.d.cts +10 -0
  383. package/lib/types/graph/snapshots/GraphExecutionSnapshotMapper.d.mts +10 -0
  384. package/lib/types/graph/snapshots/index.d.cts +6 -0
  385. package/lib/types/graph/snapshots/index.d.mts +6 -0
  386. package/lib/types/graph/store/GraphCachedValue.d.cts +20 -0
  387. package/lib/types/graph/store/GraphCachedValue.d.mts +20 -0
  388. package/lib/types/graph/store/GraphValueKey.d.cts +18 -0
  389. package/lib/types/graph/store/GraphValueKey.d.mts +18 -0
  390. package/lib/types/graph/store/GraphValueStore.d.cts +41 -0
  391. package/lib/types/graph/store/GraphValueStore.d.mts +41 -0
  392. package/lib/types/graph/store/GraphValueStoreAdapter.d.cts +32 -0
  393. package/lib/types/graph/store/GraphValueStoreAdapter.d.mts +32 -0
  394. package/lib/types/graph/store/InMemoryGraphValueStoreAdapter.d.cts +33 -0
  395. package/lib/types/graph/store/InMemoryGraphValueStoreAdapter.d.mts +33 -0
  396. package/lib/types/graph/store/index.d.cts +10 -0
  397. package/lib/types/graph/store/index.d.mts +10 -0
  398. package/lib/types/graph/types.d.cts +197 -0
  399. package/lib/types/graph/types.d.mts +197 -0
  400. package/lib/types/graph/validation/GraphDefinitionValidator.d.cts +21 -0
  401. package/lib/types/graph/validation/GraphDefinitionValidator.d.mts +21 -0
  402. package/lib/types/graph/validation/GraphPortSchemaResolver.d.cts +39 -0
  403. package/lib/types/graph/validation/GraphPortSchemaResolver.d.mts +39 -0
  404. package/lib/types/graph/validation/GraphValueValidator.d.cts +27 -0
  405. package/lib/types/graph/validation/GraphValueValidator.d.mts +27 -0
  406. package/lib/types/graph/validation/index.d.cts +8 -0
  407. package/lib/types/graph/validation/index.d.mts +8 -0
  408. package/lib/types/index.d.cts +2 -2
  409. package/lib/types/index.d.mts +2 -2
  410. package/lib/types/keycloak/services/KeycloakService.d.cts +1 -0
  411. package/lib/types/keycloak/services/KeycloakService.d.mts +1 -0
  412. package/lib/types/keycloak/types.d.cts +1 -4
  413. package/lib/types/keycloak/types.d.mts +1 -4
  414. package/lib/types/kibana/services/KibanaService.d.cts +1 -0
  415. package/lib/types/kibana/services/KibanaService.d.mts +1 -0
  416. package/lib/types/kibana/types.d.cts +1 -4
  417. package/lib/types/kibana/types.d.mts +1 -4
  418. package/package.json +17 -3
@@ -0,0 +1,400 @@
1
+ import { GRAPH_DEFAULT_CONCURRENCY, GRAPH_WORKFLOW_BOUNDARY, GraphExecutionEventType, GraphExecutionStatus, } from "./../constants.js";
2
+ import { GraphExecutionEventEmitter } from "./../events/GraphExecutionEventEmitter.js";
3
+ import { GraphExecutionEventFactory } from "./../events/GraphExecutionEventFactory.js";
4
+ import { GraphExecutionPlanner } from "./../planning/GraphExecutionPlanner.js";
5
+ import { InMemoryGraphValueStoreAdapter } from "./../store/InMemoryGraphValueStoreAdapter.js";
6
+ import { GraphValueStore } from "./../store/GraphValueStore.js";
7
+ import { GraphPinningService } from "./../pinning/GraphPinningService.js";
8
+ import { GraphPinningPolicy } from "./../pinning/GraphPinningPolicy.js";
9
+ import { GraphPinningDependencyResolver } from "./../pinning/GraphPinningDependencyResolver.js";
10
+ import { GraphExecutionContext } from "./GraphExecutionContext.js";
11
+ import { GraphExecutionFrame } from "./GraphExecutionFrame.js";
12
+ import { buildGraphExecutionResult } from "./GraphExecutionResult.js";
13
+ /**
14
+ * Reference graph execution engine.
15
+ *
16
+ * Executes a {@link GraphWorkflowDefinition} by:
17
+ * 1. Planning the workflow into topological layers.
18
+ * 2. Seeding workflow inputs into the value store.
19
+ * 3. Executing nodes layer-by-layer with configurable concurrency.
20
+ * 4. Routing values along edges.
21
+ * 5. Emitting structured events through Decaf's Observable pipeline.
22
+ * 6. Returning a complete {@link GraphExecutionResult}.
23
+ */
24
+ export class GraphExecutionEngine {
25
+ constructor(config) {
26
+ this.emitter = config.eventEmitter ?? new GraphExecutionEventEmitter();
27
+ this.planner = config.planner ?? new GraphExecutionPlanner();
28
+ this.valueStoreAdapter =
29
+ config.valueStoreAdapter ?? new InMemoryGraphValueStoreAdapter();
30
+ this.defaultOptions = config.defaultOptions ?? {};
31
+ this.config = config;
32
+ }
33
+ observe(observer) {
34
+ return this.emitter.observe(observer);
35
+ }
36
+ unObserve(observer) {
37
+ this.emitter.unObserve(observer);
38
+ }
39
+ async updateObservers(event) {
40
+ await this.emitter.updateObservers(event);
41
+ }
42
+ /**
43
+ * Executes a workflow with the given inputs and options.
44
+ */
45
+ async execute(workflow, inputs = {}, options = {}) {
46
+ const opts = this.mergeOptions(options);
47
+ const runId = opts.runId ?? this.generateRunId();
48
+ const path = opts.path ?? [];
49
+ const eventFactory = new GraphExecutionEventFactory();
50
+ const valueStore = new GraphValueStore(this.valueStoreAdapter);
51
+ valueStore.seedWorkflowInputs(inputs);
52
+ const plan = this.planner.plan(workflow);
53
+ const frame = new GraphExecutionFrame(runId, plan, valueStore, eventFactory);
54
+ const emitFn = async (partial) => {
55
+ await this.emitEvent(frame, {
56
+ type: partial.type ?? GraphExecutionEventType.NODE_OUTPUT,
57
+ runId,
58
+ parentRunId: opts.parentRunId,
59
+ workflowId: workflow.name,
60
+ nodeId: partial.nodeId,
61
+ path: partial.path ?? path,
62
+ ...partial,
63
+ });
64
+ };
65
+ await this.emitEvent(frame, {
66
+ type: GraphExecutionEventType.WORKFLOW_STARTED,
67
+ runId,
68
+ parentRunId: opts.parentRunId,
69
+ workflowId: workflow.name,
70
+ path,
71
+ status: GraphExecutionStatus.RUNNING,
72
+ payload: { inputs },
73
+ });
74
+ await this.emitEvent(frame, {
75
+ type: GraphExecutionEventType.WORKFLOW_PLANNED,
76
+ runId,
77
+ parentRunId: opts.parentRunId,
78
+ workflowId: workflow.name,
79
+ path,
80
+ status: GraphExecutionStatus.PLANNING,
81
+ payload: { layers: plan.layers.length, nodes: plan.nodes.length },
82
+ });
83
+ try {
84
+ for (const layer of plan.layers) {
85
+ await this.executeLayer(frame, plan, layer.nodes, opts, emitFn);
86
+ }
87
+ frame.finish();
88
+ await this.emitEvent(frame, {
89
+ type: GraphExecutionEventType.WORKFLOW_COMPLETED,
90
+ runId,
91
+ parentRunId: opts.parentRunId,
92
+ workflowId: workflow.name,
93
+ path,
94
+ status: GraphExecutionStatus.SUCCEEDED,
95
+ payload: { outputs: valueStore.getWorkflowValues() },
96
+ });
97
+ return buildGraphExecutionResult(frame, workflow, inputs, GraphExecutionStatus.SUCCEEDED, opts.metadata);
98
+ }
99
+ catch (error) {
100
+ frame.finish();
101
+ const errorPayload = this.toErrorPayload(error);
102
+ await this.emitEvent(frame, {
103
+ type: GraphExecutionEventType.WORKFLOW_FAILED,
104
+ runId,
105
+ parentRunId: opts.parentRunId,
106
+ workflowId: workflow.name,
107
+ path,
108
+ status: GraphExecutionStatus.FAILED,
109
+ error: errorPayload,
110
+ });
111
+ return buildGraphExecutionResult(frame, workflow, inputs, GraphExecutionStatus.FAILED, opts.metadata);
112
+ }
113
+ }
114
+ /**
115
+ * Pins a node and its upstream dependencies after a completed run.
116
+ *
117
+ * Delegates to {@link GraphPinningService}. The plan and result must come
118
+ * from a prior successful execution of the same workflow.
119
+ */
120
+ async pinNode(options) {
121
+ const service = this.createPinningService();
122
+ await service.pinNode(options);
123
+ await this.emitPinningEvent(options.nodeId, GraphExecutionEventType.NODE_PINNED);
124
+ }
125
+ /**
126
+ * Unpins a node by its fingerprint.
127
+ */
128
+ async unpinNode(options) {
129
+ const service = this.createPinningService();
130
+ await service.unpinNode(options);
131
+ await this.emitPinningEvent(options.nodeId, GraphExecutionEventType.NODE_UNPINNED);
132
+ }
133
+ /**
134
+ * Creates a {@link GraphPinningService} backed by this engine's value store
135
+ * adapter.
136
+ */
137
+ createPinningService() {
138
+ const store = new GraphValueStore(this.valueStoreAdapter);
139
+ return new GraphPinningService(store, new GraphPinningPolicy(), new GraphPinningDependencyResolver());
140
+ }
141
+ /**
142
+ * Emits a pinning-related event to all observers.
143
+ */
144
+ async emitPinningEvent(nodeId, type) {
145
+ const factory = new GraphExecutionEventFactory();
146
+ const event = factory.create({
147
+ id: "",
148
+ sequence: 0,
149
+ timestamp: new Date(),
150
+ runId: "pinning",
151
+ workflowId: "",
152
+ type,
153
+ nodeId,
154
+ path: [],
155
+ });
156
+ await this.emitter.updateObservers(event);
157
+ }
158
+ /**
159
+ * Executes a layer of nodes with the configured concurrency.
160
+ */
161
+ async executeLayer(frame, plan, nodes, opts, emitFn) {
162
+ const concurrency = Math.max(1, opts.concurrency ?? GRAPH_DEFAULT_CONCURRENCY);
163
+ const queue = [...nodes];
164
+ while (queue.length > 0) {
165
+ const batch = queue.splice(0, concurrency);
166
+ await Promise.all(batch.map((node) => this.executeNode(frame, plan, node, opts, emitFn)));
167
+ }
168
+ }
169
+ /**
170
+ * Executes a single node.
171
+ */
172
+ async executeNode(frame, plan, planNode, opts, emitFn) {
173
+ const startedAt = new Date();
174
+ const nodePath = [...(opts.path ?? []), planNode.id];
175
+ await this.emitEvent(frame, {
176
+ type: GraphExecutionEventType.NODE_STARTED,
177
+ runId: frame.runId,
178
+ workflowId: plan.workflowId,
179
+ nodeId: planNode.id,
180
+ path: nodePath,
181
+ status: GraphExecutionStatus.RUNNING,
182
+ });
183
+ const inputs = this.resolveNodeInputs(frame, plan, planNode);
184
+ // Cache-hit: check for a pinned value before executing the node
185
+ if (opts.usePinnedValues) {
186
+ const cached = await this.tryPinnedValue(frame, plan, planNode, inputs);
187
+ if (cached) {
188
+ frame.valueStore.setNodeOutputs(planNode.id, cached.outputs);
189
+ this.routeOutgoingEdges(frame, plan, planNode, cached.outputs);
190
+ const finishedAt = new Date();
191
+ const result = {
192
+ nodeId: planNode.id,
193
+ status: GraphExecutionStatus.CACHED,
194
+ inputs,
195
+ outputs: cached.outputs,
196
+ startedAt,
197
+ finishedAt,
198
+ fromCache: true,
199
+ pinned: true,
200
+ events: [],
201
+ };
202
+ frame.recordNodeResult(result);
203
+ await this.emitEvent(frame, {
204
+ type: GraphExecutionEventType.NODE_CACHE_HIT,
205
+ runId: frame.runId,
206
+ workflowId: plan.workflowId,
207
+ nodeId: planNode.id,
208
+ path: nodePath,
209
+ status: GraphExecutionStatus.CACHED,
210
+ payload: { outputs: cached.outputs },
211
+ });
212
+ await this.emitEvent(frame, {
213
+ type: GraphExecutionEventType.NODE_COMPLETED,
214
+ runId: frame.runId,
215
+ workflowId: plan.workflowId,
216
+ nodeId: planNode.id,
217
+ path: nodePath,
218
+ status: GraphExecutionStatus.SUCCEEDED,
219
+ payload: { outputs: cached.outputs, fromCache: true },
220
+ });
221
+ return;
222
+ }
223
+ }
224
+ try {
225
+ const executor = this.config.registry.resolve(planNode.kind);
226
+ const context = new GraphExecutionContext(frame.runId, opts.parentRunId, plan.workflow, planNode.definition, nodePath, emitFn, opts.metadata);
227
+ const outputs = await executor.execute(inputs, context);
228
+ const resolvedOutputs = outputs ?? {};
229
+ frame.valueStore.setNodeOutputs(planNode.id, resolvedOutputs);
230
+ this.routeOutgoingEdges(frame, plan, planNode, resolvedOutputs);
231
+ const finishedAt = new Date();
232
+ const result = {
233
+ nodeId: planNode.id,
234
+ status: GraphExecutionStatus.SUCCEEDED,
235
+ inputs,
236
+ outputs: resolvedOutputs,
237
+ startedAt,
238
+ finishedAt,
239
+ events: [],
240
+ };
241
+ frame.recordNodeResult(result);
242
+ await this.emitEvent(frame, {
243
+ type: GraphExecutionEventType.NODE_COMPLETED,
244
+ runId: frame.runId,
245
+ workflowId: plan.workflowId,
246
+ nodeId: planNode.id,
247
+ path: nodePath,
248
+ status: GraphExecutionStatus.SUCCEEDED,
249
+ payload: { outputs: resolvedOutputs },
250
+ });
251
+ }
252
+ catch (error) {
253
+ const finishedAt = new Date();
254
+ const errorPayload = this.toErrorPayload(error);
255
+ const result = {
256
+ nodeId: planNode.id,
257
+ status: GraphExecutionStatus.FAILED,
258
+ inputs,
259
+ error: errorPayload,
260
+ startedAt,
261
+ finishedAt,
262
+ events: [],
263
+ };
264
+ frame.recordNodeResult(result);
265
+ await this.emitEvent(frame, {
266
+ type: GraphExecutionEventType.NODE_FAILED,
267
+ runId: frame.runId,
268
+ workflowId: plan.workflowId,
269
+ nodeId: planNode.id,
270
+ path: nodePath,
271
+ status: GraphExecutionStatus.FAILED,
272
+ error: errorPayload,
273
+ });
274
+ if (opts.failFast ?? true)
275
+ throw error;
276
+ }
277
+ }
278
+ /**
279
+ * Resolves a node's input values from incoming edges.
280
+ */
281
+ resolveNodeInputs(frame, plan, planNode) {
282
+ const inputs = {};
283
+ const incoming = plan.incomingByNode.get(planNode.id) ?? [];
284
+ for (const edge of incoming) {
285
+ inputs[edge.targetPort] = frame.valueStore.getPort(edge.sourceNodeId, edge.sourcePort);
286
+ }
287
+ return inputs;
288
+ }
289
+ /**
290
+ * Attempts to read a pinned value for the node. Returns the cached outputs
291
+ * when a valid pinned value exists, or `undefined` to proceed with normal
292
+ * execution.
293
+ */
294
+ async tryPinnedValue(frame, plan, planNode, inputs) {
295
+ const policy = new GraphPinningPolicy();
296
+ if (!policy.shouldUsePinnedValue(planNode))
297
+ return undefined;
298
+ const service = this.createPinningService();
299
+ const depFingerprints = this.computeDependencyFingerprints(frame, plan, planNode.id);
300
+ return service.readPinnedValue(plan.workflow, planNode, inputs, depFingerprints);
301
+ }
302
+ /**
303
+ * Recursively computes fingerprints for all upstream dependencies of a node
304
+ * using the results already accumulated in the frame.
305
+ */
306
+ computeDependencyFingerprints(frame, plan, nodeId) {
307
+ const service = this.createPinningService();
308
+ const depResolver = new GraphPinningDependencyResolver();
309
+ const deps = depResolver.getDependencies(plan, nodeId);
310
+ const fingerprints = {};
311
+ for (const dep of deps) {
312
+ const node = plan.nodes.find((n) => n.id === dep);
313
+ if (node) {
314
+ const depResult = frame.nodeResults.get(dep);
315
+ const inputs = depResult?.inputs ?? {};
316
+ const nestedDeps = this.computeDependencyFingerprints(frame, plan, dep);
317
+ fingerprints[dep] = service.computeFingerprint(plan.workflow, node, inputs, nestedDeps);
318
+ }
319
+ }
320
+ return fingerprints;
321
+ }
322
+ /**
323
+ * Routes a node's outputs to downstream inputs and workflow outputs.
324
+ */
325
+ routeOutgoingEdges(frame, plan, planNode, outputs) {
326
+ const outgoing = plan.outgoingByNode.get(planNode.id) ?? [];
327
+ for (const edge of outgoing) {
328
+ const value = outputs[edge.sourcePort];
329
+ if (edge.targetNodeId === GRAPH_WORKFLOW_BOUNDARY) {
330
+ frame.valueStore.setWorkflowOutput(edge.targetPort, value);
331
+ }
332
+ this.emitEvent(frame, {
333
+ type: GraphExecutionEventType.EDGE_VALUE_ROUTED,
334
+ runId: frame.runId,
335
+ workflowId: plan.workflowId,
336
+ edgeId: edge.id,
337
+ nodeId: planNode.id,
338
+ path: [],
339
+ payload: { edge, value },
340
+ }).catch(() => {
341
+ // observer failures must not crash
342
+ });
343
+ }
344
+ }
345
+ /**
346
+ * Emits an event, records it in the frame, and dispatches to observers.
347
+ */
348
+ async emitEvent(frame, partial) {
349
+ const event = frame.eventFactory.create({
350
+ id: "",
351
+ sequence: 0,
352
+ timestamp: new Date(),
353
+ ...partial,
354
+ });
355
+ frame.appendEvent(event);
356
+ await this.emitter.updateObservers(event);
357
+ }
358
+ /**
359
+ * Merges default options with the given options.
360
+ */
361
+ mergeOptions(options) {
362
+ return {
363
+ concurrency: GRAPH_DEFAULT_CONCURRENCY,
364
+ failFast: true,
365
+ validateInputs: true,
366
+ validateOutputs: true,
367
+ usePinnedValues: true,
368
+ writeThroughCache: false,
369
+ path: [],
370
+ metadata: {},
371
+ ...this.defaultOptions,
372
+ ...options,
373
+ };
374
+ }
375
+ /**
376
+ * Generates a unique run id.
377
+ */
378
+ generateRunId() {
379
+ return (globalThis.crypto?.randomUUID?.() ??
380
+ `graph-run-${Date.now()}-${Math.random().toString(36).slice(2)}`);
381
+ }
382
+ /**
383
+ * Converts an error into a serialized payload.
384
+ */
385
+ toErrorPayload(error) {
386
+ if (error instanceof Error) {
387
+ return {
388
+ name: error.name,
389
+ message: error.message,
390
+ stack: error.stack,
391
+ code: error.graphCode ??
392
+ (typeof error.code === "number"
393
+ ? String(error.code)
394
+ : error.code),
395
+ };
396
+ }
397
+ return { name: "UnknownError", message: String(error) };
398
+ }
399
+ }
400
+ //# sourceMappingURL=GraphExecutionEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphExecutionEngine.js","sourceRoot":"","sources":["../../../../src/graph/execution/GraphExecutionEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Mutable state for a single graph execution run.
3
+ */
4
+ export class GraphExecutionFrame {
5
+ constructor(runId, plan, valueStore, eventFactory) {
6
+ this.nodeResults = new Map();
7
+ this.events = [];
8
+ this.runId = runId;
9
+ this.plan = plan;
10
+ this.valueStore = valueStore;
11
+ this.eventFactory = eventFactory;
12
+ this.startedAt = new Date();
13
+ }
14
+ /** Records a node execution result. */
15
+ recordNodeResult(result) {
16
+ this.nodeResults.set(result.nodeId, result);
17
+ }
18
+ /** Appends an event to the run's event log. */
19
+ appendEvent(event) {
20
+ this.events.push(event);
21
+ }
22
+ /** Marks the run as finished. */
23
+ finish() {
24
+ this.finishedAt = new Date();
25
+ }
26
+ }
27
+ //# sourceMappingURL=GraphExecutionFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphExecutionFrame.js","sourceRoot":"","sources":["../../../../src/graph/execution/GraphExecutionFrame.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAW9B,YACE,KAAiB,EACjB,IAAwB,EACxB,UAA2B,EAC3B,YAAwC;QATjC,gBAAW,GAA0C,IAAI,GAAG,EAAE,CAAC;QAC/D,WAAM,GAA0B,EAAE,CAAC;QAU1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,uCAAuC;IACvC,gBAAgB,CAAC,MAAgC;QAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,+CAA+C;IAC/C,WAAW,CAAC,KAA0B;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,iCAAiC;IACjC,MAAM;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Builds a {@link GraphExecutionResult} from a completed frame.
3
+ */
4
+ export function buildGraphExecutionResult(frame, workflow, inputs, status, metadata) {
5
+ const outputs = frame.valueStore.getWorkflowValues();
6
+ const nodeResults = {};
7
+ for (const [id, result] of frame.nodeResults) {
8
+ nodeResults[id] = result;
9
+ }
10
+ const events = [...frame.events];
11
+ const runId = frame.runId;
12
+ return {
13
+ runId,
14
+ workflowId: workflow.name,
15
+ status,
16
+ workflow,
17
+ inputs: { ...inputs },
18
+ outputs,
19
+ nodeResults,
20
+ events,
21
+ startedAt: frame.startedAt,
22
+ finishedAt: frame.finishedAt,
23
+ metadata,
24
+ };
25
+ }
26
+ //# sourceMappingURL=GraphExecutionResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphExecutionResult.js","sourceRoot":"","sources":["../../../../src/graph/execution/GraphExecutionResult.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAA0B,EAC1B,QAAiC,EACjC,MAA4B,EAC5B,MAA4B,EAC5B,QAAkC;IAElC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;IACrD,MAAM,WAAW,GAA6C,EAAE,CAAC;IACjE,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7C,WAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC3B,CAAC;IACD,MAAM,MAAM,GAA0B,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,GAAe,KAAK,CAAC,KAAK,CAAC;IAEtC,OAAO;QACL,KAAK;QACL,UAAU,EAAE,QAAQ,CAAC,IAAI;QACzB,MAAM;QACN,QAAQ;QACR,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;QACrB,OAAO;QACP,WAAW;QACX,MAAM;QACN,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GraphNodeExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphNodeExecutor.js","sourceRoot":"","sources":["../../../../src/graph/execution/GraphNodeExecutor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @module integrations/graph/execution
3
+ * @summary Graph execution context and executor interface.
4
+ * @description Re-exports the graph execution context and node executor interface.
5
+ */
6
+ export * from "./GraphExecutionContext.js";
7
+ export * from "./GraphNodeExecutor.js";
8
+ export * from "./GraphExecutionResult.js";
9
+ export * from "./GraphExecutionFrame.js";
10
+ export * from "./GraphExecutionEngine.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/graph/execution/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,2CAAwC;AACxC,uCAAoC;AACpC,0CAAuC;AACvC,yCAAsC;AACtC,0CAAuC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @module integrations/graph
3
+ * @summary Decaf Graph Execution Engine.
4
+ * @description Reference interpreter for Decaf graph workflows. Executes workflows declared with `@decaf-ts/ui-decorators/graph`, emits events through Decaf's Observable pipeline, supports structured loops, configurable value stores, and pinnable/cacheable nodes.
5
+ */
6
+ export * from "./constants.js";
7
+ export * from "./types.js";
8
+ export * from "./decorators.js";
9
+ export * from "./errors/GraphExecutionError.js";
10
+ export * from "./errors/GraphCycleError.js";
11
+ export * from "./errors/GraphInputError.js";
12
+ export * from "./errors/GraphLoopLimitError.js";
13
+ export * from "./errors/GraphPinningError.js";
14
+ export * from "./errors/GraphPortError.js";
15
+ export * from "./errors/GraphStoreError.js";
16
+ export * from "./errors/GraphTopologyError.js";
17
+ export * from "./events/GraphExecutionEvent.js";
18
+ export * from "./events/GraphExecutionObserver.js";
19
+ export * from "./events/GraphExecutionEventEmitter.js";
20
+ export * from "./events/GraphExecutionEventFactory.js";
21
+ export * from "./execution/GraphExecutionContext.js";
22
+ export * from "./execution/GraphNodeExecutor.js";
23
+ export * from "./execution/GraphExecutionFrame.js";
24
+ export * from "./execution/GraphExecutionResult.js";
25
+ export * from "./execution/GraphExecutionEngine.js";
26
+ export * from "./registry/GraphNodeExecutorRegistry.js";
27
+ export * from "./registry/GraphNodeExecutorResolver.js";
28
+ export * from "./store/GraphValueKey.js";
29
+ export * from "./store/GraphCachedValue.js";
30
+ export * from "./store/GraphValueStoreAdapter.js";
31
+ export * from "./store/InMemoryGraphValueStoreAdapter.js";
32
+ export * from "./store/GraphValueStore.js";
33
+ export * from "./planning/GraphExecutionPlanNode.js";
34
+ export * from "./planning/GraphExecutionPlanEdge.js";
35
+ export * from "./planning/GraphExecutionPlanLayer.js";
36
+ export * from "./planning/GraphExecutionPlan.js";
37
+ export * from "./planning/GraphRelationResolver.js";
38
+ export * from "./planning/GraphExecutionPlanner.js";
39
+ export * from "./planning/GraphTopology.js";
40
+ // Validation (TASK-215)
41
+ export * from "./validation/GraphDefinitionValidator.js";
42
+ export * from "./validation/GraphPortSchemaResolver.js";
43
+ export * from "./validation/GraphValueValidator.js";
44
+ // Loops (TASK-216)
45
+ export * from "./loops/GraphConditionEvaluator.js";
46
+ export * from "./loops/GraphLoopExecutionContext.js";
47
+ export * from "./loops/ForeachGraphNodeExecutor.js";
48
+ export * from "./loops/WhileGraphNodeExecutor.js";
49
+ export * from "./loops/UntilGraphNodeExecutor.js";
50
+ // Pinning (TASK-217/218)
51
+ export * from "./pinning/GraphPinningMetadata.js";
52
+ export * from "./pinning/GraphPinningPolicy.js";
53
+ export * from "./pinning/GraphPinningDependencyResolver.js";
54
+ export * from "./pinning/GraphPinningService.js";
55
+ // Snapshots (TASK-219)
56
+ export * from "./snapshots/GraphExecutionSnapshotMapper.js";
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+BAA4B;AAC5B,2BAAwB;AACxB,gCAA6B;AAE7B,gDAA6C;AAC7C,4CAAyC;AACzC,4CAAyC;AACzC,gDAA6C;AAC7C,8CAA2C;AAC3C,2CAAwC;AACxC,4CAAyC;AACzC,+CAA4C;AAE5C,gDAA6C;AAC7C,mDAAgD;AAChD,uDAAoD;AACpD,uDAAoD;AAEpD,qDAAkD;AAClD,iDAA8C;AAC9C,mDAAgD;AAChD,oDAAiD;AACjD,oDAAiD;AAEjD,wDAAqD;AACrD,wDAAqD;AAErD,yCAAsC;AACtC,4CAAyC;AACzC,kDAA+C;AAC/C,0DAAuD;AACvD,2CAAwC;AAExC,qDAAkD;AAClD,qDAAkD;AAClD,sDAAmD;AACnD,iDAA8C;AAC9C,oDAAiD;AACjD,oDAAiD;AACjD,4CAAyC;AAEzC,wBAAwB;AACxB,yDAAsD;AACtD,wDAAqD;AACrD,oDAAiD;AAEjD,mBAAmB;AACnB,mDAAgD;AAChD,qDAAkD;AAClD,oDAAiD;AACjD,kDAA+C;AAC/C,kDAA+C;AAE/C,yBAAyB;AACzB,kDAA+C;AAC/C,gDAA6C;AAC7C,4DAAyD;AACzD,iDAA8C;AAE9C,uBAAuB;AACvB,4DAAyD"}
@@ -0,0 +1,79 @@
1
+ import { GRAPH_DEFAULT_MAX_FOREACH_ITERATIONS, GraphExecutionEventType } from "./../constants.js";
2
+ import { GraphInputError } from "./../errors/GraphInputError.js";
3
+ import { GraphLoopLimitError } from "./../errors/GraphLoopLimitError.js";
4
+ /**
5
+ * Executor for `core.loop.foreach` nodes.
6
+ *
7
+ * Expects input:
8
+ * - `items`: array of values to iterate over
9
+ * - `state?`: optional initial state
10
+ *
11
+ * Produces output:
12
+ * - `results`: array of body outputs (in item order)
13
+ * - `state?`: final state
14
+ * - `iterations`: number of iterations executed
15
+ */
16
+ export class ForeachGraphNodeExecutor {
17
+ constructor(engine) {
18
+ this.engine = engine;
19
+ }
20
+ async execute(input, context) {
21
+ const metadata = this.extractMetadata(context);
22
+ const items = input.items;
23
+ const maxIterations = metadata.maxIterations ?? GRAPH_DEFAULT_MAX_FOREACH_ITERATIONS;
24
+ if (!Array.isArray(items)) {
25
+ throw new GraphInputError("foreach input 'items' must be an array");
26
+ }
27
+ if (items.length > maxIterations) {
28
+ throw new GraphLoopLimitError(`foreach exceeded max iterations (${items.length} > ${maxIterations})`);
29
+ }
30
+ const itemPort = metadata.itemPort ?? "item";
31
+ const resultPort = metadata.resultPort ?? "result";
32
+ const statePort = metadata.statePort ?? "state";
33
+ const bodyWorkflow = metadata.body;
34
+ const results = [];
35
+ let state = input.state;
36
+ await context.emit({ type: GraphExecutionEventType.LOOP_STARTED });
37
+ for (let i = 0; i < items.length; i++) {
38
+ await context.emit({
39
+ type: GraphExecutionEventType.LOOP_ITERATION_STARTED,
40
+ iteration: i,
41
+ });
42
+ const childInputs = {
43
+ [itemPort]: items[i],
44
+ index: i,
45
+ };
46
+ if (state !== undefined)
47
+ childInputs[statePort] = state;
48
+ const childResult = await this.engine.execute(bodyWorkflow, childInputs, {
49
+ parentRunId: context.runId,
50
+ path: [...context.path, `iteration:${i}`],
51
+ });
52
+ results.push(childResult.outputs[resultPort]);
53
+ if (childResult.outputs[statePort] !== undefined) {
54
+ state = childResult.outputs[statePort];
55
+ }
56
+ await context.emit({
57
+ type: GraphExecutionEventType.LOOP_ITERATION_COMPLETED,
58
+ iteration: i,
59
+ });
60
+ }
61
+ await context.emit({ type: GraphExecutionEventType.LOOP_COMPLETED });
62
+ const output = {
63
+ results,
64
+ iterations: items.length,
65
+ };
66
+ if (state !== undefined)
67
+ output[statePort] = state;
68
+ return output;
69
+ }
70
+ extractMetadata(context) {
71
+ const raw = context.node.graph?.metadata?.loop ??
72
+ context.metadata?.loop;
73
+ if (!raw) {
74
+ throw new GraphInputError("foreach node is missing loop metadata");
75
+ }
76
+ return raw;
77
+ }
78
+ }
79
+ //# sourceMappingURL=ForeachGraphNodeExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ForeachGraphNodeExecutor.js","sourceRoot":"","sources":["../../../../src/graph/loops/ForeachGraphNodeExecutor.ts"],"names":[],"mappings":"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"}