@kenkaiiii/ggcoder 5.79.3 → 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.
@@ -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 {};
@@ -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
- const MAX_CANDIDATE_FILES = 10_000;
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
- const results = await scanFiles(files, dir, regex, cwd, maxResults, ops, deadline);
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 ignoreModule = await import("ignore");
219
- const ig = ignoreModule.default();
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
  }
@@ -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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"}