@kenkaiiii/ggcoder 5.79.4 → 5.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-sidecar/goal-routes.d.ts +2 -22
- package/dist/app-sidecar/goal-routes.js +6 -91
- package/dist/app-sidecar/goal-routes.js.map +1 -1
- package/dist/app-sidecar.js +3 -3
- package/dist/app-sidecar.js.map +1 -1
- package/dist/core/goal-summary.d.ts +32 -0
- package/dist/core/goal-summary.js +104 -0
- package/dist/core/goal-summary.js.map +1 -0
- package/dist/core/plan-handoff.d.ts +8 -0
- package/dist/core/plan-handoff.js +11 -0
- package/dist/core/plan-handoff.js.map +1 -1
- package/dist/modes/acp-autopilot.d.ts +27 -0
- package/dist/modes/acp-autopilot.js +54 -0
- package/dist/modes/acp-autopilot.js.map +1 -0
- package/dist/modes/acp-goals.d.ts +48 -0
- package/dist/modes/acp-goals.js +103 -0
- package/dist/modes/acp-goals.js.map +1 -0
- package/dist/modes/acp-mode.d.ts +128 -3
- package/dist/modes/acp-mode.js +1082 -52
- package/dist/modes/acp-mode.js.map +1 -1
- package/dist/tools/grep-scan.d.ts +96 -0
- package/dist/tools/grep-scan.js +283 -0
- package/dist/tools/grep-scan.js.map +1 -0
- package/dist/tools/grep.d.ts +10 -0
- package/dist/tools/grep.js +418 -10
- package/dist/tools/grep.js.map +1 -1
- package/package.json +4 -4
package/dist/tools/grep.d.ts
CHANGED
|
@@ -16,9 +16,19 @@ export interface GrepToolOptions {
|
|
|
16
16
|
* lazily so a settings change takes effect without rebuilding the toolset.
|
|
17
17
|
*/
|
|
18
18
|
useExternalScanner?: () => boolean;
|
|
19
|
+
/** Test seam: smallest scan that uses worker threads (default WORKER_MIN_FILES). */
|
|
20
|
+
workerMinFiles?: number;
|
|
19
21
|
}
|
|
20
22
|
export declare function createGrepTool(cwd: string, ops?: ToolOperations, options?: GrepToolOptions): AgentTool<typeof GrepParams>;
|
|
21
23
|
export declare function detectExternalScanner(): Promise<string | undefined>;
|
|
22
24
|
/** Test seam: forget the cached probe result. */
|
|
23
25
|
export declare function resetExternalScannerProbe(): void;
|
|
26
|
+
/**
|
|
27
|
+
* For each top-level alternative, the longest run of literal characters every
|
|
28
|
+
* match of that alternative contains. `undefined` when any alternative has no
|
|
29
|
+
* such run, since that alternative could match a file containing none of them.
|
|
30
|
+
* Deliberately conservative: groups, classes, escapes of letters/digits and
|
|
31
|
+
* anything non-ASCII end a run instead of being reasoned about.
|
|
32
|
+
*/
|
|
33
|
+
export declare function requiredLiterals(pattern: string): string[] | undefined;
|
|
24
34
|
export {};
|
package/dist/tools/grep.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import readline from "node:readline";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { spawn } from "node:child_process";
|
|
4
|
+
import { readdir as readdirCallback } from "node:fs";
|
|
4
5
|
import { z } from "zod";
|
|
5
6
|
import { sliceHead } from "@kenkaiiii/gg-ai";
|
|
6
7
|
import { resolvePath } from "./path-utils.js";
|
|
7
8
|
import { BINARY_EXTENSIONS } from "./read.js";
|
|
8
|
-
import { localOperations } from "./operations.js";
|
|
9
|
+
import { localOperations, readFileBounded } from "./operations.js";
|
|
10
|
+
import { getGrepWorkerPool, makeByteFilter, scanText, } from "./grep-scan.js";
|
|
9
11
|
const GrepParams = z.object({
|
|
10
12
|
pattern: z.string().describe("JS regex"),
|
|
11
13
|
path: z.string().optional(),
|
|
@@ -17,7 +19,22 @@ const DEFAULT_MAX_RESULTS = 50;
|
|
|
17
19
|
const MAX_LINE_LENGTH = 500;
|
|
18
20
|
/** Skip files larger than 10 MB — single-line files (minified JS, data blobs) can OOM readline */
|
|
19
21
|
const MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
20
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Files up to this size are read in one call and rejected with a single regex
|
|
24
|
+
* pass when nothing matches; larger ones stream line by line. Reading whole is
|
|
25
|
+
* 3–4x faster than readline on source trees, and the cap bounds the memory a
|
|
26
|
+
* full scan pool can hold at once (SCAN_CONCURRENCY × this).
|
|
27
|
+
*/
|
|
28
|
+
const WHOLE_READ_MAX_BYTES = 1024 * 1024;
|
|
29
|
+
/** Lines checked for a NUL byte before a file is treated as binary and abandoned. */
|
|
30
|
+
const BINARY_SNIFF_LINES = 5;
|
|
31
|
+
/**
|
|
32
|
+
* Upper bound on files one call scans. The wall-clock deadline is the real
|
|
33
|
+
* time bound; this caps memory. At 10k it silently hid everything past the
|
|
34
|
+
* first 10k paths (a 12.8k-file repo, a 57k-file goal folder); the byte filter
|
|
35
|
+
* scans 57k files in ~2s, inside the deadline.
|
|
36
|
+
*/
|
|
37
|
+
const MAX_CANDIDATE_FILES = 100_000;
|
|
21
38
|
/** Wall-clock budget for a single grep call — catastrophic backtracking is count-bounded but not time-bounded */
|
|
22
39
|
const GREP_DEADLINE_MS = 5_000;
|
|
23
40
|
/**
|
|
@@ -27,6 +44,11 @@ const GREP_DEADLINE_MS = 5_000;
|
|
|
27
44
|
* partial answer as if it were the whole one.
|
|
28
45
|
*/
|
|
29
46
|
const SCAN_CONCURRENCY = 12;
|
|
47
|
+
/**
|
|
48
|
+
* Scans of at least this many files run on the worker-thread pool. Below it,
|
|
49
|
+
* a cold pool's ~15ms startup costs more than the parallelism saves.
|
|
50
|
+
*/
|
|
51
|
+
const WORKER_MIN_FILES = 256;
|
|
30
52
|
/** Cap on bytes accepted from the external scanner before results are ranked. */
|
|
31
53
|
const MAX_EXTERNAL_OUTPUT_BYTES = 8 * 1024 * 1024;
|
|
32
54
|
/** Long patterns are almost always mistakes and raise the cost of every pathological shape */
|
|
@@ -125,6 +147,7 @@ function containsQuantifier(body) {
|
|
|
125
147
|
}
|
|
126
148
|
export function createGrepTool(cwd, ops = localOperations, options = {}) {
|
|
127
149
|
const deadlineMs = options.deadlineMs ?? GREP_DEADLINE_MS;
|
|
150
|
+
const workerMinFiles = options.workerMinFiles ?? WORKER_MIN_FILES;
|
|
128
151
|
// The external scanner reads the real filesystem, so it is only valid when
|
|
129
152
|
// this tool is also pointed at the real filesystem. Remote operations
|
|
130
153
|
// (SSH/Docker) must stay on the in-process path.
|
|
@@ -159,10 +182,12 @@ export function createGrepTool(cwd, ops = localOperations, options = {}) {
|
|
|
159
182
|
throw new Error(`Invalid regex pattern: ${err.message}`, { cause: err });
|
|
160
183
|
}
|
|
161
184
|
const deadline = createDeadline(deadlineMs);
|
|
185
|
+
const literals = requiredLiterals(normalizedPattern);
|
|
186
|
+
const byteFilter = makeByteFilter(literals, flags.includes("i"));
|
|
162
187
|
// Check if dir is a file
|
|
163
188
|
const stat = await ops.stat(dir);
|
|
164
189
|
if (stat.isFile()) {
|
|
165
|
-
const results = await searchFile(dir, regex, cwd, maxResults, ops, deadline);
|
|
190
|
+
const results = await searchFile(dir, regex, cwd, maxResults, ops, deadline, byteFilter);
|
|
166
191
|
return formatResults(results, maxResults, false, deadline.hit, deadlineMs);
|
|
167
192
|
}
|
|
168
193
|
// An already-spent budget must not start a scan it cannot honour.
|
|
@@ -194,7 +219,23 @@ export function createGrepTool(cwd, ops = localOperations, options = {}) {
|
|
|
194
219
|
}
|
|
195
220
|
}
|
|
196
221
|
const { files, candidateLimitHit } = await enumerateCandidates(dir, include);
|
|
197
|
-
|
|
222
|
+
// Workers read the real filesystem, so remote operations stay on the
|
|
223
|
+
// main thread, as does any scan too small to repay a pool's startup.
|
|
224
|
+
const pool = ops === localOperations && files.length >= workerMinFiles
|
|
225
|
+
? getGrepWorkerPool(WHOLE_READ_MAX_BYTES)
|
|
226
|
+
: undefined;
|
|
227
|
+
const results = pool
|
|
228
|
+
? await scanWithWorkers(pool, {
|
|
229
|
+
files,
|
|
230
|
+
dir,
|
|
231
|
+
regex,
|
|
232
|
+
cwd,
|
|
233
|
+
maxResults,
|
|
234
|
+
deadline,
|
|
235
|
+
literals,
|
|
236
|
+
byteFilter,
|
|
237
|
+
})
|
|
238
|
+
: await scanFiles(files, dir, regex, cwd, maxResults, ops, deadline, byteFilter);
|
|
198
239
|
return formatResults(results, maxResults, candidateLimitHit, deadline.hit, deadlineMs);
|
|
199
240
|
},
|
|
200
241
|
};
|
|
@@ -215,9 +256,8 @@ export function createGrepTool(cwd, ops = localOperations, options = {}) {
|
|
|
215
256
|
*/
|
|
216
257
|
async function enumerateCandidates(dir, include) {
|
|
217
258
|
const fg = await import("fast-glob");
|
|
218
|
-
const
|
|
219
|
-
const ig =
|
|
220
|
-
ig.add(await loadIgnorePatterns(dir));
|
|
259
|
+
const ignorePatterns = await loadIgnorePatterns(dir);
|
|
260
|
+
const ig = await rootIgnore(dir, ignorePatterns);
|
|
221
261
|
const globPattern = normalizeIncludeGlob(include);
|
|
222
262
|
const entries = await fg.default(globPattern, {
|
|
223
263
|
cwd: dir,
|
|
@@ -226,6 +266,10 @@ async function enumerateCandidates(dir, include) {
|
|
|
226
266
|
ignore: ["**/node_modules/**", "**/.git/**"],
|
|
227
267
|
suppressErrors: true,
|
|
228
268
|
followSymbolicLinks: false,
|
|
269
|
+
// Prune ignored directories during the walk. Filtering only afterwards
|
|
270
|
+
// walked every file under `target/`, `.venv/` or a build cache first —
|
|
271
|
+
// 121k files walked to keep 3k on this repo.
|
|
272
|
+
...(ignorePatterns.length > 0 ? { fs: { readdir: prunedReaddir(dir, ig) } } : {}),
|
|
229
273
|
});
|
|
230
274
|
const kept = entries
|
|
231
275
|
.filter((entry) => !BINARY_EXTENSIONS.has(path.extname(entry).toLowerCase()))
|
|
@@ -236,6 +280,51 @@ async function enumerateCandidates(dir, include) {
|
|
|
236
280
|
candidateLimitHit: kept.length > MAX_CANDIDATE_FILES,
|
|
237
281
|
};
|
|
238
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* A `readdir` for fast-glob's walker that drops entries the root `.gitignore`
|
|
285
|
+
* ignores, so ignored directories are never descended into. The final
|
|
286
|
+
* `ig.ignores` filter still runs on every file, so this only removes work:
|
|
287
|
+
* `ignore` treats a path as ignored when any parent directory is, and git
|
|
288
|
+
* cannot re-include a file under an ignored directory, so a pruned directory
|
|
289
|
+
* held nothing the filter would have kept.
|
|
290
|
+
*/
|
|
291
|
+
function prunedReaddir(root, ig) {
|
|
292
|
+
const pruned = (dirPath, options, callback) => {
|
|
293
|
+
// Only the `withFileTypes` form is pruned; any other call shape (a plain
|
|
294
|
+
// name list) passes through untouched rather than guessing at types.
|
|
295
|
+
if (typeof callback !== "function" || !isWithFileTypes(options)) {
|
|
296
|
+
Reflect.apply(readdirCallback, undefined, [dirPath, options, callback]);
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
readdirCallback(dirPath, { withFileTypes: true }, (err, dirents) => {
|
|
300
|
+
if (err) {
|
|
301
|
+
callback(err, []);
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const relDir = path.relative(root, dirPath).replace(/\\/g, "/");
|
|
305
|
+
callback(null, dirents.filter((entry) => {
|
|
306
|
+
// Files are left to the final filter: checking them here as well
|
|
307
|
+
// costs a pattern match per file and saves no directory reads.
|
|
308
|
+
if (!entry.isDirectory())
|
|
309
|
+
return true;
|
|
310
|
+
const rel = relDir ? `${relDir}/${entry.name}` : entry.name;
|
|
311
|
+
// `ignore` throws on paths outside the root; keep anything odd.
|
|
312
|
+
if (rel.startsWith("../") || path.isAbsolute(rel))
|
|
313
|
+
return true;
|
|
314
|
+
return !ig.ignores(`${rel}/`);
|
|
315
|
+
}));
|
|
316
|
+
});
|
|
317
|
+
};
|
|
318
|
+
// fast-glob types this slot as Node's fully overloaded `readdir`; `pruned`
|
|
319
|
+
// implements the one overload the walker calls and forwards the rest.
|
|
320
|
+
return pruned;
|
|
321
|
+
}
|
|
322
|
+
function isWithFileTypes(options) {
|
|
323
|
+
return (typeof options === "object" &&
|
|
324
|
+
options !== null &&
|
|
325
|
+
"withFileTypes" in options &&
|
|
326
|
+
options.withFileTypes === true);
|
|
327
|
+
}
|
|
239
328
|
/**
|
|
240
329
|
* Normalize an `include` glob to gitignore-style semantics: a bare pattern
|
|
241
330
|
* with no separator matches at any depth. Models write `*.ts` meaning "every
|
|
@@ -258,6 +347,34 @@ async function fileExists(filePath) {
|
|
|
258
347
|
return false;
|
|
259
348
|
}
|
|
260
349
|
}
|
|
350
|
+
/** Compiled root ignore files, most recently used last. */
|
|
351
|
+
const ignoreCache = new Map();
|
|
352
|
+
const IGNORE_CACHE_SIZE = 8;
|
|
353
|
+
/**
|
|
354
|
+
* The matcher for one scan root's ignore patterns, reused across calls while
|
|
355
|
+
* the patterns are unchanged. `ignore` tests every rule against every path and
|
|
356
|
+
* memoizes answers per instance: a fresh instance per call spent ~80ms on a
|
|
357
|
+
* 346-line .gitignore (osu) re-deciding the same paths. The key is the pattern
|
|
358
|
+
* text itself, so an edited .gitignore gets a fresh matcher.
|
|
359
|
+
*/
|
|
360
|
+
async function rootIgnore(dir, patterns) {
|
|
361
|
+
const key = `${path.resolve(dir)}\0${patterns.join("\n")}`;
|
|
362
|
+
const cached = ignoreCache.get(key);
|
|
363
|
+
if (cached) {
|
|
364
|
+
ignoreCache.delete(key);
|
|
365
|
+
ignoreCache.set(key, cached);
|
|
366
|
+
return cached;
|
|
367
|
+
}
|
|
368
|
+
const ignoreModule = await import("ignore");
|
|
369
|
+
const ig = ignoreModule.default().add([...patterns]);
|
|
370
|
+
ignoreCache.set(key, ig);
|
|
371
|
+
for (const stale of ignoreCache.keys()) {
|
|
372
|
+
if (ignoreCache.size <= IGNORE_CACHE_SIZE)
|
|
373
|
+
break;
|
|
374
|
+
ignoreCache.delete(stale);
|
|
375
|
+
}
|
|
376
|
+
return ig;
|
|
377
|
+
}
|
|
261
378
|
async function loadIgnorePatterns(dir) {
|
|
262
379
|
try {
|
|
263
380
|
const fs = await import("node:fs/promises");
|
|
@@ -282,7 +399,7 @@ async function loadIgnorePatterns(dir) {
|
|
|
282
399
|
* first `maxResults` entries of the flattened array are exactly the ones a
|
|
283
400
|
* sequential scan would have produced before stopping.
|
|
284
401
|
*/
|
|
285
|
-
async function scanFiles(files, dir, regex, cwd, maxResults, ops, deadline) {
|
|
402
|
+
async function scanFiles(files, dir, regex, cwd, maxResults, ops, deadline, byteFilter) {
|
|
286
403
|
const slots = new Array(files.length).fill(undefined).map(() => []);
|
|
287
404
|
let next = 0;
|
|
288
405
|
let collected = 0;
|
|
@@ -296,7 +413,7 @@ async function scanFiles(files, dir, regex, cwd, maxResults, ops, deadline) {
|
|
|
296
413
|
// Each worker owns a private RegExp: `lastIndex` on a shared global regex
|
|
297
414
|
// is mutated during `test`, so concurrent scans would corrupt each other.
|
|
298
415
|
const own = new RegExp(regex.source, regex.flags);
|
|
299
|
-
const fileResults = await searchFile(path.join(dir, files[index]), own, cwd, maxResults, ops, deadline);
|
|
416
|
+
const fileResults = await searchFile(path.join(dir, files[index]), own, cwd, maxResults, ops, deadline, byteFilter);
|
|
300
417
|
slots[index] = fileResults;
|
|
301
418
|
collected += fileResults.length;
|
|
302
419
|
}
|
|
@@ -312,6 +429,106 @@ async function scanFiles(files, dir, regex, cwd, maxResults, ops, deadline) {
|
|
|
312
429
|
}
|
|
313
430
|
return results;
|
|
314
431
|
}
|
|
432
|
+
/**
|
|
433
|
+
* `scanFiles` on the worker pool: same results, same order, same early stop.
|
|
434
|
+
*
|
|
435
|
+
* Chunks are dispatched in candidate order and dispatch stops once enough
|
|
436
|
+
* matches exist, exactly like `scanFiles`' per-file scheduling. A chunk may
|
|
437
|
+
* also stop itself once it alone has found the matches still missing when it
|
|
438
|
+
* was sent (`stopAfter`): everything collected at that moment came from
|
|
439
|
+
* earlier files, so the first `maxResults` of the flattened output are already
|
|
440
|
+
* settled by the files before its stopping point.
|
|
441
|
+
*
|
|
442
|
+
* Files a worker cannot read whole (large, symlinked, unreadable), and whole
|
|
443
|
+
* chunks whose worker failed, are scanned on the main thread by the same
|
|
444
|
+
* `searchFile` that `scanFiles` uses.
|
|
445
|
+
*/
|
|
446
|
+
async function scanWithWorkers(pool, req) {
|
|
447
|
+
const { files, dir, regex, cwd, maxResults, deadline } = req;
|
|
448
|
+
const slots = new Array(files.length);
|
|
449
|
+
const chunkSize = Math.min(256, Math.max(16, Math.ceil(files.length / (pool.size * 8))));
|
|
450
|
+
const options = {
|
|
451
|
+
source: regex.source,
|
|
452
|
+
flags: regex.flags,
|
|
453
|
+
prefilter: isExternallySupported(regex.source),
|
|
454
|
+
maxResults,
|
|
455
|
+
expiresAt: deadline.expiresAt,
|
|
456
|
+
maxLineLength: MAX_LINE_LENGTH,
|
|
457
|
+
checkInterval: DEADLINE_CHECK_INTERVAL,
|
|
458
|
+
sniffLines: BINARY_SNIFF_LINES,
|
|
459
|
+
};
|
|
460
|
+
const onMainThread = async (index) => {
|
|
461
|
+
const lines = await searchFile(path.join(dir, files[index] ?? ""), new RegExp(regex.source, regex.flags), cwd, maxResults, localOperations, deadline, req.byteFilter);
|
|
462
|
+
slots[index] = lines;
|
|
463
|
+
collected += lines.length;
|
|
464
|
+
};
|
|
465
|
+
let next = 0;
|
|
466
|
+
let collected = 0;
|
|
467
|
+
const pending = [];
|
|
468
|
+
// Candidates are clean relative paths (no `.`/`..` segments), so joining
|
|
469
|
+
// them onto precomputed prefixes equals path.join/path.relative per file at
|
|
470
|
+
// a fraction of the cost.
|
|
471
|
+
const toCwd = path.relative(cwd, dir);
|
|
472
|
+
const displayPath = (rel) => {
|
|
473
|
+
if (toCwd !== "")
|
|
474
|
+
return path.join(toCwd, rel);
|
|
475
|
+
return path.sep === "/" ? rel : path.normalize(rel);
|
|
476
|
+
};
|
|
477
|
+
const lane = async () => {
|
|
478
|
+
for (;;) {
|
|
479
|
+
if (collected >= maxResults || isExpired(deadline))
|
|
480
|
+
return;
|
|
481
|
+
const start = next;
|
|
482
|
+
if (start >= files.length)
|
|
483
|
+
return;
|
|
484
|
+
next = Math.min(files.length, start + chunkSize);
|
|
485
|
+
const chunk = files
|
|
486
|
+
.slice(start, next)
|
|
487
|
+
.map((rel) => [path.join(dir, rel), displayPath(rel)]);
|
|
488
|
+
let outcome;
|
|
489
|
+
try {
|
|
490
|
+
outcome = await pool.run({
|
|
491
|
+
files: chunk,
|
|
492
|
+
options,
|
|
493
|
+
literals: req.literals,
|
|
494
|
+
caseInsensitive: regex.flags.includes("i"),
|
|
495
|
+
readLimit: WHOLE_READ_MAX_BYTES,
|
|
496
|
+
stopAfter: maxResults - collected,
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
catch {
|
|
500
|
+
// The worker died: scan its chunk here rather than lose it.
|
|
501
|
+
for (let index = start; index < next; index++)
|
|
502
|
+
await onMainThread(index);
|
|
503
|
+
continue;
|
|
504
|
+
}
|
|
505
|
+
if (outcome.expired)
|
|
506
|
+
deadline.hit = true;
|
|
507
|
+
outcome.results.forEach((lines, offset) => {
|
|
508
|
+
const index = start + offset;
|
|
509
|
+
if (lines === null) {
|
|
510
|
+
pending.push(onMainThread(index));
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
513
|
+
slots[index] = lines;
|
|
514
|
+
collected += lines.length;
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
};
|
|
518
|
+
await Promise.all(Array.from({ length: pool.size }, () => lane()));
|
|
519
|
+
await Promise.all(pending);
|
|
520
|
+
const results = [];
|
|
521
|
+
for (const slot of slots) {
|
|
522
|
+
if (!slot)
|
|
523
|
+
continue;
|
|
524
|
+
for (const line of slot) {
|
|
525
|
+
results.push(line);
|
|
526
|
+
if (results.length >= maxResults)
|
|
527
|
+
return results;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
return results;
|
|
531
|
+
}
|
|
315
532
|
/**
|
|
316
533
|
* Constructs the external scanner's regex engine cannot execute. It uses a
|
|
317
534
|
* finite-automaton engine with linear-time guarantees, which is exactly why it
|
|
@@ -487,9 +704,21 @@ function formatExternalMatches(stdout, req) {
|
|
|
487
704
|
}
|
|
488
705
|
return results;
|
|
489
706
|
}
|
|
490
|
-
async function searchFile(filePath, regex, cwd, maxResults, ops, deadline) {
|
|
707
|
+
async function searchFile(filePath, regex, cwd, maxResults, ops, deadline, byteFilter) {
|
|
491
708
|
const results = [];
|
|
492
709
|
const relPath = path.relative(cwd, filePath);
|
|
710
|
+
// Fast path: most source files fit in memory. Anything it cannot read
|
|
711
|
+
// (too large, a symlink the bounded reader refuses, an error) streams below.
|
|
712
|
+
const small = await readSmallFile(filePath, ops);
|
|
713
|
+
if (small !== undefined) {
|
|
714
|
+
if (typeof small === "string")
|
|
715
|
+
return searchText(small, relPath, regex, maxResults, deadline);
|
|
716
|
+
// Decoding UTF-8 cost more than everything else combined on large trees,
|
|
717
|
+
// and most files cannot match: check the raw bytes first.
|
|
718
|
+
if (byteFilter && !byteFilter(small))
|
|
719
|
+
return results;
|
|
720
|
+
return searchText(small.toString("utf-8"), relPath, regex, maxResults, deadline);
|
|
721
|
+
}
|
|
493
722
|
// Skip oversized files — readline buffers entire lines in memory, so a single-line
|
|
494
723
|
// file (minified JS, data blobs) can exceed V8's max string length and crash.
|
|
495
724
|
try {
|
|
@@ -540,6 +769,185 @@ async function searchFile(filePath, regex, cwd, maxResults, ops, deadline) {
|
|
|
540
769
|
}
|
|
541
770
|
return results;
|
|
542
771
|
}
|
|
772
|
+
/**
|
|
773
|
+
* Read a file of at most WHOLE_READ_MAX_BYTES in one call: raw bytes locally
|
|
774
|
+
* (so the byte filter can run before decoding), text through remote
|
|
775
|
+
* operations. `undefined` sends the caller to the streaming path, which
|
|
776
|
+
* reproduces the old behaviour for every case this one declines.
|
|
777
|
+
*/
|
|
778
|
+
async function readSmallFile(filePath, ops) {
|
|
779
|
+
try {
|
|
780
|
+
if (ops === localOperations)
|
|
781
|
+
return await readFileBounded(filePath, WHOLE_READ_MAX_BYTES);
|
|
782
|
+
if ((await ops.stat(filePath)).size > WHOLE_READ_MAX_BYTES)
|
|
783
|
+
return undefined;
|
|
784
|
+
return await ops.readFile(filePath);
|
|
785
|
+
}
|
|
786
|
+
catch {
|
|
787
|
+
return undefined;
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
/**
|
|
791
|
+
* For each top-level alternative, the longest run of literal characters every
|
|
792
|
+
* match of that alternative contains. `undefined` when any alternative has no
|
|
793
|
+
* such run, since that alternative could match a file containing none of them.
|
|
794
|
+
* Deliberately conservative: groups, classes, escapes of letters/digits and
|
|
795
|
+
* anything non-ASCII end a run instead of being reasoned about.
|
|
796
|
+
*/
|
|
797
|
+
export function requiredLiterals(pattern) {
|
|
798
|
+
const literals = [];
|
|
799
|
+
for (const branch of splitTopLevelAlternatives(pattern)) {
|
|
800
|
+
const literal = longestRequiredRun(branch);
|
|
801
|
+
if (!literal)
|
|
802
|
+
return undefined;
|
|
803
|
+
literals.push(literal);
|
|
804
|
+
}
|
|
805
|
+
return literals.length > 0 ? literals : undefined;
|
|
806
|
+
}
|
|
807
|
+
function splitTopLevelAlternatives(pattern) {
|
|
808
|
+
const branches = [];
|
|
809
|
+
let depth = 0;
|
|
810
|
+
let inClass = false;
|
|
811
|
+
let start = 0;
|
|
812
|
+
for (let i = 0; i < pattern.length; i++) {
|
|
813
|
+
const ch = pattern[i];
|
|
814
|
+
if (ch === "\\") {
|
|
815
|
+
i++;
|
|
816
|
+
}
|
|
817
|
+
else if (inClass) {
|
|
818
|
+
if (ch === "]")
|
|
819
|
+
inClass = false;
|
|
820
|
+
}
|
|
821
|
+
else if (ch === "[") {
|
|
822
|
+
inClass = true;
|
|
823
|
+
}
|
|
824
|
+
else if (ch === "(") {
|
|
825
|
+
depth++;
|
|
826
|
+
}
|
|
827
|
+
else if (ch === ")") {
|
|
828
|
+
depth--;
|
|
829
|
+
}
|
|
830
|
+
else if (ch === "|" && depth === 0) {
|
|
831
|
+
branches.push(pattern.slice(start, i));
|
|
832
|
+
start = i + 1;
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
branches.push(pattern.slice(start));
|
|
836
|
+
return branches;
|
|
837
|
+
}
|
|
838
|
+
/** Characters that stand for themselves when they appear unescaped. */
|
|
839
|
+
const PLAIN_LITERAL = /^[\x20-\x7e]$/;
|
|
840
|
+
const REGEX_SYNTAX = new Set([
|
|
841
|
+
".",
|
|
842
|
+
"^",
|
|
843
|
+
"$",
|
|
844
|
+
"*",
|
|
845
|
+
"+",
|
|
846
|
+
"?",
|
|
847
|
+
"(",
|
|
848
|
+
")",
|
|
849
|
+
"[",
|
|
850
|
+
"]",
|
|
851
|
+
"{",
|
|
852
|
+
"}",
|
|
853
|
+
"|",
|
|
854
|
+
"\\",
|
|
855
|
+
]);
|
|
856
|
+
function longestRequiredRun(branch) {
|
|
857
|
+
let best = "";
|
|
858
|
+
let run = "";
|
|
859
|
+
const endRun = () => {
|
|
860
|
+
if (run.length > best.length)
|
|
861
|
+
best = run;
|
|
862
|
+
run = "";
|
|
863
|
+
};
|
|
864
|
+
let i = 0;
|
|
865
|
+
while (i < branch.length) {
|
|
866
|
+
// Parse one atom: a literal character, or something opaque.
|
|
867
|
+
let literal;
|
|
868
|
+
const ch = branch[i] ?? "";
|
|
869
|
+
if (ch === "\\") {
|
|
870
|
+
const next = branch[i + 1];
|
|
871
|
+
// `\.` is a literal dot; `\d`, `\b`, `\1`, `\u…` are not literals.
|
|
872
|
+
if (next !== undefined && PLAIN_LITERAL.test(next) && !/[A-Za-z0-9]/.test(next)) {
|
|
873
|
+
literal = next;
|
|
874
|
+
}
|
|
875
|
+
i += 2;
|
|
876
|
+
}
|
|
877
|
+
else if (ch === "[" || ch === "(") {
|
|
878
|
+
i = skipBracketed(branch, i);
|
|
879
|
+
}
|
|
880
|
+
else {
|
|
881
|
+
if (PLAIN_LITERAL.test(ch) && !REGEX_SYNTAX.has(ch))
|
|
882
|
+
literal = ch;
|
|
883
|
+
i++;
|
|
884
|
+
}
|
|
885
|
+
// A quantifier on the atom: `?`, `*` and `{0,…}` make it optional.
|
|
886
|
+
const quantifier = /^(?:[*+?]|\{(\d+)(?:,\d*)?\})\??/.exec(branch.slice(i));
|
|
887
|
+
if (quantifier) {
|
|
888
|
+
i += quantifier[0].length;
|
|
889
|
+
const minimum = quantifier[0].startsWith("+") ? 1 : Number(quantifier[1] ?? 0);
|
|
890
|
+
if (literal !== undefined && minimum >= 1)
|
|
891
|
+
run += literal;
|
|
892
|
+
endRun();
|
|
893
|
+
}
|
|
894
|
+
else if (literal !== undefined) {
|
|
895
|
+
run += literal;
|
|
896
|
+
}
|
|
897
|
+
else {
|
|
898
|
+
endRun();
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
endRun();
|
|
902
|
+
return best || undefined;
|
|
903
|
+
}
|
|
904
|
+
/** Index just past the class or group opening at `start`. */
|
|
905
|
+
function skipBracketed(text, start) {
|
|
906
|
+
let depth = 0;
|
|
907
|
+
let inClass = false;
|
|
908
|
+
for (let i = start; i < text.length; i++) {
|
|
909
|
+
const ch = text[i];
|
|
910
|
+
if (ch === "\\") {
|
|
911
|
+
i++;
|
|
912
|
+
}
|
|
913
|
+
else if (inClass) {
|
|
914
|
+
if (ch === "]") {
|
|
915
|
+
inClass = false;
|
|
916
|
+
if (depth === 0)
|
|
917
|
+
return i + 1;
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
else if (ch === "[") {
|
|
921
|
+
inClass = true;
|
|
922
|
+
}
|
|
923
|
+
else if (ch === "(") {
|
|
924
|
+
depth++;
|
|
925
|
+
}
|
|
926
|
+
else if (ch === ")") {
|
|
927
|
+
depth--;
|
|
928
|
+
if (depth === 0)
|
|
929
|
+
return i + 1;
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
return text.length;
|
|
933
|
+
}
|
|
934
|
+
/** Search in-memory file text on the main thread (see `scanText`). */
|
|
935
|
+
function searchText(text, relPath, regex, maxResults, deadline) {
|
|
936
|
+
const scanned = scanText(text, relPath, {
|
|
937
|
+
source: regex.source,
|
|
938
|
+
flags: regex.flags,
|
|
939
|
+
// Lookaround can see past a line end and flip, so it skips the prefilter.
|
|
940
|
+
prefilter: isExternallySupported(regex.source),
|
|
941
|
+
maxResults,
|
|
942
|
+
expiresAt: deadline.expiresAt,
|
|
943
|
+
maxLineLength: MAX_LINE_LENGTH,
|
|
944
|
+
checkInterval: DEADLINE_CHECK_INTERVAL,
|
|
945
|
+
sniffLines: BINARY_SNIFF_LINES,
|
|
946
|
+
});
|
|
947
|
+
if (scanned.expired)
|
|
948
|
+
deadline.hit = true;
|
|
949
|
+
return scanned.lines;
|
|
950
|
+
}
|
|
543
951
|
function deadlineNotice(deadlineMs) {
|
|
544
952
|
return `[Stopped after ${deadlineMs / 1000}s — narrow the pattern or pass a narrower path/include]`;
|
|
545
953
|
}
|
package/dist/tools/grep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../src/tools/grep.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../src/tools/grep.ts"],"names":[],"mappings":"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"}
|