@j0hanz/filesystem-context-mcp 1.2.6 → 1.2.8
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/__tests__/lib/errors-classify.test.d.ts +2 -0
- package/dist/__tests__/lib/errors-classify.test.d.ts.map +1 -0
- package/dist/__tests__/lib/errors-classify.test.js +53 -0
- package/dist/__tests__/lib/errors-classify.test.js.map +1 -0
- package/dist/__tests__/lib/errors-detailed.test.d.ts +2 -0
- package/dist/__tests__/lib/errors-detailed.test.d.ts.map +1 -0
- package/dist/__tests__/lib/errors-detailed.test.js +38 -0
- package/dist/__tests__/lib/errors-detailed.test.js.map +1 -0
- package/dist/__tests__/lib/errors-is-node-error.test.d.ts +2 -0
- package/dist/__tests__/lib/errors-is-node-error.test.d.ts.map +1 -0
- package/dist/__tests__/lib/errors-is-node-error.test.js +21 -0
- package/dist/__tests__/lib/errors-is-node-error.test.js.map +1 -0
- package/dist/__tests__/lib/errors-mcp-error.test.d.ts +2 -0
- package/dist/__tests__/lib/errors-mcp-error.test.d.ts.map +1 -0
- package/dist/__tests__/lib/errors-mcp-error.test.js +29 -0
- package/dist/__tests__/lib/errors-mcp-error.test.js.map +1 -0
- package/dist/__tests__/lib/errors-node-map.test.d.ts +2 -0
- package/dist/__tests__/lib/errors-node-map.test.d.ts.map +1 -0
- package/dist/__tests__/lib/errors-node-map.test.js +16 -0
- package/dist/__tests__/lib/errors-node-map.test.js.map +1 -0
- package/dist/__tests__/lib/errors-suggestion.test.d.ts +2 -0
- package/dist/__tests__/lib/errors-suggestion.test.d.ts.map +1 -0
- package/dist/__tests__/lib/errors-suggestion.test.js +11 -0
- package/dist/__tests__/lib/errors-suggestion.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/analyze-directory-edge-cases.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/analyze-directory-edge-cases.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/analyze-directory-edge-cases.test.js +15 -0
- package/dist/__tests__/lib/file-operations/analyze-directory-edge-cases.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/analyze-directory.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/analyze-directory.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/analyze-directory.test.js +28 -0
- package/dist/__tests__/lib/file-operations/analyze-directory.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/directory-tree-edge-cases.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/directory-tree-edge-cases.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/directory-tree-edge-cases.test.js +29 -0
- package/dist/__tests__/lib/file-operations/directory-tree-edge-cases.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/directory-tree.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/directory-tree.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/directory-tree.test.js +75 -0
- package/dist/__tests__/lib/file-operations/directory-tree.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/get-file-info.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/get-file-info.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/get-file-info.test.js +17 -0
- package/dist/__tests__/lib/file-operations/get-file-info.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/list-directory-edge-cases.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/list-directory-edge-cases.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/list-directory-edge-cases.test.js +21 -0
- package/dist/__tests__/lib/file-operations/list-directory-edge-cases.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/list-directory.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/list-directory.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/list-directory.test.js +31 -0
- package/dist/__tests__/lib/file-operations/list-directory.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/read-media-file.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/read-media-file.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/read-media-file.test.js +21 -0
- package/dist/__tests__/lib/file-operations/read-media-file.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.js +19 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files.test.js +39 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.js +57 -0
- package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/search-content.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/search-content.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/search-content.test.js +73 -0
- package/dist/__tests__/lib/file-operations/search-content.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/search-files-edge-cases.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/search-files-edge-cases.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/search-files-edge-cases.test.js +13 -0
- package/dist/__tests__/lib/file-operations/search-files-edge-cases.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/search-files.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/search-files.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/search-files.test.js +31 -0
- package/dist/__tests__/lib/file-operations/search-files.test.js.map +1 -0
- package/dist/__tests__/lib/fixtures/file-ops-fixture.d.ts +7 -0
- package/dist/__tests__/lib/fixtures/file-ops-fixture.d.ts.map +1 -0
- package/dist/__tests__/lib/fixtures/file-ops-fixture.js +87 -0
- package/dist/__tests__/lib/fixtures/file-ops-fixture.js.map +1 -0
- package/dist/__tests__/lib/fixtures/file-ops-hooks.d.ts +2 -0
- package/dist/__tests__/lib/fixtures/file-ops-hooks.d.ts.map +1 -0
- package/dist/__tests__/lib/fixtures/file-ops-hooks.js +13 -0
- package/dist/__tests__/lib/fixtures/file-ops-hooks.js.map +1 -0
- package/dist/__tests__/lib/fs-helpers/file-type.test.d.ts +2 -0
- package/dist/__tests__/lib/fs-helpers/file-type.test.d.ts.map +1 -0
- package/dist/__tests__/lib/fs-helpers/file-type.test.js +15 -0
- package/dist/__tests__/lib/fs-helpers/file-type.test.js.map +1 -0
- package/dist/__tests__/lib/fs-helpers/head-file-edge-cases.test.d.ts +2 -0
- package/dist/__tests__/lib/fs-helpers/head-file-edge-cases.test.d.ts.map +1 -0
- package/dist/__tests__/lib/fs-helpers/head-file-edge-cases.test.js +19 -0
- package/dist/__tests__/lib/fs-helpers/head-file-edge-cases.test.js.map +1 -0
- package/dist/__tests__/lib/fs-helpers/head-file.test.d.ts +2 -0
- package/dist/__tests__/lib/fs-helpers/head-file.test.d.ts.map +1 -0
- package/dist/__tests__/lib/fs-helpers/head-file.test.js +12 -0
- package/dist/__tests__/lib/fs-helpers/head-file.test.js.map +1 -0
- package/dist/__tests__/lib/fs-helpers/is-hidden.test.d.ts +2 -0
- package/dist/__tests__/lib/fs-helpers/is-hidden.test.d.ts.map +1 -0
- package/dist/__tests__/lib/fs-helpers/is-hidden.test.js +7 -0
- package/dist/__tests__/lib/fs-helpers/is-hidden.test.js.map +1 -0
- package/dist/__tests__/lib/fs-helpers/is-probably-binary.test.d.ts +2 -0
- package/dist/__tests__/lib/fs-helpers/is-probably-binary.test.d.ts.map +1 -0
- package/dist/__tests__/lib/fs-helpers/is-probably-binary.test.js +33 -0
- package/dist/__tests__/lib/fs-helpers/is-probably-binary.test.js.map +1 -0
- package/dist/__tests__/lib/fs-helpers/read-file-edge-cases.test.d.ts +2 -0
- package/dist/__tests__/lib/fs-helpers/read-file-edge-cases.test.d.ts.map +1 -0
- package/dist/__tests__/lib/fs-helpers/read-file-edge-cases.test.js +41 -0
- package/dist/__tests__/lib/fs-helpers/read-file-edge-cases.test.js.map +1 -0
- package/dist/__tests__/lib/fs-helpers/read-file.test.d.ts +2 -0
- package/dist/__tests__/lib/fs-helpers/read-file.test.d.ts.map +1 -0
- package/dist/__tests__/lib/fs-helpers/read-file.test.js +21 -0
- package/dist/__tests__/lib/fs-helpers/read-file.test.js.map +1 -0
- package/dist/__tests__/lib/fs-helpers/tail-file-edge-cases.test.d.ts +2 -0
- package/dist/__tests__/lib/fs-helpers/tail-file-edge-cases.test.d.ts.map +1 -0
- package/dist/__tests__/lib/fs-helpers/tail-file-edge-cases.test.js +26 -0
- package/dist/__tests__/lib/fs-helpers/tail-file-edge-cases.test.js.map +1 -0
- package/dist/__tests__/lib/fs-helpers/tail-file.test.d.ts +2 -0
- package/dist/__tests__/lib/fs-helpers/tail-file.test.d.ts.map +1 -0
- package/dist/__tests__/lib/fs-helpers/tail-file.test.js +11 -0
- package/dist/__tests__/lib/fs-helpers/tail-file.test.js.map +1 -0
- package/dist/__tests__/lib/path-validation.test.js +93 -104
- package/dist/__tests__/lib/path-validation.test.js.map +1 -1
- package/dist/__tests__/schemas/validators.test.js +111 -115
- package/dist/__tests__/schemas/validators.test.js.map +1 -1
- package/dist/__tests__/security/filesystem-boundary.test.js +41 -36
- package/dist/__tests__/security/filesystem-boundary.test.js.map +1 -1
- package/dist/lib/errors.d.ts +0 -18
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +33 -34
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/file-operations/analyze-directory.d.ts.map +1 -1
- package/dist/lib/file-operations/analyze-directory.js +74 -43
- package/dist/lib/file-operations/analyze-directory.js.map +1 -1
- package/dist/lib/file-operations/directory-helpers.d.ts +2 -19
- package/dist/lib/file-operations/directory-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/directory-helpers.js +26 -90
- package/dist/lib/file-operations/directory-helpers.js.map +1 -1
- package/dist/lib/file-operations/directory-tree-helpers.d.ts +38 -0
- package/dist/lib/file-operations/directory-tree-helpers.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-tree-helpers.js +167 -0
- package/dist/lib/file-operations/directory-tree-helpers.js.map +1 -0
- package/dist/lib/file-operations/directory-tree.d.ts.map +1 -1
- package/dist/lib/file-operations/directory-tree.js +44 -154
- package/dist/lib/file-operations/directory-tree.js.map +1 -1
- package/dist/lib/file-operations/list-directory-helpers.d.ts +2 -1
- package/dist/lib/file-operations/list-directory-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory-helpers.js +16 -4
- package/dist/lib/file-operations/list-directory-helpers.js.map +1 -1
- package/dist/lib/file-operations/list-directory.d.ts +4 -2
- package/dist/lib/file-operations/list-directory.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory.js +39 -17
- package/dist/lib/file-operations/list-directory.js.map +1 -1
- package/dist/lib/file-operations/pattern-validator.d.ts +0 -10
- package/dist/lib/file-operations/pattern-validator.d.ts.map +1 -1
- package/dist/lib/file-operations/pattern-validator.js +44 -43
- package/dist/lib/file-operations/pattern-validator.js.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.d.ts +3 -2
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.js +46 -29
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
- package/dist/lib/file-operations/search/context-manager.d.ts +2 -0
- package/dist/lib/file-operations/search/context-manager.d.ts.map +1 -1
- package/dist/lib/file-operations/search/context-manager.js +11 -6
- package/dist/lib/file-operations/search/context-manager.js.map +1 -1
- package/dist/lib/file-operations/search/engine-options.d.ts +19 -0
- package/dist/lib/file-operations/search/engine-options.d.ts.map +1 -0
- package/dist/lib/file-operations/search/engine-options.js +32 -0
- package/dist/lib/file-operations/search/engine-options.js.map +1 -0
- package/dist/lib/file-operations/search/engine-stream.d.ts +6 -0
- package/dist/lib/file-operations/search/engine-stream.d.ts.map +1 -0
- package/dist/lib/file-operations/search/engine-stream.js +130 -0
- package/dist/lib/file-operations/search/engine-stream.js.map +1 -0
- package/dist/lib/file-operations/search/engine.d.ts +1 -17
- package/dist/lib/file-operations/search/engine.d.ts.map +1 -1
- package/dist/lib/file-operations/search/engine.js +7 -117
- package/dist/lib/file-operations/search/engine.js.map +1 -1
- package/dist/lib/file-operations/search/file-processor.d.ts.map +1 -1
- package/dist/lib/file-operations/search/file-processor.js +33 -25
- package/dist/lib/file-operations/search/file-processor.js.map +1 -1
- package/dist/lib/file-operations/search/match-strategy.d.ts.map +1 -1
- package/dist/lib/file-operations/search/match-strategy.js +49 -54
- package/dist/lib/file-operations/search/match-strategy.js.map +1 -1
- package/dist/lib/file-operations/search-files-helpers.d.ts +42 -0
- package/dist/lib/file-operations/search-files-helpers.d.ts.map +1 -0
- package/dist/lib/file-operations/search-files-helpers.js +180 -0
- package/dist/lib/file-operations/search-files-helpers.js.map +1 -0
- package/dist/lib/file-operations/search-files.d.ts +2 -9
- package/dist/lib/file-operations/search-files.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files.js +8 -129
- package/dist/lib/file-operations/search-files.js.map +1 -1
- package/dist/lib/file-operations/sorting.d.ts +3 -2
- package/dist/lib/file-operations/sorting.d.ts.map +1 -1
- package/dist/lib/fs-helpers/binary-detect.d.ts.map +1 -1
- package/dist/lib/fs-helpers/binary-detect.js +16 -10
- package/dist/lib/fs-helpers/binary-detect.js.map +1 -1
- package/dist/lib/fs-helpers/fs-utils.d.ts.map +1 -1
- package/dist/lib/fs-helpers/fs-utils.js +16 -10
- package/dist/lib/fs-helpers/fs-utils.js.map +1 -1
- package/dist/lib/fs-helpers/readers/line-range.d.ts +4 -2
- package/dist/lib/fs-helpers/readers/line-range.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/line-range.js +21 -15
- package/dist/lib/fs-helpers/readers/line-range.js.map +1 -1
- package/dist/lib/fs-helpers/readers/read-file.d.ts +6 -3
- package/dist/lib/fs-helpers/readers/read-file.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/read-file.js +58 -19
- package/dist/lib/fs-helpers/readers/read-file.js.map +1 -1
- package/dist/lib/fs-helpers/readers/tail-file.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/tail-file.js +27 -10
- package/dist/lib/fs-helpers/readers/tail-file.js.map +1 -1
- package/dist/lib/fs-helpers/readers/utf8.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/utf8.js +20 -10
- package/dist/lib/fs-helpers/readers/utf8.js.map +1 -1
- package/dist/lib/path-validation/allowed-directories.d.ts +1 -2
- package/dist/lib/path-validation/allowed-directories.d.ts.map +1 -1
- package/dist/lib/path-validation/allowed-directories.js +25 -15
- package/dist/lib/path-validation/allowed-directories.js.map +1 -1
- package/dist/lib/path-validation/errors.d.ts +0 -1
- package/dist/lib/path-validation/errors.d.ts.map +1 -1
- package/dist/lib/path-validation/errors.js +27 -13
- package/dist/lib/path-validation/errors.js.map +1 -1
- package/dist/lib/path-validation/validators.d.ts.map +1 -1
- package/dist/lib/path-validation/validators.js +9 -3
- package/dist/lib/path-validation/validators.js.map +1 -1
- package/dist/lib/path-validation.d.ts +1 -1
- package/dist/lib/path-validation.d.ts.map +1 -1
- package/dist/lib/path-validation.js +1 -1
- package/dist/lib/path-validation.js.map +1 -1
- package/dist/schemas/outputs.d.ts +12 -12
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +79 -35
- package/dist/server.js.map +1 -1
- package/dist/tools/analyze-directory.d.ts.map +1 -1
- package/dist/tools/analyze-directory.js +1 -30
- 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 +11 -32
- 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 +1 -12
- 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 +9 -1
- 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 +27 -50
- 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 +28 -20
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/read-multiple-files.d.ts.map +1 -1
- package/dist/tools/read-multiple-files.js +15 -14
- 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 +20 -17
- 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 +1 -27
- package/dist/tools/search-files.js.map +1 -1
- package/dist/tools/shared/formatting.d.ts +13 -0
- package/dist/tools/shared/formatting.d.ts.map +1 -0
- package/dist/tools/shared/formatting.js +31 -0
- package/dist/tools/shared/formatting.js.map +1 -0
- package/dist/tools/shared/search-formatting.d.ts.map +1 -1
- package/dist/tools/shared/search-formatting.js +32 -33
- package/dist/tools/shared/search-formatting.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utf8.d.ts","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/utf8.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"utf8.d.ts","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/utf8.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
|
|
@@ -3,20 +3,30 @@ export async function findUTF8Boundary(handle, position) {
|
|
|
3
3
|
return 0;
|
|
4
4
|
const backtrackSize = Math.min(4, position);
|
|
5
5
|
const startPos = position - backtrackSize;
|
|
6
|
-
const
|
|
6
|
+
const readResult = await readBacktrackBuffer(handle, backtrackSize, startPos, position);
|
|
7
|
+
if (!readResult)
|
|
8
|
+
return position;
|
|
9
|
+
const boundary = scanForBoundary(readResult.buffer, readResult.bytesRead, startPos);
|
|
10
|
+
return boundary ?? position;
|
|
11
|
+
}
|
|
12
|
+
async function readBacktrackBuffer(handle, backtrackSize, startPos, position) {
|
|
13
|
+
const buffer = Buffer.allocUnsafe(backtrackSize);
|
|
7
14
|
try {
|
|
8
|
-
const { bytesRead } = await handle.read(
|
|
9
|
-
|
|
10
|
-
const byte = buf[i];
|
|
11
|
-
if (byte !== undefined && (byte & 0xc0) !== 0x80) {
|
|
12
|
-
return startPos + i;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
+
const { bytesRead } = await handle.read(buffer, 0, backtrackSize, startPos);
|
|
16
|
+
return { buffer, bytesRead };
|
|
15
17
|
}
|
|
16
18
|
catch (error) {
|
|
17
19
|
console.error(`[findUTF8Boundary] Read error at position ${position}:`, error instanceof Error ? error.message : String(error));
|
|
18
|
-
return
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function scanForBoundary(buffer, bytesRead, startPos) {
|
|
24
|
+
for (let i = bytesRead - 1; i >= 0; i--) {
|
|
25
|
+
const byte = buffer[i];
|
|
26
|
+
if (byte !== undefined && (byte & 0xc0) !== 0x80) {
|
|
27
|
+
return startPos + i;
|
|
28
|
+
}
|
|
19
29
|
}
|
|
20
|
-
return
|
|
30
|
+
return null;
|
|
21
31
|
}
|
|
22
32
|
//# sourceMappingURL=utf8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utf8.js","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/utf8.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAkB,EAClB,QAAgB;IAEhB,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC1C,MAAM,
|
|
1
|
+
{"version":3,"file":"utf8.js","sourceRoot":"","sources":["../../../../src/lib/fs-helpers/readers/utf8.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAkB,EAClB,QAAgB;IAEhB,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAC1C,MAAM,EACN,aAAa,EACb,QAAQ,EACR,QAAQ,CACT,CAAC;IACF,IAAI,CAAC,UAAU;QAAE,OAAO,QAAQ,CAAC;IAEjC,MAAM,QAAQ,GAAG,eAAe,CAC9B,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,SAAS,EACpB,QAAQ,CACT,CAAC;IACF,OAAO,QAAQ,IAAI,QAAQ,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,MAAkB,EAClB,aAAqB,EACrB,QAAgB,EAChB,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC5E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,6CAA6C,QAAQ,GAAG,EACxD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,MAAc,EACd,SAAiB,EACjB,QAAgB;IAEhB,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACjD,OAAO,QAAQ,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
export declare const RESERVED_DEVICE_NAMES: Set<string>;
|
|
2
2
|
export declare function normalizeForComparison(p: string): string;
|
|
3
|
-
export declare function normalizeAllowedDirectory(dir: string): string;
|
|
4
3
|
export declare function setAllowedDirectories(dirs: string[]): void;
|
|
5
4
|
export declare function getAllowedDirectories(): string[];
|
|
5
|
+
export declare function isPathWithinDirectories(normalizedPath: string, allowedDirs: string[]): boolean;
|
|
6
6
|
export declare function isPathWithinAllowedDirectories(normalizedPath: string): boolean;
|
|
7
|
-
export declare function expandAllowedDirectories(dirs: string[]): Promise<string[]>;
|
|
8
7
|
export declare function setAllowedDirectoriesResolved(dirs: string[]): Promise<void>;
|
|
9
8
|
//# sourceMappingURL=allowed-directories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allowed-directories.d.ts","sourceRoot":"","sources":["../../../src/lib/path-validation/allowed-directories.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,qBAAqB,aAuBhC,CAAC;AAEH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;
|
|
1
|
+
{"version":3,"file":"allowed-directories.d.ts","sourceRoot":"","sources":["../../../src/lib/path-validation/allowed-directories.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,qBAAqB,aAuBhC,CAAC;AAEH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;AAoBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAK1D;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAYT;AAED,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,MAAM,GACrB,OAAO,CAET;AAuCD,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -35,7 +35,7 @@ function stripTrailingSeparator(normalized) {
|
|
|
35
35
|
? normalized.slice(0, -1)
|
|
36
36
|
: normalized;
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
function normalizeAllowedDirectory(dir) {
|
|
39
39
|
const normalized = normalizePath(dir);
|
|
40
40
|
if (normalized.length === 0)
|
|
41
41
|
return '';
|
|
@@ -54,9 +54,9 @@ export function setAllowedDirectories(dirs) {
|
|
|
54
54
|
export function getAllowedDirectories() {
|
|
55
55
|
return [...allowedDirectories];
|
|
56
56
|
}
|
|
57
|
-
export function
|
|
57
|
+
export function isPathWithinDirectories(normalizedPath, allowedDirs) {
|
|
58
58
|
const candidate = normalizeForComparison(normalizedPath);
|
|
59
|
-
return
|
|
59
|
+
return allowedDirs.some((allowedDir) => {
|
|
60
60
|
const allowed = normalizeForComparison(allowedDir);
|
|
61
61
|
const root = normalizeForComparison(path.parse(allowedDir).root);
|
|
62
62
|
if (allowed === root) {
|
|
@@ -65,28 +65,38 @@ export function isPathWithinAllowedDirectories(normalizedPath) {
|
|
|
65
65
|
return (candidate === allowed || candidate.startsWith(allowed + PATH_SEPARATOR));
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
-
export
|
|
68
|
+
export function isPathWithinAllowedDirectories(normalizedPath) {
|
|
69
|
+
return isPathWithinDirectories(normalizedPath, allowedDirectories);
|
|
70
|
+
}
|
|
71
|
+
async function expandAllowedDirectories(dirs) {
|
|
69
72
|
const expanded = [];
|
|
70
73
|
for (const dir of dirs) {
|
|
71
74
|
const normalized = normalizeAllowedDirectory(dir);
|
|
72
75
|
if (!normalized)
|
|
73
76
|
continue;
|
|
74
77
|
expanded.push(normalized);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (normalizedReal &&
|
|
79
|
-
normalizeForComparison(normalizedReal) !==
|
|
80
|
-
normalizeForComparison(normalized)) {
|
|
81
|
-
expanded.push(normalizedReal);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
// Keep normalized path if realpath fails
|
|
78
|
+
const normalizedReal = await resolveRealPath(normalized);
|
|
79
|
+
if (normalizedReal && shouldAddRealPath(normalized, normalizedReal)) {
|
|
80
|
+
expanded.push(normalizedReal);
|
|
86
81
|
}
|
|
87
82
|
}
|
|
88
83
|
return [...new Set(expanded)];
|
|
89
84
|
}
|
|
85
|
+
async function resolveRealPath(normalized) {
|
|
86
|
+
try {
|
|
87
|
+
const realPath = await fs.realpath(normalized);
|
|
88
|
+
return normalizeAllowedDirectory(realPath);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function shouldAddRealPath(normalized, normalizedReal) {
|
|
95
|
+
if (!normalizedReal)
|
|
96
|
+
return false;
|
|
97
|
+
return (normalizeForComparison(normalizedReal) !==
|
|
98
|
+
normalizeForComparison(normalized));
|
|
99
|
+
}
|
|
90
100
|
export async function setAllowedDirectoriesResolved(dirs) {
|
|
91
101
|
const expanded = await expandAllowedDirectories(dirs);
|
|
92
102
|
setAllowedDirectories(expanded);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allowed-directories.js","sourceRoot":"","sources":["../../../src/lib/path-validation/allowed-directories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AAEjE,IAAI,kBAAkB,GAAa,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IAC3C,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,UAAU,sBAAsB,CAAC,CAAS;IAC9C,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAkB;IAChD,OAAO,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;QACxC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"allowed-directories.js","sourceRoot":"","sources":["../../../src/lib/path-validation/allowed-directories.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { McpError } from '../errors.js';
|
|
2
|
-
export declare function buildAllowedDirectoriesHint(): string;
|
|
3
2
|
export declare function toMcpError(requestedPath: string, error: unknown): McpError;
|
|
4
3
|
export declare function toAccessDeniedWithHint(requestedPath: string, resolvedPath: string, normalizedResolved: string): McpError;
|
|
5
4
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/path-validation/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/path-validation/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAE,MAAM,cAAc,CAAC;AAmDnD,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,QAAQ,CAsB1E;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,GACzB,QAAQ,CAQV"}
|
|
@@ -3,31 +3,45 @@ import { getAllowedDirectories } from './allowed-directories.js';
|
|
|
3
3
|
function createMcpError(code, message, requestedPath, details, cause) {
|
|
4
4
|
return new McpError(code, message, requestedPath, details, cause);
|
|
5
5
|
}
|
|
6
|
-
|
|
6
|
+
function buildAllowedDirectoriesHint() {
|
|
7
7
|
const allowedDirs = getAllowedDirectories();
|
|
8
8
|
return allowedDirs.length > 0
|
|
9
9
|
? `Allowed directories:\n${allowedDirs.map((d) => ` - ${d}`).join('\n')}`
|
|
10
10
|
: 'No allowed directories configured. Use CLI arguments or MCP roots protocol.';
|
|
11
11
|
}
|
|
12
|
+
const NODE_ERROR_MAP = {
|
|
13
|
+
ENOENT: {
|
|
14
|
+
code: ErrorCode.E_NOT_FOUND,
|
|
15
|
+
message: (requestedPath) => `Path does not exist: ${requestedPath}`,
|
|
16
|
+
},
|
|
17
|
+
EACCES: {
|
|
18
|
+
code: ErrorCode.E_PERMISSION_DENIED,
|
|
19
|
+
message: (requestedPath) => `Permission denied accessing path: ${requestedPath}`,
|
|
20
|
+
},
|
|
21
|
+
EPERM: {
|
|
22
|
+
code: ErrorCode.E_PERMISSION_DENIED,
|
|
23
|
+
message: (requestedPath) => `Permission denied accessing path: ${requestedPath}`,
|
|
24
|
+
},
|
|
25
|
+
ELOOP: {
|
|
26
|
+
code: ErrorCode.E_SYMLINK_NOT_ALLOWED,
|
|
27
|
+
message: (requestedPath) => `Too many symbolic links in path (possible circular reference): ${requestedPath}`,
|
|
28
|
+
},
|
|
29
|
+
ENAMETOOLONG: {
|
|
30
|
+
code: ErrorCode.E_INVALID_INPUT,
|
|
31
|
+
message: (requestedPath) => `Path name too long: ${requestedPath}`,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
12
34
|
export function toMcpError(requestedPath, error) {
|
|
13
35
|
const nodeError = error;
|
|
14
36
|
const { code } = nodeError;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (code === 'EACCES' || code === 'EPERM') {
|
|
19
|
-
return createMcpError(ErrorCode.E_PERMISSION_DENIED, `Permission denied accessing path: ${requestedPath}`, requestedPath, { originalCode: code }, error);
|
|
20
|
-
}
|
|
21
|
-
if (code === 'ELOOP') {
|
|
22
|
-
return createMcpError(ErrorCode.E_SYMLINK_NOT_ALLOWED, `Too many symbolic links in path (possible circular reference): ${requestedPath}`, requestedPath, { originalCode: code }, error);
|
|
23
|
-
}
|
|
24
|
-
if (code === 'ENAMETOOLONG') {
|
|
25
|
-
return createMcpError(ErrorCode.E_INVALID_INPUT, `Path name too long: ${requestedPath}`, requestedPath, { originalCode: code }, error);
|
|
37
|
+
const mapping = code ? NODE_ERROR_MAP[code] : undefined;
|
|
38
|
+
if (mapping) {
|
|
39
|
+
return createMcpError(mapping.code, mapping.message(requestedPath), requestedPath, { originalCode: code }, error);
|
|
26
40
|
}
|
|
27
41
|
return createMcpError(ErrorCode.E_NOT_FOUND, `Path is not accessible: ${requestedPath}`, requestedPath, { originalCode: code, originalMessage: nodeError.message }, error);
|
|
28
42
|
}
|
|
29
43
|
export function toAccessDeniedWithHint(requestedPath, resolvedPath, normalizedResolved) {
|
|
30
44
|
const suggestion = buildAllowedDirectoriesHint();
|
|
31
|
-
return new McpError(ErrorCode.E_ACCESS_DENIED, `Access denied: Path '${requestedPath}' is outside allowed directories.\n
|
|
45
|
+
return new McpError(ErrorCode.E_ACCESS_DENIED, `Access denied: Path '${requestedPath}' is outside allowed directories.\n${suggestion}`, requestedPath, { resolvedPath, normalizedResolvedPath: normalizedResolved });
|
|
32
46
|
}
|
|
33
47
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/lib/path-validation/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,SAAS,cAAc,CACrB,IAAe,EACf,OAAe,EACf,aAAqB,EACrB,OAAgC,EAChC,KAAc;IAEd,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/lib/path-validation/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,SAAS,cAAc,CACrB,IAAe,EACf,OAAe,EACf,aAAqB,EACrB,OAAgC,EAChC,KAAc;IAEd,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,2BAA2B;IAClC,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;IAC5C,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,yBAAyB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC1E,CAAC,CAAC,6EAA6E,CAAC;AACpF,CAAC;AAED,MAAM,cAAc,GAKhB;IACF,MAAM,EAAE;QACN,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,OAAO,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,wBAAwB,aAAa,EAAE;KACpE;IACD,MAAM,EAAE;QACN,IAAI,EAAE,SAAS,CAAC,mBAAmB;QACnC,OAAO,EAAE,CAAC,aAAa,EAAE,EAAE,CACzB,qCAAqC,aAAa,EAAE;KACvD;IACD,KAAK,EAAE;QACL,IAAI,EAAE,SAAS,CAAC,mBAAmB;QACnC,OAAO,EAAE,CAAC,aAAa,EAAE,EAAE,CACzB,qCAAqC,aAAa,EAAE;KACvD;IACD,KAAK,EAAE;QACL,IAAI,EAAE,SAAS,CAAC,qBAAqB;QACrC,OAAO,EAAE,CAAC,aAAa,EAAE,EAAE,CACzB,kEAAkE,aAAa,EAAE;KACpF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,SAAS,CAAC,eAAe;QAC/B,OAAO,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,uBAAuB,aAAa,EAAE;KACnE;CACO,CAAC;AAEX,MAAM,UAAU,UAAU,CAAC,aAAqB,EAAE,KAAc;IAC9D,MAAM,SAAS,GAAG,KAA8B,CAAC;IACjD,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;IAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,cAAc,CACnB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAC9B,aAAa,EACb,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,KAAK,CACN,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CACnB,SAAS,CAAC,WAAW,EACrB,2BAA2B,aAAa,EAAE,EAC1C,aAAa,EACb,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,OAAO,EAAE,EAC1D,KAAK,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,aAAqB,EACrB,YAAoB,EACpB,kBAA0B;IAE1B,MAAM,UAAU,GAAG,2BAA2B,EAAE,CAAC;IACjD,OAAO,IAAI,QAAQ,CACjB,SAAS,CAAC,eAAe,EACzB,wBAAwB,aAAa,sCAAsC,UAAU,EAAE,EACvF,aAAa,EACb,EAAE,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,CAC7D,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../src/lib/path-validation/validators.ts"],"names":[],"mappings":"AAYA,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../src/lib/path-validation/validators.ts"],"names":[],"mappings":"AAYA,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AA0HD,wBAAsB,4BAA4B,CAChD,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAE/B;AAED,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAIjB"}
|
|
@@ -18,12 +18,18 @@ function ensureNoReservedWindowsNames(requestedPath) {
|
|
|
18
18
|
return;
|
|
19
19
|
const segments = requestedPath.split(/[\\/]/);
|
|
20
20
|
for (const segment of segments) {
|
|
21
|
-
const
|
|
22
|
-
if (
|
|
23
|
-
throw new McpError(ErrorCode.E_INVALID_INPUT, `Windows reserved device name not allowed: ${
|
|
21
|
+
const reserved = getReservedDeviceName(segment);
|
|
22
|
+
if (reserved) {
|
|
23
|
+
throw new McpError(ErrorCode.E_INVALID_INPUT, `Windows reserved device name not allowed: ${reserved}`, requestedPath);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
+
function getReservedDeviceName(segment) {
|
|
28
|
+
const baseName = segment.split('.')[0]?.toUpperCase();
|
|
29
|
+
if (!baseName)
|
|
30
|
+
return undefined;
|
|
31
|
+
return RESERVED_DEVICE_NAMES.has(baseName) ? baseName : undefined;
|
|
32
|
+
}
|
|
27
33
|
function ensureWithinAllowedDirectories(normalizedPath, requestedPath, details) {
|
|
28
34
|
if (isPathWithinAllowedDirectories(normalizedPath))
|
|
29
35
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/lib/path-validation/validators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGvC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQjE,SAAS,kBAAkB,CAAC,aAAqB;IAC/C,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,eAAe,EACzB,oCAAoC,EACpC,aAAa,CACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,aAAqB;IAC9C,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,eAAe,EACzB,0BAA0B,EAC1B,aAAa,CACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,aAAqB;IACzD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO;IAEzC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/lib/path-validation/validators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { getAllowedDirectories, setAllowedDirectories, setAllowedDirectoriesResolved,
|
|
1
|
+
export { getAllowedDirectories, isPathWithinDirectories, setAllowedDirectories, setAllowedDirectoriesResolved, RESERVED_DEVICE_NAMES, } from './path-validation/allowed-directories.js';
|
|
2
2
|
export { validateExistingPath, validateExistingDirectory, validateExistingPathDetailed, } from './path-validation/validators.js';
|
|
3
3
|
export { getValidRootDirectories } from './path-validation/roots.js';
|
|
4
4
|
//# sourceMappingURL=path-validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-validation.d.ts","sourceRoot":"","sources":["../../src/lib/path-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,
|
|
1
|
+
{"version":3,"file":"path-validation.d.ts","sourceRoot":"","sources":["../../src/lib/path-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { getAllowedDirectories, setAllowedDirectories, setAllowedDirectoriesResolved,
|
|
1
|
+
export { getAllowedDirectories, isPathWithinDirectories, setAllowedDirectories, setAllowedDirectoriesResolved, RESERVED_DEVICE_NAMES, } from './path-validation/allowed-directories.js';
|
|
2
2
|
export { validateExistingPath, validateExistingDirectory, validateExistingPathDetailed, } from './path-validation/validators.js';
|
|
3
3
|
export { getValidRootDirectories } from './path-validation/roots.js';
|
|
4
4
|
//# sourceMappingURL=path-validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-validation.js","sourceRoot":"","sources":["../../src/lib/path-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,
|
|
1
|
+
{"version":3,"file":"path-validation.js","sourceRoot":"","sources":["../../src/lib/path-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -149,7 +149,6 @@ export declare const ListDirectoryOutputSchema: z.ZodObject<{
|
|
|
149
149
|
path?: string | undefined;
|
|
150
150
|
suggestion?: string | undefined;
|
|
151
151
|
} | undefined;
|
|
152
|
-
path?: string | undefined;
|
|
153
152
|
summary?: {
|
|
154
153
|
truncated: boolean;
|
|
155
154
|
totalFiles: number;
|
|
@@ -159,6 +158,7 @@ export declare const ListDirectoryOutputSchema: z.ZodObject<{
|
|
|
159
158
|
symlinksNotFollowed?: number | undefined;
|
|
160
159
|
totalEntries?: number | undefined;
|
|
161
160
|
} | undefined;
|
|
161
|
+
path?: string | undefined;
|
|
162
162
|
}, {
|
|
163
163
|
ok: boolean;
|
|
164
164
|
entries?: {
|
|
@@ -175,7 +175,6 @@ export declare const ListDirectoryOutputSchema: z.ZodObject<{
|
|
|
175
175
|
path?: string | undefined;
|
|
176
176
|
suggestion?: string | undefined;
|
|
177
177
|
} | undefined;
|
|
178
|
-
path?: string | undefined;
|
|
179
178
|
summary?: {
|
|
180
179
|
truncated: boolean;
|
|
181
180
|
totalFiles: number;
|
|
@@ -185,6 +184,7 @@ export declare const ListDirectoryOutputSchema: z.ZodObject<{
|
|
|
185
184
|
symlinksNotFollowed?: number | undefined;
|
|
186
185
|
totalEntries?: number | undefined;
|
|
187
186
|
} | undefined;
|
|
187
|
+
path?: string | undefined;
|
|
188
188
|
}>;
|
|
189
189
|
export declare const SearchFilesOutputSchema: z.ZodObject<{
|
|
190
190
|
ok: z.ZodBoolean;
|
|
@@ -312,25 +312,25 @@ export declare const ReadFileOutputSchema: z.ZodObject<{
|
|
|
312
312
|
}>>;
|
|
313
313
|
}, "strip", z.ZodTypeAny, {
|
|
314
314
|
ok: boolean;
|
|
315
|
-
content?: string | undefined;
|
|
316
315
|
error?: {
|
|
317
316
|
code: string;
|
|
318
317
|
message: string;
|
|
319
318
|
path?: string | undefined;
|
|
320
319
|
suggestion?: string | undefined;
|
|
321
320
|
} | undefined;
|
|
321
|
+
content?: string | undefined;
|
|
322
322
|
truncated?: boolean | undefined;
|
|
323
323
|
totalLines?: number | undefined;
|
|
324
324
|
path?: string | undefined;
|
|
325
325
|
}, {
|
|
326
326
|
ok: boolean;
|
|
327
|
-
content?: string | undefined;
|
|
328
327
|
error?: {
|
|
329
328
|
code: string;
|
|
330
329
|
message: string;
|
|
331
330
|
path?: string | undefined;
|
|
332
331
|
suggestion?: string | undefined;
|
|
333
332
|
} | undefined;
|
|
333
|
+
content?: string | undefined;
|
|
334
334
|
truncated?: boolean | undefined;
|
|
335
335
|
totalLines?: number | undefined;
|
|
336
336
|
path?: string | undefined;
|
|
@@ -345,14 +345,14 @@ export declare const ReadMultipleFilesOutputSchema: z.ZodObject<{
|
|
|
345
345
|
error: z.ZodOptional<z.ZodString>;
|
|
346
346
|
}, "strip", z.ZodTypeAny, {
|
|
347
347
|
path: string;
|
|
348
|
-
content?: string | undefined;
|
|
349
348
|
error?: string | undefined;
|
|
349
|
+
content?: string | undefined;
|
|
350
350
|
truncated?: boolean | undefined;
|
|
351
351
|
totalLines?: number | undefined;
|
|
352
352
|
}, {
|
|
353
353
|
path: string;
|
|
354
|
-
content?: string | undefined;
|
|
355
354
|
error?: string | undefined;
|
|
355
|
+
content?: string | undefined;
|
|
356
356
|
truncated?: boolean | undefined;
|
|
357
357
|
totalLines?: number | undefined;
|
|
358
358
|
}>, "many">>;
|
|
@@ -389,8 +389,8 @@ export declare const ReadMultipleFilesOutputSchema: z.ZodObject<{
|
|
|
389
389
|
ok: boolean;
|
|
390
390
|
results?: {
|
|
391
391
|
path: string;
|
|
392
|
-
content?: string | undefined;
|
|
393
392
|
error?: string | undefined;
|
|
393
|
+
content?: string | undefined;
|
|
394
394
|
truncated?: boolean | undefined;
|
|
395
395
|
totalLines?: number | undefined;
|
|
396
396
|
}[] | undefined;
|
|
@@ -409,8 +409,8 @@ export declare const ReadMultipleFilesOutputSchema: z.ZodObject<{
|
|
|
409
409
|
ok: boolean;
|
|
410
410
|
results?: {
|
|
411
411
|
path: string;
|
|
412
|
-
content?: string | undefined;
|
|
413
412
|
error?: string | undefined;
|
|
413
|
+
content?: string | undefined;
|
|
414
414
|
truncated?: boolean | undefined;
|
|
415
415
|
totalLines?: number | undefined;
|
|
416
416
|
}[] | undefined;
|
|
@@ -618,6 +618,7 @@ export declare const SearchContentOutputSchema: z.ZodObject<{
|
|
|
618
618
|
skippedBinary?: number | undefined;
|
|
619
619
|
filesScanned?: number | undefined;
|
|
620
620
|
} | undefined;
|
|
621
|
+
filePattern?: string | undefined;
|
|
621
622
|
basePath?: string | undefined;
|
|
622
623
|
matches?: {
|
|
623
624
|
file: string;
|
|
@@ -627,7 +628,6 @@ export declare const SearchContentOutputSchema: z.ZodObject<{
|
|
|
627
628
|
contextAfter?: string[] | undefined;
|
|
628
629
|
matchCount?: number | undefined;
|
|
629
630
|
}[] | undefined;
|
|
630
|
-
filePattern?: string | undefined;
|
|
631
631
|
}, {
|
|
632
632
|
ok: boolean;
|
|
633
633
|
pattern?: string | undefined;
|
|
@@ -648,6 +648,7 @@ export declare const SearchContentOutputSchema: z.ZodObject<{
|
|
|
648
648
|
skippedBinary?: number | undefined;
|
|
649
649
|
filesScanned?: number | undefined;
|
|
650
650
|
} | undefined;
|
|
651
|
+
filePattern?: string | undefined;
|
|
651
652
|
basePath?: string | undefined;
|
|
652
653
|
matches?: {
|
|
653
654
|
file: string;
|
|
@@ -657,7 +658,6 @@ export declare const SearchContentOutputSchema: z.ZodObject<{
|
|
|
657
658
|
contextAfter?: string[] | undefined;
|
|
658
659
|
matchCount?: number | undefined;
|
|
659
660
|
}[] | undefined;
|
|
660
|
-
filePattern?: string | undefined;
|
|
661
661
|
}>;
|
|
662
662
|
export declare const AnalyzeDirectoryOutputSchema: z.ZodObject<{
|
|
663
663
|
ok: z.ZodBoolean;
|
|
@@ -723,12 +723,12 @@ export declare const AnalyzeDirectoryOutputSchema: z.ZodObject<{
|
|
|
723
723
|
path?: string | undefined;
|
|
724
724
|
suggestion?: string | undefined;
|
|
725
725
|
} | undefined;
|
|
726
|
-
path?: string | undefined;
|
|
727
726
|
summary?: {
|
|
728
727
|
truncated?: boolean | undefined;
|
|
729
728
|
skippedInaccessible?: number | undefined;
|
|
730
729
|
symlinksNotFollowed?: number | undefined;
|
|
731
730
|
} | undefined;
|
|
731
|
+
path?: string | undefined;
|
|
732
732
|
totalFiles?: number | undefined;
|
|
733
733
|
totalDirectories?: number | undefined;
|
|
734
734
|
totalSize?: number | undefined;
|
|
@@ -749,12 +749,12 @@ export declare const AnalyzeDirectoryOutputSchema: z.ZodObject<{
|
|
|
749
749
|
path?: string | undefined;
|
|
750
750
|
suggestion?: string | undefined;
|
|
751
751
|
} | undefined;
|
|
752
|
-
path?: string | undefined;
|
|
753
752
|
summary?: {
|
|
754
753
|
truncated?: boolean | undefined;
|
|
755
754
|
skippedInaccessible?: number | undefined;
|
|
756
755
|
symlinksNotFollowed?: number | undefined;
|
|
757
756
|
} | undefined;
|
|
757
|
+
path?: string | undefined;
|
|
758
758
|
totalFiles?: number | undefined;
|
|
759
759
|
totalDirectories?: number | undefined;
|
|
760
760
|
totalSize?: number | undefined;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA+FpE,wBAAsB,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC,CAO1D;AAKD,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAsFD,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,SAAS,CAmBnE;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBlE"}
|