cuga-agent / src /scripts /commands.py
Sami Marreed
feat: docker-v1 with optimized frontend
0646b18
import os
import subprocess
import asyncio
from cuga.backend.tools_env.code_sandbox.sandbox import run_code
from cuga.config import settings, PACKAGE_ROOT
from cuga.backend.activity_tracker.tracker import ActivityTracker
from loguru import logger
tracker = ActivityTracker()
def run_petstore():
server_module = "agent/api/example_api_servers/petstore.py"
from cuga.config import settings
subprocess.run(
[
"uv",
"run",
"fastapi",
"dev",
server_module,
"--no-reload",
f"--port={settings.server_ports.petstore_api}",
]
)
def run_api_registry_base(mode):
"""Run the FastAPI server."""
if mode == "appworld":
os.environ["MCP_SERVERS_FILE"] = os.path.join(
PACKAGE_ROOT, "backend/tools_env/registry/config/mcp_servers_appworld.yaml"
)
host = os.environ.get("CUGA_HOST", "127.0.0.1")
server_module = os.path.join(PACKAGE_ROOT, "backend/tools_env/registry/registry/api_registry_server.py")
subprocess.run(
[
"uv",
"run",
"fastapi",
"dev",
server_module,
f"--host={host}",
"--no-reload",
f"--port={settings.server_ports.registry}",
]
)
def run_api_registry():
run_api_registry_base('demo')
def run_api_registry_appworld():
run_api_registry_base('appworld')
def run_demo():
"""Run the FastAPI server."""
host = os.environ.get("CUGA_HOST", "127.0.0.1")
server_module = "backend/server/main.py"
subprocess.run(
[
"uv",
"run",
"fastapi",
"dev",
os.path.join(PACKAGE_ROOT, server_module),
f"--host={host}",
"--no-reload",
f"--port={settings.server_ports.demo}",
]
)
def run_eval_api():
"""Run the FastAPI server."""
subprocess.run(["python", "server/main.py", "--api-mode"])
def run_digital_sales_mcp():
subprocess.run(
[
"uv",
"run",
os.path.join(
PACKAGE_ROOT, "..", "..", "docs/examples/cuga_with_runtime_tools/fast_mcp_example.py"
),
]
)
def run_digital_sales_openapi():
"""Run the digital sales OpenAPI server."""
host = os.environ.get("CUGA_HOST", "127.0.0.1")
server_module = os.path.join(PACKAGE_ROOT, "..", "..", "docs/examples/digital_sales_openapi/main.py")
subprocess.run(
[
"uv",
"run",
"fastapi",
"dev",
server_module,
f"--host={host}",
"--no-reload",
f"--port={settings.server_ports.digital_sales_api}",
]
)
async def _test_sandbox_async(remote: bool = False):
tracker.current_date = "2023-05-18T12:00:00"
if remote:
os.environ["DYNACONF_FEATURES__LOCAL_SANDBOX"] = "false"
logger.info("Testing with remote sandbox (Docker/Podman)...")
else:
os.environ["DYNACONF_FEATURES__LOCAL_SANDBOX"] = "true"
logger.info("Testing with local sandbox...")
res = await run_code("print('test succeeded')")
logger.info(res)
def test_sandbox(remote: bool = False):
"""Test sandbox execution.
Args:
remote: If True, test with remote Docker/Podman sandbox. If False (default), test with local sandbox.
"""
asyncio.run(_test_sandbox_async(remote))
def setup_appworld_environment():
"""Set up the appworld environment with necessary data and installations."""
import subprocess
import sys
# Check if appworld directory exists
if not os.path.isdir("appworld"):
print("Error: 'appworld' directory not found!")
print("Please clone the repository first")
sys.exit(1)
# Change to appworld directory
os.chdir("appworld")
# Install the package
subprocess.run(["uv", "pip", "install", "."])
# Note: For experiment reproduction use:
subprocess.run(["python", "-m", "appworld.cli", "install"])
# Unpack encrypted code
subprocess.run(["appworld", "install", "--repo"])
# Download benchmark data
subprocess.run(["appworld", "download", "data"])
# Copy data folder to evaluation folder
# subprocess.run(["cp", "-r", "./data", "../evaluation/"])
print("Appworld environment setup complete!")
def setup_appworld_environment_docker():
"""Set up the appworld environment with necessary data and installations."""
import subprocess
import sys
# Check if appworld directory exists
if not os.path.isdir("/app/appworld"):
print("Error: 'appworld' directory not found!")
print("Please clone the repository first")
sys.exit(1)
# Change to appworld directory
os.chdir("/app/appworld")
# Install the package
subprocess.run(["uv", "pip", "install", "."])
# Note: For experiment reproduction use:
subprocess.run(["python", "-m", "appworld.cli", "install"])
#
# # Unpack encrypted code
# subprocess.run(["appworld", "install", "--repo"])
#
# # Download benchmark data
# subprocess.run(["appworld", "download", "data"])
# Copy data folder to evaluation folder
# subprocess.run(["cp", "-r", "./data", "../evaluation/"])
print("Appworld environment setup complete!")