@j0hanz/fs-context-mcp 2.0.7 → 2.1.1

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.
Files changed (78) hide show
  1. package/README.md +60 -12
  2. package/dist/config.d.ts +1 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/instructions.md +27 -118
  6. package/dist/lib/constants.d.ts +1 -0
  7. package/dist/lib/constants.d.ts.map +1 -1
  8. package/dist/lib/constants.js +1 -0
  9. package/dist/lib/constants.js.map +1 -1
  10. package/dist/lib/file-operations/file-info.d.ts.map +1 -1
  11. package/dist/lib/file-operations/file-info.js +2 -0
  12. package/dist/lib/file-operations/file-info.js.map +1 -1
  13. package/dist/lib/file-operations/gitignore.d.ts +6 -0
  14. package/dist/lib/file-operations/gitignore.d.ts.map +1 -0
  15. package/dist/lib/file-operations/gitignore.js +42 -0
  16. package/dist/lib/file-operations/gitignore.js.map +1 -0
  17. package/dist/lib/file-operations/read-multiple-files.d.ts +5 -1
  18. package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
  19. package/dist/lib/file-operations/read-multiple-files.js +48 -17
  20. package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
  21. package/dist/lib/file-operations/search-content-scan.d.ts +29 -0
  22. package/dist/lib/file-operations/search-content-scan.d.ts.map +1 -0
  23. package/dist/lib/file-operations/search-content-scan.js +468 -0
  24. package/dist/lib/file-operations/search-content-scan.js.map +1 -0
  25. package/dist/lib/file-operations/search-content-worker-api.d.ts +56 -0
  26. package/dist/lib/file-operations/search-content-worker-api.d.ts.map +1 -0
  27. package/dist/lib/file-operations/search-content-worker-api.js +239 -0
  28. package/dist/lib/file-operations/search-content-worker-api.js.map +1 -0
  29. package/dist/lib/file-operations/search-content.d.ts.map +1 -1
  30. package/dist/lib/file-operations/search-content.js +59 -53
  31. package/dist/lib/file-operations/search-content.js.map +1 -1
  32. package/dist/lib/file-operations/search-files.d.ts +1 -0
  33. package/dist/lib/file-operations/search-files.d.ts.map +1 -1
  34. package/dist/lib/file-operations/search-files.js +11 -2
  35. package/dist/lib/file-operations/search-files.js.map +1 -1
  36. package/dist/lib/file-operations/tree.d.ts +25 -0
  37. package/dist/lib/file-operations/tree.d.ts.map +1 -0
  38. package/dist/lib/file-operations/tree.js +172 -0
  39. package/dist/lib/file-operations/tree.js.map +1 -0
  40. package/dist/lib/fs-helpers.d.ts +5 -1
  41. package/dist/lib/fs-helpers.d.ts.map +1 -1
  42. package/dist/lib/fs-helpers.js +131 -14
  43. package/dist/lib/fs-helpers.js.map +1 -1
  44. package/dist/lib/path-validation.d.ts.map +1 -1
  45. package/dist/lib/path-validation.js +15 -17
  46. package/dist/lib/path-validation.js.map +1 -1
  47. package/dist/lib/resource-store.d.ts +23 -0
  48. package/dist/lib/resource-store.d.ts.map +1 -0
  49. package/dist/lib/resource-store.js +75 -0
  50. package/dist/lib/resource-store.js.map +1 -0
  51. package/dist/lib/strict-stdio-transport.d.ts +31 -0
  52. package/dist/lib/strict-stdio-transport.d.ts.map +1 -0
  53. package/dist/lib/strict-stdio-transport.js +158 -0
  54. package/dist/lib/strict-stdio-transport.js.map +1 -0
  55. package/dist/resources.d.ts +5 -0
  56. package/dist/resources.d.ts.map +1 -0
  57. package/dist/resources.js +43 -0
  58. package/dist/resources.js.map +1 -0
  59. package/dist/schemas.d.ts +78 -12
  60. package/dist/schemas.d.ts.map +1 -1
  61. package/dist/schemas.js +125 -24
  62. package/dist/schemas.js.map +1 -1
  63. package/dist/server.d.ts.map +1 -1
  64. package/dist/server.js +52 -11
  65. package/dist/server.js.map +1 -1
  66. package/dist/tooling/tool-response.d.ts +32 -0
  67. package/dist/tooling/tool-response.d.ts.map +1 -0
  68. package/dist/tooling/tool-response.js +63 -0
  69. package/dist/tooling/tool-response.js.map +1 -0
  70. package/dist/tooling/tools-registry.d.ts +5 -0
  71. package/dist/tooling/tools-registry.d.ts.map +1 -0
  72. package/dist/tooling/tools-registry.js +532 -0
  73. package/dist/tooling/tools-registry.js.map +1 -0
  74. package/dist/tools.d.ts +12 -12
  75. package/dist/tools.d.ts.map +1 -1
  76. package/dist/tools.js +351 -51
  77. package/dist/tools.js.map +1 -1
  78. package/package.json +7 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-content-scan.js","sourceRoot":"","sources":["../../../src/lib/file-operations/search-content-scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import * as fsp from 'node:fs/promises';
2
+ import type { ContentMatch } from '../../config.js';
3
+ export interface MatcherOptions {
4
+ caseSensitive: boolean;
5
+ wholeWord: boolean;
6
+ isLiteral: boolean;
7
+ }
8
+ export type Matcher = (line: string) => number;
9
+ export interface ScanFileOptions {
10
+ maxFileSize: number;
11
+ skipBinary: boolean;
12
+ contextLines: number;
13
+ }
14
+ export declare function validatePattern(pattern: string, options: MatcherOptions): void;
15
+ export declare function buildMatcher(pattern: string, options: MatcherOptions): Matcher;
16
+ type BinaryDetector = (path: string, handle: fsp.FileHandle, signal?: AbortSignal) => Promise<boolean>;
17
+ export declare function scanFileResolved(resolvedPath: string, requestedPath: string, matcher: Matcher, options: ScanFileOptions, signal?: AbortSignal, maxMatches?: number): Promise<{
18
+ readonly matches: readonly ContentMatch[];
19
+ readonly matched: boolean;
20
+ readonly skippedTooLarge: boolean;
21
+ readonly skippedBinary: boolean;
22
+ }>;
23
+ export declare function scanFileInWorker(resolvedPath: string, requestedPath: string, matcher: Matcher, options: ScanFileOptions, maxMatches: number, isCancelled: () => boolean, isBinaryDetector: BinaryDetector): Promise<{
24
+ readonly matches: readonly ContentMatch[];
25
+ readonly matched: boolean;
26
+ readonly skippedTooLarge: boolean;
27
+ readonly skippedBinary: boolean;
28
+ }>;
29
+ export interface ScanRequest {
30
+ type: 'scan';
31
+ id: number;
32
+ resolvedPath: string;
33
+ requestedPath: string;
34
+ pattern: string;
35
+ matcherOptions: MatcherOptions;
36
+ scanOptions: ScanFileOptions;
37
+ maxMatches: number;
38
+ }
39
+ export interface ScanResult {
40
+ type: 'result';
41
+ id: number;
42
+ result: {
43
+ matches: readonly ContentMatch[];
44
+ matched: boolean;
45
+ skippedTooLarge: boolean;
46
+ skippedBinary: boolean;
47
+ };
48
+ }
49
+ export interface ScanError {
50
+ type: 'error';
51
+ id: number;
52
+ error: string;
53
+ }
54
+ export type WorkerResponse = ScanResult | ScanError;
55
+ export {};
56
+ //# sourceMappingURL=search-content-worker-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-content-worker-api.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/search-content-worker-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAOxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQpD,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AASD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,GACtB,IAAI,CAON;AAqDD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,GACtB,OAAO,CAgBT;AAqCD,KAAK,cAAc,GAAG,CACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,OAAO,CAAC,CAAC;AAuOtB,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,UAAU,GAAE,MAAiC,GAC5C,OAAO,CAAC;IACT,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC,CAAC,CAsBD;AAED,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,OAAO,EAC1B,gBAAgB,EAAE,cAAc,GAC/B,OAAO,CAAC;IACT,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC,CAAC,CAcD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QACN,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,OAAO,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,CAAC"}
@@ -0,0 +1,239 @@
1
+ import * as fsp from 'node:fs/promises';
2
+ import readline from 'node:readline';
3
+ import RE2 from 're2';
4
+ import safeRegex from 'safe-regex2';
5
+ import { MAX_LINE_CONTENT_LENGTH } from '../constants.js';
6
+ import { assertNotAborted, isProbablyBinary, withAbort, } from '../fs-helpers.js';
7
+ export function validatePattern(pattern, options) {
8
+ if (options.isLiteral && !options.wholeWord) {
9
+ return;
10
+ }
11
+ const final = buildRegexPattern(pattern, options);
12
+ assertSafePattern(final, pattern);
13
+ }
14
+ function escapeLiteral(pattern) {
15
+ return pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
16
+ }
17
+ function buildRegexPattern(pattern, options) {
18
+ const escaped = options.isLiteral ? escapeLiteral(pattern) : pattern;
19
+ return options.wholeWord ? `\\b${escaped}\\b` : escaped;
20
+ }
21
+ function assertSafePattern(final, original) {
22
+ if (!safeRegex(final)) {
23
+ throw new Error(`Potentially unsafe regular expression (ReDoS risk): ${original}`);
24
+ }
25
+ }
26
+ function buildLiteralMatcher(pattern, options) {
27
+ const needle = options.caseSensitive ? pattern : pattern.toLowerCase();
28
+ return (line) => {
29
+ const hay = options.caseSensitive ? line : line.toLowerCase();
30
+ if (needle.length === 0 || hay.length === 0)
31
+ return 0;
32
+ let count = 0;
33
+ let pos = hay.indexOf(needle);
34
+ while (pos !== -1) {
35
+ count++;
36
+ pos = hay.indexOf(needle, pos + needle.length);
37
+ }
38
+ return count;
39
+ };
40
+ }
41
+ function buildRegexMatcher(final, caseSensitive) {
42
+ const regex = new RE2(final, caseSensitive ? 'g' : 'gi');
43
+ return (line) => {
44
+ regex.lastIndex = 0;
45
+ let count = 0;
46
+ let match;
47
+ while ((match = regex.exec(line)) !== null) {
48
+ count++;
49
+ if (match[0].length === 0) {
50
+ regex.lastIndex++;
51
+ }
52
+ }
53
+ return count;
54
+ };
55
+ }
56
+ export function buildMatcher(pattern, options) {
57
+ if (options.isLiteral && !options.wholeWord && !options.caseSensitive) {
58
+ if (pattern.length === 0) {
59
+ return () => 0;
60
+ }
61
+ return buildRegexMatcher(escapeLiteral(pattern), false);
62
+ }
63
+ if (options.isLiteral && !options.wholeWord) {
64
+ return buildLiteralMatcher(pattern, options);
65
+ }
66
+ const final = buildRegexPattern(pattern, options);
67
+ assertSafePattern(final, pattern);
68
+ return buildRegexMatcher(final, options.caseSensitive);
69
+ }
70
+ function makeContext() {
71
+ return { before: [], pendingAfter: [] };
72
+ }
73
+ function pushContext(ctx, line, max) {
74
+ if (max <= 0)
75
+ return;
76
+ ctx.before.push(line);
77
+ if (ctx.before.length > max)
78
+ ctx.before.shift();
79
+ for (const pending of ctx.pendingAfter) {
80
+ if (pending.left <= 0)
81
+ continue;
82
+ pending.buffer.push(line);
83
+ pending.left -= 1;
84
+ }
85
+ while (ctx.pendingAfter.length > 0 && ctx.pendingAfter[0]?.left === 0) {
86
+ ctx.pendingAfter.shift();
87
+ }
88
+ }
89
+ function trimContent(line) {
90
+ return line.trimEnd().slice(0, MAX_LINE_CONTENT_LENGTH);
91
+ }
92
+ function buildReadline(handle, signal) {
93
+ const input = handle.createReadStream({
94
+ encoding: 'utf-8',
95
+ autoClose: false,
96
+ });
97
+ const baseOptions = {
98
+ input,
99
+ crlfDelay: Infinity,
100
+ };
101
+ const options = signal ? { ...baseOptions, signal } : baseOptions;
102
+ const rl = readline.createInterface(options);
103
+ return { rl, input };
104
+ }
105
+ function updateContext(line, contextLines, ctx) {
106
+ if (contextLines <= 0)
107
+ return undefined;
108
+ const trimmedLine = trimContent(line);
109
+ pushContext(ctx, trimmedLine, contextLines);
110
+ return trimmedLine;
111
+ }
112
+ function appendMatch(matches, requestedPath, line, trimmedLine, lineNo, count, contextLines, ctx, contextBeforeOverride) {
113
+ const contextBefore = contextLines > 0 ? (contextBeforeOverride ?? [...ctx.before]) : undefined;
114
+ const contextAfterBuffer = contextLines > 0 ? [] : undefined;
115
+ const match = {
116
+ file: requestedPath,
117
+ line: lineNo,
118
+ content: trimmedLine ?? trimContent(line),
119
+ matchCount: count,
120
+ ...(contextBefore ? { contextBefore } : {}),
121
+ ...(contextAfterBuffer ? { contextAfter: contextAfterBuffer } : {}),
122
+ };
123
+ matches.push(match);
124
+ if (contextAfterBuffer) {
125
+ ctx.pendingAfter.push({
126
+ buffer: contextAfterBuffer,
127
+ left: contextLines,
128
+ });
129
+ }
130
+ }
131
+ function recordLineMatch(line, matcher, options, requestedPath, lineNo, matches, ctx) {
132
+ const contextBefore = options.contextLines > 0 ? [...ctx.before] : undefined;
133
+ const trimmedLine = updateContext(line, options.contextLines, ctx);
134
+ const count = matcher(line);
135
+ if (count > 0) {
136
+ appendMatch(matches, requestedPath, line, trimmedLine, lineNo, count, options.contextLines, ctx, contextBefore);
137
+ }
138
+ }
139
+ async function readLoop(rl, matcher, options, requestedPath, maxMatches, isCancelled, matches, ctx) {
140
+ let lineNo = 0;
141
+ for await (const line of rl) {
142
+ if (isCancelled())
143
+ break;
144
+ lineNo++;
145
+ recordLineMatch(line, matcher, options, requestedPath, lineNo, matches, ctx);
146
+ if (matches.length >= maxMatches)
147
+ break;
148
+ }
149
+ }
150
+ function buildSkipResult(skippedTooLarge, skippedBinary) {
151
+ return {
152
+ matches: [],
153
+ matched: false,
154
+ skippedTooLarge,
155
+ skippedBinary,
156
+ };
157
+ }
158
+ function buildMatchResult(matches) {
159
+ return {
160
+ matches,
161
+ matched: matches.length > 0,
162
+ skippedTooLarge: false,
163
+ skippedBinary: false,
164
+ };
165
+ }
166
+ async function shouldSkipBinary(scanOptions, resolvedPath, handle, options) {
167
+ return (scanOptions.skipBinary &&
168
+ (await options.isProbablyBinary(resolvedPath, handle, options.signal)));
169
+ }
170
+ async function readMatches(handle, requestedPath, matcher, options, maxMatches, isCancelled, signal) {
171
+ const { rl, input } = buildReadline(handle, signal);
172
+ const ctx = makeContext();
173
+ const matches = [];
174
+ try {
175
+ await readLoop(rl, matcher, options, requestedPath, maxMatches, isCancelled, matches, ctx);
176
+ return matches;
177
+ }
178
+ finally {
179
+ rl.close();
180
+ input.destroy();
181
+ }
182
+ }
183
+ async function scanWithHandle(handle, resolvedPath, requestedPath, options) {
184
+ const scanOptions = options.options;
185
+ const stats = await withAbort(handle.stat(), options.signal);
186
+ if (stats.size > scanOptions.maxFileSize) {
187
+ return buildSkipResult(true, false);
188
+ }
189
+ if (await shouldSkipBinary(scanOptions, resolvedPath, handle, options)) {
190
+ return buildSkipResult(false, true);
191
+ }
192
+ const matches = await readMatches(handle, requestedPath, options.matcher, scanOptions, options.maxMatches, options.isCancelled, options.signal);
193
+ return buildMatchResult(matches);
194
+ }
195
+ async function scanFileWithMatcher(resolvedPath, requestedPath, options) {
196
+ assertNotAborted(options.signal);
197
+ const handle = await withAbort(fsp.open(resolvedPath, 'r'), options.signal);
198
+ try {
199
+ return await scanWithHandle(handle, resolvedPath, requestedPath, options);
200
+ }
201
+ finally {
202
+ await handle.close();
203
+ }
204
+ }
205
+ export async function scanFileResolved(resolvedPath, requestedPath, matcher, options, signal, maxMatches = Number.POSITIVE_INFINITY) {
206
+ const scanOptions = {
207
+ matcher,
208
+ options,
209
+ maxMatches,
210
+ isCancelled: () => Boolean(signal?.aborted),
211
+ isProbablyBinary,
212
+ };
213
+ if (signal) {
214
+ scanOptions.signal = signal;
215
+ }
216
+ const result = await scanFileWithMatcher(resolvedPath, requestedPath, scanOptions);
217
+ return {
218
+ matches: result.matches,
219
+ matched: result.matched,
220
+ skippedTooLarge: result.skippedTooLarge,
221
+ skippedBinary: result.skippedBinary,
222
+ };
223
+ }
224
+ export async function scanFileInWorker(resolvedPath, requestedPath, matcher, options, maxMatches, isCancelled, isBinaryDetector) {
225
+ const result = await scanFileWithMatcher(resolvedPath, requestedPath, {
226
+ matcher,
227
+ options,
228
+ maxMatches,
229
+ isCancelled,
230
+ isProbablyBinary: isBinaryDetector,
231
+ });
232
+ return {
233
+ matches: result.matches,
234
+ matched: result.matched,
235
+ skippedTooLarge: result.skippedTooLarge,
236
+ skippedBinary: result.skippedBinary,
237
+ };
238
+ }
239
+ //# sourceMappingURL=search-content-worker-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-content-worker-api.js","sourceRoot":"","sources":["../../../src/lib/file-operations/search-content-worker-api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-content.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/search-content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-content.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/search-content.ts"],"names":[],"mappings":"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"}
@@ -260,29 +260,13 @@ export async function scanFileInWorker(resolvedPath, requestedPath, matcher, opt
260
260
  };
261
261
  }
262
262
  async function executeSearchSingleFile(file, baseDir, pattern, opts, signal) {
263
- const matcherOptions = buildMatcherOptions(opts);
264
- const scanOptions = buildScanOptions(opts);
265
- const traceContext = buildTraceContext(opts);
266
- return await withOpsTrace(traceContext, async () => {
267
- validatePattern(pattern, matcherOptions);
263
+ return await withSearchExecution(pattern, opts, async (context) => {
268
264
  const summary = createScanSummary();
269
265
  const matches = [];
270
266
  summary.filesScanned = 1;
271
- try {
272
- const remaining = Math.max(0, opts.maxResults - matches.length);
273
- const matcher = buildMatcher(pattern, matcherOptions);
274
- const result = await scanFileResolved(file.resolvedPath, file.requestedPath, matcher, scanOptions, signal, remaining);
275
- applyScanResult(result, matches, summary, remaining);
276
- }
277
- catch {
278
- summary.skippedInaccessible = 1;
279
- }
280
- if (signal.aborted) {
281
- markTruncated(summary, 'timeout');
282
- }
283
- else if (matches.length >= opts.maxResults) {
284
- markTruncated(summary, 'maxResults');
285
- }
267
+ const matcher = buildMatcher(pattern, context.matcherOptions);
268
+ await scanSequentialFile(file, matcher, context.scanOptions, signal, opts.maxResults, matches, summary);
269
+ shouldStopOnSignalOrLimit(signal, matches.length, opts.maxResults, summary);
286
270
  return buildSearchResult(baseDir, pattern, path.basename(file.requestedPath), matches, summary);
287
271
  });
288
272
  }
@@ -306,13 +290,11 @@ function createScanSummary() {
306
290
  }
307
291
  function shouldStopCollecting(summary, maxFilesScanned, signal) {
308
292
  if (signal.aborted) {
309
- summary.truncated = true;
310
- summary.stoppedReason = 'timeout';
293
+ markTruncated(summary, 'timeout');
311
294
  return true;
312
295
  }
313
296
  if (summary.filesScanned >= maxFilesScanned) {
314
- summary.truncated = true;
315
- summary.stoppedReason = 'maxFiles';
297
+ markTruncated(summary, 'maxFiles');
316
298
  return true;
317
299
  }
318
300
  return false;
@@ -364,13 +346,11 @@ function collectFilesStream(root, opts, allowedDirs, signal) {
364
346
  }
365
347
  function shouldStopOnSignalOrLimit(signal, matchesCount, maxResults, summary) {
366
348
  if (signal.aborted) {
367
- summary.truncated = true;
368
- summary.stoppedReason = 'timeout';
349
+ markTruncated(summary, 'timeout');
369
350
  return true;
370
351
  }
371
352
  if (matchesCount >= maxResults) {
372
- summary.truncated = true;
373
- summary.stoppedReason = 'maxResults';
353
+ markTruncated(summary, 'maxResults');
374
354
  return true;
375
355
  }
376
356
  return false;
@@ -416,6 +396,16 @@ const isSourceContext = currentFile.endsWith('.ts');
416
396
  const WORKER_SCRIPT_PATH = path.join(currentDir, isSourceContext ? 'search-worker.ts' : 'search-worker.js');
417
397
  const WORKER_SCRIPT_URL = pathToFileURL(WORKER_SCRIPT_PATH);
418
398
  const MAX_RESPAWNS = 3;
399
+ function rejectPendingTasks(slot, error) {
400
+ for (const [, pending] of slot.pending) {
401
+ pending.reject(error);
402
+ }
403
+ slot.pending.clear();
404
+ }
405
+ function terminateWorker(slot) {
406
+ slot.worker?.terminate().catch(() => { });
407
+ slot.worker = null;
408
+ }
419
409
  function handleWorkerMessage(slot, message, log) {
420
410
  const pending = slot.pending.get(message.id);
421
411
  if (!pending) {
@@ -432,12 +422,8 @@ function handleWorkerMessage(slot, message, log) {
432
422
  }
433
423
  function handleWorkerError(slot, error, log) {
434
424
  log(`Worker ${String(slot.index)} error: ${error.message}`);
435
- for (const [, pending] of slot.pending) {
436
- pending.reject(new Error(`Worker error: ${error.message}`));
437
- }
438
- slot.pending.clear();
439
- slot.worker?.terminate().catch(() => { });
440
- slot.worker = null;
425
+ rejectPendingTasks(slot, new Error(`Worker error: ${error.message}`));
426
+ terminateWorker(slot);
441
427
  }
442
428
  function handleWorkerExit(slot, code, isClosed, maxRespawns, log) {
443
429
  log(`Worker ${String(slot.index)} exited with code ${String(code)}`);
@@ -446,10 +432,7 @@ function handleWorkerExit(slot, code, isClosed, maxRespawns, log) {
446
432
  }
447
433
  if (slot.pending.size > 0) {
448
434
  const error = new Error(`Worker exited unexpectedly with code ${String(code)}`);
449
- for (const [, pending] of slot.pending) {
450
- pending.reject(error);
451
- }
452
- slot.pending.clear();
435
+ rejectPendingTasks(slot, error);
453
436
  }
454
437
  slot.worker = null;
455
438
  if (code !== 0 && slot.respawnCount < maxRespawns) {
@@ -578,7 +561,13 @@ class SearchWorkerPool {
578
561
  reject: safeReject,
579
562
  request: scanRequest,
580
563
  });
581
- worker.postMessage(scanRequest);
564
+ try {
565
+ worker.postMessage(scanRequest);
566
+ }
567
+ catch (error) {
568
+ slot.pending.delete(scanRequest.id);
569
+ safeReject(error instanceof Error ? error : new Error(String(error)));
570
+ }
582
571
  });
583
572
  }
584
573
  createCancel(slot, worker, id) {
@@ -587,7 +576,12 @@ class SearchWorkerPool {
587
576
  if (!pending)
588
577
  return;
589
578
  slot.pending.delete(id);
590
- worker.postMessage({ type: 'cancel', id });
579
+ try {
580
+ worker.postMessage({ type: 'cancel', id });
581
+ }
582
+ catch {
583
+ // Ignore: cancellation should still reject the local pending promise.
584
+ }
591
585
  pending.reject(new Error('Scan cancelled'));
592
586
  };
593
587
  }
@@ -612,18 +606,20 @@ class SearchWorkerPool {
612
606
  this.closed = true;
613
607
  this.log('Closing worker pool');
614
608
  for (const slot of this.slots) {
615
- for (const [, pending] of slot.pending) {
616
- pending.reject(new Error('Worker pool closed'));
617
- }
618
- slot.pending.clear();
609
+ rejectPendingTasks(slot, new Error('Worker pool closed'));
619
610
  }
620
611
  const terminatePromises = [];
621
612
  for (const slot of this.slots) {
622
- if (slot.worker) {
613
+ if (!slot.worker)
614
+ continue;
615
+ try {
623
616
  slot.worker.postMessage({ type: 'shutdown' });
624
- terminatePromises.push(slot.worker.terminate());
625
- slot.worker = null;
626
617
  }
618
+ catch {
619
+ // Ignore: worker may already be terminating.
620
+ }
621
+ terminatePromises.push(slot.worker.terminate());
622
+ slot.worker = null;
627
623
  }
628
624
  await Promise.allSettled(terminatePromises);
629
625
  this.log('Worker pool closed');
@@ -827,6 +823,20 @@ async function withOpsTrace(context, run) {
827
823
  publishOpsTraceEnd(context);
828
824
  }
829
825
  }
826
+ function buildSearchExecution(opts) {
827
+ return {
828
+ matcherOptions: buildMatcherOptions(opts),
829
+ scanOptions: buildScanOptions(opts),
830
+ traceContext: buildTraceContext(opts),
831
+ };
832
+ }
833
+ async function withSearchExecution(pattern, opts, run) {
834
+ const context = buildSearchExecution(opts);
835
+ return await withOpsTrace(context.traceContext, async () => {
836
+ validatePattern(pattern, context.matcherOptions);
837
+ return await run(context);
838
+ });
839
+ }
830
840
  async function scanMatches(files, pattern, matcherOptions, scanOptions, maxResults, signal, summary) {
831
841
  if (shouldUseWorkers()) {
832
842
  return await scanFilesParallel(files, pattern, matcherOptions, scanOptions, maxResults, signal, summary);
@@ -861,13 +871,9 @@ function buildSearchResult(root, pattern, filePattern, matches, summary) {
861
871
  };
862
872
  }
863
873
  async function executeSearch(root, pattern, opts, allowedDirs, signal) {
864
- const matcherOptions = buildMatcherOptions(opts);
865
- const scanOptions = buildScanOptions(opts);
866
- const traceContext = buildTraceContext(opts);
867
- return await withOpsTrace(traceContext, async () => {
868
- validatePattern(pattern, matcherOptions);
874
+ return await withSearchExecution(pattern, opts, async (context) => {
869
875
  const { stream, summary } = collectFilesStream(root, opts, allowedDirs, signal);
870
- const matches = await scanMatches(stream, pattern, matcherOptions, scanOptions, opts.maxResults, signal, summary);
876
+ const matches = await scanMatches(stream, pattern, context.matcherOptions, context.scanOptions, opts.maxResults, signal, summary);
871
877
  return buildSearchResult(root, pattern, opts.filePattern, matches, summary);
872
878
  });
873
879
  }