codepage-bridge-mcp 0.2.1 → 0.2.3

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.
@@ -1,4 +1,4 @@
1
- import { type DecodedText, type EncodingRules } from './encoding/index.js';
1
+ import { EncodingRulesLookup, type DecodedText, type EncodingRules } from './encoding/index.js';
2
2
  export interface ProjectFileContext {
3
3
  absolutePath: string;
4
4
  root: string;
@@ -19,7 +19,7 @@ export interface ReadSnapshot {
19
19
  offset?: number;
20
20
  limit?: number;
21
21
  }
22
- export declare function getProjectFileContext(filePath: string): Promise<ProjectFileContext>;
22
+ export declare function getProjectFileContext(filePath: string, lookup?: EncodingRulesLookup): Promise<ProjectFileContext>;
23
23
  export declare function readDecodedFile(context: ProjectFileContext): Promise<ReadSnapshot>;
24
24
  export declare function encodeSnapshotText(snapshot: ReadSnapshot, text: string, preserveNewline?: boolean): Buffer;
25
25
  export declare class ReadRegistry {
package/dist/src/core.js CHANGED
@@ -5,7 +5,7 @@ import { fileStateCache, resolveProjectPath } from './filesystem/index.js';
5
5
  function digest(buffer) {
6
6
  return createHash('sha256').update(buffer).digest('hex');
7
7
  }
8
- export async function getProjectFileContext(filePath) {
8
+ export async function getProjectFileContext(filePath, lookup) {
9
9
  if (filePath.includes('\0'))
10
10
  throw new Error('file_path must not contain NUL bytes');
11
11
  if (/^[/\\]{2}/.test(filePath) || /^\\\\[?.]\\/.test(filePath)) {
@@ -14,9 +14,12 @@ export async function getProjectFileContext(filePath) {
14
14
  if (!path.isAbsolute(filePath))
15
15
  throw new Error('file_path must be an absolute path');
16
16
  const absolutePath = path.resolve(filePath);
17
- const foundRules = await findEncodingRules(path.dirname(absolutePath));
17
+ const directory = path.dirname(absolutePath);
18
+ const foundRules = lookup === undefined
19
+ ? await findEncodingRules(directory)
20
+ : await lookup.find(directory);
18
21
  const rules = foundRules.file === null
19
- ? { ...foundRules, root: path.dirname(absolutePath) }
22
+ ? { ...foundRules, root: directory }
20
23
  : foundRules;
21
24
  resolveProjectPath(rules.root, absolutePath);
22
25
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,16 @@
1
1
  import type { EncodingRules } from "./types.js";
2
2
  export declare function findEncodingRules(startPath: string, boundary?: string): Promise<EncodingRules>;
3
+ /**
4
+ * Resolves encoding rules while remembering, per directory, which ancestor's
5
+ * rules file applies. A walk over a deep tree would otherwise repeat the same
6
+ * upward climb for every file it visits.
7
+ */
8
+ export declare class EncodingRulesLookup {
9
+ private readonly resolved;
10
+ private readonly pending;
11
+ find(startPath: string, boundary?: string): Promise<EncodingRules>;
12
+ private climb;
13
+ private remember;
14
+ }
3
15
  export declare function parseEncodingRules(source: string, root: string, file?: string | null): EncodingRules;
4
16
  export declare function resolveEncoding(filePath: string, rules: EncodingRules): string;
@@ -7,30 +7,69 @@ function isWithin(candidate, boundary) {
7
7
  return relative === "" || (!relative.startsWith(`..${path.sep}`) && relative !== "..");
8
8
  }
9
9
  export async function findEncodingRules(startPath, boundary) {
10
- const resolvedBoundary = path.resolve(boundary ?? path.parse(path.resolve(startPath)).root);
11
- let directory = path.resolve(startPath);
12
- if (!isWithin(directory, resolvedBoundary)) {
13
- throw new Error(`Path is outside the rules boundary: ${startPath}`);
14
- }
15
- while (isWithin(directory, resolvedBoundary)) {
16
- const rulesFile = path.join(directory, RULES_FILE);
10
+ return new EncodingRulesLookup().find(startPath, boundary);
11
+ }
12
+ /**
13
+ * Resolves encoding rules while remembering, per directory, which ancestor's
14
+ * rules file applies. A walk over a deep tree would otherwise repeat the same
15
+ * upward climb for every file it visits.
16
+ */
17
+ export class EncodingRulesLookup {
18
+ resolved = new Map();
19
+ pending = new Map();
20
+ async find(startPath, boundary) {
21
+ const directory = path.resolve(startPath);
22
+ const outstanding = this.pending.get(directory);
23
+ if (outstanding !== undefined)
24
+ return outstanding;
25
+ const climb = this.climb(directory, boundary);
26
+ // Callers that arrive while this climb is in flight share it. Without that,
27
+ // concurrent readers each start their own and the memo never hits.
28
+ this.pending.set(directory, climb);
17
29
  try {
18
- await access(rulesFile);
19
- return parseEncodingRules(await readFile(rulesFile, "utf8"), directory, rulesFile);
30
+ return await climb;
31
+ }
32
+ finally {
33
+ this.pending.delete(directory);
20
34
  }
21
- catch (error) {
22
- const code = error.code;
23
- if (code !== "ENOENT" && code !== "ENOTDIR")
24
- throw error;
35
+ }
36
+ async climb(startPath, boundary) {
37
+ const resolvedBoundary = path.resolve(boundary ?? path.parse(startPath).root);
38
+ let directory = startPath;
39
+ if (!isWithin(directory, resolvedBoundary)) {
40
+ throw new Error(`Path is outside the rules boundary: ${startPath}`);
41
+ }
42
+ const visited = [];
43
+ while (isWithin(directory, resolvedBoundary)) {
44
+ const known = this.resolved.get(directory);
45
+ if (known !== undefined)
46
+ return this.remember(visited, known);
47
+ visited.push(directory);
48
+ const rulesFile = path.join(directory, RULES_FILE);
49
+ try {
50
+ await access(rulesFile);
51
+ const rules = parseEncodingRules(await readFile(rulesFile, "utf8"), directory, rulesFile);
52
+ return this.remember(visited, rules);
53
+ }
54
+ catch (error) {
55
+ const code = error.code;
56
+ if (code !== "ENOENT" && code !== "ENOTDIR")
57
+ throw error;
58
+ }
59
+ if (directory === resolvedBoundary)
60
+ break;
61
+ const parent = path.dirname(directory);
62
+ if (parent === directory)
63
+ break;
64
+ directory = parent;
25
65
  }
26
- if (directory === resolvedBoundary)
27
- break;
28
- const parent = path.dirname(directory);
29
- if (parent === directory)
30
- break;
31
- directory = parent;
66
+ return this.remember(visited, { root: resolvedBoundary, file: null, rules: [] });
67
+ }
68
+ remember(directories, rules) {
69
+ for (const directory of directories)
70
+ this.resolved.set(directory, rules);
71
+ return rules;
32
72
  }
33
- return { root: resolvedBoundary, file: null, rules: [] };
34
73
  }
35
74
  export function parseEncodingRules(source, root, file = null) {
36
75
  const rules = [];
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/encoding/rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,SAAS,MAAM,WAAW,CAAC;AAGlC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,SAAS,QAAQ,CAAC,SAAiB,EAAE,QAAgB;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpD,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,QAAiB;IAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5F,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,kBAAkB,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;gBAAE,MAAM,KAAK,CAAC;QAC3D,CAAC;QACD,IAAI,SAAS,KAAK,gBAAgB;YAAE,MAAM;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM;QAChC,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,IAAY,EAAE,OAAsB,IAAI;IACzF,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5F,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7D,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,IAAI,UAAU,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,IAAI,UAAU,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAoB;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;IAClG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/E,IAAI,QAAQ,GAAG,OAAO,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YAClE,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/encoding/rules.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { createReadStream } from 'node:fs';
2
- import { readdir, stat } from 'node:fs/promises';
2
+ import { readdir, readFile, stat } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import { TextDecoder } from 'node:util';
5
5
  import picomatch from 'picomatch';
6
- import { decodeText, normalizeEncoding, resolveEncoding } from '../encoding/index.js';
6
+ import { decodeText, EncodingRulesLookup, normalizeEncoding, resolveEncoding } from '../encoding/index.js';
7
7
  import { inspectProjectPath } from '../filesystem/index.js';
8
8
  import { formatMebibytes, grepLimits, maxTextFileBytes } from '../limits.js';
9
9
  import { getProjectFileContext } from '../core.js';
@@ -15,6 +15,17 @@ const MAX_GREP_RESPONSE_CHARS = 1024 * 1024;
15
15
  const MAX_GREP_CONTEXT_CHARS = MAX_GREP_RESPONSE_CHARS;
16
16
  // Multiline matching is deliberately exact, so its bounded whole-file buffer is stricter than normal streaming search.
17
17
  const MAX_MULTILINE_FILE_BYTES = 1024 * 1024;
18
+ /**
19
+ * How many candidate files a directory scan reads ahead of the search, and the
20
+ * largest single candidate it will read whole. Reading one file at a time leaves
21
+ * the disk idle between operations, and overlap is what makes a large scan fast.
22
+ * The two ceilings keep that overlap bounded: at most the window size files are
23
+ * held, each no larger than the per-file cap, so the retained text is capped at
24
+ * the product. A candidate bigger than the cap is left to the streaming path,
25
+ * which charges the budget as it reads instead of taking the whole file at once.
26
+ */
27
+ const MAX_GREP_PREFETCH = 24;
28
+ const MAX_GREP_PREFETCH_FILE_BYTES = 1024 * 1024;
18
29
  const TYPE_GLOBS = {
19
30
  js: ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.cjs'],
20
31
  ts: ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'],
@@ -112,7 +123,9 @@ class GrepBudget {
112
123
  this.stop('max_files');
113
124
  return false;
114
125
  }
115
- // Admit complete files only, so stream chunking cannot make byte accounting exceed the request budget.
126
+ // Admit complete files only, so the budget cannot be exceeded part-way
127
+ // through a file. The bytes are charged by consumeBytes once the search
128
+ // actually reads them.
116
129
  if (size > this.limits.maxScanBytes - this.scannedBytes) {
117
130
  this.stop('max_scan_bytes');
118
131
  return false;
@@ -120,7 +133,8 @@ class GrepBudget {
120
133
  this.scannedFiles += 1;
121
134
  return true;
122
135
  }
123
- addBytes(bytes) {
136
+ /** Charges bytes the search actually read against the request budget. */
137
+ consumeBytes(bytes) {
124
138
  if (!this.checkTime())
125
139
  return false;
126
140
  if (bytes > this.limits.maxScanBytes - this.scannedBytes) {
@@ -167,7 +181,7 @@ function createPathFilter(glob, type) {
167
181
  return relative => (globMatcher === undefined || globMatcher(relative))
168
182
  && (typeMatchers === undefined || typeMatchers.some(matcher => matcher(relative)));
169
183
  }
170
- async function* iterateFiles(root, target, displayTarget, targetInfo, context, matchesPath) {
184
+ async function* iterateFiles(root, target, displayTarget, targetInfo, context, matchesPath, lookup) {
171
185
  if (targetInfo.isFile()) {
172
186
  yield { file: target, displayFile: displayTarget, context: contextForFile(context, target), size: targetInfo.size };
173
187
  return;
@@ -179,7 +193,7 @@ async function* iterateFiles(root, target, displayTarget, targetInfo, context, m
179
193
  entries.sort((left, right) => left.name.localeCompare(right.name));
180
194
  const directoryContext = entries.some(entry => entry.name === '.encoding-rules' && entry.isFile())
181
195
  && path.resolve(directory) !== activeContext.root
182
- ? await getProjectFileContext(path.join(directory, '.codepage-bridge-search-probe'))
196
+ ? await getProjectFileContext(path.join(directory, '.codepage-bridge-search-probe'), lookup)
183
197
  : activeContext;
184
198
  for (const entry of entries) {
185
199
  if (entry.name === 'node_modules' || entry.name === '.git' || entry.name === 'dist')
@@ -187,20 +201,19 @@ async function* iterateFiles(root, target, displayTarget, targetInfo, context, m
187
201
  const absolute = path.join(directory, entry.name);
188
202
  const displayAbsolute = path.join(displayDirectory, entry.name);
189
203
  const relative = relativeDirectory ? `${relativeDirectory}/${entry.name}` : entry.name;
204
+ // The listing already classified this entry, and it never reports a
205
+ // symbol link as a directory or a plain file, so the walk root that was
206
+ // resolved once before the walk bounds every path reached from here.
190
207
  if (entry.isDirectory()) {
191
- const safe = await inspectProjectPath(directoryContext.root, absolute);
192
- const info = await stat(safe.target);
193
- if (info.isDirectory())
194
- yield* visit(safe.target, displayAbsolute, relative, directoryContext);
208
+ yield* visit(absolute, displayAbsolute, relative, directoryContext);
195
209
  }
196
210
  else if (entry.isFile() && matchesPath(relative)) {
197
- const safe = await inspectProjectPath(directoryContext.root, absolute);
198
- const info = await stat(safe.target);
211
+ const info = await stat(absolute);
199
212
  if (info.isFile()) {
200
213
  yield {
201
- file: safe.target,
214
+ file: absolute,
202
215
  displayFile: displayAbsolute,
203
- context: contextForFile(directoryContext, safe.target),
216
+ context: contextForFile(directoryContext, absolute),
204
217
  size: info.size,
205
218
  };
206
219
  }
@@ -241,6 +254,14 @@ function testLine(line, expression) {
241
254
  expression.lastIndex = 0;
242
255
  return expression.test(line);
243
256
  }
257
+ /**
258
+ * Splits whole decoded text into lines. The per-line ceiling is applied later,
259
+ * where the search consumes a line, so a candidate read ahead of a scan that
260
+ * stops early cannot report a limit it never reached.
261
+ */
262
+ function splitSearchableLines(text) {
263
+ return text.split('\n');
264
+ }
244
265
  function ensureLineLimit(line, budget) {
245
266
  if (line.length > budget.limits.maxLineChars) {
246
267
  budget.stop('max_line_chars');
@@ -267,7 +288,7 @@ async function* readSearchableLines(file, budget) {
267
288
  };
268
289
  try {
269
290
  for await (const chunk of createReadStream(file.file, { highWaterMark: 64 * 1024 })) {
270
- if (!budget.addBytes(chunk.length))
291
+ if (!budget.consumeBytes(chunk.length))
271
292
  return;
272
293
  let decoded = decoder.decode(chunk, { stream: true });
273
294
  if (trailingCarriageReturn && !decoded.startsWith('\n'))
@@ -309,6 +330,54 @@ async function* readSearchableLines(file, budget) {
309
330
  throw error;
310
331
  }
311
332
  }
333
+ /**
334
+ * Reads and decodes one candidate for the search. Only used for candidates
335
+ * from a directory walk, where the walk already capped each file's size, so a
336
+ * whole-file read cannot pull in more than the caller allows for one file.
337
+ *
338
+ * The budget is not charged here: it is charged when the search reaches this
339
+ * candidate, so admission stays serial and in visit order. Reading ahead spends
340
+ * at most `MAX_GREP_PREFETCH` files of work beyond the budget frontier, which
341
+ * is the same bounded amount of memory the window already holds.
342
+ */
343
+ async function loadCandidate(file) {
344
+ const encoding = normalizeEncoding(file.context.encoding);
345
+ try {
346
+ const bytes = await readFile(file.file);
347
+ const text = new TextDecoder(encoding, { fatal: true }).decode(bytes).replaceAll('\r\n', '\n').replaceAll('\r', '\n');
348
+ return { lines: splitSearchableLines(text), bytes: bytes.length };
349
+ }
350
+ catch (error) {
351
+ return { lines: [], bytes: 0, failure: error instanceof TypeError ? new Error(`Invalid byte sequence for ${encoding}`, { cause: error }) : error };
352
+ }
353
+ }
354
+ /**
355
+ * Runs `load` ahead of the search that consumes its results, keeping the order
356
+ * of `source` and never holding more than `window` loaded candidates. A file
357
+ * the loader declines is yielded unloaded, for the search to stream instead.
358
+ * The search itself stays serial, so the budget it enforces is unchanged; only
359
+ * the file reads overlap, which is where the time was going.
360
+ */
361
+ async function* prefetch(source, load, window) {
362
+ const reading = [];
363
+ const held = [];
364
+ for await (const file of source) {
365
+ held.push(file);
366
+ reading.push(file.size > MAX_GREP_PREFETCH_FILE_BYTES ? Promise.resolve(undefined) : load(file));
367
+ if (reading.length >= window) {
368
+ const loaded = await reading.shift();
369
+ const owner = held.shift();
370
+ if (owner !== undefined)
371
+ yield loaded === undefined ? { file: owner } : { file: owner, loaded };
372
+ }
373
+ }
374
+ for (let index = 0; index < reading.length; index += 1) {
375
+ const loaded = await reading[index];
376
+ const owner = held[index];
377
+ if (owner !== undefined)
378
+ yield loaded === undefined ? { file: owner } : { file: owner, loaded };
379
+ }
380
+ }
312
381
  function formatLine(file, line, text, direct, input, includeFile) {
313
382
  const separator = direct ? ':' : '-';
314
383
  const number = input['-n'] ?? true;
@@ -322,9 +391,9 @@ function appendFormattedLine(state, file, line, text, direct, input, includeFile
322
391
  text,
323
392
  ], offset, limit);
324
393
  }
325
- async function countLineMatches(file, expression, budget, firstOnly) {
394
+ async function countLineMatches(lines, expression, budget, firstOnly) {
326
395
  let matches = 0;
327
- for await (const line of readSearchableLines(file, budget)) {
396
+ for await (const line of lines) {
328
397
  if (!testLine(line, expression))
329
398
  continue;
330
399
  matches += 1;
@@ -336,7 +405,17 @@ async function countLineMatches(file, expression, budget, firstOnly) {
336
405
  }
337
406
  return matches;
338
407
  }
339
- async function collectContent(file, expression, input, includeFile, state, offset, limit, budget) {
408
+ /**
409
+ * Presents decoded lines from an already-loaded candidate as a line source,
410
+ * applying the per-line ceiling as each line is consumed.
411
+ */
412
+ async function* decodedLines(loaded, budget) {
413
+ for (const line of loaded.lines) {
414
+ ensureLineLimit(line, budget);
415
+ yield line;
416
+ }
417
+ }
418
+ async function collectContent(file, lines, expression, input, includeFile, state, offset, limit, budget) {
340
419
  const context = input.context ?? input['-C'];
341
420
  const before = context ?? input['-B'] ?? 0;
342
421
  const after = context ?? input['-A'] ?? 0;
@@ -358,7 +437,7 @@ async function collectContent(file, expression, input, includeFile, state, offse
358
437
  previousLines.push(previous);
359
438
  previousLineChars += previous.text.length;
360
439
  };
361
- for await (const line of readSearchableLines(file, budget)) {
440
+ for await (const line of lines) {
362
441
  lineNumber += 1;
363
442
  if (!budget.checkTime())
364
443
  return matches;
@@ -414,6 +493,8 @@ async function readMultilineFile(file, budget) {
414
493
  }
415
494
  if (!budget.checkTime())
416
495
  throw new Error('Grep duration limit exceeded');
496
+ // A multiline search always reads the whole file, so the chunks are charged
497
+ // here rather than at admission.
417
498
  const chunks = [];
418
499
  let bytesRead = 0;
419
500
  for await (const chunk of createReadStream(file.file, { highWaterMark: 64 * 1024 })) {
@@ -421,7 +502,7 @@ async function readMultilineFile(file, budget) {
421
502
  budget.stop('max_multiline_file_bytes');
422
503
  throw new Error(`Multiline search is limited to ${formatMebibytes(MAX_MULTILINE_FILE_BYTES)} per file to preserve exact matching`);
423
504
  }
424
- if (!budget.addBytes(chunk.length))
505
+ if (!budget.consumeBytes(chunk.length))
425
506
  throw budgetError(budget.truncationReason);
426
507
  chunks.push(chunk);
427
508
  bytesRead += chunk.length;
@@ -456,20 +537,48 @@ function validateContext(input, limits) {
456
537
  function budgetError(reason) {
457
538
  return new Error(`Grep search budget exceeded: ${reason ?? 'unknown'}`);
458
539
  }
540
+ /**
541
+ * Searches one candidate's decoded lines and appends whatever the output mode
542
+ * calls for. Shared by the streamed path and the prefetched path so both charge
543
+ * the budget and format output identically.
544
+ */
545
+ async function runSearch(mode, file, lines, expression, input, explicitFile, state, offset, limit, budget, scanMode) {
546
+ if (mode === 'content') {
547
+ const matches = await collectContent(file, lines, expression, input, !explicitFile, state, offset, limit, budget);
548
+ return { files: matches > 0 ? 1 : 0, matches };
549
+ }
550
+ const matches = await countLineMatches(lines, expression, budget, scanMode === 'fast');
551
+ if (matches === 0)
552
+ return { files: 0, matches: 0 };
553
+ appendEntry(state, mode === 'count' ? `${file.displayFile}:${matches}` : file.displayFile, offset, limit);
554
+ return { files: 1, matches };
555
+ }
459
556
  export async function executeGrep(input) {
460
557
  const limits = grepLimits();
461
558
  validateContext(input, limits);
462
559
  const targetInput = path.resolve(input.path ?? process.cwd());
463
- const initialContext = await getProjectFileContext(targetInput);
560
+ const lookup = new EncodingRulesLookup();
561
+ const initialContext = await getProjectFileContext(targetInput, lookup);
464
562
  const safeTarget = await inspectProjectPath(initialContext.root, targetInput);
465
563
  const targetInfo = await stat(safeTarget.target);
466
564
  const resolvedTargetContext = targetInfo.isDirectory()
467
- ? await getProjectFileContext(path.join(safeTarget.target, '.codepage-bridge-search-probe'))
565
+ ? await getProjectFileContext(path.join(safeTarget.target, '.codepage-bridge-search-probe'), lookup)
468
566
  : initialContext;
469
567
  const targetContext = normalizeContextRoot(resolvedTargetContext, safeTarget.root);
470
568
  const matchesPath = createPathFilter(input.glob, input.type);
471
- const files = iterateFiles(targetContext.root, safeTarget.target, targetInput, targetInfo, targetContext, matchesPath);
569
+ const files = iterateFiles(targetContext.root, safeTarget.target, targetInput, targetInfo, targetContext, matchesPath, lookup);
472
570
  const explicitFile = targetInfo.isFile();
571
+ // Reading ahead is skipped when it would undo a saving the caller asked for.
572
+ // An explicit target can be arbitrarily large and is outside any scan window.
573
+ // A fast scan stops at each file's first match, so loading whole files first
574
+ // would read exactly what that mode exists to avoid.
575
+ const shouldPrefetch = !explicitFile && input.scan_mode !== 'fast';
576
+ const candidates = shouldPrefetch
577
+ ? prefetch(files, loadCandidate, MAX_GREP_PREFETCH)
578
+ : (async function* () {
579
+ for await (const file of files)
580
+ yield { file, loaded: undefined };
581
+ })();
473
582
  const flags = `${input['-i'] ? 'i' : ''}${input.multiline ? 'ms' : ''}`;
474
583
  let expression;
475
584
  try {
@@ -490,7 +599,8 @@ export async function executeGrep(input) {
490
599
  const budget = new GrepBudget(limits);
491
600
  let numFiles = 0;
492
601
  let numMatches = 0;
493
- for await (const file of files) {
602
+ for await (const candidate of candidates) {
603
+ const file = candidate.file;
494
604
  if (!budget.checkTime())
495
605
  break;
496
606
  if (file.size > maxTextFileBytes()) {
@@ -529,21 +639,30 @@ export async function executeGrep(input) {
529
639
  break;
530
640
  continue;
531
641
  }
532
- if (mode === 'content') {
533
- const fileMatches = await collectContent(file, expression, input, !explicitFile, state, offset, limit, budget);
534
- if (fileMatches > 0) {
535
- numFiles += 1;
536
- numMatches += fileMatches;
537
- }
642
+ // Load failures surface here, where the search has already admitted the
643
+ // candidate, so a skipped file is reported against the right budget state.
644
+ if (candidate.loaded === undefined) {
645
+ // A streamed read charges its own chunks as it consumes them.
646
+ const lines = readSearchableLines(file, budget);
647
+ const result = await runSearch(mode, file, lines, expression, input, explicitFile, state, offset, limit, budget, scanMode);
648
+ numFiles += result.files;
649
+ numMatches += result.matches;
650
+ if (!budget.scanComplete)
651
+ break;
652
+ continue;
538
653
  }
539
- else {
540
- const fileMatches = await countLineMatches(file, expression, budget, scanMode === 'fast');
541
- if (fileMatches > 0) {
542
- numFiles += 1;
543
- numMatches += fileMatches;
544
- appendEntry(state, mode === 'count' ? `${file.displayFile}:${fileMatches}` : file.displayFile, offset, limit);
545
- }
654
+ if (candidate.loaded.failure !== undefined)
655
+ throw candidate.loaded.failure;
656
+ // The bytes were read ahead of the budget frontier, so charge them now,
657
+ // before the search consumes the text.
658
+ if (!budget.consumeBytes(candidate.loaded.bytes)) {
659
+ budget.skippedFiles += 1;
660
+ break;
546
661
  }
662
+ const lines = decodedLines(candidate.loaded, budget);
663
+ const result = await runSearch(mode, file, lines, expression, input, explicitFile, state, offset, limit, budget, scanMode);
664
+ numFiles += result.files;
665
+ numMatches += result.matches;
547
666
  }
548
667
  catch (error) {
549
668
  const message = error instanceof Error ? error.message : String(error);
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codepage-bridge-mcp",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Encoding-transparent MCP file tools for legacy codepages in Claude Code",
5
5
  "license": "MIT",
6
6
  "type": "module",