diff options
| author | Dax Raad <[email protected]> | 2025-10-02 00:08:38 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-10-02 00:09:02 -0400 |
| commit | b2440e92e7db391eddac17ed49e4db0cb7307e09 (patch) | |
| tree | 4f89d628c65185f8463abd232ec11d91cfd9b08b | |
| parent | 125624489bc4a1e6191e66b345eee6d98ca94e22 (diff) | |
| download | opencode-b2440e92e7db391eddac17ed49e4db0cb7307e09.tar.gz opencode-b2440e92e7db391eddac17ed49e4db0cb7307e09.zip | |
core: improve file search reliability and performance
| -rw-r--r-- | packages/opencode/src/file/index.ts | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/packages/opencode/src/file/index.ts b/packages/opencode/src/file/index.ts index 20e1f604c..80cff6303 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 } } |
