@j0hanz/filesystem-context-mcp 1.2.0 â 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -17
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +7 -1
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/file-operations/analyze-directory.js +1 -1
- package/dist/lib/file-operations/analyze-directory.js.map +1 -1
- package/dist/lib/file-operations/directory-helpers.d.ts +35 -0
- package/dist/lib/file-operations/directory-helpers.d.ts.map +1 -0
- package/dist/lib/file-operations/directory-helpers.js +136 -0
- package/dist/lib/file-operations/directory-helpers.js.map +1 -0
- package/dist/lib/file-operations/directory-tree.js +1 -1
- package/dist/lib/file-operations/directory-tree.js.map +1 -1
- package/dist/lib/file-operations/pattern-complexity.d.ts +16 -0
- package/dist/lib/file-operations/pattern-complexity.d.ts.map +1 -0
- package/dist/lib/file-operations/pattern-complexity.js +86 -0
- package/dist/lib/file-operations/pattern-complexity.js.map +1 -0
- package/dist/lib/file-operations/pattern-validator.d.ts +15 -0
- package/dist/lib/file-operations/pattern-validator.d.ts.map +1 -0
- package/dist/lib/file-operations/pattern-validator.js +69 -0
- package/dist/lib/file-operations/pattern-validator.js.map +1 -0
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.js +19 -17
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
- package/dist/lib/file-operations/search-content.d.ts +2 -0
- package/dist/lib/file-operations/search-content.d.ts.map +1 -1
- package/dist/lib/file-operations/search-content.js +8 -3
- package/dist/lib/file-operations/search-content.js.map +1 -1
- package/dist/lib/file-operations/search-files.d.ts +2 -0
- package/dist/lib/file-operations/search-files.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files.js +8 -4
- package/dist/lib/file-operations/search-files.js.map +1 -1
- package/dist/lib/fs-helpers/readers/stream-lines.d.ts +7 -0
- package/dist/lib/fs-helpers/readers/stream-lines.d.ts.map +1 -0
- package/dist/lib/fs-helpers/readers/stream-lines.js +61 -0
- package/dist/lib/fs-helpers/readers/stream-lines.js.map +1 -0
- package/dist/lib/performance/monitor.d.ts +25 -0
- package/dist/lib/performance/monitor.d.ts.map +1 -0
- package/dist/lib/performance/monitor.js +84 -0
- package/dist/lib/performance/monitor.js.map +1 -0
- package/dist/schemas/input-helpers.d.ts +19 -0
- package/dist/schemas/input-helpers.d.ts.map +1 -1
- package/dist/schemas/input-helpers.js +133 -1
- package/dist/schemas/input-helpers.js.map +1 -1
- package/dist/schemas/inputs.d.ts +6 -2
- package/dist/schemas/inputs.d.ts.map +1 -1
- package/dist/schemas/inputs.js +41 -190
- package/dist/schemas/inputs.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -3
- package/dist/server.js.map +1 -1
- package/dist/tools/search-content.d.ts.map +1 -1
- package/dist/tools/search-content.js +3 -1
- package/dist/tools/search-content.js.map +1 -1
- package/dist/tools/search-files.d.ts.map +1 -1
- package/dist/tools/search-files.js +3 -1
- package/dist/tools/search-files.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -155,21 +155,21 @@ If neither CLI arguments nor MCP Roots provide directories, the server automatic
|
|
|
155
155
|
|
|
156
156
|
All configuration values have sensible defaults and are optional. Only configure if you need to tune performance or resource usage.
|
|
157
157
|
|
|
158
|
-
| Variable
|
|
159
|
-
|
|
|
160
|
-
| `
|
|
161
|
-
| `TRAVERSAL_JOBS`
|
|
162
|
-
| `REGEX_TIMEOUT`
|
|
163
|
-
| `MAX_FILE_SIZE`
|
|
164
|
-
| `MAX_MEDIA_SIZE`
|
|
165
|
-
| `MAX_SEARCH_SIZE`
|
|
166
|
-
| `DEFAULT_DEPTH`
|
|
167
|
-
| `DEFAULT_RESULTS`
|
|
168
|
-
| `DEFAULT_SEARCH_MAX_FILES`
|
|
169
|
-
| `DEFAULT_SEARCH_TIMEOUT`
|
|
170
|
-
| `DEFAULT_TOP`
|
|
171
|
-
| `DEFAULT_TREE`
|
|
172
|
-
| `DEFAULT_TREE_MAX_FILES`
|
|
158
|
+
| Variable | Default | Range | Description |
|
|
159
|
+
| -------------------------------- | --------------- | ----------- | ------------------------------------- |
|
|
160
|
+
| `FILESYSTEM_CONTEXT_CONCURRENCY` | Auto (2x cores) | 1-100 | Maximum parallel file operations |
|
|
161
|
+
| `TRAVERSAL_JOBS` | 8 | 1-50 | Directory traversal concurrency |
|
|
162
|
+
| `REGEX_TIMEOUT` | 100 | 50-1000 | Regex matching timeout (milliseconds) |
|
|
163
|
+
| `MAX_FILE_SIZE` | 10MB | 1MB-100MB | Maximum text file size (bytes) |
|
|
164
|
+
| `MAX_MEDIA_SIZE` | 50MB | 1MB-500MB | Maximum media file size (bytes) |
|
|
165
|
+
| `MAX_SEARCH_SIZE` | 1MB | 100KB-10MB | Maximum file size for content search |
|
|
166
|
+
| `DEFAULT_DEPTH` | 10 | 1-100 | Default maximum recursion depth |
|
|
167
|
+
| `DEFAULT_RESULTS` | 100 | 10-10000 | Default maximum search results |
|
|
168
|
+
| `DEFAULT_SEARCH_MAX_FILES` | 20000 | 100-100000 | Default max files to scan in searches |
|
|
169
|
+
| `DEFAULT_SEARCH_TIMEOUT` | 30000 | 100-3600000 | Default search timeout (milliseconds) |
|
|
170
|
+
| `DEFAULT_TOP` | 10 | 1-1000 | Default top N items in analysis |
|
|
171
|
+
| `DEFAULT_TREE` | 5 | 1-50 | Default directory tree depth |
|
|
172
|
+
| `DEFAULT_TREE_MAX_FILES` | 5000 | 100-200000 | Default max files in directory tree |
|
|
173
173
|
|
|
174
174
|
> **đĄ Tip:** See [CONFIGURATION.md](CONFIGURATION.md) for detailed environment variable usage examples, configuration profiles, and best practices for different use cases.
|
|
175
175
|
|
|
@@ -567,11 +567,11 @@ src/
|
|
|
567
567
|
â âââ fs-helpers.ts # Low-level filesystem helpers (exports)
|
|
568
568
|
â âââ file-operations/ # Core filesystem operations
|
|
569
569
|
â â âââ analyze-directory.ts
|
|
570
|
-
â â âââ directory-
|
|
571
|
-
â â âââ directory-iteration.ts
|
|
570
|
+
â â âââ directory-helpers.ts
|
|
572
571
|
â â âââ directory-tree.ts
|
|
573
572
|
â â âââ file-info.ts
|
|
574
573
|
â â âââ list-directory.ts
|
|
574
|
+
â â âââ pattern-validator.ts
|
|
575
575
|
â â âââ read-media-file.ts
|
|
576
576
|
â â âââ read-multiple-files.ts
|
|
577
577
|
â â âââ search-content.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AA+BA,eAAO,MAAM,oBAAoB,QAKhC,CAAC;AACF,eAAO,MAAM,yBAAyB,QAKrC,CAAC;AACF,eAAO,MAAM,sBAAsB,QAKlC,CAAC;AACF,eAAO,MAAM,wBAAwB,QAKpC,CAAC;AACF,eAAO,MAAM,kBAAkB,QAK9B,CAAC;AACF,eAAO,MAAM,mBAAmB,QAK/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAC1E,eAAO,MAAM,mBAAmB,QAK/B,CAAC;AACF,eAAO,MAAM,wBAAwB,QAKpC,CAAC;AACF,eAAO,MAAM,yBAAyB,QAKrC,CAAC;AACF,eAAO,MAAM,aAAa,QAA0C,CAAC;AACrE,eAAO,MAAM,kBAAkB,QAAwC,CAAC;AACxE,eAAO,MAAM,sBAAsB,QAKlC,CAAC;AACF,eAAO,MAAM,uBAAuB,aAyClC,CAAC;AA+DH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { availableParallelism } from 'node:os';
|
|
1
2
|
// Helper function for parsing and validating integer environment variables
|
|
2
3
|
function parseEnvInt(envVar, defaultValue, min, max) {
|
|
3
4
|
const value = process.env[envVar];
|
|
@@ -11,7 +12,12 @@ function parseEnvInt(envVar, defaultValue, min, max) {
|
|
|
11
12
|
}
|
|
12
13
|
return parsed;
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
+
// Determine optimal parallelism based on CPU cores
|
|
16
|
+
function getOptimalParallelism() {
|
|
17
|
+
const cpuCores = availableParallelism();
|
|
18
|
+
return Math.min(cpuCores * 2, 50);
|
|
19
|
+
}
|
|
20
|
+
export const PARALLEL_CONCURRENCY = parseEnvInt('FILESYSTEM_CONTEXT_CONCURRENCY', getOptimalParallelism(), 1, 100);
|
|
15
21
|
export const DIR_TRAVERSAL_CONCURRENCY = parseEnvInt('TRAVERSAL_JOBS', 8, 1, 50);
|
|
16
22
|
export const REGEX_MATCH_TIMEOUT_MS = parseEnvInt('REGEX_TIMEOUT', 100, 50, 1000);
|
|
17
23
|
export const MAX_SEARCHABLE_FILE_SIZE = parseEnvInt('MAX_SEARCH_SIZE', 1024 * 1024, 100 * 1024, 10 * 1024 * 1024);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,SAAS,WAAW,CAClB,MAAc,EACd,YAAoB,EACpB,GAAW,EACX,GAAW;IAEX,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACzD,OAAO,CAAC,KAAK,CACX,qBAAqB,MAAM,WAAW,KAAK,aAAa,GAAG,IAAI,GAAG,qBAAqB,YAAY,EAAE,CACtG,CAAC;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import * as path from 'node:path';
|
|
|
3
3
|
import { DEFAULT_MAX_DEPTH, DEFAULT_TOP_N, DIR_TRAVERSAL_CONCURRENCY, } from '../constants.js';
|
|
4
4
|
import { runWorkQueue } from '../fs-helpers.js';
|
|
5
5
|
import { validateExistingPath, validateExistingPathDetailed, } from '../path-validation.js';
|
|
6
|
-
import { classifyAccessError, createExcludeMatcher, forEachDirectoryEntry, } from './directory-
|
|
6
|
+
import { classifyAccessError, createExcludeMatcher, forEachDirectoryEntry, } from './directory-helpers.js';
|
|
7
7
|
function initAnalysisState() {
|
|
8
8
|
return {
|
|
9
9
|
totalFiles: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-directory.js","sourceRoot":"","sources":["../../../src/lib/file-operations/analyze-directory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAOlC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"analyze-directory.js","sourceRoot":"","sources":["../../../src/lib/file-operations/analyze-directory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Dirent } from 'node:fs';
|
|
2
|
+
import type { DirectoryEntry } from '../../config/types.js';
|
|
3
|
+
export interface DirectoryIterationEntry {
|
|
4
|
+
item: Dirent;
|
|
5
|
+
name: string;
|
|
6
|
+
fullPath: string;
|
|
7
|
+
relativePath: string;
|
|
8
|
+
}
|
|
9
|
+
export interface DirectoryIterationOptions {
|
|
10
|
+
includeHidden: boolean;
|
|
11
|
+
shouldExclude: (name: string, relativePath: string) => boolean;
|
|
12
|
+
onInaccessible: () => void;
|
|
13
|
+
shouldStop?: () => boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function createExcludeMatcher(excludePatterns: string[]): (name: string, relativePath: string) => boolean;
|
|
16
|
+
export declare function classifyAccessError(error: unknown): 'symlink' | 'inaccessible';
|
|
17
|
+
export declare function forEachDirectoryEntry(currentPath: string, basePath: string, options: DirectoryIterationOptions, handler: (entry: DirectoryIterationEntry) => Promise<void>): Promise<void>;
|
|
18
|
+
export interface DirectoryItemResult {
|
|
19
|
+
entry: DirectoryEntry;
|
|
20
|
+
enqueueDir?: {
|
|
21
|
+
currentPath: string;
|
|
22
|
+
depth: number;
|
|
23
|
+
};
|
|
24
|
+
skippedInaccessible?: boolean;
|
|
25
|
+
symlinkNotFollowed?: boolean;
|
|
26
|
+
}
|
|
27
|
+
interface DirectoryItemOptions {
|
|
28
|
+
includeSymlinkTargets: boolean;
|
|
29
|
+
recursive: boolean;
|
|
30
|
+
depth: number;
|
|
31
|
+
maxDepth: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function buildDirectoryItemResult(item: Dirent, currentPath: string, basePath: string, options: DirectoryItemOptions): Promise<DirectoryItemResult>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=directory-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/directory-helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,SAAS,CAAC;AAI7C,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,uBAAuB,CAAC;AAStE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/D,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;CAC5B;AAQD,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EAAE,GACxB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAejD;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,SAAS,GAAG,cAAc,CAU5B;AAcD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,yBAAyB,EAClC,OAAO,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GACzD,OAAO,CAAC,IAAI,CAAC,CAef;AAMD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,oBAAoB;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AA4GD,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAkB9B"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { Minimatch } from 'minimatch';
|
|
4
|
+
import { ErrorCode, McpError } from '../errors.js';
|
|
5
|
+
import { getFileType, isHidden } from '../fs-helpers.js';
|
|
6
|
+
import { validateExistingPath } from '../path-validation.js';
|
|
7
|
+
const MATCHER_OPTIONS = {
|
|
8
|
+
dot: true,
|
|
9
|
+
nocase: process.platform === 'win32',
|
|
10
|
+
windowsPathsNoEscape: true,
|
|
11
|
+
};
|
|
12
|
+
export function createExcludeMatcher(excludePatterns) {
|
|
13
|
+
if (excludePatterns.length === 0) {
|
|
14
|
+
return () => false;
|
|
15
|
+
}
|
|
16
|
+
const matchers = excludePatterns.map((pattern) => new Minimatch(pattern, MATCHER_OPTIONS));
|
|
17
|
+
return (name, relativePath) => {
|
|
18
|
+
const normalizedRelativePath = relativePath.replace(/\\/g, '/');
|
|
19
|
+
return matchers.some((matcher) => matcher.match(name) || matcher.match(normalizedRelativePath));
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function classifyAccessError(error) {
|
|
23
|
+
if (error instanceof McpError &&
|
|
24
|
+
(error.code === ErrorCode.E_ACCESS_DENIED ||
|
|
25
|
+
error.code === ErrorCode.E_SYMLINK_NOT_ALLOWED)) {
|
|
26
|
+
return 'symlink';
|
|
27
|
+
}
|
|
28
|
+
return 'inaccessible';
|
|
29
|
+
}
|
|
30
|
+
async function readDirectoryEntries(currentPath, onInaccessible) {
|
|
31
|
+
try {
|
|
32
|
+
return await fs.readdir(currentPath, { withFileTypes: true });
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
onInaccessible();
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export async function forEachDirectoryEntry(currentPath, basePath, options, handler) {
|
|
40
|
+
const items = await readDirectoryEntries(currentPath, options.onInaccessible);
|
|
41
|
+
if (!items)
|
|
42
|
+
return;
|
|
43
|
+
for (const item of items) {
|
|
44
|
+
if (options.shouldStop?.())
|
|
45
|
+
break;
|
|
46
|
+
const { name } = item;
|
|
47
|
+
if (!options.includeHidden && isHidden(name))
|
|
48
|
+
continue;
|
|
49
|
+
const fullPath = path.join(currentPath, name);
|
|
50
|
+
const relativePath = path.relative(basePath, fullPath);
|
|
51
|
+
if (options.shouldExclude(name, relativePath))
|
|
52
|
+
continue;
|
|
53
|
+
await handler({ item, name, fullPath, relativePath });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function buildEntryBase(item, fullPath, relativePath, type) {
|
|
57
|
+
return {
|
|
58
|
+
name: item.name,
|
|
59
|
+
path: fullPath,
|
|
60
|
+
relativePath,
|
|
61
|
+
type,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function resolveEntryType(item, stats) {
|
|
65
|
+
if (item.isDirectory())
|
|
66
|
+
return 'directory';
|
|
67
|
+
if (item.isFile())
|
|
68
|
+
return 'file';
|
|
69
|
+
return getFileType(stats);
|
|
70
|
+
}
|
|
71
|
+
async function buildSymlinkResult(item, fullPath, relativePath, includeSymlinkTargets) {
|
|
72
|
+
const stats = await fs.lstat(fullPath);
|
|
73
|
+
let symlinkTarget;
|
|
74
|
+
if (includeSymlinkTargets) {
|
|
75
|
+
try {
|
|
76
|
+
symlinkTarget = await fs.readlink(fullPath);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
symlinkTarget = undefined;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const entry = {
|
|
83
|
+
name: item.name,
|
|
84
|
+
path: fullPath,
|
|
85
|
+
relativePath,
|
|
86
|
+
type: 'symlink',
|
|
87
|
+
size: stats.size,
|
|
88
|
+
modified: stats.mtime,
|
|
89
|
+
symlinkTarget,
|
|
90
|
+
};
|
|
91
|
+
return { entry, symlinkNotFollowed: true };
|
|
92
|
+
}
|
|
93
|
+
async function buildEnqueueDir(fullPath, depth, maxDepth, recursive) {
|
|
94
|
+
if (!recursive || depth + 1 > maxDepth)
|
|
95
|
+
return undefined;
|
|
96
|
+
return {
|
|
97
|
+
currentPath: await validateExistingPath(fullPath),
|
|
98
|
+
depth: depth + 1,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
async function buildRegularResult(item, fullPath, relativePath, options) {
|
|
102
|
+
const stats = await fs.stat(fullPath);
|
|
103
|
+
const type = resolveEntryType(item, stats);
|
|
104
|
+
const entry = {
|
|
105
|
+
...buildEntryBase(item, fullPath, relativePath, type),
|
|
106
|
+
size: type === 'file' ? stats.size : undefined,
|
|
107
|
+
modified: stats.mtime,
|
|
108
|
+
};
|
|
109
|
+
const enqueueDir = await buildEnqueueDir(fullPath, options.depth, options.maxDepth, options.recursive);
|
|
110
|
+
return { entry, enqueueDir };
|
|
111
|
+
}
|
|
112
|
+
function buildFallbackEntry(item, fullPath, relativePath) {
|
|
113
|
+
const type = item.isDirectory()
|
|
114
|
+
? 'directory'
|
|
115
|
+
: item.isFile()
|
|
116
|
+
? 'file'
|
|
117
|
+
: 'other';
|
|
118
|
+
return {
|
|
119
|
+
entry: buildEntryBase(item, fullPath, relativePath, type),
|
|
120
|
+
skippedInaccessible: true,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export async function buildDirectoryItemResult(item, currentPath, basePath, options) {
|
|
124
|
+
const fullPath = path.join(currentPath, item.name);
|
|
125
|
+
const relativePath = path.relative(basePath, fullPath) || item.name;
|
|
126
|
+
try {
|
|
127
|
+
if (item.isSymbolicLink()) {
|
|
128
|
+
return await buildSymlinkResult(item, fullPath, relativePath, options.includeSymlinkTargets);
|
|
129
|
+
}
|
|
130
|
+
return await buildRegularResult(item, fullPath, relativePath, options);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return buildFallbackEntry(item, fullPath, relativePath);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=directory-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-helpers.js","sourceRoot":"","sources":["../../../src/lib/file-operations/directory-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { DEFAULT_TREE_DEPTH, DEFAULT_TREE_MAX_FILES, DIR_TRAVERSAL_CONCURRENCY,
|
|
|
4
4
|
import { ErrorCode, McpError } from '../errors.js';
|
|
5
5
|
import { runWorkQueue } from '../fs-helpers.js';
|
|
6
6
|
import { validateExistingPath, validateExistingPathDetailed, } from '../path-validation.js';
|
|
7
|
-
import { classifyAccessError, createExcludeMatcher, forEachDirectoryEntry, } from './directory-
|
|
7
|
+
import { classifyAccessError, createExcludeMatcher, forEachDirectoryEntry, } from './directory-helpers.js';
|
|
8
8
|
function initTreeState(basePath) {
|
|
9
9
|
return {
|
|
10
10
|
totalFiles: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directory-tree.js","sourceRoot":"","sources":["../../../src/lib/file-operations/directory-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"directory-tree.js","sourceRoot":"","sources":["../../../src/lib/file-operations/directory-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estimates the complexity/performance impact of a glob pattern
|
|
3
|
+
* Helps users understand which patterns might be slow
|
|
4
|
+
*/
|
|
5
|
+
export interface PatternComplexityAnalysis {
|
|
6
|
+
complexity: 'fast' | 'moderate' | 'slow';
|
|
7
|
+
score: number;
|
|
8
|
+
factors: string[];
|
|
9
|
+
recommendations: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function analyzePatternComplexity(pattern: string): PatternComplexityAnalysis;
|
|
12
|
+
/**
|
|
13
|
+
* Provides user-friendly complexity warning
|
|
14
|
+
*/
|
|
15
|
+
export declare function getComplexityWarning(analysis: PatternComplexityAnalysis): string | null;
|
|
16
|
+
//# sourceMappingURL=pattern-complexity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-complexity.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/pattern-complexity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAWD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,GACd,yBAAyB,CAwE3B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,yBAAyB,GAClC,MAAM,GAAG,IAAI,CAQf"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estimates the complexity/performance impact of a glob pattern
|
|
3
|
+
* Helps users understand which patterns might be slow
|
|
4
|
+
*/
|
|
5
|
+
const COMPLEXITY_WEIGHTS = {
|
|
6
|
+
leadingGlobstar: 15, // **/ at start
|
|
7
|
+
extglob: 20, // +(pattern), !(pattern), etc.
|
|
8
|
+
largeBraceExpansion: 25, // {a,b,c,...}
|
|
9
|
+
nestedQuantifiers: 30, // Complex regex
|
|
10
|
+
multiplePatternsInBrace: 10, // {a,b} = 10 points per item
|
|
11
|
+
leadingRecursion: 20, // Starting with **/
|
|
12
|
+
};
|
|
13
|
+
export function analyzePatternComplexity(pattern) {
|
|
14
|
+
let score = 0;
|
|
15
|
+
const factors = [];
|
|
16
|
+
const recommendations = [];
|
|
17
|
+
// Check for leading globstar
|
|
18
|
+
if (pattern.startsWith('**/')) {
|
|
19
|
+
score += COMPLEXITY_WEIGHTS.leadingGlobstar;
|
|
20
|
+
factors.push('Pattern starts with **/');
|
|
21
|
+
recommendations.push('Consider using a base directory if available (e.g., src/**/*.ts instead of **/src/**/*.ts)');
|
|
22
|
+
}
|
|
23
|
+
// Check for extglob patterns: +(), !(), ?(), *()
|
|
24
|
+
const extglobMatches = pattern.match(/[+!?*]\(\S+\)/g) ?? [];
|
|
25
|
+
if (extglobMatches.length > 0) {
|
|
26
|
+
score += extglobMatches.length * COMPLEXITY_WEIGHTS.extglob;
|
|
27
|
+
factors.push(`Extglob patterns: ${extglobMatches.join(', ')}`);
|
|
28
|
+
recommendations.push('Extglobs are slower. Use simpler patterns if possible (e.g., *.{js,ts} instead of +(js|ts))');
|
|
29
|
+
}
|
|
30
|
+
// Check for large brace expansions
|
|
31
|
+
const braceMatches = pattern.match(/\{[^}]*\}/g) ?? [];
|
|
32
|
+
for (const brace of braceMatches) {
|
|
33
|
+
const items = brace.slice(1, -1).split(',');
|
|
34
|
+
if (items.length > 20) {
|
|
35
|
+
score += COMPLEXITY_WEIGHTS.largeBraceExpansion;
|
|
36
|
+
factors.push(`Large brace expansion: ${items.length} items in {${items.slice(0, 3).join(',')}...}`);
|
|
37
|
+
recommendations.push('Use character classes or split into multiple simpler patterns');
|
|
38
|
+
}
|
|
39
|
+
else if (items.length > 5) {
|
|
40
|
+
score += items.length * COMPLEXITY_WEIGHTS.multiplePatternsInBrace;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Check for nested quantifiers (regex complexity)
|
|
44
|
+
if (/([+*?}])\s*\)\s*([+*?{])/.test(pattern)) {
|
|
45
|
+
score += COMPLEXITY_WEIGHTS.nestedQuantifiers;
|
|
46
|
+
factors.push('Nested quantifiers detected');
|
|
47
|
+
recommendations.push('Simplify nested patterns to reduce regex complexity');
|
|
48
|
+
}
|
|
49
|
+
// Check for multiple ** segments
|
|
50
|
+
const globstarCount = (pattern.match(/\*\*/g) ?? []).length;
|
|
51
|
+
if (globstarCount > 2) {
|
|
52
|
+
score += 15;
|
|
53
|
+
factors.push(`Multiple globstars: ${globstarCount}`);
|
|
54
|
+
recommendations.push('Limit use of ** to narrow down search space');
|
|
55
|
+
}
|
|
56
|
+
// Determine complexity level
|
|
57
|
+
let complexity;
|
|
58
|
+
if (score < 20) {
|
|
59
|
+
complexity = 'fast';
|
|
60
|
+
}
|
|
61
|
+
else if (score < 50) {
|
|
62
|
+
complexity = 'moderate';
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
complexity = 'slow';
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
complexity,
|
|
69
|
+
score: Math.min(score, 100),
|
|
70
|
+
factors,
|
|
71
|
+
recommendations,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Provides user-friendly complexity warning
|
|
76
|
+
*/
|
|
77
|
+
export function getComplexityWarning(analysis) {
|
|
78
|
+
if (analysis.complexity === 'slow') {
|
|
79
|
+
return `â ī¸ Pattern complexity is HIGH (score: ${analysis.score}/100). This search may take longer than expected. ${analysis.recommendations[0] ?? ''}`;
|
|
80
|
+
}
|
|
81
|
+
if (analysis.complexity === 'moderate' && analysis.score > 40) {
|
|
82
|
+
return `âšī¸ Pattern complexity is MODERATE (score: ${analysis.score}/100). Consider optimizing: ${analysis.recommendations[0] ?? ''}`;
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=pattern-complexity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-complexity.js","sourceRoot":"","sources":["../../../src/lib/file-operations/pattern-complexity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface PatternValidationResult {
|
|
2
|
+
isValid: boolean;
|
|
3
|
+
error?: string;
|
|
4
|
+
suggestion?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Validates glob patterns for safety and common mistakes
|
|
8
|
+
* Prevents backslashes, absolute paths, and overly complex patterns
|
|
9
|
+
*/
|
|
10
|
+
export declare function validateGlobPattern(pattern: string): PatternValidationResult;
|
|
11
|
+
/**
|
|
12
|
+
* Throws McpError if pattern is invalid
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateGlobPatternOrThrow(pattern: string, basePath: string): void;
|
|
15
|
+
//# sourceMappingURL=pattern-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-validator.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/pattern-validator.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAsD5E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,IAAI,CAaN"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ErrorCode, McpError } from '../errors.js';
|
|
2
|
+
const BACKSLASH_PATTERN = /\\/g;
|
|
3
|
+
const UNSAFE_PATTERN = /\.\.|^[/\\]/;
|
|
4
|
+
const MAX_PATTERN_LENGTH = 1000;
|
|
5
|
+
const MAX_BRACE_EXPANSION = 100;
|
|
6
|
+
/**
|
|
7
|
+
* Validates glob patterns for safety and common mistakes
|
|
8
|
+
* Prevents backslashes, absolute paths, and overly complex patterns
|
|
9
|
+
*/
|
|
10
|
+
export function validateGlobPattern(pattern) {
|
|
11
|
+
// Check for empty pattern
|
|
12
|
+
if (!pattern || pattern.trim().length === 0) {
|
|
13
|
+
return {
|
|
14
|
+
isValid: false,
|
|
15
|
+
error: 'Pattern cannot be empty',
|
|
16
|
+
suggestion: 'Provide at least one glob pattern like "**/*.ts"',
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
// Check pattern length
|
|
20
|
+
if (pattern.length > MAX_PATTERN_LENGTH) {
|
|
21
|
+
return {
|
|
22
|
+
isValid: false,
|
|
23
|
+
error: `Pattern too long (${pattern.length}/${MAX_PATTERN_LENGTH} chars)`,
|
|
24
|
+
suggestion: `Simplify the pattern or split into multiple searches`,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// Check for backslashes (common Windows mistake)
|
|
28
|
+
if (BACKSLASH_PATTERN.test(pattern)) {
|
|
29
|
+
return {
|
|
30
|
+
isValid: false,
|
|
31
|
+
error: 'Glob patterns must use forward slashes, not backslashes',
|
|
32
|
+
suggestion: `Replace \\ with /. Example: src/lib/**/*.ts instead of src\\lib\\**\\*.ts`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// Check for absolute paths and .. segments
|
|
36
|
+
if (UNSAFE_PATTERN.test(pattern)) {
|
|
37
|
+
return {
|
|
38
|
+
isValid: false,
|
|
39
|
+
error: 'Pattern must be relative (no absolute paths, no .. segments, no leading slash)',
|
|
40
|
+
suggestion: 'Remove leading / or convert absolute path to relative from base directory',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// Check for excessive brace expansion
|
|
44
|
+
const braceMatches = pattern.match(/\{[^}]*\}/g) ?? [];
|
|
45
|
+
for (const match of braceMatches) {
|
|
46
|
+
const items = match.slice(1, -1).split(',');
|
|
47
|
+
if (items.length > MAX_BRACE_EXPANSION) {
|
|
48
|
+
return {
|
|
49
|
+
isValid: false,
|
|
50
|
+
error: `Brace expansion too large (${items.length}/${MAX_BRACE_EXPANSION} items)`,
|
|
51
|
+
suggestion: 'Use character classes [abc] instead of brace expansion {a,b,c} when possible',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return { isValid: true };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Throws McpError if pattern is invalid
|
|
59
|
+
*/
|
|
60
|
+
export function validateGlobPatternOrThrow(pattern, basePath) {
|
|
61
|
+
const result = validateGlobPattern(pattern);
|
|
62
|
+
if (!result.isValid) {
|
|
63
|
+
throw new McpError(ErrorCode.E_INVALID_PATTERN, result.error ?? 'Invalid glob pattern', basePath, {
|
|
64
|
+
pattern,
|
|
65
|
+
suggestion: result.suggestion,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=pattern-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-validator.js","sourceRoot":"","sources":["../../../src/lib/file-operations/pattern-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,cAAc,GAAG,aAAa,CAAC;AACrC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAQhC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,0BAA0B;IAC1B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,yBAAyB;YAChC,UAAU,EAAE,kDAAkD;SAC/D,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACxC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,qBAAqB,OAAO,CAAC,MAAM,IAAI,kBAAkB,SAAS;YACzE,UAAU,EAAE,sDAAsD;SACnE,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,yDAAyD;YAChE,UAAU,EAAE,2EAA2E;SACxF,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EACH,gFAAgF;YAClF,UAAU,EACR,2EAA2E;SAC9E,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IACvD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,8BAA8B,KAAK,CAAC,MAAM,IAAI,mBAAmB,SAAS;gBACjF,UAAU,EACR,8EAA8E;aACjF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAe,EACf,QAAgB;IAEhB,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,iBAAiB,EAC3B,MAAM,CAAC,KAAK,IAAI,sBAAsB,EACtC,QAAQ,EACR;YACE,OAAO;YACP,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"AAOA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"read-multiple-files.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"AAOA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsGD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACV,GACL,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAuD/B"}
|