@j0hanz/filesystem-context-mcp 1.2.8 → 1.2.9
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 +52 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.js +21 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.js.map +1 -1
- package/dist/__tests__/lib/file-operations/read-multiple-files.test.js +18 -0
- package/dist/__tests__/lib/file-operations/read-multiple-files.test.js.map +1 -1
- package/dist/__tests__/lib/file-operations/search-definitions.test.d.ts +2 -0
- package/dist/__tests__/lib/file-operations/search-definitions.test.d.ts.map +1 -0
- package/dist/__tests__/lib/file-operations/search-definitions.test.js +290 -0
- package/dist/__tests__/lib/file-operations/search-definitions.test.js.map +1 -0
- package/dist/config/types.d.ts +33 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/instructions.md +48 -12
- package/dist/lib/file-operations/list-directory-helpers.d.ts +1 -0
- package/dist/lib/file-operations/list-directory-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory-helpers.js +9 -6
- 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 +2 -0
- package/dist/lib/file-operations/list-directory.js.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.d.ts +2 -0
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.js +44 -11
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
- package/dist/lib/file-operations/search-definitions.d.ts +6 -0
- package/dist/lib/file-operations/search-definitions.d.ts.map +1 -0
- package/dist/lib/file-operations/search-definitions.js +216 -0
- package/dist/lib/file-operations/search-definitions.js.map +1 -0
- package/dist/lib/file-operations/search-files-helpers.d.ts +3 -1
- package/dist/lib/file-operations/search-files-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files-helpers.js +4 -2
- package/dist/lib/file-operations/search-files-helpers.js.map +1 -1
- package/dist/lib/file-operations/search-files.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files.js +1 -1
- package/dist/lib/file-operations/search-files.js.map +1 -1
- package/dist/lib/file-operations.d.ts +1 -0
- package/dist/lib/file-operations.d.ts.map +1 -1
- package/dist/lib/file-operations.js +1 -0
- package/dist/lib/file-operations.js.map +1 -1
- package/dist/schemas/common.d.ts +2 -2
- 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/inputs.d.ts +14 -0
- package/dist/schemas/inputs.d.ts.map +1 -1
- package/dist/schemas/inputs.js +32 -0
- package/dist/schemas/inputs.js.map +1 -1
- package/dist/schemas/outputs.d.ts +146 -20
- package/dist/schemas/outputs.d.ts.map +1 -1
- package/dist/schemas/outputs.js +40 -1
- package/dist/schemas/outputs.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-directory.d.ts.map +1 -1
- package/dist/tools/list-directory.js +6 -4
- package/dist/tools/list-directory.js.map +1 -1
- package/dist/tools/read-multiple-files.d.ts.map +1 -1
- package/dist/tools/read-multiple-files.js +3 -1
- package/dist/tools/read-multiple-files.js.map +1 -1
- package/dist/tools/search-definitions.d.ts +3 -0
- package/dist/tools/search-definitions.d.ts.map +1 -0
- package/dist/tools/search-definitions.js +116 -0
- package/dist/tools/search-definitions.js.map +1 -0
- package/dist/tools/search-files.d.ts.map +1 -1
- package/dist/tools/search-files.js +3 -2
- package/dist/tools/search-files.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -37,6 +37,7 @@ A secure, read-only MCP server for filesystem scanning, searching, and analysis
|
|
|
37
37
|
| Explore project structure | `list_directory` |
|
|
38
38
|
| Find specific file types | `search_files` |
|
|
39
39
|
| Search for code patterns/text | `search_content` |
|
|
40
|
+
| Find code definitions | `search_definitions` |
|
|
40
41
|
| Understand codebase statistics | `analyze_directory` |
|
|
41
42
|
| Get AI-friendly project overview | `directory_tree` |
|
|
42
43
|
| Read source code | `read_file` |
|
|
@@ -323,6 +324,55 @@ Search for text content within files using regular expressions.
|
|
|
323
324
|
|
|
324
325
|
---
|
|
325
326
|
|
|
327
|
+
### `search_definitions`
|
|
328
|
+
|
|
329
|
+
Find code definitions (classes, functions, interfaces, types, enums, variables) in TypeScript/JavaScript files without manual regex construction.
|
|
330
|
+
|
|
331
|
+
| Parameter | Type | Required | Default | Description |
|
|
332
|
+
| ----------------- | -------- | -------- | ------- | ------------------------------------------------------------------------------------- |
|
|
333
|
+
| `path` | string | ❌ | - | Base directory to search in |
|
|
334
|
+
| `name` | string | ❌ | - | Definition name to search for |
|
|
335
|
+
| `type` | string | ❌ | - | Definition type to find: `class`, `function`, `interface`, `type`, `enum`, `variable` |
|
|
336
|
+
| `caseSensitive` | boolean | ❌ | `true` | Case-sensitive name matching |
|
|
337
|
+
| `maxResults` | number | ❌ | `100` | Maximum number of results (1-10,000) |
|
|
338
|
+
| `excludePatterns` | string[] | ❌ | `[]` | Glob patterns to exclude |
|
|
339
|
+
| `includeHidden` | boolean | ❌ | `false` | Include hidden files and directories |
|
|
340
|
+
| `contextLines` | number | ❌ | `0` | Lines of context before/after match (0-10) |
|
|
341
|
+
|
|
342
|
+
**Returns:** List of definitions with name, type (class/function/interface/type/enum/variable), file path, line number, exported status, and code preview.
|
|
343
|
+
|
|
344
|
+
**Use cases:**
|
|
345
|
+
|
|
346
|
+
- **Find by name:** Search for a specific definition like `UserService`
|
|
347
|
+
- **Discovery mode:** Find all definitions of a type (e.g., all interfaces)
|
|
348
|
+
- **Combined:** Find definitions matching a name pattern and type
|
|
349
|
+
|
|
350
|
+
**Examples:**
|
|
351
|
+
|
|
352
|
+
```json
|
|
353
|
+
{
|
|
354
|
+
"path": "/project/src",
|
|
355
|
+
"name": "UserService"
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
```json
|
|
360
|
+
{
|
|
361
|
+
"path": "/project/src",
|
|
362
|
+
"type": "interface"
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
```json
|
|
367
|
+
{
|
|
368
|
+
"path": "/project/src",
|
|
369
|
+
"name": "Handler",
|
|
370
|
+
"type": "class"
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
326
376
|
### `analyze_directory`
|
|
327
377
|
|
|
328
378
|
Analyze a directory structure and return statistics.
|
|
@@ -580,6 +630,7 @@ src/
|
|
|
580
630
|
│ │ ├── read-media-file.ts
|
|
581
631
|
│ │ ├── read-multiple-files.ts
|
|
582
632
|
│ │ ├── search-content.ts
|
|
633
|
+
│ │ ├── search-definitions.ts
|
|
583
634
|
│ │ ├── search-files.ts
|
|
584
635
|
│ │ └── sorting.ts
|
|
585
636
|
│ ├── fs-helpers/ # Low-level filesystem helpers
|
|
@@ -615,6 +666,7 @@ src/
|
|
|
615
666
|
│ ├── read-media-file.ts
|
|
616
667
|
│ ├── read-multiple-files.ts
|
|
617
668
|
│ ├── search-content.ts
|
|
669
|
+
│ ├── search-definitions.ts
|
|
618
670
|
│ ├── search-files.ts
|
|
619
671
|
│ ├── tool-response.ts # Tool response formatting
|
|
620
672
|
│ └── index.ts # Tool registration
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
1
2
|
import * as path from 'node:path';
|
|
2
3
|
import { expect, it } from 'vitest';
|
|
3
4
|
import { readMultipleFiles } from '../../../lib/file-operations.js';
|
|
@@ -16,4 +17,24 @@ it('readMultipleFiles handles all files failing', async () => {
|
|
|
16
17
|
expect(results.length).toBe(2);
|
|
17
18
|
expect(results.every((r) => r.error !== undefined)).toBe(true);
|
|
18
19
|
});
|
|
20
|
+
it('readMultipleFiles rejects line range with head/tail', async () => {
|
|
21
|
+
const filePath = path.join(getTestDir(), 'multiline.txt');
|
|
22
|
+
await expect(readMultipleFiles([filePath], {
|
|
23
|
+
lineStart: 1,
|
|
24
|
+
lineEnd: 2,
|
|
25
|
+
head: 1,
|
|
26
|
+
})).rejects.toThrow('Cannot specify multiple');
|
|
27
|
+
});
|
|
28
|
+
it('readMultipleFiles applies maxTotalSize per entry even with duplicates', async () => {
|
|
29
|
+
const filePath = path.join(getTestDir(), 'big-duplicate.log');
|
|
30
|
+
const largeContent = 'A'.repeat(50_000);
|
|
31
|
+
await fs.writeFile(filePath, largeContent);
|
|
32
|
+
const results = await readMultipleFiles([filePath, filePath], {
|
|
33
|
+
head: 1,
|
|
34
|
+
maxTotalSize: 10,
|
|
35
|
+
});
|
|
36
|
+
expect(results.length).toBe(2);
|
|
37
|
+
expect(results.every((r) => r.error !== undefined)).toBe(true);
|
|
38
|
+
await fs.rm(filePath).catch(() => { });
|
|
39
|
+
});
|
|
19
40
|
//# sourceMappingURL=read-multiple-files-edge-cases.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files-edge-cases.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AAEvC,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;IACrD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;IAC3D,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC;KAC5C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"read-multiple-files-edge-cases.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AAEvC,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;IACrD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;IAC3D,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC;KAC5C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,eAAe,CAAC,CAAC;IAC1D,MAAM,MAAM,CACV,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE;QAC5B,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;KACR,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;IACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;QAC5D,IAAI,EAAE,CAAC;QACP,YAAY,EAAE,EAAE;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
|
|
@@ -23,6 +23,13 @@ it('readMultipleFiles handles individual file errors gracefully', async () => {
|
|
|
23
23
|
expect(results[0]?.content).toBeDefined();
|
|
24
24
|
expect(results[1]?.error).toBeDefined();
|
|
25
25
|
});
|
|
26
|
+
it('readMultipleFiles preserves requested paths for duplicates', async () => {
|
|
27
|
+
const filePath = path.join(getTestDir(), 'README.md');
|
|
28
|
+
const results = await readMultipleFiles([filePath, filePath]);
|
|
29
|
+
expect(results.length).toBe(2);
|
|
30
|
+
expect(results[0]?.path).toBe(filePath);
|
|
31
|
+
expect(results[1]?.path).toBe(filePath);
|
|
32
|
+
});
|
|
26
33
|
it('readMultipleFiles enforces total size cap for head/tail reads', async () => {
|
|
27
34
|
const big1 = path.join(getTestDir(), 'big1.log');
|
|
28
35
|
const big2 = path.join(getTestDir(), 'big2.log');
|
|
@@ -36,4 +43,15 @@ it('readMultipleFiles enforces total size cap for head/tail reads', async () =>
|
|
|
36
43
|
expect(results.every((r) => r.error !== undefined)).toBe(true);
|
|
37
44
|
await Promise.all([fs.rm(big1), fs.rm(big2)]).catch(() => { });
|
|
38
45
|
});
|
|
46
|
+
it('readMultipleFiles supports line range reads', async () => {
|
|
47
|
+
const filePath = path.join(getTestDir(), 'multiline.txt');
|
|
48
|
+
const results = await readMultipleFiles([filePath], {
|
|
49
|
+
lineStart: 2,
|
|
50
|
+
lineEnd: 4,
|
|
51
|
+
});
|
|
52
|
+
const content = results[0]?.content ?? '';
|
|
53
|
+
expect(content.split('\n')[0]).toBe('Line 2');
|
|
54
|
+
expect(content.split('\n')[2]).toBe('Line 4');
|
|
55
|
+
expect(results[0]?.truncated).toBe(true);
|
|
56
|
+
});
|
|
39
57
|
//# sourceMappingURL=read-multiple-files.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/read-multiple-files.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AAEvC,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;IAClE,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC;KAC3C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;IAC3E,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC;KAC5C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;QACpD,IAAI,EAAE,CAAC;QACP,YAAY,EAAE,EAAE;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"read-multiple-files.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/read-multiple-files.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-definitions.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/search-definitions.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as os from 'node:os';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
5
|
+
import { searchDefinitions } from '../../../lib/file-operations/search-definitions.js';
|
|
6
|
+
import { normalizePath } from '../../../lib/path-utils.js';
|
|
7
|
+
import { setAllowedDirectories } from '../../../lib/path-validation.js';
|
|
8
|
+
describe('searchDefinitions', () => {
|
|
9
|
+
let testDir;
|
|
10
|
+
beforeAll(async () => {
|
|
11
|
+
// Create a unique temp directory for this test suite
|
|
12
|
+
testDir = await fs.mkdtemp(path.join(os.tmpdir(), 'mcp-search-definitions-test-'));
|
|
13
|
+
setAllowedDirectories([normalizePath(testDir)]);
|
|
14
|
+
// Create directory structure
|
|
15
|
+
await fs.mkdir(path.join(testDir, 'src', 'services'), { recursive: true });
|
|
16
|
+
await fs.mkdir(path.join(testDir, 'src', 'utils'), { recursive: true });
|
|
17
|
+
await fs.mkdir(path.join(testDir, 'src', 'types'), { recursive: true });
|
|
18
|
+
// Create test TypeScript files with various definitions
|
|
19
|
+
await fs.writeFile(path.join(testDir, 'src', 'services', 'user-service.ts'), `import { Database } from '../database';
|
|
20
|
+
|
|
21
|
+
export class UserService {
|
|
22
|
+
private db: Database;
|
|
23
|
+
|
|
24
|
+
constructor(db: Database) {
|
|
25
|
+
this.db = db;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async getUser(id: string): Promise<User | null> {
|
|
29
|
+
return this.db.findById(id);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface User {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
email: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export type UserId = string;
|
|
40
|
+
|
|
41
|
+
export const DEFAULT_USER: User = {
|
|
42
|
+
id: '0',
|
|
43
|
+
name: 'Guest',
|
|
44
|
+
email: 'guest@example.com',
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export enum UserRole {
|
|
48
|
+
Admin = 'admin',
|
|
49
|
+
User = 'user',
|
|
50
|
+
Guest = 'guest',
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export async function createUser(name: string): Promise<User> {
|
|
54
|
+
return { id: crypto.randomUUID(), name, email: '' };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const internalHelper = (x: number) => x * 2;
|
|
58
|
+
|
|
59
|
+
export const processUser = async (user: User) => {
|
|
60
|
+
return user;
|
|
61
|
+
};
|
|
62
|
+
`);
|
|
63
|
+
await fs.writeFile(path.join(testDir, 'src', 'utils', 'helpers.ts'), `export function formatDate(date: Date): string {
|
|
64
|
+
return date.toISOString();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const debounce = <T extends (...args: unknown[]) => unknown>(
|
|
68
|
+
fn: T,
|
|
69
|
+
delay: number
|
|
70
|
+
) => {
|
|
71
|
+
let timeoutId: ReturnType<typeof setTimeout>;
|
|
72
|
+
return (...args: Parameters<T>) => {
|
|
73
|
+
clearTimeout(timeoutId);
|
|
74
|
+
timeoutId = setTimeout(() => fn(...args), delay);
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export interface DateOptions {
|
|
79
|
+
locale?: string;
|
|
80
|
+
timezone?: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export type DateFormatter = (date: Date, options?: DateOptions) => string;
|
|
84
|
+
`);
|
|
85
|
+
await fs.writeFile(path.join(testDir, 'src', 'types', 'index.ts'), `export interface ApiResponse<T> {
|
|
86
|
+
data: T;
|
|
87
|
+
status: number;
|
|
88
|
+
message?: string;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export type ApiError = {
|
|
92
|
+
code: string;
|
|
93
|
+
message: string;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
97
|
+
|
|
98
|
+
export const enum HttpStatus {
|
|
99
|
+
OK = 200,
|
|
100
|
+
Created = 201,
|
|
101
|
+
BadRequest = 400,
|
|
102
|
+
NotFound = 404,
|
|
103
|
+
}
|
|
104
|
+
`);
|
|
105
|
+
});
|
|
106
|
+
afterAll(async () => {
|
|
107
|
+
// Cleanup
|
|
108
|
+
try {
|
|
109
|
+
await fs.rm(testDir, { recursive: true, force: true });
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Ignore cleanup errors
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
describe('search by name', () => {
|
|
116
|
+
it('should find a class by name', async () => {
|
|
117
|
+
const result = await searchDefinitions({
|
|
118
|
+
path: testDir,
|
|
119
|
+
name: 'UserService',
|
|
120
|
+
type: 'class',
|
|
121
|
+
});
|
|
122
|
+
expect(result.definitions).toHaveLength(1);
|
|
123
|
+
expect(result.definitions[0]).toMatchObject({
|
|
124
|
+
name: 'UserService',
|
|
125
|
+
definitionType: 'class',
|
|
126
|
+
exported: true,
|
|
127
|
+
});
|
|
128
|
+
expect(result.definitions[0]?.file).toContain('user-service.ts');
|
|
129
|
+
});
|
|
130
|
+
it('should find a function by name', async () => {
|
|
131
|
+
const result = await searchDefinitions({
|
|
132
|
+
path: testDir,
|
|
133
|
+
name: 'createUser',
|
|
134
|
+
});
|
|
135
|
+
expect(result.definitions.length).toBeGreaterThanOrEqual(1);
|
|
136
|
+
const createUserDef = result.definitions.find((d) => d.name === 'createUser');
|
|
137
|
+
expect(createUserDef).toBeDefined();
|
|
138
|
+
expect(createUserDef?.definitionType).toBe('function');
|
|
139
|
+
expect(createUserDef?.exported).toBe(true);
|
|
140
|
+
});
|
|
141
|
+
it('should find an interface by name', async () => {
|
|
142
|
+
const result = await searchDefinitions({
|
|
143
|
+
path: testDir,
|
|
144
|
+
name: 'User',
|
|
145
|
+
type: 'interface',
|
|
146
|
+
});
|
|
147
|
+
expect(result.definitions.length).toBeGreaterThanOrEqual(1);
|
|
148
|
+
const userInterface = result.definitions.find((d) => d.name === 'User' && d.definitionType === 'interface');
|
|
149
|
+
expect(userInterface).toBeDefined();
|
|
150
|
+
});
|
|
151
|
+
it('should find a type alias by name', async () => {
|
|
152
|
+
const result = await searchDefinitions({
|
|
153
|
+
path: testDir,
|
|
154
|
+
name: 'UserId',
|
|
155
|
+
type: 'type',
|
|
156
|
+
});
|
|
157
|
+
expect(result.definitions).toHaveLength(1);
|
|
158
|
+
expect(result.definitions[0]).toMatchObject({
|
|
159
|
+
name: 'UserId',
|
|
160
|
+
definitionType: 'type',
|
|
161
|
+
exported: true,
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
it('should find an enum by name', async () => {
|
|
165
|
+
const result = await searchDefinitions({
|
|
166
|
+
path: testDir,
|
|
167
|
+
name: 'UserRole',
|
|
168
|
+
type: 'enum',
|
|
169
|
+
});
|
|
170
|
+
expect(result.definitions).toHaveLength(1);
|
|
171
|
+
expect(result.definitions[0]).toMatchObject({
|
|
172
|
+
name: 'UserRole',
|
|
173
|
+
definitionType: 'enum',
|
|
174
|
+
exported: true,
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
describe('discovery mode (search by type)', () => {
|
|
179
|
+
it('should find all classes', async () => {
|
|
180
|
+
const result = await searchDefinitions({
|
|
181
|
+
path: testDir,
|
|
182
|
+
type: 'class',
|
|
183
|
+
});
|
|
184
|
+
expect(result.definitions.length).toBeGreaterThanOrEqual(1);
|
|
185
|
+
expect(result.definitions.every((d) => d.definitionType === 'class')).toBe(true);
|
|
186
|
+
});
|
|
187
|
+
it('should find all interfaces', async () => {
|
|
188
|
+
const result = await searchDefinitions({
|
|
189
|
+
path: testDir,
|
|
190
|
+
type: 'interface',
|
|
191
|
+
});
|
|
192
|
+
expect(result.definitions.length).toBeGreaterThanOrEqual(3);
|
|
193
|
+
const names = result.definitions.map((d) => d.name);
|
|
194
|
+
expect(names).toContain('User');
|
|
195
|
+
expect(names).toContain('DateOptions');
|
|
196
|
+
expect(names).toContain('ApiResponse');
|
|
197
|
+
});
|
|
198
|
+
it('should find all type aliases', async () => {
|
|
199
|
+
const result = await searchDefinitions({
|
|
200
|
+
path: testDir,
|
|
201
|
+
type: 'type',
|
|
202
|
+
});
|
|
203
|
+
expect(result.definitions.length).toBeGreaterThanOrEqual(3);
|
|
204
|
+
const names = result.definitions.map((d) => d.name);
|
|
205
|
+
expect(names).toContain('UserId');
|
|
206
|
+
expect(names).toContain('DateFormatter');
|
|
207
|
+
expect(names).toContain('ApiError');
|
|
208
|
+
});
|
|
209
|
+
it('should find all enums', async () => {
|
|
210
|
+
const result = await searchDefinitions({
|
|
211
|
+
path: testDir,
|
|
212
|
+
type: 'enum',
|
|
213
|
+
});
|
|
214
|
+
expect(result.definitions.length).toBeGreaterThanOrEqual(2);
|
|
215
|
+
const names = result.definitions.map((d) => d.name);
|
|
216
|
+
expect(names).toContain('UserRole');
|
|
217
|
+
expect(names).toContain('HttpStatus');
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
describe('options', () => {
|
|
221
|
+
it('should include context lines when specified', async () => {
|
|
222
|
+
const result = await searchDefinitions({
|
|
223
|
+
path: testDir,
|
|
224
|
+
name: 'UserService',
|
|
225
|
+
type: 'class',
|
|
226
|
+
contextLines: 2,
|
|
227
|
+
});
|
|
228
|
+
expect(result.definitions).toHaveLength(1);
|
|
229
|
+
expect(result.definitions[0]?.contextBefore).toBeDefined();
|
|
230
|
+
expect(result.definitions[0]?.contextAfter).toBeDefined();
|
|
231
|
+
});
|
|
232
|
+
it('should respect maxResults limit', async () => {
|
|
233
|
+
const result = await searchDefinitions({
|
|
234
|
+
path: testDir,
|
|
235
|
+
type: 'interface',
|
|
236
|
+
maxResults: 2,
|
|
237
|
+
});
|
|
238
|
+
expect(result.definitions.length).toBeLessThanOrEqual(2);
|
|
239
|
+
});
|
|
240
|
+
it('should detect exported vs non-exported definitions', async () => {
|
|
241
|
+
// Search for functions - will include both regular functions and arrow functions
|
|
242
|
+
const result = await searchDefinitions({
|
|
243
|
+
path: testDir,
|
|
244
|
+
type: 'function',
|
|
245
|
+
});
|
|
246
|
+
const exported = result.definitions.filter((d) => d.exported);
|
|
247
|
+
const nonExported = result.definitions.filter((d) => !d.exported);
|
|
248
|
+
// Should have exported functions like createUser, formatDate
|
|
249
|
+
expect(exported.length).toBeGreaterThan(0);
|
|
250
|
+
// Note: internalHelper is an arrow function, so it may or may not be found
|
|
251
|
+
// depending on the search pattern. The key test is that exported/non-exported
|
|
252
|
+
// detection works for definitions that are found.
|
|
253
|
+
if (nonExported.length > 0) {
|
|
254
|
+
expect(nonExported[0]?.exported).toBe(false);
|
|
255
|
+
}
|
|
256
|
+
if (exported.length > 0) {
|
|
257
|
+
expect(exported[0]?.exported).toBe(true);
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
describe('error handling', () => {
|
|
262
|
+
it('should throw error when neither name nor type is provided', async () => {
|
|
263
|
+
await expect(searchDefinitions({
|
|
264
|
+
path: testDir,
|
|
265
|
+
})).rejects.toThrow(/name or type/i);
|
|
266
|
+
});
|
|
267
|
+
it('should return empty results for non-existent symbol', async () => {
|
|
268
|
+
const result = await searchDefinitions({
|
|
269
|
+
path: testDir,
|
|
270
|
+
name: 'NonExistentClass',
|
|
271
|
+
type: 'class',
|
|
272
|
+
});
|
|
273
|
+
expect(result.definitions).toHaveLength(0);
|
|
274
|
+
expect(result.summary.totalDefinitions).toBe(0);
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
describe('summary', () => {
|
|
278
|
+
it('should include accurate summary statistics', async () => {
|
|
279
|
+
const result = await searchDefinitions({
|
|
280
|
+
path: testDir,
|
|
281
|
+
type: 'interface',
|
|
282
|
+
});
|
|
283
|
+
expect(result.summary.filesScanned).toBeGreaterThan(0);
|
|
284
|
+
expect(result.summary.filesMatched).toBeGreaterThan(0);
|
|
285
|
+
expect(result.summary.totalDefinitions).toBe(result.definitions.length);
|
|
286
|
+
expect(typeof result.summary.truncated).toBe('boolean');
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
//# sourceMappingURL=search-definitions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-definitions.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/file-operations/search-definitions.test.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -124,6 +124,39 @@ export interface MediaFileResult {
|
|
|
124
124
|
size: number;
|
|
125
125
|
data: string;
|
|
126
126
|
}
|
|
127
|
+
export type DefinitionType = 'function' | 'class' | 'interface' | 'type' | 'enum' | 'variable';
|
|
128
|
+
export interface SearchDefinitionsOptions {
|
|
129
|
+
path: string;
|
|
130
|
+
name?: string;
|
|
131
|
+
type?: DefinitionType;
|
|
132
|
+
caseSensitive?: boolean;
|
|
133
|
+
maxResults?: number;
|
|
134
|
+
excludePatterns?: string[];
|
|
135
|
+
includeHidden?: boolean;
|
|
136
|
+
contextLines?: number;
|
|
137
|
+
}
|
|
138
|
+
export interface DefinitionMatch {
|
|
139
|
+
file: string;
|
|
140
|
+
line: number;
|
|
141
|
+
definitionType: DefinitionType;
|
|
142
|
+
name: string;
|
|
143
|
+
content: string;
|
|
144
|
+
contextBefore?: string[];
|
|
145
|
+
contextAfter?: string[];
|
|
146
|
+
exported: boolean;
|
|
147
|
+
}
|
|
148
|
+
export interface SearchDefinitionsResult {
|
|
149
|
+
basePath: string;
|
|
150
|
+
searchName?: string;
|
|
151
|
+
searchType?: DefinitionType;
|
|
152
|
+
definitions: DefinitionMatch[];
|
|
153
|
+
summary: {
|
|
154
|
+
filesScanned: number;
|
|
155
|
+
filesMatched: number;
|
|
156
|
+
totalDefinitions: number;
|
|
157
|
+
truncated: boolean;
|
|
158
|
+
};
|
|
159
|
+
}
|
|
127
160
|
export declare const ErrorCode: {
|
|
128
161
|
readonly E_ACCESS_DENIED: "E_ACCESS_DENIED";
|
|
129
162
|
readonly E_NOT_FOUND: "E_NOT_FOUND";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
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":"AAgLA,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/instructions.md
CHANGED
|
@@ -16,6 +16,7 @@ This server enables AI assistants to safely explore and analyze filesystem conte
|
|
|
16
16
|
| Directory stats | `analyze_directory` | `topN`, `excludePatterns`, `maxEntries` |
|
|
17
17
|
| Find files | `search_files` | `pattern` (glob), `maxResults` |
|
|
18
18
|
| Search in files | `search_content` | `pattern` (regex), `contextLines` |
|
|
19
|
+
| Find definitions | `search_definitions` | `name`, `type`, `contextLines` |
|
|
19
20
|
| Read file | `read_file` | `head`, `tail`, `lineStart/lineEnd` |
|
|
20
21
|
| Read multiple files | `read_multiple_files` | `paths[]` — **preferred for 2+** |
|
|
21
22
|
| File metadata | `get_file_info` | `path` |
|
|
@@ -43,6 +44,13 @@ search_files(pattern="**/*.ts") → read_multiple_files([...results])
|
|
|
43
44
|
search_content(pattern="TODO|FIXME", filePattern="**/*.ts", contextLines=2)
|
|
44
45
|
```
|
|
45
46
|
|
|
47
|
+
### Find Code Definitions
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
search_definitions(path="src/", name="User") → Find classes/functions/types named "User"
|
|
51
|
+
search_definitions(path="src/", type="interface") → Discover all interfaces
|
|
52
|
+
```
|
|
53
|
+
|
|
46
54
|
### Common Glob Patterns
|
|
47
55
|
|
|
48
56
|
| Pattern | Matches |
|
|
@@ -91,11 +99,12 @@ Find files by glob pattern.
|
|
|
91
99
|
|
|
92
100
|
| Parameter | Default | Description |
|
|
93
101
|
| ----------------- | ------- | ------------------------- |
|
|
94
|
-
| `path` |
|
|
95
|
-
| `pattern` |
|
|
102
|
+
| `path` | - | Base directory |
|
|
103
|
+
| `pattern` | - | Glob: `**/*.ts`, `src/**` |
|
|
96
104
|
| `excludePatterns` | [] | Patterns to skip |
|
|
97
|
-
| `maxResults` |
|
|
105
|
+
| `maxResults` | - | Limit (up to 10,000) |
|
|
98
106
|
| `sortBy` | "path" | `name/size/modified/path` |
|
|
107
|
+
| `includeHidden` | false | Include dotfiles |
|
|
99
108
|
|
|
100
109
|
### `search_content`
|
|
101
110
|
|
|
@@ -113,6 +122,27 @@ Grep-like regex search in files.
|
|
|
113
122
|
| `maxResults` | 100 | Limit matches |
|
|
114
123
|
| `skipBinary` | true | Skip binary files |
|
|
115
124
|
|
|
125
|
+
### `search_definitions`
|
|
126
|
+
|
|
127
|
+
Find code definitions (classes, functions, interfaces, types, enums, variables) without manual regex construction.
|
|
128
|
+
|
|
129
|
+
| Parameter | Default | Description |
|
|
130
|
+
| ----------------- | ------- | ----------------------------------------------------------------------------- |
|
|
131
|
+
| `path` | - | Base directory to search |
|
|
132
|
+
| `name` | - | Definition name to find |
|
|
133
|
+
| `type` | - | Definition type: `class`, `function`, `interface`, `type`, `enum`, `variable` |
|
|
134
|
+
| `caseSensitive` | true | Case-sensitive name matching |
|
|
135
|
+
| `maxResults` | 100 | Limit matches |
|
|
136
|
+
| `excludePatterns` | [] | Glob patterns to exclude |
|
|
137
|
+
| `includeHidden` | false | Include hidden files and directories |
|
|
138
|
+
| `contextLines` | 0 | Lines of context before/after match (0-10) |
|
|
139
|
+
|
|
140
|
+
**Usage patterns:**
|
|
141
|
+
|
|
142
|
+
- **Find by name:** `search_definitions(path="src/", name="UserService")` — finds class/function/type named UserService
|
|
143
|
+
- **Discovery mode:** `search_definitions(path="src/", type="interface")` — lists all interfaces
|
|
144
|
+
- **Combined:** `search_definitions(path="src/", name="Handler", type="class")` — finds classes named "Handler"
|
|
145
|
+
|
|
116
146
|
### `read_file`
|
|
117
147
|
|
|
118
148
|
Read single file with line selection.
|
|
@@ -131,15 +161,19 @@ Read single file with line selection.
|
|
|
131
161
|
|
|
132
162
|
### `read_multiple_files`
|
|
133
163
|
|
|
134
|
-
Parallel batch reads
|
|
164
|
+
Parallel batch reads - failures don't block others.
|
|
135
165
|
|
|
136
|
-
| Parameter
|
|
137
|
-
|
|
|
138
|
-
| `paths`
|
|
139
|
-
| `encoding`
|
|
140
|
-
| `maxSize`
|
|
141
|
-
| `head`
|
|
142
|
-
| `tail`
|
|
166
|
+
| Parameter | Default | Description |
|
|
167
|
+
| ----------- | ------- | ------------------------------- |
|
|
168
|
+
| `paths` | - | Array (max 100) |
|
|
169
|
+
| `encoding` | utf-8 | Encoding for all |
|
|
170
|
+
| `maxSize` | 10MB | Per-file limit |
|
|
171
|
+
| `head` | - | First N lines each |
|
|
172
|
+
| `tail` | - | Last N lines each |
|
|
173
|
+
| `lineStart` | - | Start line (1-indexed) per file |
|
|
174
|
+
| `lineEnd` | - | End line (inclusive) per file |
|
|
175
|
+
|
|
176
|
+
> ⚠️ Cannot combine `head/tail` with `lineStart/lineEnd`
|
|
143
177
|
|
|
144
178
|
### `list_directory`
|
|
145
179
|
|
|
@@ -147,12 +181,14 @@ Flat listing with metadata.
|
|
|
147
181
|
|
|
148
182
|
| Parameter | Default | Description |
|
|
149
183
|
| ------------ | ------- | ------------------------- |
|
|
150
|
-
| `path` |
|
|
184
|
+
| `path` | - | Directory path |
|
|
151
185
|
| `recursive` | false | Include subdirs |
|
|
152
186
|
| `sortBy` | "name" | `name/size/modified/type` |
|
|
153
187
|
| `maxDepth` | 10 | Depth when recursive |
|
|
154
188
|
| `maxEntries` | 10000 | Limit (up to 100,000) |
|
|
155
189
|
|
|
190
|
+
**Structured output notes:** `entries[].name` is the basename, and `entries[].relativePath` is the path relative to the listed base.
|
|
191
|
+
|
|
156
192
|
### `analyze_directory`
|
|
157
193
|
|
|
158
194
|
Statistics: counts, sizes, types, largest/recent files.
|