@j0hanz/filesystem-context-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +369 -0
  2. package/dist/__tests__/errors.test.d.ts +2 -0
  3. package/dist/__tests__/errors.test.d.ts.map +1 -0
  4. package/dist/__tests__/errors.test.js +88 -0
  5. package/dist/__tests__/errors.test.js.map +1 -0
  6. package/dist/__tests__/file-operations.test.d.ts +2 -0
  7. package/dist/__tests__/file-operations.test.d.ts.map +1 -0
  8. package/dist/__tests__/file-operations.test.js +230 -0
  9. package/dist/__tests__/file-operations.test.js.map +1 -0
  10. package/dist/__tests__/lib/errors.test.d.ts +2 -0
  11. package/dist/__tests__/lib/errors.test.d.ts.map +1 -0
  12. package/dist/__tests__/lib/errors.test.js +156 -0
  13. package/dist/__tests__/lib/errors.test.js.map +1 -0
  14. package/dist/__tests__/lib/file-operations.test.d.ts +2 -0
  15. package/dist/__tests__/lib/file-operations.test.d.ts.map +1 -0
  16. package/dist/__tests__/lib/file-operations.test.js +417 -0
  17. package/dist/__tests__/lib/file-operations.test.js.map +1 -0
  18. package/dist/__tests__/lib/fs-helpers.test.d.ts +2 -0
  19. package/dist/__tests__/lib/fs-helpers.test.d.ts.map +1 -0
  20. package/dist/__tests__/lib/fs-helpers.test.js +183 -0
  21. package/dist/__tests__/lib/fs-helpers.test.js.map +1 -0
  22. package/dist/__tests__/lib/path-validation.test.d.ts +2 -0
  23. package/dist/__tests__/lib/path-validation.test.d.ts.map +1 -0
  24. package/dist/__tests__/lib/path-validation.test.js +103 -0
  25. package/dist/__tests__/lib/path-validation.test.js.map +1 -0
  26. package/dist/__tests__/path-validation.test.d.ts +2 -0
  27. package/dist/__tests__/path-validation.test.d.ts.map +1 -0
  28. package/dist/__tests__/path-validation.test.js +92 -0
  29. package/dist/__tests__/path-validation.test.js.map +1 -0
  30. package/dist/config/types.d.ts +222 -0
  31. package/dist/config/types.d.ts.map +1 -0
  32. package/dist/config/types.js +23 -0
  33. package/dist/config/types.js.map +1 -0
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +50 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/lib/constants.d.ts +16 -0
  39. package/dist/lib/constants.d.ts.map +1 -0
  40. package/dist/lib/constants.js +335 -0
  41. package/dist/lib/constants.js.map +1 -0
  42. package/dist/lib/errors.d.ts +33 -0
  43. package/dist/lib/errors.d.ts.map +1 -0
  44. package/dist/lib/errors.js +205 -0
  45. package/dist/lib/errors.js.map +1 -0
  46. package/dist/lib/file-operations.d.ts +69 -0
  47. package/dist/lib/file-operations.d.ts.map +1 -0
  48. package/dist/lib/file-operations.js +1003 -0
  49. package/dist/lib/file-operations.js.map +1 -0
  50. package/dist/lib/formatters.d.ts +30 -0
  51. package/dist/lib/formatters.d.ts.map +1 -0
  52. package/dist/lib/formatters.js +204 -0
  53. package/dist/lib/formatters.js.map +1 -0
  54. package/dist/lib/fs-helpers.d.ts +29 -0
  55. package/dist/lib/fs-helpers.d.ts.map +1 -0
  56. package/dist/lib/fs-helpers.js +295 -0
  57. package/dist/lib/fs-helpers.js.map +1 -0
  58. package/dist/lib/path-utils.d.ts +12 -0
  59. package/dist/lib/path-utils.d.ts.map +1 -0
  60. package/dist/lib/path-utils.js +34 -0
  61. package/dist/lib/path-utils.js.map +1 -0
  62. package/dist/lib/path-validation.d.ts +31 -0
  63. package/dist/lib/path-validation.d.ts.map +1 -0
  64. package/dist/lib/path-validation.js +181 -0
  65. package/dist/lib/path-validation.js.map +1 -0
  66. package/dist/lib/roots-utils.d.ts +7 -0
  67. package/dist/lib/roots-utils.d.ts.map +1 -0
  68. package/dist/lib/roots-utils.js +39 -0
  69. package/dist/lib/roots-utils.js.map +1 -0
  70. package/dist/lib/types.d.ts +6 -0
  71. package/dist/lib/types.d.ts.map +1 -0
  72. package/dist/lib/types.js +2 -0
  73. package/dist/lib/types.js.map +1 -0
  74. package/dist/schemas/common.d.ts +41 -0
  75. package/dist/schemas/common.d.ts.map +1 -0
  76. package/dist/schemas/common.js +21 -0
  77. package/dist/schemas/common.js.map +1 -0
  78. package/dist/schemas/index.d.ts +3 -0
  79. package/dist/schemas/index.d.ts.map +1 -0
  80. package/dist/schemas/index.js +5 -0
  81. package/dist/schemas/index.js.map +1 -0
  82. package/dist/schemas/inputs.d.ts +72 -0
  83. package/dist/schemas/inputs.d.ts.map +1 -0
  84. package/dist/schemas/inputs.js +326 -0
  85. package/dist/schemas/inputs.js.map +1 -0
  86. package/dist/schemas/outputs.d.ts +476 -0
  87. package/dist/schemas/outputs.d.ts.map +1 -0
  88. package/dist/schemas/outputs.js +181 -0
  89. package/dist/schemas/outputs.js.map +1 -0
  90. package/dist/server.d.ts +5 -0
  91. package/dist/server.d.ts.map +1 -0
  92. package/dist/server.js +83 -0
  93. package/dist/server.js.map +1 -0
  94. package/dist/tools/analyze-directory.d.ts +3 -0
  95. package/dist/tools/analyze-directory.d.ts.map +1 -0
  96. package/dist/tools/analyze-directory.js +57 -0
  97. package/dist/tools/analyze-directory.js.map +1 -0
  98. package/dist/tools/directory-tree.d.ts +3 -0
  99. package/dist/tools/directory-tree.d.ts.map +1 -0
  100. package/dist/tools/directory-tree.js +47 -0
  101. package/dist/tools/directory-tree.js.map +1 -0
  102. package/dist/tools/get-file-info.d.ts +3 -0
  103. package/dist/tools/get-file-info.d.ts.map +1 -0
  104. package/dist/tools/get-file-info.js +44 -0
  105. package/dist/tools/get-file-info.js.map +1 -0
  106. package/dist/tools/index.d.ts +3 -0
  107. package/dist/tools/index.d.ts.map +1 -0
  108. package/dist/tools/index.js +23 -0
  109. package/dist/tools/index.js.map +1 -0
  110. package/dist/tools/list-allowed-dirs.d.ts +3 -0
  111. package/dist/tools/list-allowed-dirs.d.ts.map +1 -0
  112. package/dist/tools/list-allowed-dirs.js +23 -0
  113. package/dist/tools/list-allowed-dirs.js.map +1 -0
  114. package/dist/tools/list-directory.d.ts +3 -0
  115. package/dist/tools/list-directory.d.ts.map +1 -0
  116. package/dist/tools/list-directory.js +60 -0
  117. package/dist/tools/list-directory.js.map +1 -0
  118. package/dist/tools/read-file.d.ts +3 -0
  119. package/dist/tools/read-file.d.ts.map +1 -0
  120. package/dist/tools/read-file.js +55 -0
  121. package/dist/tools/read-file.js.map +1 -0
  122. package/dist/tools/read-media-file.d.ts +3 -0
  123. package/dist/tools/read-media-file.d.ts.map +1 -0
  124. package/dist/tools/read-media-file.js +48 -0
  125. package/dist/tools/read-media-file.js.map +1 -0
  126. package/dist/tools/read-multiple-files.d.ts +3 -0
  127. package/dist/tools/read-multiple-files.d.ts.map +1 -0
  128. package/dist/tools/read-multiple-files.js +53 -0
  129. package/dist/tools/read-multiple-files.js.map +1 -0
  130. package/dist/tools/search-content.d.ts +3 -0
  131. package/dist/tools/search-content.d.ts.map +1 -0
  132. package/dist/tools/search-content.js +67 -0
  133. package/dist/tools/search-content.js.map +1 -0
  134. package/dist/tools/search-files.d.ts +3 -0
  135. package/dist/tools/search-files.d.ts.map +1 -0
  136. package/dist/tools/search-files.js +51 -0
  137. package/dist/tools/search-files.js.map +1 -0
  138. package/dist/utils/index.d.ts +2 -0
  139. package/dist/utils/index.d.ts.map +1 -0
  140. package/dist/utils/index.js +2 -0
  141. package/dist/utils/index.js.map +1 -0
  142. package/dist/utils/response-helpers.d.ts +22 -0
  143. package/dist/utils/response-helpers.d.ts.map +1 -0
  144. package/dist/utils/response-helpers.js +24 -0
  145. package/dist/utils/response-helpers.js.map +1 -0
  146. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-operations.js","sourceRoot":"","sources":["../../src/lib/file-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { ContentMatch, DirectoryAnalysis, DirectoryEntry, FileInfo, SearchResult, TreeEntry } from '../config/types.js';
2
+ /**
3
+ * Format directory listing for human-readable output
4
+ */
5
+ export declare function formatDirectoryListing(entries: DirectoryEntry[], basePath: string): string;
6
+ /**
7
+ * Format search results for human-readable output
8
+ */
9
+ export declare function formatSearchResults(results: SearchResult[]): string;
10
+ /**
11
+ * Format content matches for human-readable output
12
+ */
13
+ export declare function formatContentMatches(matches: ContentMatch[]): string;
14
+ /**
15
+ * Format file info for human-readable output
16
+ */
17
+ export declare function formatFileInfo(info: FileInfo): string;
18
+ /**
19
+ * Format directory analysis for human-readable output
20
+ */
21
+ export declare function formatDirectoryAnalysis(analysis: DirectoryAnalysis): string;
22
+ /**
23
+ * Format tree entry for human-readable output
24
+ */
25
+ export declare function formatTreeEntry(entry: TreeEntry, indent?: string): string;
26
+ /**
27
+ * Format allowed directories list for human-readable output
28
+ */
29
+ export declare function formatAllowedDirectories(dirs: string[]): string;
30
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,SAAS,EACV,MAAM,oBAAoB,CAAC;AAuB5B;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAsCR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAenE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAsDpE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAsBrD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAyC3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,SAAK,GAAG,MAAM,CAYrE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAW/D"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Format bytes to human-readable string
3
+ */
4
+ function formatBytes(bytes) {
5
+ if (bytes === 0)
6
+ return '0 B';
7
+ const units = ['B', 'KB', 'MB', 'GB', 'TB'];
8
+ const k = 1024;
9
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
10
+ const unit = units[i] ?? 'B';
11
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${unit}`;
12
+ }
13
+ /**
14
+ * Format date to ISO string
15
+ */
16
+ function formatDate(date) {
17
+ return date.toISOString();
18
+ }
19
+ /**
20
+ * Format directory listing for human-readable output
21
+ */
22
+ export function formatDirectoryListing(entries, basePath) {
23
+ if (entries.length === 0) {
24
+ return 'Directory is empty';
25
+ }
26
+ const lines = [`Contents of ${basePath}:`, ''];
27
+ const dirs = entries.filter((e) => e.type === 'directory');
28
+ const files = entries.filter((e) => e.type !== 'directory');
29
+ if (dirs.length > 0) {
30
+ lines.push('Directories:');
31
+ for (const dir of dirs) {
32
+ const symlinkSuffix = dir.symlinkTarget ? ` -> ${dir.symlinkTarget}` : '';
33
+ lines.push(` [DIR] ${dir.relativePath}${symlinkSuffix}`);
34
+ }
35
+ lines.push('');
36
+ }
37
+ if (files.length > 0) {
38
+ lines.push('Files:');
39
+ for (const file of files) {
40
+ const size = file.size !== undefined ? formatBytes(file.size) : undefined;
41
+ const sizeSuffix = size !== undefined ? ` (${size})` : '';
42
+ const typeTag = file.type === 'symlink' ? '[LINK]' : '[FILE]';
43
+ const symlinkSuffix = file.symlinkTarget
44
+ ? ` -> ${file.symlinkTarget}`
45
+ : '';
46
+ lines.push(` ${typeTag} ${file.relativePath}${sizeSuffix}${symlinkSuffix}`);
47
+ }
48
+ }
49
+ lines.push('');
50
+ lines.push(`Total: ${dirs.length} directories, ${files.length} files`);
51
+ return lines.join('\n');
52
+ }
53
+ /**
54
+ * Format search results for human-readable output
55
+ */
56
+ export function formatSearchResults(results) {
57
+ if (results.length === 0) {
58
+ return 'No matches found';
59
+ }
60
+ const lines = [`Found ${results.length} matches:`, ''];
61
+ for (const result of results) {
62
+ const typeTag = result.type === 'directory' ? '[DIR]' : '[FILE]';
63
+ const size = result.size !== undefined ? ` (${formatBytes(result.size)})` : '';
64
+ lines.push(`${typeTag} ${result.path}${size}`);
65
+ }
66
+ return lines.join('\n');
67
+ }
68
+ /**
69
+ * Format content matches for human-readable output
70
+ */
71
+ export function formatContentMatches(matches) {
72
+ if (matches.length === 0) {
73
+ return 'No matches found';
74
+ }
75
+ const lines = [`Found ${matches.length} matches:`, ''];
76
+ const byFile = new Map();
77
+ for (const match of matches) {
78
+ const existing = byFile.get(match.file);
79
+ if (existing) {
80
+ existing.push(match);
81
+ }
82
+ else {
83
+ byFile.set(match.file, [match]);
84
+ }
85
+ }
86
+ for (const [file, fileMatches] of byFile) {
87
+ lines.push(`${file}:`);
88
+ for (const match of fileMatches) {
89
+ // Show context before if available
90
+ if (match.contextBefore && match.contextBefore.length > 0) {
91
+ for (let i = 0; i < match.contextBefore.length; i++) {
92
+ const contextLine = match.contextBefore[i];
93
+ const lineNum = match.line - match.contextBefore.length + i;
94
+ lines.push(` ${String(lineNum).padStart(4)}: ${contextLine ?? ''}`);
95
+ }
96
+ }
97
+ // Show the match line (highlighted)
98
+ lines.push(` > ${String(match.line).padStart(4)}: ${match.content}`);
99
+ // Show context after if available
100
+ if (match.contextAfter && match.contextAfter.length > 0) {
101
+ for (let i = 0; i < match.contextAfter.length; i++) {
102
+ const contextLine = match.contextAfter[i];
103
+ const lineNum = match.line + 1 + i;
104
+ lines.push(` ${String(lineNum).padStart(4)}: ${contextLine ?? ''}`);
105
+ }
106
+ }
107
+ // Add separator if there was context
108
+ if ((match.contextBefore && match.contextBefore.length > 0) ||
109
+ (match.contextAfter && match.contextAfter.length > 0)) {
110
+ lines.push(' ---');
111
+ }
112
+ }
113
+ lines.push('');
114
+ }
115
+ return lines.join('\n');
116
+ }
117
+ /**
118
+ * Format file info for human-readable output
119
+ */
120
+ export function formatFileInfo(info) {
121
+ const lines = [
122
+ `Name: ${info.name}`,
123
+ `Path: ${info.path}`,
124
+ `Type: ${info.type}`,
125
+ `Size: ${formatBytes(info.size)}`,
126
+ `Created: ${formatDate(info.created)}`,
127
+ `Modified: ${formatDate(info.modified)}`,
128
+ `Accessed: ${formatDate(info.accessed)}`,
129
+ `Permissions: ${info.permissions}`,
130
+ `Hidden: ${info.isHidden ? 'Yes' : 'No'}`,
131
+ ];
132
+ if (info.mimeType) {
133
+ lines.push(`MIME Type: ${info.mimeType}`);
134
+ }
135
+ if (info.symlinkTarget) {
136
+ lines.push(`Symlink Target: ${info.symlinkTarget}`);
137
+ }
138
+ return lines.join('\n');
139
+ }
140
+ /**
141
+ * Format directory analysis for human-readable output
142
+ */
143
+ export function formatDirectoryAnalysis(analysis) {
144
+ const lines = [
145
+ `Directory Analysis: ${analysis.path}`,
146
+ '='.repeat(50),
147
+ '',
148
+ 'Summary:',
149
+ ` Total Files: ${analysis.totalFiles}`,
150
+ ` Total Directories: ${analysis.totalDirectories}`,
151
+ ` Total Size: ${formatBytes(analysis.totalSize)}`,
152
+ ` Max Depth: ${analysis.maxDepth}`,
153
+ '',
154
+ ];
155
+ if (Object.keys(analysis.fileTypes).length > 0) {
156
+ lines.push('File Types:');
157
+ const sorted = Object.entries(analysis.fileTypes).sort((a, b) => b[1] - a[1]);
158
+ for (const [ext, count] of sorted) {
159
+ lines.push(` ${ext}: ${count}`);
160
+ }
161
+ lines.push('');
162
+ }
163
+ if (analysis.largestFiles.length > 0) {
164
+ lines.push('Largest Files:');
165
+ for (const file of analysis.largestFiles) {
166
+ lines.push(` ${formatBytes(file.size)} - ${file.path}`);
167
+ }
168
+ lines.push('');
169
+ }
170
+ if (analysis.recentlyModified.length > 0) {
171
+ lines.push('Recently Modified:');
172
+ for (const file of analysis.recentlyModified) {
173
+ lines.push(` ${formatDate(file.modified)} - ${file.path}`);
174
+ }
175
+ }
176
+ return lines.join('\n');
177
+ }
178
+ /**
179
+ * Format tree entry for human-readable output
180
+ */
181
+ export function formatTreeEntry(entry, indent = '') {
182
+ const lines = [];
183
+ const icon = entry.type === 'directory' ? '📁' : '📄';
184
+ const sizeStr = entry.size !== undefined ? ` (${formatBytes(entry.size)})` : '';
185
+ lines.push(`${indent}${icon} ${entry.name}${sizeStr}`);
186
+ for (const child of entry.children ?? []) {
187
+ lines.push(formatTreeEntry(child, `${indent} `));
188
+ }
189
+ return lines.join('\n');
190
+ }
191
+ /**
192
+ * Format allowed directories list for human-readable output
193
+ */
194
+ export function formatAllowedDirectories(dirs) {
195
+ if (dirs.length === 0) {
196
+ return 'No directories are currently allowed.';
197
+ }
198
+ const lines = ['Allowed Directories:', ''];
199
+ for (const dir of dirs) {
200
+ lines.push(` - ${dir}`);
201
+ }
202
+ return lines.join('\n');
203
+ }
204
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import type { Stats } from 'node:fs';
3
+ import type { FileType } from '../config/types.js';
4
+ /**
5
+ * Concurrent work queue processor with optional abort support.
6
+ * Processes items with controlled concurrency, allowing new items to be enqueued during processing.
7
+ */
8
+ export declare function runWorkQueue<T>(initialItems: T[], worker: (item: T, enqueue: (item: T) => void) => Promise<void>, concurrency: number, signal?: AbortSignal): Promise<void>;
9
+ export declare function getFileType(stats: Stats): FileType;
10
+ export declare function isHidden(name: string): boolean;
11
+ export declare function isProbablyBinary(filePath: string, existingHandle?: fs.FileHandle): Promise<boolean>;
12
+ export declare function tailFile(filePath: string, numLines: number): Promise<string>;
13
+ export declare function headFile(filePath: string, numLines: number): Promise<string>;
14
+ export declare function readFile(filePath: string, options?: {
15
+ encoding?: BufferEncoding;
16
+ maxSize?: number;
17
+ lineRange?: {
18
+ start: number;
19
+ end: number;
20
+ };
21
+ head?: number;
22
+ tail?: number;
23
+ }): Promise<{
24
+ path: string;
25
+ content: string;
26
+ truncated: boolean;
27
+ totalLines?: number;
28
+ }>;
29
+ //# sourceMappingURL=fs-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/fs-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAUnD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,YAAY,EAAE,CAAC,EAAE,EACjB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EAC9D,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAiEf;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAKlD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,EAAE,CAAC,UAAU,GAC7B,OAAO,CAAC,OAAO,CAAC,CA0DlB;AA0CD,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAuDjB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CA6CjB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACV,GACL,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAoFD"}
@@ -0,0 +1,295 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ import { StringDecoder } from 'node:string_decoder';
4
+ import { BINARY_CHECK_BUFFER_SIZE, KNOWN_BINARY_EXTENSIONS, KNOWN_TEXT_EXTENSIONS, MAX_TEXT_FILE_SIZE, } from './constants.js';
5
+ import { ErrorCode, McpError } from './errors.js';
6
+ import { validateExistingPath } from './path-validation.js';
7
+ /**
8
+ * Concurrent work queue processor with optional abort support.
9
+ * Processes items with controlled concurrency, allowing new items to be enqueued during processing.
10
+ */
11
+ export async function runWorkQueue(initialItems, worker, concurrency, signal) {
12
+ const queue = [...initialItems];
13
+ let head = 0;
14
+ let inFlight = 0;
15
+ let aborted = false;
16
+ let doneResolve;
17
+ const donePromise = new Promise((resolve) => {
18
+ doneResolve = resolve;
19
+ });
20
+ const onAbort = () => {
21
+ aborted = true;
22
+ // Clear remaining work (keep the already-consumed prefix intact)
23
+ queue.length = head;
24
+ if (inFlight === 0) {
25
+ doneResolve?.();
26
+ }
27
+ };
28
+ signal?.addEventListener('abort', onAbort, { once: true });
29
+ const maybeCompactQueue = () => {
30
+ if (head > 1024 && head * 2 > queue.length) {
31
+ queue.splice(0, head);
32
+ head = 0;
33
+ }
34
+ };
35
+ const maybeStartNext = () => {
36
+ if (aborted)
37
+ return;
38
+ while (inFlight < concurrency && head < queue.length) {
39
+ const next = queue[head];
40
+ if (next === undefined)
41
+ break;
42
+ head++;
43
+ inFlight++;
44
+ void worker(next, (item) => {
45
+ if (!aborted) {
46
+ queue.push(item);
47
+ maybeStartNext();
48
+ }
49
+ }).finally(() => {
50
+ inFlight--;
51
+ maybeCompactQueue();
52
+ if (inFlight === 0 && (head >= queue.length || aborted)) {
53
+ doneResolve?.();
54
+ }
55
+ else if (!aborted) {
56
+ maybeStartNext();
57
+ }
58
+ });
59
+ }
60
+ };
61
+ maybeStartNext();
62
+ if (inFlight === 0 && head >= queue.length) {
63
+ doneResolve?.();
64
+ }
65
+ try {
66
+ await donePromise;
67
+ }
68
+ finally {
69
+ signal?.removeEventListener('abort', onAbort);
70
+ }
71
+ }
72
+ export function getFileType(stats) {
73
+ if (stats.isFile())
74
+ return 'file';
75
+ if (stats.isDirectory())
76
+ return 'directory';
77
+ if (stats.isSymbolicLink())
78
+ return 'symlink';
79
+ return 'other';
80
+ }
81
+ export function isHidden(name) {
82
+ return name.startsWith('.');
83
+ }
84
+ export async function isProbablyBinary(filePath, existingHandle) {
85
+ const ext = path.extname(filePath).toLowerCase();
86
+ if (KNOWN_TEXT_EXTENSIONS.has(ext)) {
87
+ return false;
88
+ }
89
+ if (KNOWN_BINARY_EXTENSIONS.has(ext)) {
90
+ return true;
91
+ }
92
+ let handle = existingHandle;
93
+ let shouldClose = false;
94
+ let effectivePath = filePath;
95
+ if (!handle) {
96
+ effectivePath = await validateExistingPath(filePath);
97
+ handle = await fs.open(effectivePath, 'r');
98
+ shouldClose = true;
99
+ }
100
+ try {
101
+ const buffer = Buffer.alloc(BINARY_CHECK_BUFFER_SIZE);
102
+ const { bytesRead } = await handle.read(buffer, 0, BINARY_CHECK_BUFFER_SIZE, 0);
103
+ if (bytesRead === 0) {
104
+ return false; // Empty file is considered text
105
+ }
106
+ const slice = buffer.subarray(0, bytesRead);
107
+ if (bytesRead >= 3 &&
108
+ slice[0] === 0xef &&
109
+ slice[1] === 0xbb &&
110
+ slice[2] === 0xbf) {
111
+ return false;
112
+ }
113
+ if (bytesRead >= 2 &&
114
+ ((slice[0] === 0xff && slice[1] === 0xfe) ||
115
+ (slice[0] === 0xfe && slice[1] === 0xff))) {
116
+ return false;
117
+ }
118
+ return slice.includes(0);
119
+ }
120
+ finally {
121
+ if (shouldClose) {
122
+ await handle.close().catch(() => { });
123
+ }
124
+ }
125
+ }
126
+ /**
127
+ * Find the start of a UTF-8 character by backtracking from a position.
128
+ * Used to align reads to character boundaries.
129
+ */
130
+ async function findUTF8Boundary(handle, position) {
131
+ if (position <= 0)
132
+ return 0;
133
+ const buf = Buffer.alloc(1);
134
+ let currentPos = position;
135
+ // Backtrack up to 4 bytes (max UTF-8 char length)
136
+ // We want to find a byte that is NOT a continuation byte (10xxxxxx)
137
+ for (let i = 0; i < 4; i++) {
138
+ // If we reached the beginning of the file, that's a boundary
139
+ if (currentPos <= 0)
140
+ return 0;
141
+ // Read the byte at the current position
142
+ // We read from currentPos - 1 because we are checking the byte *before* the current boundary
143
+ // Wait, no. We want to ensure 'position' (the start of our read) is a valid char start.
144
+ // So we check the byte at 'position'.
145
+ // If it is 10xxxxxx, it's a continuation. We need to move start back.
146
+ await handle.read(buf, 0, 1, currentPos);
147
+ // If it's not a continuation byte (0b10xxxxxx), it's a start byte or ASCII
148
+ // 0xC0 is 11000000, 0x80 is 10000000.
149
+ // (byte & 0xC0) === 0x80 checks if it starts with 10
150
+ const byte = buf[0];
151
+ if (byte !== undefined && (byte & 0xc0) !== 0x80) {
152
+ return currentPos;
153
+ }
154
+ currentPos--;
155
+ }
156
+ // If we didn't find a start byte, just return original to avoid infinite loops
157
+ return position;
158
+ }
159
+ export async function tailFile(filePath, numLines) {
160
+ const CHUNK_SIZE = 64 * 1024;
161
+ const validPath = await validateExistingPath(filePath);
162
+ const stats = await fs.stat(validPath);
163
+ const fileSize = stats.size;
164
+ if (fileSize === 0)
165
+ return '';
166
+ const handle = await fs.open(validPath, 'r');
167
+ try {
168
+ const lines = [];
169
+ let position = fileSize;
170
+ const chunk = Buffer.alloc(CHUNK_SIZE + 4);
171
+ let linesFound = 0;
172
+ let remainingText = '';
173
+ while (position > 0 && linesFound < numLines) {
174
+ let size = Math.min(CHUNK_SIZE, position);
175
+ let startPos = position - size;
176
+ if (startPos > 0) {
177
+ const alignedPos = await findUTF8Boundary(handle, startPos);
178
+ // If we moved back, we need to read more
179
+ size = position - alignedPos;
180
+ startPos = alignedPos;
181
+ }
182
+ position = startPos;
183
+ const { bytesRead } = await handle.read(chunk, 0, size, position);
184
+ if (!bytesRead)
185
+ break;
186
+ const readData = chunk.subarray(0, bytesRead).toString('utf-8');
187
+ const chunkText = readData + remainingText;
188
+ const chunkLines = chunkText.replace(/\r\n/g, '\n').split('\n');
189
+ if (position > 0) {
190
+ remainingText = chunkLines[0] ?? '';
191
+ chunkLines.shift();
192
+ }
193
+ for (let i = chunkLines.length - 1; i >= 0 && linesFound < numLines; i--) {
194
+ lines.unshift(chunkLines[i] ?? '');
195
+ linesFound++;
196
+ }
197
+ }
198
+ return lines.join('\n');
199
+ }
200
+ finally {
201
+ await handle.close().catch(() => { });
202
+ }
203
+ }
204
+ export async function headFile(filePath, numLines) {
205
+ const validPath = await validateExistingPath(filePath);
206
+ const handle = await fs.open(validPath, 'r');
207
+ try {
208
+ const lines = [];
209
+ let bytesRead = 0;
210
+ const chunk = Buffer.alloc(64 * 1024);
211
+ const decoder = new StringDecoder('utf-8');
212
+ let buffer = '';
213
+ while (lines.length < numLines) {
214
+ const result = await handle.read(chunk, 0, chunk.length, bytesRead);
215
+ if (result.bytesRead === 0)
216
+ break;
217
+ bytesRead += result.bytesRead;
218
+ buffer += decoder.write(chunk.subarray(0, result.bytesRead));
219
+ const normalizedBuffer = buffer.replace(/\r\n/g, '\n');
220
+ const newLineIndex = normalizedBuffer.lastIndexOf('\n');
221
+ if (newLineIndex !== -1) {
222
+ const completeLines = normalizedBuffer
223
+ .substring(0, newLineIndex)
224
+ .split('\n');
225
+ buffer = normalizedBuffer.substring(newLineIndex + 1);
226
+ for (const line of completeLines) {
227
+ lines.push(line);
228
+ if (lines.length >= numLines)
229
+ break;
230
+ }
231
+ }
232
+ }
233
+ buffer += decoder.end();
234
+ if (buffer.length > 0 && lines.length < numLines) {
235
+ const remainingLines = buffer.replace(/\r\n/g, '\n').split('\n');
236
+ for (const line of remainingLines) {
237
+ lines.push(line);
238
+ if (lines.length >= numLines)
239
+ break;
240
+ }
241
+ }
242
+ return lines.slice(0, numLines).join('\n');
243
+ }
244
+ finally {
245
+ await handle.close().catch(() => { });
246
+ }
247
+ }
248
+ export async function readFile(filePath, options = {}) {
249
+ const { encoding = 'utf-8', maxSize = MAX_TEXT_FILE_SIZE, lineRange, head, tail, } = options;
250
+ const validPath = await validateExistingPath(filePath);
251
+ const stats = await fs.stat(validPath);
252
+ if (!stats.isFile()) {
253
+ throw new McpError(ErrorCode.E_NOT_FILE, `Not a file: ${filePath}`, filePath);
254
+ }
255
+ // Check for mutually exclusive options
256
+ const optionsCount = [lineRange, head, tail].filter(Boolean).length;
257
+ if (optionsCount > 1) {
258
+ throw new McpError(ErrorCode.E_INVALID_INPUT, 'Cannot specify multiple of lineRange, head, or tail simultaneously', filePath);
259
+ }
260
+ // Validate lineRange if provided
261
+ if (lineRange) {
262
+ if (lineRange.start < 1) {
263
+ throw new McpError(ErrorCode.E_INVALID_INPUT, `Invalid lineRange: start must be at least 1 (got ${lineRange.start})`, filePath);
264
+ }
265
+ if (lineRange.end < lineRange.start) {
266
+ throw new McpError(ErrorCode.E_INVALID_INPUT, `Invalid lineRange: end (${lineRange.end}) must be >= start (${lineRange.start})`, filePath);
267
+ }
268
+ }
269
+ if (tail !== undefined) {
270
+ const content = await tailFile(validPath, tail);
271
+ return { path: validPath, content, truncated: true, totalLines: undefined };
272
+ }
273
+ if (head !== undefined) {
274
+ const content = await headFile(validPath, head);
275
+ return { path: validPath, content, truncated: true, totalLines: undefined };
276
+ }
277
+ if (stats.size > maxSize) {
278
+ throw new McpError(ErrorCode.E_TOO_LARGE, `File too large: ${stats.size} bytes (max: ${maxSize} bytes). Use head, tail, or lineRange for partial reads.`, filePath, { size: stats.size, maxSize });
279
+ }
280
+ const content = await fs.readFile(validPath, { encoding });
281
+ if (lineRange) {
282
+ const lines = content.split('\n');
283
+ const totalLines = lines.length;
284
+ const start = Math.max(0, lineRange.start - 1);
285
+ const end = Math.min(lines.length, lineRange.end);
286
+ return {
287
+ path: validPath,
288
+ content: lines.slice(start, end).join('\n'),
289
+ truncated: start > 0 || end < lines.length,
290
+ totalLines,
291
+ };
292
+ }
293
+ return { path: validPath, content, truncated: false };
294
+ }
295
+ //# sourceMappingURL=fs-helpers.js.map