Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| from pathlib import Path | |
| from langchain_core.tools import tool | |
| from app.utils.logger import get_logger | |
| logger = get_logger(__name__) | |
| ALLOWED_ROOT = Path.home() / "Desktop" / "AI-workingdir" | |
| def _resolve_safe_write_path(path: str) -> Path | None: | |
| try: | |
| ALLOWED_ROOT.mkdir(parents=True, exist_ok=True) | |
| target = (ALLOWED_ROOT / path).resolve() | |
| if ALLOWED_ROOT.resolve() not in target.parents and ALLOWED_ROOT.resolve() != target: | |
| logger.warning("Path traversal detected: %s", path) | |
| return None | |
| return target | |
| except Exception: | |
| return None | |
| def write_file(filename: str, content: str) -> str: | |
| """Write content to a file in the sandboxed working directory.""" | |
| target = _resolve_safe_write_path(filename) | |
| if not target: | |
| return f"Access denied. Can only write to {ALLOWED_ROOT}" | |
| try: | |
| target.parent.mkdir(parents=True, exist_ok=True) | |
| target.write_text(content, encoding="utf-8") | |
| return f"Successfully wrote to {target}" | |
| except Exception: | |
| logger.exception("File write failed: %s", filename) | |
| return "Write failed. Unable to write to the file." | |