Spaces:
Sleeping
Sleeping
| import asyncio | |
| import logging | |
| import abc | |
| from typing import Dict, List, Any, Optional | |
| from aworld.sandbox.base import Sandbox | |
| from aworld.sandbox.models import SandboxStatus, SandboxEnvType, SandboxInfo | |
| from aworld.sandbox.run.mcp_servers import McpServers | |
| class BaseSandbox(Sandbox): | |
| """ | |
| Base sandbox implementation with common functionality for all sandbox types. | |
| This class implements common methods and provides a foundation for specific sandbox implementations. | |
| """ | |
| def __init__( | |
| self, | |
| sandbox_id: Optional[str] = None, | |
| env_type: Optional[int] = None, | |
| metadata: Optional[Dict[str, str]] = None, | |
| timeout: Optional[int] = None, | |
| mcp_servers: Optional[List[str]] = None, | |
| mcp_config: Optional[Any] = None, | |
| ): | |
| """ | |
| Initialize a new BaseSandbox instance. | |
| Args: | |
| sandbox_id: Unique identifier for the sandbox. If None, one will be generated. | |
| env_type: The environment type (LOCAL, K8S, SUPERCOMPUTER). | |
| metadata: Additional metadata for the sandbox. | |
| timeout: Timeout for sandbox operations. | |
| mcp_servers: List of MCP servers to use. | |
| mcp_config: Configuration for MCP servers. | |
| """ | |
| super().__init__( | |
| sandbox_id=sandbox_id, | |
| env_type=env_type, | |
| metadata=metadata, | |
| timeout=timeout, | |
| mcp_servers=mcp_servers, | |
| mcp_config=mcp_config | |
| ) | |
| self._logger = self._setup_logger() | |
| def _setup_logger(self): | |
| """ | |
| Set up a logger for the sandbox instance. | |
| Returns: | |
| logging.Logger: Configured logger instance. | |
| """ | |
| logger = logging.getLogger(f"sandbox.{self.__class__.__name__}.{self.sandbox_id[:8]}") | |
| return logger | |
| def get_info(self) -> SandboxInfo: | |
| """ | |
| Get information about the sandbox. | |
| Returns: | |
| SandboxInfo: Information about the sandbox. | |
| """ | |
| return { | |
| "sandbox_id": self.sandbox_id, | |
| "status": self.status, | |
| "metadata": self.metadata, | |
| "env_type": self.env_type | |
| } | |
| def mcpservers(self) -> McpServers: | |
| """ | |
| Module for running MCP servers in the sandbox. | |
| This property provides access to the MCP servers instance. | |
| Returns: | |
| McpServers: The MCP servers instance. | |
| """ | |
| if hasattr(self, '_mcpservers'): | |
| return self._mcpservers | |
| return None | |
| async def cleanup(self) -> bool: | |
| """ | |
| Clean up sandbox resources. | |
| This method must be implemented by subclasses to provide environment-specific cleanup. | |
| Returns: | |
| bool: True if cleanup was successful, False otherwise. | |
| """ | |
| pass | |
| async def remove(self) -> bool: | |
| """ | |
| Remove the sandbox. | |
| This method must be implemented by subclasses to provide environment-specific removal. | |
| Returns: | |
| bool: True if removal was successful, False otherwise. | |
| """ | |
| pass |