summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKenny <[email protected]>2026-01-10 11:57:18 -0500
committerGitHub <[email protected]>2026-01-10 10:57:18 -0600
commitd5738f542c222bb5832a21f54e8348db88a3f7ba (patch)
treea58c6227bcbf52a54ab07c4b9607cd8dd8a4dd7d
parent02b7eb59f8ce9d80a9a80210c0a8ca9de716962e (diff)
downloadopencode-d5738f542c222bb5832a21f54e8348db88a3f7ba.tar.gz
opencode-d5738f542c222bb5832a21f54e8348db88a3f7ba.zip
fix(grep): follow symlinks by default in ripgrep searches (#7501)
-rw-r--r--packages/opencode/src/file/ripgrep.ts9
-rw-r--r--packages/opencode/src/tool/grep.ts2
2 files changed, 9 insertions, 2 deletions
diff --git a/packages/opencode/src/file/ripgrep.ts b/packages/opencode/src/file/ripgrep.ts
index 841f5f305..834cbee1e 100644
--- a/packages/opencode/src/file/ripgrep.ts
+++ b/packages/opencode/src/file/ripgrep.ts
@@ -367,8 +367,15 @@ export namespace Ripgrep {
return lines.join("\n")
}
- export async function search(input: { cwd: string; pattern: string; glob?: string[]; limit?: number }) {
+ export async function search(input: {
+ cwd: string
+ pattern: string
+ glob?: string[]
+ limit?: number
+ follow?: boolean
+ }) {
const args = [`${await filepath()}`, "--json", "--hidden", "--glob='!.git/*'"]
+ if (input.follow !== false) args.push("--follow")
if (input.glob) {
for (const g of input.glob) {
diff --git a/packages/opencode/src/tool/grep.ts b/packages/opencode/src/tool/grep.ts
index 4cbc5347f..b7cba1674 100644
--- a/packages/opencode/src/tool/grep.ts
+++ b/packages/opencode/src/tool/grep.ts
@@ -33,7 +33,7 @@ export const GrepTool = Tool.define("grep", {
const searchPath = params.path || Instance.directory
const rgPath = await Ripgrep.filepath()
- const args = ["-nH", "--field-match-separator=|", "--regexp", params.pattern]
+ const args = ["-nH", "--hidden", "--follow", "--field-match-separator=|", "--regexp", params.pattern]
if (params.include) {
args.push("--glob", params.include)
}