Source Code:
src/gaia/agents/tools/file_monitor_tools.pyComponent: FileToolsMixin
Module:
gaia.agents.tools.file_monitor_tools
Import: from gaia.agents.tools.file_monitor_tools import FileToolsMixinOverview
FileToolsMixin provides directory monitoring capabilities for the Chat Agent, enabling automatic document indexing when files are created or modified. This mixin focuses on watch directory functionality, with file search operations delegated to ShellToolsMixin for maximum flexibility. Key Features:- Directory monitoring with automatic document indexing
- Path validation with user confirmation
- Auto-save session state after directory changes
- Integration with RAG system for document processing
Requirements
Functional Requirements
-
Directory Monitoring
- Add directories to watch list
- Automatically index new documents (PDF files)
- Track indexed files to prevent duplicates
-
Path Validation
- Validate directory paths before adding to watch list
- Check for path access permissions
- Prompt user for confirmation on new paths
-
Auto-Indexing
- Scan directory for existing PDF files
- Index all found documents automatically
- Report indexing statistics (total found, successfully indexed)
-
Session Management
- Auto-save session after adding watch directory
- Persist watch directory list across sessions
- Track indexed files in session state
Non-Functional Requirements
-
Performance
- Efficient directory scanning with Path.glob()
- Batch indexing of existing documents
- Non-blocking file operations
-
Error Handling
- Graceful handling of missing directories
- Individual file indexing errors don’t block batch operation
- Clear error messages for validation failures
-
Integration
- Seamless integration with PathValidator
- Works with RAG system for document processing
- Compatible with session management system
API Specification
File Location
Public Interface
Implementation Details
Path Validation
Directory Scanning and Indexing
Duplicate Prevention
Error Handling
Testing Requirements
Unit Tests
File:tests/agents/chat/test_file_tools_mixin.py
Dependencies
Required Packages
Import Dependencies
Internal Dependencies
gaia.agents.base.tools.tool: Tool decoratorPathValidator: For path validation and user confirmationRAG: For document indexingSessionManager: For persisting watch directories
Error Handling
Common Errors and Responses
Usage Examples
Example 1: Adding Watch Directory
Example 2: Monitoring Multiple Directories
Example 3: Chat Integration
Integration Notes
PathValidator Integration
FileToolsMixin requires a PathValidator instance for security:RAG System Integration
The mixin delegates document indexing to the RAG system:Session Management Integration
Watch directories are persisted across sessions:Implementation Checklist
Step 1: Core Implementation
- Create FileToolsMixin class
- Implement register_file_tools()
- Implement add_watch_directory tool
- Add path validation logic
- Add directory scanning logic
- Add auto-indexing logic
Step 2: Integration
- Integrate with PathValidator
- Integrate with RAG system
- Integrate with session management
- Add to ChatAgent
Step 3: Error Handling
- Handle missing directories
- Handle access denied
- Handle indexing failures
- Provide clear error messages
Step 4: Testing
- Write unit tests
- Test path validation
- Test indexing workflow
- Test error cases
- Test integration with ChatAgent
Step 5: Documentation
- Add docstrings
- Add usage examples
- Document integration points
- Update this specification
FileToolsMixin Technical Specification