@j0hanz/filesystem-context-mcp 1.3.0 → 1.3.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/README.md +251 -504
- package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.js +1 -1
- package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.js.map +1 -1
- package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.js +43 -0
- package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.js.map +1 -0
- package/dist/__tests__/lib/file-operations/search-definitions.fixtures.d.ts +7 -0
- package/dist/__tests__/lib/file-operations/search-definitions.fixtures.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/search-definitions.fixtures.js +113 -0
- package/dist/__tests__/lib/file-operations/search-definitions.fixtures.js.map +1 -0
- package/dist/__tests__/lib/file-operations/search-definitions.test.js +1 -112
- package/dist/__tests__/lib/file-operations/search-definitions.test.js.map +1 -1
- package/dist/__tests__/lib/file-operations/sorting.test.js +15 -40
- package/dist/__tests__/lib/file-operations/sorting.test.js.map +1 -1
- package/dist/__tests__/lib/path-validation-errors.test.js +1 -1
- package/dist/__tests__/lib/path-validation-errors.test.js.map +1 -1
- package/dist/__tests__/lib/path-validation.test.js +17 -0
- package/dist/__tests__/lib/path-validation.test.js.map +1 -1
- package/dist/config/formatting.d.ts +14 -0
- package/dist/config/formatting.d.ts.map +1 -0
- package/dist/config/formatting.js +34 -0
- package/dist/config/formatting.js.map +1 -0
- package/dist/config/types.d.ts +3 -97
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/dist/instructions.md +151 -170
- package/dist/lib/constants.d.ts +1 -5
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +19 -15
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/errors.d.ts +0 -2
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +2 -30
- 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 +8 -1
- package/dist/lib/file-operations/analyze-directory.js.map +1 -1
- package/dist/lib/file-operations/batch-results.d.ts +2 -1
- package/dist/lib/file-operations/batch-results.d.ts.map +1 -1
- package/dist/lib/file-operations/compute-checksums.d.ts +1 -0
- package/dist/lib/file-operations/compute-checksums.d.ts.map +1 -1
- package/dist/lib/file-operations/compute-checksums.js +58 -45
- package/dist/lib/file-operations/compute-checksums.js.map +1 -1
- package/dist/lib/file-operations/directory-tree-builders.d.ts +7 -0
- package/dist/lib/file-operations/directory-tree-builders.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-tree-builders.js +58 -0
- package/dist/lib/file-operations/directory-tree-builders.js.map +1 -0
- package/dist/lib/file-operations/directory-tree-helpers.d.ts +0 -5
- package/dist/lib/file-operations/directory-tree-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/directory-tree-helpers.js +21 -71
- package/dist/lib/file-operations/directory-tree-helpers.js.map +1 -1
- package/dist/lib/file-operations/directory-tree.d.ts.map +1 -1
- package/dist/lib/file-operations/directory-tree.js +2 -1
- package/dist/lib/file-operations/directory-tree.js.map +1 -1
- package/dist/lib/file-operations/file-info.d.ts +3 -1
- package/dist/lib/file-operations/file-info.d.ts.map +1 -1
- package/dist/lib/file-operations/file-info.js +16 -5
- package/dist/lib/file-operations/file-info.js.map +1 -1
- package/dist/lib/file-operations/get-multiple-file-info.d.ts +1 -1
- package/dist/lib/file-operations/get-multiple-file-info.d.ts.map +1 -1
- package/dist/lib/file-operations/get-multiple-file-info.js +6 -8
- package/dist/lib/file-operations/get-multiple-file-info.js.map +1 -1
- package/dist/lib/file-operations/list-directory-entry.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory-entry.js +5 -2
- package/dist/lib/file-operations/list-directory-entry.js.map +1 -1
- package/dist/lib/file-operations/list-directory-helpers.d.ts +5 -1
- package/dist/lib/file-operations/list-directory-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory-helpers.js +24 -16
- package/dist/lib/file-operations/list-directory-helpers.js.map +1 -1
- package/dist/lib/file-operations/list-directory.d.ts +1 -0
- package/dist/lib/file-operations/list-directory.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory.js +8 -3
- package/dist/lib/file-operations/list-directory.js.map +1 -1
- package/dist/lib/file-operations/read-media-file.d.ts.map +1 -1
- package/dist/lib/file-operations/read-media-file.js +5 -1
- package/dist/lib/file-operations/read-media-file.js.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.d.ts +8 -0
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.js +15 -7
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
- package/dist/lib/file-operations/search/engine-stream.d.ts +1 -1
- package/dist/lib/file-operations/search/engine-stream.d.ts.map +1 -1
- package/dist/lib/file-operations/search/engine-stream.js +21 -5
- package/dist/lib/file-operations/search/engine-stream.js.map +1 -1
- package/dist/lib/file-operations/search/engine.d.ts.map +1 -1
- package/dist/lib/file-operations/search/engine.js +42 -5
- 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 +94 -54
- 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 +2 -1
- package/dist/lib/file-operations/search/match-strategy.js.map +1 -1
- package/dist/lib/file-operations/search/types.d.ts +1 -0
- package/dist/lib/file-operations/search/types.d.ts.map +1 -1
- package/dist/lib/file-operations/search-definitions/matchers.d.ts +12 -0
- package/dist/lib/file-operations/search-definitions/matchers.d.ts.map +1 -0
- package/dist/lib/file-operations/search-definitions/matchers.js +122 -0
- package/dist/lib/file-operations/search-definitions/matchers.js.map +1 -0
- package/dist/lib/file-operations/search-definitions/patterns.d.ts +14 -0
- package/dist/lib/file-operations/search-definitions/patterns.d.ts.map +1 -0
- package/dist/lib/file-operations/search-definitions/patterns.js +83 -0
- package/dist/lib/file-operations/search-definitions/patterns.js.map +1 -0
- package/dist/lib/file-operations/search-definitions.d.ts.map +1 -1
- package/dist/lib/file-operations/search-definitions.js +3 -208
- package/dist/lib/file-operations/search-definitions.js.map +1 -1
- package/dist/lib/file-operations/search-files-helpers.d.ts +2 -2
- package/dist/lib/file-operations/search-files-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files-helpers.js +17 -6
- package/dist/lib/file-operations/search-files-helpers.js.map +1 -1
- package/dist/lib/file-operations/search-files-options.d.ts +4 -2
- package/dist/lib/file-operations/search-files-options.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files-options.js.map +1 -1
- package/dist/lib/file-operations/search-files.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files.js +7 -2
- package/dist/lib/file-operations/search-files.js.map +1 -1
- package/dist/lib/file-operations/sorting.d.ts.map +1 -1
- package/dist/lib/file-operations/sorting.js +39 -14
- package/dist/lib/file-operations/sorting.js.map +1 -1
- package/dist/lib/file-operations.d.ts +0 -5
- package/dist/lib/file-operations.d.ts.map +1 -1
- package/dist/lib/file-operations.js +0 -5
- package/dist/lib/file-operations.js.map +1 -1
- package/dist/lib/fs-helpers/concurrency.d.ts +1 -1
- package/dist/lib/fs-helpers/concurrency.d.ts.map +1 -1
- package/dist/lib/fs-helpers/concurrency.js +37 -3
- package/dist/lib/fs-helpers/concurrency.js.map +1 -1
- package/dist/lib/fs-helpers/readers/head-file.js +1 -1
- package/dist/lib/fs-helpers/readers/head-file.js.map +1 -1
- package/dist/lib/fs-helpers/readers/read-buffer.d.ts +2 -0
- package/dist/lib/fs-helpers/readers/read-buffer.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/read-buffer.js +52 -0
- package/dist/lib/fs-helpers/readers/read-buffer.js.map +1 -0
- package/dist/lib/fs-helpers/readers/read-file-content.d.ts +8 -1
- package/dist/lib/fs-helpers/readers/read-file-content.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/read-file-content.js +30 -6
- package/dist/lib/fs-helpers/readers/read-file-content.js.map +1 -1
- package/dist/lib/fs-helpers/readers/read-file.d.ts +8 -0
- package/dist/lib/fs-helpers/readers/read-file.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/read-file.js +31 -11
- package/dist/lib/fs-helpers/readers/read-file.js.map +1 -1
- package/dist/lib/fs-helpers/readers/tail-file.js +1 -1
- package/dist/lib/fs-helpers/readers/tail-file.js.map +1 -1
- package/dist/lib/path-utils.d.ts +1 -0
- package/dist/lib/path-utils.d.ts.map +1 -1
- package/dist/lib/path-utils.js +12 -0
- package/dist/lib/path-utils.js.map +1 -1
- package/dist/lib/path-validation/allowed-directories.d.ts.map +1 -1
- package/dist/lib/path-validation/allowed-directories.js +2 -9
- package/dist/lib/path-validation/allowed-directories.js.map +1 -1
- package/dist/lib/path-validation/errors.js +2 -2
- 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 +3 -1
- package/dist/lib/path-validation/validators.js.map +1 -1
- package/dist/schemas/common.d.ts +0 -18
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +0 -10
- package/dist/schemas/common.js.map +1 -1
- package/dist/schemas/index.d.ts +2 -2
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +2 -2
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/input-helpers.d.ts +1 -4
- package/dist/schemas/input-helpers.d.ts.map +1 -1
- package/dist/schemas/input-helpers.js +9 -33
- package/dist/schemas/input-helpers.js.map +1 -1
- package/dist/schemas/inputs/checksums.d.ts +0 -2
- package/dist/schemas/inputs/checksums.d.ts.map +1 -1
- package/dist/schemas/inputs/checksums.js +2 -7
- package/dist/schemas/inputs/checksums.js.map +1 -1
- package/dist/schemas/inputs/directory.d.ts +0 -16
- package/dist/schemas/inputs/directory.d.ts.map +1 -1
- package/dist/schemas/inputs/directory.js +2 -44
- package/dist/schemas/inputs/directory.js.map +1 -1
- package/dist/schemas/inputs/read.d.ts +0 -4
- package/dist/schemas/inputs/read.d.ts.map +1 -1
- package/dist/schemas/inputs/read.js +0 -15
- package/dist/schemas/inputs/read.js.map +1 -1
- package/dist/schemas/inputs/search.d.ts +1 -12
- package/dist/schemas/inputs/search.d.ts.map +1 -1
- package/dist/schemas/inputs/search.js +4 -30
- package/dist/schemas/inputs/search.js.map +1 -1
- package/dist/schemas/inputs.d.ts +3 -4
- package/dist/schemas/inputs.d.ts.map +1 -1
- package/dist/schemas/inputs.js +3 -4
- package/dist/schemas/inputs.js.map +1 -1
- package/dist/schemas/output-helpers.d.ts +59 -0
- package/dist/schemas/output-helpers.d.ts.map +1 -1
- package/dist/schemas/output-helpers.js +31 -0
- package/dist/schemas/output-helpers.js.map +1 -1
- package/dist/schemas/outputs/checksums.d.ts +4 -4
- package/dist/schemas/outputs/checksums.d.ts.map +1 -1
- package/dist/schemas/outputs/checksums.js +2 -7
- package/dist/schemas/outputs/checksums.js.map +1 -1
- package/dist/schemas/outputs/directory.d.ts +68 -230
- package/dist/schemas/outputs/directory.d.ts.map +1 -1
- package/dist/schemas/outputs/directory.js +14 -32
- package/dist/schemas/outputs/directory.js.map +1 -1
- package/dist/schemas/outputs/file-info.d.ts +14 -14
- package/dist/schemas/outputs/file-info.d.ts.map +1 -1
- package/dist/schemas/outputs/file-info.js +4 -31
- package/dist/schemas/outputs/file-info.js.map +1 -1
- package/dist/schemas/outputs/read.d.ts +141 -46
- package/dist/schemas/outputs/read.d.ts.map +1 -1
- package/dist/schemas/outputs/read.js +35 -12
- package/dist/schemas/outputs/read.js.map +1 -1
- package/dist/schemas/outputs/search.d.ts +134 -124
- package/dist/schemas/outputs/search.d.ts.map +1 -1
- package/dist/schemas/outputs/search.js +33 -35
- package/dist/schemas/outputs/search.js.map +1 -1
- package/dist/schemas/outputs.d.ts +3 -4
- package/dist/schemas/outputs.d.ts.map +1 -1
- package/dist/schemas/outputs.js +3 -4
- package/dist/schemas/outputs.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/analyze-directory.d.ts.map +1 -1
- package/dist/tools/analyze-directory.js +26 -28
- package/dist/tools/analyze-directory.js.map +1 -1
- package/dist/tools/compute-checksums.d.ts.map +1 -1
- package/dist/tools/compute-checksums.js +13 -21
- package/dist/tools/compute-checksums.js.map +1 -1
- package/dist/tools/directory-tree.d.ts.map +1 -1
- package/dist/tools/directory-tree.js +11 -9
- 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 +8 -44
- package/dist/tools/get-file-info.js.map +1 -1
- package/dist/tools/get-multiple-file-info.d.ts.map +1 -1
- package/dist/tools/get-multiple-file-info.js +13 -55
- package/dist/tools/get-multiple-file-info.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -10
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-allowed-dirs.d.ts.map +1 -1
- package/dist/tools/list-allowed-dirs.js +37 -31
- 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 +83 -83
- 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 +57 -45
- 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 +8 -6
- 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 +57 -28
- 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 +14 -16
- package/dist/tools/search-content.js.map +1 -1
- package/dist/tools/search-definitions.d.ts.map +1 -1
- package/dist/tools/search-definitions.js +11 -8
- package/dist/tools/search-definitions.js.map +1 -1
- package/dist/tools/search-files.d.ts.map +1 -1
- package/dist/tools/search-files.js +61 -45
- package/dist/tools/search-files.js.map +1 -1
- package/dist/tools/shared/file-info.d.ts +17 -0
- package/dist/tools/shared/file-info.d.ts.map +1 -0
- package/dist/tools/shared/file-info.js +40 -0
- package/dist/tools/shared/file-info.js.map +1 -0
- package/dist/tools/shared/formatting.d.ts +5 -0
- package/dist/tools/shared/formatting.d.ts.map +1 -1
- package/dist/tools/shared/formatting.js +21 -1
- package/dist/tools/shared/formatting.js.map +1 -1
- package/dist/tools/shared/read-range.d.ts +7 -0
- package/dist/tools/shared/read-range.d.ts.map +1 -0
- package/dist/tools/shared/read-range.js +22 -0
- package/dist/tools/shared/read-range.js.map +1 -0
- package/dist/tools/shared/search-formatting.d.ts.map +1 -1
- package/dist/tools/shared/search-formatting.js +53 -28
- package/dist/tools/shared/search-formatting.js.map +1 -1
- package/dist/tools/tool-response.d.ts +22 -0
- package/dist/tools/tool-response.d.ts.map +1 -1
- package/dist/tools/tool-response.js +30 -0
- package/dist/tools/tool-response.js.map +1 -1
- package/package.json +2 -1
package/dist/config/types.d.ts
CHANGED
|
@@ -26,10 +26,13 @@ export interface ListDirectoryResult {
|
|
|
26
26
|
entries: DirectoryEntry[];
|
|
27
27
|
summary: {
|
|
28
28
|
totalEntries: number;
|
|
29
|
+
entriesScanned?: number;
|
|
30
|
+
entriesVisible?: number;
|
|
29
31
|
totalFiles: number;
|
|
30
32
|
totalDirectories: number;
|
|
31
33
|
maxDepthReached: number;
|
|
32
34
|
truncated: boolean;
|
|
35
|
+
stoppedReason?: 'maxEntries' | 'aborted';
|
|
33
36
|
skippedInaccessible: number;
|
|
34
37
|
symlinksNotFollowed: number;
|
|
35
38
|
};
|
|
@@ -77,70 +80,6 @@ export interface SearchContentResult {
|
|
|
77
80
|
stoppedReason?: 'maxResults' | 'maxFiles' | 'timeout';
|
|
78
81
|
};
|
|
79
82
|
}
|
|
80
|
-
export interface DirectoryAnalysis {
|
|
81
|
-
path: string;
|
|
82
|
-
totalFiles: number;
|
|
83
|
-
totalDirectories: number;
|
|
84
|
-
totalSize: number;
|
|
85
|
-
fileTypes: Record<string, number>;
|
|
86
|
-
largestFiles: {
|
|
87
|
-
path: string;
|
|
88
|
-
size: number;
|
|
89
|
-
}[];
|
|
90
|
-
recentlyModified: {
|
|
91
|
-
path: string;
|
|
92
|
-
modified: Date;
|
|
93
|
-
}[];
|
|
94
|
-
maxDepth: number;
|
|
95
|
-
}
|
|
96
|
-
export interface AnalyzeDirectoryResult {
|
|
97
|
-
analysis: DirectoryAnalysis;
|
|
98
|
-
summary: {
|
|
99
|
-
truncated: boolean;
|
|
100
|
-
skippedInaccessible: number;
|
|
101
|
-
symlinksNotFollowed: number;
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
export interface TreeEntry {
|
|
105
|
-
name: string;
|
|
106
|
-
type: 'file' | 'directory';
|
|
107
|
-
size?: number;
|
|
108
|
-
children?: TreeEntry[];
|
|
109
|
-
}
|
|
110
|
-
export interface DirectoryTreeResult {
|
|
111
|
-
tree: TreeEntry;
|
|
112
|
-
summary: {
|
|
113
|
-
totalFiles: number;
|
|
114
|
-
totalDirectories: number;
|
|
115
|
-
maxDepthReached: number;
|
|
116
|
-
truncated: boolean;
|
|
117
|
-
skippedInaccessible: number;
|
|
118
|
-
symlinksNotFollowed: number;
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
export interface MediaFileResult {
|
|
122
|
-
path: string;
|
|
123
|
-
mimeType: string;
|
|
124
|
-
size: number;
|
|
125
|
-
data: string;
|
|
126
|
-
}
|
|
127
|
-
export type ChecksumAlgorithm = 'md5' | 'sha1' | 'sha256' | 'sha512';
|
|
128
|
-
export type ChecksumEncoding = 'hex' | 'base64';
|
|
129
|
-
export interface ChecksumResult {
|
|
130
|
-
path: string;
|
|
131
|
-
checksum?: string;
|
|
132
|
-
algorithm: ChecksumAlgorithm;
|
|
133
|
-
size?: number;
|
|
134
|
-
error?: string;
|
|
135
|
-
}
|
|
136
|
-
export interface ComputeChecksumsResult {
|
|
137
|
-
results: ChecksumResult[];
|
|
138
|
-
summary: {
|
|
139
|
-
total: number;
|
|
140
|
-
succeeded: number;
|
|
141
|
-
failed: number;
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
83
|
export interface MultipleFileInfoResult {
|
|
145
84
|
path: string;
|
|
146
85
|
info?: FileInfo;
|
|
@@ -155,39 +94,6 @@ export interface GetMultipleFileInfoResult {
|
|
|
155
94
|
totalSize: number;
|
|
156
95
|
};
|
|
157
96
|
}
|
|
158
|
-
export type DefinitionType = 'function' | 'class' | 'interface' | 'type' | 'enum' | 'variable';
|
|
159
|
-
export interface SearchDefinitionsOptions {
|
|
160
|
-
path: string;
|
|
161
|
-
name?: string;
|
|
162
|
-
type?: DefinitionType;
|
|
163
|
-
caseSensitive?: boolean;
|
|
164
|
-
maxResults?: number;
|
|
165
|
-
excludePatterns?: string[];
|
|
166
|
-
includeHidden?: boolean;
|
|
167
|
-
contextLines?: number;
|
|
168
|
-
}
|
|
169
|
-
export interface DefinitionMatch {
|
|
170
|
-
file: string;
|
|
171
|
-
line: number;
|
|
172
|
-
definitionType: DefinitionType;
|
|
173
|
-
name: string;
|
|
174
|
-
content: string;
|
|
175
|
-
contextBefore?: string[];
|
|
176
|
-
contextAfter?: string[];
|
|
177
|
-
exported: boolean;
|
|
178
|
-
}
|
|
179
|
-
export interface SearchDefinitionsResult {
|
|
180
|
-
basePath: string;
|
|
181
|
-
searchName?: string;
|
|
182
|
-
searchType?: DefinitionType;
|
|
183
|
-
definitions: DefinitionMatch[];
|
|
184
|
-
summary: {
|
|
185
|
-
filesScanned: number;
|
|
186
|
-
filesMatched: number;
|
|
187
|
-
totalDefinitions: number;
|
|
188
|
-
truncated: boolean;
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
97
|
export declare const ErrorCode: {
|
|
192
98
|
readonly E_ACCESS_DENIED: "E_ACCESS_DENIED";
|
|
193
99
|
readonly E_NOT_FOUND: "E_NOT_FOUND";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,OAAO,CAAC;QACnB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;KACvD,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,6BAA6B,EAAE,MAAM,CAAC;QACtC,aAAa,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;KACvD,CAAC;CACH;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;QACzC,mBAAmB,EAAE,MAAM,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;KACvD,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,6BAA6B,EAAE,MAAM,CAAC;QACtC,aAAa,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;KACvD,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;CAYZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC"}
|
package/dist/config/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AA0GA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,SAAS,EAAE,WAAW;CACd,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { setAllowedDirectoriesResolved } from './lib/path-validation.js';
|
|
3
3
|
import { createServer, parseArgs, startServer } from './server.js';
|
|
4
|
+
const SHUTDOWN_TIMEOUT_MS = 5000;
|
|
5
|
+
let activeServer;
|
|
6
|
+
let shutdownStarted = false;
|
|
7
|
+
async function shutdown(signal) {
|
|
8
|
+
if (shutdownStarted)
|
|
9
|
+
return;
|
|
10
|
+
shutdownStarted = true;
|
|
11
|
+
const timer = setTimeout(() => {
|
|
12
|
+
process.exit(0);
|
|
13
|
+
}, SHUTDOWN_TIMEOUT_MS);
|
|
14
|
+
try {
|
|
15
|
+
if (activeServer) {
|
|
16
|
+
await activeServer.close();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.error(`Shutdown error (${signal}):`, error instanceof Error ? error.message : String(error));
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
clearTimeout(timer);
|
|
24
|
+
process.exit(0);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
4
27
|
async function main() {
|
|
5
28
|
const { allowedDirs, allowCwd } = await parseArgs();
|
|
6
29
|
if (allowedDirs.length > 0) {
|
|
@@ -11,13 +34,14 @@ async function main() {
|
|
|
11
34
|
console.error(`No directories specified via CLI. Will use MCP Roots${allowCwd ? ' or current working directory' : ''}.`);
|
|
12
35
|
}
|
|
13
36
|
const server = createServer({ allowCwd, cliAllowedDirs: allowedDirs });
|
|
37
|
+
activeServer = server;
|
|
14
38
|
await startServer(server);
|
|
15
39
|
}
|
|
16
40
|
process.on('SIGTERM', () => {
|
|
17
|
-
|
|
41
|
+
void shutdown('SIGTERM');
|
|
18
42
|
});
|
|
19
43
|
process.on('SIGINT', () => {
|
|
20
|
-
|
|
44
|
+
void shutdown('SIGINT');
|
|
21
45
|
});
|
|
22
46
|
main().catch((error) => {
|
|
23
47
|
console.error('Fatal error:', error instanceof Error ? error.message : String(error));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEnE,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,IAAI,YAAmC,CAAC;AACxC,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,KAAK,UAAU,QAAQ,CAAC,MAAc;IACpC,IAAI,eAAe;QAAE,OAAO;IAC5B,eAAe,GAAG,IAAI,CAAC;IAEvB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAExB,IAAI,CAAC;QACH,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CACX,mBAAmB,MAAM,IAAI,EAC7B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,EAAE,CAAC;IAEpD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,6BAA6B,CAAC,WAAW,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CACX,uDAAuD,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,GAAG,CAC1G,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IACvE,YAAY,GAAG,MAAM,CAAC;IACtB,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,KAAK,CACX,cAAc,EACd,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/instructions.md
CHANGED
|
@@ -1,59 +1,65 @@
|
|
|
1
1
|
# Filesystem Context MCP Server
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Read-only tools for exploring directories, searching files, and reading
|
|
4
|
+
> content via the Model Context Protocol (MCP).
|
|
4
5
|
|
|
5
|
-
This server
|
|
6
|
+
This server lets assistants inspect files safely. All operations are limited to
|
|
7
|
+
explicitly allowed directories and never write to disk.
|
|
6
8
|
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
## Quick Reference
|
|
10
12
|
|
|
11
|
-
| Goal | Tool | Key Parameters
|
|
12
|
-
| ------------------- | -------------------------- |
|
|
13
|
-
| Check access | `list_allowed_directories` |
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
13
|
+
| Goal | Tool | Key Parameters |
|
|
14
|
+
| ------------------- | -------------------------- | ----------------------------------- |
|
|
15
|
+
| Check access | `list_allowed_directories` | - |
|
|
16
|
+
| List contents | `list_directory` | `recursive`, `maxDepth`, `sortBy` |
|
|
17
|
+
| Find files | `search_files` | `pattern` (glob), `maxResults` |
|
|
18
|
+
| Search in files | `search_content` | `pattern` (regex), `contextLines` |
|
|
19
|
+
| Read file | `read_file` | `head`, `tail`, `lineStart/lineEnd` |
|
|
20
|
+
| Read multiple files | `read_multiple_files` | `paths[]` - preferred for 2+ |
|
|
21
|
+
| File metadata | `get_file_info` | `path` |
|
|
22
|
+
| Batch file metadata | `get_multiple_file_info` | `paths[]` - preferred for 2+ |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Core Concepts
|
|
27
|
+
|
|
28
|
+
- **Allowed directories:** All tools only operate inside the allowed roots.
|
|
29
|
+
Run `list_allowed_directories` first to confirm scope.
|
|
30
|
+
- **Globs vs regex:** `search_files` uses glob patterns, `search_content` uses
|
|
31
|
+
regex (set `isLiteral=true` to search for exact text).
|
|
32
|
+
- **Symlinks:** Symlinks are never followed for security. You can request the
|
|
33
|
+
target path (e.g., `includeSymlinkTargets`) but traversal stays inside roots.
|
|
26
34
|
|
|
27
35
|
---
|
|
28
36
|
|
|
29
37
|
## Workflows
|
|
30
38
|
|
|
31
|
-
### Project
|
|
39
|
+
### Project discovery
|
|
32
40
|
|
|
33
41
|
```text
|
|
34
|
-
list_allowed_directories
|
|
42
|
+
list_allowed_directories
|
|
43
|
+
list_directory(path=".", recursive=true, maxDepth=3)
|
|
44
|
+
read_multiple_files(["package.json", "README.md"])
|
|
35
45
|
```
|
|
36
46
|
|
|
37
|
-
### Find
|
|
47
|
+
### Find and read code
|
|
38
48
|
|
|
39
49
|
```text
|
|
40
|
-
search_files(pattern="**/*.ts")
|
|
50
|
+
search_files(pattern="**/*.ts")
|
|
51
|
+
read_multiple_files([...results])
|
|
41
52
|
```
|
|
42
53
|
|
|
43
|
-
### Search
|
|
54
|
+
### Search patterns in code
|
|
44
55
|
|
|
45
56
|
```text
|
|
46
57
|
search_content(pattern="TODO|FIXME", filePattern="**/*.ts", contextLines=2)
|
|
47
58
|
```
|
|
48
59
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
```text
|
|
52
|
-
search_definitions(path="src/", name="User") → Find classes/functions/types named "User"
|
|
53
|
-
search_definitions(path="src/", type="interface") → Discover all interfaces
|
|
54
|
-
```
|
|
60
|
+
---
|
|
55
61
|
|
|
56
|
-
|
|
62
|
+
## Common Glob Patterns
|
|
57
63
|
|
|
58
64
|
| Pattern | Matches |
|
|
59
65
|
| --------------------- | ----------------------------------------- |
|
|
@@ -69,185 +75,160 @@ search_definitions(path="src/", type="interface") → Discover all interfaces
|
|
|
69
75
|
|
|
70
76
|
**Do:**
|
|
71
77
|
|
|
72
|
-
- Use `read_multiple_files` for 2+ files (parallel, resilient)
|
|
73
|
-
- Set `maxResults`, `maxDepth`, `maxEntries` limits
|
|
74
|
-
- Use `excludePatterns=["node_modules", ".git", "dist"]
|
|
75
|
-
- Preview with `head=50` before full reads
|
|
78
|
+
- Use `read_multiple_files` for 2+ files (parallel, resilient).
|
|
79
|
+
- Set `maxResults`, `maxDepth`, and `maxEntries` limits.
|
|
80
|
+
- Use `excludePatterns=["node_modules/**", ".git/**", "dist/**"]`.
|
|
81
|
+
- Preview large files with `head=50` before full reads.
|
|
76
82
|
|
|
77
83
|
**Don't:**
|
|
78
84
|
|
|
79
|
-
- Loop `read_file`
|
|
80
|
-
-
|
|
81
|
-
- Search without `maxResults` on large codebases
|
|
85
|
+
- Loop `read_file` for multiple files.
|
|
86
|
+
- Run recursive searches without `maxDepth`.
|
|
87
|
+
- Search without `maxResults` on large codebases.
|
|
82
88
|
|
|
83
|
-
|
|
89
|
+
---
|
|
84
90
|
|
|
85
|
-
|
|
91
|
+
## Tool Details
|
|
86
92
|
|
|
87
|
-
|
|
93
|
+
### `list_allowed_directories`
|
|
88
94
|
|
|
89
|
-
|
|
90
|
-
| ----------------- | ------- | --------------------- |
|
|
91
|
-
| `path` | — | Directory path |
|
|
92
|
-
| `maxDepth` | 5 | Depth limit (0-50) |
|
|
93
|
-
| `excludePatterns` | [] | Glob patterns to skip |
|
|
94
|
-
| `includeHidden` | false | Include dotfiles |
|
|
95
|
-
| `includeSize` | false | Show file sizes |
|
|
96
|
-
| `maxFiles` | — | Limit total files |
|
|
95
|
+
List all directories this server can access.
|
|
97
96
|
|
|
98
|
-
|
|
97
|
+
| Parameter | Default | Description |
|
|
98
|
+
| --------- | ------- | ----------- |
|
|
99
|
+
| (none) | - | - |
|
|
99
100
|
|
|
100
|
-
|
|
101
|
+
---
|
|
101
102
|
|
|
102
|
-
|
|
103
|
-
| ----------------- | ------- | ------------------------- |
|
|
104
|
-
| `path` | - | Base directory |
|
|
105
|
-
| `pattern` | - | Glob: `**/*.ts`, `src/**` |
|
|
106
|
-
| `excludePatterns` | [] | Patterns to skip |
|
|
107
|
-
| `maxResults` | - | Limit (up to 10,000) |
|
|
108
|
-
| `sortBy` | "path" | `name/size/modified/path` |
|
|
109
|
-
| `includeHidden` | false | Include dotfiles |
|
|
103
|
+
### `list_directory`
|
|
110
104
|
|
|
111
|
-
|
|
105
|
+
List contents of a directory with optional recursion. Returns entry name,
|
|
106
|
+
relative path, type, size, and modified date. Symlinks are not followed.
|
|
112
107
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
|
116
|
-
|
|
|
117
|
-
| `
|
|
118
|
-
| `pattern`
|
|
119
|
-
| `
|
|
120
|
-
| `
|
|
121
|
-
| `
|
|
122
|
-
| `
|
|
123
|
-
| `isLiteral` | false | Escape regex |
|
|
124
|
-
| `maxResults` | 100 | Limit matches |
|
|
125
|
-
| `skipBinary` | true | Skip binary files |
|
|
126
|
-
|
|
127
|
-
### `search_definitions`
|
|
128
|
-
|
|
129
|
-
Find code definitions (classes, functions, interfaces, types, enums, variables) without manual regex construction.
|
|
130
|
-
|
|
131
|
-
| Parameter | Default | Description |
|
|
132
|
-
| ----------------- | ------- | ----------------------------------------------------------------------------- |
|
|
133
|
-
| `path` | - | Base directory to search |
|
|
134
|
-
| `name` | - | Definition name to find |
|
|
135
|
-
| `type` | - | Definition type: `class`, `function`, `interface`, `type`, `enum`, `variable` |
|
|
136
|
-
| `caseSensitive` | true | Case-sensitive name matching |
|
|
137
|
-
| `maxResults` | 100 | Limit matches |
|
|
138
|
-
| `excludePatterns` | [] | Glob patterns to exclude |
|
|
139
|
-
| `includeHidden` | false | Include hidden files and directories |
|
|
140
|
-
| `contextLines` | 0 | Lines of context before/after match (0-10) |
|
|
141
|
-
|
|
142
|
-
**Usage patterns:**
|
|
143
|
-
|
|
144
|
-
- **Find by name:** `search_definitions(path="src/", name="UserService")` — finds class/function/type named UserService
|
|
145
|
-
- **Discovery mode:** `search_definitions(path="src/", type="interface")` — lists all interfaces
|
|
146
|
-
- **Combined:** `search_definitions(path="src/", name="Handler", type="class")` — finds classes named "Handler"
|
|
108
|
+
| Parameter | Default | Description |
|
|
109
|
+
| ----------------------- | ------- | ---------------------------------------- |
|
|
110
|
+
| `path` | - | Directory path |
|
|
111
|
+
| `recursive` | false | Include subdirectories |
|
|
112
|
+
| `excludePatterns` | [] | Glob patterns to skip |
|
|
113
|
+
| `pattern` | - | Glob pattern to include (relative only) |
|
|
114
|
+
| `sortBy` | "name" | `name/size/modified/type` |
|
|
115
|
+
| `maxDepth` | 10 | Depth when recursive |
|
|
116
|
+
| `maxEntries` | 10000 | Limit (up to 100,000) |
|
|
117
|
+
| `includeSymlinkTargets` | false | Include target paths for symlink entries |
|
|
147
118
|
|
|
148
|
-
|
|
119
|
+
Structured output note: `entries[].relativePath` is relative to the base path.
|
|
149
120
|
|
|
150
|
-
|
|
121
|
+
---
|
|
151
122
|
|
|
152
|
-
|
|
153
|
-
| ------------ | ------- | --------------------------------------------------- |
|
|
154
|
-
| `path` | - | File path |
|
|
155
|
-
| `encoding` | utf-8 | `utf-8/ascii/base64/hex/latin1` |
|
|
156
|
-
| `maxSize` | 10MB | Size limit |
|
|
157
|
-
| `skipBinary` | false | Reject binary files (use `read_media_file` instead) |
|
|
158
|
-
| `head` | - | First N lines |
|
|
159
|
-
| `tail` | - | Last N lines |
|
|
160
|
-
| `lineStart` | - | Start line (1-indexed) |
|
|
161
|
-
| `lineEnd` | - | End line (inclusive) |
|
|
123
|
+
### `search_files`
|
|
162
124
|
|
|
163
|
-
|
|
125
|
+
Find files (not directories) using glob patterns.
|
|
126
|
+
|
|
127
|
+
| Parameter | Default | Description |
|
|
128
|
+
| ----------------- | -------- | ---------------------------------------- |
|
|
129
|
+
| `path` | - | Base directory |
|
|
130
|
+
| `pattern` | - | Glob: `**/*.ts`, `src/**` |
|
|
131
|
+
| `excludePatterns` | built-in | Patterns to skip (pass [] to disable) |
|
|
132
|
+
| `maxResults` | 100 | Limit (up to 10,000) |
|
|
133
|
+
| `sortBy` | "path" | `name/size/modified/path` |
|
|
134
|
+
| `maxDepth` | 10 | Maximum depth to scan |
|
|
135
|
+
| `maxFilesScanned` | 20000 | Maximum files to scan before stopping |
|
|
136
|
+
| `timeoutMs` | 30000 | Timeout in milliseconds |
|
|
137
|
+
| `baseNameMatch` | false | Match basename for patterns without '/' |
|
|
138
|
+
| `skipSymlinks` | true | Must remain true (symlink traversal off) |
|
|
139
|
+
| `includeHidden` | false | Include dotfiles and hidden directories |
|
|
164
140
|
|
|
165
|
-
|
|
141
|
+
---
|
|
166
142
|
|
|
167
|
-
|
|
143
|
+
### `search_content`
|
|
168
144
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
|
172
|
-
|
|
|
173
|
-
| `
|
|
174
|
-
| `
|
|
175
|
-
| `
|
|
176
|
-
| `
|
|
177
|
-
| `
|
|
145
|
+
Grep-like search across file contents using regex.
|
|
146
|
+
|
|
147
|
+
| Parameter | Default | Description |
|
|
148
|
+
| ----------------- | -------- | ------------------------------------------ | ------ |
|
|
149
|
+
| `path` | - | Base directory |
|
|
150
|
+
| `pattern` | - | Regex: `TODO | FIXME` |
|
|
151
|
+
| `filePattern` | `**/*` | Glob filter for files |
|
|
152
|
+
| `excludePatterns` | built-in | Glob patterns to skip (pass [] to disable) |
|
|
153
|
+
| `contextLines` | 0 | Lines before/after match (0-10) |
|
|
154
|
+
| `caseSensitive` | false | Case-sensitive matching |
|
|
155
|
+
| `wholeWord` | false | Match whole words only |
|
|
156
|
+
| `isLiteral` | false | Treat pattern as literal string |
|
|
157
|
+
| `maxResults` | 100 | Maximum matches to return |
|
|
158
|
+
| `maxFileSize` | 1MB | Maximum file size to scan |
|
|
159
|
+
| `maxFilesScanned` | 20000 | Maximum files to scan before stopping |
|
|
160
|
+
| `timeoutMs` | 30000 | Timeout in milliseconds |
|
|
161
|
+
| `skipBinary` | true | Skip likely-binary files |
|
|
162
|
+
| `includeHidden` | false | Include dotfiles and hidden directories |
|
|
163
|
+
|
|
164
|
+
Note: `excludePatterns` uses a built-in list of common dependency/build
|
|
165
|
+
folders (e.g., `node_modules`, `dist`, `build`, `coverage`, `.git`, `.vscode`).
|
|
166
|
+
Pass `excludePatterns: []` to disable it.
|
|
178
167
|
|
|
179
|
-
|
|
168
|
+
---
|
|
180
169
|
|
|
181
|
-
### `
|
|
170
|
+
### `read_file`
|
|
182
171
|
|
|
183
|
-
|
|
172
|
+
Read a single text file with optional line selection.
|
|
184
173
|
|
|
185
|
-
| Parameter
|
|
186
|
-
|
|
|
187
|
-
| `path`
|
|
188
|
-
| `
|
|
189
|
-
| `
|
|
190
|
-
| `
|
|
191
|
-
| `
|
|
192
|
-
| `
|
|
193
|
-
| `
|
|
174
|
+
| Parameter | Default | Description |
|
|
175
|
+
| ------------ | ------- | ------------------------------- |
|
|
176
|
+
| `path` | - | File path |
|
|
177
|
+
| `encoding` | utf-8 | `utf-8/ascii/base64/hex/latin1` |
|
|
178
|
+
| `maxSize` | 10MB | Size limit |
|
|
179
|
+
| `skipBinary` | true | Reject binary files |
|
|
180
|
+
| `head` | - | First N lines |
|
|
181
|
+
| `tail` | - | Last N lines |
|
|
182
|
+
| `lineStart` | - | Start line (1-indexed) |
|
|
183
|
+
| `lineEnd` | - | End line (inclusive) |
|
|
194
184
|
|
|
195
|
-
|
|
185
|
+
Note: `head`/`tail` cannot be combined with `lineStart`/`lineEnd`.
|
|
196
186
|
|
|
197
|
-
|
|
187
|
+
---
|
|
198
188
|
|
|
199
|
-
|
|
189
|
+
### `read_multiple_files`
|
|
200
190
|
|
|
201
|
-
|
|
202
|
-
| ----------------- | ------- | ------------------- |
|
|
203
|
-
| `path` | - | Directory path |
|
|
204
|
-
| `maxDepth` | 10 | Analysis depth |
|
|
205
|
-
| `topN` | 10 | Top largest/recent |
|
|
206
|
-
| `maxEntries` | 20000 | Max entries scanned |
|
|
207
|
-
| `excludePatterns` | [] | Patterns to skip |
|
|
191
|
+
Read multiple files in parallel. Each file reports success or error.
|
|
208
192
|
|
|
209
|
-
|
|
193
|
+
| Parameter | Default | Description |
|
|
194
|
+
| -------------- | ------- | ------------------------------- |
|
|
195
|
+
| `paths` | - | Array (max 100) |
|
|
196
|
+
| `encoding` | utf-8 | Encoding for all |
|
|
197
|
+
| `maxSize` | 10MB | Per-file limit |
|
|
198
|
+
| `maxTotalSize` | 100MB | Total size limit across files |
|
|
199
|
+
| `head` | - | First N lines each |
|
|
200
|
+
| `tail` | - | Last N lines each |
|
|
201
|
+
| `lineStart` | - | Start line (1-indexed) per file |
|
|
202
|
+
| `lineEnd` | - | End line (inclusive) per file |
|
|
210
203
|
|
|
211
|
-
|
|
204
|
+
Note: `head`/`tail` cannot be combined with `lineStart`/`lineEnd`.
|
|
212
205
|
|
|
213
|
-
|
|
214
|
-
| --------- | ------- | --------------- |
|
|
215
|
-
| `path` | — | Media file path |
|
|
216
|
-
| `maxSize` | 50MB | Size limit |
|
|
206
|
+
---
|
|
217
207
|
|
|
218
208
|
### `get_file_info`
|
|
219
209
|
|
|
220
|
-
|
|
210
|
+
Get metadata about a file or directory without reading contents.
|
|
221
211
|
|
|
222
212
|
| Parameter | Default | Description |
|
|
223
213
|
| --------- | ------- | ------------------------- |
|
|
224
|
-
| `path` |
|
|
214
|
+
| `path` | - | Path to file or directory |
|
|
225
215
|
|
|
226
|
-
|
|
216
|
+
Returns: name, path, type, size, created, modified, accessed, permissions,
|
|
217
|
+
isHidden, mimeType, symlinkTarget (if applicable).
|
|
218
|
+
|
|
219
|
+
---
|
|
227
220
|
|
|
228
221
|
### `get_multiple_file_info`
|
|
229
222
|
|
|
230
|
-
|
|
223
|
+
Get metadata for multiple files/directories in parallel.
|
|
231
224
|
|
|
232
225
|
| Parameter | Default | Description |
|
|
233
226
|
| ----------------- | ------- | --------------------------- |
|
|
234
|
-
| `paths` |
|
|
227
|
+
| `paths` | - | Array of paths (max 100) |
|
|
235
228
|
| `includeMimeType` | true | Include MIME type detection |
|
|
236
229
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
### `compute_checksums`
|
|
240
|
-
|
|
241
|
-
Compute cryptographic hashes for files using streaming (memory-efficient).
|
|
242
|
-
|
|
243
|
-
| Parameter | Default | Description |
|
|
244
|
-
| ------------- | ------- | --------------------------------------- |
|
|
245
|
-
| `paths` | — | Array of file paths (max 50) |
|
|
246
|
-
| `algorithm` | sha256 | Hash: `md5`, `sha1`, `sha256`, `sha512` |
|
|
247
|
-
| `encoding` | hex | Output: `hex` or `base64` |
|
|
248
|
-
| `maxFileSize` | 100MB | Skip files larger than this |
|
|
249
|
-
|
|
250
|
-
**Returns:** Array of checksums with file sizes, plus summary. Useful for integrity checks and duplicate detection.
|
|
230
|
+
Returns: Array of file info with individual success/error status, plus
|
|
231
|
+
summary (total, succeeded, failed, totalSize).
|
|
251
232
|
|
|
252
233
|
---
|
|
253
234
|
|
|
@@ -256,19 +237,19 @@ Compute cryptographic hashes for files using streaming (memory-efficient).
|
|
|
256
237
|
| Code | Cause | Solution |
|
|
257
238
|
| --------------------- | ---------------------------- | ------------------------------------- |
|
|
258
239
|
| `E_ACCESS_DENIED` | Path outside allowed dirs | Check `list_allowed_directories` |
|
|
259
|
-
| `E_NOT_FOUND` | Path
|
|
240
|
+
| `E_NOT_FOUND` | Path does not exist | Verify path with `list_directory` |
|
|
260
241
|
| `E_NOT_FILE` | Expected file, got directory | Use `list_directory` instead |
|
|
261
242
|
| `E_NOT_DIRECTORY` | Expected directory, got file | Use `read_file` instead |
|
|
262
243
|
| `E_TOO_LARGE` | File exceeds size limit | Use `head/tail` or increase `maxSize` |
|
|
263
|
-
| `E_TIMEOUT` | Operation took too long | Reduce limits
|
|
264
|
-
| `E_INVALID_PATTERN` | Malformed glob/regex | Check
|
|
244
|
+
| `E_TIMEOUT` | Operation took too long | Reduce scope or increase limits |
|
|
245
|
+
| `E_INVALID_PATTERN` | Malformed glob/regex | Check pattern syntax |
|
|
265
246
|
| `E_PERMISSION_DENIED` | OS-level access denied | Check file permissions |
|
|
266
247
|
|
|
267
248
|
---
|
|
268
249
|
|
|
269
250
|
## Security
|
|
270
251
|
|
|
271
|
-
-
|
|
272
|
-
-
|
|
273
|
-
-
|
|
274
|
-
-
|
|
252
|
+
- Read-only: no writes, deletes, or modifications.
|
|
253
|
+
- Path validation: symlinks cannot escape allowed directories.
|
|
254
|
+
- Binary detection: prevents accidental binary reads.
|
|
255
|
+
- Input sanitization: patterns validated for ReDoS protection.
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -3,18 +3,14 @@ export declare const DIR_TRAVERSAL_CONCURRENCY: number;
|
|
|
3
3
|
export declare const REGEX_MATCH_TIMEOUT_MS: number;
|
|
4
4
|
export declare const MAX_SEARCHABLE_FILE_SIZE: number;
|
|
5
5
|
export declare const MAX_TEXT_FILE_SIZE: number;
|
|
6
|
-
export declare const MAX_MEDIA_FILE_SIZE: number;
|
|
7
6
|
export declare const MAX_LINE_CONTENT_LENGTH = 200;
|
|
7
|
+
export declare const MAX_SEARCH_LINE_LENGTH = 100000;
|
|
8
8
|
export declare const BINARY_CHECK_BUFFER_SIZE = 512;
|
|
9
9
|
export declare const DEFAULT_MAX_DEPTH: number;
|
|
10
10
|
export declare const DEFAULT_MAX_RESULTS: number;
|
|
11
11
|
export declare const DEFAULT_LIST_MAX_ENTRIES: number;
|
|
12
12
|
export declare const DEFAULT_SEARCH_MAX_FILES: number;
|
|
13
13
|
export declare const DEFAULT_SEARCH_TIMEOUT_MS: number;
|
|
14
|
-
export declare const DEFAULT_TOP_N: number;
|
|
15
|
-
export declare const DEFAULT_ANALYZE_MAX_ENTRIES: number;
|
|
16
|
-
export declare const DEFAULT_TREE_DEPTH: number;
|
|
17
|
-
export declare const DEFAULT_TREE_MAX_FILES: number;
|
|
18
14
|
export declare const KNOWN_BINARY_EXTENSIONS: Set<string>;
|
|
19
15
|
export declare const DEFAULT_EXCLUDE_PATTERNS: string[];
|
|
20
16
|
export declare function getMimeType(ext: string): string;
|