# Import base tool from agent.tools.base_tool import BaseTool from agent.tools.tool_manager import ToolManager # Import basic tools (no external dependencies) from agent.tools.calculator.calculator import Calculator from agent.tools.current_time.current_time import CurrentTime # Import file operation tools from agent.tools.read.read import Read from agent.tools.write.write import Write from agent.tools.edit.edit import Edit from agent.tools.bash.bash import Bash from agent.tools.grep.grep import Grep from agent.tools.find.find import Find from agent.tools.ls.ls import Ls # Import memory tools from agent.tools.memory.memory_search import MemorySearchTool from agent.tools.memory.memory_get import MemoryGetTool # Import web tools from agent.tools.web_fetch.web_fetch import WebFetch # Import tools with optional dependencies def _import_optional_tools(): """Import tools that have optional dependencies""" tools = {} # Google Search (requires requests) try: from agent.tools.google_search.google_search import GoogleSearch tools['GoogleSearch'] = GoogleSearch except ImportError: pass # File Save (may have dependencies) try: from agent.tools.file_save.file_save import FileSave tools['FileSave'] = FileSave except ImportError: pass # Terminal (basic, should work) try: from agent.tools.terminal.terminal import Terminal tools['Terminal'] = Terminal except ImportError: pass return tools # Load optional tools _optional_tools = _import_optional_tools() GoogleSearch = _optional_tools.get('GoogleSearch') FileSave = _optional_tools.get('FileSave') Terminal = _optional_tools.get('Terminal') # Delayed import for BrowserTool def _import_browser_tool(): try: from agent.tools.browser.browser_tool import BrowserTool return BrowserTool except ImportError: # Return a placeholder class that will prompt the user to install dependencies when instantiated class BrowserToolPlaceholder: def __init__(self, *args, **kwargs): raise ImportError( "The 'browser-use' package is required to use BrowserTool. " "Please install it with 'pip install browser-use>=0.1.40'." ) return BrowserToolPlaceholder # Dynamically set BrowserTool BrowserTool = _import_browser_tool() # Export all tools (including optional ones that might be None) __all__ = [ 'BaseTool', 'ToolManager', 'Calculator', 'CurrentTime', 'Read', 'Write', 'Edit', 'Bash', 'Grep', 'Find', 'Ls', 'MemorySearchTool', 'MemoryGetTool', 'WebFetch', # Optional tools (may be None if dependencies not available) 'GoogleSearch', 'FileSave', 'Terminal', 'BrowserTool' ] """ Tools module for Agent. """