From b2440e92e7db391eddac17ed49e4db0cb7307e09 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 2 Oct 2025 00:08:38 -0400 Subject: [PATCH] core: improve file search reliability and performance --- packages/opencode/src/file/index.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/file/index.ts b/packages/opencode/src/file/index.ts index 20e1f604..80cff630 100644 --- a/packages/opencode/src/file/index.ts +++ b/packages/opencode/src/file/index.ts @@ -88,6 +88,7 @@ export namespace File { let current = file while (true) { const dir = path.dirname(current) + if (dir === ".") break if (dir === current) break current = dir if (set.has(dir)) continue @@ -113,6 +114,10 @@ export namespace File { } }) + export function init() { + state() + } + export async function status() { const project = Instance.project if (project.vcs !== "git") return [] @@ -242,10 +247,13 @@ export namespace File { } export async function search(input: { query: string; limit?: number }) { + log.info("search", { query: input.query }) const limit = input.limit ?? 100 const result = await state().then((x) => x.files()) - const items = input.query ? [...result.files, ...result.dirs] : [...result.dirs] + if (!input.query) return result.dirs.toSorted() + const items = [...result.files, ...result.dirs] const sorted = fuzzysort.go(input.query, items, { limit: limit }).map((r) => r.target) + log.info("search", { query: input.query, results: sorted.length }) return sorted } }