""" Write file tool """ import os from typing import Dict, Any from .registry import Tool class WriteTool(Tool): """Tool for writing files with automatic directory creation""" def __init__(self): super().__init__( name="write", description="Write content to a file. Creates parent directories if they don't exist. Overwrites existing files.", parameters={ "type": "object", "properties": { "file_path": { "type": "string", "description": "Path to the file to write (relative or absolute)" }, "content": { "type": "string", "description": "Content to write to the file" } }, "required": ["file_path", "content"] } ) async def execute(self, args: Dict[str, Any]) -> str: """Execute the write tool""" file_path = args.get("file_path") content = args.get("content", "") if not file_path: return "Error: file_path is required" try: # Convert to absolute path if relative if not os.path.isabs(file_path): file_path = os.path.abspath(file_path) # Create parent directories if they don't exist parent_dir = os.path.dirname(file_path) if parent_dir and not os.path.exists(parent_dir): os.makedirs(parent_dir, exist_ok=True) # Write the file with open(file_path, 'w', encoding='utf-8') as f: f.write(content) # Get file info file_size = os.path.getsize(file_path) line_count = content.count('\n') + (1 if content and not content.endswith('\n') else 0) return f"Successfully wrote {file_size} bytes ({line_count} lines) to '{file_path}'" except Exception as e: return f"Error: Could not write file '{file_path}': {e}"