2026-03-20 16:07:27 +09:00
|
|
|
import os
|
|
|
|
|
|
2026-03-20 14:58:50 +09:00
|
|
|
from agent.integrations.docker_sandbox import DockerSandbox
|
2026-03-20 14:38:07 +09:00
|
|
|
|
|
|
|
|
|
2026-03-20 14:58:50 +09:00
|
|
|
def create_sandbox(sandbox_id: str | None = None) -> DockerSandbox:
|
2026-03-20 16:07:27 +09:00
|
|
|
"""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")),
|
|
|
|
|
)
|