from ..olayer import ( BrowserComponent, FileSystemComponent, PythonComponent, ShellComponent, ) class ComputerBooter: @property def fs(self) -> FileSystemComponent: ... @property def python(self) -> PythonComponent: ... @property def shell(self) -> ShellComponent: ... @property def capabilities(self) -> tuple[str, ...] | None: """Sandbox capabilities (e.g. ('python', 'shell', 'filesystem', 'browser')). Returns None if the booter doesn't support capability introspection (backward-compatible default). Subclasses override after boot. """ return None @property def browser(self) -> BrowserComponent | None: return None async def boot(self, session_id: str) -> None: ... async def shutdown(self) -> None: ... async def upload_file(self, path: str, file_name: str) -> dict: """Upload file to the computer. Should return a dict with `success` (bool) and `file_path` (str) keys. """ ... async def download_file(self, remote_path: str, local_path: str) -> None: """Download file from the computer.""" ... async def available(self) -> bool: """Check if the computer is available.""" ...