@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.
- package/dist/integrations.cjs +3 -3
- package/dist/integrations.js +3 -3
- package/lib/cjs/graph/engine/constants.cjs +58 -0
- package/lib/cjs/graph/engine/decorators.cjs +4 -0
- package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +27 -0
- package/lib/cjs/graph/engine/errors/GraphInputError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphPortError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +20 -0
- package/lib/cjs/graph/{errors → engine/errors}/index.cjs +2 -2
- package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +4 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +40 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +37 -0
- package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +4 -0
- package/lib/cjs/graph/{events → engine/events}/index.cjs +2 -2
- package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +4 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +79 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +408 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +32 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +30 -0
- package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +4 -0
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +103 -0
- package/lib/cjs/graph/{execution → engine/execution}/index.cjs +2 -2
- package/lib/cjs/graph/engine/index.cjs +84 -0
- package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +87 -0
- package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +85 -0
- package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +85 -0
- package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +16 -0
- package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +77 -0
- package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +78 -0
- package/lib/cjs/graph/{loops → engine/loops}/index.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +28 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +20 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +34 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +191 -0
- package/lib/cjs/graph/{pinning → engine/pinning}/index.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +4 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +4 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +4 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +4 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +197 -0
- package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +172 -0
- package/lib/cjs/graph/engine/planning/GraphTopology.cjs +57 -0
- package/lib/cjs/graph/{planning → engine/planning}/index.cjs +2 -2
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +44 -0
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +27 -0
- package/lib/cjs/graph/{registry → engine/registry}/index.cjs +2 -2
- package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +53 -0
- package/lib/cjs/graph/{snapshots → engine/snapshots}/index.cjs +2 -2
- package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +4 -0
- package/lib/cjs/graph/engine/store/GraphValueKey.cjs +4 -0
- package/lib/cjs/graph/engine/store/GraphValueStore.cjs +76 -0
- package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +4 -0
- package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +69 -0
- package/lib/cjs/graph/{store → engine/store}/index.cjs +2 -2
- package/lib/cjs/graph/engine/types.cjs +4 -0
- package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +33 -0
- package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +58 -0
- package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +52 -0
- package/lib/cjs/graph/{validation → engine/validation}/index.cjs +2 -2
- package/lib/cjs/graph/index.cjs +10 -60
- package/lib/cjs/graph/shared/constants.cjs +44 -0
- package/lib/cjs/graph/shared/index.cjs +38 -0
- package/lib/cjs/graph/{nodes → shared/nodes}/agent.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/base.cjs +35 -0
- package/lib/cjs/graph/shared/nodes/category-styles.cjs +38 -0
- package/lib/cjs/graph/shared/nodes/flow-control.cjs +464 -0
- package/lib/cjs/graph/{nodes → shared/nodes}/index.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/triggers.cjs +250 -0
- package/lib/cjs/graph/shared/types.cjs +4 -0
- package/lib/cjs/index.cjs +3 -3
- package/lib/esm/graph/engine/constants.js +62 -0
- package/lib/esm/graph/engine/decorators.js +2 -0
- package/lib/esm/graph/engine/errors/GraphCycleError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphExecutionError.js +22 -0
- package/lib/esm/graph/engine/errors/GraphInputError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphPinningError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphPortError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphStoreError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphTopologyError.js +15 -0
- package/lib/esm/graph/engine/errors/index.js +14 -0
- package/lib/esm/graph/engine/events/GraphExecutionEvent.js +2 -0
- package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +35 -0
- package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +32 -0
- package/lib/esm/graph/engine/events/GraphExecutionObserver.js +2 -0
- package/lib/esm/graph/engine/events/index.js +10 -0
- package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +18 -0
- package/lib/esm/graph/engine/execution/GraphExecutionContext.js +74 -0
- package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +403 -0
- package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +27 -0
- package/lib/esm/graph/engine/execution/GraphExecutionResult.js +26 -0
- package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +2 -0
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +98 -0
- package/lib/esm/graph/engine/execution/index.js +13 -0
- package/lib/esm/graph/engine/index.js +67 -0
- package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +82 -0
- package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +80 -0
- package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +80 -0
- package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +11 -0
- package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +72 -0
- package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +73 -0
- package/lib/esm/graph/engine/loops/index.js +12 -0
- package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +23 -0
- package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +15 -0
- package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +29 -0
- package/lib/esm/graph/engine/pinning/GraphPinningService.js +186 -0
- package/lib/esm/graph/engine/pinning/index.js +10 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +2 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +7 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +2 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +2 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +192 -0
- package/lib/esm/graph/engine/planning/GraphRelationResolver.js +167 -0
- package/lib/esm/graph/engine/planning/GraphTopology.js +52 -0
- package/lib/esm/graph/engine/planning/index.js +13 -0
- package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +39 -0
- package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +22 -0
- package/lib/esm/graph/engine/registry/index.js +8 -0
- package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +48 -0
- package/lib/esm/graph/engine/snapshots/index.js +7 -0
- package/lib/esm/graph/engine/store/GraphCachedValue.js +2 -0
- package/lib/esm/graph/engine/store/GraphValueKey.js +7 -0
- package/lib/esm/graph/engine/store/GraphValueStore.js +71 -0
- package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +2 -0
- package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +64 -0
- package/lib/esm/graph/engine/store/index.js +11 -0
- package/lib/esm/graph/engine/types.js +2 -0
- package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +28 -0
- package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +53 -0
- package/lib/esm/graph/engine/validation/GraphValueValidator.js +47 -0
- package/lib/esm/graph/engine/validation/index.js +9 -0
- package/lib/esm/graph/index.js +9 -59
- package/lib/esm/graph/shared/constants.js +56 -0
- package/lib/esm/graph/shared/index.js +19 -0
- package/lib/esm/graph/shared/nodes/agent.js +101 -0
- package/lib/esm/graph/shared/nodes/base.js +30 -0
- package/lib/esm/graph/shared/nodes/category-styles.js +34 -0
- package/lib/esm/graph/shared/nodes/flow-control.js +455 -0
- package/lib/esm/graph/shared/nodes/index.js +18 -0
- package/lib/esm/graph/shared/nodes/triggers.js +241 -0
- package/lib/esm/graph/shared/types.js +2 -0
- package/lib/esm/index.js +3 -3
- package/lib/types/graph/engine/constants.d.cts +59 -0
- package/lib/types/graph/engine/constants.d.mts +59 -0
- package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.cts +1 -1
- package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.mts +1 -1
- package/lib/types/graph/engine/index.d.cts +61 -0
- package/lib/types/graph/engine/index.d.mts +61 -0
- package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.cts +1 -1
- package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.mts +1 -1
- package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.cts +2 -1
- package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.mts +2 -1
- package/lib/types/graph/{types.d.cts → engine/types.d.cts} +8 -116
- package/lib/types/graph/{types.d.mts → engine/types.d.mts} +8 -116
- package/lib/types/graph/index.d.cts +8 -53
- package/lib/types/graph/index.d.mts +8 -53
- package/lib/types/graph/shared/constants.d.cts +53 -0
- package/lib/types/graph/shared/constants.d.mts +53 -0
- package/lib/types/graph/shared/index.d.cts +18 -0
- package/lib/types/graph/shared/index.d.mts +18 -0
- package/lib/types/graph/shared/types.d.cts +121 -0
- package/lib/types/graph/shared/types.d.mts +121 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/package.json +14 -3
- package/lib/cjs/graph/constants.cjs +0 -94
- package/lib/cjs/graph/decorators.cjs +0 -4
- package/lib/cjs/graph/errors/GraphCycleError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphExecutionError.cjs +0 -27
- package/lib/cjs/graph/errors/GraphInputError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphPinningError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphPortError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphStoreError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphTopologyError.cjs +0 -20
- package/lib/cjs/graph/events/GraphExecutionEvent.cjs +0 -4
- package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +0 -40
- package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +0 -37
- package/lib/cjs/graph/events/GraphExecutionObserver.cjs +0 -4
- package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +0 -4
- package/lib/cjs/graph/execution/GraphExecutionContext.cjs +0 -79
- package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +0 -407
- package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +0 -32
- package/lib/cjs/graph/execution/GraphExecutionResult.cjs +0 -30
- package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +0 -4
- package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +0 -103
- package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +0 -87
- package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +0 -84
- package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +0 -85
- package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +0 -16
- package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +0 -76
- package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +0 -77
- package/lib/cjs/graph/nodes/base.cjs +0 -35
- package/lib/cjs/graph/nodes/category-styles.cjs +0 -38
- package/lib/cjs/graph/nodes/flow-control.cjs +0 -464
- package/lib/cjs/graph/nodes/triggers.cjs +0 -250
- package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +0 -28
- package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +0 -20
- package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +0 -34
- package/lib/cjs/graph/pinning/GraphPinningService.cjs +0 -191
- package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +0 -197
- package/lib/cjs/graph/planning/GraphRelationResolver.cjs +0 -172
- package/lib/cjs/graph/planning/GraphTopology.cjs +0 -57
- package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +0 -44
- package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +0 -27
- package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +0 -53
- package/lib/cjs/graph/store/GraphCachedValue.cjs +0 -4
- package/lib/cjs/graph/store/GraphValueKey.cjs +0 -4
- package/lib/cjs/graph/store/GraphValueStore.cjs +0 -76
- package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +0 -4
- package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +0 -69
- package/lib/cjs/graph/types.cjs +0 -4
- package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +0 -33
- package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +0 -58
- package/lib/cjs/graph/validation/GraphValueValidator.cjs +0 -52
- package/lib/esm/graph/constants.js +0 -106
- package/lib/esm/graph/decorators.js +0 -2
- package/lib/esm/graph/errors/GraphCycleError.js +0 -15
- package/lib/esm/graph/errors/GraphExecutionError.js +0 -22
- package/lib/esm/graph/errors/GraphInputError.js +0 -15
- package/lib/esm/graph/errors/GraphLoopLimitError.js +0 -15
- package/lib/esm/graph/errors/GraphPinningError.js +0 -15
- package/lib/esm/graph/errors/GraphPortError.js +0 -15
- package/lib/esm/graph/errors/GraphStoreError.js +0 -15
- package/lib/esm/graph/errors/GraphTopologyError.js +0 -15
- package/lib/esm/graph/errors/index.js +0 -14
- package/lib/esm/graph/events/GraphExecutionEvent.js +0 -2
- package/lib/esm/graph/events/GraphExecutionEventEmitter.js +0 -35
- package/lib/esm/graph/events/GraphExecutionEventFactory.js +0 -32
- package/lib/esm/graph/events/GraphExecutionObserver.js +0 -2
- package/lib/esm/graph/events/index.js +0 -10
- package/lib/esm/graph/execution/CodeSandboxEvaluator.js +0 -18
- package/lib/esm/graph/execution/GraphExecutionContext.js +0 -74
- package/lib/esm/graph/execution/GraphExecutionEngine.js +0 -402
- package/lib/esm/graph/execution/GraphExecutionFrame.js +0 -27
- package/lib/esm/graph/execution/GraphExecutionResult.js +0 -26
- package/lib/esm/graph/execution/GraphNodeExecutor.js +0 -2
- package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +0 -98
- package/lib/esm/graph/execution/index.js +0 -13
- package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +0 -82
- package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +0 -79
- package/lib/esm/graph/loops/GraphConditionEvaluator.js +0 -80
- package/lib/esm/graph/loops/GraphLoopExecutionContext.js +0 -11
- package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +0 -71
- package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +0 -72
- package/lib/esm/graph/loops/index.js +0 -12
- package/lib/esm/graph/nodes/agent.js +0 -101
- package/lib/esm/graph/nodes/base.js +0 -30
- package/lib/esm/graph/nodes/category-styles.js +0 -34
- package/lib/esm/graph/nodes/flow-control.js +0 -455
- package/lib/esm/graph/nodes/index.js +0 -18
- package/lib/esm/graph/nodes/triggers.js +0 -241
- package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +0 -23
- package/lib/esm/graph/pinning/GraphPinningMetadata.js +0 -15
- package/lib/esm/graph/pinning/GraphPinningPolicy.js +0 -29
- package/lib/esm/graph/pinning/GraphPinningService.js +0 -186
- package/lib/esm/graph/pinning/index.js +0 -10
- package/lib/esm/graph/planning/GraphExecutionPlan.js +0 -2
- package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +0 -7
- package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +0 -2
- package/lib/esm/graph/planning/GraphExecutionPlanNode.js +0 -2
- package/lib/esm/graph/planning/GraphExecutionPlanner.js +0 -192
- package/lib/esm/graph/planning/GraphRelationResolver.js +0 -167
- package/lib/esm/graph/planning/GraphTopology.js +0 -52
- package/lib/esm/graph/planning/index.js +0 -13
- package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +0 -39
- package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +0 -22
- package/lib/esm/graph/registry/index.js +0 -8
- package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +0 -48
- package/lib/esm/graph/snapshots/index.js +0 -7
- package/lib/esm/graph/store/GraphCachedValue.js +0 -2
- package/lib/esm/graph/store/GraphValueKey.js +0 -7
- package/lib/esm/graph/store/GraphValueStore.js +0 -71
- package/lib/esm/graph/store/GraphValueStoreAdapter.js +0 -2
- package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +0 -64
- package/lib/esm/graph/store/index.js +0 -11
- package/lib/esm/graph/types.js +0 -2
- package/lib/esm/graph/validation/GraphDefinitionValidator.js +0 -28
- package/lib/esm/graph/validation/GraphPortSchemaResolver.js +0 -53
- package/lib/esm/graph/validation/GraphValueValidator.js +0 -47
- package/lib/esm/graph/validation/index.js +0 -9
- package/lib/types/graph/constants.d.cts +0 -101
- package/lib/types/graph/constants.d.mts +0 -101
- /package/lib/types/graph/{decorators.d.cts → engine/decorators.d.cts} +0 -0
- /package/lib/types/graph/{decorators.d.mts → engine/decorators.d.mts} +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/index.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/index.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/index.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/index.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/index.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/index.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/index.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/index.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/index.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/index.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/index.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/index.d.mts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.cts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.mts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.cts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.mts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/index.d.cts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/index.d.mts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.cts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.mts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.cts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/index.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/index.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/index.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/index.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/agent.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/agent.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/base.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/base.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/index.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/index.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.mts +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { GRAPH_DEFAULT_MAX_LOOP_ITERATIONS } from "./../constants.js";
|
|
2
|
+
import { GraphExecutionEventType } from "./../../shared/constants.js";
|
|
3
|
+
import { GraphInputError } from "./../errors/GraphInputError.js";
|
|
4
|
+
import { GraphLoopLimitError } from "./../errors/GraphLoopLimitError.js";
|
|
5
|
+
import { GraphConditionEvaluator } from "./GraphConditionEvaluator.js";
|
|
6
|
+
/**
|
|
7
|
+
* Executor for `core.loop.while` nodes.
|
|
8
|
+
*
|
|
9
|
+
* Expects input:
|
|
10
|
+
* - `state`: initial state
|
|
11
|
+
*
|
|
12
|
+
* Produces output:
|
|
13
|
+
* - `state`: final state
|
|
14
|
+
* - `iterations`: number of iterations executed
|
|
15
|
+
*/
|
|
16
|
+
export class WhileGraphNodeExecutor {
|
|
17
|
+
constructor(engine) {
|
|
18
|
+
this.engine = engine;
|
|
19
|
+
this.evaluator = new GraphConditionEvaluator();
|
|
20
|
+
}
|
|
21
|
+
async execute(input, context) {
|
|
22
|
+
const metadata = this.extractMetadata(context);
|
|
23
|
+
const maxIterations = metadata.maxIterations ?? GRAPH_DEFAULT_MAX_LOOP_ITERATIONS;
|
|
24
|
+
const condition = metadata.condition;
|
|
25
|
+
if (!condition) {
|
|
26
|
+
throw new GraphInputError("while node is missing a condition");
|
|
27
|
+
}
|
|
28
|
+
const statePort = metadata.statePort ?? "state";
|
|
29
|
+
const bodyWorkflow = metadata.body;
|
|
30
|
+
let state = input.state;
|
|
31
|
+
let iteration = 0;
|
|
32
|
+
await context.emit({ type: GraphExecutionEventType.LOOP_STARTED });
|
|
33
|
+
while (this.evaluator.evaluate(condition, state)) {
|
|
34
|
+
if (iteration >= maxIterations) {
|
|
35
|
+
await context.emit({
|
|
36
|
+
type: GraphExecutionEventType.LOOP_LIMIT_REACHED,
|
|
37
|
+
iteration,
|
|
38
|
+
});
|
|
39
|
+
throw new GraphLoopLimitError(`while loop exceeded max iterations (${maxIterations})`);
|
|
40
|
+
}
|
|
41
|
+
await context.emit({
|
|
42
|
+
type: GraphExecutionEventType.LOOP_CONDITION_EVALUATED,
|
|
43
|
+
iteration,
|
|
44
|
+
payload: { result: true },
|
|
45
|
+
});
|
|
46
|
+
await context.emit({
|
|
47
|
+
type: GraphExecutionEventType.LOOP_ITERATION_STARTED,
|
|
48
|
+
iteration,
|
|
49
|
+
});
|
|
50
|
+
const childResult = await this.engine.execute(bodyWorkflow, { [statePort]: state, iteration }, {
|
|
51
|
+
parentRunId: context.runId,
|
|
52
|
+
path: [...context.path, `iteration:${iteration}`],
|
|
53
|
+
});
|
|
54
|
+
state = childResult.outputs[statePort];
|
|
55
|
+
await context.emit({
|
|
56
|
+
type: GraphExecutionEventType.LOOP_ITERATION_COMPLETED,
|
|
57
|
+
iteration,
|
|
58
|
+
});
|
|
59
|
+
iteration++;
|
|
60
|
+
}
|
|
61
|
+
await context.emit({ type: GraphExecutionEventType.LOOP_COMPLETED });
|
|
62
|
+
return { [statePort]: state, iterations: iteration };
|
|
63
|
+
}
|
|
64
|
+
extractMetadata(context) {
|
|
65
|
+
const raw = context.node.graph?.metadata?.loop ??
|
|
66
|
+
context.metadata?.loop;
|
|
67
|
+
if (!raw) {
|
|
68
|
+
throw new GraphInputError("while node is missing loop metadata");
|
|
69
|
+
}
|
|
70
|
+
return raw;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2hpbGVHcmFwaE5vZGVFeGVjdXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvbG9vcHMvV2hpbGVHcmFwaE5vZGVFeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsMEJBQXFCO0FBQ2pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxvQ0FBK0I7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSx1Q0FBa0M7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDJDQUFzQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUscUNBQWtDO0FBRXBFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFBNkIsTUFBNEI7UUFBNUIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFGeEMsY0FBUyxHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQztJQUVDLENBQUM7SUFFN0QsS0FBSyxDQUFDLE9BQU8sQ0FDWCxLQUEyQixFQUMzQixPQUE4QjtRQUU5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sYUFBYSxHQUNqQixRQUFRLENBQUMsYUFBYSxJQUFJLGlDQUFpQyxDQUFDO1FBQzlELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLGVBQWUsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBK0IsQ0FBQztRQUU5RCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUVsQixNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUVuRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pELElBQUksU0FBUyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxrQkFBa0I7b0JBQ2hELFNBQVM7aUJBQ1YsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0IsdUNBQXVDLGFBQWEsR0FBRyxDQUN4RCxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLHdCQUF3QjtnQkFDdEQsU0FBUztnQkFDVCxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2FBQzFCLENBQUMsQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLHNCQUFzQjtnQkFDcEQsU0FBUzthQUNWLENBQUMsQ0FBQztZQUVILE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQzNDLFlBQVksRUFDWixFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUNqQztnQkFDRSxXQUFXLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQzFCLElBQUksRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxhQUFhLFNBQVMsRUFBRSxDQUFDO2FBQ2xELENBQ0YsQ0FBQztZQUVGLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXZDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLHdCQUF3QjtnQkFDdEQsU0FBUzthQUNWLENBQUMsQ0FBQztZQUVILFNBQVMsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxPQUE4QjtRQUNwRCxNQUFNLEdBQUcsR0FBSSxPQUFPLENBQUMsSUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTtZQUNwRCxPQUFPLENBQUMsUUFBZ0IsRUFBRSxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLGVBQWUsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxPQUFPLEdBQXdCLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9sb29wcy9XaGlsZUdyYXBoTm9kZUV4ZWN1dG9yXG4gKiBAc3VtbWFyeSBXaGlsZSBsb29wIG5vZGUgZXhlY3V0b3IuXG4gKiBAZGVzY3JpcHRpb24gRXhlY3V0ZXMgYSBib2R5IHdvcmtmbG93IHJlcGVhdGVkbHkgd2hpbGUgYSBjb25kaXRpb24gaXMgdHJ1ZSwgZW5mb3JjaW5nIGEgbWF4aW11bSBpdGVyYXRpb24gbGltaXQuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRXhlY3V0b3IgfSBmcm9tIFwiLi4vZXhlY3V0aW9uL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gXCIuLi9leGVjdXRpb24vR3JhcGhFeGVjdXRpb25Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uRW5naW5lIH0gZnJvbSBcIi4uL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvbkVuZ2luZVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblZhbHVlcywgR3JhcGhMb29wTWV0YWRhdGEgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHsgR1JBUEhfREVGQVVMVF9NQVhfTE9PUF9JVEVSQVRJT05TIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25FdmVudFR5cGUgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgR3JhcGhJbnB1dEVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaElucHV0RXJyb3JcIjtcbmltcG9ydCB7IEdyYXBoTG9vcExpbWl0RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL0dyYXBoTG9vcExpbWl0RXJyb3JcIjtcbmltcG9ydCB7IEdyYXBoQ29uZGl0aW9uRXZhbHVhdG9yIH0gZnJvbSBcIi4vR3JhcGhDb25kaXRpb25FdmFsdWF0b3JcIjtcblxuLyoqXG4gKiBFeGVjdXRvciBmb3IgYGNvcmUubG9vcC53aGlsZWAgbm9kZXMuXG4gKlxuICogRXhwZWN0cyBpbnB1dDpcbiAqIC0gYHN0YXRlYDogaW5pdGlhbCBzdGF0ZVxuICpcbiAqIFByb2R1Y2VzIG91dHB1dDpcbiAqIC0gYHN0YXRlYDogZmluYWwgc3RhdGVcbiAqIC0gYGl0ZXJhdGlvbnNgOiBudW1iZXIgb2YgaXRlcmF0aW9ucyBleGVjdXRlZFxuICovXG5leHBvcnQgY2xhc3MgV2hpbGVHcmFwaE5vZGVFeGVjdXRvciBpbXBsZW1lbnRzIEdyYXBoTm9kZUV4ZWN1dG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBldmFsdWF0b3IgPSBuZXcgR3JhcGhDb25kaXRpb25FdmFsdWF0b3IoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVuZ2luZTogR3JhcGhFeGVjdXRpb25FbmdpbmUpIHt9XG5cbiAgYXN5bmMgZXhlY3V0ZShcbiAgICBpbnB1dDogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4gICk6IFByb21pc2U8R3JhcGhFeGVjdXRpb25WYWx1ZXM+IHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXh0cmFjdE1ldGFkYXRhKGNvbnRleHQpO1xuICAgIGNvbnN0IG1heEl0ZXJhdGlvbnMgPVxuICAgICAgbWV0YWRhdGEubWF4SXRlcmF0aW9ucyA/PyBHUkFQSF9ERUZBVUxUX01BWF9MT09QX0lURVJBVElPTlM7XG4gICAgY29uc3QgY29uZGl0aW9uID0gbWV0YWRhdGEuY29uZGl0aW9uO1xuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhJbnB1dEVycm9yKFwid2hpbGUgbm9kZSBpcyBtaXNzaW5nIGEgY29uZGl0aW9uXCIpO1xuICAgIH1cbiAgICBjb25zdCBzdGF0ZVBvcnQgPSBtZXRhZGF0YS5zdGF0ZVBvcnQgPz8gXCJzdGF0ZVwiO1xuICAgIGNvbnN0IGJvZHlXb3JrZmxvdyA9IG1ldGFkYXRhLmJvZHkgYXMgR3JhcGhXb3JrZmxvd0RlZmluaXRpb247XG5cbiAgICBsZXQgc3RhdGUgPSBpbnB1dC5zdGF0ZTtcbiAgICBsZXQgaXRlcmF0aW9uID0gMDtcblxuICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7IHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfU1RBUlRFRCB9KTtcblxuICAgIHdoaWxlICh0aGlzLmV2YWx1YXRvci5ldmFsdWF0ZShjb25kaXRpb24sIHN0YXRlKSkge1xuICAgICAgaWYgKGl0ZXJhdGlvbiA+PSBtYXhJdGVyYXRpb25zKSB7XG4gICAgICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7XG4gICAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTE9PUF9MSU1JVF9SRUFDSEVELFxuICAgICAgICAgIGl0ZXJhdGlvbixcbiAgICAgICAgfSk7XG4gICAgICAgIHRocm93IG5ldyBHcmFwaExvb3BMaW1pdEVycm9yKFxuICAgICAgICAgIGB3aGlsZSBsb29wIGV4Y2VlZGVkIG1heCBpdGVyYXRpb25zICgke21heEl0ZXJhdGlvbnN9KWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgY29udGV4dC5lbWl0KHtcbiAgICAgICAgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTE9PUF9DT05ESVRJT05fRVZBTFVBVEVELFxuICAgICAgICBpdGVyYXRpb24sXG4gICAgICAgIHBheWxvYWQ6IHsgcmVzdWx0OiB0cnVlIH0sXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7XG4gICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfSVRFUkFUSU9OX1NUQVJURUQsXG4gICAgICAgIGl0ZXJhdGlvbixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjaGlsZFJlc3VsdCA9IGF3YWl0IHRoaXMuZW5naW5lLmV4ZWN1dGUoXG4gICAgICAgIGJvZHlXb3JrZmxvdyxcbiAgICAgICAgeyBbc3RhdGVQb3J0XTogc3RhdGUsIGl0ZXJhdGlvbiB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyZW50UnVuSWQ6IGNvbnRleHQucnVuSWQsXG4gICAgICAgICAgcGF0aDogWy4uLmNvbnRleHQucGF0aCwgYGl0ZXJhdGlvbjoke2l0ZXJhdGlvbn1gXSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgc3RhdGUgPSBjaGlsZFJlc3VsdC5vdXRwdXRzW3N0YXRlUG9ydF07XG5cbiAgICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7XG4gICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfSVRFUkFUSU9OX0NPTVBMRVRFRCxcbiAgICAgICAgaXRlcmF0aW9uLFxuICAgICAgfSk7XG5cbiAgICAgIGl0ZXJhdGlvbisrO1xuICAgIH1cblxuICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7IHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfQ09NUExFVEVEIH0pO1xuXG4gICAgcmV0dXJuIHsgW3N0YXRlUG9ydF06IHN0YXRlLCBpdGVyYXRpb25zOiBpdGVyYXRpb24gfTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdE1ldGFkYXRhKGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dCk6IEdyYXBoTG9vcE1ldGFkYXRhIHtcbiAgICBjb25zdCByYXcgPSAoY29udGV4dC5ub2RlIGFzIGFueSkuZ3JhcGg/Lm1ldGFkYXRhPy5sb29wID8/XG4gICAgICAoY29udGV4dC5tZXRhZGF0YSBhcyBhbnkpPy5sb29wO1xuICAgIGlmICghcmF3KSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhJbnB1dEVycm9yKFwid2hpbGUgbm9kZSBpcyBtaXNzaW5nIGxvb3AgbWV0YWRhdGFcIik7XG4gICAgfVxuICAgIHJldHVybiByYXcgYXMgR3JhcGhMb29wTWV0YWRhdGE7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/loops
|
|
3
|
+
* @summary Structured loop executors.
|
|
4
|
+
* @description Re-exports the condition evaluator, loop execution context, and foreach/while/until executors.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./GraphConditionEvaluator.js";
|
|
7
|
+
export * from "./ConditionExpressionEvaluator.js";
|
|
8
|
+
export * from "./GraphLoopExecutionContext.js";
|
|
9
|
+
export * from "./ForeachGraphNodeExecutor.js";
|
|
10
|
+
export * from "./WhileGraphNodeExecutor.js";
|
|
11
|
+
export * from "./UntilGraphNodeExecutor.js";
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2xvb3BzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCw2Q0FBMEM7QUFDMUMsa0RBQStDO0FBQy9DLCtDQUE0QztBQUM1Qyw4Q0FBMkM7QUFDM0MsNENBQXlDO0FBQ3pDLDRDQUF5QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvbG9vcHNcbiAqIEBzdW1tYXJ5IFN0cnVjdHVyZWQgbG9vcCBleGVjdXRvcnMuXG4gKiBAZGVzY3JpcHRpb24gUmUtZXhwb3J0cyB0aGUgY29uZGl0aW9uIGV2YWx1YXRvciwgbG9vcCBleGVjdXRpb24gY29udGV4dCwgYW5kIGZvcmVhY2gvd2hpbGUvdW50aWwgZXhlY3V0b3JzLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaENvbmRpdGlvbkV2YWx1YXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhMb29wRXhlY3V0aW9uQ29udGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vRm9yZWFjaEdyYXBoTm9kZUV4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9XaGlsZUdyYXBoTm9kZUV4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9VbnRpbEdyYXBoTm9kZUV4ZWN1dG9yXCI7XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { GraphTopology } from "./../planning/GraphTopology.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the upstream dependency subtree of a node for pinning operations.
|
|
4
|
+
*/
|
|
5
|
+
export class GraphPinningDependencyResolver {
|
|
6
|
+
/**
|
|
7
|
+
* Returns the set of upstream node ids that the given node depends on,
|
|
8
|
+
* excluding the workflow boundary.
|
|
9
|
+
*/
|
|
10
|
+
getDependencies(plan, nodeId) {
|
|
11
|
+
return GraphTopology.upstreamNodes(nodeId, plan.incomingByNode, false);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Returns the full set of node ids to pin: the node itself plus all its
|
|
15
|
+
* upstream dependencies.
|
|
16
|
+
*/
|
|
17
|
+
getPinSet(plan, nodeId) {
|
|
18
|
+
const deps = this.getDependencies(plan, nodeId);
|
|
19
|
+
deps.add(nodeId);
|
|
20
|
+
return deps;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL2VuZ2luZS9waW5uaW5nL0dyYXBoUGlubmluZ0RlcGVuZGVuY3lSZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsYUFBYSxFQUFFLHVDQUFrQztBQUUxRDs7R0FFRztBQUNILE1BQU0sT0FBTyw4QkFBOEI7SUFDekM7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLElBQXdCLEVBQUUsTUFBYztRQUN0RCxPQUFPLGFBQWEsQ0FBQyxhQUFhLENBQ2hDLE1BQU0sRUFDTixJQUFJLENBQUMsY0FBYyxFQUNuQixLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsSUFBd0IsRUFBRSxNQUFjO1FBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3Bpbm5pbmcvR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyXG4gKiBAc3VtbWFyeSBSZXNvbHZlcyB1cHN0cmVhbSBkZXBlbmRlbmN5IHN1YnRyZWVzIGZvciBwaW5uaW5nLlxuICogQGRlc2NyaXB0aW9uIFdoZW4gYSBub2RlIGlzIHBpbm5lZCwgYWxsIHVwc3RyZWFtIG5vZGVzIGl0IGRlcGVuZHMgb24gbXVzdCBhbHNvIGJlIHBpbm5lZC4gVGhpcyByZXNvbHZlciBjb21wdXRlcyB0aGUgZGVwZW5kZW5jeSBzZXQuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuIH0gZnJvbSBcIi4uL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhblwiO1xuaW1wb3J0IHsgR3JhcGhUb3BvbG9neSB9IGZyb20gXCIuLi9wbGFubmluZy9HcmFwaFRvcG9sb2d5XCI7XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHVwc3RyZWFtIGRlcGVuZGVuY3kgc3VidHJlZSBvZiBhIG5vZGUgZm9yIHBpbm5pbmcgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUGlubmluZ0RlcGVuZGVuY3lSZXNvbHZlciB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgdXBzdHJlYW0gbm9kZSBpZHMgdGhhdCB0aGUgZ2l2ZW4gbm9kZSBkZXBlbmRzIG9uLFxuICAgKiBleGNsdWRpbmcgdGhlIHdvcmtmbG93IGJvdW5kYXJ5LlxuICAgKi9cbiAgZ2V0RGVwZW5kZW5jaWVzKHBsYW46IEdyYXBoRXhlY3V0aW9uUGxhbiwgbm9kZUlkOiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gICAgcmV0dXJuIEdyYXBoVG9wb2xvZ3kudXBzdHJlYW1Ob2RlcyhcbiAgICAgIG5vZGVJZCxcbiAgICAgIHBsYW4uaW5jb21pbmdCeU5vZGUsXG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZnVsbCBzZXQgb2Ygbm9kZSBpZHMgdG8gcGluOiB0aGUgbm9kZSBpdHNlbGYgcGx1cyBhbGwgaXRzXG4gICAqIHVwc3RyZWFtIGRlcGVuZGVuY2llcy5cbiAgICovXG4gIGdldFBpblNldChwbGFuOiBHcmFwaEV4ZWN1dGlvblBsYW4sIG5vZGVJZDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvbnN0IGRlcHMgPSB0aGlzLmdldERlcGVuZGVuY2llcyhwbGFuLCBub2RlSWQpO1xuICAgIGRlcHMuYWRkKG5vZGVJZCk7XG4gICAgcmV0dXJuIGRlcHM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default pinning metadata applied when `@pinnable()` is used without options.
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_PINNING_METADATA = {
|
|
5
|
+
enabled: true,
|
|
6
|
+
strategy: "manual",
|
|
7
|
+
includeDependencies: true,
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Returns `true` when the given metadata allows pinning.
|
|
11
|
+
*/
|
|
12
|
+
export function isPinnable(metadata) {
|
|
13
|
+
return metadata?.enabled === true && metadata.strategy !== "disabled";
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nTWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL3Bpbm5pbmcvR3JhcGhQaW5uaW5nTWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBeUI7SUFDNUQsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsUUFBUTtJQUNsQixtQkFBbUIsRUFBRSxJQUFJO0NBQzFCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsUUFBMEM7SUFDbkUsT0FBTyxRQUFRLEVBQUUsT0FBTyxLQUFLLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9waW5uaW5nL0dyYXBoUGlubmluZ01ldGFkYXRhXG4gKiBAc3VtbWFyeSBQaW5uaW5nIG1ldGFkYXRhIGRlZmF1bHRzIGFuZCBoZWxwZXJzLlxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGRlZmF1bHQgcGlubmluZyBtZXRhZGF0YSB2YWx1ZXMgYW5kIGEgaGVscGVyIHRvIGNoZWNrIHBpbm5hYmlsaXR5LiBUaGUgYEdyYXBoUGlubmluZ01ldGFkYXRhYCB0eXBlIGl0c2VsZiBpcyBkZWZpbmVkIGluIGAuLi90eXBlc2AgYW5kIHJlLWV4cG9ydGVkIGZyb20gdGhlIHBhY2thZ2Ugcm9vdC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaFBpbm5pbmdNZXRhZGF0YSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIERlZmF1bHQgcGlubmluZyBtZXRhZGF0YSBhcHBsaWVkIHdoZW4gYEBwaW5uYWJsZSgpYCBpcyB1c2VkIHdpdGhvdXQgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUElOTklOR19NRVRBREFUQTogR3JhcGhQaW5uaW5nTWV0YWRhdGEgPSB7XG4gIGVuYWJsZWQ6IHRydWUsXG4gIHN0cmF0ZWd5OiBcIm1hbnVhbFwiLFxuICBpbmNsdWRlRGVwZW5kZW5jaWVzOiB0cnVlLFxufTtcblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBnaXZlbiBtZXRhZGF0YSBhbGxvd3MgcGlubmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGlubmFibGUobWV0YWRhdGE6IEdyYXBoUGlubmluZ01ldGFkYXRhIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiBtZXRhZGF0YT8uZW5hYmxlZCA9PT0gdHJ1ZSAmJiBtZXRhZGF0YS5zdHJhdGVneSAhPT0gXCJkaXNhYmxlZFwiO1xufVxuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DEFAULT_PINNING_METADATA, isPinnable } from "./GraphPinningMetadata.js";
|
|
2
|
+
/**
|
|
3
|
+
* Policy that decides pinning behaviour for a plan node.
|
|
4
|
+
*/
|
|
5
|
+
export class GraphPinningPolicy {
|
|
6
|
+
/** Returns whether the node is allowed to be pinned. */
|
|
7
|
+
canPin(node) {
|
|
8
|
+
return isPinnable(this.getPinningMetadata(node));
|
|
9
|
+
}
|
|
10
|
+
/** Returns whether the engine should attempt to use a pinned value for the node. */
|
|
11
|
+
shouldUsePinnedValue(node) {
|
|
12
|
+
const metadata = this.getPinningMetadata(node);
|
|
13
|
+
return metadata.enabled === true && metadata.strategy !== "disabled";
|
|
14
|
+
}
|
|
15
|
+
/** Returns whether automatic pinning should occur after execution. */
|
|
16
|
+
shouldAutoPin(node) {
|
|
17
|
+
const metadata = this.getPinningMetadata(node);
|
|
18
|
+
return metadata.enabled === true && metadata.strategy === "automatic";
|
|
19
|
+
}
|
|
20
|
+
/** Extracts pinning metadata from a plan node. */
|
|
21
|
+
getPinningMetadata(node) {
|
|
22
|
+
const raw = node.definition?.graph?.metadata?.pinnable ??
|
|
23
|
+
node.metadata?.pinnable;
|
|
24
|
+
return raw
|
|
25
|
+
? { ...DEFAULT_PINNING_METADATA, ...raw }
|
|
26
|
+
: { ...DEFAULT_PINNING_METADATA, enabled: false };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nUG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL2VuZ2luZS9waW5uaW5nL0dyYXBoUGlubmluZ1BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsVUFBVSxFQUFFLGtDQUErQjtBQUU5RTs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0Isd0RBQXdEO0lBQ3hELE1BQU0sQ0FBQyxJQUE0QjtRQUNqQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsb0ZBQW9GO0lBQ3BGLG9CQUFvQixDQUFDLElBQTRCO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsYUFBYSxDQUFDLElBQTRCO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsa0JBQWtCLENBQUMsSUFBNEI7UUFDN0MsTUFBTSxHQUFHLEdBQ04sSUFBSSxDQUFDLFVBQWtCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRO1lBQ2xELElBQUksQ0FBQyxRQUFnQixFQUFFLFFBQVEsQ0FBQztRQUNuQyxPQUFPLEdBQUc7WUFDUixDQUFDLENBQUMsRUFBRSxHQUFHLHdCQUF3QixFQUFFLEdBQUcsR0FBRyxFQUFFO1lBQ3pDLENBQUMsQ0FBQyxFQUFFLEdBQUcsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3RELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGlubmluZy9HcmFwaFBpbm5pbmdQb2xpY3lcbiAqIEBzdW1tYXJ5IERlY2lkZXMgd2hldGhlciBhIG5vZGUgY2FuIGJlIHBpbm5lZCBhbmQgd2hldGhlciBwaW5uZWQgdmFsdWVzIHNob3VsZCBiZSB1c2VkLlxuICogQGRlc2NyaXB0aW9uIFJlYWRzIHBpbm5pbmcgbWV0YWRhdGEgZnJvbSBwbGFuIG5vZGVzIGFuZCBlbmZvcmNlcyB0aGUgcGlubmluZyBzdHJhdGVneS5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlIH0gZnJvbSBcIi4uL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbk5vZGVcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhQaW5uaW5nTWV0YWRhdGEgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IERFRkFVTFRfUElOTklOR19NRVRBREFUQSwgaXNQaW5uYWJsZSB9IGZyb20gXCIuL0dyYXBoUGlubmluZ01ldGFkYXRhXCI7XG5cbi8qKlxuICogUG9saWN5IHRoYXQgZGVjaWRlcyBwaW5uaW5nIGJlaGF2aW91ciBmb3IgYSBwbGFuIG5vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFBpbm5pbmdQb2xpY3kge1xuICAvKiogUmV0dXJucyB3aGV0aGVyIHRoZSBub2RlIGlzIGFsbG93ZWQgdG8gYmUgcGlubmVkLiAqL1xuICBjYW5QaW4obm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1Bpbm5hYmxlKHRoaXMuZ2V0UGlubmluZ01ldGFkYXRhKG5vZGUpKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGVuZ2luZSBzaG91bGQgYXR0ZW1wdCB0byB1c2UgYSBwaW5uZWQgdmFsdWUgZm9yIHRoZSBub2RlLiAqL1xuICBzaG91bGRVc2VQaW5uZWRWYWx1ZShub2RlOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmdldFBpbm5pbmdNZXRhZGF0YShub2RlKTtcbiAgICByZXR1cm4gbWV0YWRhdGEuZW5hYmxlZCA9PT0gdHJ1ZSAmJiBtZXRhZGF0YS5zdHJhdGVneSAhPT0gXCJkaXNhYmxlZFwiO1xuICB9XG5cbiAgLyoqIFJldHVybnMgd2hldGhlciBhdXRvbWF0aWMgcGlubmluZyBzaG91bGQgb2NjdXIgYWZ0ZXIgZXhlY3V0aW9uLiAqL1xuICBzaG91bGRBdXRvUGluKG5vZGU6IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZ2V0UGlubmluZ01ldGFkYXRhKG5vZGUpO1xuICAgIHJldHVybiBtZXRhZGF0YS5lbmFibGVkID09PSB0cnVlICYmIG1ldGFkYXRhLnN0cmF0ZWd5ID09PSBcImF1dG9tYXRpY1wiO1xuICB9XG5cbiAgLyoqIEV4dHJhY3RzIHBpbm5pbmcgbWV0YWRhdGEgZnJvbSBhIHBsYW4gbm9kZS4gKi9cbiAgZ2V0UGlubmluZ01ldGFkYXRhKG5vZGU6IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUpOiBHcmFwaFBpbm5pbmdNZXRhZGF0YSB7XG4gICAgY29uc3QgcmF3ID1cbiAgICAgIChub2RlLmRlZmluaXRpb24gYXMgYW55KT8uZ3JhcGg/Lm1ldGFkYXRhPy5waW5uYWJsZSA/P1xuICAgICAgKG5vZGUubWV0YWRhdGEgYXMgYW55KT8ucGlubmFibGU7XG4gICAgcmV0dXJuIHJhd1xuICAgICAgPyB7IC4uLkRFRkFVTFRfUElOTklOR19NRVRBREFUQSwgLi4ucmF3IH1cbiAgICAgIDogeyAuLi5ERUZBVUxUX1BJTk5JTkdfTUVUQURBVEEsIGVuYWJsZWQ6IGZhbHNlIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/pinning/GraphPinningService
|
|
3
|
+
* @summary Service for pinning and unpinning graph node values.
|
|
4
|
+
* @description Computes stable fingerprints, pins/unpins nodes and their upstream dependencies, reads pinned values, and emits pinning events. Pinning is all-or-nothing: if any upstream dependency is not pinnable, the operation fails.
|
|
5
|
+
*/
|
|
6
|
+
import { GRAPH_PINNING_METADATA_KEY } from "./../constants.js";
|
|
7
|
+
import { GraphPinningError } from "./../errors/GraphPinningError.js";
|
|
8
|
+
import { GraphTopology } from "./../planning/GraphTopology.js";
|
|
9
|
+
/**
|
|
10
|
+
* Service that manages pinning and unpinning of graph node values.
|
|
11
|
+
*/
|
|
12
|
+
export class GraphPinningService {
|
|
13
|
+
constructor(store, policy, dependencyResolver) {
|
|
14
|
+
this.store = store;
|
|
15
|
+
this.policy = policy;
|
|
16
|
+
this.dependencyResolver = dependencyResolver;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Pins a node and all its upstream dependencies.
|
|
20
|
+
*
|
|
21
|
+
* @throws {GraphPinningError} when the node or any dependency is not pinnable.
|
|
22
|
+
*/
|
|
23
|
+
async pinNode(options) {
|
|
24
|
+
const plan = options.plan;
|
|
25
|
+
const includeDependencies = options.includeDependencies ?? true;
|
|
26
|
+
const pinSet = includeDependencies
|
|
27
|
+
? this.dependencyResolver.getPinSet(plan, options.nodeId)
|
|
28
|
+
: new Set([options.nodeId]);
|
|
29
|
+
// Validate all-or-nothing
|
|
30
|
+
for (const nodeId of pinSet) {
|
|
31
|
+
const node = plan.nodes.find((n) => n.id === nodeId);
|
|
32
|
+
if (!node) {
|
|
33
|
+
throw new GraphPinningError(`Node '${nodeId}' not found in plan`);
|
|
34
|
+
}
|
|
35
|
+
if (!this.policy.canPin(node)) {
|
|
36
|
+
throw new GraphPinningError(`Node '${nodeId}' is not pinnable`, { nodeId });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Pin dependencies first, then the selected node
|
|
40
|
+
const ordered = this.topologicalOrder(plan, pinSet);
|
|
41
|
+
for (const nodeId of ordered) {
|
|
42
|
+
const node = plan.nodes.find((n) => n.id === nodeId);
|
|
43
|
+
const result = options.result.nodeResults[nodeId];
|
|
44
|
+
if (!result || !result.outputs) {
|
|
45
|
+
throw new GraphPinningError(`Node '${nodeId}' has no completed output to pin`);
|
|
46
|
+
}
|
|
47
|
+
const inputs = result.inputs ?? {};
|
|
48
|
+
const depFingerprints = this.dependencyFingerprints(plan, nodeId, options.result);
|
|
49
|
+
const key = this.createValueKey(options.workflow, node, inputs, depFingerprints, options.namespace);
|
|
50
|
+
const now = new Date().toISOString();
|
|
51
|
+
const cached = {
|
|
52
|
+
key,
|
|
53
|
+
outputs: result.outputs,
|
|
54
|
+
pinned: true,
|
|
55
|
+
createdAt: now,
|
|
56
|
+
updatedAt: now,
|
|
57
|
+
metadata: { ...options.result.metadata, nodeId },
|
|
58
|
+
};
|
|
59
|
+
await this.store.writeCached(key, cached);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Unpins a single node (does not unpin dependents in v1).
|
|
64
|
+
*/
|
|
65
|
+
async unpinNode(options) {
|
|
66
|
+
const key = {
|
|
67
|
+
workflowId: options.workflow.name,
|
|
68
|
+
nodeId: options.nodeId,
|
|
69
|
+
fingerprint: options.fingerprint,
|
|
70
|
+
namespace: options.namespace,
|
|
71
|
+
};
|
|
72
|
+
await this.store.deleteCached(key);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Reads a pinned value for a node, returning `undefined` when no valid
|
|
76
|
+
* pinned value exists.
|
|
77
|
+
*/
|
|
78
|
+
async readPinnedValue(workflow, node, inputs, dependencyFingerprints, namespace) {
|
|
79
|
+
const key = this.createValueKey(workflow, node, inputs, dependencyFingerprints, namespace);
|
|
80
|
+
const cached = await this.store.readCached(key);
|
|
81
|
+
if (cached && cached.pinned) {
|
|
82
|
+
if (cached.expiresAt && new Date(cached.expiresAt) < new Date()) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
return cached;
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Creates a stable value key for a node.
|
|
91
|
+
*/
|
|
92
|
+
createValueKey(workflow, node, inputs, dependencyFingerprints, namespace) {
|
|
93
|
+
return {
|
|
94
|
+
workflowId: workflow.name,
|
|
95
|
+
nodeId: node.id,
|
|
96
|
+
fingerprint: this.computeFingerprint(workflow, node, inputs, dependencyFingerprints),
|
|
97
|
+
namespace,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Computes a stable fingerprint for a node's inputs and dependencies.
|
|
102
|
+
*/
|
|
103
|
+
computeFingerprint(workflow, node, inputs, dependencyFingerprints) {
|
|
104
|
+
const data = {
|
|
105
|
+
workflowId: workflow.name,
|
|
106
|
+
nodeId: node.id,
|
|
107
|
+
nodeKind: node.kind,
|
|
108
|
+
nodeDefinitionVersion: node.definition?.graph?.metadata?.version,
|
|
109
|
+
inputs: this.stableSerialize(inputs),
|
|
110
|
+
dependencyFingerprints: this.stableSerialize(dependencyFingerprints),
|
|
111
|
+
};
|
|
112
|
+
const json = this.stableSerialize(data);
|
|
113
|
+
// Use a deterministic non-cryptographic hash that works in both browser
|
|
114
|
+
// and Node environments without requiring `node:crypto`.
|
|
115
|
+
return this.simpleHash(json);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Returns a topological ordering of the given node set.
|
|
119
|
+
*/
|
|
120
|
+
topologicalOrder(plan, nodeSet) {
|
|
121
|
+
const result = [];
|
|
122
|
+
const visited = new Set();
|
|
123
|
+
const visit = (nodeId) => {
|
|
124
|
+
if (visited.has(nodeId))
|
|
125
|
+
return;
|
|
126
|
+
visited.add(nodeId);
|
|
127
|
+
const deps = GraphTopology.upstreamNodes(nodeId, plan.incomingByNode, false);
|
|
128
|
+
for (const dep of deps) {
|
|
129
|
+
if (nodeSet.has(dep))
|
|
130
|
+
visit(dep);
|
|
131
|
+
}
|
|
132
|
+
result.push(nodeId);
|
|
133
|
+
};
|
|
134
|
+
for (const nodeId of nodeSet)
|
|
135
|
+
visit(nodeId);
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Computes fingerprints for all upstream dependencies of a node.
|
|
140
|
+
*/
|
|
141
|
+
dependencyFingerprints(plan, nodeId, result) {
|
|
142
|
+
const deps = this.dependencyResolver.getDependencies(plan, nodeId);
|
|
143
|
+
const fingerprints = {};
|
|
144
|
+
for (const dep of deps) {
|
|
145
|
+
const node = plan.nodes.find((n) => n.id === dep);
|
|
146
|
+
if (node) {
|
|
147
|
+
const depResult = result.nodeResults[dep];
|
|
148
|
+
const inputs = depResult?.inputs ?? {};
|
|
149
|
+
const nestedDeps = this.dependencyFingerprints(plan, dep, result);
|
|
150
|
+
fingerprints[dep] = this.computeFingerprint(plan.workflow, node, inputs, nestedDeps);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return fingerprints;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Serializes a value with recursively sorted keys for stable hashing.
|
|
157
|
+
*/
|
|
158
|
+
stableSerialize(value) {
|
|
159
|
+
if (value === null || typeof value !== "object") {
|
|
160
|
+
return JSON.stringify(value);
|
|
161
|
+
}
|
|
162
|
+
if (Array.isArray(value)) {
|
|
163
|
+
return `[${value.map((v) => this.stableSerialize(v)).join(",")}]`;
|
|
164
|
+
}
|
|
165
|
+
const keys = Object.keys(value).sort();
|
|
166
|
+
const pairs = keys.map((k) => `${JSON.stringify(k)}:${this.stableSerialize(value[k])}`);
|
|
167
|
+
return `{${pairs.join(",")}}`;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Simple non-cryptographic hash for browser environments where
|
|
171
|
+
* `node:crypto` is unavailable. Produces a deterministic hex-like string
|
|
172
|
+
* from the input. This is NOT cryptographically secure but is sufficient
|
|
173
|
+
* for fingerprint-based cache keys.
|
|
174
|
+
*/
|
|
175
|
+
simpleHash(str) {
|
|
176
|
+
let hash = 0;
|
|
177
|
+
for (let i = 0; i < str.length; i++) {
|
|
178
|
+
const char = str.charCodeAt(i);
|
|
179
|
+
hash = (hash << 5) - hash + char;
|
|
180
|
+
hash |= 0;
|
|
181
|
+
}
|
|
182
|
+
return `fp_${Math.abs(hash).toString(16).padStart(8, "0")}_${str.length}`;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
void GRAPH_PINNING_METADATA_KEY;
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhQaW5uaW5nU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvcGlubmluZy9HcmFwaFBpbm5pbmdTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsMEJBQXFCO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx5Q0FBb0M7QUFHaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSx1Q0FBa0M7QUFlMUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ21CLEtBQXNCLEVBQ3RCLE1BQTBCLEVBQzFCLGtCQUFrRDtRQUZsRCxVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWdDO0lBQ2xFLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUE0QjtRQUN4QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBMEIsQ0FBQztRQUNoRCxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUM7UUFFaEUsTUFBTSxNQUFNLEdBQUcsbUJBQW1CO1lBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3pELENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTlCLDBCQUEwQjtRQUMxQixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENB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QUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3BCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBRSxLQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN6RSxDQUFDO1FBQ0YsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxVQUFVLENBQUMsR0FBVztRQUM1QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBRUQsS0FBSywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGlubmluZy9HcmFwaFBpbm5pbmdTZXJ2aWNlXG4gKiBAc3VtbWFyeSBTZXJ2aWNlIGZvciBwaW5uaW5nIGFuZCB1bnBpbm5pbmcgZ3JhcGggbm9kZSB2YWx1ZXMuXG4gKiBAZGVzY3JpcHRpb24gQ29tcHV0ZXMgc3RhYmxlIGZpbmdlcnByaW50cywgcGlucy91bnBpbnMgbm9kZXMgYW5kIHRoZWlyIHVwc3RyZWFtIGRlcGVuZGVuY2llcywgcmVhZHMgcGlubmVkIHZhbHVlcywgYW5kIGVtaXRzIHBpbm5pbmcgZXZlbnRzLiBQaW5uaW5nIGlzIGFsbC1vci1ub3RoaW5nOiBpZiBhbnkgdXBzdHJlYW0gZGVwZW5kZW5jeSBpcyBub3QgcGlubmFibGUsIHRoZSBvcGVyYXRpb24gZmFpbHMuXG4gKi9cbmltcG9ydCB7IEdSQVBIX1BJTk5JTkdfTUVUQURBVEFfS0VZIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgR3JhcGhQaW5uaW5nRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL0dyYXBoUGlubmluZ0Vycm9yXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbiB9IGZyb20gXCIuLi9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5cIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuTm9kZSB9IGZyb20gXCIuLi9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5Ob2RlXCI7XG5pbXBvcnQgeyBHcmFwaFRvcG9sb2d5IH0gZnJvbSBcIi4uL3BsYW5uaW5nL0dyYXBoVG9wb2xvZ3lcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhWYWx1ZVN0b3JlIH0gZnJvbSBcIi4uL3N0b3JlL0dyYXBoVmFsdWVTdG9yZVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaFZhbHVlS2V5IH0gZnJvbSBcIi4uL3N0b3JlL0dyYXBoVmFsdWVLZXlcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhDYWNoZWRWYWx1ZSB9IGZyb20gXCIuLi9zdG9yZS9HcmFwaENhY2hlZFZhbHVlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEdyYXBoRXhlY3V0aW9uUmVzdWx0LFxuICBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgR3JhcGhQaW5Ob2RlT3B0aW9ucyxcbiAgR3JhcGhVbnBpbk5vZGVPcHRpb25zLFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHR5cGUgeyBHcmFwaFBpbm5pbmdQb2xpY3kgfSBmcm9tIFwiLi9HcmFwaFBpbm5pbmdQb2xpY3lcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyIH0gZnJvbSBcIi4vR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyXCI7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1hbmFnZXMgcGlubmluZyBhbmQgdW5waW5uaW5nIG9mIGdyYXBoIG5vZGUgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhQaW5uaW5nU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IEdyYXBoVmFsdWVTdG9yZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvbGljeTogR3JhcGhQaW5uaW5nUG9saWN5LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kZW5jeVJlc29sdmVyOiBHcmFwaFBpbm5pbmdEZXBlbmRlbmN5UmVzb2x2ZXJcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBQaW5zIGEgbm9kZSBhbmQgYWxsIGl0cyB1cHN0cmVhbSBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIEB0aHJvd3Mge0dyYXBoUGlubmluZ0Vycm9yfSB3aGVuIHRoZSBub2RlIG9yIGFueSBkZXBlbmRlbmN5IGlzIG5vdCBwaW5uYWJsZS5cbiAgICovXG4gIGFzeW5jIHBpbk5vZGUob3B0aW9uczogR3JhcGhQaW5Ob2RlT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBsYW4gPSBvcHRpb25zLnBsYW4gYXMgR3JhcGhFeGVjdXRpb25QbGFuO1xuICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBvcHRpb25zLmluY2x1ZGVEZXBlbmRlbmNpZXMgPz8gdHJ1ZTtcblxuICAgIGNvbnN0IHBpblNldCA9IGluY2x1ZGVEZXBlbmRlbmNpZXNcbiAgICAgID8gdGhpcy5kZXBlbmRlbmN5UmVzb2x2ZXIuZ2V0UGluU2V0KHBsYW4sIG9wdGlvbnMubm9kZUlkKVxuICAgICAgOiBuZXcgU2V0KFtvcHRpb25zLm5vZGVJZF0pO1xuXG4gICAgLy8gVmFsaWRhdGUgYWxsLW9yLW5vdGhpbmdcbiAgICBmb3IgKGNvbnN0IG5vZGVJZCBvZiBwaW5TZXQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwbGFuLm5vZGVzLmZpbmQoKG4pID0+IG4uaWQgPT09IG5vZGVJZCk7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoUGlubmluZ0Vycm9yKGBOb2RlICcke25vZGVJZH0nIG5vdCBmb3VuZCBpbiBwbGFuYCk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMucG9saWN5LmNhblBpbihub2RlKSkge1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhQaW5uaW5nRXJyb3IoXG4gICAgICAgICAgYE5vZGUgJyR7bm9kZUlkfScgaXMgbm90IHBpbm5hYmxlYCxcbiAgICAgICAgICB7IG5vZGVJZCB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUGluIGRlcGVuZGVuY2llcyBmaXJzdCwgdGhlbiB0aGUgc2VsZWN0ZWQgbm9kZVxuICAgIGNvbnN0IG9yZGVyZWQgPSB0aGlzLnRvcG9sb2dpY2FsT3JkZXIocGxhbiwgcGluU2V0KTtcbiAgICBmb3IgKGNvbnN0IG5vZGVJZCBvZiBvcmRlcmVkKSB7XG4gICAgICBjb25zdCBub2RlID0gcGxhbi5ub2Rlcy5maW5kKChuKSA9PiBuLmlkID09PSBub2RlSWQpITtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdGlvbnMucmVzdWx0Lm5vZGVSZXN1bHRzW25vZGVJZF07XG4gICAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0Lm91dHB1dHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoUGlubmluZ0Vycm9yKFxuICAgICAgICAgIGBOb2RlICcke25vZGVJZH0nIGhhcyBubyBjb21wbGV0ZWQgb3V0cHV0IHRvIHBpbmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlucHV0cyA9IHJlc3VsdC5pbnB1dHMgPz8ge307XG4gICAgICBjb25zdCBkZXBGaW5nZXJwcmludHMgPSB0aGlzLmRlcGVuZGVuY3lGaW5nZXJwcmludHMocGxhbiwgbm9kZUlkLCBvcHRpb25zLnJlc3VsdCk7XG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmNyZWF0ZVZhbHVlS2V5KG9wdGlvbnMud29ya2Zsb3csIG5vZGUsIGlucHV0cywgZGVwRmluZ2VycHJpbnRzLCBvcHRpb25zLm5hbWVzcGFjZSk7XG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICBjb25zdCBjYWNoZWQ6IEdyYXBoQ2FjaGVkVmFsdWUgPSB7XG4gICAgICAgIGtleSxcbiAgICAgICAgb3V0cHV0czogcmVzdWx0Lm91dHB1dHMsXG4gICAgICAgIHBpbm5lZDogdHJ1ZSxcbiAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgICBtZXRhZGF0YTogeyAuLi5vcHRpb25zLnJlc3VsdC5tZXRhZGF0YSwgbm9kZUlkIH0sXG4gICAgICB9O1xuICAgICAgYXdhaXQgdGhpcy5zdG9yZS53cml0ZUNhY2hlZChrZXksIGNhY2hlZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVucGlucyBhIHNpbmdsZSBub2RlIChkb2VzIG5vdCB1bnBpbiBkZXBlbmRlbnRzIGluIHYxKS5cbiAgICovXG4gIGFzeW5jIHVucGluTm9kZShvcHRpb25zOiBHcmFwaFVucGluTm9kZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBrZXk6IEdyYXBoVmFsdWVLZXkgPSB7XG4gICAgICB3b3JrZmxvd0lkOiBvcHRpb25zLndvcmtmbG93Lm5hbWUsXG4gICAgICBub2RlSWQ6IG9wdGlvbnMubm9kZUlkLFxuICAgICAgZmluZ2VycHJpbnQ6IG9wdGlvbnMuZmluZ2VycHJpbnQsXG4gICAgICBuYW1lc3BhY2U6IG9wdGlvbnMubmFtZXNwYWNlLFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5zdG9yZS5kZWxldGVDYWNoZWQoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhIHBpbm5lZCB2YWx1ZSBmb3IgYSBub2RlLCByZXR1cm5pbmcgYHVuZGVmaW5lZGAgd2hlbiBubyB2YWxpZFxuICAgKiBwaW5uZWQgdmFsdWUgZXhpc3RzLlxuICAgKi9cbiAgYXN5bmMgcmVhZFBpbm5lZFZhbHVlKFxuICAgIHdvcmtmbG93OiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbixcbiAgICBub2RlOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlLFxuICAgIGlucHV0czogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgZGVwZW5kZW5jeUZpbmdlcnByaW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBuYW1lc3BhY2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxHcmFwaENhY2hlZFZhbHVlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5jcmVhdGVWYWx1ZUtleSh3b3JrZmxvdywgbm9kZSwgaW5wdXRzLCBkZXBlbmRlbmN5RmluZ2VycHJpbnRzLCBuYW1lc3BhY2UpO1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMuc3RvcmUucmVhZENhY2hlZChrZXkpO1xuICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLnBpbm5lZCkge1xuICAgICAgaWYgKGNhY2hlZC5leHBpcmVzQXQgJiYgbmV3IERhdGUoY2FjaGVkLmV4cGlyZXNBdCkgPCBuZXcgRGF0ZSgpKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FjaGVkO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdGFibGUgdmFsdWUga2V5IGZvciBhIG5vZGUuXG4gICAqL1xuICBjcmVhdGVWYWx1ZUtleShcbiAgICB3b3JrZmxvdzogR3JhcGhXb3JrZmxvd0RlZmluaXRpb24sXG4gICAgbm9kZTogR3JhcGhFeGVjdXRpb25QbGFuTm9kZSxcbiAgICBpbnB1dHM6IEdyYXBoRXhlY3V0aW9uVmFsdWVzLFxuICAgIGRlcGVuZGVuY3lGaW5nZXJwcmludHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgbmFtZXNwYWNlPzogc3RyaW5nXG4gICk6IEdyYXBoVmFsdWVLZXkge1xuICAgIHJldHVybiB7XG4gICAgICB3b3JrZmxvd0lkOiB3b3JrZmxvdy5uYW1lLFxuICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgZmluZ2VycHJpbnQ6IHRoaXMuY29tcHV0ZUZpbmdlcnByaW50KHdvcmtmbG93LCBub2RlLCBpbnB1dHMsIGRlcGVuZGVuY3lGaW5nZXJwcmludHMpLFxuICAgICAgbmFtZXNwYWNlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYSBzdGFibGUgZmluZ2VycHJpbnQgZm9yIGEgbm9kZSdzIGlucHV0cyBhbmQgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgY29tcHV0ZUZpbmdlcnByaW50KFxuICAgIHdvcmtmbG93OiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbixcbiAgICBub2RlOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlLFxuICAgIGlucHV0czogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgZGVwZW5kZW5jeUZpbmdlcnByaW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICB3b3JrZmxvd0lkOiB3b3JrZmxvdy5uYW1lLFxuICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgbm9kZUtpbmQ6IG5vZGUua2luZCxcbiAgICAgIG5vZGVEZWZpbml0aW9uVmVyc2lvbjogKG5vZGUuZGVmaW5pdGlvbiBhcyBhbnkpPy5ncmFwaD8ubWV0YWRhdGE/LnZlcnNpb24sXG4gICAgICBpbnB1dHM6IHRoaXMuc3RhYmxlU2VyaWFsaXplKGlucHV0cyksXG4gICAgICBkZXBlbmRlbmN5RmluZ2VycHJpbnRzOiB0aGlzLnN0YWJsZVNlcmlhbGl6ZShkZXBlbmRlbmN5RmluZ2VycHJpbnRzKSxcbiAgICB9O1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLnN0YWJsZVNlcmlhbGl6ZShkYXRhKTtcbiAgICAvLyBVc2UgYSBkZXRlcm1pbmlzdGljIG5vbi1jcnlwdG9ncmFwaGljIGhhc2ggdGhhdCB3b3JrcyBpbiBib3RoIGJyb3dzZXJcbiAgICAvLyBhbmQgTm9kZSBlbnZpcm9ubWVudHMgd2l0aG91dCByZXF1aXJpbmcgYG5vZGU6Y3J5cHRvYC5cbiAgICByZXR1cm4gdGhpcy5zaW1wbGVIYXNoKGpzb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB0b3BvbG9naWNhbCBvcmRlcmluZyBvZiB0aGUgZ2l2ZW4gbm9kZSBzZXQuXG4gICAqL1xuICBwcml2YXRlIHRvcG9sb2dpY2FsT3JkZXIoXG4gICAgcGxhbjogR3JhcGhFeGVjdXRpb25QbGFuLFxuICAgIG5vZGVTZXQ6IFNldDxzdHJpbmc+XG4gICk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHZpc2l0ID0gKG5vZGVJZDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAodmlzaXRlZC5oYXMobm9kZUlkKSkgcmV0dXJuO1xuICAgICAgdmlzaXRlZC5hZGQobm9kZUlkKTtcbiAgICAgIGNvbnN0IGRlcHMgPSBHcmFwaFRvcG9sb2d5LnVwc3RyZWFtTm9kZXMobm9kZUlkLCBwbGFuLmluY29taW5nQnlOb2RlLCBmYWxzZSk7XG4gICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XG4gICAgICAgIGlmIChub2RlU2V0LmhhcyhkZXApKSB2aXNpdChkZXApO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2gobm9kZUlkKTtcbiAgICB9O1xuICAgIGZvciAoY29uc3Qgbm9kZUlkIG9mIG5vZGVTZXQpIHZpc2l0KG5vZGVJZCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBmaW5nZXJwcmludHMgZm9yIGFsbCB1cHN0cmVhbSBkZXBlbmRlbmNpZXMgb2YgYSBub2RlLlxuICAgKi9cbiAgcHJpdmF0ZSBkZXBlbmRlbmN5RmluZ2VycHJpbnRzKFxuICAgIHBsYW46IEdyYXBoRXhlY3V0aW9uUGxhbixcbiAgICBub2RlSWQ6IHN0cmluZyxcbiAgICByZXN1bHQ6IEdyYXBoRXhlY3V0aW9uUmVzdWx0XG4gICk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IGRlcHMgPSB0aGlzLmRlcGVuZGVuY3lSZXNvbHZlci5nZXREZXBlbmRlbmNpZXMocGxhbiwgbm9kZUlkKTtcbiAgICBjb25zdCBmaW5nZXJwcmludHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XG4gICAgICBjb25zdCBub2RlID0gcGxhbi5ub2Rlcy5maW5kKChuKSA9PiBuLmlkID09PSBkZXApO1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgY29uc3QgZGVwUmVzdWx0ID0gcmVzdWx0Lm5vZGVSZXN1bHRzW2RlcF07XG4gICAgICAgIGNvbnN0IGlucHV0cyA9IGRlcFJlc3VsdD8uaW5wdXRzID8/IHt9O1xuICAgICAgICBjb25zdCBuZXN0ZWREZXBzID0gdGhpcy5kZXBlbmRlbmN5RmluZ2VycHJpbnRzKHBsYW4sIGRlcCwgcmVzdWx0KTtcbiAgICAgICAgZmluZ2VycHJpbnRzW2RlcF0gPSB0aGlzLmNvbXB1dGVGaW5nZXJwcmludChwbGFuLndvcmtmbG93LCBub2RlLCBpbnB1dHMsIG5lc3RlZERlcHMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmluZ2VycHJpbnRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgYSB2YWx1ZSB3aXRoIHJlY3Vyc2l2ZWx5IHNvcnRlZCBrZXlzIGZvciBzdGFibGUgaGFzaGluZy5cbiAgICovXG4gIHByaXZhdGUgc3RhYmxlU2VyaWFsaXplKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBgWyR7dmFsdWUubWFwKCh2KSA9PiB0aGlzLnN0YWJsZVNlcmlhbGl6ZSh2KSkuam9pbihcIixcIil9XWA7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSkuc29ydCgpO1xuICAgIGNvbnN0IHBhaXJzID0ga2V5cy5tYXAoXG4gICAgICAoaykgPT4gYCR7SlNPTi5zdHJpbmdpZnkoayl9OiR7dGhpcy5zdGFibGVTZXJpYWxpemUoKHZhbHVlIGFzIGFueSlba10pfWBcbiAgICApO1xuICAgIHJldHVybiBgeyR7cGFpcnMuam9pbihcIixcIil9fWA7XG4gIH1cblxuICAvKipcbiAgICogU2ltcGxlIG5vbi1jcnlwdG9ncmFwaGljIGhhc2ggZm9yIGJyb3dzZXIgZW52aXJvbm1lbnRzIHdoZXJlXG4gICAqIGBub2RlOmNyeXB0b2AgaXMgdW5hdmFpbGFibGUuIFByb2R1Y2VzIGEgZGV0ZXJtaW5pc3RpYyBoZXgtbGlrZSBzdHJpbmdcbiAgICogZnJvbSB0aGUgaW5wdXQuIFRoaXMgaXMgTk9UIGNyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBidXQgaXMgc3VmZmljaWVudFxuICAgKiBmb3IgZmluZ2VycHJpbnQtYmFzZWQgY2FjaGUga2V5cy5cbiAgICovXG4gIHByaXZhdGUgc2ltcGxlSGFzaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGhhc2ggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgICAgIGhhc2ggfD0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGBmcF8ke01hdGguYWJzKGhhc2gpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBcIjBcIil9XyR7c3RyLmxlbmd0aH1gO1xuICB9XG59XG5cbnZvaWQgR1JBUEhfUElOTklOR19NRVRBREFUQV9LRVk7XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/pinning
|
|
3
|
+
* @summary Graph pinning subsystem.
|
|
4
|
+
* @description Re-exports the pinning metadata, policy, dependency resolver, and service.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./GraphPinningMetadata.js";
|
|
7
|
+
export * from "./GraphPinningPolicy.js";
|
|
8
|
+
export * from "./GraphPinningDependencyResolver.js";
|
|
9
|
+
export * from "./GraphPinningService.js";
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL3Bpbm5pbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILDBDQUF1QztBQUN2Qyx3Q0FBcUM7QUFDckMsb0RBQWlEO0FBQ2pELHlDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGlubmluZ1xuICogQHN1bW1hcnkgR3JhcGggcGlubmluZyBzdWJzeXN0ZW0uXG4gKiBAZGVzY3JpcHRpb24gUmUtZXhwb3J0cyB0aGUgcGlubmluZyBtZXRhZGF0YSwgcG9saWN5LCBkZXBlbmRlbmN5IHJlc29sdmVyLCBhbmQgc2VydmljZS5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhQaW5uaW5nTWV0YWRhdGFcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoUGlubmluZ1BvbGljeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhQaW5uaW5nRGVwZW5kZW5jeVJlc29sdmVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaFBpbm5pbmdTZXJ2aWNlXCI7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL2VuZ2luZS9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuXG4gKiBAc3VtbWFyeSBUaGUgY29tcGxldGUgZXhlY3V0aW9uIHBsYW4gZm9yIGEgd29ya2Zsb3cuXG4gKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgcmVzb2x2ZWQgbm9kZXMsIGVkZ2VzLCB0b3BvbG9naWNhbCBsYXllcnMsIGFuZCBpbmNvbWluZy9vdXRnb2luZyBtYXBzLlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblBsYW5Ob2RlXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbkVkZ2UgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblBsYW5FZGdlXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbkxheWVyIH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXJcIjtcblxuLyoqXG4gKiBUaGUgcmVzb2x2ZWQgZXhlY3V0aW9uIHBsYW4gZm9yIGEgc2luZ2xlIHdvcmtmbG93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoRXhlY3V0aW9uUGxhbiB7XG4gIHdvcmtmbG93OiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbjtcbiAgd29ya2Zsb3dJZDogc3RyaW5nO1xuICBub2RlczogR3JhcGhFeGVjdXRpb25QbGFuTm9kZVtdO1xuICBlZGdlczogR3JhcGhFeGVjdXRpb25QbGFuRWRnZVtdO1xuICBsYXllcnM6IEdyYXBoRXhlY3V0aW9uUGxhbkxheWVyW107XG4gIGluY29taW5nQnlOb2RlOiBNYXA8c3RyaW5nLCBHcmFwaEV4ZWN1dGlvblBsYW5FZGdlW10+O1xuICBvdXRnb2luZ0J5Tm9kZTogTWFwPHN0cmluZywgR3JhcGhFeGVjdXRpb25QbGFuRWRnZVtdPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/planning/GraphExecutionPlanEdge
|
|
3
|
+
* @summary Plan edge type for the execution plan.
|
|
4
|
+
* @description Represents a directed value route between two endpoints (node-to-node or node-to-workflow-boundary).
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuRWRnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuRWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5FZGdlXG4gKiBAc3VtbWFyeSBQbGFuIGVkZ2UgdHlwZSBmb3IgdGhlIGV4ZWN1dGlvbiBwbGFuLlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBkaXJlY3RlZCB2YWx1ZSByb3V0ZSBiZXR3ZWVuIHR3byBlbmRwb2ludHMgKG5vZGUtdG8tbm9kZSBvciBub2RlLXRvLXdvcmtmbG93LWJvdW5kYXJ5KS5cbiAqL1xuXG4vKipcbiAqIEFuIGVkZ2UgaW4gdGhlIGV4ZWN1dGlvbiBwbGFuIHJlcHJlc2VudGluZyBhIHZhbHVlIHJvdXRlIGZyb20gYSBzb3VyY2VcbiAqIHBvcnQgdG8gYSB0YXJnZXQgcG9ydC5cbiAqXG4gKiBgc291cmNlTm9kZUlkYCBvciBgdGFyZ2V0Tm9kZUlkYCBtYXkgYmUge0BsaW5rIEdSQVBIX1dPUktGTE9XX0JPVU5EQVJZfSB3aGVuXG4gKiB0aGUgZWRnZSBjb25uZWN0cyB0byB0aGUgd29ya2Zsb3cgYm91bmRhcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFeGVjdXRpb25QbGFuRWRnZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNvdXJjZU5vZGVJZDogc3RyaW5nO1xuICBzb3VyY2VQb3J0OiBzdHJpbmc7XG4gIHRhcmdldE5vZGVJZDogc3RyaW5nO1xuICB0YXJnZXRQb3J0OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbkxheWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbkxheWVyXG4gKiBAc3VtbWFyeSBBIGxheWVyIG9mIG5vZGVzIHRoYXQgY2FuIGV4ZWN1dGUgaW4gcGFyYWxsZWwuXG4gKiBAZGVzY3JpcHRpb24gUHJvZHVjZWQgYnkgdGhlIHRvcG9sb2dpY2FsIHBsYW5uZXI7IGFsbCBub2RlcyBpbiBhIGxheWVyIGhhdmUgbm8gZGVwZW5kZW5jaWVzIG9uIGVhY2ggb3RoZXIuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuTm9kZSB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUGxhbk5vZGVcIjtcblxuLyoqXG4gKiBBIHRvcG9sb2dpY2FsIGxheWVyIG9mIG5vZGVzIHRoYXQgbWF5IGV4ZWN1dGUgaW4gcGFyYWxsZWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXIge1xuICBpbmRleDogbnVtYmVyO1xuICBub2RlczogR3JhcGhFeGVjdXRpb25QbGFuTm9kZVtdO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFuTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncmFwaC9lbmdpbmUvcGxhbm5pbmcvR3JhcGhFeGVjdXRpb25QbGFuTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9wbGFubmluZy9HcmFwaEV4ZWN1dGlvblBsYW5Ob2RlXG4gKiBAc3VtbWFyeSBQbGFuIG5vZGUgdHlwZSBmb3IgdGhlIGV4ZWN1dGlvbiBwbGFuLlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBzaW5nbGUgbm9kZSByZXNvbHZlZCBmcm9tIGEgd29ya2Zsb3cgZGVmaW5pdGlvbiwgcmVhZHkgZm9yIGV4ZWN1dGlvbi5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBHcmFwaE5vZGVEZWZpbml0aW9uLFxuICBHcmFwaFdvcmtmbG93Tm9kZU1ldGFkYXRhLFxufSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuLyoqXG4gKiBBIG5vZGUgaW4gdGhlIGV4ZWN1dGlvbiBwbGFuLCBkZXJpdmVkIGZyb20gYSB3b3JrZmxvdydzIG5vZGUgbWV0YWRhdGEgYW5kXG4gKiBpdHMgcmVzb2x2ZWQgZ3JhcGggZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlIHtcbiAgaWQ6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgc291cmNlOiBHcmFwaFdvcmtmbG93Tm9kZU1ldGFkYXRhO1xuICBkZWZpbml0aW9uOiBHcmFwaE5vZGVEZWZpbml0aW9uO1xuICBpbnB1dFBvcnRzOiBzdHJpbmdbXTtcbiAgb3V0cHV0UG9ydHM6IHN0cmluZ1tdO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuIl19
|