@j0hanz/fs-context-mcp 2.1.5 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/instructions.md +10 -21
- package/dist/lib/file-operations/file-info.d.ts.map +1 -1
- package/dist/lib/file-operations/file-info.js +2 -0
- package/dist/lib/file-operations/file-info.js.map +1 -1
- package/dist/lib/file-operations/list-directory.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory.js +83 -20
- package/dist/lib/file-operations/list-directory.js.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.js +22 -20
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
- package/dist/lib/file-operations/search-content.d.ts.map +1 -1
- package/dist/lib/file-operations/search-content.js +18 -22
- package/dist/lib/file-operations/search-content.js.map +1 -1
- package/dist/lib/file-operations/search-files.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files.js +19 -5
- package/dist/lib/file-operations/search-files.js.map +1 -1
- package/dist/lib/file-operations/tree.d.ts.map +1 -1
- package/dist/lib/file-operations/tree.js +45 -20
- package/dist/lib/file-operations/tree.js.map +1 -1
- package/dist/lib/path-validation.d.ts.map +1 -1
- package/dist/lib/path-validation.js +10 -3
- package/dist/lib/path-validation.js.map +1 -1
- package/dist/schemas.js +4 -4
- package/dist/schemas.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +96 -77
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -150,6 +150,7 @@ Notes:
|
|
|
150
150
|
- Windows drive-relative paths like `C:path` are rejected. Use `C:\path` or `C:/path`.
|
|
151
151
|
- Reserved Windows device names (e.g., `CON`, `NUL`) are blocked.
|
|
152
152
|
- If multiple roots are configured, tools require an explicit `path` to disambiguate.
|
|
153
|
+
- When multiple roots are configured, relative paths are rejected; provide an absolute path within the desired root.
|
|
153
154
|
|
|
154
155
|
## Configuration
|
|
155
156
|
|
|
@@ -181,6 +182,8 @@ You can customize with:
|
|
|
181
182
|
- `FS_CONTEXT_DENYLIST` to add extra deny patterns (comma-separated globs using `*`).
|
|
182
183
|
- `FS_CONTEXT_ALLOWLIST` to allow specific paths even if they match the denylist.
|
|
183
184
|
|
|
185
|
+
Sensitive denylist patterns also filter `ls`, `find`, `tree`, and `stat` results by default to avoid revealing secret filenames.
|
|
186
|
+
|
|
184
187
|
## Resources
|
|
185
188
|
|
|
186
189
|
This server exposes standard MCP resources to provide static documentation and handle large content efficiently.
|
package/dist/instructions.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# FS-Context MCP Server Instructions
|
|
2
|
+
|
|
3
|
+
<!-- path: src/instructions.md -->
|
|
2
4
|
|
|
3
5
|
> Guidance for the Agent: These instructions are available as a resource (`internal://instructions`) or prompt (`get-help`). Load them when you are unsure about tool usage.
|
|
4
6
|
|
|
@@ -22,7 +24,7 @@ _Describe the standard order of operations using ONLY tools that exist._
|
|
|
22
24
|
1. Call `find` to locate files by name/glob pattern.
|
|
23
25
|
2. Call `grep` to find code by content/regex.
|
|
24
26
|
3. Call `read` (single) or `read_many` (batch) to inspect specific files.
|
|
25
|
-
> Constraint: Large readings return incomplete previews with resource URIs
|
|
27
|
+
> Constraint: Large readings return incomplete previews with resource URIs.
|
|
26
28
|
|
|
27
29
|
## 3. Tool Nuances & Gotchas
|
|
28
30
|
|
|
@@ -31,44 +33,31 @@ _Do NOT repeat JSON schema. Focus on behavior and pitfalls._
|
|
|
31
33
|
- **`ls`**
|
|
32
34
|
- **Purpose:** Non-recursive directory listing.
|
|
33
35
|
- **Inputs:** `path` (relative to root). default: root.
|
|
34
|
-
- **
|
|
35
|
-
- **
|
|
36
|
-
- **Latency:** Fast.
|
|
37
|
-
- **Common failure modes:** `E_NOT_FOUND` if path incorrect.
|
|
36
|
+
- **Limits:** Not recursive; use `tree` or `find` for depth.
|
|
37
|
+
- **Multi-root:** When multiple roots are configured, pass an absolute path to disambiguate (relative paths are rejected).
|
|
38
38
|
|
|
39
39
|
- **`find`**
|
|
40
40
|
- **Purpose:** Recursive file search by globs.
|
|
41
41
|
- **Inputs:** `pattern` (glob like `**/*.ts`), `path` (base dir).
|
|
42
|
-
- **Multi-root:** If multiple roots are configured, you must provide `path`.
|
|
43
|
-
- **Side effects:** None.
|
|
44
42
|
- **Latency:** Scans disk; bounded by `maxResults` (default 100).
|
|
45
|
-
- **Gitignore scope:** Only the root `.gitignore` is applied (nested `.gitignore` is not parsed).
|
|
46
43
|
|
|
47
44
|
- **`grep`**
|
|
48
45
|
- **Purpose:** Content search using RE2 regex.
|
|
49
46
|
- **Inputs:** `pattern` (regex), `path` (base).
|
|
50
47
|
- **Limits:** Skips binaries & files >1MB. Truncates results >50 matches.
|
|
51
|
-
- **Multi-root:** If multiple roots are configured, you must provide `path`.
|
|
52
|
-
- **Sensitive files:** Access to common secret files is blocked by default. Override with `FS_CONTEXT_ALLOW_SENSITIVE=1` or add `FS_CONTEXT_ALLOWLIST`.
|
|
53
48
|
|
|
54
49
|
- **`read` / `read_many`**
|
|
55
50
|
- **Purpose:** Read file contents.
|
|
56
51
|
- **Inputs:** `path`/`paths`. Optional: `head` (first N lines) OR `startLine`/`endLine`.
|
|
57
52
|
- **Gotchas:** `head` is mutually exclusive with `startLine`/`endLine`. Large content returns `resourceUri` link.
|
|
58
|
-
- **Sensitive files:** Access to common secret files (e.g., `.env`, `.npmrc`) is blocked by default. Override with `FS_CONTEXT_ALLOW_SENSITIVE=1` or add `FS_CONTEXT_ALLOWLIST`.
|
|
59
|
-
|
|
60
|
-
- **`stat` / `stat_many`**
|
|
61
|
-
- **Purpose:** Metadata (size, modified, type) without content.
|
|
62
|
-
- **Inputs:** `path`/`paths`.
|
|
63
53
|
|
|
64
54
|
- **`tree`**
|
|
65
55
|
- **Purpose:** ASCII + JSON tree visualization.
|
|
66
56
|
- **Limits:** Max depth/entries apply. Good for high-level "glance".
|
|
67
|
-
- **Multi-root:** If multiple roots are configured, you must provide `path`.
|
|
68
57
|
|
|
69
58
|
## 4. Error Handling Strategy
|
|
70
59
|
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
- Resource Links
|
|
60
|
+
- **`E_ACCESS_DENIED`**: You are trying to access a path outside allowed `roots`.
|
|
61
|
+
- **`E_NOT_FOUND`**: Re-run `ls` or `find` to verify the path exists.
|
|
62
|
+
- **`E_TIMEOUT`**: Reduce scope (subdir) or batch size.
|
|
63
|
+
- **Resource Links**: Content was too large for inline. Read the provided URI to get full content.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-info.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/file-info.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EACR,yBAAyB,EAE1B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"file-info.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/file-info.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EACR,yBAAyB,EAE1B,MAAM,iBAAiB,CAAC;AA8EzB,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAChE,OAAO,CAAC,QAAQ,CAAC,CA2BnB;AAqBD,UAAU,0BAA0B;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAsGD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,yBAAyB,CAAC,CAYpC"}
|
|
@@ -3,6 +3,7 @@ import * as path from 'node:path';
|
|
|
3
3
|
import { PARALLEL_CONCURRENCY } from '../constants.js';
|
|
4
4
|
import { getMimeType } from '../constants.js';
|
|
5
5
|
import { assertNotAborted, getFileType, isHidden, processInParallel, withAbort, } from '../fs-helpers.js';
|
|
6
|
+
import { assertAllowedFileAccess } from '../path-policy.js';
|
|
6
7
|
import { validateExistingPathDetailed } from '../path-validation.js';
|
|
7
8
|
const PERM_STRINGS = [
|
|
8
9
|
'---',
|
|
@@ -56,6 +57,7 @@ export async function getFileInfo(filePath, options = {}) {
|
|
|
56
57
|
const { signal } = options;
|
|
57
58
|
assertNotAborted(signal);
|
|
58
59
|
const { requestedPath, resolvedPath, isSymlink } = await validateExistingPathDetailed(filePath, signal);
|
|
60
|
+
assertAllowedFileAccess(requestedPath, resolvedPath);
|
|
59
61
|
const name = path.basename(requestedPath);
|
|
60
62
|
const ext = path.extname(name).toLowerCase();
|
|
61
63
|
const includeMimeType = options.includeMimeType !== false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-info.js","sourceRoot":"","sources":["../../../src/lib/file-operations/file-info.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"file-info.js","sourceRoot":"","sources":["../../../src/lib/file-operations/file-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-directory.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/list-directory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-directory.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/list-directory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAe3E,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IAC/C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAyZD,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAkB9B"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as fsp from 'node:fs/promises';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import { DEFAULT_LIST_MAX_ENTRIES, DEFAULT_MAX_DEPTH, DEFAULT_SEARCH_TIMEOUT_MS, PARALLEL_CONCURRENCY, } from '../constants.js';
|
|
4
|
-
import { createTimedAbortSignal } from '../fs-helpers.js';
|
|
5
|
-
import {
|
|
4
|
+
import { createTimedAbortSignal, withAbort } from '../fs-helpers.js';
|
|
5
|
+
import { isSensitivePath } from '../path-policy.js';
|
|
6
|
+
import { validateExistingDirectory, validateExistingPathDetailed, } from '../path-validation.js';
|
|
6
7
|
import { globEntries } from './glob-engine.js';
|
|
7
8
|
function normalizePattern(pattern) {
|
|
8
9
|
if (!pattern || pattern.length === 0)
|
|
@@ -52,7 +53,31 @@ function shouldStopScan(signal, entryCount, maxEntries) {
|
|
|
52
53
|
}
|
|
53
54
|
return { stop: false };
|
|
54
55
|
}
|
|
55
|
-
function
|
|
56
|
+
async function* readDirectoryEntries(basePath, normalized, needsStats, signal) {
|
|
57
|
+
const dirents = await withAbort(fsp.readdir(basePath, { withFileTypes: true }), signal);
|
|
58
|
+
for (const dirent of dirents) {
|
|
59
|
+
if (!normalized.includeHidden && dirent.name.startsWith('.')) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const entryPath = path.join(basePath, dirent.name);
|
|
63
|
+
let stats;
|
|
64
|
+
if (needsStats) {
|
|
65
|
+
stats = await withAbort(fsp.lstat(entryPath), signal);
|
|
66
|
+
}
|
|
67
|
+
yield {
|
|
68
|
+
path: entryPath,
|
|
69
|
+
dirent,
|
|
70
|
+
...(stats ? { stats } : {}),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function createEntryStream(basePath, normalized, maxDepth, needsStats, signal) {
|
|
75
|
+
const canUseFastPath = !normalized.pattern &&
|
|
76
|
+
normalized.excludePatterns.length === 0 &&
|
|
77
|
+
maxDepth === 1;
|
|
78
|
+
if (canUseFastPath) {
|
|
79
|
+
return readDirectoryEntries(basePath, normalized, needsStats, signal);
|
|
80
|
+
}
|
|
56
81
|
return globEntries({
|
|
57
82
|
cwd: basePath,
|
|
58
83
|
pattern: normalized.pattern ?? '*',
|
|
@@ -103,13 +128,43 @@ function buildDirectoryEntry(basePath, entry, entryType, needsStats, symlinkTarg
|
|
|
103
128
|
...(symlinkTarget !== undefined ? { symlinkTarget } : {}),
|
|
104
129
|
};
|
|
105
130
|
}
|
|
131
|
+
function trackSymlink(entryType, includeSymlinkTargets, counters) {
|
|
132
|
+
if (entryType === 'symlink' && !includeSymlinkTargets) {
|
|
133
|
+
counters.symlinksNotFollowed += 1;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
async function isEntryAccessible(entryPath, signal, counters) {
|
|
137
|
+
try {
|
|
138
|
+
const validated = await validateExistingPathDetailed(entryPath, signal);
|
|
139
|
+
if (isSensitivePath(validated.requestedPath, validated.resolvedPath)) {
|
|
140
|
+
counters.skippedInaccessible += 1;
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
counters.skippedInaccessible += 1;
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async function appendEntryWithQueue(basePath, entry, normalized, needsStats, totals, entries, pending, flushPending) {
|
|
151
|
+
const task = appendEntry(basePath, entry, normalized, needsStats, totals, entries);
|
|
152
|
+
if (normalized.includeSymlinkTargets) {
|
|
153
|
+
pending.push(task);
|
|
154
|
+
if (pending.length >= PARALLEL_CONCURRENCY) {
|
|
155
|
+
await flushPending();
|
|
156
|
+
}
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
await task;
|
|
160
|
+
}
|
|
106
161
|
async function appendEntry(basePath, entry, options, needsStats, totals, entries) {
|
|
107
162
|
const entryType = resolveEntryType(entry.dirent);
|
|
108
163
|
const symlinkTarget = await resolveSymlinkTarget(entryType, options.includeSymlinkTargets, entry.path);
|
|
109
164
|
updateTotals(entryType, totals);
|
|
110
165
|
entries.push(buildDirectoryEntry(basePath, entry, entryType, needsStats, symlinkTarget));
|
|
111
166
|
}
|
|
112
|
-
function buildSummary(entries, totals, maxDepth, truncated, stoppedReason) {
|
|
167
|
+
function buildSummary(entries, totals, maxDepth, truncated, stoppedReason, extra) {
|
|
113
168
|
const baseSummary = {
|
|
114
169
|
totalEntries: entries.length,
|
|
115
170
|
entriesScanned: entries.length,
|
|
@@ -118,8 +173,8 @@ function buildSummary(entries, totals, maxDepth, truncated, stoppedReason) {
|
|
|
118
173
|
totalDirectories: totals.directories,
|
|
119
174
|
maxDepthReached: maxDepth,
|
|
120
175
|
truncated,
|
|
121
|
-
skippedInaccessible:
|
|
122
|
-
symlinksNotFollowed:
|
|
176
|
+
skippedInaccessible: extra.skippedInaccessible,
|
|
177
|
+
symlinksNotFollowed: extra.symlinksNotFollowed,
|
|
123
178
|
};
|
|
124
179
|
return {
|
|
125
180
|
...baseSummary,
|
|
@@ -131,9 +186,10 @@ async function collectEntries(basePath, normalized, signal, needsStats, maxDepth
|
|
|
131
186
|
const totals = { files: 0, directories: 0 };
|
|
132
187
|
let truncated = false;
|
|
133
188
|
let stoppedReason;
|
|
189
|
+
const counters = { skippedInaccessible: 0, symlinksNotFollowed: 0 };
|
|
134
190
|
const pending = [];
|
|
135
191
|
let scheduledCount = 0;
|
|
136
|
-
const stream = createEntryStream(basePath, normalized, maxDepth, needsStats);
|
|
192
|
+
const stream = createEntryStream(basePath, normalized, maxDepth, needsStats, signal);
|
|
137
193
|
const flushPending = async () => {
|
|
138
194
|
if (pending.length === 0)
|
|
139
195
|
return;
|
|
@@ -146,31 +202,38 @@ async function collectEntries(basePath, normalized, signal, needsStats, maxDepth
|
|
|
146
202
|
stoppedReason = stop.reason;
|
|
147
203
|
break;
|
|
148
204
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
await flushPending();
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
await task;
|
|
205
|
+
const entryType = resolveEntryType(entry.dirent);
|
|
206
|
+
trackSymlink(entryType, normalized.includeSymlinkTargets, counters);
|
|
207
|
+
const accessible = await isEntryAccessible(entry.path, signal, counters);
|
|
208
|
+
if (!accessible) {
|
|
209
|
+
continue;
|
|
159
210
|
}
|
|
211
|
+
scheduledCount += 1;
|
|
212
|
+
await appendEntryWithQueue(basePath, entry, normalized, needsStats, totals, entries, pending, flushPending);
|
|
160
213
|
}
|
|
161
214
|
if (normalized.includeSymlinkTargets) {
|
|
162
215
|
await flushPending();
|
|
163
216
|
}
|
|
164
|
-
return {
|
|
217
|
+
return {
|
|
218
|
+
entries,
|
|
219
|
+
totals,
|
|
220
|
+
truncated,
|
|
221
|
+
stoppedReason,
|
|
222
|
+
skippedInaccessible: counters.skippedInaccessible,
|
|
223
|
+
symlinksNotFollowed: counters.symlinksNotFollowed,
|
|
224
|
+
};
|
|
165
225
|
}
|
|
166
226
|
async function executeListDirectory(basePath, normalized, signal) {
|
|
167
227
|
const needsStats = needsStatsForSort(normalized.sortBy);
|
|
168
228
|
const maxDepth = resolveMaxDepth(normalized);
|
|
169
|
-
const { entries, totals, truncated, stoppedReason } = await collectEntries(basePath, normalized, signal, needsStats, maxDepth);
|
|
229
|
+
const { entries, totals, truncated, stoppedReason, skippedInaccessible, symlinksNotFollowed, } = await collectEntries(basePath, normalized, signal, needsStats, maxDepth);
|
|
170
230
|
sortEntries(entries, normalized.sortBy);
|
|
171
231
|
return {
|
|
172
232
|
entries,
|
|
173
|
-
summary: buildSummary(entries, totals, maxDepth, truncated, stoppedReason
|
|
233
|
+
summary: buildSummary(entries, totals, maxDepth, truncated, stoppedReason, {
|
|
234
|
+
skippedInaccessible,
|
|
235
|
+
symlinksNotFollowed,
|
|
236
|
+
}),
|
|
174
237
|
};
|
|
175
238
|
}
|
|
176
239
|
export async function listDirectory(dirPath, options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-directory.js","sourceRoot":"","sources":["../../../src/lib/file-operations/list-directory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-directory.js","sourceRoot":"","sources":["../../../src/lib/file-operations/list-directory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"read-multiple-files.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA2UD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAgC/B"}
|
|
@@ -111,22 +111,9 @@ async function tryValidateFile(filePath, index, signal) {
|
|
|
111
111
|
return undefined;
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
async function validateFilesInParallel(filePaths, signal) {
|
|
115
|
-
const tasks = filePaths
|
|
116
|
-
.map((filePath, index) => ({ filePath, index }))
|
|
117
|
-
.filter((task) => task.filePath);
|
|
118
|
-
const { results } = await processInParallel(tasks, async (task) => tryValidateFile(task.filePath, task.index, signal), PARALLEL_CONCURRENCY, signal);
|
|
119
|
-
const validated = new Map();
|
|
120
|
-
for (const info of results) {
|
|
121
|
-
if (!info)
|
|
122
|
-
continue;
|
|
123
|
-
validated.set(info.index, info);
|
|
124
|
-
}
|
|
125
|
-
return validated;
|
|
126
|
-
}
|
|
127
114
|
async function collectFileBudget(filePaths, partialRead, maxTotalSize, maxSize, signal) {
|
|
128
115
|
const skippedBudget = new Set();
|
|
129
|
-
const validated =
|
|
116
|
+
const validated = new Map();
|
|
130
117
|
const estimateSize = partialRead
|
|
131
118
|
? (stats) => estimatePartialSize(stats, maxSize)
|
|
132
119
|
: estimateFullSize;
|
|
@@ -135,19 +122,34 @@ async function collectFileBudget(filePaths, partialRead, maxTotalSize, maxSize,
|
|
|
135
122
|
const filePath = filePaths[index];
|
|
136
123
|
if (!filePath)
|
|
137
124
|
continue;
|
|
138
|
-
const info =
|
|
125
|
+
const info = await resolveValidatedInfo(filePath, index, validated, signal);
|
|
139
126
|
if (!info)
|
|
140
127
|
continue;
|
|
141
|
-
const
|
|
142
|
-
if (
|
|
143
|
-
skippedBudget.add(index);
|
|
144
|
-
markRemainingSkipped(index + 1, filePaths.length, skippedBudget);
|
|
128
|
+
const { exceeded, totalSize: nextTotalSize } = applyBudget(totalSize, estimateSize(info.stats), maxTotalSize, index, filePaths.length, skippedBudget);
|
|
129
|
+
if (exceeded) {
|
|
145
130
|
return { skippedBudget, validated };
|
|
146
131
|
}
|
|
147
|
-
totalSize
|
|
132
|
+
totalSize = nextTotalSize;
|
|
148
133
|
}
|
|
149
134
|
return { skippedBudget, validated };
|
|
150
135
|
}
|
|
136
|
+
async function resolveValidatedInfo(filePath, index, validated, signal) {
|
|
137
|
+
if (!validated.has(index)) {
|
|
138
|
+
const info = await tryValidateFile(filePath, index, signal);
|
|
139
|
+
if (info) {
|
|
140
|
+
validated.set(index, info);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return validated.get(index);
|
|
144
|
+
}
|
|
145
|
+
function applyBudget(totalSize, estimatedSize, maxTotalSize, index, totalFiles, skippedBudget) {
|
|
146
|
+
if (totalSize + estimatedSize > maxTotalSize) {
|
|
147
|
+
skippedBudget.add(index);
|
|
148
|
+
markRemainingSkipped(index + 1, totalFiles, skippedBudget);
|
|
149
|
+
return { totalSize, exceeded: true };
|
|
150
|
+
}
|
|
151
|
+
return { totalSize: totalSize + estimatedSize, exceeded: false };
|
|
152
|
+
}
|
|
151
153
|
function buildOutput(filePaths) {
|
|
152
154
|
return filePaths.map((filePath) => ({ path: filePath }));
|
|
153
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files.js","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"read-multiple-files.js","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-content.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/search-content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAUxC,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"search-content.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/search-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { ErrorCode, McpError } from '../errors.js';
|
|
|
10
10
|
import { assertNotAborted, createTimedAbortSignal, isProbablyBinary, withAbort, } from '../fs-helpers.js';
|
|
11
11
|
import { publishOpsTraceEnd, publishOpsTraceError, publishOpsTraceStart, shouldPublishOpsTrace, } from '../observability.js';
|
|
12
12
|
import { assertAllowedFileAccess, isSensitivePath } from '../path-policy.js';
|
|
13
|
-
import {
|
|
13
|
+
import { validateExistingDirectory, validateExistingPathDetailed, } from '../path-validation.js';
|
|
14
14
|
import { globEntries } from './glob-engine.js';
|
|
15
15
|
const INTERNAL_MAX_RESULTS = 500;
|
|
16
16
|
const DEFAULTS = {
|
|
@@ -202,9 +202,11 @@ function appendMatch(matches, requestedPath, line, trimmedLine, lineNo, count, c
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
function recordLineMatch(line, matcher, options, requestedPath, lineNo, matches, ctx) {
|
|
205
|
-
const contextBefore = options.contextLines > 0 ? snapshotContextBefore(ctx) : undefined;
|
|
206
|
-
const trimmedLine = updateContext(line, options.contextLines, ctx);
|
|
207
205
|
const count = matcher(line);
|
|
206
|
+
const contextBefore = count > 0 && options.contextLines > 0
|
|
207
|
+
? snapshotContextBefore(ctx)
|
|
208
|
+
: undefined;
|
|
209
|
+
const trimmedLine = updateContext(line, options.contextLines, ctx);
|
|
208
210
|
if (count > 0) {
|
|
209
211
|
appendMatch(matches, requestedPath, line, trimmedLine, lineNo, count, options.contextLines, ctx, contextBefore);
|
|
210
212
|
}
|
|
@@ -315,13 +317,6 @@ async function executeSearchSingleFile(file, baseDir, pattern, opts, signal) {
|
|
|
315
317
|
return buildSearchResult(baseDir, pattern, path.basename(file.requestedPath), matches, summary);
|
|
316
318
|
});
|
|
317
319
|
}
|
|
318
|
-
function resolveNonSymlinkPath(entryPath, allowedDirs) {
|
|
319
|
-
const normalized = normalizePath(entryPath);
|
|
320
|
-
if (!isPathWithinDirectories(normalized, allowedDirs)) {
|
|
321
|
-
throw toAccessDeniedWithHint(entryPath, normalized, normalized);
|
|
322
|
-
}
|
|
323
|
-
return { resolvedPath: normalized, requestedPath: normalized };
|
|
324
|
-
}
|
|
325
320
|
function createScanSummary() {
|
|
326
321
|
return {
|
|
327
322
|
filesScanned: 0,
|
|
@@ -344,24 +339,26 @@ function shouldStopCollecting(summary, maxFilesScanned, signal) {
|
|
|
344
339
|
}
|
|
345
340
|
return false;
|
|
346
341
|
}
|
|
347
|
-
async function resolveEntryPath(entry,
|
|
342
|
+
async function resolveEntryPath(entry, signal) {
|
|
348
343
|
try {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
:
|
|
344
|
+
const details = await validateExistingPathDetailed(entry.path, signal);
|
|
345
|
+
return {
|
|
346
|
+
resolvedPath: details.resolvedPath,
|
|
347
|
+
requestedPath: details.requestedPath,
|
|
348
|
+
};
|
|
352
349
|
}
|
|
353
350
|
catch {
|
|
354
351
|
return null;
|
|
355
352
|
}
|
|
356
353
|
}
|
|
357
|
-
async function* collectFromStream(stream, opts,
|
|
354
|
+
async function* collectFromStream(stream, opts, signal, summary, onProgress) {
|
|
358
355
|
for await (const entry of stream) {
|
|
359
356
|
if (!entry.dirent.isFile())
|
|
360
357
|
continue;
|
|
361
358
|
if (shouldStopCollecting(summary, opts.maxFilesScanned, signal)) {
|
|
362
359
|
break;
|
|
363
360
|
}
|
|
364
|
-
const resolved = await resolveEntryPath(entry,
|
|
361
|
+
const resolved = await resolveEntryPath(entry, signal);
|
|
365
362
|
if (!resolved) {
|
|
366
363
|
summary.skippedInaccessible++;
|
|
367
364
|
continue;
|
|
@@ -377,7 +374,7 @@ async function* collectFromStream(stream, opts, allowedDirs, signal, summary, on
|
|
|
377
374
|
yield resolved;
|
|
378
375
|
}
|
|
379
376
|
}
|
|
380
|
-
function collectFilesStream(root, opts,
|
|
377
|
+
function collectFilesStream(root, opts, signal, onProgress) {
|
|
381
378
|
const summary = createScanSummary();
|
|
382
379
|
const stream = globEntries({
|
|
383
380
|
cwd: root,
|
|
@@ -392,7 +389,7 @@ function collectFilesStream(root, opts, allowedDirs, signal, onProgress) {
|
|
|
392
389
|
suppressErrors: true,
|
|
393
390
|
});
|
|
394
391
|
return {
|
|
395
|
-
stream: collectFromStream(stream, opts,
|
|
392
|
+
stream: collectFromStream(stream, opts, signal, summary, onProgress),
|
|
396
393
|
summary,
|
|
397
394
|
};
|
|
398
395
|
}
|
|
@@ -922,9 +919,9 @@ function buildSearchResult(root, pattern, filePattern, matches, summary) {
|
|
|
922
919
|
summary: buildSummary(summary, matches),
|
|
923
920
|
};
|
|
924
921
|
}
|
|
925
|
-
async function executeSearch(root, pattern, opts,
|
|
922
|
+
async function executeSearch(root, pattern, opts, signal, onProgress) {
|
|
926
923
|
return await withSearchExecution(pattern, opts, async (context) => {
|
|
927
|
-
const { stream, summary } = collectFilesStream(root, opts,
|
|
924
|
+
const { stream, summary } = collectFilesStream(root, opts, signal, onProgress);
|
|
928
925
|
const matches = await scanMatches(stream, pattern, context.matcherOptions, context.scanOptions, opts.maxResults, signal, summary);
|
|
929
926
|
return buildSearchResult(root, pattern, opts.filePattern, matches, summary);
|
|
930
927
|
});
|
|
@@ -932,13 +929,12 @@ async function executeSearch(root, pattern, opts, allowedDirs, signal, onProgres
|
|
|
932
929
|
export async function searchContent(basePath, pattern, options = {}) {
|
|
933
930
|
const opts = mergeOptions(options);
|
|
934
931
|
const { signal, cleanup } = createTimedAbortSignal(options.signal, opts.timeoutMs);
|
|
935
|
-
const allowedDirs = getAllowedDirectories();
|
|
936
932
|
try {
|
|
937
933
|
const details = await validateExistingPathDetailed(basePath, signal);
|
|
938
934
|
const stats = await withAbort(fsp.stat(details.resolvedPath), signal);
|
|
939
935
|
if (stats.isDirectory()) {
|
|
940
936
|
const root = await validateExistingDirectory(details.resolvedPath, signal);
|
|
941
|
-
return await executeSearch(root, pattern, opts,
|
|
937
|
+
return await executeSearch(root, pattern, opts, signal, options.onProgress);
|
|
942
938
|
}
|
|
943
939
|
if (stats.isFile()) {
|
|
944
940
|
const baseDir = path.dirname(details.requestedPath);
|