"""Validator sandbox executor adapters.""" from __future__ import annotations import os from typing import Any, Callable from .codebase_archive import CodebaseArchiveStore, create_codebase_archive_store from .codebase_executor import ( DEFAULT_SNAPSHOT_ROOT, CodebaseSandboxExecutor, _daytona_validator_backend, _local_validator_backend, ) class SandboxValidatorExecutor(CodebaseSandboxExecutor): """Restores Run codebase archives into a sandbox before running checks.""" def create_validator_executor( archive_store: CodebaseArchiveStore | None = None, provider: str | None = None, ) -> SandboxValidatorExecutor: provider = (provider or os.getenv("VALIDATOR_SANDBOX_PROVIDER") or "local").lower() store = archive_store or create_codebase_archive_store() return SandboxValidatorExecutor( backend_factory=_validator_backend_factory(provider), archive_store=store, root_dir=DEFAULT_SNAPSHOT_ROOT, ) def _validator_backend_factory(provider: str) -> Callable[[], Any]: if provider == "local": return _local_validator_backend if provider == "daytona": return _daytona_validator_backend raise ValueError(f"unsupported validator sandbox provider: {provider}")