@decaf-ts/integrations 0.3.7 → 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/cjs/nest/index.cjs +2 -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/esm/nest/index.js +1 -2
- 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/lib/types/nest/index.d.cts +0 -1
- package/lib/types/nest/index.d.mts +0 -1
- package/package.json +25 -3
- package/lib/cjs/graph/constants.cjs +0 -94
- package/lib/cjs/graph/decorators.cjs +0 -4
- package/lib/cjs/graph/errors/GraphCycleError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphExecutionError.cjs +0 -27
- package/lib/cjs/graph/errors/GraphInputError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphPinningError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphPortError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphStoreError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphTopologyError.cjs +0 -20
- package/lib/cjs/graph/events/GraphExecutionEvent.cjs +0 -4
- package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +0 -40
- package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +0 -37
- package/lib/cjs/graph/events/GraphExecutionObserver.cjs +0 -4
- package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +0 -4
- package/lib/cjs/graph/execution/GraphExecutionContext.cjs +0 -79
- package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +0 -407
- package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +0 -32
- package/lib/cjs/graph/execution/GraphExecutionResult.cjs +0 -30
- package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +0 -4
- package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +0 -103
- package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +0 -87
- package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +0 -84
- package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +0 -85
- package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +0 -16
- package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +0 -76
- package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +0 -77
- package/lib/cjs/graph/nodes/base.cjs +0 -35
- package/lib/cjs/graph/nodes/category-styles.cjs +0 -38
- package/lib/cjs/graph/nodes/flow-control.cjs +0 -464
- package/lib/cjs/graph/nodes/triggers.cjs +0 -250
- package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +0 -28
- package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +0 -20
- package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +0 -34
- package/lib/cjs/graph/pinning/GraphPinningService.cjs +0 -191
- package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +0 -197
- package/lib/cjs/graph/planning/GraphRelationResolver.cjs +0 -172
- package/lib/cjs/graph/planning/GraphTopology.cjs +0 -57
- package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +0 -44
- package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +0 -27
- package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +0 -53
- package/lib/cjs/graph/store/GraphCachedValue.cjs +0 -4
- package/lib/cjs/graph/store/GraphValueKey.cjs +0 -4
- package/lib/cjs/graph/store/GraphValueStore.cjs +0 -76
- package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +0 -4
- package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +0 -69
- package/lib/cjs/graph/types.cjs +0 -4
- package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +0 -33
- package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +0 -58
- package/lib/cjs/graph/validation/GraphValueValidator.cjs +0 -52
- package/lib/esm/graph/constants.js +0 -106
- package/lib/esm/graph/decorators.js +0 -2
- package/lib/esm/graph/errors/GraphCycleError.js +0 -15
- package/lib/esm/graph/errors/GraphExecutionError.js +0 -22
- package/lib/esm/graph/errors/GraphInputError.js +0 -15
- package/lib/esm/graph/errors/GraphLoopLimitError.js +0 -15
- package/lib/esm/graph/errors/GraphPinningError.js +0 -15
- package/lib/esm/graph/errors/GraphPortError.js +0 -15
- package/lib/esm/graph/errors/GraphStoreError.js +0 -15
- package/lib/esm/graph/errors/GraphTopologyError.js +0 -15
- package/lib/esm/graph/errors/index.js +0 -14
- package/lib/esm/graph/events/GraphExecutionEvent.js +0 -2
- package/lib/esm/graph/events/GraphExecutionEventEmitter.js +0 -35
- package/lib/esm/graph/events/GraphExecutionEventFactory.js +0 -32
- package/lib/esm/graph/events/GraphExecutionObserver.js +0 -2
- package/lib/esm/graph/events/index.js +0 -10
- package/lib/esm/graph/execution/CodeSandboxEvaluator.js +0 -18
- package/lib/esm/graph/execution/GraphExecutionContext.js +0 -74
- package/lib/esm/graph/execution/GraphExecutionEngine.js +0 -402
- package/lib/esm/graph/execution/GraphExecutionFrame.js +0 -27
- package/lib/esm/graph/execution/GraphExecutionResult.js +0 -26
- package/lib/esm/graph/execution/GraphNodeExecutor.js +0 -2
- package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +0 -98
- package/lib/esm/graph/execution/index.js +0 -13
- package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +0 -82
- package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +0 -79
- package/lib/esm/graph/loops/GraphConditionEvaluator.js +0 -80
- package/lib/esm/graph/loops/GraphLoopExecutionContext.js +0 -11
- package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +0 -71
- package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +0 -72
- package/lib/esm/graph/loops/index.js +0 -12
- package/lib/esm/graph/nodes/agent.js +0 -101
- package/lib/esm/graph/nodes/base.js +0 -30
- package/lib/esm/graph/nodes/category-styles.js +0 -34
- package/lib/esm/graph/nodes/flow-control.js +0 -455
- package/lib/esm/graph/nodes/index.js +0 -18
- package/lib/esm/graph/nodes/triggers.js +0 -241
- package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +0 -23
- package/lib/esm/graph/pinning/GraphPinningMetadata.js +0 -15
- package/lib/esm/graph/pinning/GraphPinningPolicy.js +0 -29
- package/lib/esm/graph/pinning/GraphPinningService.js +0 -186
- package/lib/esm/graph/pinning/index.js +0 -10
- package/lib/esm/graph/planning/GraphExecutionPlan.js +0 -2
- package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +0 -7
- package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +0 -2
- package/lib/esm/graph/planning/GraphExecutionPlanNode.js +0 -2
- package/lib/esm/graph/planning/GraphExecutionPlanner.js +0 -192
- package/lib/esm/graph/planning/GraphRelationResolver.js +0 -167
- package/lib/esm/graph/planning/GraphTopology.js +0 -52
- package/lib/esm/graph/planning/index.js +0 -13
- package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +0 -39
- package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +0 -22
- package/lib/esm/graph/registry/index.js +0 -8
- package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +0 -48
- package/lib/esm/graph/snapshots/index.js +0 -7
- package/lib/esm/graph/store/GraphCachedValue.js +0 -2
- package/lib/esm/graph/store/GraphValueKey.js +0 -7
- package/lib/esm/graph/store/GraphValueStore.js +0 -71
- package/lib/esm/graph/store/GraphValueStoreAdapter.js +0 -2
- package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +0 -64
- package/lib/esm/graph/store/index.js +0 -11
- package/lib/esm/graph/types.js +0 -2
- package/lib/esm/graph/validation/GraphDefinitionValidator.js +0 -28
- package/lib/esm/graph/validation/GraphPortSchemaResolver.js +0 -53
- package/lib/esm/graph/validation/GraphValueValidator.js +0 -47
- package/lib/esm/graph/validation/index.js +0 -9
- package/lib/types/graph/constants.d.cts +0 -101
- package/lib/types/graph/constants.d.mts +0 -101
- /package/lib/types/graph/{decorators.d.cts → engine/decorators.d.cts} +0 -0
- /package/lib/types/graph/{decorators.d.mts → engine/decorators.d.mts} +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/index.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/index.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/index.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/index.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/index.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/index.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/index.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/index.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/index.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/index.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/index.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/index.d.mts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.cts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.mts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.cts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.mts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/index.d.cts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/index.d.mts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.cts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.mts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.cts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/index.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/index.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/index.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/index.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/agent.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/agent.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/base.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/base.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/index.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/index.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.mts +0 -0
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @module integrations/graph/nodes/flow-control
|
|
12
|
+
* @summary Production flow-control node kind declarations (DECAF-32 §22.2.2).
|
|
13
|
+
* @description Canonical `@node`-decorated classes for the ten ALFRED-5
|
|
14
|
+
* flow-control kinds. These are graph-level macros: the engine's planner
|
|
15
|
+
* recognises them as ordinary executable nodes (§5.7) but they have no
|
|
16
|
+
* built-in executors — downstream projects (e.g. ALFRED) register custom
|
|
17
|
+
* executors or compile them into Mastra composition APIs (§22.2.2).
|
|
18
|
+
*
|
|
19
|
+
* The three loop kinds (`core.loop.foreach/while/until`) already have built-in
|
|
20
|
+
* executors (§5.9) and are NOT redeclared here.
|
|
21
|
+
*/
|
|
22
|
+
import { Model, model, required } from "@decaf-ts/decorator-validation";
|
|
23
|
+
import { uielement } from "@decaf-ts/ui-decorators";
|
|
24
|
+
import { graphDefinitionOf, input, node, output, PortDirection, } from "@decaf-ts/ui-decorators/graph";
|
|
25
|
+
import { GraphNode } from "./base.js";
|
|
26
|
+
/**
|
|
27
|
+
* If — conditional branch. Evaluates a `ConditionExpression` (§22.3) and
|
|
28
|
+
* routes the input to the `then` or `else` output.
|
|
29
|
+
*/
|
|
30
|
+
let IfFlowNode = class IfFlowNode extends Model {
|
|
31
|
+
};
|
|
32
|
+
__decorate([
|
|
33
|
+
required(),
|
|
34
|
+
uielement("textarea", { label: "Input value", placeholder: "Value to evaluate" }),
|
|
35
|
+
input({ handle: "value" }),
|
|
36
|
+
__metadata("design:type", Object)
|
|
37
|
+
], IfFlowNode.prototype, "value", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
required(),
|
|
40
|
+
uielement("input", { label: "Then", placeholder: "Output when condition is true" }),
|
|
41
|
+
output({ handle: "then" }),
|
|
42
|
+
__metadata("design:type", Object)
|
|
43
|
+
], IfFlowNode.prototype, "then", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
required(),
|
|
46
|
+
uielement("input", { label: "Else", placeholder: "Output when condition is false" }),
|
|
47
|
+
output({ handle: "else" }),
|
|
48
|
+
__metadata("design:type", Object)
|
|
49
|
+
], IfFlowNode.prototype, "else", void 0);
|
|
50
|
+
IfFlowNode = __decorate([
|
|
51
|
+
node("core.flow.if", {
|
|
52
|
+
kind: "core.flow.if",
|
|
53
|
+
category: "Flow Control",
|
|
54
|
+
color: "#f59e0b",
|
|
55
|
+
icon: "ti-arrows-split-2",
|
|
56
|
+
width: 96,
|
|
57
|
+
height: 96,
|
|
58
|
+
labels: ["flow", "conditional", "branch"],
|
|
59
|
+
metadata: {
|
|
60
|
+
title: "If",
|
|
61
|
+
description: "Conditional branch. Evaluates the configured condition and routes the input to the matching output.",
|
|
62
|
+
condition: { op: "eq", left: { const: true }, right: { const: true } },
|
|
63
|
+
},
|
|
64
|
+
}),
|
|
65
|
+
model()
|
|
66
|
+
], IfFlowNode);
|
|
67
|
+
export { IfFlowNode };
|
|
68
|
+
/**
|
|
69
|
+
* Switch — multi-branch. Routes the input to one of the case output ports
|
|
70
|
+
* or `default` based on matching conditions. Each case defines a
|
|
71
|
+
* {@link SwitchCaseCondition} (graphical or code mode) and a dedicated
|
|
72
|
+
* output port. Cases are stored in `metadata.switch.cases` and the
|
|
73
|
+
* renderer creates dynamic output ports from them (DECAF-32 §22.2.2).
|
|
74
|
+
*
|
|
75
|
+
* The node grows in height as cases are added. Each case gets its own
|
|
76
|
+
* output port on the right side, labeled with the case label.
|
|
77
|
+
*/
|
|
78
|
+
let SwitchFlowNode = class SwitchFlowNode extends GraphNode {
|
|
79
|
+
/**
|
|
80
|
+
* Computes the node's ports, size, and data patch from the given switch
|
|
81
|
+
* metadata. Each case gets its own output port on the right side; the
|
|
82
|
+
* node grows in height as cases are added.
|
|
83
|
+
*/
|
|
84
|
+
static applyMetadata(meta) {
|
|
85
|
+
const definition = graphDefinitionOf(this);
|
|
86
|
+
const basePorts = definition.ports.filter((p) => !meta.cases.some((c) => c.outputPort === p.property));
|
|
87
|
+
const casePorts = meta.cases.map((c) => ({
|
|
88
|
+
property: c.outputPort,
|
|
89
|
+
name: c.label,
|
|
90
|
+
direction: PortDirection.OUTPUT,
|
|
91
|
+
label: c.label,
|
|
92
|
+
required: false,
|
|
93
|
+
hidden: false,
|
|
94
|
+
path: c.outputPort,
|
|
95
|
+
}));
|
|
96
|
+
const caseCount = meta.cases.length;
|
|
97
|
+
return {
|
|
98
|
+
ports: [...basePorts, ...casePorts],
|
|
99
|
+
size: {
|
|
100
|
+
width: definition.width ?? 120,
|
|
101
|
+
height: caseCount > 0 ? 140 + caseCount * 24 : definition.height ?? 140,
|
|
102
|
+
},
|
|
103
|
+
dataPatch: { switchMetadata: meta },
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
__decorate([
|
|
108
|
+
required(),
|
|
109
|
+
uielement("textarea", { label: "Input value", placeholder: "Value to switch on" }),
|
|
110
|
+
input({ handle: "value" }),
|
|
111
|
+
__metadata("design:type", Object)
|
|
112
|
+
], SwitchFlowNode.prototype, "value", void 0);
|
|
113
|
+
__decorate([
|
|
114
|
+
required(),
|
|
115
|
+
uielement("input", { label: "Default", placeholder: "Default output when no case matches" }),
|
|
116
|
+
output({ handle: "default" }),
|
|
117
|
+
__metadata("design:type", Object)
|
|
118
|
+
], SwitchFlowNode.prototype, "default", void 0);
|
|
119
|
+
SwitchFlowNode = __decorate([
|
|
120
|
+
node("core.flow.switch", {
|
|
121
|
+
kind: "core.flow.switch",
|
|
122
|
+
category: "Flow Control",
|
|
123
|
+
color: "#f97316",
|
|
124
|
+
icon: "ti-arrows-shuffle",
|
|
125
|
+
width: 120,
|
|
126
|
+
height: 140,
|
|
127
|
+
labels: ["flow", "switch", "multi-branch"],
|
|
128
|
+
metadata: {
|
|
129
|
+
title: "Switch",
|
|
130
|
+
description: "Multi-branch switch. Routes the input to the first matching case output, or the default output.",
|
|
131
|
+
switch: {
|
|
132
|
+
cases: [],
|
|
133
|
+
defaultPort: "default",
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
}),
|
|
137
|
+
model()
|
|
138
|
+
], SwitchFlowNode);
|
|
139
|
+
export { SwitchFlowNode };
|
|
140
|
+
/**
|
|
141
|
+
* Parallel — splits execution into concurrent branches.
|
|
142
|
+
*/
|
|
143
|
+
let ParallelFlowNode = class ParallelFlowNode extends Model {
|
|
144
|
+
};
|
|
145
|
+
__decorate([
|
|
146
|
+
required(),
|
|
147
|
+
uielement("textarea", { label: "Input value", placeholder: "Value to fan out" }),
|
|
148
|
+
input({ handle: "value" }),
|
|
149
|
+
__metadata("design:type", Object)
|
|
150
|
+
], ParallelFlowNode.prototype, "value", void 0);
|
|
151
|
+
__decorate([
|
|
152
|
+
required(),
|
|
153
|
+
uielement("input", { label: "Branches", placeholder: "Collected branch outputs" }),
|
|
154
|
+
output({ handle: "branches" }),
|
|
155
|
+
__metadata("design:type", Array)
|
|
156
|
+
], ParallelFlowNode.prototype, "branches", void 0);
|
|
157
|
+
ParallelFlowNode = __decorate([
|
|
158
|
+
node("core.flow.parallel", {
|
|
159
|
+
kind: "core.flow.parallel",
|
|
160
|
+
category: "Flow Control",
|
|
161
|
+
color: "#06b6d4",
|
|
162
|
+
icon: "ti-arrows-vertical",
|
|
163
|
+
width: 96,
|
|
164
|
+
height: 96,
|
|
165
|
+
labels: ["flow", "parallel", "concurrent"],
|
|
166
|
+
metadata: {
|
|
167
|
+
title: "Parallel",
|
|
168
|
+
description: "Splits execution into concurrent branches. All branches run in parallel and outputs are collected.",
|
|
169
|
+
branchCount: 2,
|
|
170
|
+
},
|
|
171
|
+
}),
|
|
172
|
+
model()
|
|
173
|
+
], ParallelFlowNode);
|
|
174
|
+
export { ParallelFlowNode };
|
|
175
|
+
/**
|
|
176
|
+
* Merge — normalises branch/parallel outputs into a single output.
|
|
177
|
+
*/
|
|
178
|
+
let MergeFlowNode = class MergeFlowNode extends Model {
|
|
179
|
+
};
|
|
180
|
+
__decorate([
|
|
181
|
+
required(),
|
|
182
|
+
uielement("textarea", { label: "Branch outputs", placeholder: "Outputs to merge" }),
|
|
183
|
+
input({ handle: "values" }),
|
|
184
|
+
__metadata("design:type", Array)
|
|
185
|
+
], MergeFlowNode.prototype, "values", void 0);
|
|
186
|
+
__decorate([
|
|
187
|
+
required(),
|
|
188
|
+
uielement("input", { label: "Merged output", placeholder: "Merged result" }),
|
|
189
|
+
output({ handle: "merged" }),
|
|
190
|
+
__metadata("design:type", Object)
|
|
191
|
+
], MergeFlowNode.prototype, "merged", void 0);
|
|
192
|
+
MergeFlowNode = __decorate([
|
|
193
|
+
node("core.flow.merge", {
|
|
194
|
+
kind: "core.flow.merge",
|
|
195
|
+
category: "Utility",
|
|
196
|
+
color: "#0d9488",
|
|
197
|
+
icon: "ti-arrows-merge",
|
|
198
|
+
width: 96,
|
|
199
|
+
height: 96,
|
|
200
|
+
labels: ["flow", "merge", "join"],
|
|
201
|
+
metadata: {
|
|
202
|
+
title: "Merge",
|
|
203
|
+
description: "Merges multiple branch outputs into a single normalised output object.",
|
|
204
|
+
strategy: "concat",
|
|
205
|
+
},
|
|
206
|
+
}),
|
|
207
|
+
model()
|
|
208
|
+
], MergeFlowNode);
|
|
209
|
+
export { MergeFlowNode };
|
|
210
|
+
/**
|
|
211
|
+
* Map — transforms the current input into a new output object.
|
|
212
|
+
*/
|
|
213
|
+
let MapFlowNode = class MapFlowNode extends Model {
|
|
214
|
+
};
|
|
215
|
+
__decorate([
|
|
216
|
+
required(),
|
|
217
|
+
uielement("textarea", { label: "Input value", placeholder: "Value to transform" }),
|
|
218
|
+
input({ handle: "value" }),
|
|
219
|
+
__metadata("design:type", Object)
|
|
220
|
+
], MapFlowNode.prototype, "value", void 0);
|
|
221
|
+
__decorate([
|
|
222
|
+
required(),
|
|
223
|
+
uielement("input", { label: "Transformed output", placeholder: "Mapped result" }),
|
|
224
|
+
output({ handle: "result" }),
|
|
225
|
+
__metadata("design:type", Object)
|
|
226
|
+
], MapFlowNode.prototype, "result", void 0);
|
|
227
|
+
MapFlowNode = __decorate([
|
|
228
|
+
node("core.flow.map", {
|
|
229
|
+
kind: "core.flow.map",
|
|
230
|
+
category: "Utility",
|
|
231
|
+
color: "#84cc16",
|
|
232
|
+
icon: "ti-arrows-right-left",
|
|
233
|
+
width: 96,
|
|
234
|
+
height: 96,
|
|
235
|
+
labels: ["flow", "map", "transform"],
|
|
236
|
+
metadata: {
|
|
237
|
+
title: "Map",
|
|
238
|
+
description: "Transforms the current input into a new output object using the configured mapper.",
|
|
239
|
+
mapper: {},
|
|
240
|
+
},
|
|
241
|
+
}),
|
|
242
|
+
model()
|
|
243
|
+
], MapFlowNode);
|
|
244
|
+
export { MapFlowNode };
|
|
245
|
+
/**
|
|
246
|
+
* Delay — pauses execution for a configured duration.
|
|
247
|
+
*/
|
|
248
|
+
let DelayFlowNode = class DelayFlowNode extends Model {
|
|
249
|
+
};
|
|
250
|
+
__decorate([
|
|
251
|
+
required(),
|
|
252
|
+
uielement("textarea", { label: "Input value", placeholder: "Value to forward after delay" }),
|
|
253
|
+
input({ handle: "value" }),
|
|
254
|
+
__metadata("design:type", Object)
|
|
255
|
+
], DelayFlowNode.prototype, "value", void 0);
|
|
256
|
+
__decorate([
|
|
257
|
+
required(),
|
|
258
|
+
uielement("input", { label: "Output value", placeholder: "Forwarded value" }),
|
|
259
|
+
output({ handle: "value" }),
|
|
260
|
+
__metadata("design:type", Object)
|
|
261
|
+
], DelayFlowNode.prototype, "valueOut", void 0);
|
|
262
|
+
DelayFlowNode = __decorate([
|
|
263
|
+
node("core.flow.delay", {
|
|
264
|
+
kind: "core.flow.delay",
|
|
265
|
+
category: "Utility",
|
|
266
|
+
color: "#a3a3a3",
|
|
267
|
+
icon: "ti-clock-hour-4",
|
|
268
|
+
width: 96,
|
|
269
|
+
height: 96,
|
|
270
|
+
labels: ["flow", "delay", "wait"],
|
|
271
|
+
metadata: {
|
|
272
|
+
title: "Delay",
|
|
273
|
+
description: "Pauses execution for the configured duration (in milliseconds), then forwards the input unchanged.",
|
|
274
|
+
durationMs: 1000,
|
|
275
|
+
},
|
|
276
|
+
}),
|
|
277
|
+
model()
|
|
278
|
+
], DelayFlowNode);
|
|
279
|
+
export { DelayFlowNode };
|
|
280
|
+
/**
|
|
281
|
+
* Error boundary — try/catch/finally workflow behaviour.
|
|
282
|
+
*/
|
|
283
|
+
let ErrorBoundaryFlowNode = class ErrorBoundaryFlowNode extends Model {
|
|
284
|
+
};
|
|
285
|
+
__decorate([
|
|
286
|
+
required(),
|
|
287
|
+
uielement("textarea", { label: "Input value", placeholder: "Value to guard" }),
|
|
288
|
+
input({ handle: "value" }),
|
|
289
|
+
__metadata("design:type", Object)
|
|
290
|
+
], ErrorBoundaryFlowNode.prototype, "value", void 0);
|
|
291
|
+
__decorate([
|
|
292
|
+
required(),
|
|
293
|
+
uielement("input", { label: "Result", placeholder: "Output on success" }),
|
|
294
|
+
output({ handle: "result" }),
|
|
295
|
+
__metadata("design:type", Object)
|
|
296
|
+
], ErrorBoundaryFlowNode.prototype, "result", void 0);
|
|
297
|
+
__decorate([
|
|
298
|
+
required(),
|
|
299
|
+
uielement("input", { label: "Error", placeholder: "Output on failure" }),
|
|
300
|
+
output({ handle: "error" }),
|
|
301
|
+
__metadata("design:type", Object)
|
|
302
|
+
], ErrorBoundaryFlowNode.prototype, "error", void 0);
|
|
303
|
+
ErrorBoundaryFlowNode = __decorate([
|
|
304
|
+
node("core.flow.errorBoundary", {
|
|
305
|
+
kind: "core.flow.errorBoundary",
|
|
306
|
+
category: "Flow Control",
|
|
307
|
+
color: "#ef4444",
|
|
308
|
+
icon: "ti-shield-check",
|
|
309
|
+
width: 96,
|
|
310
|
+
height: 96,
|
|
311
|
+
labels: ["flow", "error", "try-catch"],
|
|
312
|
+
metadata: {
|
|
313
|
+
title: "Error boundary",
|
|
314
|
+
description: "Wraps the input in a try/catch/finally. Emits the result on success, or the error on failure.",
|
|
315
|
+
finally: false,
|
|
316
|
+
},
|
|
317
|
+
}),
|
|
318
|
+
model()
|
|
319
|
+
], ErrorBoundaryFlowNode);
|
|
320
|
+
export { ErrorBoundaryFlowNode };
|
|
321
|
+
/**
|
|
322
|
+
* Human approval — suspends execution until a human approves or rejects.
|
|
323
|
+
*/
|
|
324
|
+
let HumanApprovalFlowNode = class HumanApprovalFlowNode extends Model {
|
|
325
|
+
};
|
|
326
|
+
__decorate([
|
|
327
|
+
required(),
|
|
328
|
+
uielement("textarea", { label: "Input value", placeholder: "Value pending approval" }),
|
|
329
|
+
input({ handle: "value" }),
|
|
330
|
+
__metadata("design:type", Object)
|
|
331
|
+
], HumanApprovalFlowNode.prototype, "value", void 0);
|
|
332
|
+
__decorate([
|
|
333
|
+
required(),
|
|
334
|
+
uielement("input", { label: "Approved", placeholder: "Output when approved" }),
|
|
335
|
+
output({ handle: "approved" }),
|
|
336
|
+
__metadata("design:type", Object)
|
|
337
|
+
], HumanApprovalFlowNode.prototype, "approved", void 0);
|
|
338
|
+
__decorate([
|
|
339
|
+
required(),
|
|
340
|
+
uielement("input", { label: "Rejected", placeholder: "Output when rejected" }),
|
|
341
|
+
output({ handle: "rejected" }),
|
|
342
|
+
__metadata("design:type", Object)
|
|
343
|
+
], HumanApprovalFlowNode.prototype, "rejected", void 0);
|
|
344
|
+
HumanApprovalFlowNode = __decorate([
|
|
345
|
+
node("core.flow.humanApproval", {
|
|
346
|
+
kind: "core.flow.humanApproval",
|
|
347
|
+
category: "Flow Control",
|
|
348
|
+
color: "#d946ef",
|
|
349
|
+
icon: "ti-user-check",
|
|
350
|
+
width: 96,
|
|
351
|
+
height: 96,
|
|
352
|
+
labels: ["flow", "approval", "suspend"],
|
|
353
|
+
metadata: {
|
|
354
|
+
title: "Human approval",
|
|
355
|
+
description: "Suspends execution until a human approves or rejects. Emits the approved value or a rejection.",
|
|
356
|
+
approvers: [],
|
|
357
|
+
timeoutMs: 86400000,
|
|
358
|
+
},
|
|
359
|
+
}),
|
|
360
|
+
model()
|
|
361
|
+
], HumanApprovalFlowNode);
|
|
362
|
+
export { HumanApprovalFlowNode };
|
|
363
|
+
/**
|
|
364
|
+
* Return — defines and normalises the final workflow output.
|
|
365
|
+
*/
|
|
366
|
+
let ReturnFlowNode = class ReturnFlowNode extends Model {
|
|
367
|
+
};
|
|
368
|
+
__decorate([
|
|
369
|
+
required(),
|
|
370
|
+
uielement("textarea", { label: "Input value", placeholder: "Value to normalise" }),
|
|
371
|
+
input({ handle: "value" }),
|
|
372
|
+
__metadata("design:type", Object)
|
|
373
|
+
], ReturnFlowNode.prototype, "value", void 0);
|
|
374
|
+
__decorate([
|
|
375
|
+
required(),
|
|
376
|
+
uielement("input", { label: "Returned output", placeholder: "Normalised output" }),
|
|
377
|
+
output({ handle: "result" }),
|
|
378
|
+
__metadata("design:type", Object)
|
|
379
|
+
], ReturnFlowNode.prototype, "result", void 0);
|
|
380
|
+
ReturnFlowNode = __decorate([
|
|
381
|
+
node("core.flow.return", {
|
|
382
|
+
kind: "core.flow.return",
|
|
383
|
+
category: "Utility",
|
|
384
|
+
color: "#22c55e",
|
|
385
|
+
icon: "ti-arrow-back-up",
|
|
386
|
+
width: 96,
|
|
387
|
+
height: 96,
|
|
388
|
+
labels: ["flow", "return", "output"],
|
|
389
|
+
metadata: {
|
|
390
|
+
title: "Return",
|
|
391
|
+
description: "Normalises the input into the final workflow output object.",
|
|
392
|
+
outputSchema: {},
|
|
393
|
+
},
|
|
394
|
+
}),
|
|
395
|
+
model()
|
|
396
|
+
], ReturnFlowNode);
|
|
397
|
+
export { ReturnFlowNode };
|
|
398
|
+
/**
|
|
399
|
+
* Code — sandboxed JS/TS code execution (ALFRED-5 §7).
|
|
400
|
+
*
|
|
401
|
+
* The engine does not implement the sandbox directly (§22.4). A future
|
|
402
|
+
* executor may wrap the `CodeSandbox` contract (ALFRED-5 §7.17) as a
|
|
403
|
+
* pluggable executor. The placeholder syntax (`{{ $input }}`, `{{ $item }}`,
|
|
404
|
+
* `{{ $index }}`, `{{ $vars }}`, `{{ $node["Name"].output }}`) is Mastra-
|
|
405
|
+
* agnostic and lives in the downstream project's `modules/core` (ALFRED-6).
|
|
406
|
+
*/
|
|
407
|
+
let CodeFlowNode = class CodeFlowNode extends Model {
|
|
408
|
+
};
|
|
409
|
+
__decorate([
|
|
410
|
+
required(),
|
|
411
|
+
uielement("textarea", { label: "Input", placeholder: "Input object (accessible as $input)" }),
|
|
412
|
+
input({ handle: "input" }),
|
|
413
|
+
__metadata("design:type", Object)
|
|
414
|
+
], CodeFlowNode.prototype, "input", void 0);
|
|
415
|
+
__decorate([
|
|
416
|
+
required(),
|
|
417
|
+
uielement("input", { label: "Result", placeholder: "Code execution result" }),
|
|
418
|
+
output({ handle: "result" }),
|
|
419
|
+
__metadata("design:type", Object)
|
|
420
|
+
], CodeFlowNode.prototype, "result", void 0);
|
|
421
|
+
CodeFlowNode = __decorate([
|
|
422
|
+
node("core.flow.code", {
|
|
423
|
+
kind: "core.flow.code",
|
|
424
|
+
category: "Utility",
|
|
425
|
+
color: "#7c3aed",
|
|
426
|
+
icon: "ti-code",
|
|
427
|
+
width: 96,
|
|
428
|
+
height: 96,
|
|
429
|
+
labels: ["flow", "code", "sandbox", "transform"],
|
|
430
|
+
metadata: {
|
|
431
|
+
title: "Code",
|
|
432
|
+
description: "Runs user-authored JS/TS in a restricted VM sandbox. Supports placeholder syntax for workflow data references.",
|
|
433
|
+
code: "",
|
|
434
|
+
language: "javascript",
|
|
435
|
+
},
|
|
436
|
+
}),
|
|
437
|
+
model()
|
|
438
|
+
], CodeFlowNode);
|
|
439
|
+
export { CodeFlowNode };
|
|
440
|
+
/**
|
|
441
|
+
* All built-in flow-control node constructors.
|
|
442
|
+
*/
|
|
443
|
+
export const GRAPH_FLOW_CONTROL_NODES = [
|
|
444
|
+
IfFlowNode,
|
|
445
|
+
SwitchFlowNode,
|
|
446
|
+
ParallelFlowNode,
|
|
447
|
+
MergeFlowNode,
|
|
448
|
+
MapFlowNode,
|
|
449
|
+
DelayFlowNode,
|
|
450
|
+
ErrorBoundaryFlowNode,
|
|
451
|
+
HumanApprovalFlowNode,
|
|
452
|
+
ReturnFlowNode,
|
|
453
|
+
CodeFlowNode,
|
|
454
|
+
];
|
|
455
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3NoYXJlZC9ub2Rlcy9mbG93LWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsSUFBSSxFQUNKLE1BQU0sRUFDTixhQUFhLEdBRWQsTUFBTSwrQkFBK0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFlO0FBRW5DOzs7R0FHRztBQWdCSSxJQUFNLFVBQVUsR0FBaEIsTUFBTSxVQUFXLFNBQVEsS0FBSztDQWVwQyxDQUFBO0FBWEM7SUFIQyxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztJQUNqRixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7O3lDQUNYO0FBS2hCO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLCtCQUErQixFQUFFLENBQUM7SUFDbkYsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDOzt3Q0FDWjtBQUtmO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGdDQUFnQyxFQUFFLENBQUM7SUFDcEYsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFB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O1lBQzdILElBQUksRUFBRSxFQUFFO1lBQ1IsUUFBUSxFQUFFLFlBQVk7U0FDdkI7S0FDRixDQUFDO0lBQ0QsS0FBSyxFQUFFO0dBQ0ssWUFBWSxDQVV4Qjs7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLFVBQVU7SUFDVixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixXQUFXO0lBQ1gsYUFBYTtJQUNiLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsY0FBYztJQUNkLFlBQVk7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9ub2Rlcy9mbG93LWNvbnRyb2xcbiAqIEBzdW1tYXJ5IFByb2R1Y3Rpb24gZmxvdy1jb250cm9sIG5vZGUga2luZCBkZWNsYXJhdGlvbnMgKERFQ0FGLTMyIMKnMjIuMi4yKS5cbiAqIEBkZXNjcmlwdGlvbiBDYW5vbmljYWwgYEBub2RlYC1kZWNvcmF0ZWQgY2xhc3NlcyBmb3IgdGhlIHRlbiBBTEZSRUQtNVxuICogZmxvdy1jb250cm9sIGtpbmRzLiBUaGVzZSBhcmUgZ3JhcGgtbGV2ZWwgbWFjcm9zOiB0aGUgZW5naW5lJ3MgcGxhbm5lclxuICogcmVjb2duaXNlcyB0aGVtIGFzIG9yZGluYXJ5IGV4ZWN1dGFibGUgbm9kZXMgKMKnNS43KSBidXQgdGhleSBoYXZlIG5vXG4gKiBidWlsdC1pbiBleGVjdXRvcnMg4oCUIGRvd25zdHJlYW0gcHJvamVjdHMgKGUuZy4gQUxGUkVEKSByZWdpc3RlciBjdXN0b21cbiAqIGV4ZWN1dG9ycyBvciBjb21waWxlIHRoZW0gaW50byBNYXN0cmEgY29tcG9zaXRpb24gQVBJcyAowqcyMi4yLjIpLlxuICpcbiAqIFRoZSB0aHJlZSBsb29wIGtpbmRzIChgY29yZS5sb29wLmZvcmVhY2gvd2hpbGUvdW50aWxgKSBhbHJlYWR5IGhhdmUgYnVpbHQtaW5cbiAqIGV4ZWN1dG9ycyAowqc1LjkpIGFuZCBhcmUgTk9UIHJlZGVjbGFyZWQgaGVyZS5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHtcbiAgZ3JhcGhEZWZpbml0aW9uT2YsXG4gIGlucHV0LFxuICBub2RlLFxuICBvdXRwdXQsXG4gIFBvcnREaXJlY3Rpb24sXG4gIHR5cGUgR3JhcGhQb3J0RGVmaW5pdGlvbixcbn0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5pbXBvcnQgdHlwZSB7IE5vZGVNZXRhZGF0YUNoYW5nZSwgU3dpdGNoTm9kZU1ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBHcmFwaE5vZGUgfSBmcm9tIFwiLi9iYXNlXCI7XG5cbi8qKlxuICogSWYg4oCUIGNvbmRpdGlvbmFsIGJyYW5jaC4gRXZhbHVhdGVzIGEgYENvbmRpdGlvbkV4cHJlc3Npb25gICjCpzIyLjMpIGFuZFxuICogcm91dGVzIHRoZSBpbnB1dCB0byB0aGUgYHRoZW5gIG9yIGBlbHNlYCBvdXRwdXQuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmlmXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuaWZcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiNmNTllMGJcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3Mtc3BsaXQtMlwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImNvbmRpdGlvbmFsXCIsIFwiYnJhbmNoXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIklmXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQ29uZGl0aW9uYWwgYnJhbmNoLiBFdmFsdWF0ZXMgdGhlIGNvbmZpZ3VyZWQgY29uZGl0aW9uIGFuZCByb3V0ZXMgdGhlIGlucHV0IHRvIHRoZSBtYXRjaGluZyBvdXRwdXQuXCIsXG4gICAgY29uZGl0aW9uOiB7IG9wOiBcImVxXCIsIGxlZnQ6IHsgY29uc3Q6IHRydWUgfSwgcmlnaHQ6IHsgY29uc3Q6IHRydWUgfSB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgSWZGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gZXZhbHVhdGVcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiVGhlblwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgd2hlbiBjb25kaXRpb24gaXMgdHJ1ZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwidGhlblwiIH0pXG4gIHRoZW4hOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkVsc2VcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gY29uZGl0aW9uIGlzIGZhbHNlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJlbHNlXCIgfSlcbiAgZWxzZSE6IHVua25vd247XG59XG5cbi8qKlxuICogU3dpdGNoIOKAlCBtdWx0aS1icmFuY2guIFJvdXRlcyB0aGUgaW5wdXQgdG8gb25lIG9mIHRoZSBjYXNlIG91dHB1dCBwb3J0c1xuICogb3IgYGRlZmF1bHRgIGJhc2VkIG9uIG1hdGNoaW5nIGNvbmRpdGlvbnMuIEVhY2ggY2FzZSBkZWZpbmVzIGFcbiAqIHtAbGluayBTd2l0Y2hDYXNlQ29uZGl0aW9ufSAoZ3JhcGhpY2FsIG9yIGNvZGUgbW9kZSkgYW5kIGEgZGVkaWNhdGVkXG4gKiBvdXRwdXQgcG9ydC4gQ2FzZXMgYXJlIHN0b3JlZCBpbiBgbWV0YWRhdGEuc3dpdGNoLmNhc2VzYCBhbmQgdGhlXG4gKiByZW5kZXJlciBjcmVhdGVzIGR5bmFtaWMgb3V0cHV0IHBvcnRzIGZyb20gdGhlbSAoREVDQUYtMzIgwqcyMi4yLjIpLlxuICpcbiAqIFRoZSBub2RlIGdyb3dzIGluIGhlaWdodCBhcyBjYXNlcyBhcmUgYWRkZWQuIEVhY2ggY2FzZSBnZXRzIGl0cyBvd25cbiAqIG91dHB1dCBwb3J0IG9uIHRoZSByaWdodCBzaWRlLCBsYWJlbGVkIHdpdGggdGhlIGNhc2UgbGFiZWwuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LnN3aXRjaFwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LnN3aXRjaFwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiI2Y5NzMxNlwiLFxuICBpY29uOiBcInRpLWFycm93cy1zaHVmZmxlXCIsXG4gIHdpZHRoOiAxMjAsXG4gIGhlaWdodDogMTQwLFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJzd2l0Y2hcIiwgXCJtdWx0aS1icmFuY2hcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiU3dpdGNoXCIsXG4gICAgZGVzY3JpcHRpb246IFwiTXVsdGktYnJhbmNoIHN3aXRjaC4gUm91dGVzIHRoZSBpbnB1dCB0byB0aGUgZmlyc3QgbWF0Y2hpbmcgY2FzZSBvdXRwdXQsIG9yIHRoZSBkZWZhdWx0IG91dHB1dC5cIixcbiAgICBzd2l0Y2g6IHtcbiAgICAgIGNhc2VzOiBbXSxcbiAgICAgIGRlZmF1bHRQb3J0OiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU3dpdGNoRmxvd05vZGUgZXh0ZW5kcyBHcmFwaE5vZGUge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBzd2l0Y2ggb25cIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiRGVmYXVsdFwiLCBwbGFjZWhvbGRlcjogXCJEZWZhdWx0IG91dHB1dCB3aGVuIG5vIGNhc2UgbWF0Y2hlc1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiZGVmYXVsdFwiIH0pXG4gIGRlZmF1bHQhOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbm9kZSdzIHBvcnRzLCBzaXplLCBhbmQgZGF0YSBwYXRjaCBmcm9tIHRoZSBnaXZlbiBzd2l0Y2hcbiAgICogbWV0YWRhdGEuIEVhY2ggY2FzZSBnZXRzIGl0cyBvd24gb3V0cHV0IHBvcnQgb24gdGhlIHJpZ2h0IHNpZGU7IHRoZVxuICAgKiBub2RlIGdyb3dzIGluIGhlaWdodCBhcyBjYXNlcyBhcmUgYWRkZWQuXG4gICAqL1xuICBzdGF0aWMgb3ZlcnJpZGUgYXBwbHlNZXRhZGF0YShtZXRhOiBTd2l0Y2hOb2RlTWV0YWRhdGEpOiBOb2RlTWV0YWRhdGFDaGFuZ2Uge1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBncmFwaERlZmluaXRpb25PZih0aGlzIGFzIG5ldmVyKTtcbiAgICBjb25zdCBiYXNlUG9ydHMgPSBkZWZpbml0aW9uLnBvcnRzLmZpbHRlcihcbiAgICAgIChwKSA9PiAhbWV0YS5jYXNlcy5zb21lKChjKSA9PiBjLm91dHB1dFBvcnQgPT09IHAucHJvcGVydHkpXG4gICAgKTtcbiAgICBjb25zdCBjYXNlUG9ydHM6IEdyYXBoUG9ydERlZmluaXRpb25bXSA9IG1ldGEuY2FzZXMubWFwKChjKSA9PiAoe1xuICAgICAgcHJvcGVydHk6IGMub3V0cHV0UG9ydCxcbiAgICAgIG5hbWU6IGMubGFiZWwsXG4gICAgICBkaXJlY3Rpb246IFBvcnREaXJlY3Rpb24uT1VUUFVULFxuICAgICAgbGFiZWw6IGMubGFiZWwsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgcGF0aDogYy5vdXRwdXRQb3J0LFxuICAgIH0pKTtcbiAgICBjb25zdCBjYXNlQ291bnQgPSBtZXRhLmNhc2VzLmxlbmd0aDtcbiAgICByZXR1cm4ge1xuICAgICAgcG9ydHM6IFsuLi5iYXNlUG9ydHMsIC4uLmNhc2VQb3J0c10sXG4gICAgICBzaXplOiB7XG4gICAgICAgIHdpZHRoOiBkZWZpbml0aW9uLndpZHRoID8/IDEyMCxcbiAgICAgICAgaGVpZ2h0OiBjYXNlQ291bnQgPiAwID8gMTQwICsgY2FzZUNvdW50ICogMjQgOiBkZWZpbml0aW9uLmhlaWdodCA/PyAxNDAsXG4gICAgICB9LFxuICAgICAgZGF0YVBhdGNoOiB7IHN3aXRjaE1ldGFkYXRhOiBtZXRhIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcmFsbGVsIOKAlCBzcGxpdHMgZXhlY3V0aW9uIGludG8gY29uY3VycmVudCBicmFuY2hlcy5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cucGFyYWxsZWxcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5wYXJhbGxlbFwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiIzA2YjZkNFwiLFxuICBpY29uOiBcInRpLWFycm93cy12ZXJ0aWNhbFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcInBhcmFsbGVsXCIsIFwiY29uY3VycmVudFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJQYXJhbGxlbFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlNwbGl0cyBleGVjdXRpb24gaW50byBjb25jdXJyZW50IGJyYW5jaGVzLiBBbGwgYnJhbmNoZXMgcnVuIGluIHBhcmFsbGVsIGFuZCBvdXRwdXRzIGFyZSBjb2xsZWN0ZWQuXCIsXG4gICAgYnJhbmNoQ291bnQ6IDIsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBQYXJhbGxlbEZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBmYW4gb3V0XCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkJyYW5jaGVzXCIsIHBsYWNlaG9sZGVyOiBcIkNvbGxlY3RlZCBicmFuY2ggb3V0cHV0c1wiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiYnJhbmNoZXNcIiB9KVxuICBicmFuY2hlcyE6IHVua25vd25bXTtcbn1cblxuLyoqXG4gKiBNZXJnZSDigJQgbm9ybWFsaXNlcyBicmFuY2gvcGFyYWxsZWwgb3V0cHV0cyBpbnRvIGEgc2luZ2xlIG91dHB1dC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cubWVyZ2VcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5tZXJnZVwiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiMwZDk0ODhcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3MtbWVyZ2VcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJtZXJnZVwiLCBcImpvaW5cIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiTWVyZ2VcIixcbiAgICBkZXNjcmlwdGlvbjogXCJNZXJnZXMgbXVsdGlwbGUgYnJhbmNoIG91dHB1dHMgaW50byBhIHNpbmdsZSBub3JtYWxpc2VkIG91dHB1dCBvYmplY3QuXCIsXG4gICAgc3RyYXRlZ3k6IFwiY29uY2F0XCIsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBNZXJnZUZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJCcmFuY2ggb3V0cHV0c1wiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXRzIHRvIG1lcmdlXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlc1wiIH0pXG4gIHZhbHVlcyE6IHVua25vd25bXTtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJNZXJnZWQgb3V0cHV0XCIsIHBsYWNlaG9sZGVyOiBcIk1lcmdlZCByZXN1bHRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcIm1lcmdlZFwiIH0pXG4gIG1lcmdlZCE6IHVua25vd247XG59XG5cbi8qKlxuICogTWFwIOKAlCB0cmFuc2Zvcm1zIHRoZSBjdXJyZW50IGlucHV0IGludG8gYSBuZXcgb3V0cHV0IG9iamVjdC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cubWFwXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cubWFwXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzg0Y2MxNlwiLFxuICBpY29uOiBcInRpLWFycm93cy1yaWdodC1sZWZ0XCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwibWFwXCIsIFwidHJhbnNmb3JtXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIk1hcFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlRyYW5zZm9ybXMgdGhlIGN1cnJlbnQgaW5wdXQgaW50byBhIG5ldyBvdXRwdXQgb2JqZWN0IHVzaW5nIHRoZSBjb25maWd1cmVkIG1hcHBlci5cIixcbiAgICBtYXBwZXI6IHt9LFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgTWFwRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIHRyYW5zZm9ybVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJUcmFuc2Zvcm1lZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTWFwcGVkIHJlc3VsdFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBEZWxheSDigJQgcGF1c2VzIGV4ZWN1dGlvbiBmb3IgYSBjb25maWd1cmVkIGR1cmF0aW9uLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5kZWxheVwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmRlbGF5XCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiI2EzYTNhM1wiLFxuICBpY29uOiBcInRpLWNsb2NrLWhvdXItNFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcImRlbGF5XCIsIFwid2FpdFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJEZWxheVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlBhdXNlcyBleGVjdXRpb24gZm9yIHRoZSBjb25maWd1cmVkIGR1cmF0aW9uIChpbiBtaWxsaXNlY29uZHMpLCB0aGVuIGZvcndhcmRzIHRoZSBpbnB1dCB1bmNoYW5nZWQuXCIsXG4gICAgZHVyYXRpb25NczogMTAwMCxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIERlbGF5Rmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIGZvcndhcmQgYWZ0ZXIgZGVsYXlcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiT3V0cHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIkZvcndhcmRlZCB2YWx1ZVwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZU91dCE6IHVua25vd247XG59XG5cbi8qKlxuICogRXJyb3IgYm91bmRhcnkg4oCUIHRyeS9jYXRjaC9maW5hbGx5IHdvcmtmbG93IGJlaGF2aW91ci5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cuZXJyb3JCb3VuZGFyeVwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LmVycm9yQm91bmRhcnlcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiNlZjQ0NDRcIixcbiAgaWNvbjogXCJ0aS1zaGllbGQtY2hlY2tcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJlcnJvclwiLCBcInRyeS1jYXRjaFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJFcnJvciBib3VuZGFyeVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIldyYXBzIHRoZSBpbnB1dCBpbiBhIHRyeS9jYXRjaC9maW5hbGx5LiBFbWl0cyB0aGUgcmVzdWx0IG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBvbiBmYWlsdXJlLlwiLFxuICAgIGZpbmFsbHk6IGZhbHNlLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgRXJyb3JCb3VuZGFyeUZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBndWFyZFwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZXN1bHRcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IG9uIHN1Y2Nlc3NcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pXG4gIHJlc3VsdCE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiRXJyb3JcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IG9uIGZhaWx1cmVcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcImVycm9yXCIgfSlcbiAgZXJyb3IhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEh1bWFuIGFwcHJvdmFsIOKAlCBzdXNwZW5kcyBleGVjdXRpb24gdW50aWwgYSBodW1hbiBhcHByb3ZlcyBvciByZWplY3RzLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5odW1hbkFwcHJvdmFsXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuaHVtYW5BcHByb3ZhbFwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiI2Q5NDZlZlwiLFxuICBpY29uOiBcInRpLXVzZXItY2hlY2tcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJhcHByb3ZhbFwiLCBcInN1c3BlbmRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiSHVtYW4gYXBwcm92YWxcIixcbiAgICBkZXNjcmlwdGlvbjogXCJTdXNwZW5kcyBleGVjdXRpb24gdW50aWwgYSBodW1hbiBhcHByb3ZlcyBvciByZWplY3RzLiBFbWl0cyB0aGUgYXBwcm92ZWQgdmFsdWUgb3IgYSByZWplY3Rpb24uXCIsXG4gICAgYXBwcm92ZXJzOiBbXSxcbiAgICB0aW1lb3V0TXM6IDg2NDAwMDAwLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgSHVtYW5BcHByb3ZhbEZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSBwZW5kaW5nIGFwcHJvdmFsXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkFwcHJvdmVkXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIGFwcHJvdmVkXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJhcHByb3ZlZFwiIH0pXG4gIGFwcHJvdmVkITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZWplY3RlZFwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgd2hlbiByZWplY3RlZFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVqZWN0ZWRcIiB9KVxuICByZWplY3RlZCE6IHVua25vd247XG59XG5cbi8qKlxuICogUmV0dXJuIOKAlCBkZWZpbmVzIGFuZCBub3JtYWxpc2VzIHRoZSBmaW5hbCB3b3JrZmxvdyBvdXRwdXQuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LnJldHVyblwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93LnJldHVyblwiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiMyMmM1NWVcIixcbiAgaWNvbjogXCJ0aS1hcnJvdy1iYWNrLXVwXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwicmV0dXJuXCIsIFwib3V0cHV0XCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIlJldHVyblwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk5vcm1hbGlzZXMgdGhlIGlucHV0IGludG8gdGhlIGZpbmFsIHdvcmtmbG93IG91dHB1dCBvYmplY3QuXCIsXG4gICAgb3V0cHV0U2NoZW1hOiB7fSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFJldHVybkZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBub3JtYWxpc2VcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiUmV0dXJuZWQgb3V0cHV0XCIsIHBsYWNlaG9sZGVyOiBcIk5vcm1hbGlzZWQgb3V0cHV0XCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJyZXN1bHRcIiB9KVxuICByZXN1bHQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIENvZGUg4oCUIHNhbmRib3hlZCBKUy9UUyBjb2RlIGV4ZWN1dGlvbiAoQUxGUkVELTUgwqc3KS5cbiAqXG4gKiBUaGUgZW5naW5lIGRvZXMgbm90IGltcGxlbWVudCB0aGUgc2FuZGJveCBkaXJlY3RseSAowqcyMi40KS4gQSBmdXR1cmVcbiAqIGV4ZWN1dG9yIG1heSB3cmFwIHRoZSBgQ29kZVNhbmRib3hgIGNvbnRyYWN0IChBTEZSRUQtNSDCpzcuMTcpIGFzIGFcbiAqIHBsdWdnYWJsZSBleGVjdXRvci4gVGhlIHBsYWNlaG9sZGVyIHN5bnRheCAoYHt7ICRpbnB1dCB9fWAsIGB7eyAkaXRlbSB9fWAsXG4gKiBge3sgJGluZGV4IH19YCwgYHt7ICR2YXJzIH19YCwgYHt7ICRub2RlW1wiTmFtZVwiXS5vdXRwdXQgfX1gKSBpcyBNYXN0cmEtXG4gKiBhZ25vc3RpYyBhbmQgbGl2ZXMgaW4gdGhlIGRvd25zdHJlYW0gcHJvamVjdCdzIGBtb2R1bGVzL2NvcmVgIChBTEZSRUQtNikuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmNvZGVcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5jb2RlXCIsXG4gIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgY29sb3I6IFwiIzdjM2FlZFwiLFxuICBpY29uOiBcInRpLWNvZGVcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJjb2RlXCIsIFwic2FuZGJveFwiLCBcInRyYW5zZm9ybVwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJDb2RlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUnVucyB1c2VyLWF1dGhvcmVkIEpTL1RTIGluIGEgcmVzdHJpY3RlZCBWTSBzYW5kYm94LiBTdXBwb3J0cyBwbGFjZWhvbGRlciBzeW50YXggZm9yIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcy5cIixcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxhbmd1YWdlOiBcImphdmFzY3JpcHRcIixcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIENvZGVGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXRcIiwgcGxhY2Vob2xkZXI6IFwiSW5wdXQgb2JqZWN0IChhY2Nlc3NpYmxlIGFzICRpbnB1dClcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwiaW5wdXRcIiB9KVxuICBpbnB1dCE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiUmVzdWx0XCIsIHBsYWNlaG9sZGVyOiBcIkNvZGUgZXhlY3V0aW9uIHJlc3VsdFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBBbGwgYnVpbHQtaW4gZmxvdy1jb250cm9sIG5vZGUgY29uc3RydWN0b3JzLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfRkxPV19DT05UUk9MX05PREVTID0gW1xuICBJZkZsb3dOb2RlLFxuICBTd2l0Y2hGbG93Tm9kZSxcbiAgUGFyYWxsZWxGbG93Tm9kZSxcbiAgTWVyZ2VGbG93Tm9kZSxcbiAgTWFwRmxvd05vZGUsXG4gIERlbGF5Rmxvd05vZGUsXG4gIEVycm9yQm91bmRhcnlGbG93Tm9kZSxcbiAgSHVtYW5BcHByb3ZhbEZsb3dOb2RlLFxuICBSZXR1cm5GbG93Tm9kZSxcbiAgQ29kZUZsb3dOb2RlLFxuXSBhcyBjb25zdDtcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/nodes
|
|
3
|
+
* @summary Production node kind declarations (DECAF-32 §22.2).
|
|
4
|
+
* @description Canonical `@node`-decorated classes for the ALFRED-5 node kind
|
|
5
|
+
* taxonomy. These are the framework's built-in node definitions — triggers
|
|
6
|
+
* (§22.2.1), flow-control/utility nodes (§22.2.2–22.2.3), and the Agent node
|
|
7
|
+
* (§21.3). The three loop kinds (`core.loop.foreach/while/until`) already have
|
|
8
|
+
* built-in executors (§5.9) and are not redeclared here.
|
|
9
|
+
*
|
|
10
|
+
* Consumers (for-angular, ALFRED, etc.) import these declarations to populate
|
|
11
|
+
* node palettes, registries, and reference snapshots.
|
|
12
|
+
*/
|
|
13
|
+
export * from "./base.js";
|
|
14
|
+
export * from "./category-styles.js";
|
|
15
|
+
export * from "./triggers.js";
|
|
16
|
+
export * from "./flow-control.js";
|
|
17
|
+
export * from "./agent.js";
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvc2hhcmVkL25vZGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsMEJBQXVCO0FBQ3ZCLHFDQUFrQztBQUNsQyw4QkFBMkI7QUFDM0Isa0NBQStCO0FBQy9CLDJCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvbm9kZXNcbiAqIEBzdW1tYXJ5IFByb2R1Y3Rpb24gbm9kZSBraW5kIGRlY2xhcmF0aW9ucyAoREVDQUYtMzIgwqcyMi4yKS5cbiAqIEBkZXNjcmlwdGlvbiBDYW5vbmljYWwgYEBub2RlYC1kZWNvcmF0ZWQgY2xhc3NlcyBmb3IgdGhlIEFMRlJFRC01IG5vZGUga2luZFxuICogdGF4b25vbXkuIFRoZXNlIGFyZSB0aGUgZnJhbWV3b3JrJ3MgYnVpbHQtaW4gbm9kZSBkZWZpbml0aW9ucyDigJQgdHJpZ2dlcnNcbiAqICjCpzIyLjIuMSksIGZsb3ctY29udHJvbC91dGlsaXR5IG5vZGVzICjCpzIyLjIuMuKAkzIyLjIuMyksIGFuZCB0aGUgQWdlbnQgbm9kZVxuICogKMKnMjEuMykuIFRoZSB0aHJlZSBsb29wIGtpbmRzIChgY29yZS5sb29wLmZvcmVhY2gvd2hpbGUvdW50aWxgKSBhbHJlYWR5IGhhdmVcbiAqIGJ1aWx0LWluIGV4ZWN1dG9ycyAowqc1LjkpIGFuZCBhcmUgbm90IHJlZGVjbGFyZWQgaGVyZS5cbiAqXG4gKiBDb25zdW1lcnMgKGZvci1hbmd1bGFyLCBBTEZSRUQsIGV0Yy4pIGltcG9ydCB0aGVzZSBkZWNsYXJhdGlvbnMgdG8gcG9wdWxhdGVcbiAqIG5vZGUgcGFsZXR0ZXMsIHJlZ2lzdHJpZXMsIGFuZCByZWZlcmVuY2Ugc25hcHNob3RzLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jYXRlZ29yeS1zdHlsZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyaWdnZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mbG93LWNvbnRyb2xcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FnZW50XCI7XG4iXX0=
|