@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
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { GraphExecutionError } from "./../errors/GraphExecutionError.js";
|
|
2
|
-
import { ConditionExpressionEvaluator } from "./../loops/ConditionExpressionEvaluator.js";
|
|
3
|
-
/**
|
|
4
|
-
* Reads the Switch metadata from the node definition's graph metadata.
|
|
5
|
-
*/
|
|
6
|
-
function readSwitchMetadata(context) {
|
|
7
|
-
const meta = context.node.graph?.metadata;
|
|
8
|
-
if (!meta)
|
|
9
|
-
return { cases: [], defaultPort: "default" };
|
|
10
|
-
const switchMeta = meta["switch"];
|
|
11
|
-
if (!switchMeta || !Array.isArray(switchMeta.cases)) {
|
|
12
|
-
return { cases: [], defaultPort: "default" };
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
cases: switchMeta.cases,
|
|
16
|
-
defaultPort: switchMeta.defaultPort ?? "default",
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Detects whether a condition is a `CodeCondition` (has `type: "code"`).
|
|
21
|
-
*/
|
|
22
|
-
function isCodeCondition(cond) {
|
|
23
|
-
return (typeof cond === "object" &&
|
|
24
|
-
cond !== null &&
|
|
25
|
-
"type" in cond &&
|
|
26
|
-
cond.type === "code");
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Detects whether a condition is a `ConditionExpression` (has `op` field).
|
|
30
|
-
*/
|
|
31
|
-
function isConditionExpression(cond) {
|
|
32
|
-
return (typeof cond === "object" &&
|
|
33
|
-
cond !== null &&
|
|
34
|
-
"op" in cond &&
|
|
35
|
-
typeof cond.op === "string");
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Executor for `core.flow.switch` nodes.
|
|
39
|
-
*
|
|
40
|
-
* Evaluates each case's condition in order and routes the input to the
|
|
41
|
-
* first matching case's output port. When no case matches, routes to the
|
|
42
|
-
* `default` output port.
|
|
43
|
-
*
|
|
44
|
-
* Condition evaluation:
|
|
45
|
-
* - `ConditionExpression` — evaluated via {@link ConditionExpressionEvaluator}.
|
|
46
|
-
* - `CodeCondition` — evaluated via the pluggable {@link CodeSandboxEvaluator}
|
|
47
|
-
* from the engine's config. Throws `GRAPH_CODE_SANDBOX_NOT_CONFIGURED`
|
|
48
|
-
* when no evaluator is registered.
|
|
49
|
-
*/
|
|
50
|
-
export class SwitchGraphNodeExecutor {
|
|
51
|
-
constructor(engine) {
|
|
52
|
-
this.engine = engine;
|
|
53
|
-
this.expressionEvaluator = new ConditionExpressionEvaluator();
|
|
54
|
-
}
|
|
55
|
-
async execute(input, context) {
|
|
56
|
-
const meta = readSwitchMetadata(context);
|
|
57
|
-
const inputValue = input["value"] ?? input;
|
|
58
|
-
for (const switchCase of meta.cases) {
|
|
59
|
-
const matches = await this.evaluateCondition(switchCase.condition, inputValue, input, context);
|
|
60
|
-
if (matches) {
|
|
61
|
-
return { [switchCase.outputPort]: inputValue };
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
const defaultPort = meta.defaultPort ?? "default";
|
|
65
|
-
return { [defaultPort]: inputValue };
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Evaluates a single switch case condition.
|
|
69
|
-
*/
|
|
70
|
-
async evaluateCondition(condition, inputValue, fullInput, context) {
|
|
71
|
-
if (isCodeCondition(condition)) {
|
|
72
|
-
return this.evaluateCodeCondition(condition, fullInput, context);
|
|
73
|
-
}
|
|
74
|
-
if (isConditionExpression(condition)) {
|
|
75
|
-
return this.expressionEvaluator.evaluate(condition, inputValue);
|
|
76
|
-
}
|
|
77
|
-
throw new GraphExecutionError("Unknown switch case condition type — must be ConditionExpression (op) or CodeCondition (type: 'code')", "GRAPH_UNKNOWN_SWITCH_CONDITION", { condition });
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Evaluates a code condition via the pluggable sandbox evaluator.
|
|
81
|
-
*/
|
|
82
|
-
async evaluateCodeCondition(condition, input, context) {
|
|
83
|
-
const evaluator = this.engine?.codeSandboxEvaluator;
|
|
84
|
-
if (!evaluator) {
|
|
85
|
-
throw new GraphExecutionError("Code conditions require a CodeSandboxEvaluator to be registered in GraphExecutionEngineConfig.codeSandboxEvaluator", "GRAPH_CODE_SANDBOX_NOT_CONFIGURED", { code: condition.code });
|
|
86
|
-
}
|
|
87
|
-
await context.log(`Evaluating code condition`, {
|
|
88
|
-
language: condition.language ?? "javascript",
|
|
89
|
-
});
|
|
90
|
-
const result = await evaluator.evaluate({
|
|
91
|
-
code: condition.code,
|
|
92
|
-
language: condition.language,
|
|
93
|
-
input,
|
|
94
|
-
});
|
|
95
|
-
return !!result;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZXhlY3V0aW9uL1N3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMkNBQXNDO0FBQ3BFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxtREFBOEM7QUFHckY7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUN6QixPQUE4QjtJQUU5QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUVwQixDQUFDO0lBQ2QsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDeEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBbUMsQ0FBQztJQUNwRSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUNELE9BQU87UUFDTCxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7UUFDdkIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXLElBQUksU0FBUztLQUNqRCxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxlQUFlLENBQUMsSUFBeUI7SUFDaEQsT0FBTyxDQUNMLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDeEIsSUFBSSxLQUFLLElBQUk7UUFDYixNQUFNLElBQUksSUFBSTtRQUNkLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FB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bGUgaW50ZWdyYXRpb25zL2dyYXBoL2V4ZWN1dGlvbi9Td2l0Y2hHcmFwaE5vZGVFeGVjdXRvclxuICogQHN1bW1hcnkgRXhlY3V0b3IgZm9yIHRoZSBTd2l0Y2ggZmxvdy1jb250cm9sIG5vZGUgKERFQ0FGLTMyIMKnMjIuMi4yKS5cbiAqIEBkZXNjcmlwdGlvbiBFdmFsdWF0ZXMgZWFjaCBjYXNlJ3MgY29uZGl0aW9uIGFnYWluc3QgdGhlIG5vZGUncyBpbnB1dCBhbmRcbiAqIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlIGZpcnN0IG1hdGNoaW5nIGNhc2UncyBvdXRwdXQgcG9ydC4gRmFsbHMgYmFjayB0b1xuICogdGhlIGBkZWZhdWx0YCBvdXRwdXQgd2hlbiBubyBjYXNlIG1hdGNoZXMuIFN1cHBvcnRzIGJvdGhcbiAqIHtAbGluayBDb25kaXRpb25FeHByZXNzaW9ufSAoZ3JhcGhpY2FsIG1vZGUpIGFuZCB7QGxpbmsgQ29kZUNvbmRpdGlvbn1cbiAqIChjb2RlIG1vZGUgdmlhIHRoZSBwbHVnZ2FibGUge0BsaW5rIENvZGVTYW5kYm94RXZhbHVhdG9yfSkuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRXhlY3V0b3IgfSBmcm9tIFwiLi9HcmFwaE5vZGVFeGVjdXRvclwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvbkNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcbiAgR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gIFN3aXRjaENhc2VDb25kaXRpb24sXG4gIFN3aXRjaE5vZGVNZXRhZGF0YSxcbiAgQ29uZGl0aW9uRXhwcmVzc2lvbixcbiAgQ29kZUNvbmRpdGlvbixcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaEV4ZWN1dGlvbkVycm9yXCI7XG5pbXBvcnQgeyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yIH0gZnJvbSBcIi4uL2xvb3BzL0NvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3JcIjtcbmltcG9ydCB0eXBlIHsgQ29kZVNhbmRib3hFdmFsdWF0b3IgfSBmcm9tIFwiLi9Db2RlU2FuZGJveEV2YWx1YXRvclwiO1xuXG4vKipcbiAqIFJlYWRzIHRoZSBTd2l0Y2ggbWV0YWRhdGEgZnJvbSB0aGUgbm9kZSBkZWZpbml0aW9uJ3MgZ3JhcGggbWV0YWRhdGEuXG4gKi9cbmZ1bmN0aW9uIHJlYWRTd2l0Y2hNZXRhZGF0YShcbiAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4pOiBTd2l0Y2hOb2RlTWV0YWRhdGEge1xuICBjb25zdCBtZXRhID0gY29udGV4dC5ub2RlLmdyYXBoPy5tZXRhZGF0YSBhc1xuICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB8IHVuZGVmaW5lZDtcbiAgaWYgKCFtZXRhKSByZXR1cm4geyBjYXNlczogW10sIGRlZmF1bHRQb3J0OiBcImRlZmF1bHRcIiB9O1xuICBjb25zdCBzd2l0Y2hNZXRhID0gbWV0YVtcInN3aXRjaFwiXSBhcyBTd2l0Y2hOb2RlTWV0YWRhdGEgfCB1bmRlZmluZWQ7XG4gIGlmICghc3dpdGNoTWV0YSB8fCAhQXJyYXkuaXNBcnJheShzd2l0Y2hNZXRhLmNhc2VzKSkge1xuICAgIHJldHVybiB7IGNhc2VzOiBbXSwgZGVmYXVsdFBvcnQ6IFwiZGVmYXVsdFwiIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjYXNlczogc3dpdGNoTWV0YS5jYXNlcyxcbiAgICBkZWZhdWx0UG9ydDogc3dpdGNoTWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIixcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgYSBjb25kaXRpb24gaXMgYSBgQ29kZUNvbmRpdGlvbmAgKGhhcyBgdHlwZTogXCJjb2RlXCJgKS5cbiAqL1xuZnVuY3Rpb24gaXNDb2RlQ29uZGl0aW9uKGNvbmQ6IFN3aXRjaENhc2VDb25kaXRpb24pOiBjb25kIGlzIENvZGVDb25kaXRpb24ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBjb25kID09PSBcIm9iamVjdFwiICYmXG4gICAgY29uZCAhPT0gbnVsbCAmJlxuICAgIFwidHlwZVwiIGluIGNvbmQgJiZcbiAgICBjb25kLnR5cGUgPT09IFwiY29kZVwiXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZWN0cyB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIGEgYENvbmRpdGlvbkV4cHJlc3Npb25gIChoYXMgYG9wYCBmaWVsZCkuXG4gKi9cbmZ1bmN0aW9uIGlzQ29uZGl0aW9uRXhwcmVzc2lvbihcbiAgY29uZDogU3dpdGNoQ2FzZUNvbmRpdGlvblxuKTogY29uZCBpcyBDb25kaXRpb25FeHByZXNzaW9uIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgY29uZCA9PT0gXCJvYmplY3RcIiAmJlxuICAgIGNvbmQgIT09IG51bGwgJiZcbiAgICBcIm9wXCIgaW4gY29uZCAmJlxuICAgIHR5cGVvZiBjb25kLm9wID09PSBcInN0cmluZ1wiXG4gICk7XG59XG5cbi8qKlxuICogRXhlY3V0b3IgZm9yIGBjb3JlLmZsb3cuc3dpdGNoYCBub2Rlcy5cbiAqXG4gKiBFdmFsdWF0ZXMgZWFjaCBjYXNlJ3MgY29uZGl0aW9uIGluIG9yZGVyIGFuZCByb3V0ZXMgdGhlIGlucHV0IHRvIHRoZVxuICogZmlyc3QgbWF0Y2hpbmcgY2FzZSdzIG91dHB1dCBwb3J0LiBXaGVuIG5vIGNhc2UgbWF0Y2hlcywgcm91dGVzIHRvIHRoZVxuICogYGRlZmF1bHRgIG91dHB1dCBwb3J0LlxuICpcbiAqIENvbmRpdGlvbiBldmFsdWF0aW9uOlxuICogLSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAg4oCUIGV2YWx1YXRlZCB2aWEge0BsaW5rIENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3J9LlxuICogLSBgQ29kZUNvbmRpdGlvbmAg4oCUIGV2YWx1YXRlZCB2aWEgdGhlIHBsdWdnYWJsZSB7QGxpbmsgQ29kZVNhbmRib3hFdmFsdWF0b3J9XG4gKiAgIGZyb20gdGhlIGVuZ2luZSdzIGNvbmZpZy4gVGhyb3dzIGBHUkFQSF9DT0RFX1NBTkRCT1hfTk9UX0NPTkZJR1VSRURgXG4gKiAgIHdoZW4gbm8gZXZhbHVhdG9yIGlzIHJlZ2lzdGVyZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTd2l0Y2hHcmFwaE5vZGVFeGVjdXRvciBpbXBsZW1lbnRzIEdyYXBoTm9kZUV4ZWN1dG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBleHByZXNzaW9uRXZhbHVhdG9yID0gbmV3IENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3IoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuZ2luZT86IHsgY29kZVNhbmRib3hFdmFsdWF0b3I/OiBDb2RlU2FuZGJveEV2YWx1YXRvciB9XG4gICkge31cblxuICBhc3luYyBleGVjdXRlKFxuICAgIGlucHV0OiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgICBjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHRcbiAgKTogUHJvbWlzZTxHcmFwaEV4ZWN1dGlvblZhbHVlcz4ge1xuICAgIGNvbnN0IG1ldGEgPSByZWFkU3dpdGNoTWV0YWRhdGEoY29udGV4dCk7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IGlucHV0W1widmFsdWVcIl0gPz8gaW5wdXQ7XG5cbiAgICBmb3IgKGNvbnN0IHN3aXRjaENhc2Ugb2YgbWV0YS5jYXNlcykge1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGF3YWl0IHRoaXMuZXZhbHVhdGVDb25kaXRpb24oXG4gICAgICAgIHN3aXRjaENhc2UuY29uZGl0aW9uLFxuICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgY29udGV4dFxuICAgICAgKTtcbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB7IFtzd2l0Y2hDYXNlLm91dHB1dFBvcnRdOiBpbnB1dFZhbHVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFBvcnQgPSBtZXRhLmRlZmF1bHRQb3J0ID8/IFwiZGVmYXVsdFwiO1xuICAgIHJldHVybiB7IFtkZWZhdWx0UG9ydF06IGlucHV0VmFsdWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgYSBzaW5nbGUgc3dpdGNoIGNhc2UgY29uZGl0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBldmFsdWF0ZUNvbmRpdGlvbihcbiAgICBjb25kaXRpb246IFN3aXRjaENhc2VDb25kaXRpb24sXG4gICAgaW5wdXRWYWx1ZTogdW5rbm93bixcbiAgICBmdWxsSW5wdXQ6IEdyYXBoRXhlY3V0aW9uVmFsdWVzLFxuICAgIGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoaXNDb2RlQ29uZGl0aW9uKGNvbmRpdGlvbikpIHtcbiAgICAgIHJldHVybiB0aGlzLmV2YWx1YXRlQ29kZUNvbmRpdGlvbihjb25kaXRpb24sIGZ1bGxJbnB1dCwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ29uZGl0aW9uRXhwcmVzc2lvbihjb25kaXRpb24pKSB7XG4gICAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmV2YWx1YXRlKGNvbmRpdGlvbiwgaW5wdXRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICBcIlVua25vd24gc3dpdGNoIGNhc2UgY29uZGl0aW9uIHR5cGUg4oCUIG11c3QgYmUgQ29uZGl0aW9uRXhwcmVzc2lvbiAob3ApIG9yIENvZGVDb25kaXRpb24gKHR5cGU6ICdjb2RlJylcIixcbiAgICAgIFwiR1JBUEhfVU5LTk9XTl9TV0lUQ0hfQ09ORElUSU9OXCIsXG4gICAgICB7IGNvbmRpdGlvbiB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgYSBjb2RlIGNvbmRpdGlvbiB2aWEgdGhlIHBsdWdnYWJsZSBzYW5kYm94IGV2YWx1YXRvci5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVDb2RlQ29uZGl0aW9uKFxuICAgIGNvbmRpdGlvbjogQ29kZUNvbmRpdGlvbixcbiAgICBpbnB1dDogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGV2YWx1YXRvciA9IHRoaXMuZW5naW5lPy5jb2RlU2FuZGJveEV2YWx1YXRvcjtcbiAgICBpZiAoIWV2YWx1YXRvcikge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgIFwiQ29kZSBjb25kaXRpb25zIHJlcXVpcmUgYSBDb2RlU2FuZGJveEV2YWx1YXRvciB0byBiZSByZWdpc3RlcmVkIGluIEdyYXBoRXhlY3V0aW9uRW5naW5lQ29uZmlnLmNvZGVTYW5kYm94RXZhbHVhdG9yXCIsXG4gICAgICAgIFwiR1JBUEhfQ09ERV9TQU5EQk9YX05PVF9DT05GSUdVUkVEXCIsXG4gICAgICAgIHsgY29kZTogY29uZGl0aW9uLmNvZGUgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBhd2FpdCBjb250ZXh0LmxvZyhgRXZhbHVhdGluZyBjb2RlIGNvbmRpdGlvbmAsIHtcbiAgICAgIGxhbmd1YWdlOiBjb25kaXRpb24ubGFuZ3VhZ2UgPz8gXCJqYXZhc2NyaXB0XCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBldmFsdWF0b3IuZXZhbHVhdGUoe1xuICAgICAgY29kZTogY29uZGl0aW9uLmNvZGUsXG4gICAgICBsYW5ndWFnZTogY29uZGl0aW9uLmxhbmd1YWdlLFxuICAgICAgaW5wdXQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gISFyZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,13 +0,0 @@
|
|
|
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
|
-
export * from "./CodeSandboxEvaluator.js";
|
|
12
|
-
export * from "./SwitchGraphNodeExecutor.js";
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZXhlY3V0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCwyQ0FBd0M7QUFDeEMsdUNBQW9DO0FBQ3BDLDBDQUF1QztBQUN2Qyx5Q0FBc0M7QUFDdEMsMENBQXVDO0FBQ3ZDLDBDQUF1QztBQUN2Qyw2Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL2V4ZWN1dGlvblxuICogQHN1bW1hcnkgR3JhcGggZXhlY3V0aW9uIGNvbnRleHQgYW5kIGV4ZWN1dG9yIGludGVyZmFjZS5cbiAqIEBkZXNjcmlwdGlvbiBSZS1leHBvcnRzIHRoZSBncmFwaCBleGVjdXRpb24gY29udGV4dCBhbmQgbm9kZSBleGVjdXRvciBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uQ29udGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhOb2RlRXhlY3V0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUmVzdWx0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvbkZyYW1lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvbkVuZ2luZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vQ29kZVNhbmRib3hFdmFsdWF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1N3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yXCI7XG4iXX0=
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { GraphExecutionError } from "./../errors/GraphExecutionError.js";
|
|
2
|
-
/**
|
|
3
|
-
* Evaluates a {@link ConditionExpression} against the given state.
|
|
4
|
-
*
|
|
5
|
-
* `ExprValue` resolution:
|
|
6
|
-
* - `{ const: x }` → the literal value `x`.
|
|
7
|
-
* - `{ path: "a.b" }` → dotted-path lookup into `state`.
|
|
8
|
-
* - `{ step: "nodeId", path: "out" }` → cross-node reference; in v1 the state
|
|
9
|
-
* is expected to contain a `nodes` map keyed by node id (reserved for future
|
|
10
|
-
* multi-step evaluation; falls back to `state` lookup when absent).
|
|
11
|
-
*/
|
|
12
|
-
export class ConditionExpressionEvaluator {
|
|
13
|
-
/**
|
|
14
|
-
* Evaluates a condition expression to a boolean.
|
|
15
|
-
*
|
|
16
|
-
* @param expr - The condition expression.
|
|
17
|
-
* @param state - The current evaluation state (loop state or execution values).
|
|
18
|
-
* @returns `true` when the expression evaluates to a truthy/positive result.
|
|
19
|
-
*/
|
|
20
|
-
evaluate(expr, state) {
|
|
21
|
-
switch (expr.op) {
|
|
22
|
-
case "eq":
|
|
23
|
-
return this.resolveValue(expr.left, state) === this.resolveValue(expr.right, state);
|
|
24
|
-
case "neq":
|
|
25
|
-
return this.resolveValue(expr.left, state) !== this.resolveValue(expr.right, state);
|
|
26
|
-
case "gt":
|
|
27
|
-
return Number(this.resolveValue(expr.left, state)) > Number(this.resolveValue(expr.right, state));
|
|
28
|
-
case "gte":
|
|
29
|
-
return Number(this.resolveValue(expr.left, state)) >= Number(this.resolveValue(expr.right, state));
|
|
30
|
-
case "lt":
|
|
31
|
-
return Number(this.resolveValue(expr.left, state)) < Number(this.resolveValue(expr.right, state));
|
|
32
|
-
case "lte":
|
|
33
|
-
return Number(this.resolveValue(expr.left, state)) <= Number(this.resolveValue(expr.right, state));
|
|
34
|
-
case "and":
|
|
35
|
-
return expr.conditions.every((c) => this.evaluate(c, state));
|
|
36
|
-
case "or":
|
|
37
|
-
return expr.conditions.some((c) => this.evaluate(c, state));
|
|
38
|
-
case "not":
|
|
39
|
-
return !this.evaluate(expr.condition, state);
|
|
40
|
-
case "exists":
|
|
41
|
-
return this.resolveValue(expr.value, state) !== undefined && this.resolveValue(expr.value, state) !== null;
|
|
42
|
-
default:
|
|
43
|
-
throw new GraphExecutionError(`Unknown ConditionExpression op '${expr.op}'`, "GRAPH_UNKNOWN_CONDITION_OP", { expr });
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Resolves an {@link ExprValue} against the current state.
|
|
48
|
-
*/
|
|
49
|
-
resolveValue(ref, state) {
|
|
50
|
-
if ("const" in ref) {
|
|
51
|
-
return ref.const;
|
|
52
|
-
}
|
|
53
|
-
if ("path" in ref && !("step" in ref)) {
|
|
54
|
-
return this.resolvePath(ref.path, state);
|
|
55
|
-
}
|
|
56
|
-
if ("step" in ref && "path" in ref) {
|
|
57
|
-
const nodes = state?.["nodes"];
|
|
58
|
-
if (nodes && typeof nodes === "object") {
|
|
59
|
-
const nodeState = nodes[ref.step];
|
|
60
|
-
return this.resolvePath(ref.path, nodeState);
|
|
61
|
-
}
|
|
62
|
-
return this.resolvePath(ref.path, state);
|
|
63
|
-
}
|
|
64
|
-
throw new GraphExecutionError("Invalid ExprValue: must have `const`, `path`, or `step`+`path`", "GRAPH_INVALID_EXPR_VALUE", { ref });
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Resolves a dotted path into a target object.
|
|
68
|
-
*/
|
|
69
|
-
resolvePath(path, target) {
|
|
70
|
-
if (!path)
|
|
71
|
-
return target;
|
|
72
|
-
const parts = path.split(".");
|
|
73
|
-
let current = target;
|
|
74
|
-
for (const part of parts) {
|
|
75
|
-
if (current == null)
|
|
76
|
-
return undefined;
|
|
77
|
-
current = current[part];
|
|
78
|
-
}
|
|
79
|
-
return current;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9sb29wcy9Db25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQ0FBc0M7QUFFcEU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLDRCQUE0QjtJQUN2Qzs7Ozs7O09BTUc7SUFDSCxRQUFRLENBQUMsSUFBeUIsRUFBRSxLQUFjO1FBQ2hELFFBQVEsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLEtBQUssSUFBSTtnQkFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEYsS0FBSyxLQUFLO2dCQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLEtBQUssS0FBSztnQkFDUixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENB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QUFNLENBQUM7UUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLE9BQU8sR0FBWSxNQUFNLENBQUM7UUFDOUIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLE9BQU8sSUFBSSxJQUFJO2dCQUFFLE9BQU8sU0FBUyxDQUFDO1lBQ3RDLE9BQU8sR0FBSSxPQUFtQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL2xvb3BzL0NvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3JcbiAqIEBzdW1tYXJ5IEV2YWx1YXRvciBmb3IgdGhlIEFMRlJFRC01IGBDb25kaXRpb25FeHByZXNzaW9uYCBEU0wgKERFQ0FGLTMyIMKnMjIuMykuXG4gKiBAZGVzY3JpcHRpb24gRXZhbHVhdGVzIGRlY2xhcmF0aXZlLCBzZXJpYWxpemFibGUgY29uZGl0aW9uIGV4cHJlc3Npb25zIHdpdGhcbiAqIGBlcWAvYG5lcWAvYGd0YC9gZ3RlYC9gbHRgL2BsdGVgL2BhbmRgL2BvcmAvYG5vdGAvYGV4aXN0c2Agb3BlcmF0b3JzIGFuZFxuICogYEV4cHJWYWx1ZWAgcmVmZXJlbmNlcyAoYHtjb25zdH1gLCBge3BhdGh9YCwgYHtzdGVwLCBwYXRofWApLlxuICovXG5pbXBvcnQgdHlwZSB7IENvbmRpdGlvbkV4cHJlc3Npb24sIEV4cHJWYWx1ZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25FcnJvciB9IGZyb20gXCIuLi9lcnJvcnMvR3JhcGhFeGVjdXRpb25FcnJvclwiO1xuXG4vKipcbiAqIEV2YWx1YXRlcyBhIHtAbGluayBDb25kaXRpb25FeHByZXNzaW9ufSBhZ2FpbnN0IHRoZSBnaXZlbiBzdGF0ZS5cbiAqXG4gKiBgRXhwclZhbHVlYCByZXNvbHV0aW9uOlxuICogLSBgeyBjb25zdDogeCB9YCDihpIgdGhlIGxpdGVyYWwgdmFsdWUgYHhgLlxuICogLSBgeyBwYXRoOiBcImEuYlwiIH1gIOKGkiBkb3R0ZWQtcGF0aCBsb29rdXAgaW50byBgc3RhdGVgLlxuICogLSBgeyBzdGVwOiBcIm5vZGVJZFwiLCBwYXRoOiBcIm91dFwiIH1gIOKGkiBjcm9zcy1ub2RlIHJlZmVyZW5jZTsgaW4gdjEgdGhlIHN0YXRlXG4gKiAgIGlzIGV4cGVjdGVkIHRvIGNvbnRhaW4gYSBgbm9kZXNgIG1hcCBrZXllZCBieSBub2RlIGlkIChyZXNlcnZlZCBmb3IgZnV0dXJlXG4gKiAgIG11bHRpLXN0ZXAgZXZhbHVhdGlvbjsgZmFsbHMgYmFjayB0byBgc3RhdGVgIGxvb2t1cCB3aGVuIGFic2VudCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yIHtcbiAgLyoqXG4gICAqIEV2YWx1YXRlcyBhIGNvbmRpdGlvbiBleHByZXNzaW9uIHRvIGEgYm9vbGVhbi5cbiAgICpcbiAgICogQHBhcmFtIGV4cHIgLSBUaGUgY29uZGl0aW9uIGV4cHJlc3Npb24uXG4gICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSBjdXJyZW50IGV2YWx1YXRpb24gc3RhdGUgKGxvb3Agc3RhdGUgb3IgZXhlY3V0aW9uIHZhbHVlcykuXG4gICAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBhIHRydXRoeS9wb3NpdGl2ZSByZXN1bHQuXG4gICAqL1xuICBldmFsdWF0ZShleHByOiBDb25kaXRpb25FeHByZXNzaW9uLCBzdGF0ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAoZXhwci5vcCkge1xuICAgICAgY2FzZSBcImVxXCI6XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVWYWx1ZShleHByLmxlZnQsIHN0YXRlKSA9PT0gdGhpcy5yZXNvbHZlVmFsdWUoZXhwci5yaWdodCwgc3RhdGUpO1xuICAgICAgY2FzZSBcIm5lcVwiOlxuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlVmFsdWUoZXhwci5sZWZ0LCBzdGF0ZSkgIT09IHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIucmlnaHQsIHN0YXRlKTtcbiAgICAgIGNhc2UgXCJndFwiOlxuICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIubGVmdCwgc3RhdGUpKSA+IE51bWJlcih0aGlzLnJlc29sdmVWYWx1ZShleHByLnJpZ2h0LCBzdGF0ZSkpO1xuICAgICAgY2FzZSBcImd0ZVwiOlxuICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIubGVmdCwgc3RhdGUpKSA+PSBOdW1iZXIodGhpcy5yZXNvbHZlVmFsdWUoZXhwci5yaWdodCwgc3RhdGUpKTtcbiAgICAgIGNhc2UgXCJsdFwiOlxuICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIubGVmdCwgc3RhdGUpKSA8IE51bWJlcih0aGlzLnJlc29sdmVWYWx1ZShleHByLnJpZ2h0LCBzdGF0ZSkpO1xuICAgICAgY2FzZSBcImx0ZVwiOlxuICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIubGVmdCwgc3RhdGUpKSA8PSBOdW1iZXIodGhpcy5yZXNvbHZlVmFsdWUoZXhwci5yaWdodCwgc3RhdGUpKTtcbiAgICAgIGNhc2UgXCJhbmRcIjpcbiAgICAgICAgcmV0dXJuIGV4cHIuY29uZGl0aW9ucy5ldmVyeSgoYykgPT4gdGhpcy5ldmFsdWF0ZShjLCBzdGF0ZSkpO1xuICAgICAgY2FzZSBcIm9yXCI6XG4gICAgICAgIHJldHVybiBleHByLmNvbmRpdGlvbnMuc29tZSgoYykgPT4gdGhpcy5ldmFsdWF0ZShjLCBzdGF0ZSkpO1xuICAgICAgY2FzZSBcIm5vdFwiOlxuICAgICAgICByZXR1cm4gIXRoaXMuZXZhbHVhdGUoZXhwci5jb25kaXRpb24sIHN0YXRlKTtcbiAgICAgIGNhc2UgXCJleGlzdHNcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIudmFsdWUsIHN0YXRlKSAhPT0gdW5kZWZpbmVkICYmIHRoaXMucmVzb2x2ZVZhbHVlKGV4cHIudmFsdWUsIHN0YXRlKSAhPT0gbnVsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFxuICAgICAgICAgIGBVbmtub3duIENvbmRpdGlvbkV4cHJlc3Npb24gb3AgJyR7KGV4cHIgYXMgeyBvcDogc3RyaW5nIH0pLm9wfSdgLFxuICAgICAgICAgIFwiR1JBUEhfVU5LTk9XTl9DT05ESVRJT05fT1BcIixcbiAgICAgICAgICB7IGV4cHIgfVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiB7QGxpbmsgRXhwclZhbHVlfSBhZ2FpbnN0IHRoZSBjdXJyZW50IHN0YXRlLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlVmFsdWUocmVmOiBFeHByVmFsdWUsIHN0YXRlOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgaWYgKFwiY29uc3RcIiBpbiByZWYpIHtcbiAgICAgIHJldHVybiByZWYuY29uc3Q7XG4gICAgfVxuICAgIGlmIChcInBhdGhcIiBpbiByZWYgJiYgIShcInN0ZXBcIiBpbiByZWYpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlUGF0aChyZWYucGF0aCwgc3RhdGUpO1xuICAgIH1cbiAgICBpZiAoXCJzdGVwXCIgaW4gcmVmICYmIFwicGF0aFwiIGluIHJlZikge1xuICAgICAgY29uc3Qgbm9kZXMgPSAoc3RhdGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsKT8uW1wibm9kZXNcIl07XG4gICAgICBpZiAobm9kZXMgJiYgdHlwZW9mIG5vZGVzID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IG5vZGVTdGF0ZSA9IChub2RlcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbcmVmLnN0ZXBdO1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlUGF0aChyZWYucGF0aCwgbm9kZVN0YXRlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmVQYXRoKHJlZi5wYXRoLCBzdGF0ZSk7XG4gICAgfVxuICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFxuICAgICAgXCJJbnZhbGlkIEV4cHJWYWx1ZTogbXVzdCBoYXZlIGBjb25zdGAsIGBwYXRoYCwgb3IgYHN0ZXBgK2BwYXRoYFwiLFxuICAgICAgXCJHUkFQSF9JTlZBTElEX0VYUFJfVkFMVUVcIixcbiAgICAgIHsgcmVmIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGEgZG90dGVkIHBhdGggaW50byBhIHRhcmdldCBvYmplY3QuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVQYXRoKHBhdGg6IHN0cmluZywgdGFyZ2V0OiB1bmtub3duKTogdW5rbm93biB7XG4gICAgaWYgKCFwYXRoKSByZXR1cm4gdGFyZ2V0O1xuICAgIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdChcIi5cIik7XG4gICAgbGV0IGN1cnJlbnQ6IHVua25vd24gPSB0YXJnZXQ7XG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICBpZiAoY3VycmVudCA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgY3VycmVudCA9IChjdXJyZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtwYXJ0XTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,79 +0,0 @@
|
|
|
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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9yZWFjaEdyYXBoTm9kZUV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL2xvb3BzL0ZvcmVhY2hHcmFwaE5vZGVFeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsdUJBQXVCLEVBQUUsMEJBQXFCO0FBQzdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsdUNBQWtDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQ0FBc0M7QUFFcEU7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLFlBQTZCLE1BQTRCO1FBQTVCLFdBQU0sR0FBTixNQUFNLENBQXNCO0lBQUcsQ0FBQztJQUU3RCxLQUFLLENBQUMsT0FBTyxDQUNYLEtBQTJCLEVBQzNCLE9BQThCO1FBRTlCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQixNQUFNLGFBQWEsR0FDakIsUUFBUSxDQUFDLGFBQWEsSUFBSSxvQ0FBb0MsQ0FBQztRQUVqRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxlQUFlLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0Isb0NBQW9DLEtBQUssQ0FBQyxNQUFNLE1BQU0sYUFBYSxHQUFHLENBQ3ZFLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQStCLENBQUM7UUFFOUQsTUFBTSxPQUFPLEdBQWMsRUFBRSxDQUFDO1FBQzlCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFeEIsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFbkUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN0QyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxzQkFBc0I7Z0JBQ3BELFNBQVMsRUFBRSxDQUFDO2FBQ2IsQ0FBQyxDQUFDO1lBRUgsTUFBTSxXQUFXLEdBQXlCO2dCQUN4QyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLEtBQUssRUFBRSxDQUFDO2FBQ1QsQ0FBQztZQUNGLElBQUksS0FBSyxLQUFLLFNBQVM7Z0JBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUV4RCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUMzQyxZQUFZLEVBQ1osV0FBVyxFQUNYO2dCQUNFLFdBQVcsRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDMUIsSUFBSSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7YUFDMUMsQ0FDRixDQUFDO1lBRUYsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNqRCxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBRUQsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNqQixJQUFJLEVBQUUsdUJBQXVCLENBQUMsd0JBQXdCO2dCQUN0RCxTQUFTLEVBQUUsQ0FBQzthQUNiLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUVyRSxNQUFNLE1BQU0sR0FBeUI7WUFDbkMsT0FBTztZQUNQLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTTtTQUN6QixDQUFDO1FBQ0YsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbkQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxPQUE4QjtRQUNwRCxNQUFNLEdBQUcsR0FBSSxPQUFPLENBQUMsSUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTtZQUNwRCxPQUFPLENBQUMsUUFBZ0IsRUFBRSxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLGVBQWUsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxPQUFPLEdBQXdCLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9sb29wcy9Gb3JlYWNoR3JhcGhOb2RlRXhlY3V0b3JcbiAqIEBzdW1tYXJ5IEZvcmVhY2ggbG9vcCBub2RlIGV4ZWN1dG9yLlxuICogQGRlc2NyaXB0aW9uIEV4ZWN1dGVzIGEgYm9keSB3b3JrZmxvdyBvbmNlIHBlciBpdGVtIGluIHRoZSBpbnB1dCBhcnJheSwgY29sbGVjdGluZyByZXN1bHRzIGluIG9yZGVyLlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoTm9kZUV4ZWN1dG9yIH0gZnJvbSBcIi4uL2V4ZWN1dGlvbi9HcmFwaE5vZGVFeGVjdXRvclwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vZXhlY3V0aW9uL0dyYXBoRXhlY3V0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvbkVuZ2luZSB9IGZyb20gXCIuLi9leGVjdXRpb24vR3JhcGhFeGVjdXRpb25FbmdpbmVcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25WYWx1ZXMsIEdyYXBoTG9vcE1ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5cbmltcG9ydCB7IEdSQVBIX0RFRkFVTFRfTUFYX0ZPUkVBQ0hfSVRFUkFUSU9OUywgR3JhcGhFeGVjdXRpb25FdmVudFR5cGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBHcmFwaElucHV0RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL0dyYXBoSW5wdXRFcnJvclwiO1xuaW1wb3J0IHsgR3JhcGhMb29wTGltaXRFcnJvciB9IGZyb20gXCIuLi9lcnJvcnMvR3JhcGhMb29wTGltaXRFcnJvclwiO1xuXG4vKipcbiAqIEV4ZWN1dG9yIGZvciBgY29yZS5sb29wLmZvcmVhY2hgIG5vZGVzLlxuICpcbiAqIEV4cGVjdHMgaW5wdXQ6XG4gKiAtIGBpdGVtc2A6IGFycmF5IG9mIHZhbHVlcyB0byBpdGVyYXRlIG92ZXJcbiAqIC0gYHN0YXRlP2A6IG9wdGlvbmFsIGluaXRpYWwgc3RhdGVcbiAqXG4gKiBQcm9kdWNlcyBvdXRwdXQ6XG4gKiAtIGByZXN1bHRzYDogYXJyYXkgb2YgYm9keSBvdXRwdXRzIChpbiBpdGVtIG9yZGVyKVxuICogLSBgc3RhdGU/YDogZmluYWwgc3RhdGVcbiAqIC0gYGl0ZXJhdGlvbnNgOiBudW1iZXIgb2YgaXRlcmF0aW9ucyBleGVjdXRlZFxuICovXG5leHBvcnQgY2xhc3MgRm9yZWFjaEdyYXBoTm9kZUV4ZWN1dG9yIGltcGxlbWVudHMgR3JhcGhOb2RlRXhlY3V0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVuZ2luZTogR3JhcGhFeGVjdXRpb25FbmdpbmUpIHt9XG5cbiAgYXN5bmMgZXhlY3V0ZShcbiAgICBpbnB1dDogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4gICk6IFByb21pc2U8R3JhcGhFeGVjdXRpb25WYWx1ZXM+IHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXh0cmFjdE1ldGFkYXRhKGNvbnRleHQpO1xuICAgIGNvbnN0IGl0ZW1zID0gaW5wdXQuaXRlbXM7XG4gICAgY29uc3QgbWF4SXRlcmF0aW9ucyA9XG4gICAgICBtZXRhZGF0YS5tYXhJdGVyYXRpb25zID8/IEdSQVBIX0RFRkFVTFRfTUFYX0ZPUkVBQ0hfSVRFUkFUSU9OUztcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtcykpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaElucHV0RXJyb3IoXCJmb3JlYWNoIGlucHV0ICdpdGVtcycgbXVzdCBiZSBhbiBhcnJheVwiKTtcbiAgICB9XG4gICAgaWYgKGl0ZW1zLmxlbmd0aCA+IG1heEl0ZXJhdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaExvb3BMaW1pdEVycm9yKFxuICAgICAgICBgZm9yZWFjaCBleGNlZWRlZCBtYXggaXRlcmF0aW9ucyAoJHtpdGVtcy5sZW5ndGh9ID4gJHttYXhJdGVyYXRpb25zfSlgXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1Qb3J0ID0gbWV0YWRhdGEuaXRlbVBvcnQgPz8gXCJpdGVtXCI7XG4gICAgY29uc3QgcmVzdWx0UG9ydCA9IG1ldGFkYXRhLnJlc3VsdFBvcnQgPz8gXCJyZXN1bHRcIjtcbiAgICBjb25zdCBzdGF0ZVBvcnQgPSBtZXRhZGF0YS5zdGF0ZVBvcnQgPz8gXCJzdGF0ZVwiO1xuICAgIGNvbnN0IGJvZHlXb3JrZmxvdyA9IG1ldGFkYXRhLmJvZHkgYXMgR3JhcGhXb3JrZmxvd0RlZmluaXRpb247XG5cbiAgICBjb25zdCByZXN1bHRzOiB1bmtub3duW10gPSBbXTtcbiAgICBsZXQgc3RhdGUgPSBpbnB1dC5zdGF0ZTtcblxuICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7IHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfU1RBUlRFRCB9KTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7XG4gICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfSVRFUkFUSU9OX1NUQVJURUQsXG4gICAgICAgIGl0ZXJhdGlvbjogaSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjaGlsZElucHV0czogR3JhcGhFeGVjdXRpb25WYWx1ZXMgPSB7XG4gICAgICAgIFtpdGVtUG9ydF06IGl0ZW1zW2ldLFxuICAgICAgICBpbmRleDogaSxcbiAgICAgIH07XG4gICAgICBpZiAoc3RhdGUgIT09IHVuZGVmaW5lZCkgY2hpbGRJbnB1dHNbc3RhdGVQb3J0XSA9IHN0YXRlO1xuXG4gICAgICBjb25zdCBjaGlsZFJlc3VsdCA9IGF3YWl0IHRoaXMuZW5naW5lLmV4ZWN1dGUoXG4gICAgICAgIGJvZHlXb3JrZmxvdyxcbiAgICAgICAgY2hpbGRJbnB1dHMsXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJlbnRSdW5JZDogY29udGV4dC5ydW5JZCxcbiAgICAgICAgICBwYXRoOiBbLi4uY29udGV4dC5wYXRoLCBgaXRlcmF0aW9uOiR7aX1gXSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgcmVzdWx0cy5wdXNoKGNoaWxkUmVzdWx0Lm91dHB1dHNbcmVzdWx0UG9ydF0pO1xuICAgICAgaWYgKGNoaWxkUmVzdWx0Lm91dHB1dHNbc3RhdGVQb3J0XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHN0YXRlID0gY2hpbGRSZXN1bHQub3V0cHV0c1tzdGF0ZVBvcnRdO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBjb250ZXh0LmVtaXQoe1xuICAgICAgICB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5MT09QX0lURVJBVElPTl9DT01QTEVURUQsXG4gICAgICAgIGl0ZXJhdGlvbjogaSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7IHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfQ09NUExFVEVEIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0OiBHcmFwaEV4ZWN1dGlvblZhbHVlcyA9IHtcbiAgICAgIHJlc3VsdHMsXG4gICAgICBpdGVyYXRpb25zOiBpdGVtcy5sZW5ndGgsXG4gICAgfTtcbiAgICBpZiAoc3RhdGUgIT09IHVuZGVmaW5lZCkgb3V0cHV0W3N0YXRlUG9ydF0gPSBzdGF0ZTtcbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0TWV0YWRhdGEoY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0KTogR3JhcGhMb29wTWV0YWRhdGEge1xuICAgIGNvbnN0IHJhdyA9IChjb250ZXh0Lm5vZGUgYXMgYW55KS5ncmFwaD8ubWV0YWRhdGE/Lmxvb3AgPz9cbiAgICAgIChjb250ZXh0Lm1ldGFkYXRhIGFzIGFueSk/Lmxvb3A7XG4gICAgaWYgKCFyYXcpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaElucHV0RXJyb3IoXCJmb3JlYWNoIG5vZGUgaXMgbWlzc2luZyBsb29wIG1ldGFkYXRhXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcmF3IGFzIEdyYXBoTG9vcE1ldGFkYXRhO1xuICB9XG59XG4iXX0=
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { GraphConditionType } from "./../constants.js";
|
|
2
|
-
import { GraphExecutionError } from "./../errors/GraphExecutionError.js";
|
|
3
|
-
import { ConditionExpressionEvaluator } from "./ConditionExpressionEvaluator.js";
|
|
4
|
-
/**
|
|
5
|
-
* Evaluates loop conditions using built-in comparison types or the
|
|
6
|
-
* `ConditionExpression` DSL.
|
|
7
|
-
*/
|
|
8
|
-
export class GraphConditionEvaluator {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.expressionEvaluator = new ConditionExpressionEvaluator();
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Evaluates a condition against the given state.
|
|
14
|
-
*
|
|
15
|
-
* When the condition object carries an `op` field, it is treated as a
|
|
16
|
-
* `ConditionExpression` (§22.3) and dispatched to the
|
|
17
|
-
* {@link ConditionExpressionEvaluator}. Otherwise the built-in `type`-based
|
|
18
|
-
* switch is used.
|
|
19
|
-
*
|
|
20
|
-
* @param condition - The condition definition.
|
|
21
|
-
* @param state - The current loop state.
|
|
22
|
-
* @returns `true` when the condition passes.
|
|
23
|
-
*/
|
|
24
|
-
evaluate(condition, state) {
|
|
25
|
-
if (this.isConditionExpression(condition)) {
|
|
26
|
-
return this.expressionEvaluator.evaluate(condition, state);
|
|
27
|
-
}
|
|
28
|
-
const left = this.resolveValue(condition.left, state);
|
|
29
|
-
const right = condition.right;
|
|
30
|
-
switch (condition.type) {
|
|
31
|
-
case GraphConditionType.TRUTHY:
|
|
32
|
-
return !!left;
|
|
33
|
-
case GraphConditionType.FALSY:
|
|
34
|
-
return !left;
|
|
35
|
-
case GraphConditionType.EQUALS:
|
|
36
|
-
return left === right;
|
|
37
|
-
case GraphConditionType.NOT_EQUALS:
|
|
38
|
-
return left !== right;
|
|
39
|
-
case GraphConditionType.GREATER_THAN:
|
|
40
|
-
return Number(left) > Number(right);
|
|
41
|
-
case GraphConditionType.GREATER_THAN_OR_EQUAL:
|
|
42
|
-
return Number(left) >= Number(right);
|
|
43
|
-
case GraphConditionType.LESS_THAN:
|
|
44
|
-
return Number(left) < Number(right);
|
|
45
|
-
case GraphConditionType.LESS_THAN_OR_EQUAL:
|
|
46
|
-
return Number(left) <= Number(right);
|
|
47
|
-
case GraphConditionType.EXISTS:
|
|
48
|
-
return left !== undefined && left !== null;
|
|
49
|
-
case GraphConditionType.CUSTOM:
|
|
50
|
-
throw new GraphExecutionError("Custom condition evaluators are not supported in v1", "GRAPH_CUSTOM_CONDITION_UNSUPPORTED");
|
|
51
|
-
default:
|
|
52
|
-
throw new GraphExecutionError(`Unknown condition type '${condition.type}'`, "GRAPH_UNKNOWN_CONDITION_TYPE", { condition });
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Resolves a value that may be a dotted path into the state object.
|
|
57
|
-
*/
|
|
58
|
-
resolveValue(path, state) {
|
|
59
|
-
if (!path)
|
|
60
|
-
return state;
|
|
61
|
-
const parts = path.split(".");
|
|
62
|
-
let current = state;
|
|
63
|
-
for (const part of parts) {
|
|
64
|
-
if (current == null)
|
|
65
|
-
return undefined;
|
|
66
|
-
current = current[part];
|
|
67
|
-
}
|
|
68
|
-
return current;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Detects whether a condition object is a `ConditionExpression` (§22.3) by
|
|
72
|
-
* checking for the presence of an `op` field. When true, the object is
|
|
73
|
-
* treated as a `ConditionExpression` and dispatched to the
|
|
74
|
-
* {@link ConditionExpressionEvaluator}.
|
|
75
|
-
*/
|
|
76
|
-
isConditionExpression(condition) {
|
|
77
|
-
return typeof condition.op === "string";
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhDb25kaXRpb25FdmFsdWF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbG9vcHMvR3JhcGhDb25kaXRpb25FdmFsdWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLDBCQUFxQjtBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMkNBQXNDO0FBQ3BFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSwwQ0FBdUM7QUFFOUU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUFwQztRQUNtQix3QkFBbUIsR0FBRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7SUE4RTVFLENBQUM7SUE1RUM7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxRQUFRLENBQUMsU0FBeUQsRUFBRSxLQUFjO1FBQ2hGLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDMUMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFFOUIsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsS0FBSyxrQkFBa0IsQ0FBQyxNQUFNO2dCQUM1QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDaEIsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLO2dCQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2YsS0FBSyxrQkFBa0IsQ0FBQyxNQUFNO2dCQUM1QixPQUFPLElBQUksS0FBSyxLQUFLLENBQUM7WUFDeEIsS0FBSyxrQkFBa0IsQ0FBQyxVQUFVO2dCQUNoQyxPQUFPLElBQUksS0FBSyxLQUFLLENBQUM7WUFDeEIsS0FBSyxrQkFBa0IsQ0FBQyxZQUFZO2dCQUNsQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsS0FBSyxrQkFBa0IsQ0FBQyxxQkFBcUI7Z0JBQzNDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxLQUFLLGtCQUFrQixDQUFDLFNBQVM7Z0JBQy9CLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxLQUFLLGtCQUFrQixDQUFDLGtCQUFrQjtnQkFDeEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssa0JBQWtCLENBQUMsTUFBTTtnQkFDNUIsT0FBTyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUM7WUFDN0MsS0FBSyxrQkFBa0IsQ0FBQyxNQUFNO2dCQUM1QixNQUFNLElBQUksbUJBQW1CLENBQzNCLHFEQUFxRCxFQUNyRCxvQ0FBb0MsQ0FDckMsQ0FBQztZQUNKO2dCQUNFLE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0IsMkJBQTJCLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFDNUMsOEJBQThCLEVBQzlCLEVBQUUsU0FBUyxFQUFFLENBQ2QsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZLENBQUMsSUFBd0IsRUFBRSxLQUFjO1FBQzNELElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLE9BQU8sR0FBWSxLQUFLLENBQUM7UUFDN0IsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLE9BQU8sSUFBSSxJQUFJO2dCQUFFLE9BQU8sU0FBUyxDQUFDO1lBQ3RDLE9BQU8sR0FBSSxPQUFtQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxxQkFBcUIsQ0FBQyxTQUF5RDtRQUNyRixPQUFPLE9BQVEsU0FBd0MsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDO0lBQzFFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvbG9vcHMvR3JhcGhDb25kaXRpb25FdmFsdWF0b3JcbiAqIEBzdW1tYXJ5IEV2YWx1YXRvciBmb3IgYnVpbHQtaW4gbG9vcCBjb25kaXRpb24gdHlwZXMgYW5kIHRoZSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAgRFNMLlxuICogQGRlc2NyaXB0aW9uIFN1cHBvcnRzIHNhZmUsIGJ1aWx0LWluIGNvbmRpdGlvbiB0eXBlcyBvbmx5LiBEb2VzIE5PVCBldmFsdWF0ZSBhcmJpdHJhcnkgSmF2YVNjcmlwdCBleHByZXNzaW9ucy5cbiAqIFdoZW4gdGhlIGNvbmRpdGlvbiBvYmplY3QgY2FycmllcyBhbiBgb3BgIGZpZWxkIChBTEZSRUQtNSDCpzggLyBERUNBRi0zMiDCpzIyLjMpLCBkaXNwYXRjaGVzIHRvIHRoZVxuICoge0BsaW5rIENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3J9IGluc3RlYWQgb2YgdGhlIGJ1aWx0LWluIGB0eXBlYC1iYXNlZCBzd2l0Y2guXG4gKi9cbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uRXhwcmVzc2lvbiwgR3JhcGhDb25kaXRpb25EZWZpbml0aW9uIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBHcmFwaENvbmRpdGlvblR5cGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaEV4ZWN1dGlvbkVycm9yXCI7XG5pbXBvcnQgeyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yIH0gZnJvbSBcIi4vQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvclwiO1xuXG4vKipcbiAqIEV2YWx1YXRlcyBsb29wIGNvbmRpdGlvbnMgdXNpbmcgYnVpbHQtaW4gY29tcGFyaXNvbiB0eXBlcyBvciB0aGVcbiAqIGBDb25kaXRpb25FeHByZXNzaW9uYCBEU0wuXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaENvbmRpdGlvbkV2YWx1YXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhwcmVzc2lvbkV2YWx1YXRvciA9IG5ldyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yKCk7XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlcyBhIGNvbmRpdGlvbiBhZ2FpbnN0IHRoZSBnaXZlbiBzdGF0ZS5cbiAgICpcbiAgICogV2hlbiB0aGUgY29uZGl0aW9uIG9iamVjdCBjYXJyaWVzIGFuIGBvcGAgZmllbGQsIGl0IGlzIHRyZWF0ZWQgYXMgYVxuICAgKiBgQ29uZGl0aW9uRXhwcmVzc2lvbmAgKMKnMjIuMykgYW5kIGRpc3BhdGNoZWQgdG8gdGhlXG4gICAqIHtAbGluayBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yfS4gT3RoZXJ3aXNlIHRoZSBidWlsdC1pbiBgdHlwZWAtYmFzZWRcbiAgICogc3dpdGNoIGlzIHVzZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIGRlZmluaXRpb24uXG4gICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSBjdXJyZW50IGxvb3Agc3RhdGUuXG4gICAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBjb25kaXRpb24gcGFzc2VzLlxuICAgKi9cbiAgZXZhbHVhdGUoY29uZGl0aW9uOiBHcmFwaENvbmRpdGlvbkRlZmluaXRpb24gfCBDb25kaXRpb25FeHByZXNzaW9uLCBzdGF0ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzQ29uZGl0aW9uRXhwcmVzc2lvbihjb25kaXRpb24pKSB7XG4gICAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmV2YWx1YXRlKGNvbmRpdGlvbiwgc3RhdGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGxlZnQgPSB0aGlzLnJlc29sdmVWYWx1ZShjb25kaXRpb24ubGVmdCwgc3RhdGUpO1xuICAgIGNvbnN0IHJpZ2h0ID0gY29uZGl0aW9uLnJpZ2h0O1xuXG4gICAgc3dpdGNoIChjb25kaXRpb24udHlwZSkge1xuICAgICAgY2FzZSBHcmFwaENvbmRpdGlvblR5cGUuVFJVVEhZOlxuICAgICAgICByZXR1cm4gISFsZWZ0O1xuICAgICAgY2FzZSBHcmFwaENvbmRpdGlvblR5cGUuRkFMU1k6XG4gICAgICAgIHJldHVybiAhbGVmdDtcbiAgICAgIGNhc2UgR3JhcGhDb25kaXRpb25UeXBlLkVRVUFMUzpcbiAgICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0O1xuICAgICAgY2FzZSBHcmFwaENvbmRpdGlvblR5cGUuTk9UX0VRVUFMUzpcbiAgICAgICAgcmV0dXJuIGxlZnQgIT09IHJpZ2h0O1xuICAgICAgY2FzZSBHcmFwaENvbmRpdGlvblR5cGUuR1JFQVRFUl9USEFOOlxuICAgICAgICByZXR1cm4gTnVtYmVyKGxlZnQpID4gTnVtYmVyKHJpZ2h0KTtcbiAgICAgIGNhc2UgR3JhcGhDb25kaXRpb25UeXBlLkdSRUFURVJfVEhBTl9PUl9FUVVBTDpcbiAgICAgICAgcmV0dXJuIE51bWJlcihsZWZ0KSA+PSBOdW1iZXIocmlnaHQpO1xuICAgICAgY2FzZSBHcmFwaENvbmRpdGlvblR5cGUuTEVTU19USEFOOlxuICAgICAgICByZXR1cm4gTnVtYmVyKGxlZnQpIDwgTnVtYmVyKHJpZ2h0KTtcbiAgICAgIGNhc2UgR3JhcGhDb25kaXRpb25UeXBlLkxFU1NfVEhBTl9PUl9FUVVBTDpcbiAgICAgICAgcmV0dXJuIE51bWJlcihsZWZ0KSA8PSBOdW1iZXIocmlnaHQpO1xuICAgICAgY2FzZSBHcmFwaENvbmRpdGlvblR5cGUuRVhJU1RTOlxuICAgICAgICByZXR1cm4gbGVmdCAhPT0gdW5kZWZpbmVkICYmIGxlZnQgIT09IG51bGw7XG4gICAgICBjYXNlIEdyYXBoQ29uZGl0aW9uVHlwZS5DVVNUT006XG4gICAgICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFxuICAgICAgICAgIFwiQ3VzdG9tIGNvbmRpdGlvbiBldmFsdWF0b3JzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHYxXCIsXG4gICAgICAgICAgXCJHUkFQSF9DVVNUT01fQ09ORElUSU9OX1VOU1VQUE9SVEVEXCJcbiAgICAgICAgKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFxuICAgICAgICAgIGBVbmtub3duIGNvbmRpdGlvbiB0eXBlICcke2NvbmRpdGlvbi50eXBlfSdgLFxuICAgICAgICAgIFwiR1JBUEhfVU5LTk9XTl9DT05ESVRJT05fVFlQRVwiLFxuICAgICAgICAgIHsgY29uZGl0aW9uIH1cbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYSB2YWx1ZSB0aGF0IG1heSBiZSBhIGRvdHRlZCBwYXRoIGludG8gdGhlIHN0YXRlIG9iamVjdC5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVZhbHVlKHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCwgc3RhdGU6IHVua25vd24pOiB1bmtub3duIHtcbiAgICBpZiAoIXBhdGgpIHJldHVybiBzdGF0ZTtcbiAgICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuICAgIGxldCBjdXJyZW50OiB1bmtub3duID0gc3RhdGU7XG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICBpZiAoY3VycmVudCA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgY3VycmVudCA9IChjdXJyZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtwYXJ0XTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0cyB3aGV0aGVyIGEgY29uZGl0aW9uIG9iamVjdCBpcyBhIGBDb25kaXRpb25FeHByZXNzaW9uYCAowqcyMi4zKSBieVxuICAgKiBjaGVja2luZyBmb3IgdGhlIHByZXNlbmNlIG9mIGFuIGBvcGAgZmllbGQuIFdoZW4gdHJ1ZSwgdGhlIG9iamVjdCBpc1xuICAgKiB0cmVhdGVkIGFzIGEgYENvbmRpdGlvbkV4cHJlc3Npb25gIGFuZCBkaXNwYXRjaGVkIHRvIHRoZVxuICAgKiB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvcn0uXG4gICAqL1xuICBwcml2YXRlIGlzQ29uZGl0aW9uRXhwcmVzc2lvbihjb25kaXRpb246IEdyYXBoQ29uZGl0aW9uRGVmaW5pdGlvbiB8IENvbmRpdGlvbkV4cHJlc3Npb24pOiBjb25kaXRpb24gaXMgQ29uZGl0aW9uRXhwcmVzc2lvbiB7XG4gICAgcmV0dXJuIHR5cGVvZiAoY29uZGl0aW9uIGFzIHVua25vd24gYXMgeyBvcD86IHN0cmluZyB9KS5vcCA9PT0gXCJzdHJpbmdcIjtcbiAgfVxufVxuIl19
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Context for a single loop execution, carrying the loop metadata and
|
|
3
|
-
* current iteration index.
|
|
4
|
-
*/
|
|
5
|
-
export class GraphLoopExecutionContext {
|
|
6
|
-
constructor(iteration, metadata) {
|
|
7
|
-
this.iteration = iteration;
|
|
8
|
-
this.metadata = metadata;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhMb29wRXhlY3V0aW9uQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9sb29wcy9HcmFwaExvb3BFeGVjdXRpb25Db250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BOzs7R0FHRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUFJcEMsWUFBWSxTQUFpQixFQUFFLFFBQTJCO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvbG9vcHMvR3JhcGhMb29wRXhlY3V0aW9uQ29udGV4dFxuICogQHN1bW1hcnkgQ29udGV4dCBmb3IgbG9vcCBub2RlIGV4ZWN1dGlvbi5cbiAqIEBkZXNjcmlwdGlvbiBDYXJyaWVzIGxvb3Atc3BlY2lmaWMgbWV0YWRhdGEgYW5kIGl0ZXJhdGlvbiBzdGF0ZSBkdXJpbmcgbG9vcCBleGVjdXRpb24uXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhMb29wTWV0YWRhdGEgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuLyoqXG4gKiBDb250ZXh0IGZvciBhIHNpbmdsZSBsb29wIGV4ZWN1dGlvbiwgY2FycnlpbmcgdGhlIGxvb3AgbWV0YWRhdGEgYW5kXG4gKiBjdXJyZW50IGl0ZXJhdGlvbiBpbmRleC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoTG9vcEV4ZWN1dGlvbkNvbnRleHQge1xuICByZWFkb25seSBpdGVyYXRpb246IG51bWJlcjtcbiAgcmVhZG9ubHkgbWV0YWRhdGE6IEdyYXBoTG9vcE1ldGFkYXRhO1xuXG4gIGNvbnN0cnVjdG9yKGl0ZXJhdGlvbjogbnVtYmVyLCBtZXRhZGF0YTogR3JhcGhMb29wTWV0YWRhdGEpIHtcbiAgICB0aGlzLml0ZXJhdGlvbiA9IGl0ZXJhdGlvbjtcbiAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { GRAPH_DEFAULT_MAX_LOOP_ITERATIONS, GraphExecutionEventType } from "./../constants.js";
|
|
2
|
-
import { GraphInputError } from "./../errors/GraphInputError.js";
|
|
3
|
-
import { GraphLoopLimitError } from "./../errors/GraphLoopLimitError.js";
|
|
4
|
-
import { GraphConditionEvaluator } from "./GraphConditionEvaluator.js";
|
|
5
|
-
/**
|
|
6
|
-
* Executor for `core.loop.until` nodes.
|
|
7
|
-
*
|
|
8
|
-
* Executes the body at least once, then checks the condition. Repeats until
|
|
9
|
-
* the condition evaluates to true.
|
|
10
|
-
*/
|
|
11
|
-
export class UntilGraphNodeExecutor {
|
|
12
|
-
constructor(engine) {
|
|
13
|
-
this.engine = engine;
|
|
14
|
-
this.evaluator = new GraphConditionEvaluator();
|
|
15
|
-
}
|
|
16
|
-
async execute(input, context) {
|
|
17
|
-
const metadata = this.extractMetadata(context);
|
|
18
|
-
const maxIterations = metadata.maxIterations ?? GRAPH_DEFAULT_MAX_LOOP_ITERATIONS;
|
|
19
|
-
const condition = metadata.condition;
|
|
20
|
-
if (!condition) {
|
|
21
|
-
throw new GraphInputError("until node is missing a condition");
|
|
22
|
-
}
|
|
23
|
-
const statePort = metadata.statePort ?? "state";
|
|
24
|
-
const bodyWorkflow = metadata.body;
|
|
25
|
-
let state = input.state;
|
|
26
|
-
let iteration = 0;
|
|
27
|
-
await context.emit({ type: GraphExecutionEventType.LOOP_STARTED });
|
|
28
|
-
let shouldStop = false;
|
|
29
|
-
do {
|
|
30
|
-
if (iteration >= maxIterations) {
|
|
31
|
-
await context.emit({
|
|
32
|
-
type: GraphExecutionEventType.LOOP_LIMIT_REACHED,
|
|
33
|
-
iteration,
|
|
34
|
-
});
|
|
35
|
-
throw new GraphLoopLimitError(`until loop exceeded max iterations (${maxIterations})`);
|
|
36
|
-
}
|
|
37
|
-
await context.emit({
|
|
38
|
-
type: GraphExecutionEventType.LOOP_ITERATION_STARTED,
|
|
39
|
-
iteration,
|
|
40
|
-
});
|
|
41
|
-
const childResult = await this.engine.execute(bodyWorkflow, { [statePort]: state, iteration }, {
|
|
42
|
-
parentRunId: context.runId,
|
|
43
|
-
path: [...context.path, `iteration:${iteration}`],
|
|
44
|
-
});
|
|
45
|
-
state = childResult.outputs[statePort];
|
|
46
|
-
await context.emit({
|
|
47
|
-
type: GraphExecutionEventType.LOOP_ITERATION_COMPLETED,
|
|
48
|
-
iteration,
|
|
49
|
-
});
|
|
50
|
-
const conditionResult = this.evaluator.evaluate(condition, state);
|
|
51
|
-
await context.emit({
|
|
52
|
-
type: GraphExecutionEventType.LOOP_CONDITION_EVALUATED,
|
|
53
|
-
iteration,
|
|
54
|
-
payload: { result: conditionResult },
|
|
55
|
-
});
|
|
56
|
-
iteration++;
|
|
57
|
-
shouldStop = conditionResult;
|
|
58
|
-
} while (!shouldStop);
|
|
59
|
-
await context.emit({ type: GraphExecutionEventType.LOOP_COMPLETED });
|
|
60
|
-
return { [statePort]: state, iterations: iteration };
|
|
61
|
-
}
|
|
62
|
-
extractMetadata(context) {
|
|
63
|
-
const raw = context.node.graph?.metadata?.loop ??
|
|
64
|
-
context.metadata?.loop;
|
|
65
|
-
if (!raw) {
|
|
66
|
-
throw new GraphInputError("until node is missing loop metadata");
|
|
67
|
-
}
|
|
68
|
-
return raw;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW50aWxHcmFwaE5vZGVFeGVjdXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9sb29wcy9VbnRpbEdyYXBoTm9kZUV4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSx1QkFBdUIsRUFBRSwwQkFBcUI7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSx1Q0FBa0M7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDJDQUFzQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUscUNBQWtDO0FBRXBFOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUE2QixNQUE0QjtRQUE1QixXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUZ4QyxjQUFTLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO0lBRUMsQ0FBQztJQUU3RCxLQUFLLENBQUMsT0FBTyxDQUNYLEtBQTJCLEVBQzNCLE9BQThCO1FBRTlCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsTUFBTSxhQUFhLEdBQ2pCLFFBQVEsQ0FBQyxhQUFhLElBQUksaUNBQWlDLENBQUM7UUFDOUQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksZUFBZSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUErQixDQUFDO1FBRTlELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRW5FLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV2QixHQUFHLENBQUM7WUFDRixJQUFJLFNBQVMsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNqQixJQUFJLEVBQUUsdUJBQXVCLENBQUMsa0JBQWtCO29CQUNoRCxTQUFTO2lCQUNWLENBQUMsQ0FBQztnQkFDSCxNQUFNLElBQUksbUJBQW1CLENBQzNCLHVDQUF1QyxhQUFhLEdBQUcsQ0FDeEQsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxzQkFBc0I7Z0JBQ3BELFNBQVM7YUFDVixDQUFDLENBQUM7WUFFSCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUMzQyxZQUFZLEVBQ1osRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFDakM7Z0JBQ0UsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2dCQUMxQixJQUFJLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsYUFBYSxTQUFTLEVBQUUsQ0FBQzthQUNsRCxDQUNGLENBQUM7WUFFRixLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV2QyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyx3QkFBd0I7Z0JBQ3RELFNBQVM7YUFDVixDQUFDLENBQUM7WUFFSCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbEUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNqQixJQUFJLEVBQUUsdUJBQXVCLENBQUMsd0JBQXdCO2dCQUN0RCxTQUFTO2dCQUNULE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUU7YUFDckMsQ0FBQyxDQUFDO1lBRUgsU0FBUyxFQUFFLENBQUM7WUFDWixVQUFVLEdBQUcsZUFBZSxDQUFDO1FBQy9CLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtRQUV0QixNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUVyRSxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFTyxlQUFlLENBQUMsT0FBOEI7UUFDcEQsTUFBTSxHQUFHLEdBQUksT0FBTyxDQUFDLElBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUk7WUFDcEQsT0FBTyxDQUFDLFFBQWdCLEVBQUUsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxlQUFlLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsT0FBTyxHQUF3QixDQUFDO0lBQ2xDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvbG9vcHMvVW50aWxHcmFwaE5vZGVFeGVjdXRvclxuICogQHN1bW1hcnkgVW50aWwgbG9vcCBub2RlIGV4ZWN1dG9yLlxuICogQGRlc2NyaXB0aW9uIEV4ZWN1dGVzIGEgYm9keSB3b3JrZmxvdyBhdCBsZWFzdCBvbmNlIGFuZCByZXBlYXRzIHVudGlsIGEgY29uZGl0aW9uIGlzIHRydWUuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRXhlY3V0b3IgfSBmcm9tIFwiLi4vZXhlY3V0aW9uL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gXCIuLi9leGVjdXRpb24vR3JhcGhFeGVjdXRpb25Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uRW5naW5lIH0gZnJvbSBcIi4uL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvbkVuZ2luZVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblZhbHVlcywgR3JhcGhMb29wTWV0YWRhdGEgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHsgR1JBUEhfREVGQVVMVF9NQVhfTE9PUF9JVEVSQVRJT05TLCBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEdyYXBoSW5wdXRFcnJvciB9IGZyb20gXCIuLi9lcnJvcnMvR3JhcGhJbnB1dEVycm9yXCI7XG5pbXBvcnQgeyBHcmFwaExvb3BMaW1pdEVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaExvb3BMaW1pdEVycm9yXCI7XG5pbXBvcnQgeyBHcmFwaENvbmRpdGlvbkV2YWx1YXRvciB9IGZyb20gXCIuL0dyYXBoQ29uZGl0aW9uRXZhbHVhdG9yXCI7XG5cbi8qKlxuICogRXhlY3V0b3IgZm9yIGBjb3JlLmxvb3AudW50aWxgIG5vZGVzLlxuICpcbiAqIEV4ZWN1dGVzIHRoZSBib2R5IGF0IGxlYXN0IG9uY2UsIHRoZW4gY2hlY2tzIHRoZSBjb25kaXRpb24uIFJlcGVhdHMgdW50aWxcbiAqIHRoZSBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBVbnRpbEdyYXBoTm9kZUV4ZWN1dG9yIGltcGxlbWVudHMgR3JhcGhOb2RlRXhlY3V0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGV2YWx1YXRvciA9IG5ldyBHcmFwaENvbmRpdGlvbkV2YWx1YXRvcigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZW5naW5lOiBHcmFwaEV4ZWN1dGlvbkVuZ2luZSkge31cblxuICBhc3luYyBleGVjdXRlKFxuICAgIGlucHV0OiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgICBjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHRcbiAgKTogUHJvbWlzZTxHcmFwaEV4ZWN1dGlvblZhbHVlcz4ge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5leHRyYWN0TWV0YWRhdGEoY29udGV4dCk7XG4gICAgY29uc3QgbWF4SXRlcmF0aW9ucyA9XG4gICAgICBtZXRhZGF0YS5tYXhJdGVyYXRpb25zID8/IEdSQVBIX0RFRkFVTFRfTUFYX0xPT1BfSVRFUkFUSU9OUztcbiAgICBjb25zdCBjb25kaXRpb24gPSBtZXRhZGF0YS5jb25kaXRpb247XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaElucHV0RXJyb3IoXCJ1bnRpbCBub2RlIGlzIG1pc3NpbmcgYSBjb25kaXRpb25cIik7XG4gICAgfVxuICAgIGNvbnN0IHN0YXRlUG9ydCA9IG1ldGFkYXRhLnN0YXRlUG9ydCA/PyBcInN0YXRlXCI7XG4gICAgY29uc3QgYm9keVdvcmtmbG93ID0gbWV0YWRhdGEuYm9keSBhcyBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbjtcblxuICAgIGxldCBzdGF0ZSA9IGlucHV0LnN0YXRlO1xuICAgIGxldCBpdGVyYXRpb24gPSAwO1xuXG4gICAgYXdhaXQgY29udGV4dC5lbWl0KHsgdHlwZTogR3JhcGhFeGVjdXRpb25FdmVudFR5cGUuTE9PUF9TVEFSVEVEIH0pO1xuXG4gICAgbGV0IHNob3VsZFN0b3AgPSBmYWxzZTtcblxuICAgIGRvIHtcbiAgICAgIGlmIChpdGVyYXRpb24gPj0gbWF4SXRlcmF0aW9ucykge1xuICAgICAgICBhd2FpdCBjb250ZXh0LmVtaXQoe1xuICAgICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfTElNSVRfUkVBQ0hFRCxcbiAgICAgICAgICBpdGVyYXRpb24sXG4gICAgICAgIH0pO1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhMb29wTGltaXRFcnJvcihcbiAgICAgICAgICBgdW50aWwgbG9vcCBleGNlZWRlZCBtYXggaXRlcmF0aW9ucyAoJHttYXhJdGVyYXRpb25zfSlgXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7XG4gICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfSVRFUkFUSU9OX1NUQVJURUQsXG4gICAgICAgIGl0ZXJhdGlvbixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjaGlsZFJlc3VsdCA9IGF3YWl0IHRoaXMuZW5naW5lLmV4ZWN1dGUoXG4gICAgICAgIGJvZHlXb3JrZmxvdyxcbiAgICAgICAgeyBbc3RhdGVQb3J0XTogc3RhdGUsIGl0ZXJhdGlvbiB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyZW50UnVuSWQ6IGNvbnRleHQucnVuSWQsXG4gICAgICAgICAgcGF0aDogWy4uLmNvbnRleHQucGF0aCwgYGl0ZXJhdGlvbjoke2l0ZXJhdGlvbn1gXSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgc3RhdGUgPSBjaGlsZFJlc3VsdC5vdXRwdXRzW3N0YXRlUG9ydF07XG5cbiAgICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7XG4gICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfSVRFUkFUSU9OX0NPTVBMRVRFRCxcbiAgICAgICAgaXRlcmF0aW9uLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNvbmRpdGlvblJlc3VsdCA9IHRoaXMuZXZhbHVhdG9yLmV2YWx1YXRlKGNvbmRpdGlvbiwgc3RhdGUpO1xuXG4gICAgICBhd2FpdCBjb250ZXh0LmVtaXQoe1xuICAgICAgICB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5MT09QX0NPTkRJVElPTl9FVkFMVUFURUQsXG4gICAgICAgIGl0ZXJhdGlvbixcbiAgICAgICAgcGF5bG9hZDogeyByZXN1bHQ6IGNvbmRpdGlvblJlc3VsdCB9LFxuICAgICAgfSk7XG5cbiAgICAgIGl0ZXJhdGlvbisrO1xuICAgICAgc2hvdWxkU3RvcCA9IGNvbmRpdGlvblJlc3VsdDtcbiAgICB9IHdoaWxlICghc2hvdWxkU3RvcCk7XG5cbiAgICBhd2FpdCBjb250ZXh0LmVtaXQoeyB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5MT09QX0NPTVBMRVRFRCB9KTtcblxuICAgIHJldHVybiB7IFtzdGF0ZVBvcnRdOiBzdGF0ZSwgaXRlcmF0aW9uczogaXRlcmF0aW9uIH07XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RNZXRhZGF0YShjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHQpOiBHcmFwaExvb3BNZXRhZGF0YSB7XG4gICAgY29uc3QgcmF3ID0gKGNvbnRleHQubm9kZSBhcyBhbnkpLmdyYXBoPy5tZXRhZGF0YT8ubG9vcCA/P1xuICAgICAgKGNvbnRleHQubWV0YWRhdGEgYXMgYW55KT8ubG9vcDtcbiAgICBpZiAoIXJhdykge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoSW5wdXRFcnJvcihcInVudGlsIG5vZGUgaXMgbWlzc2luZyBsb29wIG1ldGFkYXRhXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcmF3IGFzIEdyYXBoTG9vcE1ldGFkYXRhO1xuICB9XG59XG4iXX0=
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { GRAPH_DEFAULT_MAX_LOOP_ITERATIONS, GraphExecutionEventType } from "./../constants.js";
|
|
2
|
-
import { GraphInputError } from "./../errors/GraphInputError.js";
|
|
3
|
-
import { GraphLoopLimitError } from "./../errors/GraphLoopLimitError.js";
|
|
4
|
-
import { GraphConditionEvaluator } from "./GraphConditionEvaluator.js";
|
|
5
|
-
/**
|
|
6
|
-
* Executor for `core.loop.while` nodes.
|
|
7
|
-
*
|
|
8
|
-
* Expects input:
|
|
9
|
-
* - `state`: initial state
|
|
10
|
-
*
|
|
11
|
-
* Produces output:
|
|
12
|
-
* - `state`: final state
|
|
13
|
-
* - `iterations`: number of iterations executed
|
|
14
|
-
*/
|
|
15
|
-
export class WhileGraphNodeExecutor {
|
|
16
|
-
constructor(engine) {
|
|
17
|
-
this.engine = engine;
|
|
18
|
-
this.evaluator = new GraphConditionEvaluator();
|
|
19
|
-
}
|
|
20
|
-
async execute(input, context) {
|
|
21
|
-
const metadata = this.extractMetadata(context);
|
|
22
|
-
const maxIterations = metadata.maxIterations ?? GRAPH_DEFAULT_MAX_LOOP_ITERATIONS;
|
|
23
|
-
const condition = metadata.condition;
|
|
24
|
-
if (!condition) {
|
|
25
|
-
throw new GraphInputError("while node is missing a condition");
|
|
26
|
-
}
|
|
27
|
-
const statePort = metadata.statePort ?? "state";
|
|
28
|
-
const bodyWorkflow = metadata.body;
|
|
29
|
-
let state = input.state;
|
|
30
|
-
let iteration = 0;
|
|
31
|
-
await context.emit({ type: GraphExecutionEventType.LOOP_STARTED });
|
|
32
|
-
while (this.evaluator.evaluate(condition, state)) {
|
|
33
|
-
if (iteration >= maxIterations) {
|
|
34
|
-
await context.emit({
|
|
35
|
-
type: GraphExecutionEventType.LOOP_LIMIT_REACHED,
|
|
36
|
-
iteration,
|
|
37
|
-
});
|
|
38
|
-
throw new GraphLoopLimitError(`while loop exceeded max iterations (${maxIterations})`);
|
|
39
|
-
}
|
|
40
|
-
await context.emit({
|
|
41
|
-
type: GraphExecutionEventType.LOOP_CONDITION_EVALUATED,
|
|
42
|
-
iteration,
|
|
43
|
-
payload: { result: true },
|
|
44
|
-
});
|
|
45
|
-
await context.emit({
|
|
46
|
-
type: GraphExecutionEventType.LOOP_ITERATION_STARTED,
|
|
47
|
-
iteration,
|
|
48
|
-
});
|
|
49
|
-
const childResult = await this.engine.execute(bodyWorkflow, { [statePort]: state, iteration }, {
|
|
50
|
-
parentRunId: context.runId,
|
|
51
|
-
path: [...context.path, `iteration:${iteration}`],
|
|
52
|
-
});
|
|
53
|
-
state = childResult.outputs[statePort];
|
|
54
|
-
await context.emit({
|
|
55
|
-
type: GraphExecutionEventType.LOOP_ITERATION_COMPLETED,
|
|
56
|
-
iteration,
|
|
57
|
-
});
|
|
58
|
-
iteration++;
|
|
59
|
-
}
|
|
60
|
-
await context.emit({ type: GraphExecutionEventType.LOOP_COMPLETED });
|
|
61
|
-
return { [statePort]: state, iterations: iteration };
|
|
62
|
-
}
|
|
63
|
-
extractMetadata(context) {
|
|
64
|
-
const raw = context.node.graph?.metadata?.loop ??
|
|
65
|
-
context.metadata?.loop;
|
|
66
|
-
if (!raw) {
|
|
67
|
-
throw new GraphInputError("while node is missing loop metadata");
|
|
68
|
-
}
|
|
69
|
-
return raw;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2hpbGVHcmFwaE5vZGVFeGVjdXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9sb29wcy9XaGlsZUdyYXBoTm9kZUV4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSx1QkFBdUIsRUFBRSwwQkFBcUI7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSx1Q0FBa0M7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDJDQUFzQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUscUNBQWtDO0FBRXBFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFBNkIsTUFBNEI7UUFBNUIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFGeEMsY0FBUyxHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQztJQUVDLENBQUM7SUFFN0QsS0FBSyxDQUFDLE9BQU8sQ0FDWCxLQUEyQixFQUMzQixPQUE4QjtRQUU5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sYUFBYSxHQUNqQixRQUFRLENBQUMsYUFBYSxJQUFJLGlDQUFpQyxDQUFDO1FBQzlELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLGVBQWUsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBK0IsQ0FBQztRQUU5RCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUVsQixNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUVuRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pELElBQUksU0FBUyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxrQkFBa0I7b0JBQ2hELFNBQVM7aUJBQ1YsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0IsdUNBQXVDLGFBQWEsR0FBRyxDQUN4RCxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLHdCQUF3QjtnQkFDdEQsU0FBUztnQkFDVCxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2FBQzFCLENBQUMsQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLHNCQUFzQjtnQkFDcEQsU0FBUzthQUNWLENBQUMsQ0FBQztZQUVILE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQzNDLFlBQVksRUFDWixFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUNqQztnQkFDRSxXQUFXLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQzFCLElBQUksRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxhQUFhLFNBQVMsRUFBRSxDQUFDO2FBQ2xELENBQ0YsQ0FBQztZQUVGLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXZDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLHdCQUF3QjtnQkFDdEQsU0FBUzthQUNWLENBQUMsQ0FBQztZQUVILFNBQVMsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxPQUE4QjtRQUNwRCxNQUFNLEdBQUcsR0FBSSxPQUFPLENBQUMsSUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTtZQUNwRCxPQUFPLENBQUMsUUFBZ0IsRUFBRSxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLGVBQWUsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxPQUFPLEdBQXdCLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9sb29wcy9XaGlsZUdyYXBoTm9kZUV4ZWN1dG9yXG4gKiBAc3VtbWFyeSBXaGlsZSBsb29wIG5vZGUgZXhlY3V0b3IuXG4gKiBAZGVzY3JpcHRpb24gRXhlY3V0ZXMgYSBib2R5IHdvcmtmbG93IHJlcGVhdGVkbHkgd2hpbGUgYSBjb25kaXRpb24gaXMgdHJ1ZSwgZW5mb3JjaW5nIGEgbWF4aW11bSBpdGVyYXRpb24gbGltaXQuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRXhlY3V0b3IgfSBmcm9tIFwiLi4vZXhlY3V0aW9uL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gXCIuLi9leGVjdXRpb24vR3JhcGhFeGVjdXRpb25Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uRW5naW5lIH0gZnJvbSBcIi4uL2V4ZWN1dGlvbi9HcmFwaEV4ZWN1dGlvbkVuZ2luZVwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblZhbHVlcywgR3JhcGhMb29wTWV0YWRhdGEgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHsgR1JBUEhfREVGQVVMVF9NQVhfTE9PUF9JVEVSQVRJT05TLCBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEdyYXBoSW5wdXRFcnJvciB9IGZyb20gXCIuLi9lcnJvcnMvR3JhcGhJbnB1dEVycm9yXCI7XG5pbXBvcnQgeyBHcmFwaExvb3BMaW1pdEVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaExvb3BMaW1pdEVycm9yXCI7XG5pbXBvcnQgeyBHcmFwaENvbmRpdGlvbkV2YWx1YXRvciB9IGZyb20gXCIuL0dyYXBoQ29uZGl0aW9uRXZhbHVhdG9yXCI7XG5cbi8qKlxuICogRXhlY3V0b3IgZm9yIGBjb3JlLmxvb3Aud2hpbGVgIG5vZGVzLlxuICpcbiAqIEV4cGVjdHMgaW5wdXQ6XG4gKiAtIGBzdGF0ZWA6IGluaXRpYWwgc3RhdGVcbiAqXG4gKiBQcm9kdWNlcyBvdXRwdXQ6XG4gKiAtIGBzdGF0ZWA6IGZpbmFsIHN0YXRlXG4gKiAtIGBpdGVyYXRpb25zYDogbnVtYmVyIG9mIGl0ZXJhdGlvbnMgZXhlY3V0ZWRcbiAqL1xuZXhwb3J0IGNsYXNzIFdoaWxlR3JhcGhOb2RlRXhlY3V0b3IgaW1wbGVtZW50cyBHcmFwaE5vZGVFeGVjdXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZhbHVhdG9yID0gbmV3IEdyYXBoQ29uZGl0aW9uRXZhbHVhdG9yKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbmdpbmU6IEdyYXBoRXhlY3V0aW9uRW5naW5lKSB7fVxuXG4gIGFzeW5jIGV4ZWN1dGUoXG4gICAgaW5wdXQ6IEdyYXBoRXhlY3V0aW9uVmFsdWVzLFxuICAgIGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dFxuICApOiBQcm9taXNlPEdyYXBoRXhlY3V0aW9uVmFsdWVzPiB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmV4dHJhY3RNZXRhZGF0YShjb250ZXh0KTtcbiAgICBjb25zdCBtYXhJdGVyYXRpb25zID1cbiAgICAgIG1ldGFkYXRhLm1heEl0ZXJhdGlvbnMgPz8gR1JBUEhfREVGQVVMVF9NQVhfTE9PUF9JVEVSQVRJT05TO1xuICAgIGNvbnN0IGNvbmRpdGlvbiA9IG1ldGFkYXRhLmNvbmRpdGlvbjtcbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoSW5wdXRFcnJvcihcIndoaWxlIG5vZGUgaXMgbWlzc2luZyBhIGNvbmRpdGlvblwiKTtcbiAgICB9XG4gICAgY29uc3Qgc3RhdGVQb3J0ID0gbWV0YWRhdGEuc3RhdGVQb3J0ID8/IFwic3RhdGVcIjtcbiAgICBjb25zdCBib2R5V29ya2Zsb3cgPSBtZXRhZGF0YS5ib2R5IGFzIEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uO1xuXG4gICAgbGV0IHN0YXRlID0gaW5wdXQuc3RhdGU7XG4gICAgbGV0IGl0ZXJhdGlvbiA9IDA7XG5cbiAgICBhd2FpdCBjb250ZXh0LmVtaXQoeyB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5MT09QX1NUQVJURUQgfSk7XG5cbiAgICB3aGlsZSAodGhpcy5ldmFsdWF0b3IuZXZhbHVhdGUoY29uZGl0aW9uLCBzdGF0ZSkpIHtcbiAgICAgIGlmIChpdGVyYXRpb24gPj0gbWF4SXRlcmF0aW9ucykge1xuICAgICAgICBhd2FpdCBjb250ZXh0LmVtaXQoe1xuICAgICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfTElNSVRfUkVBQ0hFRCxcbiAgICAgICAgICBpdGVyYXRpb24sXG4gICAgICAgIH0pO1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhMb29wTGltaXRFcnJvcihcbiAgICAgICAgICBgd2hpbGUgbG9vcCBleGNlZWRlZCBtYXggaXRlcmF0aW9ucyAoJHttYXhJdGVyYXRpb25zfSlgXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGNvbnRleHQuZW1pdCh7XG4gICAgICAgIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlLkxPT1BfQ09ORElUSU9OX0VWQUxVQVRFRCxcbiAgICAgICAgaXRlcmF0aW9uLFxuICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdDogdHJ1ZSB9LFxuICAgICAgfSk7XG4gICAgICBhd2FpdCBjb250ZXh0LmVtaXQoe1xuICAgICAgICB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5MT09QX0lURVJBVElPTl9TVEFSVEVELFxuICAgICAgICBpdGVyYXRpb24sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY2hpbGRSZXN1bHQgPSBhd2FpdCB0aGlzLmVuZ2luZS5leGVjdXRlKFxuICAgICAgICBib2R5V29ya2Zsb3csXG4gICAgICAgIHsgW3N0YXRlUG9ydF06IHN0YXRlLCBpdGVyYXRpb24gfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmVudFJ1bklkOiBjb250ZXh0LnJ1bklkLFxuICAgICAgICAgIHBhdGg6IFsuLi5jb250ZXh0LnBhdGgsIGBpdGVyYXRpb246JHtpdGVyYXRpb259YF0sXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHN0YXRlID0gY2hpbGRSZXN1bHQub3V0cHV0c1tzdGF0ZVBvcnRdO1xuXG4gICAgICBhd2FpdCBjb250ZXh0LmVtaXQoe1xuICAgICAgICB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5MT09QX0lURVJBVElPTl9DT01QTEVURUQsXG4gICAgICAgIGl0ZXJhdGlvbixcbiAgICAgIH0pO1xuXG4gICAgICBpdGVyYXRpb24rKztcbiAgICB9XG5cbiAgICBhd2FpdCBjb250ZXh0LmVtaXQoeyB0eXBlOiBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZS5MT09QX0NPTVBMRVRFRCB9KTtcblxuICAgIHJldHVybiB7IFtzdGF0ZVBvcnRdOiBzdGF0ZSwgaXRlcmF0aW9uczogaXRlcmF0aW9uIH07XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RNZXRhZGF0YShjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHQpOiBHcmFwaExvb3BNZXRhZGF0YSB7XG4gICAgY29uc3QgcmF3ID0gKGNvbnRleHQubm9kZSBhcyBhbnkpLmdyYXBoPy5tZXRhZGF0YT8ubG9vcCA/P1xuICAgICAgKGNvbnRleHQubWV0YWRhdGEgYXMgYW55KT8ubG9vcDtcbiAgICBpZiAoIXJhdykge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoSW5wdXRFcnJvcihcIndoaWxlIG5vZGUgaXMgbWlzc2luZyBsb29wIG1ldGFkYXRhXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcmF3IGFzIEdyYXBoTG9vcE1ldGFkYXRhO1xuICB9XG59XG4iXX0=
|
|
@@ -1,12 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvbG9vcHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILDZDQUEwQztBQUMxQyxrREFBK0M7QUFDL0MsK0NBQTRDO0FBQzVDLDhDQUEyQztBQUMzQyw0Q0FBeUM7QUFDekMsNENBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9sb29wc1xuICogQHN1bW1hcnkgU3RydWN0dXJlZCBsb29wIGV4ZWN1dG9ycy5cbiAqIEBkZXNjcmlwdGlvbiBSZS1leHBvcnRzIHRoZSBjb25kaXRpb24gZXZhbHVhdG9yLCBsb29wIGV4ZWN1dGlvbiBjb250ZXh0LCBhbmQgZm9yZWFjaC93aGlsZS91bnRpbCBleGVjdXRvcnMuXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoQ29uZGl0aW9uRXZhbHVhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Db25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaExvb3BFeGVjdXRpb25Db250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Gb3JlYWNoR3JhcGhOb2RlRXhlY3V0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1doaWxlR3JhcGhOb2RlRXhlY3V0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1VudGlsR3JhcGhOb2RlRXhlY3V0b3JcIjtcbiJdfQ==
|