Spaces:
Sleeping
Sleeping
| """GetFileContentTool — retrieve file content from a repository.""" | |
| from __future__ import annotations | |
| import os | |
| from pathlib import Path | |
| from pydantic import BaseModel, Field | |
| from ...base import BaseTool, ToolContext | |
| class GetFileContentInput(BaseModel): | |
| repo_dir: str = Field(description="Local path to the repository.") | |
| relative_path: str = Field(description="Relative path of the file inside the repository.") | |
| class GetFileContentTool(BaseTool): | |
| name = "get_file_content" | |
| description = "Retrieve the content of a file inside a cloned GitHub repository." | |
| input_schema = GetFileContentInput | |
| _always_read_only = True | |
| def call(self, context: ToolContext, *, repo_dir: str, relative_path: str) -> str: | |
| try: | |
| repo_path = Path(os.path.expandvars(repo_dir)).expanduser() | |
| file_path = repo_path / relative_path | |
| if not file_path.exists(): | |
| return f"Error: File '{relative_path}' does not exist in repository" | |
| return file_path.read_text(errors="ignore") | |
| except Exception as e: | |
| return f"Error reading file: {e}" | |