"""Task executors registry.""" from typing import Type from app.executors.base import BaseExecutor, ExecutionResult from app.executors.composite_executor import CompositeExecutor from app.executors.docker_executor import DockerExecutor from app.executors.echo_executor import EchoExecutor from app.executors.env_update_executor import EnvUpdateExecutor from app.executors.file_executor import FileExecutor from app.executors.playwright_executor import PlaywrightExecutor from app.executors.shell_executor import ShellExecutor # Registry mapping task types to executor classes EXECUTOR_REGISTRY: dict[str, Type[BaseExecutor]] = { "ECHO": EchoExecutor, "SHELL": ShellExecutor, "FILE_WRITE": FileExecutor, "ENV_UPDATE": EnvUpdateExecutor, "DOCKER_RELOAD": DockerExecutor, "COMPOSITE": CompositeExecutor, "PLAYWRIGHT": PlaywrightExecutor, } def get_executor(task_type: str) -> BaseExecutor: """Get an executor instance for a task type. Args: task_type: The type of task to execute Returns: Executor instance Raises: ValueError: If task type is not registered """ if task_type not in EXECUTOR_REGISTRY: raise ValueError( f"Unknown task type: {task_type}. " f"Available: {list(EXECUTOR_REGISTRY.keys())}" ) executor_class = EXECUTOR_REGISTRY[task_type] return executor_class() __all__ = [ "BaseExecutor", "ExecutionResult", "EchoExecutor", "ShellExecutor", "FileExecutor", "EnvUpdateExecutor", "DockerExecutor", "CompositeExecutor", "PlaywrightExecutor", "EXECUTOR_REGISTRY", "get_executor", ]