# -*- coding: utf-8 -*-
# pylint: disable=dangerous-default-value
from typing import Optional
from ...constant import IMAGE_TAG
from ...registry import SandboxRegistry
from ...enums import SandboxType
from ...box.sandbox import Sandbox
[docs]
@SandboxRegistry.register(
f"agentscope/runtime-sandbox-filesystem:{IMAGE_TAG}",
sandbox_type=SandboxType.FILESYSTEM,
security_level="medium",
timeout=60,
description="Filesystem sandbox",
)
class FilesystemSandbox(Sandbox):
[docs]
def __init__(
self,
sandbox_id: Optional[str] = None,
timeout: int = 3000,
base_url: Optional[str] = None,
bearer_token: Optional[str] = None,
):
super().__init__(
sandbox_id,
timeout,
base_url,
bearer_token,
SandboxType.FILESYSTEM,
)
[docs]
def read_file(self, path: str):
return self.call_tool("read_file", {"path": path})
[docs]
def read_multiple_files(self, paths: list):
return self.call_tool("read_multiple_files", {"paths": paths})
[docs]
def write_file(self, path: str, content: str):
return self.call_tool("write_file", {"path": path, "content": content})
[docs]
def edit_file(self, path: str, edits: list, dry_run: bool = False):
return self.call_tool(
"edit_file",
{
"path": path,
"edits": edits,
"dryRun": dry_run,
},
)
[docs]
def create_directory(self, path: str):
return self.call_tool("create_directory", {"path": path})
[docs]
def list_directory(self, path: str):
return self.call_tool("list_directory", {"path": path})
[docs]
def directory_tree(self, path: str):
return self.call_tool("directory_tree", {"path": path})
[docs]
def move_file(self, source: str, destination: str):
return self.call_tool(
"move_file",
{"source": source, "destination": destination},
)
[docs]
def search_files(
self,
path: str,
pattern: str,
exclude_patterns: list = [],
):
return self.call_tool(
"search_files",
{
"path": path,
"pattern": pattern,
"excludePatterns": exclude_patterns,
},
)
[docs]
def get_file_info(self, path: str):
return self.call_tool("get_file_info", {"path": path})
[docs]
def list_allowed_directories(self):
return self.call_tool("list_allowed_directories", {})