@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,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TopologicalSorter
|
|
3
|
+
*
|
|
4
|
+
* Performs topological sorting on a dependency graph using Kahn's algorithm.
|
|
5
|
+
* This is what makes parallel execution possible.
|
|
6
|
+
*
|
|
7
|
+
* Purpose:
|
|
8
|
+
* - Convert DAG into execution phases
|
|
9
|
+
* - Group independent steps into phases (parallelization!)
|
|
10
|
+
* - Ensure dependencies are satisfied before execution
|
|
11
|
+
* - This is "the moment Orbyt becomes real" - we go from sequential to parallel
|
|
12
|
+
*
|
|
13
|
+
* Algorithm: Kahn's Algorithm (BFS-based)
|
|
14
|
+
* 1. Start with all nodes that have no dependencies (in-degree = 0)
|
|
15
|
+
* 2. Remove them and their edges, collect them as Phase 1
|
|
16
|
+
* 3. Find new nodes with in-degree = 0 (Phase 2)
|
|
17
|
+
* 4. Repeat until all nodes are processed
|
|
18
|
+
*
|
|
19
|
+
* Result: [['validate'], ['process', 'lint'], ['upload']]
|
|
20
|
+
* Phase 1: validate (runs alone)
|
|
21
|
+
* Phase 2: process and lint (run in parallel!)
|
|
22
|
+
* Phase 3: upload (runs after both complete)
|
|
23
|
+
*
|
|
24
|
+
* What it does NOT do:
|
|
25
|
+
* - Does NOT execute steps (that's StepExecutor's job)
|
|
26
|
+
* - Does NOT manage state (that's ExecutionState's job)
|
|
27
|
+
* - Does NOT add retries (that's StepExecutor's job)
|
|
28
|
+
*/
|
|
29
|
+
import { WorkflowValidationError } from '@dev-ecosystem/core';
|
|
30
|
+
import { DependencyResolver } from './DependencyResolver.js';
|
|
31
|
+
/**
|
|
32
|
+
* Performs topological sorting to determine execution order.
|
|
33
|
+
* Pure function - takes validated graph, returns execution phases.
|
|
34
|
+
*/
|
|
35
|
+
export class TopologicalSorter {
|
|
36
|
+
/**
|
|
37
|
+
* Sort the dependency graph into execution phases using Kahn's algorithm.
|
|
38
|
+
*
|
|
39
|
+
* This is BFS-based and naturally groups independent steps into phases.
|
|
40
|
+
*
|
|
41
|
+
* @param graph - The dependency graph (must be acyclic)
|
|
42
|
+
* @returns Topological sort result with execution phases
|
|
43
|
+
* @throws WorkflowValidationError if graph contains cycles
|
|
44
|
+
*/
|
|
45
|
+
static sort(graph) {
|
|
46
|
+
// Calculate in-degrees (number of dependencies for each node)
|
|
47
|
+
const inDegrees = DependencyResolver.calculateInDegrees(graph);
|
|
48
|
+
// Track which nodes have been processed
|
|
49
|
+
const processed = new Set();
|
|
50
|
+
// Store phases
|
|
51
|
+
const phases = [];
|
|
52
|
+
// Map of stepId → phase number
|
|
53
|
+
const stepPhases = new Map();
|
|
54
|
+
// Kahn's algorithm
|
|
55
|
+
let currentPhaseIndex = 0;
|
|
56
|
+
while (processed.size < graph.nodes.size) {
|
|
57
|
+
// Find all nodes with in-degree 0 (ready to execute)
|
|
58
|
+
const currentPhase = [];
|
|
59
|
+
for (const [stepId, inDegree] of inDegrees) {
|
|
60
|
+
if (inDegree === 0 && !processed.has(stepId)) {
|
|
61
|
+
currentPhase.push(stepId);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// If no nodes are ready but we haven't processed everything,
|
|
65
|
+
// there must be a cycle
|
|
66
|
+
if (currentPhase.length === 0 && processed.size < graph.nodes.size) {
|
|
67
|
+
const remaining = Array.from(graph.nodes.keys()).filter((id) => !processed.has(id));
|
|
68
|
+
throw new WorkflowValidationError('Cannot create execution plan: circular dependency detected during topological sort', {
|
|
69
|
+
remainingSteps: remaining,
|
|
70
|
+
hint: 'Use CycleDetector.detectAndThrow() before calling TopologicalSorter.sort()',
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// Process current phase
|
|
74
|
+
for (const stepId of currentPhase) {
|
|
75
|
+
processed.add(stepId);
|
|
76
|
+
stepPhases.set(stepId, currentPhaseIndex);
|
|
77
|
+
// Reduce in-degree of all dependents
|
|
78
|
+
const dependents = graph.reverseDependencies.get(stepId) || [];
|
|
79
|
+
for (const dependent of dependents) {
|
|
80
|
+
const currentInDegree = inDegrees.get(dependent);
|
|
81
|
+
inDegrees.set(dependent, currentInDegree - 1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (currentPhase.length > 0) {
|
|
85
|
+
phases.push(currentPhase);
|
|
86
|
+
currentPhaseIndex++;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
phases: phases.map((phase) => Object.freeze([...phase])),
|
|
91
|
+
phaseCount: phases.length,
|
|
92
|
+
stepPhases,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Sort using DFS-based algorithm (alternative to Kahn's).
|
|
97
|
+
* This produces a valid topological order but doesn't naturally
|
|
98
|
+
* group into phases like Kahn's does.
|
|
99
|
+
*
|
|
100
|
+
* Use this if you need a single linear order rather than phases.
|
|
101
|
+
*
|
|
102
|
+
* @param graph - The dependency graph
|
|
103
|
+
* @returns Array of step IDs in topological order
|
|
104
|
+
*/
|
|
105
|
+
static sortLinear(graph) {
|
|
106
|
+
const visited = new Set();
|
|
107
|
+
const result = [];
|
|
108
|
+
const visit = (nodeId) => {
|
|
109
|
+
if (visited.has(nodeId)) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
visited.add(nodeId);
|
|
113
|
+
// Visit all dependencies first
|
|
114
|
+
const dependencies = graph.adjacencyList.get(nodeId) || [];
|
|
115
|
+
for (const dependency of dependencies) {
|
|
116
|
+
visit(dependency);
|
|
117
|
+
}
|
|
118
|
+
// Add to result after visiting dependencies
|
|
119
|
+
result.push(nodeId);
|
|
120
|
+
};
|
|
121
|
+
// Visit all nodes
|
|
122
|
+
for (const nodeId of graph.nodes.keys()) {
|
|
123
|
+
visit(nodeId);
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Calculate the critical path through the dependency graph.
|
|
129
|
+
* The critical path is the longest path from entry to exit points.
|
|
130
|
+
*
|
|
131
|
+
* This is useful for:
|
|
132
|
+
* - Estimating minimum workflow execution time
|
|
133
|
+
* - Identifying bottlenecks
|
|
134
|
+
* - Optimizing parallelization
|
|
135
|
+
*
|
|
136
|
+
* @param graph - The dependency graph
|
|
137
|
+
* @param stepDurations - Map of stepId → estimated duration (ms)
|
|
138
|
+
* @returns Critical path information
|
|
139
|
+
*/
|
|
140
|
+
static calculateCriticalPath(graph, stepDurations) {
|
|
141
|
+
const sortResult = this.sort(graph);
|
|
142
|
+
const earliestStart = new Map();
|
|
143
|
+
const latestStart = new Map();
|
|
144
|
+
// Forward pass: calculate earliest start times
|
|
145
|
+
for (const phase of sortResult.phases) {
|
|
146
|
+
for (const stepId of phase) {
|
|
147
|
+
const dependencies = graph.adjacencyList.get(stepId) || [];
|
|
148
|
+
if (dependencies.length === 0) {
|
|
149
|
+
earliestStart.set(stepId, 0);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
let maxEarliest = 0;
|
|
153
|
+
for (const dep of dependencies) {
|
|
154
|
+
const depEarliest = earliestStart.get(dep);
|
|
155
|
+
const depDuration = stepDurations.get(dep) || 0;
|
|
156
|
+
maxEarliest = Math.max(maxEarliest, depEarliest + depDuration);
|
|
157
|
+
}
|
|
158
|
+
earliestStart.set(stepId, maxEarliest);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Find maximum earliest start (workflow end time)
|
|
163
|
+
let workflowDuration = 0;
|
|
164
|
+
for (const [stepId, earliest] of earliestStart) {
|
|
165
|
+
const duration = stepDurations.get(stepId) || 0;
|
|
166
|
+
workflowDuration = Math.max(workflowDuration, earliest + duration);
|
|
167
|
+
}
|
|
168
|
+
// Backward pass: calculate latest start times
|
|
169
|
+
const exitPoints = DependencyResolver.getExitPoints(graph);
|
|
170
|
+
for (const exitPoint of exitPoints) {
|
|
171
|
+
const duration = stepDurations.get(exitPoint) || 0;
|
|
172
|
+
latestStart.set(exitPoint, workflowDuration - duration);
|
|
173
|
+
}
|
|
174
|
+
// Process phases in reverse
|
|
175
|
+
for (let i = sortResult.phases.length - 1; i >= 0; i--) {
|
|
176
|
+
for (const stepId of sortResult.phases[i]) {
|
|
177
|
+
if (latestStart.has(stepId)) {
|
|
178
|
+
continue; // Already set as exit point
|
|
179
|
+
}
|
|
180
|
+
const dependents = graph.reverseDependencies.get(stepId) || [];
|
|
181
|
+
const duration = stepDurations.get(stepId) || 0;
|
|
182
|
+
let minLatest = workflowDuration;
|
|
183
|
+
for (const dependent of dependents) {
|
|
184
|
+
const dependentLatest = latestStart.get(dependent);
|
|
185
|
+
minLatest = Math.min(minLatest, dependentLatest);
|
|
186
|
+
}
|
|
187
|
+
latestStart.set(stepId, minLatest - duration);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// Calculate slack (float) for each step
|
|
191
|
+
const slack = new Map();
|
|
192
|
+
for (const stepId of graph.nodes.keys()) {
|
|
193
|
+
const earliest = earliestStart.get(stepId);
|
|
194
|
+
const latest = latestStart.get(stepId);
|
|
195
|
+
slack.set(stepId, latest - earliest);
|
|
196
|
+
}
|
|
197
|
+
// Find critical path (steps with zero slack)
|
|
198
|
+
const criticalPath = [];
|
|
199
|
+
for (const [stepId, slackValue] of slack) {
|
|
200
|
+
if (slackValue === 0) {
|
|
201
|
+
criticalPath.push(stepId);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
criticalPath,
|
|
206
|
+
workflowDuration,
|
|
207
|
+
earliestStart,
|
|
208
|
+
latestStart,
|
|
209
|
+
slack,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=TopologicalSorter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TopologicalSorter.js","sourceRoot":"","sources":["../../src/graph/TopologicalSorter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph Analysis Utilities
|
|
3
|
+
*
|
|
4
|
+
* Tools for analyzing workflow dependency graphs:
|
|
5
|
+
* - DependencyResolver: Build graph from workflow steps
|
|
6
|
+
* - CycleDetector: Validate no circular dependencies
|
|
7
|
+
* - TopologicalSorter: Generate execution phases for parallelization
|
|
8
|
+
*
|
|
9
|
+
* These work together to create valid execution plans.
|
|
10
|
+
*/
|
|
11
|
+
export * from './DependencyGraph.js';
|
|
12
|
+
export * from './DependencyResolver.js';
|
|
13
|
+
export * from './CycleDetector.js';
|
|
14
|
+
export * from './TopologicalSorter.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph Analysis Utilities
|
|
3
|
+
*
|
|
4
|
+
* Tools for analyzing workflow dependency graphs:
|
|
5
|
+
* - DependencyResolver: Build graph from workflow steps
|
|
6
|
+
* - CycleDetector: Validate no circular dependencies
|
|
7
|
+
* - TopologicalSorter: Generate execution phases for parallelization
|
|
8
|
+
*
|
|
9
|
+
* These work together to create valid execution plans.
|
|
10
|
+
*/
|
|
11
|
+
export * from './DependencyGraph.js';
|
|
12
|
+
export * from './DependencyResolver.js';
|
|
13
|
+
export * from './CycleDetector.js';
|
|
14
|
+
export * from './TopologicalSorter.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Guard
|
|
3
|
+
*
|
|
4
|
+
* Future security and resource limiting layer.
|
|
5
|
+
* Currently provides basic checks, will be extended for:
|
|
6
|
+
* - Permission policies
|
|
7
|
+
* - Resource limits (CPU, memory, network)
|
|
8
|
+
* - Sandbox enforcement
|
|
9
|
+
*
|
|
10
|
+
* @module guards
|
|
11
|
+
*/
|
|
12
|
+
import type { ParsedStep } from '../parser/StepParser.js';
|
|
13
|
+
/**
|
|
14
|
+
* Permission policy for workflow execution
|
|
15
|
+
*/
|
|
16
|
+
export interface PermissionPolicy {
|
|
17
|
+
/** Allow network access */
|
|
18
|
+
allowNetwork?: boolean;
|
|
19
|
+
/** Allow file system access */
|
|
20
|
+
allowFileSystem?: boolean;
|
|
21
|
+
/** Allow shell command execution */
|
|
22
|
+
allowShell?: boolean;
|
|
23
|
+
/** Allowed adapter types */
|
|
24
|
+
allowedAdapters?: string[];
|
|
25
|
+
/** Blocked adapter types */
|
|
26
|
+
blockedAdapters?: string[];
|
|
27
|
+
/** Maximum step timeout (ms) */
|
|
28
|
+
maxStepTimeout?: number;
|
|
29
|
+
/** Maximum workflow timeout (ms) */
|
|
30
|
+
maxWorkflowTimeout?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Resource and permission guard
|
|
34
|
+
*/
|
|
35
|
+
export declare class ResourceGuard {
|
|
36
|
+
private policy;
|
|
37
|
+
constructor(policy?: Partial<PermissionPolicy>);
|
|
38
|
+
/**
|
|
39
|
+
* Validate step against permission policy
|
|
40
|
+
*
|
|
41
|
+
* @param step - Step to validate
|
|
42
|
+
* @throws {Error} If step violates policy
|
|
43
|
+
*/
|
|
44
|
+
validateStep(step: ParsedStep): void;
|
|
45
|
+
/**
|
|
46
|
+
* Check if adapter type is allowed
|
|
47
|
+
*/
|
|
48
|
+
private checkAdapterPermission;
|
|
49
|
+
/**
|
|
50
|
+
* Check timeout limits
|
|
51
|
+
*/
|
|
52
|
+
private checkTimeout;
|
|
53
|
+
/**
|
|
54
|
+
* Parse timeout string to milliseconds
|
|
55
|
+
*/
|
|
56
|
+
private parseTimeoutString;
|
|
57
|
+
/**
|
|
58
|
+
* Check network access permission
|
|
59
|
+
*/
|
|
60
|
+
private checkNetworkAccess;
|
|
61
|
+
/**
|
|
62
|
+
* Check file system access permission
|
|
63
|
+
*/
|
|
64
|
+
private checkFileSystemAccess;
|
|
65
|
+
/**
|
|
66
|
+
* Check shell execution permission
|
|
67
|
+
*/
|
|
68
|
+
private checkShellAccess;
|
|
69
|
+
/**
|
|
70
|
+
* Validate workflow-level resource limits
|
|
71
|
+
*
|
|
72
|
+
* @param steps - All workflow steps
|
|
73
|
+
* @param workflowTimeout - Total workflow timeout
|
|
74
|
+
* @throws {Error} If workflow exceeds limits
|
|
75
|
+
*/
|
|
76
|
+
validateWorkflow(steps: ParsedStep[], workflowTimeout?: number): void;
|
|
77
|
+
/**
|
|
78
|
+
* Get current policy
|
|
79
|
+
*/
|
|
80
|
+
getPolicy(): PermissionPolicy;
|
|
81
|
+
/**
|
|
82
|
+
* Create a restrictive policy (for untrusted workflows)
|
|
83
|
+
*/
|
|
84
|
+
static restrictivePolicy(): PermissionPolicy;
|
|
85
|
+
/**
|
|
86
|
+
* Create a permissive policy (for trusted workflows)
|
|
87
|
+
*/
|
|
88
|
+
static permissivePolicy(): PermissionPolicy;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=ResourceGuard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceGuard.d.ts","sourceRoot":"","sources":["../../src/guards/ResourceGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAeD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAIlD;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAQpC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBrE;;OAEG;IACH,SAAS,IAAI,gBAAgB;IAI7B;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,gBAAgB;IAY5C;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,gBAAgB;CAG5C"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Guard
|
|
3
|
+
*
|
|
4
|
+
* Future security and resource limiting layer.
|
|
5
|
+
* Currently provides basic checks, will be extended for:
|
|
6
|
+
* - Permission policies
|
|
7
|
+
* - Resource limits (CPU, memory, network)
|
|
8
|
+
* - Sandbox enforcement
|
|
9
|
+
*
|
|
10
|
+
* @module guards
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Default permission policy (permissive)
|
|
14
|
+
*/
|
|
15
|
+
const DEFAULT_POLICY = {
|
|
16
|
+
allowNetwork: true,
|
|
17
|
+
allowFileSystem: true,
|
|
18
|
+
allowShell: true,
|
|
19
|
+
allowedAdapters: undefined, // Allow all
|
|
20
|
+
blockedAdapters: [],
|
|
21
|
+
maxStepTimeout: 30 * 60 * 1000, // 30 minutes
|
|
22
|
+
maxWorkflowTimeout: 2 * 60 * 60 * 1000, // 2 hours
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Resource and permission guard
|
|
26
|
+
*/
|
|
27
|
+
export class ResourceGuard {
|
|
28
|
+
policy;
|
|
29
|
+
constructor(policy = {}) {
|
|
30
|
+
this.policy = { ...DEFAULT_POLICY, ...policy };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate step against permission policy
|
|
34
|
+
*
|
|
35
|
+
* @param step - Step to validate
|
|
36
|
+
* @throws {Error} If step violates policy
|
|
37
|
+
*/
|
|
38
|
+
validateStep(step) {
|
|
39
|
+
this.checkAdapterPermission(step);
|
|
40
|
+
this.checkTimeout(step);
|
|
41
|
+
this.checkNetworkAccess(step);
|
|
42
|
+
this.checkFileSystemAccess(step);
|
|
43
|
+
this.checkShellAccess(step);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check if adapter type is allowed
|
|
47
|
+
*/
|
|
48
|
+
checkAdapterPermission(step) {
|
|
49
|
+
const { adapter } = step;
|
|
50
|
+
const { allowedAdapters, blockedAdapters } = this.policy;
|
|
51
|
+
// Check blocked list first
|
|
52
|
+
if (blockedAdapters && blockedAdapters.includes(adapter)) {
|
|
53
|
+
throw new Error(`Step '${step.id}': adapter '${adapter}' is blocked by policy`);
|
|
54
|
+
}
|
|
55
|
+
// Check allowed list if defined
|
|
56
|
+
if (allowedAdapters && !allowedAdapters.includes(adapter)) {
|
|
57
|
+
throw new Error(`Step '${step.id}': adapter '${adapter}' is not in allowed list. ` +
|
|
58
|
+
`Allowed: ${allowedAdapters.join(', ')}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Check timeout limits
|
|
63
|
+
*/
|
|
64
|
+
checkTimeout(step) {
|
|
65
|
+
const { maxStepTimeout } = this.policy;
|
|
66
|
+
if (maxStepTimeout && step.timeout) {
|
|
67
|
+
const timeoutMs = this.parseTimeoutString(step.timeout);
|
|
68
|
+
if (timeoutMs > maxStepTimeout) {
|
|
69
|
+
throw new Error(`Step '${step.id}': timeout ${timeoutMs}ms exceeds policy limit ${maxStepTimeout}ms`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Parse timeout string to milliseconds
|
|
75
|
+
*/
|
|
76
|
+
parseTimeoutString(timeout) {
|
|
77
|
+
const match = timeout.match(/^([0-9]+)(ms|s|m|h|d)$/);
|
|
78
|
+
if (!match) {
|
|
79
|
+
return 30000; // Default 30s
|
|
80
|
+
}
|
|
81
|
+
const value = parseInt(match[1], 10);
|
|
82
|
+
const unit = match[2];
|
|
83
|
+
switch (unit) {
|
|
84
|
+
case 'ms':
|
|
85
|
+
return value;
|
|
86
|
+
case 's':
|
|
87
|
+
return value * 1000;
|
|
88
|
+
case 'm':
|
|
89
|
+
return value * 60 * 1000;
|
|
90
|
+
case 'h':
|
|
91
|
+
return value * 60 * 60 * 1000;
|
|
92
|
+
case 'd':
|
|
93
|
+
return value * 24 * 60 * 60 * 1000;
|
|
94
|
+
default:
|
|
95
|
+
return 30000;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check network access permission
|
|
100
|
+
*/
|
|
101
|
+
checkNetworkAccess(step) {
|
|
102
|
+
if (this.policy.allowNetwork === false) {
|
|
103
|
+
const networkAdapters = ['http', 'webhook', 'api'];
|
|
104
|
+
if (networkAdapters.includes(step.adapter)) {
|
|
105
|
+
throw new Error(`Step '${step.id}': network access not allowed by policy`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check file system access permission
|
|
111
|
+
*/
|
|
112
|
+
checkFileSystemAccess(step) {
|
|
113
|
+
if (this.policy.allowFileSystem === false) {
|
|
114
|
+
const fsAdapters = ['fs', 'file'];
|
|
115
|
+
if (fsAdapters.includes(step.adapter)) {
|
|
116
|
+
throw new Error(`Step '${step.id}': file system access not allowed by policy`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check shell execution permission
|
|
122
|
+
*/
|
|
123
|
+
checkShellAccess(step) {
|
|
124
|
+
if (this.policy.allowShell === false) {
|
|
125
|
+
const shellAdapters = ['shell', 'cli', 'exec'];
|
|
126
|
+
if (shellAdapters.includes(step.adapter)) {
|
|
127
|
+
throw new Error(`Step '${step.id}': shell execution not allowed by policy`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Validate workflow-level resource limits
|
|
133
|
+
*
|
|
134
|
+
* @param steps - All workflow steps
|
|
135
|
+
* @param workflowTimeout - Total workflow timeout
|
|
136
|
+
* @throws {Error} If workflow exceeds limits
|
|
137
|
+
*/
|
|
138
|
+
validateWorkflow(steps, workflowTimeout) {
|
|
139
|
+
// Check workflow timeout
|
|
140
|
+
if (this.policy.maxWorkflowTimeout && workflowTimeout) {
|
|
141
|
+
if (workflowTimeout > this.policy.maxWorkflowTimeout) {
|
|
142
|
+
throw new Error(`Workflow timeout ${workflowTimeout}ms exceeds policy limit ${this.policy.maxWorkflowTimeout}ms`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Validate each step
|
|
146
|
+
for (const step of steps) {
|
|
147
|
+
this.validateStep(step);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get current policy
|
|
152
|
+
*/
|
|
153
|
+
getPolicy() {
|
|
154
|
+
return { ...this.policy };
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Create a restrictive policy (for untrusted workflows)
|
|
158
|
+
*/
|
|
159
|
+
static restrictivePolicy() {
|
|
160
|
+
return {
|
|
161
|
+
allowNetwork: false,
|
|
162
|
+
allowFileSystem: false,
|
|
163
|
+
allowShell: false,
|
|
164
|
+
allowedAdapters: ['plugin'], // Only plugins
|
|
165
|
+
blockedAdapters: ['shell', 'cli', 'exec', 'fs'],
|
|
166
|
+
maxStepTimeout: 5 * 60 * 1000, // 5 minutes
|
|
167
|
+
maxWorkflowTimeout: 15 * 60 * 1000, // 15 minutes
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Create a permissive policy (for trusted workflows)
|
|
172
|
+
*/
|
|
173
|
+
static permissivePolicy() {
|
|
174
|
+
return DEFAULT_POLICY;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=ResourceGuard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceGuard.js","sourceRoot":"","sources":["../../src/guards/ResourceGuard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Step Guard
|
|
3
|
+
*
|
|
4
|
+
* Validates individual step configurations:
|
|
5
|
+
* - Step structure validation
|
|
6
|
+
* - Input parameter validation
|
|
7
|
+
* - Timeout validation
|
|
8
|
+
* - Retry policy validation
|
|
9
|
+
*
|
|
10
|
+
* @module guards
|
|
11
|
+
*/
|
|
12
|
+
import type { ParsedStep } from '../parser/StepParser.js';
|
|
13
|
+
/**
|
|
14
|
+
* Step validation guard
|
|
15
|
+
*/
|
|
16
|
+
export declare class StepGuard {
|
|
17
|
+
/**
|
|
18
|
+
* Validate a single step
|
|
19
|
+
*
|
|
20
|
+
* @param step - Step to validate
|
|
21
|
+
* @param availableSteps - Set of all step IDs in workflow
|
|
22
|
+
* @throws {Error} If validation fails
|
|
23
|
+
*/
|
|
24
|
+
static validate(step: ParsedStep, availableSteps: Set<string>): void;
|
|
25
|
+
/**
|
|
26
|
+
* Validate required fields
|
|
27
|
+
*
|
|
28
|
+
* @param step - Step to validate
|
|
29
|
+
* @throws {Error} If required fields missing
|
|
30
|
+
*/
|
|
31
|
+
private static validateRequired;
|
|
32
|
+
/**
|
|
33
|
+
* Validate timeout values
|
|
34
|
+
*
|
|
35
|
+
* @param step - Step to validate
|
|
36
|
+
* @throws {Error} If timeout invalid
|
|
37
|
+
*/
|
|
38
|
+
private static validateTimeout;
|
|
39
|
+
/**
|
|
40
|
+
* Validate retry policy
|
|
41
|
+
*
|
|
42
|
+
* @param step - Step to validate
|
|
43
|
+
* @throws {Error} If retry policy invalid
|
|
44
|
+
*/
|
|
45
|
+
private static validateRetryPolicy;
|
|
46
|
+
/**
|
|
47
|
+
* Validate step dependencies exist
|
|
48
|
+
*
|
|
49
|
+
* @param step - Step to validate
|
|
50
|
+
* @param availableSteps - Set of all step IDs
|
|
51
|
+
* @throws {Error} If dependency doesn't exist
|
|
52
|
+
*/
|
|
53
|
+
private static validateDependencies;
|
|
54
|
+
/**
|
|
55
|
+
* Validate variable references in step inputs
|
|
56
|
+
*
|
|
57
|
+
* @param step - Step to validate
|
|
58
|
+
* @param availableSteps - Set of all step IDs
|
|
59
|
+
* @throws {Error} If variable references unknown step
|
|
60
|
+
*/
|
|
61
|
+
private static validateVariableReferences;
|
|
62
|
+
/**
|
|
63
|
+
* Validate adapter-specific requirements
|
|
64
|
+
*
|
|
65
|
+
* @param step - Step to validate
|
|
66
|
+
* @throws {Error} If adapter requirements not met
|
|
67
|
+
*/
|
|
68
|
+
static validateAdapterRequirements(step: ParsedStep): void;
|
|
69
|
+
/**
|
|
70
|
+
* Validate HTTP adapter requirements
|
|
71
|
+
*/
|
|
72
|
+
private static validateHttpAdapter;
|
|
73
|
+
/**
|
|
74
|
+
* Validate shell adapter requirements
|
|
75
|
+
*/
|
|
76
|
+
private static validateShellAdapter;
|
|
77
|
+
/**
|
|
78
|
+
* Validate CLI adapter requirements
|
|
79
|
+
*/
|
|
80
|
+
private static validateCliAdapter;
|
|
81
|
+
/**
|
|
82
|
+
* Check if step has any conditional execution
|
|
83
|
+
*
|
|
84
|
+
* @param step - Step to check
|
|
85
|
+
* @returns True if step has 'when' condition
|
|
86
|
+
*/
|
|
87
|
+
static isConditional(step: ParsedStep): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Check if step is retryable
|
|
90
|
+
*
|
|
91
|
+
* @param step - Step to check
|
|
92
|
+
* @returns True if step has retry policy configured
|
|
93
|
+
*/
|
|
94
|
+
static isRetryable(step: ParsedStep): boolean;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=StepGuard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepGuard.d.ts","sourceRoot":"","sources":["../../src/guards/StepGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D;;GAEG;AACH,qBAAa,SAAS;IACpB;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI;IAQpE;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAc/B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAiB9B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAkBlC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAoBnC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAczC;;;;;OAKG;IACH,MAAM,CAAC,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAkB1D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAWlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAQnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAQjC;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAI/C;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;CAG9C"}
|