batch3 T4 review polish: drop Stats hack, document cache race + total counting
- Drop unused Stats type import and its no-op suppression expression - Comment getProjectFiles concurrent-miss race (benign, accepted) - Comment findFiles deliberate post-limit counting (differs from grep) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,9 @@ interface CacheEntry {
|
||||
|
||||
const cache = new Map<string, CacheEntry>(); // keyed by projectId
|
||||
|
||||
// Concurrent calls with a cold/stale cache may both spawn rg. The result is
|
||||
// deterministic so they overwrite identically — no data corruption, just a
|
||||
// rare extra subprocess. Acceptable for single-user mode.
|
||||
export async function getProjectFiles(projectId: string, projectRoot: string): Promise<string[]> {
|
||||
const current = await snapMtimes(projectRoot);
|
||||
const cached = cache.get(projectId);
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { readFile, readdir, stat } from 'node:fs/promises';
|
||||
import { resolve, relative } from 'node:path';
|
||||
import { spawn } from 'node:child_process';
|
||||
import type { Stats } from 'node:fs';
|
||||
import { pathGuard, PathScopeError } from './path_guard.js';
|
||||
|
||||
const MAX_FILE_BYTES = 5 * 1024 * 1024;
|
||||
@@ -48,9 +47,6 @@ export interface FindFilesResult {
|
||||
truncated: boolean;
|
||||
}
|
||||
|
||||
// Suppress unused import warning — Stats is part of the public API surface
|
||||
void (undefined as unknown as Stats);
|
||||
|
||||
export async function listDir(projectRoot: string, relPath: string): Promise<ListDirResult> {
|
||||
const real = await pathGuard(projectRoot, relPath);
|
||||
const s = await stat(real);
|
||||
@@ -224,6 +220,8 @@ export async function findFiles(
|
||||
const line = buf.slice(0, idx);
|
||||
buf = buf.slice(idx + 1);
|
||||
if (!line) continue;
|
||||
// Keep counting after limit to report accurate `total` to the caller.
|
||||
// grep kills early since the LLM doesn't need a total; this differs intentionally.
|
||||
total++;
|
||||
if (files.length < limit) {
|
||||
files.push(relative(projectRoot, line) || line);
|
||||
|
||||
Reference in New Issue
Block a user