import os from agent.integrations.docker_sandbox import DockerSandbox def create_sandbox(sandbox_id: str | None = None) -> DockerSandbox: """Factory function for creating DockerSandbox instances. Args: sandbox_id: Optional container ID to connect to existing container. If None, creates a new container. Returns: DockerSandbox instance configured from environment variables. """ # Build environment variables for the container env = {} test_db_url = os.environ.get("TEST_DATABASE_URL", "") if test_db_url: env["DATABASE_URL"] = test_db_url # Connect to existing container if ID provided if sandbox_id: return DockerSandbox(container_id=sandbox_id) # Create new container with environment configuration return DockerSandbox( image=os.environ.get("SANDBOX_IMAGE", "galaxis-sandbox:latest"), network=os.environ.get("SANDBOX_NETWORK", "galaxis-net"), mem_limit=os.environ.get("SANDBOX_MEM_LIMIT", "4g"), cpu_count=int(os.environ.get("SANDBOX_CPU_COUNT", "2")), pids_limit=int(os.environ.get("SANDBOX_PIDS_LIMIT", "256")), environment=env, default_timeout=int(os.environ.get("SANDBOX_TIMEOUT", "300")), )