codepage-bridge-mcp 0.1.9 → 0.2.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.
- package/dist/src/limits.d.ts +9 -0
- package/dist/src/limits.js +26 -0
- package/dist/src/limits.js.map +1 -1
- package/dist/src/prompts.d.ts +1 -1
- package/dist/src/prompts.js +2 -1
- package/dist/src/prompts.js.map +1 -1
- package/dist/src/schemas.d.ts +6 -0
- package/dist/src/schemas.js +1 -0
- package/dist/src/schemas.js.map +1 -1
- package/dist/src/server.d.ts +7 -1
- package/dist/src/tools/grep.d.ts +2 -0
- package/dist/src/tools/grep.js +371 -140
- package/dist/src/tools/grep.js.map +1 -1
- package/package.json +1 -1
package/dist/src/limits.d.ts
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
|
+
export interface GrepLimits {
|
|
2
|
+
maxScanBytes: number;
|
|
3
|
+
maxFiles: number;
|
|
4
|
+
maxDurationMs: number;
|
|
5
|
+
maxLineChars: number;
|
|
6
|
+
maxContextLines: number;
|
|
7
|
+
maxOnlyMatches: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function grepLimits(): GrepLimits;
|
|
1
10
|
export declare function maxTextFileBytes(): number;
|
|
2
11
|
export declare function formatMebibytes(bytes: number): string;
|
package/dist/src/limits.js
CHANGED
|
@@ -1,11 +1,37 @@
|
|
|
1
1
|
const BYTES_PER_MEBIBYTE = 1024 * 1024;
|
|
2
2
|
const DEFAULT_MAX_TEXT_FILE_MEBIBYTES = 32;
|
|
3
|
+
const DEFAULT_GREP_MAX_SCAN_BYTES = 256 * BYTES_PER_MEBIBYTE;
|
|
4
|
+
const DEFAULT_GREP_MAX_FILES = 10_000;
|
|
5
|
+
const DEFAULT_GREP_MAX_DURATION_MS = 30_000;
|
|
6
|
+
const DEFAULT_GREP_MAX_LINE_CHARS = 16 * BYTES_PER_MEBIBYTE;
|
|
7
|
+
const DEFAULT_GREP_MAX_CONTEXT_LINES = 10_000;
|
|
8
|
+
const DEFAULT_GREP_MAX_ONLY_MATCHES = 100_000;
|
|
3
9
|
function parsePositiveInteger(value) {
|
|
4
10
|
if (value === undefined || !/^\d+$/.test(value))
|
|
5
11
|
return undefined;
|
|
6
12
|
const parsed = Number(value);
|
|
7
13
|
return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : undefined;
|
|
8
14
|
}
|
|
15
|
+
function configuredPositiveInteger(name, fallback) {
|
|
16
|
+
const value = process.env[name];
|
|
17
|
+
if (value === undefined)
|
|
18
|
+
return fallback;
|
|
19
|
+
const parsed = parsePositiveInteger(value);
|
|
20
|
+
if (parsed === undefined) {
|
|
21
|
+
throw new Error(`${name} must be a positive safe integer when set`);
|
|
22
|
+
}
|
|
23
|
+
return parsed;
|
|
24
|
+
}
|
|
25
|
+
export function grepLimits() {
|
|
26
|
+
return {
|
|
27
|
+
maxScanBytes: configuredPositiveInteger('CODEPAGE_BRIDGE_MAX_GREP_SCAN_BYTES', DEFAULT_GREP_MAX_SCAN_BYTES),
|
|
28
|
+
maxFiles: configuredPositiveInteger('CODEPAGE_BRIDGE_MAX_GREP_FILES', DEFAULT_GREP_MAX_FILES),
|
|
29
|
+
maxDurationMs: configuredPositiveInteger('CODEPAGE_BRIDGE_MAX_GREP_DURATION_MS', DEFAULT_GREP_MAX_DURATION_MS),
|
|
30
|
+
maxLineChars: configuredPositiveInteger('CODEPAGE_BRIDGE_MAX_GREP_LINE_CHARS', DEFAULT_GREP_MAX_LINE_CHARS),
|
|
31
|
+
maxContextLines: configuredPositiveInteger('CODEPAGE_BRIDGE_MAX_GREP_CONTEXT_LINES', DEFAULT_GREP_MAX_CONTEXT_LINES),
|
|
32
|
+
maxOnlyMatches: configuredPositiveInteger('CODEPAGE_BRIDGE_MAX_GREP_ONLY_MATCHES', DEFAULT_GREP_MAX_ONLY_MATCHES),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
9
35
|
export function maxTextFileBytes() {
|
|
10
36
|
const mebibytes = parsePositiveInteger(process.env.CODEPAGE_BRIDGE_MAX_TEXT_FILE_MIB)
|
|
11
37
|
?? DEFAULT_MAX_TEXT_FILE_MEBIBYTES;
|
package/dist/src/limits.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/limits.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAA;AACtC,MAAM,+BAA+B,GAAG,EAAE,CAAA;AAE1C,SAAS,oBAAoB,CAAC,KAAyB;IACrD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;WAChF,+BAA+B,CAAA;IACpC,OAAO,SAAS,GAAG,kBAAkB,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,GAAG,KAAK,GAAG,kBAAkB,MAAM,CAAA;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/limits.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAA;AACtC,MAAM,+BAA+B,GAAG,EAAE,CAAA;AAE1C,MAAM,2BAA2B,GAAG,GAAG,GAAG,kBAAkB,CAAA;AAC5D,MAAM,sBAAsB,GAAG,MAAM,CAAA;AACrC,MAAM,4BAA4B,GAAG,MAAM,CAAA;AAC3C,MAAM,2BAA2B,GAAG,EAAE,GAAG,kBAAkB,CAAA;AAC3D,MAAM,8BAA8B,GAAG,MAAM,CAAA;AAC7C,MAAM,6BAA6B,GAAG,OAAO,CAAA;AAE7C,SAAS,oBAAoB,CAAC,KAAyB;IACrD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACxE,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY,EAAE,QAAgB;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IACxC,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,2CAA2C,CAAC,CAAA;IACrE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAWD,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,YAAY,EAAE,yBAAyB,CAAC,qCAAqC,EAAE,2BAA2B,CAAC;QAC3G,QAAQ,EAAE,yBAAyB,CAAC,gCAAgC,EAAE,sBAAsB,CAAC;QAC7F,aAAa,EAAE,yBAAyB,CAAC,sCAAsC,EAAE,4BAA4B,CAAC;QAC9G,YAAY,EAAE,yBAAyB,CAAC,qCAAqC,EAAE,2BAA2B,CAAC;QAC3G,eAAe,EAAE,yBAAyB,CAAC,wCAAwC,EAAE,8BAA8B,CAAC;QACpH,cAAc,EAAE,yBAAyB,CAAC,uCAAuC,EAAE,6BAA6B,CAAC;KAClH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;WAChF,+BAA+B,CAAA;IACpC,OAAO,SAAS,GAAG,kBAAkB,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,GAAG,KAAK,GAAG,kBAAkB,MAAM,CAAA;AAC5C,CAAC"}
|
package/dist/src/prompts.d.ts
CHANGED
|
@@ -5,4 +5,4 @@ export declare const READ_PROMPT = "Reads a file from the local filesystem. You
|
|
|
5
5
|
export declare const EDIT_PROMPT = "Performs exact string replacements in files.\n\nUsage:\n- You must use your `Read` tool at least once in the conversation before editing. This tool will error if you attempt an edit without reading the file.\n- When editing text from Read tool output, ensure you preserve the exact indentation (tabs/spaces) as it appears AFTER the line number prefix. The line number prefix format is: line number + tab. Everything after that is the actual file content to match. Never include any part of the line number prefix in the old_string or new_string.\n- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.\n- Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.\n- The edit will FAIL if `old_string` is not unique in the file. Either provide a larger string with more surrounding context to make it unique or use `replace_all` to change every instance of `old_string`.\n- Use `replace_all` for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.";
|
|
6
6
|
export declare const WRITE_PROMPT = "Writes a file to the local filesystem.\n\nUsage:\n- This tool will overwrite the existing file if there is one at the provided path.\n- If this is an existing file, you MUST use the Read tool first to read the file's contents. This tool will fail if you did not read the file first.\n- Prefer the Edit tool for modifying existing files \u2014 it only sends the diff. Only use this tool to create new files or for complete rewrites.\n- NEVER create documentation files (*.md) or README files unless explicitly requested by the User.\n- Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.";
|
|
7
7
|
export declare const GREP_DESCRIPTION = "A powerful search tool built on regular expressions.";
|
|
8
|
-
export declare const GREP_PROMPT = "A powerful search tool for file contents.\n\nUsage:\n- ALWAYS use Grep for search tasks. NEVER invoke grep or rg as a Bash command.\n- Supports full regular expressions, file glob filters, file type filters, context lines, match-only output, multiline matching, pagination, file lists, and per-file counts.\n- Use output_mode=files_with_matches when you only need file paths; this is the default.\n- Use output_mode=content to see matching lines. Line numbers are included by default.\n- Use output_mode=count to see match counts per file.\n- Results are limited to 250 entries by default; use head_limit and offset for pagination.\n- Every file is decoded according to its nearest project .encoding-rules, so legacy encoded content is searched as Unicode transparently.";
|
|
8
|
+
export declare const GREP_PROMPT = "A powerful search tool for file contents.\n\nUsage:\n- ALWAYS use Grep for search tasks. NEVER invoke grep or rg as a Bash command.\n- Supports full regular expressions, file glob filters, file type filters, context lines, match-only output, multiline matching, pagination, file lists, and per-file counts.\n- Use output_mode=files_with_matches when you only need file paths; this is the default.\n- Use output_mode=content to see matching lines. Line numbers are included by default.\n- Use output_mode=count to see match counts per file.\n- scan_mode=exact is the default: pagination never stops scanning, so counts are exact when scanComplete is true. scan_mode=fast is opt-in and only valid for files_with_matches; it stops each matching file at its first match and reports countsExact=false.\n- Results are limited to 250 entries by default; use head_limit and offset for pagination. Check structuredContent scanComplete, truncationReason, and outputTruncated whenever a search is resource-limited.\n- Every file is decoded according to its nearest project .encoding-rules, so legacy encoded content is searched as Unicode transparently.";
|
package/dist/src/prompts.js
CHANGED
|
@@ -41,6 +41,7 @@ Usage:
|
|
|
41
41
|
- Use output_mode=files_with_matches when you only need file paths; this is the default.
|
|
42
42
|
- Use output_mode=content to see matching lines. Line numbers are included by default.
|
|
43
43
|
- Use output_mode=count to see match counts per file.
|
|
44
|
-
-
|
|
44
|
+
- scan_mode=exact is the default: pagination never stops scanning, so counts are exact when scanComplete is true. scan_mode=fast is opt-in and only valid for files_with_matches; it stops each matching file at its first match and reports countsExact=false.
|
|
45
|
+
- Results are limited to 250 entries by default; use head_limit and offset for pagination. Check structuredContent scanComplete, truncationReason, and outputTruncated whenever a search is resource-limited.
|
|
45
46
|
- Every file is decoded according to its nearest project .encoding-rules, so legacy encoded content is searched as Unicode transparently.`;
|
|
46
47
|
//# sourceMappingURL=prompts.js.map
|
package/dist/src/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,wCAAwC,CAAA;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,8CAA8C,CAAA;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,uCAAuC,CAAA;AAExE,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;8HAamG,CAAA;AAE9H,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;kJAQuH,CAAA;AAElJ,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;kGAOsE,CAAA;AAElG,MAAM,CAAC,MAAM,gBAAgB,GAAG,sDAAsD,CAAA;AACtF,MAAM,CAAC,MAAM,WAAW,GAAG
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,wCAAwC,CAAA;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,8CAA8C,CAAA;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,uCAAuC,CAAA;AAExE,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;8HAamG,CAAA;AAE9H,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;kJAQuH,CAAA;AAElJ,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;kGAOsE,CAAA;AAElG,MAAM,CAAC,MAAM,gBAAgB,GAAG,sDAAsD,CAAA;AACtF,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;0IAU+G,CAAA"}
|
package/dist/src/schemas.d.ts
CHANGED
|
@@ -88,6 +88,12 @@ export declare const grepInputSchema: {
|
|
|
88
88
|
readonly enum: readonly ["content", "files_with_matches", "count"];
|
|
89
89
|
readonly description: "Output mode. Defaults to files_with_matches.";
|
|
90
90
|
};
|
|
91
|
+
readonly scan_mode: {
|
|
92
|
+
readonly type: "string";
|
|
93
|
+
readonly enum: readonly ["exact", "fast"];
|
|
94
|
+
readonly default: "exact";
|
|
95
|
+
readonly description: "exact scans all eligible files and returns exact counts when complete. fast is opt-in for files_with_matches only and stops each matching file after its first match, so counts are not exact.";
|
|
96
|
+
};
|
|
91
97
|
readonly '-i': {
|
|
92
98
|
readonly type: "boolean";
|
|
93
99
|
readonly description: "Case-insensitive search";
|
package/dist/src/schemas.js
CHANGED
|
@@ -66,6 +66,7 @@ export const grepInputSchema = {
|
|
|
66
66
|
glob: { type: 'string', description: 'Glob pattern used to filter files, for example *.js or **/*.ts' },
|
|
67
67
|
type: { type: 'string', description: 'File type filter such as js, ts, py, rust, go, or java' },
|
|
68
68
|
output_mode: { type: 'string', enum: ['content', 'files_with_matches', 'count'], description: 'Output mode. Defaults to files_with_matches.' },
|
|
69
|
+
scan_mode: { type: 'string', enum: ['exact', 'fast'], default: 'exact', description: 'exact scans all eligible files and returns exact counts when complete. fast is opt-in for files_with_matches only and stops each matching file after its first match, so counts are not exact.' },
|
|
69
70
|
'-i': { type: 'boolean', description: 'Case-insensitive search' },
|
|
70
71
|
'-n': { type: 'boolean', description: 'Show line numbers in content mode. Defaults to true.' },
|
|
71
72
|
'-o': { type: 'boolean', description: 'Print only matching non-empty parts of each line' },
|
package/dist/src/schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/src/server.d.ts
CHANGED
|
@@ -79,7 +79,7 @@ export declare const toolDefinitions: readonly [{
|
|
|
79
79
|
}, {
|
|
80
80
|
readonly name: "Grep";
|
|
81
81
|
readonly title: "A powerful search tool built on regular expressions.";
|
|
82
|
-
readonly description: "A powerful search tool for file contents.\n\nUsage:\n- ALWAYS use Grep for search tasks. NEVER invoke grep or rg as a Bash command.\n- Supports full regular expressions, file glob filters, file type filters, context lines, match-only output, multiline matching, pagination, file lists, and per-file counts.\n- Use output_mode=files_with_matches when you only need file paths; this is the default.\n- Use output_mode=content to see matching lines. Line numbers are included by default.\n- Use output_mode=count to see match counts per file.\n- Results are limited to 250 entries by default; use head_limit and offset for pagination.\n- Every file is decoded according to its nearest project .encoding-rules, so legacy encoded content is searched as Unicode transparently.";
|
|
82
|
+
readonly description: "A powerful search tool for file contents.\n\nUsage:\n- ALWAYS use Grep for search tasks. NEVER invoke grep or rg as a Bash command.\n- Supports full regular expressions, file glob filters, file type filters, context lines, match-only output, multiline matching, pagination, file lists, and per-file counts.\n- Use output_mode=files_with_matches when you only need file paths; this is the default.\n- Use output_mode=content to see matching lines. Line numbers are included by default.\n- Use output_mode=count to see match counts per file.\n- scan_mode=exact is the default: pagination never stops scanning, so counts are exact when scanComplete is true. scan_mode=fast is opt-in and only valid for files_with_matches; it stops each matching file at its first match and reports countsExact=false.\n- Results are limited to 250 entries by default; use head_limit and offset for pagination. Check structuredContent scanComplete, truncationReason, and outputTruncated whenever a search is resource-limited.\n- Every file is decoded according to its nearest project .encoding-rules, so legacy encoded content is searched as Unicode transparently.";
|
|
83
83
|
readonly inputSchema: {
|
|
84
84
|
readonly type: "object";
|
|
85
85
|
readonly additionalProperties: false;
|
|
@@ -106,6 +106,12 @@ export declare const toolDefinitions: readonly [{
|
|
|
106
106
|
readonly enum: readonly ["content", "files_with_matches", "count"];
|
|
107
107
|
readonly description: "Output mode. Defaults to files_with_matches.";
|
|
108
108
|
};
|
|
109
|
+
readonly scan_mode: {
|
|
110
|
+
readonly type: "string";
|
|
111
|
+
readonly enum: readonly ["exact", "fast"];
|
|
112
|
+
readonly default: "exact";
|
|
113
|
+
readonly description: "exact scans all eligible files and returns exact counts when complete. fast is opt-in for files_with_matches only and stops each matching file after its first match, so counts are not exact.";
|
|
114
|
+
};
|
|
109
115
|
readonly '-i': {
|
|
110
116
|
readonly type: "boolean";
|
|
111
117
|
readonly description: "Case-insensitive search";
|
package/dist/src/tools/grep.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { ToolResponse } from '../toolTypes.js';
|
|
2
2
|
export type GrepOutputMode = 'content' | 'files_with_matches' | 'count';
|
|
3
|
+
export type GrepScanMode = 'exact' | 'fast';
|
|
3
4
|
export interface GrepInput {
|
|
4
5
|
pattern: string;
|
|
5
6
|
path?: string;
|
|
6
7
|
glob?: string;
|
|
7
8
|
type?: string;
|
|
8
9
|
output_mode?: GrepOutputMode;
|
|
10
|
+
scan_mode?: GrepScanMode;
|
|
9
11
|
'-i'?: boolean;
|
|
10
12
|
'-n'?: boolean;
|
|
11
13
|
'-o'?: boolean;
|
package/dist/src/tools/grep.js
CHANGED
|
@@ -3,14 +3,18 @@ import { readdir, 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 { normalizeEncoding } from '../encoding/index.js';
|
|
6
|
+
import { decodeText, normalizeEncoding, resolveEncoding } from '../encoding/index.js';
|
|
7
7
|
import { inspectProjectPath } from '../filesystem/index.js';
|
|
8
|
-
import {
|
|
9
|
-
import { getProjectFileContext
|
|
8
|
+
import { formatMebibytes, grepLimits, maxTextFileBytes } from '../limits.js';
|
|
9
|
+
import { getProjectFileContext } from '../core.js';
|
|
10
10
|
import { assertObject, optionalBoolean, optionalInteger, optionalString, rejectUnknown, requiredString, } from '../validation.js';
|
|
11
11
|
const MAX_GREP_MATCHES_PER_FILE = 10_000;
|
|
12
12
|
const MAX_GREP_ENTRIES = 10_000;
|
|
13
13
|
const MAX_GREP_RESPONSE_CHARS = 1024 * 1024;
|
|
14
|
+
// Retaining context must not use more text than the bounded response it can produce.
|
|
15
|
+
const MAX_GREP_CONTEXT_CHARS = MAX_GREP_RESPONSE_CHARS;
|
|
16
|
+
// Multiline matching is deliberately exact, so its bounded whole-file buffer is stricter than normal streaming search.
|
|
17
|
+
const MAX_MULTILINE_FILE_BYTES = 1024 * 1024;
|
|
14
18
|
const TYPE_GLOBS = {
|
|
15
19
|
js: ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.cjs'],
|
|
16
20
|
ts: ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'],
|
|
@@ -32,12 +36,19 @@ const TYPE_GLOBS = {
|
|
|
32
36
|
};
|
|
33
37
|
export function parseGrepInput(value) {
|
|
34
38
|
assertObject(value);
|
|
35
|
-
const allowed = ['pattern', 'path', 'glob', 'type', 'output_mode', '-i', '-n', '-o', '-A', '-B', '-C', 'context', 'multiline', 'head_limit', 'offset'];
|
|
39
|
+
const allowed = ['pattern', 'path', 'glob', 'type', 'output_mode', 'scan_mode', '-i', '-n', '-o', '-A', '-B', '-C', 'context', 'multiline', 'head_limit', 'offset'];
|
|
36
40
|
rejectUnknown(value, allowed);
|
|
37
41
|
const outputMode = optionalString(value, 'output_mode');
|
|
38
42
|
if (outputMode !== undefined && !['content', 'files_with_matches', 'count'].includes(outputMode)) {
|
|
39
43
|
throw new Error('output_mode must be content, files_with_matches, or count');
|
|
40
44
|
}
|
|
45
|
+
const scanMode = optionalString(value, 'scan_mode');
|
|
46
|
+
if (scanMode !== undefined && !['exact', 'fast'].includes(scanMode)) {
|
|
47
|
+
throw new Error('scan_mode must be exact or fast');
|
|
48
|
+
}
|
|
49
|
+
if (scanMode === 'fast' && outputMode !== undefined && outputMode !== 'files_with_matches') {
|
|
50
|
+
throw new Error('scan_mode=fast is only supported with output_mode=files_with_matches');
|
|
51
|
+
}
|
|
41
52
|
const result = { pattern: requiredString(value, 'pattern') };
|
|
42
53
|
for (const key of ['path', 'glob', 'type']) {
|
|
43
54
|
const item = optionalString(value, key);
|
|
@@ -46,6 +57,8 @@ export function parseGrepInput(value) {
|
|
|
46
57
|
}
|
|
47
58
|
if (outputMode !== undefined)
|
|
48
59
|
result.output_mode = outputMode;
|
|
60
|
+
if (scanMode !== undefined)
|
|
61
|
+
result.scan_mode = scanMode;
|
|
49
62
|
for (const key of ['-i', '-n', '-o', 'multiline']) {
|
|
50
63
|
const item = optionalBoolean(value, key);
|
|
51
64
|
if (item !== undefined)
|
|
@@ -58,100 +71,237 @@ export function parseGrepInput(value) {
|
|
|
58
71
|
}
|
|
59
72
|
return result;
|
|
60
73
|
}
|
|
61
|
-
|
|
62
|
-
|
|
74
|
+
class GrepBudget {
|
|
75
|
+
limits;
|
|
76
|
+
startedAt = Date.now();
|
|
77
|
+
scannedFiles = 0;
|
|
78
|
+
scannedBytes = 0;
|
|
79
|
+
skippedFiles = 0;
|
|
80
|
+
reason;
|
|
81
|
+
remainingOnlyMatches;
|
|
82
|
+
constructor(limits) {
|
|
83
|
+
this.limits = limits;
|
|
84
|
+
this.remainingOnlyMatches = limits.maxOnlyMatches;
|
|
85
|
+
}
|
|
86
|
+
get truncationReason() {
|
|
87
|
+
return this.reason;
|
|
88
|
+
}
|
|
89
|
+
get scanComplete() {
|
|
90
|
+
return this.reason === undefined;
|
|
91
|
+
}
|
|
92
|
+
get elapsedMs() {
|
|
93
|
+
return Date.now() - this.startedAt;
|
|
94
|
+
}
|
|
95
|
+
stop(reason) {
|
|
96
|
+
if (this.reason === undefined)
|
|
97
|
+
this.reason = reason;
|
|
98
|
+
}
|
|
99
|
+
checkTime() {
|
|
100
|
+
if (this.reason !== undefined)
|
|
101
|
+
return false;
|
|
102
|
+
if (this.elapsedMs > this.limits.maxDurationMs) {
|
|
103
|
+
this.stop('max_duration_ms');
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
63
106
|
return true;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
107
|
+
}
|
|
108
|
+
startFile(size) {
|
|
109
|
+
if (!this.checkTime())
|
|
110
|
+
return false;
|
|
111
|
+
if (this.scannedFiles >= this.limits.maxFiles) {
|
|
112
|
+
this.stop('max_files');
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
// Admit complete files only, so stream chunking cannot make byte accounting exceed the request budget.
|
|
116
|
+
if (size > this.limits.maxScanBytes - this.scannedBytes) {
|
|
117
|
+
this.stop('max_scan_bytes');
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
this.scannedFiles += 1;
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
addBytes(bytes) {
|
|
124
|
+
if (!this.checkTime())
|
|
125
|
+
return false;
|
|
126
|
+
if (bytes > this.limits.maxScanBytes - this.scannedBytes) {
|
|
127
|
+
this.stop('max_scan_bytes');
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
this.scannedBytes += bytes;
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
consumeOnlyMatch() {
|
|
134
|
+
if (!this.checkTime())
|
|
135
|
+
return false;
|
|
136
|
+
if (this.remainingOnlyMatches <= 0) {
|
|
137
|
+
this.stop('max_only_matches');
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
this.remainingOnlyMatches -= 1;
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
skip(reason) {
|
|
144
|
+
this.skippedFiles += 1;
|
|
145
|
+
this.stop(reason);
|
|
146
|
+
}
|
|
68
147
|
}
|
|
69
|
-
function
|
|
70
|
-
|
|
148
|
+
function normalizeContextRoot(context, root) {
|
|
149
|
+
if (context.root === root && context.rules.root === root)
|
|
150
|
+
return context;
|
|
151
|
+
const rules = { ...context.rules, root };
|
|
152
|
+
return { ...context, root, rules };
|
|
153
|
+
}
|
|
154
|
+
function contextForFile(context, file) {
|
|
155
|
+
return {
|
|
156
|
+
...context,
|
|
157
|
+
absolutePath: file,
|
|
158
|
+
encoding: resolveEncoding(file, context.rules),
|
|
159
|
+
};
|
|
71
160
|
}
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
161
|
+
function createPathFilter(glob, type) {
|
|
162
|
+
const globMatcher = glob === undefined ? undefined : picomatch(glob, { dot: true });
|
|
163
|
+
const typePatterns = type === undefined ? undefined : TYPE_GLOBS[type];
|
|
164
|
+
if (type !== undefined && typePatterns === undefined)
|
|
165
|
+
throw new Error(`Unsupported file type: ${type}`);
|
|
166
|
+
const typeMatchers = typePatterns?.map(pattern => picomatch(pattern, { dot: true }));
|
|
167
|
+
return relative => (globMatcher === undefined || globMatcher(relative))
|
|
168
|
+
&& (typeMatchers === undefined || typeMatchers.some(matcher => matcher(relative)));
|
|
169
|
+
}
|
|
170
|
+
async function* iterateFiles(root, target, displayTarget, targetInfo, context, matchesPath) {
|
|
171
|
+
if (targetInfo.isFile()) {
|
|
172
|
+
yield { file: target, displayFile: displayTarget, context: contextForFile(context, target), size: targetInfo.size };
|
|
76
173
|
return;
|
|
77
174
|
}
|
|
78
|
-
if (!
|
|
175
|
+
if (!targetInfo.isDirectory())
|
|
79
176
|
throw new Error(`Path is not a file or directory: ${target}`);
|
|
80
|
-
const visit = async function* (directory) {
|
|
177
|
+
const visit = async function* (directory, displayDirectory, relativeDirectory, activeContext) {
|
|
81
178
|
const entries = await readdir(directory, { withFileTypes: true });
|
|
82
179
|
entries.sort((left, right) => left.name.localeCompare(right.name));
|
|
180
|
+
const directoryContext = entries.some(entry => entry.name === '.encoding-rules' && entry.isFile())
|
|
181
|
+
&& path.resolve(directory) !== activeContext.root
|
|
182
|
+
? await getProjectFileContext(path.join(directory, '.codepage-bridge-search-probe'))
|
|
183
|
+
: activeContext;
|
|
83
184
|
for (const entry of entries) {
|
|
84
185
|
if (entry.name === 'node_modules' || entry.name === '.git' || entry.name === 'dist')
|
|
85
186
|
continue;
|
|
86
187
|
const absolute = path.join(directory, entry.name);
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
188
|
+
const displayAbsolute = path.join(displayDirectory, entry.name);
|
|
189
|
+
const relative = relativeDirectory ? `${relativeDirectory}/${entry.name}` : entry.name;
|
|
190
|
+
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);
|
|
195
|
+
}
|
|
196
|
+
else if (entry.isFile() && matchesPath(relative)) {
|
|
197
|
+
const safe = await inspectProjectPath(directoryContext.root, absolute);
|
|
198
|
+
const info = await stat(safe.target);
|
|
199
|
+
if (info.isFile()) {
|
|
200
|
+
yield {
|
|
201
|
+
file: safe.target,
|
|
202
|
+
displayFile: displayAbsolute,
|
|
203
|
+
context: contextForFile(directoryContext, safe.target),
|
|
204
|
+
size: info.size,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
92
208
|
}
|
|
93
209
|
};
|
|
94
|
-
yield* visit(target);
|
|
210
|
+
yield* visit(target, displayTarget, path.relative(root, target).split(path.sep).join('/'), context);
|
|
95
211
|
}
|
|
96
212
|
function responseState() {
|
|
97
213
|
return { entries: [], count: 0, characters: 0, truncated: false };
|
|
98
214
|
}
|
|
99
215
|
function appendEntry(state, entry, offset, limit) {
|
|
216
|
+
return appendEntryParts(state, [entry], offset, limit);
|
|
217
|
+
}
|
|
218
|
+
function appendEntryParts(state, parts, offset, limit) {
|
|
100
219
|
if (state.truncated)
|
|
101
220
|
return false;
|
|
102
221
|
if (state.count >= offset && state.entries.length < limit) {
|
|
103
|
-
|
|
222
|
+
const length = parts.reduce((total, part) => total + part.length, 0);
|
|
223
|
+
if (state.characters + length > MAX_GREP_RESPONSE_CHARS) {
|
|
104
224
|
state.truncated = true;
|
|
105
225
|
return false;
|
|
106
226
|
}
|
|
107
|
-
state.entries.push(
|
|
108
|
-
state.characters +=
|
|
227
|
+
state.entries.push(parts.join(''));
|
|
228
|
+
state.characters += length + 1;
|
|
109
229
|
}
|
|
110
230
|
state.count += 1;
|
|
111
231
|
return true;
|
|
112
232
|
}
|
|
113
|
-
function onlyMatches(line, expression) {
|
|
233
|
+
function* onlyMatches(line, expression) {
|
|
114
234
|
const global = new RegExp(expression.source, expression.flags.includes('g') ? expression.flags : `${expression.flags}g`);
|
|
115
|
-
|
|
235
|
+
for (const match of line.matchAll(global)) {
|
|
236
|
+
if (match[0])
|
|
237
|
+
yield match[0];
|
|
238
|
+
}
|
|
116
239
|
}
|
|
117
240
|
function testLine(line, expression) {
|
|
118
241
|
expression.lastIndex = 0;
|
|
119
242
|
return expression.test(line);
|
|
120
243
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
const encoding = normalizeEncoding(context.encoding);
|
|
244
|
+
function ensureLineLimit(line, budget) {
|
|
245
|
+
if (line.length > budget.limits.maxLineChars) {
|
|
246
|
+
budget.stop('max_line_chars');
|
|
247
|
+
throw new Error('Grep line length limit exceeded');
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
async function* readSearchableLines(file, budget) {
|
|
251
|
+
const encoding = normalizeEncoding(file.context.encoding);
|
|
130
252
|
const decoder = new TextDecoder(encoding, { fatal: true });
|
|
131
253
|
let pending = '';
|
|
132
254
|
let trailingCarriageReturn = false;
|
|
255
|
+
const joinPending = (line) => {
|
|
256
|
+
const complete = pending + line;
|
|
257
|
+
pending = '';
|
|
258
|
+
ensureLineLimit(complete, budget);
|
|
259
|
+
return complete;
|
|
260
|
+
};
|
|
261
|
+
const consume = function* (decoded) {
|
|
262
|
+
const lines = decoded.split('\n');
|
|
263
|
+
const remainder = lines.pop() ?? '';
|
|
264
|
+
for (const line of lines)
|
|
265
|
+
yield joinPending(line);
|
|
266
|
+
return remainder;
|
|
267
|
+
};
|
|
133
268
|
try {
|
|
134
|
-
for await (const chunk of createReadStream(
|
|
269
|
+
for await (const chunk of createReadStream(file.file, { highWaterMark: 64 * 1024 })) {
|
|
270
|
+
if (!budget.addBytes(chunk.length))
|
|
271
|
+
return;
|
|
135
272
|
let decoded = decoder.decode(chunk, { stream: true });
|
|
136
|
-
if (trailingCarriageReturn)
|
|
137
|
-
decoded =
|
|
138
|
-
|
|
139
|
-
}
|
|
273
|
+
if (trailingCarriageReturn && !decoded.startsWith('\n'))
|
|
274
|
+
decoded = `\n${decoded}`;
|
|
275
|
+
trailingCarriageReturn = false;
|
|
140
276
|
if (decoded.endsWith('\r')) {
|
|
141
277
|
decoded = decoded.slice(0, -1);
|
|
142
278
|
trailingCarriageReturn = true;
|
|
143
279
|
}
|
|
144
280
|
decoded = decoded.replaceAll('\r\n', '\n').replaceAll('\r', '\n');
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
281
|
+
const consumed = consume(decoded);
|
|
282
|
+
let next = consumed.next();
|
|
283
|
+
while (!next.done) {
|
|
284
|
+
if (!budget.checkTime())
|
|
285
|
+
return;
|
|
286
|
+
yield next.value;
|
|
287
|
+
next = consumed.next();
|
|
288
|
+
}
|
|
289
|
+
pending += next.value;
|
|
290
|
+
ensureLineLimit(pending, budget);
|
|
148
291
|
}
|
|
149
292
|
let decoded = decoder.decode();
|
|
150
|
-
if (trailingCarriageReturn)
|
|
151
|
-
decoded =
|
|
293
|
+
if (trailingCarriageReturn && !decoded.startsWith('\n'))
|
|
294
|
+
decoded = `\n${decoded}`;
|
|
152
295
|
decoded = decoded.replaceAll('\r\n', '\n').replaceAll('\r', '\n');
|
|
153
|
-
|
|
154
|
-
|
|
296
|
+
const consumed = consume(decoded);
|
|
297
|
+
let next = consumed.next();
|
|
298
|
+
while (!next.done) {
|
|
299
|
+
if (!budget.checkTime())
|
|
300
|
+
return;
|
|
301
|
+
yield next.value;
|
|
302
|
+
next = consumed.next();
|
|
303
|
+
}
|
|
304
|
+
yield joinPending(next.value);
|
|
155
305
|
}
|
|
156
306
|
catch (error) {
|
|
157
307
|
if (error instanceof TypeError)
|
|
@@ -159,34 +309,59 @@ async function* readSearchableLines(file) {
|
|
|
159
309
|
throw error;
|
|
160
310
|
}
|
|
161
311
|
}
|
|
162
|
-
|
|
312
|
+
function formatLine(file, line, text, direct, input, includeFile) {
|
|
313
|
+
const separator = direct ? ':' : '-';
|
|
314
|
+
const number = input['-n'] ?? true;
|
|
315
|
+
return `${includeFile ? `${file}${separator}` : ''}${number ? `${line}${separator}` : ''}${text}`;
|
|
316
|
+
}
|
|
317
|
+
function appendFormattedLine(state, file, line, text, direct, input, includeFile, offset, limit) {
|
|
318
|
+
const separator = direct ? ':' : '-';
|
|
319
|
+
return appendEntryParts(state, [
|
|
320
|
+
includeFile ? `${file}${separator}` : '',
|
|
321
|
+
input['-n'] ?? true ? `${line}${separator}` : '',
|
|
322
|
+
text,
|
|
323
|
+
], offset, limit);
|
|
324
|
+
}
|
|
325
|
+
async function countLineMatches(file, expression, budget, firstOnly) {
|
|
163
326
|
let matches = 0;
|
|
164
|
-
for await (const line of readSearchableLines(file)) {
|
|
327
|
+
for await (const line of readSearchableLines(file, budget)) {
|
|
165
328
|
if (!testLine(line, expression))
|
|
166
329
|
continue;
|
|
167
330
|
matches += 1;
|
|
331
|
+
if (firstOnly)
|
|
332
|
+
return matches;
|
|
168
333
|
if (matches > MAX_GREP_MATCHES_PER_FILE) {
|
|
169
334
|
throw new Error(`File has more than ${MAX_GREP_MATCHES_PER_FILE} matches. Narrow the search pattern.`);
|
|
170
335
|
}
|
|
171
336
|
}
|
|
172
337
|
return matches;
|
|
173
338
|
}
|
|
174
|
-
function
|
|
175
|
-
const separator = direct ? ':' : '-';
|
|
176
|
-
const number = input['-n'] ?? true;
|
|
177
|
-
return `${includeFile ? `${file}${separator}` : ''}${number ? `${line}${separator}` : ''}${text}`;
|
|
178
|
-
}
|
|
179
|
-
async function collectContent(file, expression, input, includeFile, state, offset, limit) {
|
|
339
|
+
async function collectContent(file, expression, input, includeFile, state, offset, limit, budget) {
|
|
180
340
|
const context = input.context ?? input['-C'];
|
|
181
341
|
const before = context ?? input['-B'] ?? 0;
|
|
182
342
|
const after = context ?? input['-A'] ?? 0;
|
|
183
343
|
const previousLines = [];
|
|
344
|
+
let previousLineChars = 0;
|
|
184
345
|
let previousOutputLine = 0;
|
|
185
346
|
let afterUntil = 0;
|
|
186
347
|
let matches = 0;
|
|
187
348
|
let lineNumber = 0;
|
|
188
|
-
|
|
349
|
+
const retainPreviousLine = (previous) => {
|
|
350
|
+
if (previousLines.length >= before) {
|
|
351
|
+
const removed = previousLines.shift();
|
|
352
|
+
previousLineChars -= removed?.text.length ?? 0;
|
|
353
|
+
}
|
|
354
|
+
if (previous.text.length > MAX_GREP_CONTEXT_CHARS - previousLineChars) {
|
|
355
|
+
budget.stop('max_context_chars');
|
|
356
|
+
throw new Error(`Grep context storage limit exceeded (${MAX_GREP_CONTEXT_CHARS} characters)`);
|
|
357
|
+
}
|
|
358
|
+
previousLines.push(previous);
|
|
359
|
+
previousLineChars += previous.text.length;
|
|
360
|
+
};
|
|
361
|
+
for await (const line of readSearchableLines(file, budget)) {
|
|
189
362
|
lineNumber += 1;
|
|
363
|
+
if (!budget.checkTime())
|
|
364
|
+
return matches;
|
|
190
365
|
const direct = testLine(line, expression);
|
|
191
366
|
if (direct) {
|
|
192
367
|
matches += 1;
|
|
@@ -195,104 +370,105 @@ async function collectContent(file, expression, input, includeFile, state, offse
|
|
|
195
370
|
}
|
|
196
371
|
if (input['-o']) {
|
|
197
372
|
for (const part of onlyMatches(line, expression)) {
|
|
198
|
-
|
|
373
|
+
if (!budget.consumeOnlyMatch())
|
|
374
|
+
return matches;
|
|
375
|
+
appendEntryParts(state, [
|
|
376
|
+
includeFile ? `${file.displayFile}:` : '',
|
|
377
|
+
input['-n'] ?? true ? `${lineNumber}:` : '',
|
|
378
|
+
part,
|
|
379
|
+
], offset, limit);
|
|
199
380
|
}
|
|
200
381
|
}
|
|
201
382
|
else {
|
|
202
383
|
for (const previous of previousLines) {
|
|
203
384
|
if (previousOutputLine > 0 && previous.line > previousOutputLine + 1)
|
|
204
385
|
appendEntry(state, '--', offset, limit);
|
|
205
|
-
|
|
386
|
+
appendFormattedLine(state, file.displayFile, previous.line, previous.text, false, input, includeFile, offset, limit);
|
|
206
387
|
previousOutputLine = previous.line;
|
|
207
388
|
}
|
|
208
389
|
previousLines.length = 0;
|
|
390
|
+
previousLineChars = 0;
|
|
209
391
|
if (previousOutputLine > 0 && lineNumber > previousOutputLine + 1)
|
|
210
392
|
appendEntry(state, '--', offset, limit);
|
|
211
|
-
|
|
393
|
+
appendFormattedLine(state, file.displayFile, lineNumber, line, true, input, includeFile, offset, limit);
|
|
212
394
|
previousOutputLine = lineNumber;
|
|
213
395
|
afterUntil = Math.max(afterUntil, lineNumber + after);
|
|
214
396
|
}
|
|
215
397
|
continue;
|
|
216
398
|
}
|
|
217
399
|
if (!input['-o'] && lineNumber <= afterUntil) {
|
|
218
|
-
|
|
400
|
+
appendFormattedLine(state, file.displayFile, lineNumber, line, false, input, includeFile, offset, limit);
|
|
219
401
|
previousOutputLine = lineNumber;
|
|
220
402
|
continue;
|
|
221
403
|
}
|
|
222
404
|
if (!input['-o'] && before > 0) {
|
|
223
|
-
|
|
224
|
-
if (previousLines.length > before)
|
|
225
|
-
previousLines.shift();
|
|
405
|
+
retainPreviousLine({ line: lineNumber, text: line });
|
|
226
406
|
}
|
|
227
407
|
}
|
|
228
408
|
return matches;
|
|
229
409
|
}
|
|
230
|
-
function
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
410
|
+
async function readMultilineFile(file, budget) {
|
|
411
|
+
if (file.size > MAX_MULTILINE_FILE_BYTES) {
|
|
412
|
+
budget.stop('max_multiline_file_bytes');
|
|
413
|
+
throw new Error(`Multiline search is limited to ${formatMebibytes(MAX_MULTILINE_FILE_BYTES)} per file to preserve exact matching`);
|
|
414
|
+
}
|
|
415
|
+
if (!budget.checkTime())
|
|
416
|
+
throw new Error('Grep duration limit exceeded');
|
|
417
|
+
const chunks = [];
|
|
418
|
+
let bytesRead = 0;
|
|
419
|
+
for await (const chunk of createReadStream(file.file, { highWaterMark: 64 * 1024 })) {
|
|
420
|
+
if (chunk.length > MAX_MULTILINE_FILE_BYTES - bytesRead) {
|
|
421
|
+
budget.stop('max_multiline_file_bytes');
|
|
422
|
+
throw new Error(`Multiline search is limited to ${formatMebibytes(MAX_MULTILINE_FILE_BYTES)} per file to preserve exact matching`);
|
|
239
423
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
424
|
+
if (!budget.addBytes(chunk.length))
|
|
425
|
+
throw budgetError(budget.truncationReason);
|
|
426
|
+
chunks.push(chunk);
|
|
427
|
+
bytesRead += chunk.length;
|
|
428
|
+
}
|
|
429
|
+
try {
|
|
430
|
+
return decodeText(Buffer.concat(chunks, bytesRead), file.context.encoding).text.replaceAll('\r\n', '\n').replaceAll('\r', '\n');
|
|
431
|
+
}
|
|
432
|
+
catch (error) {
|
|
433
|
+
budget.stop('decode_error');
|
|
434
|
+
throw error;
|
|
245
435
|
}
|
|
246
|
-
return matches;
|
|
247
436
|
}
|
|
248
|
-
function
|
|
249
|
-
const lines = text.split('\n');
|
|
250
|
-
const context = input.context ?? input['-C'];
|
|
251
|
-
const before = context ?? input['-B'] ?? 0;
|
|
252
|
-
const after = context ?? input['-A'] ?? 0;
|
|
253
|
-
const withNumbers = input['-n'] ?? true;
|
|
254
|
-
const output = [];
|
|
437
|
+
function collectMultilineContent(file, text, expression, input, includeFile, state, offset, limit, budget) {
|
|
255
438
|
if (input['-o']) {
|
|
256
|
-
for (const
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
return output;
|
|
261
|
-
}
|
|
262
|
-
const selected = new Map();
|
|
263
|
-
for (const match of matches) {
|
|
264
|
-
for (let line = Math.max(1, match.line - before); line <= Math.min(lines.length, match.line + after); line += 1) {
|
|
265
|
-
selected.set(line, selected.get(line) === true || line === match.line);
|
|
439
|
+
for (const part of onlyMatches(text, expression)) {
|
|
440
|
+
if (!budget.consumeOnlyMatch())
|
|
441
|
+
return;
|
|
442
|
+
appendEntry(state, `${includeFile ? `${file.displayFile}:` : ''}${input['-n'] ?? true ? '1:' : ''}${part}`, offset, limit);
|
|
266
443
|
}
|
|
444
|
+
return;
|
|
267
445
|
}
|
|
268
|
-
|
|
269
|
-
for (const [line, direct] of [...selected.entries()].sort((left, right) => left[0] - right[0])) {
|
|
270
|
-
if (previous > 0 && line > previous + 1)
|
|
271
|
-
output.push('--');
|
|
272
|
-
const separator = direct ? ':' : '-';
|
|
273
|
-
output.push(`${includeFile ? `${file}${separator}` : ''}${withNumbers ? `${line}${separator}` : ''}${lines[line - 1] ?? ''}`);
|
|
274
|
-
previous = line;
|
|
275
|
-
}
|
|
276
|
-
return output;
|
|
446
|
+
appendEntry(state, formatLine(file.displayFile, 1, text, true, input, includeFile), offset, limit);
|
|
277
447
|
}
|
|
278
|
-
|
|
279
|
-
const
|
|
280
|
-
const
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
return (await readDecodedFile(context)).text;
|
|
448
|
+
function validateContext(input, limits) {
|
|
449
|
+
const context = input.context ?? input['-C'];
|
|
450
|
+
const before = context ?? input['-B'] ?? 0;
|
|
451
|
+
const after = context ?? input['-A'] ?? 0;
|
|
452
|
+
if (before + after > limits.maxContextLines) {
|
|
453
|
+
throw new Error(`Requested context exceeds CODEPAGE_BRIDGE_MAX_GREP_CONTEXT_LINES (${limits.maxContextLines})`);
|
|
454
|
+
}
|
|
286
455
|
}
|
|
287
|
-
function
|
|
288
|
-
|
|
289
|
-
appendEntry(state, entry, offset, limit);
|
|
456
|
+
function budgetError(reason) {
|
|
457
|
+
return new Error(`Grep search budget exceeded: ${reason ?? 'unknown'}`);
|
|
290
458
|
}
|
|
291
459
|
export async function executeGrep(input) {
|
|
460
|
+
const limits = grepLimits();
|
|
461
|
+
validateContext(input, limits);
|
|
292
462
|
const targetInput = path.resolve(input.path ?? process.cwd());
|
|
293
|
-
const
|
|
294
|
-
const
|
|
295
|
-
const
|
|
463
|
+
const initialContext = await getProjectFileContext(targetInput);
|
|
464
|
+
const safeTarget = await inspectProjectPath(initialContext.root, targetInput);
|
|
465
|
+
const targetInfo = await stat(safeTarget.target);
|
|
466
|
+
const resolvedTargetContext = targetInfo.isDirectory()
|
|
467
|
+
? await getProjectFileContext(path.join(safeTarget.target, '.codepage-bridge-search-probe'))
|
|
468
|
+
: initialContext;
|
|
469
|
+
const targetContext = normalizeContextRoot(resolvedTargetContext, safeTarget.root);
|
|
470
|
+
const matchesPath = createPathFilter(input.glob, input.type);
|
|
471
|
+
const files = iterateFiles(targetContext.root, safeTarget.target, targetInput, targetInfo, targetContext, matchesPath);
|
|
296
472
|
const explicitFile = targetInfo.isFile();
|
|
297
473
|
const flags = `${input['-i'] ? 'i' : ''}${input.multiline ? 'ms' : ''}`;
|
|
298
474
|
let expression;
|
|
@@ -303,65 +479,120 @@ export async function executeGrep(input) {
|
|
|
303
479
|
throw new Error(`Invalid regular expression: ${error instanceof Error ? error.message : String(error)}`);
|
|
304
480
|
}
|
|
305
481
|
const mode = input.output_mode ?? 'files_with_matches';
|
|
482
|
+
const scanMode = input.scan_mode ?? 'exact';
|
|
483
|
+
if (scanMode === 'fast' && mode !== 'files_with_matches') {
|
|
484
|
+
throw new Error('scan_mode=fast is only supported with output_mode=files_with_matches');
|
|
485
|
+
}
|
|
306
486
|
const offset = input.offset ?? 0;
|
|
307
487
|
const requestedLimit = input.head_limit ?? 250;
|
|
308
488
|
const limit = requestedLimit === 0 ? MAX_GREP_ENTRIES : Math.min(requestedLimit, MAX_GREP_ENTRIES);
|
|
309
489
|
const state = responseState();
|
|
490
|
+
const budget = new GrepBudget(limits);
|
|
310
491
|
let numFiles = 0;
|
|
311
492
|
let numMatches = 0;
|
|
312
493
|
for await (const file of files) {
|
|
494
|
+
if (!budget.checkTime())
|
|
495
|
+
break;
|
|
496
|
+
if (file.size > maxTextFileBytes()) {
|
|
497
|
+
budget.skip('max_text_file_bytes');
|
|
498
|
+
if (explicitFile) {
|
|
499
|
+
throw new Error(`Failed to search ${file.displayFile}: File exceeds the ${formatMebibytes(maxTextFileBytes())} search limit. Set CODEPAGE_BRIDGE_MAX_TEXT_FILE_MIB to raise it.`);
|
|
500
|
+
}
|
|
501
|
+
continue;
|
|
502
|
+
}
|
|
503
|
+
if (input.multiline && file.size > MAX_MULTILINE_FILE_BYTES) {
|
|
504
|
+
budget.skip('max_multiline_file_bytes');
|
|
505
|
+
if (explicitFile)
|
|
506
|
+
throw new Error(`Failed to search ${file.displayFile}: Multiline search is limited to ${formatMebibytes(MAX_MULTILINE_FILE_BYTES)} per file to preserve exact matching`);
|
|
507
|
+
continue;
|
|
508
|
+
}
|
|
509
|
+
if (!budget.startFile(file.size)) {
|
|
510
|
+
budget.skippedFiles += 1;
|
|
511
|
+
if (explicitFile)
|
|
512
|
+
throw new Error(`Failed to search ${file.displayFile}: ${budgetError(budget.truncationReason).message}`);
|
|
513
|
+
break;
|
|
514
|
+
}
|
|
313
515
|
try {
|
|
314
516
|
if (input.multiline) {
|
|
315
|
-
const searchable = await
|
|
316
|
-
|
|
317
|
-
if (!expression.test(searchable))
|
|
517
|
+
const searchable = await readMultilineFile(file, budget);
|
|
518
|
+
if (!testLine(searchable, expression))
|
|
318
519
|
continue;
|
|
319
520
|
numFiles += 1;
|
|
320
521
|
numMatches += 1;
|
|
321
522
|
if (mode === 'files_with_matches')
|
|
322
|
-
appendEntry(state, file, offset, limit);
|
|
523
|
+
appendEntry(state, file.displayFile, offset, limit);
|
|
323
524
|
else if (mode === 'count')
|
|
324
|
-
appendEntry(state, `${file}:1`, offset, limit);
|
|
525
|
+
appendEntry(state, `${file.displayFile}:1`, offset, limit);
|
|
325
526
|
else
|
|
326
|
-
|
|
527
|
+
collectMultilineContent(file, searchable, expression, input, !explicitFile, state, offset, limit, budget);
|
|
528
|
+
if (!budget.scanComplete)
|
|
529
|
+
break;
|
|
327
530
|
continue;
|
|
328
531
|
}
|
|
329
532
|
if (mode === 'content') {
|
|
330
|
-
const fileMatches = await collectContent(file, expression, input, !explicitFile, state, offset, limit);
|
|
533
|
+
const fileMatches = await collectContent(file, expression, input, !explicitFile, state, offset, limit, budget);
|
|
331
534
|
if (fileMatches > 0) {
|
|
332
535
|
numFiles += 1;
|
|
333
536
|
numMatches += fileMatches;
|
|
334
537
|
}
|
|
335
|
-
continue;
|
|
336
538
|
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
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
|
+
}
|
|
546
|
+
}
|
|
343
547
|
}
|
|
344
548
|
catch (error) {
|
|
549
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
550
|
+
if (budget.truncationReason === undefined) {
|
|
551
|
+
if (/Invalid byte sequence|Encoding/.test(message))
|
|
552
|
+
budget.stop('decode_error');
|
|
553
|
+
else if (/more than .* matches/.test(message))
|
|
554
|
+
budget.stop('max_matches_per_file');
|
|
555
|
+
else
|
|
556
|
+
budget.stop('file_error');
|
|
557
|
+
}
|
|
345
558
|
if (explicitFile) {
|
|
346
|
-
|
|
347
|
-
throw new Error(`Failed to search ${file}: ${message}`, { cause: error });
|
|
559
|
+
throw new Error(`Failed to search ${file.displayFile}: ${budgetError(budget.truncationReason).message}: ${message}`, { cause: error });
|
|
348
560
|
}
|
|
561
|
+
budget.skippedFiles += 1;
|
|
349
562
|
}
|
|
563
|
+
if (!budget.scanComplete)
|
|
564
|
+
break;
|
|
350
565
|
}
|
|
351
566
|
if (state.count > offset + state.entries.length)
|
|
352
567
|
state.truncated = true;
|
|
353
568
|
if (requestedLimit === 0 && state.count >= MAX_GREP_ENTRIES)
|
|
354
569
|
state.truncated = true;
|
|
355
|
-
const
|
|
356
|
-
|
|
357
|
-
|
|
570
|
+
const outputTruncated = state.truncated;
|
|
571
|
+
const notices = [];
|
|
572
|
+
if (outputTruncated)
|
|
573
|
+
notices.push(`Showing results with pagination = limit: ${limit}, offset: ${offset}; output is capped for server stability`);
|
|
574
|
+
if (!budget.scanComplete)
|
|
575
|
+
notices.push(`Search incomplete: scanComplete=false; truncationReason=${budget.truncationReason ?? 'unknown'}`);
|
|
576
|
+
const suffix = notices.length === 0
|
|
577
|
+
? ''
|
|
578
|
+
: `${state.entries.length > 0 ? '\n\n' : ''}[${notices.join('] [')}]`;
|
|
579
|
+
const countsExact = scanMode === 'exact' && budget.scanComplete;
|
|
358
580
|
return {
|
|
359
581
|
content: [{ type: 'text', text: `${state.entries.join('\n')}${suffix}` }],
|
|
360
582
|
structuredContent: {
|
|
361
583
|
mode,
|
|
584
|
+
scanMode,
|
|
362
585
|
numFiles,
|
|
363
586
|
numMatches,
|
|
364
587
|
entries: state.entries,
|
|
588
|
+
scanComplete: budget.scanComplete,
|
|
589
|
+
countsExact,
|
|
590
|
+
outputTruncated,
|
|
591
|
+
...(budget.truncationReason === undefined ? {} : { truncationReason: budget.truncationReason }),
|
|
592
|
+
scannedFiles: budget.scannedFiles,
|
|
593
|
+
scannedBytes: budget.scannedBytes,
|
|
594
|
+
skippedFiles: budget.skippedFiles,
|
|
595
|
+
elapsedMs: budget.elapsedMs,
|
|
365
596
|
},
|
|
366
597
|
};
|
|
367
598
|
}
|
|
@@ -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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"}
|