diff --git a/backend/autometabuilder/engine/workflow_context_builder.py b/backend/autometabuilder/engine/workflow_context_builder.py index be52570..4abbb08 100644 --- a/backend/autometabuilder/engine/workflow_context_builder.py +++ b/backend/autometabuilder/engine/workflow_context_builder.py @@ -1,5 +1,12 @@ """Build workflow runtime context.""" -from ..utils.model_resolver import resolve_model_name +import os + +DEFAULT_MODEL = "openai/gpt-4o" + + +def resolve_model_name(prompt: dict) -> str: + """Resolve model name from env or prompt.""" + return os.environ.get("LLM_MODEL", prompt.get("model", DEFAULT_MODEL)) def build_workflow_context(parts: dict) -> dict: diff --git a/backend/autometabuilder/tools/run_docker_task.py b/backend/autometabuilder/tools/run_docker_task.py index e003262..90ce7b2 100644 --- a/backend/autometabuilder/tools/run_docker_task.py +++ b/backend/autometabuilder/tools/run_docker_task.py @@ -1,6 +1,42 @@ """Run a task inside Docker.""" +import subprocess import os -from ..utils.docker_utils import run_command_in_docker +import logging + +logger = logging.getLogger("autometabuilder.docker") + + +def run_command_in_docker(image: str, command: str, volumes: dict = None, workdir: str = None): + """ + Run a command inside a Docker container. + + :param image: Docker image to use. + :param command: Command to execute. + :param volumes: Dictionary of volume mappings {host_path: container_path}. + :param workdir: Working directory inside the container. + :return: Standard output of the command. + """ + docker_command = ["docker", "run", "--rm"] + + if volumes: + for host_path, container_path in volumes.items(): + docker_command.extend(["-v", f"{os.path.abspath(host_path)}:{container_path}"]) + + if workdir: + docker_command.extend(["-w", workdir]) + + docker_command.append(image) + docker_command.extend(["sh", "-c", command]) + + logger.info(f"Executing in Docker ({image}): {command}") + result = subprocess.run(docker_command, capture_output=True, text=True, check=False) + + output = result.stdout + if result.stderr: + output += "\n" + result.stderr + + logger.info(output) + return output def run_docker_task(image: str, command: str, workdir: str = "/workspace") -> str: