@orbytautomation/engine 0.1.0
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/README.md +0 -0
- package/dist/adapters/AdapterRegistry.d.ts +129 -0
- package/dist/adapters/AdapterRegistry.d.ts.map +1 -0
- package/dist/adapters/AdapterRegistry.js +236 -0
- package/dist/adapters/AdapterRegistry.js.map +1 -0
- package/dist/adapters/StepAdapter.d.ts +2 -0
- package/dist/adapters/StepAdapter.d.ts.map +1 -0
- package/dist/adapters/StepAdapter.js +2 -0
- package/dist/adapters/StepAdapter.js.map +1 -0
- package/dist/adapters/WorkflowAdapter.d.ts +2 -0
- package/dist/adapters/WorkflowAdapter.d.ts.map +1 -0
- package/dist/adapters/WorkflowAdapter.js +2 -0
- package/dist/adapters/WorkflowAdapter.js.map +1 -0
- package/dist/adapters/builtins/CLIAdapter.d.ts +38 -0
- package/dist/adapters/builtins/CLIAdapter.d.ts.map +1 -0
- package/dist/adapters/builtins/CLIAdapter.js +173 -0
- package/dist/adapters/builtins/CLIAdapter.js.map +1 -0
- package/dist/adapters/builtins/CLICommandResolver.d.ts +49 -0
- package/dist/adapters/builtins/CLICommandResolver.d.ts.map +1 -0
- package/dist/adapters/builtins/CLICommandResolver.js +63 -0
- package/dist/adapters/builtins/CLICommandResolver.js.map +1 -0
- package/dist/adapters/builtins/CLIResultParser.d.ts +61 -0
- package/dist/adapters/builtins/CLIResultParser.d.ts.map +1 -0
- package/dist/adapters/builtins/CLIResultParser.js +113 -0
- package/dist/adapters/builtins/CLIResultParser.js.map +1 -0
- package/dist/adapters/builtins/ConnectionManager.d.ts +106 -0
- package/dist/adapters/builtins/ConnectionManager.d.ts.map +1 -0
- package/dist/adapters/builtins/ConnectionManager.js +162 -0
- package/dist/adapters/builtins/ConnectionManager.js.map +1 -0
- package/dist/adapters/builtins/Consumer.d.ts +110 -0
- package/dist/adapters/builtins/Consumer.d.ts.map +1 -0
- package/dist/adapters/builtins/Consumer.js +113 -0
- package/dist/adapters/builtins/Consumer.js.map +1 -0
- package/dist/adapters/builtins/DBAdapter.d.ts +79 -0
- package/dist/adapters/builtins/DBAdapter.d.ts.map +1 -0
- package/dist/adapters/builtins/DBAdapter.js +259 -0
- package/dist/adapters/builtins/DBAdapter.js.map +1 -0
- package/dist/adapters/builtins/EnvResolver.d.ts +66 -0
- package/dist/adapters/builtins/EnvResolver.d.ts.map +1 -0
- package/dist/adapters/builtins/EnvResolver.js +121 -0
- package/dist/adapters/builtins/EnvResolver.js.map +1 -0
- package/dist/adapters/builtins/FSAdapter.d.ts +50 -0
- package/dist/adapters/builtins/FSAdapter.d.ts.map +1 -0
- package/dist/adapters/builtins/FSAdapter.js +282 -0
- package/dist/adapters/builtins/FSAdapter.js.map +1 -0
- package/dist/adapters/builtins/FileResolver.d.ts +50 -0
- package/dist/adapters/builtins/FileResolver.d.ts.map +1 -0
- package/dist/adapters/builtins/FileResolver.js +77 -0
- package/dist/adapters/builtins/FileResolver.js.map +1 -0
- package/dist/adapters/builtins/HTTPAdapter.d.ts +58 -0
- package/dist/adapters/builtins/HTTPAdapter.d.ts.map +1 -0
- package/dist/adapters/builtins/HTTPAdapter.js +213 -0
- package/dist/adapters/builtins/HTTPAdapter.js.map +1 -0
- package/dist/adapters/builtins/HTTPRequestBuilder.d.ts +95 -0
- package/dist/adapters/builtins/HTTPRequestBuilder.d.ts.map +1 -0
- package/dist/adapters/builtins/HTTPRequestBuilder.js +159 -0
- package/dist/adapters/builtins/HTTPRequestBuilder.js.map +1 -0
- package/dist/adapters/builtins/HTTPResponseParser.d.ts +74 -0
- package/dist/adapters/builtins/HTTPResponseParser.d.ts.map +1 -0
- package/dist/adapters/builtins/HTTPResponseParser.js +144 -0
- package/dist/adapters/builtins/HTTPResponseParser.js.map +1 -0
- package/dist/adapters/builtins/PathSecurityPolicy.d.ts +38 -0
- package/dist/adapters/builtins/PathSecurityPolicy.d.ts.map +1 -0
- package/dist/adapters/builtins/PathSecurityPolicy.js +125 -0
- package/dist/adapters/builtins/PathSecurityPolicy.js.map +1 -0
- package/dist/adapters/builtins/Producer.d.ts +99 -0
- package/dist/adapters/builtins/Producer.d.ts.map +1 -0
- package/dist/adapters/builtins/Producer.js +59 -0
- package/dist/adapters/builtins/Producer.js.map +1 -0
- package/dist/adapters/builtins/QueryExecutor.d.ts +102 -0
- package/dist/adapters/builtins/QueryExecutor.d.ts.map +1 -0
- package/dist/adapters/builtins/QueryExecutor.js +90 -0
- package/dist/adapters/builtins/QueryExecutor.js.map +1 -0
- package/dist/adapters/builtins/QueueAdapter.d.ts +72 -0
- package/dist/adapters/builtins/QueueAdapter.d.ts.map +1 -0
- package/dist/adapters/builtins/QueueAdapter.js +209 -0
- package/dist/adapters/builtins/QueueAdapter.js.map +1 -0
- package/dist/adapters/builtins/SecretProvider.d.ts +69 -0
- package/dist/adapters/builtins/SecretProvider.d.ts.map +1 -0
- package/dist/adapters/builtins/SecretProvider.js +71 -0
- package/dist/adapters/builtins/SecretProvider.js.map +1 -0
- package/dist/adapters/builtins/SecretsAdapter.d.ts +48 -0
- package/dist/adapters/builtins/SecretsAdapter.d.ts.map +1 -0
- package/dist/adapters/builtins/SecretsAdapter.js +154 -0
- package/dist/adapters/builtins/SecretsAdapter.js.map +1 -0
- package/dist/adapters/builtins/ShellAdapter.d.ts +46 -0
- package/dist/adapters/builtins/ShellAdapter.d.ts.map +1 -0
- package/dist/adapters/builtins/ShellAdapter.js +200 -0
- package/dist/adapters/builtins/ShellAdapter.js.map +1 -0
- package/dist/adapters/builtins/ShellExecutor.d.ts +72 -0
- package/dist/adapters/builtins/ShellExecutor.d.ts.map +1 -0
- package/dist/adapters/builtins/ShellExecutor.js +94 -0
- package/dist/adapters/builtins/ShellExecutor.js.map +1 -0
- package/dist/adapters/builtins/ShellSecurityPolicy.d.ts +58 -0
- package/dist/adapters/builtins/ShellSecurityPolicy.d.ts.map +1 -0
- package/dist/adapters/builtins/ShellSecurityPolicy.js +135 -0
- package/dist/adapters/builtins/ShellSecurityPolicy.js.map +1 -0
- package/dist/adapters/builtins/index.d.ts +27 -0
- package/dist/adapters/builtins/index.d.ts.map +1 -0
- package/dist/adapters/builtins/index.js +35 -0
- package/dist/adapters/builtins/index.js.map +1 -0
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +6 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/automation/BackoffStrategy.d.ts +106 -0
- package/dist/automation/BackoffStrategy.d.ts.map +1 -0
- package/dist/automation/BackoffStrategy.js +168 -0
- package/dist/automation/BackoffStrategy.js.map +1 -0
- package/dist/automation/FailureStrategy.d.ts +141 -0
- package/dist/automation/FailureStrategy.d.ts.map +1 -0
- package/dist/automation/FailureStrategy.js +246 -0
- package/dist/automation/FailureStrategy.js.map +1 -0
- package/dist/automation/RetryPolicy.d.ts +132 -0
- package/dist/automation/RetryPolicy.d.ts.map +1 -0
- package/dist/automation/RetryPolicy.js +241 -0
- package/dist/automation/RetryPolicy.js.map +1 -0
- package/dist/automation/TimeoutManager.d.ts +145 -0
- package/dist/automation/TimeoutManager.d.ts.map +1 -0
- package/dist/automation/TimeoutManager.js +241 -0
- package/dist/automation/TimeoutManager.js.map +1 -0
- package/dist/automation/index.d.ts +16 -0
- package/dist/automation/index.d.ts.map +1 -0
- package/dist/automation/index.js +16 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/automation/runtime/BackoffTimer.d.ts +74 -0
- package/dist/automation/runtime/BackoffTimer.d.ts.map +1 -0
- package/dist/automation/runtime/BackoffTimer.js +139 -0
- package/dist/automation/runtime/BackoffTimer.js.map +1 -0
- package/dist/automation/runtime/FailureHandler.d.ts +138 -0
- package/dist/automation/runtime/FailureHandler.d.ts.map +1 -0
- package/dist/automation/runtime/FailureHandler.js +197 -0
- package/dist/automation/runtime/FailureHandler.js.map +1 -0
- package/dist/automation/runtime/RetryExecutor.d.ts +104 -0
- package/dist/automation/runtime/RetryExecutor.d.ts.map +1 -0
- package/dist/automation/runtime/RetryExecutor.js +173 -0
- package/dist/automation/runtime/RetryExecutor.js.map +1 -0
- package/dist/automation/runtime/index.d.ts +13 -0
- package/dist/automation/runtime/index.d.ts.map +1 -0
- package/dist/automation/runtime/index.js +13 -0
- package/dist/automation/runtime/index.js.map +1 -0
- package/dist/context/ContextStore.d.ts +185 -0
- package/dist/context/ContextStore.d.ts.map +1 -0
- package/dist/context/ContextStore.js +228 -0
- package/dist/context/ContextStore.js.map +1 -0
- package/dist/context/VariableResolver.d.ts +184 -0
- package/dist/context/VariableResolver.d.ts.map +1 -0
- package/dist/context/VariableResolver.js +368 -0
- package/dist/context/VariableResolver.js.map +1 -0
- package/dist/context/index.d.ts +17 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +17 -0
- package/dist/context/index.js.map +1 -0
- package/dist/core/EngineConfig.d.ts +156 -0
- package/dist/core/EngineConfig.d.ts.map +1 -0
- package/dist/core/EngineConfig.js +61 -0
- package/dist/core/EngineConfig.js.map +1 -0
- package/dist/core/EngineContext.d.ts +94 -0
- package/dist/core/EngineContext.d.ts.map +1 -0
- package/dist/core/EngineContext.js +29 -0
- package/dist/core/EngineContext.js.map +1 -0
- package/dist/core/OrbytEngine.d.ts +234 -0
- package/dist/core/OrbytEngine.d.ts.map +1 -0
- package/dist/core/OrbytEngine.js +421 -0
- package/dist/core/OrbytEngine.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/errors/ErrorCodes.d.ts +71 -0
- package/dist/errors/ErrorCodes.d.ts.map +1 -0
- package/dist/errors/ErrorCodes.js +95 -0
- package/dist/errors/ErrorCodes.js.map +1 -0
- package/dist/errors/ErrorFormatter.d.ts +34 -0
- package/dist/errors/ErrorFormatter.d.ts.map +1 -0
- package/dist/errors/ErrorFormatter.js +140 -0
- package/dist/errors/ErrorFormatter.js.map +1 -0
- package/dist/errors/FieldRegistry.d.ts +83 -0
- package/dist/errors/FieldRegistry.d.ts.map +1 -0
- package/dist/errors/FieldRegistry.js +217 -0
- package/dist/errors/FieldRegistry.js.map +1 -0
- package/dist/errors/OrbytError.d.ts +59 -0
- package/dist/errors/OrbytError.d.ts.map +1 -0
- package/dist/errors/OrbytError.js +78 -0
- package/dist/errors/OrbytError.js.map +1 -0
- package/dist/errors/SchedulerError.d.ts +2 -0
- package/dist/errors/SchedulerError.d.ts.map +1 -0
- package/dist/errors/SchedulerError.js +2 -0
- package/dist/errors/SchedulerError.js.map +1 -0
- package/dist/errors/StepError.d.ts +2 -0
- package/dist/errors/StepError.d.ts.map +1 -0
- package/dist/errors/StepError.js +2 -0
- package/dist/errors/StepError.js.map +1 -0
- package/dist/errors/TypoDetector.d.ts +36 -0
- package/dist/errors/TypoDetector.d.ts.map +1 -0
- package/dist/errors/TypoDetector.js +109 -0
- package/dist/errors/TypoDetector.js.map +1 -0
- package/dist/errors/WorkflowError.d.ts +54 -0
- package/dist/errors/WorkflowError.d.ts.map +1 -0
- package/dist/errors/WorkflowError.js +129 -0
- package/dist/errors/WorkflowError.js.map +1 -0
- package/dist/errors/index.d.ts +14 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +17 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/events/EngineEvents.d.ts +143 -0
- package/dist/events/EngineEvents.d.ts.map +1 -0
- package/dist/events/EngineEvents.js +60 -0
- package/dist/events/EngineEvents.js.map +1 -0
- package/dist/events/EventBus.d.ts +112 -0
- package/dist/events/EventBus.d.ts.map +1 -0
- package/dist/events/EventBus.js +177 -0
- package/dist/events/EventBus.js.map +1 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +3 -0
- package/dist/events/index.js.map +1 -0
- package/dist/execution/ExecutionEngine.d.ts +220 -0
- package/dist/execution/ExecutionEngine.d.ts.map +1 -0
- package/dist/execution/ExecutionEngine.js +442 -0
- package/dist/execution/ExecutionEngine.js.map +1 -0
- package/dist/execution/ExecutionNode.d.ts +114 -0
- package/dist/execution/ExecutionNode.d.ts.map +1 -0
- package/dist/execution/ExecutionNode.js +99 -0
- package/dist/execution/ExecutionNode.js.map +1 -0
- package/dist/execution/ExecutionPlan.d.ts +133 -0
- package/dist/execution/ExecutionPlan.d.ts.map +1 -0
- package/dist/execution/ExecutionPlan.js +207 -0
- package/dist/execution/ExecutionPlan.js.map +1 -0
- package/dist/execution/StepExecutor.d.ts +204 -0
- package/dist/execution/StepExecutor.d.ts.map +1 -0
- package/dist/execution/StepExecutor.js +604 -0
- package/dist/execution/StepExecutor.js.map +1 -0
- package/dist/execution/WorkflowExecutor.d.ts +129 -0
- package/dist/execution/WorkflowExecutor.d.ts.map +1 -0
- package/dist/execution/WorkflowExecutor.js +347 -0
- package/dist/execution/WorkflowExecutor.js.map +1 -0
- package/dist/execution/drivers/AdapterDriver.d.ts +34 -0
- package/dist/execution/drivers/AdapterDriver.d.ts.map +1 -0
- package/dist/execution/drivers/AdapterDriver.js +63 -0
- package/dist/execution/drivers/AdapterDriver.js.map +1 -0
- package/dist/execution/drivers/DriverResolver.d.ts +91 -0
- package/dist/execution/drivers/DriverResolver.d.ts.map +1 -0
- package/dist/execution/drivers/DriverResolver.js +172 -0
- package/dist/execution/drivers/DriverResolver.js.map +1 -0
- package/dist/execution/drivers/ExecutionDriver.d.ts +127 -0
- package/dist/execution/drivers/ExecutionDriver.d.ts.map +1 -0
- package/dist/execution/drivers/ExecutionDriver.js +50 -0
- package/dist/execution/drivers/ExecutionDriver.js.map +1 -0
- package/dist/execution/drivers/index.d.ts +11 -0
- package/dist/execution/drivers/index.d.ts.map +1 -0
- package/dist/execution/drivers/index.js +11 -0
- package/dist/execution/drivers/index.js.map +1 -0
- package/dist/execution/index.d.ts +18 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +19 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/graph/CycleDetector.d.ts +90 -0
- package/dist/graph/CycleDetector.d.ts.map +1 -0
- package/dist/graph/CycleDetector.js +210 -0
- package/dist/graph/CycleDetector.js.map +1 -0
- package/dist/graph/DependencyGraph.d.ts +16 -0
- package/dist/graph/DependencyGraph.d.ts.map +1 -0
- package/dist/graph/DependencyGraph.js +16 -0
- package/dist/graph/DependencyGraph.js.map +1 -0
- package/dist/graph/DependencyResolver.d.ts +90 -0
- package/dist/graph/DependencyResolver.d.ts.map +1 -0
- package/dist/graph/DependencyResolver.js +159 -0
- package/dist/graph/DependencyResolver.js.map +1 -0
- package/dist/graph/TopologicalSorter.d.ts +104 -0
- package/dist/graph/TopologicalSorter.d.ts.map +1 -0
- package/dist/graph/TopologicalSorter.js +213 -0
- package/dist/graph/TopologicalSorter.js.map +1 -0
- package/dist/graph/index.d.ts +15 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +15 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/guards/ResourceGuard.d.ts +90 -0
- package/dist/guards/ResourceGuard.d.ts.map +1 -0
- package/dist/guards/ResourceGuard.js +177 -0
- package/dist/guards/ResourceGuard.js.map +1 -0
- package/dist/guards/StepGuard.d.ts +96 -0
- package/dist/guards/StepGuard.d.ts.map +1 -0
- package/dist/guards/StepGuard.js +184 -0
- package/dist/guards/StepGuard.js.map +1 -0
- package/dist/guards/WorkflowGuard.d.ts +71 -0
- package/dist/guards/WorkflowGuard.d.ts.map +1 -0
- package/dist/guards/WorkflowGuard.js +187 -0
- package/dist/guards/WorkflowGuard.js.map +1 -0
- package/dist/guards/index.d.ts +9 -0
- package/dist/guards/index.d.ts.map +1 -0
- package/dist/guards/index.js +9 -0
- package/dist/guards/index.js.map +1 -0
- package/dist/hooks/HookManager.d.ts +114 -0
- package/dist/hooks/HookManager.d.ts.map +1 -0
- package/dist/hooks/HookManager.js +187 -0
- package/dist/hooks/HookManager.js.map +1 -0
- package/dist/hooks/LifecycleHooks.d.ts +126 -0
- package/dist/hooks/LifecycleHooks.d.ts.map +1 -0
- package/dist/hooks/LifecycleHooks.js +23 -0
- package/dist/hooks/LifecycleHooks.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle/EngineLifecycle.d.ts +121 -0
- package/dist/lifecycle/EngineLifecycle.d.ts.map +1 -0
- package/dist/lifecycle/EngineLifecycle.js +209 -0
- package/dist/lifecycle/EngineLifecycle.js.map +1 -0
- package/dist/lifecycle/ShutdownManager.d.ts +44 -0
- package/dist/lifecycle/ShutdownManager.d.ts.map +1 -0
- package/dist/lifecycle/ShutdownManager.js +105 -0
- package/dist/lifecycle/ShutdownManager.js.map +1 -0
- package/dist/lifecycle/StartupManager.d.ts +45 -0
- package/dist/lifecycle/StartupManager.d.ts.map +1 -0
- package/dist/lifecycle/StartupManager.js +97 -0
- package/dist/lifecycle/StartupManager.js.map +1 -0
- package/dist/lifecycle/index.d.ts +9 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/lifecycle/index.js +9 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/logging/LogLevel.d.ts +2 -0
- package/dist/logging/LogLevel.d.ts.map +1 -0
- package/dist/logging/LogLevel.js +2 -0
- package/dist/logging/LogLevel.js.map +1 -0
- package/dist/logging/Logger.d.ts +2 -0
- package/dist/logging/Logger.d.ts.map +1 -0
- package/dist/logging/Logger.js +2 -0
- package/dist/logging/Logger.js.map +1 -0
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +4 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/marketplace/PluginInstaller.d.ts +81 -0
- package/dist/marketplace/PluginInstaller.d.ts.map +1 -0
- package/dist/marketplace/PluginInstaller.js +89 -0
- package/dist/marketplace/PluginInstaller.js.map +1 -0
- package/dist/marketplace/PluginManifest.d.ts +74 -0
- package/dist/marketplace/PluginManifest.d.ts.map +1 -0
- package/dist/marketplace/PluginManifest.js +67 -0
- package/dist/marketplace/PluginManifest.js.map +1 -0
- package/dist/marketplace/PluginVerifier.d.ts +58 -0
- package/dist/marketplace/PluginVerifier.d.ts.map +1 -0
- package/dist/marketplace/PluginVerifier.js +93 -0
- package/dist/marketplace/PluginVerifier.js.map +1 -0
- package/dist/marketplace/index.d.ts +11 -0
- package/dist/marketplace/index.d.ts.map +1 -0
- package/dist/marketplace/index.js +11 -0
- package/dist/marketplace/index.js.map +1 -0
- package/dist/metrics/MetricsCollector.d.ts +2 -0
- package/dist/metrics/MetricsCollector.d.ts.map +1 -0
- package/dist/metrics/MetricsCollector.js +2 -0
- package/dist/metrics/MetricsCollector.js.map +1 -0
- package/dist/metrics/PerformanceTracker.d.ts +2 -0
- package/dist/metrics/PerformanceTracker.d.ts.map +1 -0
- package/dist/metrics/PerformanceTracker.js +2 -0
- package/dist/metrics/PerformanceTracker.js.map +1 -0
- package/dist/metrics/index.d.ts +2 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +4 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/parser/SchemaValidator.d.ts +63 -0
- package/dist/parser/SchemaValidator.d.ts.map +1 -0
- package/dist/parser/SchemaValidator.js +212 -0
- package/dist/parser/SchemaValidator.js.map +1 -0
- package/dist/parser/StepParser.d.ts +124 -0
- package/dist/parser/StepParser.d.ts.map +1 -0
- package/dist/parser/StepParser.js +330 -0
- package/dist/parser/StepParser.js.map +1 -0
- package/dist/parser/WorkflowParser.d.ts +124 -0
- package/dist/parser/WorkflowParser.d.ts.map +1 -0
- package/dist/parser/WorkflowParser.js +141 -0
- package/dist/parser/WorkflowParser.js.map +1 -0
- package/dist/parser/index.d.ts +4 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +4 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/queue/InMemoryQueue.d.ts +97 -0
- package/dist/queue/InMemoryQueue.d.ts.map +1 -0
- package/dist/queue/InMemoryQueue.js +268 -0
- package/dist/queue/InMemoryQueue.js.map +1 -0
- package/dist/queue/JobQueue.d.ts +214 -0
- package/dist/queue/JobQueue.d.ts.map +1 -0
- package/dist/queue/JobQueue.js +46 -0
- package/dist/queue/JobQueue.js.map +1 -0
- package/dist/queue/index.d.ts +10 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +10 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/resolution/ActionRegistry.d.ts +2 -0
- package/dist/resolution/ActionRegistry.d.ts.map +1 -0
- package/dist/resolution/ActionRegistry.js +2 -0
- package/dist/resolution/ActionRegistry.js.map +1 -0
- package/dist/resolution/AdapterResolver.d.ts +2 -0
- package/dist/resolution/AdapterResolver.d.ts.map +1 -0
- package/dist/resolution/AdapterResolver.js +2 -0
- package/dist/resolution/AdapterResolver.js.map +1 -0
- package/dist/resolution/StepResolver.d.ts +2 -0
- package/dist/resolution/StepResolver.d.ts.map +1 -0
- package/dist/resolution/StepResolver.js +2 -0
- package/dist/resolution/StepResolver.js.map +1 -0
- package/dist/resolution/index.d.ts +2 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +2 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/scheduling/CronScheduler.d.ts +143 -0
- package/dist/scheduling/CronScheduler.d.ts.map +1 -0
- package/dist/scheduling/CronScheduler.js +370 -0
- package/dist/scheduling/CronScheduler.js.map +1 -0
- package/dist/scheduling/JobScheduler.d.ts +82 -0
- package/dist/scheduling/JobScheduler.d.ts.map +1 -0
- package/dist/scheduling/JobScheduler.js +231 -0
- package/dist/scheduling/JobScheduler.js.map +1 -0
- package/dist/scheduling/ScheduleParser.d.ts +117 -0
- package/dist/scheduling/ScheduleParser.d.ts.map +1 -0
- package/dist/scheduling/ScheduleParser.js +257 -0
- package/dist/scheduling/ScheduleParser.js.map +1 -0
- package/dist/scheduling/ScheduleTypes.d.ts +153 -0
- package/dist/scheduling/ScheduleTypes.d.ts.map +1 -0
- package/dist/scheduling/ScheduleTypes.js +81 -0
- package/dist/scheduling/ScheduleTypes.js.map +1 -0
- package/dist/scheduling/Scheduler.d.ts +154 -0
- package/dist/scheduling/Scheduler.d.ts.map +1 -0
- package/dist/scheduling/Scheduler.js +304 -0
- package/dist/scheduling/Scheduler.js.map +1 -0
- package/dist/scheduling/index.d.ts +6 -0
- package/dist/scheduling/index.d.ts.map +1 -0
- package/dist/scheduling/index.js +6 -0
- package/dist/scheduling/index.js.map +1 -0
- package/dist/security/PermissionPolicy.d.ts +72 -0
- package/dist/security/PermissionPolicy.d.ts.map +1 -0
- package/dist/security/PermissionPolicy.js +87 -0
- package/dist/security/PermissionPolicy.js.map +1 -0
- package/dist/security/SandboxManager.d.ts +72 -0
- package/dist/security/SandboxManager.d.ts.map +1 -0
- package/dist/security/SandboxManager.js +78 -0
- package/dist/security/SandboxManager.js.map +1 -0
- package/dist/security/index.d.ts +10 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +10 -0
- package/dist/security/index.js.map +1 -0
- package/dist/state/ExecutionState.d.ts +211 -0
- package/dist/state/ExecutionState.d.ts.map +1 -0
- package/dist/state/ExecutionState.js +256 -0
- package/dist/state/ExecutionState.js.map +1 -0
- package/dist/state/StateMachine.d.ts +120 -0
- package/dist/state/StateMachine.d.ts.map +1 -0
- package/dist/state/StateMachine.js +230 -0
- package/dist/state/StateMachine.js.map +1 -0
- package/dist/state/index.d.ts +16 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +16 -0
- package/dist/state/index.js.map +1 -0
- package/dist/storage/ExecutionStore.d.ts +2 -0
- package/dist/storage/ExecutionStore.d.ts.map +1 -0
- package/dist/storage/ExecutionStore.js +2 -0
- package/dist/storage/ExecutionStore.js.map +1 -0
- package/dist/storage/ScheduleStore.d.ts +2 -0
- package/dist/storage/ScheduleStore.d.ts.map +1 -0
- package/dist/storage/ScheduleStore.js +2 -0
- package/dist/storage/ScheduleStore.js.map +1 -0
- package/dist/storage/WorkflowStore.d.ts +2 -0
- package/dist/storage/WorkflowStore.d.ts.map +1 -0
- package/dist/storage/WorkflowStore.js +2 -0
- package/dist/storage/WorkflowStore.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +5 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/testing/EngineTestHarness.d.ts +117 -0
- package/dist/testing/EngineTestHarness.d.ts.map +1 -0
- package/dist/testing/EngineTestHarness.js +132 -0
- package/dist/testing/EngineTestHarness.js.map +1 -0
- package/dist/testing/MockAdapter.d.ts +93 -0
- package/dist/testing/MockAdapter.d.ts.map +1 -0
- package/dist/testing/MockAdapter.js +124 -0
- package/dist/testing/MockAdapter.js.map +1 -0
- package/dist/testing/index.d.ts +10 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +10 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/triggers/CronTrigger.d.ts +2 -0
- package/dist/triggers/CronTrigger.d.ts.map +1 -0
- package/dist/triggers/CronTrigger.js +2 -0
- package/dist/triggers/CronTrigger.js.map +1 -0
- package/dist/triggers/EventTrigger.d.ts +2 -0
- package/dist/triggers/EventTrigger.d.ts.map +1 -0
- package/dist/triggers/EventTrigger.js +2 -0
- package/dist/triggers/EventTrigger.js.map +1 -0
- package/dist/triggers/ManualTrigger.d.ts +2 -0
- package/dist/triggers/ManualTrigger.d.ts.map +1 -0
- package/dist/triggers/ManualTrigger.js +2 -0
- package/dist/triggers/ManualTrigger.js.map +1 -0
- package/dist/triggers/Trigger.d.ts +2 -0
- package/dist/triggers/Trigger.d.ts.map +1 -0
- package/dist/triggers/Trigger.js +2 -0
- package/dist/triggers/Trigger.js.map +1 -0
- package/dist/triggers/index.d.ts +2 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +6 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/sources/FileWatcherTrigger.d.ts +2 -0
- package/dist/triggers/sources/FileWatcherTrigger.d.ts.map +1 -0
- package/dist/triggers/sources/FileWatcherTrigger.js +2 -0
- package/dist/triggers/sources/FileWatcherTrigger.js.map +1 -0
- package/dist/triggers/sources/MessageTrigger.d.ts +2 -0
- package/dist/triggers/sources/MessageTrigger.d.ts.map +1 -0
- package/dist/triggers/sources/MessageTrigger.js +2 -0
- package/dist/triggers/sources/MessageTrigger.js.map +1 -0
- package/dist/triggers/sources/WebhookListener.d.ts +2 -0
- package/dist/triggers/sources/WebhookListener.d.ts.map +1 -0
- package/dist/triggers/sources/WebhookListener.js +2 -0
- package/dist/triggers/sources/WebhookListener.js.map +1 -0
- package/dist/triggers/sources/index.d.ts +2 -0
- package/dist/triggers/sources/index.d.ts.map +1 -0
- package/dist/triggers/sources/index.js +2 -0
- package/dist/triggers/sources/index.js.map +1 -0
- package/dist/utils/deepMerge.d.ts +2 -0
- package/dist/utils/deepMerge.d.ts.map +1 -0
- package/dist/utils/deepMerge.js +2 -0
- package/dist/utils/deepMerge.js.map +1 -0
- package/dist/utils/id.d.ts +2 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +2 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/safeExec.d.ts +2 -0
- package/dist/utils/safeExec.d.ts.map +1 -0
- package/dist/utils/safeExec.js +2 -0
- package/dist/utils/safeExec.js.map +1 -0
- package/dist/utils/time.d.ts +2 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +2 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/visualization/ExecutionGraphBuilder.d.ts +2 -0
- package/dist/visualization/ExecutionGraphBuilder.d.ts.map +1 -0
- package/dist/visualization/ExecutionGraphBuilder.js +2 -0
- package/dist/visualization/ExecutionGraphBuilder.js.map +1 -0
- package/dist/visualization/ExecutionTraceFormatter.d.ts +2 -0
- package/dist/visualization/ExecutionTraceFormatter.d.ts.map +1 -0
- package/dist/visualization/ExecutionTraceFormatter.js +2 -0
- package/dist/visualization/ExecutionTraceFormatter.js.map +1 -0
- package/dist/visualization/index.d.ts +2 -0
- package/dist/visualization/index.d.ts.map +1 -0
- package/dist/visualization/index.js +2 -0
- package/dist/visualization/index.js.map +1 -0
- package/dist/workflow/Step.d.ts +2 -0
- package/dist/workflow/Step.d.ts.map +1 -0
- package/dist/workflow/Step.js +2 -0
- package/dist/workflow/Step.js.map +1 -0
- package/dist/workflow/StepContext.d.ts +2 -0
- package/dist/workflow/StepContext.d.ts.map +1 -0
- package/dist/workflow/StepContext.js +2 -0
- package/dist/workflow/StepContext.js.map +1 -0
- package/dist/workflow/StepResult.d.ts +2 -0
- package/dist/workflow/StepResult.d.ts.map +1 -0
- package/dist/workflow/StepResult.js +2 -0
- package/dist/workflow/StepResult.js.map +1 -0
- package/dist/workflow/Workflow.d.ts +2 -0
- package/dist/workflow/Workflow.d.ts.map +1 -0
- package/dist/workflow/Workflow.js +2 -0
- package/dist/workflow/Workflow.js.map +1 -0
- package/dist/workflow/WorkflowRegistry.d.ts +2 -0
- package/dist/workflow/WorkflowRegistry.d.ts.map +1 -0
- package/dist/workflow/WorkflowRegistry.js +2 -0
- package/dist/workflow/WorkflowRegistry.js.map +1 -0
- package/dist/workflow/WorkflowState.d.ts +2 -0
- package/dist/workflow/WorkflowState.d.ts.map +1 -0
- package/dist/workflow/WorkflowState.js +2 -0
- package/dist/workflow/WorkflowState.js.map +1 -0
- package/dist/workflow/index.d.ts +2 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +8 -0
- package/dist/workflow/index.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell Security Policy
|
|
3
|
+
*
|
|
4
|
+
* Security controls for shell command execution.
|
|
5
|
+
*/
|
|
6
|
+
import { AdapterExecutionError } from '@dev-ecosystem/core';
|
|
7
|
+
export class ShellSecurityPolicy {
|
|
8
|
+
config;
|
|
9
|
+
static DANGEROUS_COMMANDS = [
|
|
10
|
+
'rm',
|
|
11
|
+
'rmdir',
|
|
12
|
+
'del',
|
|
13
|
+
'delete',
|
|
14
|
+
'format',
|
|
15
|
+
'fdisk',
|
|
16
|
+
'mkfs',
|
|
17
|
+
'dd',
|
|
18
|
+
'shred',
|
|
19
|
+
':(){:|:&};:', // Fork bomb
|
|
20
|
+
];
|
|
21
|
+
static DANGEROUS_PATTERNS = [
|
|
22
|
+
/rm\s+-rf\s+\//i, // rm -rf /
|
|
23
|
+
/>\s*\/dev\/(sd|hd|nvme)/i, // Write to disk device
|
|
24
|
+
/mkfs/i, // Format filesystem
|
|
25
|
+
/dd\s+if=/i, // Disk dump
|
|
26
|
+
/curl.*\|\s*sh/i, // Pipe to shell
|
|
27
|
+
/wget.*\|\s*sh/i, // Pipe to shell
|
|
28
|
+
];
|
|
29
|
+
constructor(config = {}) {
|
|
30
|
+
this.config = {
|
|
31
|
+
blockedCommands: config.blockedCommands || [],
|
|
32
|
+
blockedPatterns: config.blockedPatterns || [],
|
|
33
|
+
allowedCommands: config.allowedCommands || [],
|
|
34
|
+
allowDangerousOperations: config.allowDangerousOperations ?? false,
|
|
35
|
+
allowCommandChaining: config.allowCommandChaining ?? true,
|
|
36
|
+
allowEnvExpansion: config.allowEnvExpansion ?? true,
|
|
37
|
+
maxCommandLength: config.maxCommandLength ?? 10000,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Validate a shell command
|
|
42
|
+
*/
|
|
43
|
+
validate(command) {
|
|
44
|
+
// Check command length
|
|
45
|
+
if (command.length > this.config.maxCommandLength) {
|
|
46
|
+
throw new AdapterExecutionError(`Command exceeds maximum length of ${this.config.maxCommandLength}`, { hint: 'Break command into smaller parts or increase maxCommandLength' });
|
|
47
|
+
}
|
|
48
|
+
// Extract base command
|
|
49
|
+
const baseCommand = this.extractBaseCommand(command);
|
|
50
|
+
// Check whitelist
|
|
51
|
+
if (this.config.allowedCommands.length > 0) {
|
|
52
|
+
if (!this.config.allowedCommands.includes(baseCommand)) {
|
|
53
|
+
throw new AdapterExecutionError(`Command not in allowed list: ${baseCommand}`, { hint: 'Add command to allowedCommands or remove whitelist' });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Check blocked commands
|
|
57
|
+
if (this.config.blockedCommands.includes(baseCommand)) {
|
|
58
|
+
throw new AdapterExecutionError(`Command is blocked: ${baseCommand}`, { hint: 'This command is explicitly blocked by security policy' });
|
|
59
|
+
}
|
|
60
|
+
// Check dangerous commands
|
|
61
|
+
if (!this.config.allowDangerousOperations) {
|
|
62
|
+
if (ShellSecurityPolicy.DANGEROUS_COMMANDS.includes(baseCommand)) {
|
|
63
|
+
throw new AdapterExecutionError(`Dangerous command detected: ${baseCommand}`, { hint: 'Enable allowDangerousOperations to use this command' });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Check dangerous patterns
|
|
67
|
+
if (!this.config.allowDangerousOperations) {
|
|
68
|
+
for (const pattern of ShellSecurityPolicy.DANGEROUS_PATTERNS) {
|
|
69
|
+
if (pattern.test(command)) {
|
|
70
|
+
throw new AdapterExecutionError('Dangerous command pattern detected', { pattern: pattern.toString(), hint: 'Enable allowDangerousOperations to use this pattern' });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Check blocked patterns
|
|
75
|
+
for (const pattern of this.config.blockedPatterns) {
|
|
76
|
+
if (pattern.test(command)) {
|
|
77
|
+
throw new AdapterExecutionError('Command matches blocked pattern', { pattern: pattern.toString() });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Check command chaining
|
|
81
|
+
if (!this.config.allowCommandChaining) {
|
|
82
|
+
if (this.hasCommandChaining(command)) {
|
|
83
|
+
throw new AdapterExecutionError('Command chaining is not allowed', { hint: 'Enable allowCommandChaining or split commands' });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Check environment variable expansion
|
|
87
|
+
if (!this.config.allowEnvExpansion) {
|
|
88
|
+
if (command.includes('$')) {
|
|
89
|
+
throw new AdapterExecutionError('Environment variable expansion is not allowed', { hint: 'Enable allowEnvExpansion or use literal values' });
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Extract base command from command string
|
|
95
|
+
*/
|
|
96
|
+
extractBaseCommand(command) {
|
|
97
|
+
// Remove leading/trailing whitespace
|
|
98
|
+
const trimmed = command.trim();
|
|
99
|
+
// Extract first word (command name)
|
|
100
|
+
const match = trimmed.match(/^([^\s&|;]+)/);
|
|
101
|
+
if (!match)
|
|
102
|
+
return '';
|
|
103
|
+
const cmd = match[1];
|
|
104
|
+
// Remove path and get just the command name
|
|
105
|
+
const parts = cmd.split(/[/\\]/);
|
|
106
|
+
return parts[parts.length - 1];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check for command chaining
|
|
110
|
+
*/
|
|
111
|
+
hasCommandChaining(command) {
|
|
112
|
+
// Check for &&, ||, ;, | (pipe)
|
|
113
|
+
return /[;&|]{1,2}/.test(command);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get warnings for a command (non-blocking)
|
|
117
|
+
*/
|
|
118
|
+
getWarnings(command) {
|
|
119
|
+
const warnings = [];
|
|
120
|
+
if (command.includes('sudo') || command.includes('su ')) {
|
|
121
|
+
warnings.push('Command uses privilege escalation (sudo/su)');
|
|
122
|
+
}
|
|
123
|
+
if (command.includes('rm ') || command.includes('del ')) {
|
|
124
|
+
warnings.push('Command performs file deletion');
|
|
125
|
+
}
|
|
126
|
+
if (command.includes('curl') || command.includes('wget')) {
|
|
127
|
+
warnings.push('Command makes network requests');
|
|
128
|
+
}
|
|
129
|
+
if (command.length > 500) {
|
|
130
|
+
warnings.push('Command is unusually long');
|
|
131
|
+
}
|
|
132
|
+
return warnings;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=ShellSecurityPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShellSecurityPolicy.js","sourceRoot":"","sources":["../../../src/adapters/builtins/ShellSecurityPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in Adapters
|
|
3
|
+
*
|
|
4
|
+
* Core adapters shipped with Orbyt engine.
|
|
5
|
+
*/
|
|
6
|
+
export * from './HTTPAdapter.js';
|
|
7
|
+
export * from './ShellAdapter.js';
|
|
8
|
+
export * from './CLIAdapter.js';
|
|
9
|
+
export * from './DBAdapter.js';
|
|
10
|
+
export * from './FSAdapter.js';
|
|
11
|
+
export * from './QueueAdapter.js';
|
|
12
|
+
export * from './SecretsAdapter.js';
|
|
13
|
+
export * from './PathSecurityPolicy.js';
|
|
14
|
+
export * from './FileResolver.js';
|
|
15
|
+
export * from './SecretProvider.js';
|
|
16
|
+
export * from './EnvResolver.js';
|
|
17
|
+
export * from './ConnectionManager.js';
|
|
18
|
+
export * from './Producer.js';
|
|
19
|
+
export * from './Consumer.js';
|
|
20
|
+
export * from './CLICommandResolver.js';
|
|
21
|
+
export * from './CLIResultParser.js';
|
|
22
|
+
export * from './HTTPRequestBuilder.js';
|
|
23
|
+
export * from './HTTPResponseParser.js';
|
|
24
|
+
export * from './ShellExecutor.js';
|
|
25
|
+
export * from './ShellSecurityPolicy.js';
|
|
26
|
+
export * from './QueryExecutor.js';
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/builtins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAG9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in Adapters
|
|
3
|
+
*
|
|
4
|
+
* Core adapters shipped with Orbyt engine.
|
|
5
|
+
*/
|
|
6
|
+
// Core Adapters
|
|
7
|
+
export * from './HTTPAdapter.js';
|
|
8
|
+
export * from './ShellAdapter.js';
|
|
9
|
+
export * from './CLIAdapter.js';
|
|
10
|
+
export * from './DBAdapter.js';
|
|
11
|
+
export * from './FSAdapter.js';
|
|
12
|
+
export * from './QueueAdapter.js';
|
|
13
|
+
export * from './SecretsAdapter.js';
|
|
14
|
+
// File System Utilities
|
|
15
|
+
export * from './PathSecurityPolicy.js';
|
|
16
|
+
export * from './FileResolver.js';
|
|
17
|
+
// Secret Management
|
|
18
|
+
export * from './SecretProvider.js';
|
|
19
|
+
export * from './EnvResolver.js';
|
|
20
|
+
// Queue Utilities
|
|
21
|
+
export * from './ConnectionManager.js';
|
|
22
|
+
export * from './Producer.js';
|
|
23
|
+
export * from './Consumer.js';
|
|
24
|
+
// CLI Utilities
|
|
25
|
+
export * from './CLICommandResolver.js';
|
|
26
|
+
export * from './CLIResultParser.js';
|
|
27
|
+
// HTTP Utilities
|
|
28
|
+
export * from './HTTPRequestBuilder.js';
|
|
29
|
+
export * from './HTTPResponseParser.js';
|
|
30
|
+
// Shell Utilities
|
|
31
|
+
export * from './ShellExecutor.js';
|
|
32
|
+
export * from './ShellSecurityPolicy.js';
|
|
33
|
+
// Database Utilities
|
|
34
|
+
export * from './QueryExecutor.js';
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/builtins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gBAAgB;AAChB,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AAEpC,wBAAwB;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAElC,oBAAoB;AACpB,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,kBAAkB;AAClB,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAE9B,gBAAgB;AAChB,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAErC,iBAAiB;AACjB,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AAExC,kBAAkB;AAClB,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AAEzC,qBAAqB;AACrB,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { Adapter, AdapterContext, AdapterResult, AdapterCapabilities, AdapterMetadata, ExecutionMetrics, AdapterError } from '@dev-ecosystem/core';
|
|
2
|
+
export { BaseAdapter, AdapterResultBuilder, createSuccessResult, createFailureResult } from '@dev-ecosystem/core';
|
|
3
|
+
export * from './AdapterRegistry.js';
|
|
4
|
+
export * from './builtins/index.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxJ,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAElH,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { BaseAdapter, AdapterResultBuilder, createSuccessResult, createFailureResult } from '@dev-ecosystem/core';
|
|
2
|
+
export * from './AdapterRegistry.js';
|
|
3
|
+
export * from './builtins/index.js';
|
|
4
|
+
// export * from './StepAdapter.js';
|
|
5
|
+
// export * from './WorkflowAdapter.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAElH,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,oCAAoC;AACpC,wCAAwC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backoff Strategy
|
|
3
|
+
*
|
|
4
|
+
* Calculates delays between retry attempts using various strategies.
|
|
5
|
+
* Supports fixed, linear, and exponential backoff with jitter.
|
|
6
|
+
*
|
|
7
|
+
* @module automation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Backoff strategy type
|
|
11
|
+
*/
|
|
12
|
+
export type BackoffType = 'fixed' | 'linear' | 'exponential';
|
|
13
|
+
/**
|
|
14
|
+
* Backoff strategy configuration
|
|
15
|
+
*/
|
|
16
|
+
export interface BackoffConfig {
|
|
17
|
+
/** Strategy type */
|
|
18
|
+
type: BackoffType;
|
|
19
|
+
/** Base delay in milliseconds */
|
|
20
|
+
baseDelayMs: number;
|
|
21
|
+
/** Maximum delay cap in milliseconds */
|
|
22
|
+
maxDelayMs?: number;
|
|
23
|
+
/** Multiplier for exponential backoff (default: 2) */
|
|
24
|
+
multiplier?: number;
|
|
25
|
+
/** Add random jitter (0-1, default: 0.1 = 10%) */
|
|
26
|
+
jitter?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Backoff strategy for calculating retry delays
|
|
30
|
+
*/
|
|
31
|
+
export declare class BackoffStrategy {
|
|
32
|
+
private readonly config;
|
|
33
|
+
constructor(config: BackoffConfig);
|
|
34
|
+
/**
|
|
35
|
+
* Calculate delay for a given attempt number
|
|
36
|
+
*
|
|
37
|
+
* @param attempt - Attempt number (1-indexed)
|
|
38
|
+
* @returns Delay in milliseconds
|
|
39
|
+
*/
|
|
40
|
+
calculateDelay(attempt: number): number;
|
|
41
|
+
/**
|
|
42
|
+
* Calculate delays for a series of attempts
|
|
43
|
+
*
|
|
44
|
+
* @param maxAttempts - Maximum number of attempts
|
|
45
|
+
* @returns Array of delays in milliseconds
|
|
46
|
+
*/
|
|
47
|
+
calculateDelays(maxAttempts: number): number[];
|
|
48
|
+
/**
|
|
49
|
+
* Get total delay time for all retry attempts
|
|
50
|
+
*
|
|
51
|
+
* @param maxAttempts - Maximum number of attempts
|
|
52
|
+
* @returns Total delay in milliseconds
|
|
53
|
+
*/
|
|
54
|
+
getTotalDelay(maxAttempts: number): number;
|
|
55
|
+
/**
|
|
56
|
+
* Get backoff configuration
|
|
57
|
+
*/
|
|
58
|
+
getConfig(): Readonly<Required<BackoffConfig>>;
|
|
59
|
+
/**
|
|
60
|
+
* Validate configuration
|
|
61
|
+
*/
|
|
62
|
+
private validateConfig;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Predefined backoff strategies
|
|
66
|
+
*/
|
|
67
|
+
export declare const BackoffStrategies: {
|
|
68
|
+
/**
|
|
69
|
+
* Fixed 1-second delay
|
|
70
|
+
*/
|
|
71
|
+
readonly fixed1s: BackoffStrategy;
|
|
72
|
+
/**
|
|
73
|
+
* Fixed 5-second delay
|
|
74
|
+
*/
|
|
75
|
+
readonly fixed5s: BackoffStrategy;
|
|
76
|
+
/**
|
|
77
|
+
* Linear backoff starting at 1 second
|
|
78
|
+
*/
|
|
79
|
+
readonly linear1s: BackoffStrategy;
|
|
80
|
+
/**
|
|
81
|
+
* Exponential backoff starting at 1 second
|
|
82
|
+
*/
|
|
83
|
+
readonly exponential1s: BackoffStrategy;
|
|
84
|
+
/**
|
|
85
|
+
* Exponential backoff starting at 100ms (fast retries)
|
|
86
|
+
*/
|
|
87
|
+
readonly exponentialFast: BackoffStrategy;
|
|
88
|
+
/**
|
|
89
|
+
* No delay (immediate retry)
|
|
90
|
+
*/
|
|
91
|
+
readonly immediate: BackoffStrategy;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Create a backoff strategy from workflow configuration
|
|
95
|
+
*
|
|
96
|
+
* @param type - Backoff type
|
|
97
|
+
* @param baseDelayMs - Base delay in milliseconds
|
|
98
|
+
* @param options - Additional options
|
|
99
|
+
* @returns Backoff strategy instance
|
|
100
|
+
*/
|
|
101
|
+
export declare function createBackoffStrategy(type: BackoffType, baseDelayMs: number, options?: {
|
|
102
|
+
maxDelayMs?: number;
|
|
103
|
+
multiplier?: number;
|
|
104
|
+
jitter?: number;
|
|
105
|
+
}): BackoffStrategy;
|
|
106
|
+
//# sourceMappingURL=BackoffStrategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackoffStrategy.d.ts","sourceRoot":"","sources":["../../src/automation/BackoffStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oBAAoB;IACpB,IAAI,EAAE,WAAW,CAAC;IAElB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;gBAErC,MAAM,EAAE,aAAa;IAYjC;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAqCvC;;;;;OAKG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAQ9C;;;;;OAKG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAI1C;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAI9C;;OAEG;IACH,OAAO,CAAC,cAAc;CAevB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;;IAMH;;OAEG;;IAMH;;OAEG;;IAOH;;OAEG;;IAQH;;OAEG;;IAQH;;OAEG;;CAKK,CAAC;AAEX;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,eAAe,CAMjB"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backoff Strategy
|
|
3
|
+
*
|
|
4
|
+
* Calculates delays between retry attempts using various strategies.
|
|
5
|
+
* Supports fixed, linear, and exponential backoff with jitter.
|
|
6
|
+
*
|
|
7
|
+
* @module automation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Backoff strategy for calculating retry delays
|
|
11
|
+
*/
|
|
12
|
+
export class BackoffStrategy {
|
|
13
|
+
config;
|
|
14
|
+
constructor(config) {
|
|
15
|
+
this.config = {
|
|
16
|
+
type: config.type,
|
|
17
|
+
baseDelayMs: config.baseDelayMs,
|
|
18
|
+
maxDelayMs: config.maxDelayMs ?? 60000, // Default 60s max
|
|
19
|
+
multiplier: config.multiplier ?? 2,
|
|
20
|
+
jitter: Math.max(0, Math.min(1, config.jitter ?? 0.1)), // Clamp 0-1
|
|
21
|
+
};
|
|
22
|
+
this.validateConfig();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Calculate delay for a given attempt number
|
|
26
|
+
*
|
|
27
|
+
* @param attempt - Attempt number (1-indexed)
|
|
28
|
+
* @returns Delay in milliseconds
|
|
29
|
+
*/
|
|
30
|
+
calculateDelay(attempt) {
|
|
31
|
+
if (attempt < 1) {
|
|
32
|
+
throw new Error(`Attempt number must be >= 1, got: ${attempt}`);
|
|
33
|
+
}
|
|
34
|
+
let delayMs;
|
|
35
|
+
switch (this.config.type) {
|
|
36
|
+
case 'fixed':
|
|
37
|
+
delayMs = this.config.baseDelayMs;
|
|
38
|
+
break;
|
|
39
|
+
case 'linear':
|
|
40
|
+
delayMs = this.config.baseDelayMs * attempt;
|
|
41
|
+
break;
|
|
42
|
+
case 'exponential':
|
|
43
|
+
delayMs = this.config.baseDelayMs * Math.pow(this.config.multiplier, attempt - 1);
|
|
44
|
+
break;
|
|
45
|
+
default:
|
|
46
|
+
throw new Error(`Unknown backoff type: ${this.config.type}`);
|
|
47
|
+
}
|
|
48
|
+
// Cap at max delay
|
|
49
|
+
delayMs = Math.min(delayMs, this.config.maxDelayMs);
|
|
50
|
+
// Add jitter to prevent thundering herd
|
|
51
|
+
if (this.config.jitter > 0) {
|
|
52
|
+
const jitterAmount = delayMs * this.config.jitter;
|
|
53
|
+
const randomJitter = Math.random() * jitterAmount * 2 - jitterAmount;
|
|
54
|
+
delayMs = Math.max(0, delayMs + randomJitter);
|
|
55
|
+
}
|
|
56
|
+
return Math.round(delayMs);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Calculate delays for a series of attempts
|
|
60
|
+
*
|
|
61
|
+
* @param maxAttempts - Maximum number of attempts
|
|
62
|
+
* @returns Array of delays in milliseconds
|
|
63
|
+
*/
|
|
64
|
+
calculateDelays(maxAttempts) {
|
|
65
|
+
const delays = [];
|
|
66
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
67
|
+
delays.push(this.calculateDelay(attempt));
|
|
68
|
+
}
|
|
69
|
+
return delays;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get total delay time for all retry attempts
|
|
73
|
+
*
|
|
74
|
+
* @param maxAttempts - Maximum number of attempts
|
|
75
|
+
* @returns Total delay in milliseconds
|
|
76
|
+
*/
|
|
77
|
+
getTotalDelay(maxAttempts) {
|
|
78
|
+
return this.calculateDelays(maxAttempts).reduce((sum, delay) => sum + delay, 0);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get backoff configuration
|
|
82
|
+
*/
|
|
83
|
+
getConfig() {
|
|
84
|
+
return { ...this.config };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Validate configuration
|
|
88
|
+
*/
|
|
89
|
+
validateConfig() {
|
|
90
|
+
if (this.config.baseDelayMs < 0) {
|
|
91
|
+
throw new Error(`Base delay must be >= 0, got: ${this.config.baseDelayMs}`);
|
|
92
|
+
}
|
|
93
|
+
if (this.config.maxDelayMs < this.config.baseDelayMs) {
|
|
94
|
+
throw new Error(`Max delay (${this.config.maxDelayMs}ms) must be >= base delay (${this.config.baseDelayMs}ms)`);
|
|
95
|
+
}
|
|
96
|
+
if (this.config.multiplier <= 0) {
|
|
97
|
+
throw new Error(`Multiplier must be > 0, got: ${this.config.multiplier}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Predefined backoff strategies
|
|
103
|
+
*/
|
|
104
|
+
export const BackoffStrategies = {
|
|
105
|
+
/**
|
|
106
|
+
* Fixed 1-second delay
|
|
107
|
+
*/
|
|
108
|
+
fixed1s: new BackoffStrategy({
|
|
109
|
+
type: 'fixed',
|
|
110
|
+
baseDelayMs: 1000,
|
|
111
|
+
}),
|
|
112
|
+
/**
|
|
113
|
+
* Fixed 5-second delay
|
|
114
|
+
*/
|
|
115
|
+
fixed5s: new BackoffStrategy({
|
|
116
|
+
type: 'fixed',
|
|
117
|
+
baseDelayMs: 5000,
|
|
118
|
+
}),
|
|
119
|
+
/**
|
|
120
|
+
* Linear backoff starting at 1 second
|
|
121
|
+
*/
|
|
122
|
+
linear1s: new BackoffStrategy({
|
|
123
|
+
type: 'linear',
|
|
124
|
+
baseDelayMs: 1000,
|
|
125
|
+
maxDelayMs: 30000, // Cap at 30s
|
|
126
|
+
}),
|
|
127
|
+
/**
|
|
128
|
+
* Exponential backoff starting at 1 second
|
|
129
|
+
*/
|
|
130
|
+
exponential1s: new BackoffStrategy({
|
|
131
|
+
type: 'exponential',
|
|
132
|
+
baseDelayMs: 1000,
|
|
133
|
+
maxDelayMs: 60000, // Cap at 60s
|
|
134
|
+
multiplier: 2,
|
|
135
|
+
}),
|
|
136
|
+
/**
|
|
137
|
+
* Exponential backoff starting at 100ms (fast retries)
|
|
138
|
+
*/
|
|
139
|
+
exponentialFast: new BackoffStrategy({
|
|
140
|
+
type: 'exponential',
|
|
141
|
+
baseDelayMs: 100,
|
|
142
|
+
maxDelayMs: 10000, // Cap at 10s
|
|
143
|
+
multiplier: 2,
|
|
144
|
+
}),
|
|
145
|
+
/**
|
|
146
|
+
* No delay (immediate retry)
|
|
147
|
+
*/
|
|
148
|
+
immediate: new BackoffStrategy({
|
|
149
|
+
type: 'fixed',
|
|
150
|
+
baseDelayMs: 0,
|
|
151
|
+
}),
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Create a backoff strategy from workflow configuration
|
|
155
|
+
*
|
|
156
|
+
* @param type - Backoff type
|
|
157
|
+
* @param baseDelayMs - Base delay in milliseconds
|
|
158
|
+
* @param options - Additional options
|
|
159
|
+
* @returns Backoff strategy instance
|
|
160
|
+
*/
|
|
161
|
+
export function createBackoffStrategy(type, baseDelayMs, options) {
|
|
162
|
+
return new BackoffStrategy({
|
|
163
|
+
type,
|
|
164
|
+
baseDelayMs,
|
|
165
|
+
...options,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=BackoffStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackoffStrategy.js","sourceRoot":"","sources":["../../src/automation/BackoffStrategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Failure Strategy
|
|
3
|
+
*
|
|
4
|
+
* Defines how to handle step failures in workflow execution.
|
|
5
|
+
* Controls failure propagation and workflow continuation behavior.
|
|
6
|
+
*
|
|
7
|
+
* @module automation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Failure strategy type
|
|
11
|
+
*/
|
|
12
|
+
export type FailureStrategyType = 'abort' | 'continue' | 'skipDependent';
|
|
13
|
+
/**
|
|
14
|
+
* Failure strategy configuration
|
|
15
|
+
*/
|
|
16
|
+
export interface FailureStrategyConfig {
|
|
17
|
+
/** Strategy type */
|
|
18
|
+
type: FailureStrategyType;
|
|
19
|
+
/** Allow partial workflow completion */
|
|
20
|
+
allowPartialSuccess?: boolean;
|
|
21
|
+
/** Maximum number of step failures before aborting workflow */
|
|
22
|
+
maxFailures?: number;
|
|
23
|
+
/** Critical step IDs that must succeed (failure = abort) */
|
|
24
|
+
criticalSteps?: string[];
|
|
25
|
+
/** Cleanup function to run on failure */
|
|
26
|
+
onFailure?: (stepId: string, error: Error) => Promise<void> | void;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Failure decision for a specific step failure
|
|
30
|
+
*/
|
|
31
|
+
export interface FailureDecision {
|
|
32
|
+
/** Should workflow continue? */
|
|
33
|
+
continueWorkflow: boolean;
|
|
34
|
+
/** Should execute cleanup? */
|
|
35
|
+
runCleanup: boolean;
|
|
36
|
+
/** Should skip dependent steps? */
|
|
37
|
+
skipDependentSteps: boolean;
|
|
38
|
+
/** Reason for decision */
|
|
39
|
+
reason: string;
|
|
40
|
+
/** Final workflow status if abort */
|
|
41
|
+
finalStatus?: 'failed' | 'partial';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Failure strategy for workflow execution
|
|
45
|
+
*/
|
|
46
|
+
export declare class FailureStrategy {
|
|
47
|
+
private readonly config;
|
|
48
|
+
private failureCount;
|
|
49
|
+
constructor(config: FailureStrategyConfig);
|
|
50
|
+
/**
|
|
51
|
+
* Decide what to do after a step failure
|
|
52
|
+
*
|
|
53
|
+
* @param stepId - ID of failed step
|
|
54
|
+
* @param error - Error that caused failure
|
|
55
|
+
* @param totalSteps - Total number of steps
|
|
56
|
+
* @param completedSteps - Number of completed steps
|
|
57
|
+
* @returns Failure decision
|
|
58
|
+
*/
|
|
59
|
+
decide(stepId: string, error: Error, _totalSteps: number, completedSteps: number): Promise<FailureDecision>;
|
|
60
|
+
/**
|
|
61
|
+
* Check if step is critical
|
|
62
|
+
*
|
|
63
|
+
* @param stepId - Step ID to check
|
|
64
|
+
* @returns True if critical
|
|
65
|
+
*/
|
|
66
|
+
isCriticalStep(stepId: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Get current failure count
|
|
69
|
+
*/
|
|
70
|
+
getFailureCount(): number;
|
|
71
|
+
/**
|
|
72
|
+
* Reset failure count (for new workflow execution)
|
|
73
|
+
*/
|
|
74
|
+
reset(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Get strategy type
|
|
77
|
+
*/
|
|
78
|
+
getType(): FailureStrategyType;
|
|
79
|
+
/**
|
|
80
|
+
* Check if partial success is allowed
|
|
81
|
+
*/
|
|
82
|
+
allowsPartialSuccess(): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Execute cleanup handler
|
|
85
|
+
*/
|
|
86
|
+
private executeCleanup;
|
|
87
|
+
/**
|
|
88
|
+
* Validate configuration
|
|
89
|
+
*/
|
|
90
|
+
private validateConfig;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Predefined failure strategies
|
|
94
|
+
*/
|
|
95
|
+
export declare const FailureStrategies: {
|
|
96
|
+
/**
|
|
97
|
+
* Abort workflow on first failure
|
|
98
|
+
*/
|
|
99
|
+
readonly abort: FailureStrategy;
|
|
100
|
+
/**
|
|
101
|
+
* Abort but allow partial success
|
|
102
|
+
*/
|
|
103
|
+
readonly abortWithPartial: FailureStrategy;
|
|
104
|
+
/**
|
|
105
|
+
* Continue executing all steps regardless of failures
|
|
106
|
+
*/
|
|
107
|
+
readonly continue: FailureStrategy;
|
|
108
|
+
/**
|
|
109
|
+
* Skip dependent steps on failure
|
|
110
|
+
*/
|
|
111
|
+
readonly skipDependent: FailureStrategy;
|
|
112
|
+
/**
|
|
113
|
+
* Abort after 3 failures
|
|
114
|
+
*/
|
|
115
|
+
readonly maxThreeFailures: FailureStrategy;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Create failure strategy from workflow step configuration
|
|
119
|
+
*
|
|
120
|
+
* @param continueOnError - Continue on error flag from step
|
|
121
|
+
* @param criticalSteps - List of critical step IDs
|
|
122
|
+
* @returns Failure strategy instance
|
|
123
|
+
*/
|
|
124
|
+
export declare function createFailureStrategyFromStep(continueOnError: boolean, criticalSteps?: string[]): FailureStrategy;
|
|
125
|
+
/**
|
|
126
|
+
* Failure strategy builder for fluent API
|
|
127
|
+
*/
|
|
128
|
+
export declare class FailureStrategyBuilder {
|
|
129
|
+
private type;
|
|
130
|
+
private allowPartialSuccess;
|
|
131
|
+
private maxFailures?;
|
|
132
|
+
private criticalSteps;
|
|
133
|
+
private failureHandler?;
|
|
134
|
+
withType(type: FailureStrategyType): this;
|
|
135
|
+
withPartialSuccess(allow?: boolean): this;
|
|
136
|
+
withMaxFailures(max: number): this;
|
|
137
|
+
withCriticalSteps(...stepIds: string[]): this;
|
|
138
|
+
onFailure(handler: (stepId: string, error: Error) => Promise<void> | void): this;
|
|
139
|
+
build(): FailureStrategy;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=FailureStrategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FailureStrategy.d.ts","sourceRoot":"","sources":["../../src/automation/FailureStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GACP,UAAU,GACV,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oBAAoB;IACpB,IAAI,EAAE,mBAAmB,CAAC;IAE1B,wCAAwC;IACxC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,yCAAyC;IACzC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,gBAAgB,EAAE,OAAO,CAAC;IAE1B,8BAA8B;IAC9B,UAAU,EAAE,OAAO,CAAC;IAEpB,mCAAmC;IACnC,kBAAkB,EAAE,OAAO,CAAC;IAE5B,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IAEf,qCAAqC;IACrC,WAAW,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,qBAAqB;IAYzC;;;;;;;;OAQG;IACG,MAAM,CACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,eAAe,CAAC;IAgE3B;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI,mBAAmB;IAI9B;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;OAEG;YACW,cAAc;IAS5B;;OAEG;IACH,OAAO,CAAC,cAAc;CAKvB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;;IAMH;;OAEG;;IAMH;;OAEG;;IAMH;;OAEG;;IAMH;;OAEG;;CAMK,CAAC;AAEX;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,OAAO,EACxB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,eAAe,CAcjB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAC,CAAyD;IAEhF,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAKzC,kBAAkB,CAAC,KAAK,UAAO,GAAG,IAAI;IAKtC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKlC,iBAAiB,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAK7C,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAKhF,KAAK,IAAI,eAAe;CASzB"}
|