feat: add sandbox and local impl

This commit is contained in:
Henry Li
2026-01-14 07:19:34 +08:00
parent 4b5f529903
commit 57a02acb59
8 changed files with 432 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
import os
import subprocess
from src.sandbox.local.list_dir import list_dir
from src.sandbox.sandbox import Sandbox
class LocalSandbox(Sandbox):
def __init__(self, id: str):
super().__init__(id)
def execute_command(self, command: str) -> str:
result = subprocess.run(
command,
executable="/bin/zsh",
shell=True,
capture_output=True,
text=True,
timeout=30,
)
output = result.stdout
if result.stderr:
output += f"\nStd Error:\n{result.stderr}" if output else result.stderr
if result.returncode != 0:
output += f"\nExit Code: {result.returncode}"
return output if output else "(no output)"
def list_dir(self, path: str, max_depth=2) -> list[str]:
return list_dir(path, max_depth)
def read_file(self, path: str) -> str:
with open(path, "r") as f:
return f.read()
def write_file(self, path: str, content: str, append: bool = False) -> None:
dir_path = os.path.dirname(path)
if dir_path:
os.makedirs(dir_path, exist_ok=True)
mode = "a" if append else "w"
with open(path, mode) as f:
f.write(content)
if __name__ == "__main__":
sandbox = LocalSandbox("test")
print(sandbox.list_dir("/Users/Henry/mnt"))