From 3d01d72b8a419c7a7a5e83bbae8ce3e1f369efdf Mon Sep 17 00:00:00 2001 From: uinstinct <61635505+uinstinct@users.noreply.github.com> Date: Thu, 6 Nov 2025 18:25:47 +0530 Subject: [PATCH 1/3] fix(cli): add ignore patterns to search tool --- extensions/cli/src/tools/searchCode.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/extensions/cli/src/tools/searchCode.ts b/extensions/cli/src/tools/searchCode.ts index 76b500ce652..bdd15980a0d 100644 --- a/extensions/cli/src/tools/searchCode.ts +++ b/extensions/cli/src/tools/searchCode.ts @@ -8,6 +8,14 @@ import { Tool } from "./types.js"; const execPromise = util.promisify(child_process.exec); +const COMMON_IGNORE_PATTERNS: string[] = [ + "**/node_modules/**", + "**/.git/**", + "**/bower_components/**", + "**/.svn/**", + "**/.hg/**", +]; + // Default maximum number of results to display const DEFAULT_MAX_RESULTS = 100; @@ -69,6 +77,10 @@ export const searchCodeTool: Tool = { command += ` -g "${args.file_pattern}"`; } + for (const ignorePattern of COMMON_IGNORE_PATTERNS) { + command += ` -g "!${ignorePattern}"`; + } + command += ` "${searchPath}"`; try { const { stdout, stderr } = await execPromise(command); From 3f52b02eb1465206dbd999173b5adf77bdd08b83 Mon Sep 17 00:00:00 2001 From: uinstinct <61635505+uinstinct@users.noreply.github.com> Date: Thu, 6 Nov 2025 18:41:47 +0530 Subject: [PATCH 2/3] use gitignores patterns --- extensions/cli/package.json | 3 ++- extensions/cli/src/tools/searchCode.ts | 24 ++++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/extensions/cli/package.json b/extensions/cli/package.json index c8b5a32b39c..c44a7b13adb 100644 --- a/extensions/cli/package.json +++ b/extensions/cli/package.json @@ -46,6 +46,7 @@ "dependencies": { "@sentry/profiling-node": "^9.43.0", "fdir": "^6.4.2", + "find-up": "^8.0.0", "fzf": "^0.5.2" }, "devDependencies": { @@ -86,6 +87,7 @@ "@vitest/ui": "^3.2.4", "@workos-inc/node": "^7.45.0", "chalk": "^5.4.1", + "clipboardy": "^4.0.0", "commander": "^14.0.0", "conventional-changelog-conventionalcommits": "^9.1.0", "core": "file:../../core", @@ -99,7 +101,6 @@ "eslint-plugin-import": "^2.32.0", "eslint-plugin-unused-imports": "^4.1.4", "execa": "^9.6.0", - "clipboardy": "^4.0.0", "express": "^5.1.0", "glob": "^11.0.3", "gpt-tokenizer": "^3.0.1", diff --git a/extensions/cli/src/tools/searchCode.ts b/extensions/cli/src/tools/searchCode.ts index bdd15980a0d..a85cb94fdda 100644 --- a/extensions/cli/src/tools/searchCode.ts +++ b/extensions/cli/src/tools/searchCode.ts @@ -3,18 +3,25 @@ import * as fs from "fs"; import * as util from "util"; import { ContinueError, ContinueErrorReason } from "core/util/errors.js"; +import { findUp } from "find-up"; import { Tool } from "./types.js"; const execPromise = util.promisify(child_process.exec); -const COMMON_IGNORE_PATTERNS: string[] = [ - "**/node_modules/**", - "**/.git/**", - "**/bower_components/**", - "**/.svn/**", - "**/.hg/**", -]; +async function getGitignorePatterns() { + const gitIgnorePath = await findUp(".gitignore"); + if (!gitIgnorePath) return []; + const content = fs.readFileSync(gitIgnorePath, "utf-8"); + const ignorePatterns = []; + for (let line of content.trim().split("\n")) { + line = line.trim(); + if (line.startsWith("#") || line === "") continue; // ignore comments and empty line + if (line.startsWith("!")) continue; // ignore negated ignores + ignorePatterns.push(line); + } + return ignorePatterns; +} // Default maximum number of results to display const DEFAULT_MAX_RESULTS = 100; @@ -77,12 +84,13 @@ export const searchCodeTool: Tool = { command += ` -g "${args.file_pattern}"`; } - for (const ignorePattern of COMMON_IGNORE_PATTERNS) { + for (const ignorePattern of await getGitignorePatterns()) { command += ` -g "!${ignorePattern}"`; } command += ` "${searchPath}"`; try { + console.log("debug1 command was", command); const { stdout, stderr } = await execPromise(command); if (stderr) { From f0217d2ac3034b08aa5a501144e7340ca21c3487 Mon Sep 17 00:00:00 2001 From: uinstinct <61635505+uinstinct@users.noreply.github.com> Date: Thu, 6 Nov 2025 19:49:43 +0530 Subject: [PATCH 3/3] remove console log --- extensions/cli/src/tools/searchCode.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/extensions/cli/src/tools/searchCode.ts b/extensions/cli/src/tools/searchCode.ts index a85cb94fdda..38ab4d9b28b 100644 --- a/extensions/cli/src/tools/searchCode.ts +++ b/extensions/cli/src/tools/searchCode.ts @@ -90,7 +90,6 @@ export const searchCodeTool: Tool = { command += ` "${searchPath}"`; try { - console.log("debug1 command was", command); const { stdout, stderr } = await execPromise(command); if (stderr) {