From d6350a7fa61702ac2aa74357e901d59f2c4ee1c7 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Tue, 2 Sep 2025 10:40:20 -0500 Subject: [PATCH] tweak: update ls tool to use rg (#2367) --- packages/opencode/src/tool/ls.ts | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/packages/opencode/src/tool/ls.ts b/packages/opencode/src/tool/ls.ts index 00dbcbd3..5a8173ef 100644 --- a/packages/opencode/src/tool/ls.ts +++ b/packages/opencode/src/tool/ls.ts @@ -3,6 +3,7 @@ import { Tool } from "./tool" import * as path from "path" import DESCRIPTION from "./ls.txt" import { Instance } from "../project/instance" +import { Ripgrep } from "../file/ripgrep" export const IGNORE_PATTERNS = [ "node_modules/", @@ -42,15 +43,8 @@ export const ListTool = Tool.define("list", { async execute(params) { const searchPath = path.resolve(Instance.directory, params.path || ".") - const glob = new Bun.Glob("**/*") - const files = [] - - for await (const file of glob.scan({ cwd: searchPath, dot: true })) { - if (IGNORE_PATTERNS.some((p) => file.includes(p))) continue - if (params.ignore?.some((pattern) => new Bun.Glob(pattern).match(file))) continue - files.push(file) - if (files.length >= LIMIT) break - } + const ignoreGlobs = IGNORE_PATTERNS.map((p) => `!${p}*`).concat(params.ignore?.map((p) => `!${p}`) || []) + const files = await Ripgrep.files({ cwd: searchPath, glob: ignoreGlobs, limit: LIMIT }) // Build directory structure const dirs = new Set()