@j0hanz/filesystem-context-mcp 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -29
- package/dist/__tests__/lib/errors.test.js +3 -23
- package/dist/__tests__/lib/errors.test.js.map +1 -1
- package/dist/__tests__/lib/file-operations.test.js +34 -0
- package/dist/__tests__/lib/file-operations.test.js.map +1 -1
- package/dist/__tests__/lib/path-validation.test.js +8 -0
- package/dist/__tests__/lib/path-validation.test.js.map +1 -1
- package/dist/__tests__/schemas/validators.test.js +101 -122
- package/dist/__tests__/schemas/validators.test.js.map +1 -1
- package/dist/__tests__/security/filesystem-boundary.test.js +1 -1
- package/dist/__tests__/security/filesystem-boundary.test.js.map +1 -1
- package/dist/config/types.d.ts +1 -85
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -2
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/instructions.md +1 -2
- package/dist/lib/constants.d.ts +3 -1
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +66 -258
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/errors.d.ts +25 -3
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +4 -94
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/file-operations/analyze-directory.d.ts +8 -0
- package/dist/lib/file-operations/analyze-directory.d.ts.map +1 -0
- package/dist/lib/file-operations/analyze-directory.js +117 -0
- package/dist/lib/file-operations/analyze-directory.js.map +1 -0
- package/dist/lib/file-operations/directory-items.d.ts +20 -0
- package/dist/lib/file-operations/directory-items.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-items.js +85 -0
- package/dist/lib/file-operations/directory-items.js.map +1 -0
- package/dist/lib/file-operations/directory-iteration.d.ts +17 -0
- package/dist/lib/file-operations/directory-iteration.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-iteration.js +55 -0
- package/dist/lib/file-operations/directory-iteration.js.map +1 -0
- package/dist/lib/file-operations/directory-tree.d.ts +9 -0
- package/dist/lib/file-operations/directory-tree.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-tree.js +175 -0
- package/dist/lib/file-operations/directory-tree.js.map +1 -0
- package/dist/lib/file-operations/file-info.d.ts +3 -0
- package/dist/lib/file-operations/file-info.d.ts.map +1 -0
- package/dist/lib/file-operations/file-info.js +56 -0
- package/dist/lib/file-operations/file-info.js.map +1 -0
- package/dist/lib/file-operations/list-directory.d.ts +10 -0
- package/dist/lib/file-operations/list-directory.d.ts.map +1 -0
- package/dist/lib/file-operations/list-directory.js +189 -0
- package/dist/lib/file-operations/list-directory.js.map +1 -0
- package/dist/lib/file-operations/read-media-file.d.ts +5 -0
- package/dist/lib/file-operations/read-media-file.d.ts.map +1 -0
- package/dist/lib/file-operations/read-media-file.js +31 -0
- package/dist/lib/file-operations/read-media-file.js.map +1 -0
- package/dist/lib/file-operations/read-multiple-files.d.ts +16 -0
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -0
- package/dist/lib/file-operations/read-multiple-files.js +98 -0
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -0
- package/dist/lib/file-operations/search-content.d.ts +16 -0
- package/dist/lib/file-operations/search-content.d.ts.map +1 -0
- package/dist/lib/file-operations/search-content.js +431 -0
- package/dist/lib/file-operations/search-content.js.map +1 -0
- package/dist/lib/file-operations/search-files.d.ts +9 -0
- package/dist/lib/file-operations/search-files.d.ts.map +1 -0
- package/dist/lib/file-operations/search-files.js +139 -0
- package/dist/lib/file-operations/search-files.js.map +1 -0
- package/dist/lib/file-operations/sorting.d.ts +12 -0
- package/dist/lib/file-operations/sorting.d.ts.map +1 -0
- package/dist/lib/file-operations/sorting.js +24 -0
- package/dist/lib/file-operations/sorting.js.map +1 -0
- package/dist/lib/file-operations.d.ts +9 -57
- package/dist/lib/file-operations.d.ts.map +1 -1
- package/dist/lib/file-operations.js +9 -773
- package/dist/lib/file-operations.js.map +1 -1
- package/dist/lib/fs-helpers/binary-detect.d.ts +3 -0
- package/dist/lib/fs-helpers/binary-detect.d.ts.map +1 -0
- package/dist/lib/fs-helpers/binary-detect.js +54 -0
- package/dist/lib/fs-helpers/binary-detect.js.map +1 -0
- package/dist/lib/fs-helpers/concurrency.d.ts +11 -0
- package/dist/lib/fs-helpers/concurrency.d.ts.map +1 -0
- package/dist/lib/fs-helpers/concurrency.js +95 -0
- package/dist/lib/fs-helpers/concurrency.js.map +1 -0
- package/dist/lib/fs-helpers/fs-utils.d.ts +5 -0
- package/dist/lib/fs-helpers/fs-utils.d.ts.map +1 -0
- package/dist/lib/fs-helpers/fs-utils.js +13 -0
- package/dist/lib/fs-helpers/fs-utils.js.map +1 -0
- package/dist/lib/fs-helpers/readers/head-file.d.ts +2 -0
- package/dist/lib/fs-helpers/readers/head-file.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/head-file.js +73 -0
- package/dist/lib/fs-helpers/readers/head-file.js.map +1 -0
- package/dist/lib/fs-helpers/readers/line-range.d.ts +7 -0
- package/dist/lib/fs-helpers/readers/line-range.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/line-range.js +46 -0
- package/dist/lib/fs-helpers/readers/line-range.js.map +1 -0
- package/dist/lib/fs-helpers/readers/read-file.d.ts +16 -0
- package/dist/lib/fs-helpers/readers/read-file.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/read-file.js +87 -0
- package/dist/lib/fs-helpers/readers/read-file.js.map +1 -0
- package/dist/lib/fs-helpers/readers/tail-file.d.ts +2 -0
- package/dist/lib/fs-helpers/readers/tail-file.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/tail-file.js +98 -0
- package/dist/lib/fs-helpers/readers/tail-file.js.map +1 -0
- package/dist/lib/fs-helpers/readers/utf8.d.ts +3 -0
- package/dist/lib/fs-helpers/readers/utf8.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/utf8.js +22 -0
- package/dist/lib/fs-helpers/readers/utf8.js.map +1 -0
- package/dist/lib/fs-helpers/readers.d.ts +4 -0
- package/dist/lib/fs-helpers/readers.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers.js +4 -0
- package/dist/lib/fs-helpers/readers.js.map +1 -0
- package/dist/lib/fs-helpers.d.ts +4 -25
- package/dist/lib/fs-helpers.d.ts.map +1 -1
- package/dist/lib/fs-helpers.js +4 -327
- package/dist/lib/fs-helpers.js.map +1 -1
- package/dist/lib/path-validation/allowed-directories.d.ts +9 -0
- package/dist/lib/path-validation/allowed-directories.d.ts.map +1 -0
- package/dist/lib/path-validation/allowed-directories.js +94 -0
- package/dist/lib/path-validation/allowed-directories.js.map +1 -0
- package/dist/lib/path-validation/errors.d.ts +5 -0
- package/dist/lib/path-validation/errors.d.ts.map +1 -0
- package/dist/lib/path-validation/errors.js +33 -0
- package/dist/lib/path-validation/errors.js.map +1 -0
- package/dist/lib/path-validation/roots.d.ts +3 -0
- package/dist/lib/path-validation/roots.d.ts.map +1 -0
- package/dist/lib/path-validation/roots.js +49 -0
- package/dist/lib/path-validation/roots.js.map +1 -0
- package/dist/lib/path-validation/validators.d.ts +9 -0
- package/dist/lib/path-validation/validators.d.ts.map +1 -0
- package/dist/lib/path-validation/validators.js +70 -0
- package/dist/lib/path-validation/validators.js.map +1 -0
- package/dist/lib/path-validation.d.ts +3 -7
- package/dist/lib/path-validation.d.ts.map +1 -1
- package/dist/lib/path-validation.js +3 -141
- package/dist/lib/path-validation.js.map +1 -1
- package/dist/schemas/input-helpers.d.ts +8 -0
- package/dist/schemas/input-helpers.d.ts.map +1 -0
- package/dist/schemas/input-helpers.js +44 -0
- package/dist/schemas/input-helpers.js.map +1 -0
- package/dist/schemas/inputs.d.ts +8 -5
- package/dist/schemas/inputs.d.ts.map +1 -1
- package/dist/schemas/inputs.js +41 -64
- package/dist/schemas/inputs.js.map +1 -1
- package/dist/schemas/output-helpers.d.ts +24 -0
- package/dist/schemas/output-helpers.d.ts.map +1 -0
- package/dist/schemas/output-helpers.js +13 -0
- package/dist/schemas/output-helpers.js.map +1 -0
- package/dist/schemas/outputs.d.ts +476 -42
- package/dist/schemas/outputs.d.ts.map +1 -1
- package/dist/schemas/outputs.js +26 -41
- package/dist/schemas/outputs.js.map +1 -1
- package/dist/server.d.ts +9 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +28 -42
- package/dist/server.js.map +1 -1
- package/dist/tools/analyze-directory.d.ts.map +1 -1
- package/dist/tools/analyze-directory.js +115 -53
- package/dist/tools/analyze-directory.js.map +1 -1
- package/dist/tools/directory-tree.d.ts.map +1 -1
- package/dist/tools/directory-tree.js +86 -49
- package/dist/tools/directory-tree.js.map +1 -1
- package/dist/tools/get-file-info.d.ts.map +1 -1
- package/dist/tools/get-file-info.js +71 -37
- package/dist/tools/get-file-info.js.map +1 -1
- package/dist/tools/list-allowed-dirs.d.ts.map +1 -1
- package/dist/tools/list-allowed-dirs.js +48 -35
- package/dist/tools/list-allowed-dirs.js.map +1 -1
- package/dist/tools/list-directory.d.ts.map +1 -1
- package/dist/tools/list-directory.js +129 -58
- package/dist/tools/list-directory.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +70 -56
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/read-media-file.d.ts.map +1 -1
- package/dist/tools/read-media-file.js +39 -41
- package/dist/tools/read-media-file.js.map +1 -1
- package/dist/tools/read-multiple-files.d.ts.map +1 -1
- package/dist/tools/read-multiple-files.js +58 -50
- package/dist/tools/read-multiple-files.js.map +1 -1
- package/dist/tools/search-content.d.ts.map +1 -1
- package/dist/tools/search-content.js +146 -89
- package/dist/tools/search-content.js.map +1 -1
- package/dist/tools/search-files.d.ts.map +1 -1
- package/dist/tools/search-files.js +121 -50
- package/dist/tools/search-files.js.map +1 -1
- package/dist/tools/tool-response.d.ts +9 -0
- package/dist/tools/tool-response.d.ts.map +1 -0
- package/dist/tools/tool-response.js +7 -0
- package/dist/tools/tool-response.js.map +1 -0
- package/package.json +2 -1
- package/dist/__tests__/errors.test.d.ts +0 -2
- package/dist/__tests__/errors.test.d.ts.map +0 -1
- package/dist/__tests__/errors.test.js +0 -88
- package/dist/__tests__/errors.test.js.map +0 -1
- package/dist/__tests__/file-operations.test.d.ts +0 -2
- package/dist/__tests__/file-operations.test.d.ts.map +0 -1
- package/dist/__tests__/file-operations.test.js +0 -230
- package/dist/__tests__/file-operations.test.js.map +0 -1
- package/dist/__tests__/lib/formatters.test.d.ts +0 -2
- package/dist/__tests__/lib/formatters.test.d.ts.map +0 -1
- package/dist/__tests__/lib/formatters.test.js +0 -248
- package/dist/__tests__/lib/formatters.test.js.map +0 -1
- package/dist/__tests__/lib/image-parsing.test.d.ts +0 -2
- package/dist/__tests__/lib/image-parsing.test.d.ts.map +0 -1
- package/dist/__tests__/lib/image-parsing.test.js +0 -262
- package/dist/__tests__/lib/image-parsing.test.js.map +0 -1
- package/dist/__tests__/path-validation.test.d.ts +0 -2
- package/dist/__tests__/path-validation.test.d.ts.map +0 -1
- package/dist/__tests__/path-validation.test.js +0 -92
- package/dist/__tests__/path-validation.test.js.map +0 -1
- package/dist/lib/directory-helpers.d.ts +0 -4
- package/dist/lib/directory-helpers.d.ts.map +0 -1
- package/dist/lib/directory-helpers.js +0 -36
- package/dist/lib/directory-helpers.js.map +0 -1
- package/dist/lib/formatters.d.ts +0 -10
- package/dist/lib/formatters.d.ts.map +0 -1
- package/dist/lib/formatters.js +0 -202
- package/dist/lib/formatters.js.map +0 -1
- package/dist/lib/image-parsing.d.ts +0 -4
- package/dist/lib/image-parsing.d.ts.map +0 -1
- package/dist/lib/image-parsing.js +0 -124
- package/dist/lib/image-parsing.js.map +0 -1
- package/dist/lib/mcp-logger.d.ts +0 -11
- package/dist/lib/mcp-logger.d.ts.map +0 -1
- package/dist/lib/mcp-logger.js +0 -49
- package/dist/lib/mcp-logger.js.map +0 -1
- package/dist/lib/roots-utils.d.ts +0 -7
- package/dist/lib/roots-utils.d.ts.map +0 -1
- package/dist/lib/roots-utils.js +0 -39
- package/dist/lib/roots-utils.js.map +0 -1
- package/dist/lib/search-helpers.d.ts +0 -16
- package/dist/lib/search-helpers.d.ts.map +0 -1
- package/dist/lib/search-helpers.js +0 -169
- package/dist/lib/search-helpers.js.map +0 -1
- package/dist/lib/sorting.d.ts +0 -12
- package/dist/lib/sorting.d.ts.map +0 -1
- package/dist/lib/sorting.js +0 -41
- package/dist/lib/sorting.js.map +0 -1
- package/dist/lib/types.d.ts +0 -6
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -2
- package/dist/lib/types.js.map +0 -1
- package/dist/prompts/analyze-codebase.d.ts +0 -3
- package/dist/prompts/analyze-codebase.d.ts.map +0 -1
- package/dist/prompts/analyze-codebase.js +0 -144
- package/dist/prompts/analyze-codebase.js.map +0 -1
- package/dist/prompts/filesystem-query.d.ts +0 -3
- package/dist/prompts/filesystem-query.d.ts.map +0 -1
- package/dist/prompts/filesystem-query.js +0 -168
- package/dist/prompts/filesystem-query.js.map +0 -1
- package/dist/prompts/find-duplicates.d.ts +0 -3
- package/dist/prompts/find-duplicates.d.ts.map +0 -1
- package/dist/prompts/find-duplicates.js +0 -77
- package/dist/prompts/find-duplicates.js.map +0 -1
- package/dist/prompts/index.d.ts +0 -3
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js +0 -13
- package/dist/prompts/index.js.map +0 -1
- package/dist/prompts/project-overview.d.ts +0 -3
- package/dist/prompts/project-overview.d.ts.map +0 -1
- package/dist/prompts/project-overview.js +0 -122
- package/dist/prompts/project-overview.js.map +0 -1
- package/dist/prompts/search-and-replace.d.ts +0 -3
- package/dist/prompts/search-and-replace.d.ts.map +0 -1
- package/dist/prompts/search-and-replace.js +0 -130
- package/dist/prompts/search-and-replace.js.map +0 -1
- package/dist/prompts/shared.d.ts +0 -11
- package/dist/prompts/shared.d.ts.map +0 -1
- package/dist/prompts/shared.js +0 -32
- package/dist/prompts/shared.js.map +0 -1
- package/dist/resources/index.d.ts +0 -3
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js +0 -54
- package/dist/resources/index.js.map +0 -1
- package/dist/schemas/validators.d.ts +0 -12
- package/dist/schemas/validators.d.ts.map +0 -1
- package/dist/schemas/validators.js +0 -35
- package/dist/schemas/validators.js.map +0 -1
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -2
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/response-helpers.d.ts +0 -22
- package/dist/utils/response-helpers.d.ts.map +0 -1
- package/dist/utils/response-helpers.js +0 -24
- package/dist/utils/response-helpers.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-operations.js","sourceRoot":"","sources":["../../src/lib/file-operations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-operations.js","sourceRoot":"","sources":["../../src/lib/file-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-detect.d.ts","sourceRoot":"","sources":["../../../src/lib/fs-helpers/binary-detect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AA2DvC,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,EAAE,CAAC,UAAU,GAC7B,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { BINARY_CHECK_BUFFER_SIZE, KNOWN_BINARY_EXTENSIONS, } from '../constants.js';
|
|
4
|
+
import { validateExistingPath } from '../path-validation.js';
|
|
5
|
+
function hasKnownBinaryExtension(filePath) {
|
|
6
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
7
|
+
return KNOWN_BINARY_EXTENSIONS.has(ext);
|
|
8
|
+
}
|
|
9
|
+
async function resolveHandle(filePath, existingHandle) {
|
|
10
|
+
if (existingHandle) {
|
|
11
|
+
return { handle: existingHandle, shouldClose: false };
|
|
12
|
+
}
|
|
13
|
+
const effectivePath = await validateExistingPath(filePath);
|
|
14
|
+
return { handle: await fs.open(effectivePath, 'r'), shouldClose: true };
|
|
15
|
+
}
|
|
16
|
+
async function readProbe(handle) {
|
|
17
|
+
const buffer = Buffer.allocUnsafe(BINARY_CHECK_BUFFER_SIZE);
|
|
18
|
+
const { bytesRead } = await handle.read(buffer, 0, BINARY_CHECK_BUFFER_SIZE, 0);
|
|
19
|
+
if (bytesRead === 0) {
|
|
20
|
+
return Buffer.alloc(0);
|
|
21
|
+
}
|
|
22
|
+
return buffer.subarray(0, bytesRead);
|
|
23
|
+
}
|
|
24
|
+
function hasUtf8Bom(slice) {
|
|
25
|
+
return (slice.length >= 3 &&
|
|
26
|
+
slice[0] === 0xef &&
|
|
27
|
+
slice[1] === 0xbb &&
|
|
28
|
+
slice[2] === 0xbf);
|
|
29
|
+
}
|
|
30
|
+
function hasUtf16Bom(slice) {
|
|
31
|
+
return (slice.length >= 2 &&
|
|
32
|
+
((slice[0] === 0xff && slice[1] === 0xfe) ||
|
|
33
|
+
(slice[0] === 0xfe && slice[1] === 0xff)));
|
|
34
|
+
}
|
|
35
|
+
export async function isProbablyBinary(filePath, existingHandle) {
|
|
36
|
+
if (hasKnownBinaryExtension(filePath)) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
const { handle, shouldClose } = await resolveHandle(filePath, existingHandle);
|
|
40
|
+
try {
|
|
41
|
+
const slice = await readProbe(handle);
|
|
42
|
+
if (slice.length === 0)
|
|
43
|
+
return false;
|
|
44
|
+
if (hasUtf8Bom(slice) || hasUtf16Bom(slice))
|
|
45
|
+
return false;
|
|
46
|
+
return slice.includes(0);
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
if (shouldClose) {
|
|
50
|
+
await handle.close().catch(() => { });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=binary-detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-detect.js","sourceRoot":"","sources":["../../../src/lib/fs-helpers/binary-detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface ParallelResult<R> {
|
|
2
|
+
results: R[];
|
|
3
|
+
errors: {
|
|
4
|
+
index: number;
|
|
5
|
+
error: Error;
|
|
6
|
+
}[];
|
|
7
|
+
}
|
|
8
|
+
export declare function runWorkQueue<T>(initialItems: T[], worker: (item: T, enqueue: (item: T) => void) => Promise<void>, concurrency: number, signal?: AbortSignal): Promise<void>;
|
|
9
|
+
export declare function processInParallel<T, R>(items: T[], processor: (item: T) => Promise<R>, concurrency?: number): Promise<ParallelResult<R>>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=concurrency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../../src/lib/fs-helpers/concurrency.ts"],"names":[],"mappings":"AAEA,UAAU,cAAc,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAAE,CAAC;CAC3C;AAkFD,wBAAsB,YAAY,CAAC,CAAC,EAClC,YAAY,EAAE,CAAC,EAAE,EACjB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EAC9D,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAC1C,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,WAAW,GAAE,MAA6B,GACzC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAwB5B"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { PARALLEL_CONCURRENCY } from '../constants.js';
|
|
2
|
+
function createDonePromise(state) {
|
|
3
|
+
return new Promise((resolve) => {
|
|
4
|
+
state.doneResolve = resolve;
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
function resolveIfDone(state) {
|
|
8
|
+
if (state.inFlight !== 0)
|
|
9
|
+
return;
|
|
10
|
+
if (state.queue.length === 0 || state.aborted) {
|
|
11
|
+
state.doneResolve?.();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function createAbortHandler(state) {
|
|
15
|
+
return () => {
|
|
16
|
+
state.aborted = true;
|
|
17
|
+
resolveIfDone(state);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function enqueueItem(state, item) {
|
|
21
|
+
if (state.aborted)
|
|
22
|
+
return;
|
|
23
|
+
state.queue.push(item);
|
|
24
|
+
}
|
|
25
|
+
function handleWorkerCompletion(state) {
|
|
26
|
+
state.inFlight--;
|
|
27
|
+
resolveIfDone(state);
|
|
28
|
+
}
|
|
29
|
+
function startWorker(state, item, worker, maybeStartNext) {
|
|
30
|
+
state.inFlight++;
|
|
31
|
+
void worker(item, (next) => {
|
|
32
|
+
enqueueItem(state, next);
|
|
33
|
+
maybeStartNext();
|
|
34
|
+
})
|
|
35
|
+
.catch((error) => {
|
|
36
|
+
console.error('[runWorkQueue] Worker error:', error instanceof Error ? error.message : String(error));
|
|
37
|
+
})
|
|
38
|
+
.finally(() => {
|
|
39
|
+
handleWorkerCompletion(state);
|
|
40
|
+
if (!state.aborted) {
|
|
41
|
+
maybeStartNext();
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function createQueueProcessor(state, worker, concurrency) {
|
|
46
|
+
const maybeStartNext = () => {
|
|
47
|
+
if (state.aborted)
|
|
48
|
+
return;
|
|
49
|
+
while (state.inFlight < concurrency && state.queue.length > 0) {
|
|
50
|
+
const next = state.queue.shift();
|
|
51
|
+
if (next === undefined)
|
|
52
|
+
break;
|
|
53
|
+
startWorker(state, next, worker, maybeStartNext);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
return maybeStartNext;
|
|
57
|
+
}
|
|
58
|
+
export async function runWorkQueue(initialItems, worker, concurrency, signal) {
|
|
59
|
+
const state = {
|
|
60
|
+
queue: [...initialItems],
|
|
61
|
+
inFlight: 0,
|
|
62
|
+
aborted: false,
|
|
63
|
+
};
|
|
64
|
+
const donePromise = createDonePromise(state);
|
|
65
|
+
const onAbort = createAbortHandler(state);
|
|
66
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
67
|
+
const maybeStartNext = createQueueProcessor(state, worker, concurrency);
|
|
68
|
+
maybeStartNext();
|
|
69
|
+
resolveIfDone(state);
|
|
70
|
+
try {
|
|
71
|
+
await donePromise;
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
signal?.removeEventListener('abort', onAbort);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export async function processInParallel(items, processor, concurrency = PARALLEL_CONCURRENCY) {
|
|
78
|
+
const results = [];
|
|
79
|
+
const errors = [];
|
|
80
|
+
if (items.length === 0) {
|
|
81
|
+
return { results, errors };
|
|
82
|
+
}
|
|
83
|
+
await runWorkQueue(items.map((item, index) => ({ item, index })), async ({ item, index }) => {
|
|
84
|
+
try {
|
|
85
|
+
const result = await processor(item);
|
|
86
|
+
results.push(result);
|
|
87
|
+
}
|
|
88
|
+
catch (reason) {
|
|
89
|
+
const error = reason instanceof Error ? reason : new Error(String(reason));
|
|
90
|
+
errors.push({ index, error });
|
|
91
|
+
}
|
|
92
|
+
}, concurrency);
|
|
93
|
+
return { results, errors };
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=concurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../../src/lib/fs-helpers/concurrency.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/fs-helpers/fs-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAKlD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function getFileType(stats) {
|
|
2
|
+
if (stats.isFile())
|
|
3
|
+
return 'file';
|
|
4
|
+
if (stats.isDirectory())
|
|
5
|
+
return 'directory';
|
|
6
|
+
if (stats.isSymbolicLink())
|
|
7
|
+
return 'symlink';
|
|
8
|
+
return 'other';
|
|
9
|
+
}
|
|
10
|
+
export function isHidden(name) {
|
|
11
|
+
return name.startsWith('.');
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=fs-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../../../src/lib/fs-helpers/fs-utils.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,IAAI,KAAK,CAAC,MAAM,EAAE;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,CAAC,WAAW,EAAE;QAAE,OAAO,WAAW,CAAC;IAC5C,IAAI,KAAK,CAAC,cAAc,EAAE;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"head-file.d.ts","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/head-file.ts"],"names":[],"mappings":"AAmFA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,cAAwB,EAClC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAWjB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import { StringDecoder } from 'node:string_decoder';
|
|
3
|
+
import { validateExistingPath } from '../../path-validation.js';
|
|
4
|
+
const CHUNK_SIZE = 64 * 1024;
|
|
5
|
+
function initHeadState(encoding) {
|
|
6
|
+
return {
|
|
7
|
+
lines: [],
|
|
8
|
+
bytesRead: 0,
|
|
9
|
+
buffer: '',
|
|
10
|
+
decoder: new StringDecoder(encoding),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function maxChunkSize(maxBytesRead, bytesRead) {
|
|
14
|
+
if (maxBytesRead === undefined)
|
|
15
|
+
return CHUNK_SIZE;
|
|
16
|
+
return Math.min(CHUNK_SIZE, maxBytesRead - bytesRead);
|
|
17
|
+
}
|
|
18
|
+
function appendBufferLines(state, numLines) {
|
|
19
|
+
const normalizedBuffer = state.buffer.replace(/\r\n/g, '\n');
|
|
20
|
+
const newLineIndex = normalizedBuffer.lastIndexOf('\n');
|
|
21
|
+
if (newLineIndex === -1) {
|
|
22
|
+
state.buffer = normalizedBuffer;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const completeLines = normalizedBuffer.substring(0, newLineIndex).split('\n');
|
|
26
|
+
state.buffer = normalizedBuffer.substring(newLineIndex + 1);
|
|
27
|
+
for (const line of completeLines) {
|
|
28
|
+
state.lines.push(line);
|
|
29
|
+
if (state.lines.length >= numLines)
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function flushRemainingBuffer(state, numLines) {
|
|
34
|
+
if (state.lines.length >= numLines)
|
|
35
|
+
return;
|
|
36
|
+
if (state.buffer.length === 0)
|
|
37
|
+
return;
|
|
38
|
+
const remainingLines = state.buffer.replace(/\r\n/g, '\n').split('\n');
|
|
39
|
+
for (const line of remainingLines) {
|
|
40
|
+
state.lines.push(line);
|
|
41
|
+
if (state.lines.length >= numLines)
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async function readHeadChunks(handle, state, numLines, maxBytesRead) {
|
|
46
|
+
const chunk = Buffer.alloc(CHUNK_SIZE);
|
|
47
|
+
while (state.lines.length < numLines) {
|
|
48
|
+
if (maxBytesRead !== undefined && state.bytesRead >= maxBytesRead)
|
|
49
|
+
break;
|
|
50
|
+
const maxChunk = maxChunkSize(maxBytesRead, state.bytesRead);
|
|
51
|
+
const result = await handle.read(chunk, 0, maxChunk, state.bytesRead);
|
|
52
|
+
if (result.bytesRead === 0)
|
|
53
|
+
break;
|
|
54
|
+
state.bytesRead += result.bytesRead;
|
|
55
|
+
state.buffer += state.decoder.write(chunk.subarray(0, result.bytesRead));
|
|
56
|
+
appendBufferLines(state, numLines);
|
|
57
|
+
}
|
|
58
|
+
state.buffer += state.decoder.end();
|
|
59
|
+
flushRemainingBuffer(state, numLines);
|
|
60
|
+
}
|
|
61
|
+
export async function headFile(filePath, numLines, encoding = 'utf-8', maxBytesRead) {
|
|
62
|
+
const validPath = await validateExistingPath(filePath);
|
|
63
|
+
const handle = await fs.open(validPath, 'r');
|
|
64
|
+
try {
|
|
65
|
+
const state = initHeadState(encoding);
|
|
66
|
+
await readHeadChunks(handle, state, numLines, maxBytesRead);
|
|
67
|
+
return state.lines.slice(0, numLines).join('\n');
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
await handle.close().catch(() => { });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=head-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"head-file.js","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/head-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function readLineRange(filePath: string, startLine: number, endLine: number, encoding: BufferEncoding, maxBytesRead?: number): Promise<{
|
|
2
|
+
content: string;
|
|
3
|
+
linesRead: number;
|
|
4
|
+
totalLinesScanned: number;
|
|
5
|
+
hasMoreLines: boolean;
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=line-range.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-range.d.ts","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/line-range.ts"],"names":[],"mappings":"AAgCA,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC,CAkCD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as readline from 'node:readline';
|
|
2
|
+
import { createReadStream } from 'node:fs';
|
|
3
|
+
function initLineRangeState() {
|
|
4
|
+
return { lines: [], lineNumber: 0, hasMoreLines: false };
|
|
5
|
+
}
|
|
6
|
+
function shouldStopLineRange(state, endLine, maxBytesRead, bytesRead) {
|
|
7
|
+
if (state.lineNumber > endLine) {
|
|
8
|
+
state.hasMoreLines = true;
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
if (maxBytesRead !== undefined && bytesRead > maxBytesRead) {
|
|
12
|
+
state.hasMoreLines = true;
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
export async function readLineRange(filePath, startLine, endLine, encoding, maxBytesRead) {
|
|
18
|
+
const fileStream = createReadStream(filePath, { encoding });
|
|
19
|
+
const rl = readline.createInterface({
|
|
20
|
+
input: fileStream,
|
|
21
|
+
crlfDelay: Infinity,
|
|
22
|
+
});
|
|
23
|
+
const state = initLineRangeState();
|
|
24
|
+
try {
|
|
25
|
+
for await (const line of rl) {
|
|
26
|
+
state.lineNumber++;
|
|
27
|
+
if (state.lineNumber >= startLine && state.lineNumber <= endLine) {
|
|
28
|
+
state.lines.push(line);
|
|
29
|
+
}
|
|
30
|
+
if (shouldStopLineRange(state, endLine, maxBytesRead, fileStream.bytesRead)) {
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
content: state.lines.join('\n'),
|
|
36
|
+
linesRead: state.lines.length,
|
|
37
|
+
totalLinesScanned: state.lineNumber,
|
|
38
|
+
hasMoreLines: state.hasMoreLines,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
rl.close();
|
|
43
|
+
fileStream.destroy();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=line-range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-range.js","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/line-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAQ3C,SAAS,kBAAkB;IACzB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAqB,EACrB,OAAe,EACf,YAAgC,EAChC,SAAiB;IAEjB,IAAI,KAAK,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC;QAC/B,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,IAAI,SAAS,GAAG,YAAY,EAAE,CAAC;QAC3D,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,SAAiB,EACjB,OAAe,EACf,QAAwB,EACxB,YAAqB;IAOrB,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YAC5B,KAAK,CAAC,UAAU,EAAE,CAAC;YAEnB,IAAI,KAAK,CAAC,UAAU,IAAI,SAAS,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC;gBACjE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAED,IACE,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,EACvE,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;YAC7B,iBAAiB,EAAE,KAAK,CAAC,UAAU;YACnC,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,UAAU,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare function readFile(filePath: string, options?: {
|
|
2
|
+
encoding?: BufferEncoding;
|
|
3
|
+
maxSize?: number;
|
|
4
|
+
lineRange?: {
|
|
5
|
+
start: number;
|
|
6
|
+
end: number;
|
|
7
|
+
};
|
|
8
|
+
head?: number;
|
|
9
|
+
tail?: number;
|
|
10
|
+
}): Promise<{
|
|
11
|
+
path: string;
|
|
12
|
+
content: string;
|
|
13
|
+
truncated: boolean;
|
|
14
|
+
totalLines?: number;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=read-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-file.d.ts","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/read-file.ts"],"names":[],"mappings":"AA6IA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACV,GACL,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAkDD"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import { MAX_TEXT_FILE_SIZE } from '../../constants.js';
|
|
3
|
+
import { ErrorCode, McpError } from '../../errors.js';
|
|
4
|
+
import { validateExistingPath } from '../../path-validation.js';
|
|
5
|
+
import { headFile } from './head-file.js';
|
|
6
|
+
import { readLineRange } from './line-range.js';
|
|
7
|
+
import { tailFile } from './tail-file.js';
|
|
8
|
+
function normalizeOptions(options) {
|
|
9
|
+
return {
|
|
10
|
+
encoding: options.encoding ?? 'utf-8',
|
|
11
|
+
maxSize: options.maxSize ?? MAX_TEXT_FILE_SIZE,
|
|
12
|
+
lineRange: options.lineRange,
|
|
13
|
+
head: options.head,
|
|
14
|
+
tail: options.tail,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function assertIsFile(stats, filePath) {
|
|
18
|
+
if (stats.isFile())
|
|
19
|
+
return;
|
|
20
|
+
throw new McpError(ErrorCode.E_NOT_FILE, `Not a file: ${filePath}`, filePath);
|
|
21
|
+
}
|
|
22
|
+
function assertSingleMode(options, filePath) {
|
|
23
|
+
const optionsCount = [options.lineRange, options.head, options.tail].filter(Boolean).length;
|
|
24
|
+
if (optionsCount <= 1)
|
|
25
|
+
return;
|
|
26
|
+
throw new McpError(ErrorCode.E_INVALID_INPUT, 'Cannot specify multiple of lineRange, head, or tail simultaneously', filePath);
|
|
27
|
+
}
|
|
28
|
+
function validateLineRange(lineRange, filePath) {
|
|
29
|
+
if (lineRange.start < 1) {
|
|
30
|
+
throw new McpError(ErrorCode.E_INVALID_INPUT, `Invalid lineRange: start must be at least 1 (got ${lineRange.start})`, filePath);
|
|
31
|
+
}
|
|
32
|
+
if (lineRange.end < lineRange.start) {
|
|
33
|
+
throw new McpError(ErrorCode.E_INVALID_INPUT, `Invalid lineRange: end (${lineRange.end}) must be >= start (${lineRange.start})`, filePath);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function readLineRangeContent(filePath, options) {
|
|
37
|
+
const lineRange = options.lineRange;
|
|
38
|
+
const maxLineRange = 100000;
|
|
39
|
+
const requestedLines = lineRange.end - lineRange.start + 1;
|
|
40
|
+
if (requestedLines > maxLineRange) {
|
|
41
|
+
throw new McpError(ErrorCode.E_INVALID_INPUT, `Invalid lineRange: range too large (max ${maxLineRange} lines)`, filePath, { requestedLines, maxLineRange });
|
|
42
|
+
}
|
|
43
|
+
const result = await readLineRange(filePath, lineRange.start, lineRange.end, options.encoding, options.maxSize);
|
|
44
|
+
const expectedLines = lineRange.end - lineRange.start + 1;
|
|
45
|
+
const isTruncated = lineRange.start > 1 ||
|
|
46
|
+
result.linesRead < expectedLines ||
|
|
47
|
+
result.hasMoreLines;
|
|
48
|
+
return { content: result.content, truncated: isTruncated };
|
|
49
|
+
}
|
|
50
|
+
async function readHeadContent(filePath, head, options) {
|
|
51
|
+
const content = await headFile(filePath, head, options.encoding, options.maxSize);
|
|
52
|
+
return { content, truncated: true };
|
|
53
|
+
}
|
|
54
|
+
async function readTailContent(filePath, tail, options) {
|
|
55
|
+
const content = await tailFile(filePath, tail, options.encoding, options.maxSize);
|
|
56
|
+
return { content, truncated: true };
|
|
57
|
+
}
|
|
58
|
+
async function readFullContent(filePath, encoding) {
|
|
59
|
+
const content = await fs.readFile(filePath, { encoding });
|
|
60
|
+
return { content, totalLines: content.split('\n').length };
|
|
61
|
+
}
|
|
62
|
+
export async function readFile(filePath, options = {}) {
|
|
63
|
+
const normalized = normalizeOptions(options);
|
|
64
|
+
const validPath = await validateExistingPath(filePath);
|
|
65
|
+
const stats = await fs.stat(validPath);
|
|
66
|
+
assertIsFile(stats, filePath);
|
|
67
|
+
assertSingleMode(normalized, filePath);
|
|
68
|
+
if (normalized.lineRange) {
|
|
69
|
+
validateLineRange(normalized.lineRange, filePath);
|
|
70
|
+
const { content, truncated } = await readLineRangeContent(validPath, normalized);
|
|
71
|
+
return { path: validPath, content, truncated, totalLines: undefined };
|
|
72
|
+
}
|
|
73
|
+
if (normalized.tail !== undefined) {
|
|
74
|
+
const { content, truncated } = await readTailContent(validPath, normalized.tail, normalized);
|
|
75
|
+
return { path: validPath, content, truncated, totalLines: undefined };
|
|
76
|
+
}
|
|
77
|
+
if (normalized.head !== undefined) {
|
|
78
|
+
const { content, truncated } = await readHeadContent(validPath, normalized.head, normalized);
|
|
79
|
+
return { path: validPath, content, truncated, totalLines: undefined };
|
|
80
|
+
}
|
|
81
|
+
if (stats.size > normalized.maxSize) {
|
|
82
|
+
throw new McpError(ErrorCode.E_TOO_LARGE, `File too large: ${stats.size} bytes (max: ${normalized.maxSize} bytes). Use head, tail, or lineRange for partial reads.`, filePath, { size: stats.size, maxSize: normalized.maxSize });
|
|
83
|
+
}
|
|
84
|
+
const { content, totalLines } = await readFullContent(validPath, normalized.encoding);
|
|
85
|
+
return { path: validPath, content, truncated: false, totalLines };
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=read-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-file.js","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/read-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail-file.d.ts","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/tail-file.ts"],"names":[],"mappings":"AAiJA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,cAAwB,EAClC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
|