diff --git a/model_tools.py b/model_tools.py index caef4a224..71016af52 100644 --- a/model_tools.py +++ b/model_tools.py @@ -898,13 +898,13 @@ def get_file_tool_definitions() -> List[Dict[str, Any]]: "properties": { "pattern": { "type": "string", - "description": "For target='content': regex pattern to search for. For target='files': glob pattern (e.g., '*.py', '*config*')" + "description": "Regex pattern for grep mode, or glob pattern (e.g., '*.py', '*config*') for find mode" }, "target": { "type": "string", - "enum": ["content", "files"], - "description": "Search mode: 'content' searches inside files (like grep/rg), 'files' searches for files by name (like find/glob)", - "default": "content" + "enum": ["grep", "find"], + "description": "'grep' searches inside file contents, 'find' searches for files by name", + "default": "grep" }, "path": { "type": "string", @@ -913,7 +913,7 @@ def get_file_tool_definitions() -> List[Dict[str, Any]]: }, "file_glob": { "type": "string", - "description": "Filter files by pattern when target='content' (e.g., '*.py' to only search Python files)" + "description": "Filter files by pattern in grep mode (e.g., '*.py' to only search Python files)" }, "limit": { "type": "integer", @@ -928,12 +928,12 @@ def get_file_tool_definitions() -> List[Dict[str, Any]]: "output_mode": { "type": "string", "enum": ["content", "files_only", "count"], - "description": "Output format for content search: 'content' shows matching lines with line numbers, 'files_only' lists file paths, 'count' shows match counts per file", + "description": "Output format for grep mode: 'content' shows matching lines with line numbers, 'files_only' lists file paths, 'count' shows match counts per file", "default": "content" }, "context": { "type": "integer", - "description": "Number of lines to show before and after each match (only for target='content', output_mode='content')", + "description": "Number of context lines before and after each match (grep mode only)", "default": 0 } }, @@ -2016,9 +2016,13 @@ def handle_file_function_call( ) elif function_name == "search_files": + # Map user-facing target values to internal ones + target_map = {"grep": "content", "find": "files"} + raw_target = function_args.get("target", "grep") + target = target_map.get(raw_target, raw_target) return search_tool( pattern=function_args.get("pattern", ""), - target=function_args.get("target", "content"), + target=target, path=function_args.get("path", "."), file_glob=function_args.get("file_glob"), limit=function_args.get("limit", 50), diff --git a/tools/code_execution_tool.py b/tools/code_execution_tool.py index d9acc6441..db7d23d94 100644 --- a/tools/code_execution_tool.py +++ b/tools/code_execution_tool.py @@ -90,8 +90,8 @@ _TOOL_STUBS = { ), "search_files": ( "search_files", - 'pattern: str, target: str = "content", path: str = ".", file_glob: str = None, limit: int = 50', - '"""Search file contents (target="content") or find files (target="files"). Returns dict with "matches"."""', + 'pattern: str, target: str = "grep", path: str = ".", file_glob: str = None, limit: int = 50', + '"""Search file contents (target="grep") or find files by name (target="find"). Returns dict with "matches"."""', '{"pattern": pattern, "target": target, "path": path, "file_glob": file_glob, "limit": limit}', ), "patch": ( @@ -553,8 +553,8 @@ EXECUTE_CODE_SCHEMA = { " Lines are 1-indexed. Returns {\"content\": \"...\", \"total_lines\": N}\n" " write_file(path: str, content: str) -> dict\n" " Always overwrites the entire file.\n" - " search_files(pattern: str, target=\"content\", path=\".\", file_glob=None, limit=50) -> dict\n" - " target: \"content\" (grep) or \"files\" (find). Returns {\"matches\": [...]}\n" + " search_files(pattern: str, target=\"grep\", path=\".\", file_glob=None, limit=50) -> dict\n" + " target: \"grep\" (search inside files) or \"find\" (find files by name). Returns {\"matches\": [...]}\n" " patch(path: str, old_string: str, new_string: str, replace_all: bool = False) -> dict\n" " Replaces old_string with new_string in the file.\n" " terminal(command: str, timeout=None, workdir=None) -> dict\n"