File Tool
Status: Planned
Read and write files on the filesystem.
Capabilities
- Read file contents
- Write/create files
- List directories
- Search files by name/content
- Move/copy/delete files
- Watch for changes
Interface
typescript
interface FileTool extends Tool { name: "file"; actions: { // Read read(path: string, encoding?: string): Promise<string>; readBinary(path: string): Promise<Buffer>; exists(path: string): Promise<boolean>; stat(path: string): Promise<FileStat>; // Write write(path: string, content: string): Promise<void>; writeBinary(path: string, content: Buffer): Promise<void>; append(path: string, content: string): Promise<void>; // Directory list(path: string, options?: ListOptions): Promise<FileInfo[]>; mkdir(path: string, recursive?: boolean): Promise<void>; // Search glob(pattern: string, options?: GlobOptions): Promise<string[]>; grep(pattern: string, path: string): Promise<GrepResult[]>; // Modify copy(src: string, dest: string): Promise<void>; move(src: string, dest: string): Promise<void>; delete(path: string): Promise<void>; // Watch watch(path: string, callback: WatchCallback): Promise<Watcher>; }; } interface FileInfo { name: string; path: string; isDirectory: boolean; size: number; modified: Date; }
Example Usage
typescript
// Read a file const content = await file.read("/path/to/file.txt"); // Write a file await file.write("/path/to/output.md", "# Hello\n\nWorld"); // Find all TypeScript files const tsFiles = await file.glob("**/*.ts", { cwd: "/project" }); // Search for pattern in files const matches = await file.grep("TODO", "/project/src");
Security Considerations
Path Restrictions
Consider restricting to:
- User's home directory
- Specific project directories
- Exclude system directories
Dangerous Operations
Require confirmation for:
- Deleting files
- Overwriting existing files
- Writing to sensitive locations
Logging
Log all write operations for audit trail.
Open Questions
- Should we restrict to certain directories?
- How to handle large files?
- Support for file permissions (chmod)?