@j0hanz/fs-context-mcp 2.0.0 → 2.0.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 +22 -17
- package/dist/config.d.ts +117 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +31 -0
- package/dist/config.js.map +1 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/constants.d.ts +3 -3
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +129 -3
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/errors.d.ts +1 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +9 -9
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/file-operations/file-info.d.ts +7 -1
- package/dist/lib/file-operations/file-info.d.ts.map +1 -1
- package/dist/lib/file-operations/file-info.js +84 -8
- package/dist/lib/file-operations/file-info.js.map +1 -1
- package/dist/lib/file-operations/get-multiple-file-info.d.ts.map +1 -1
- package/dist/lib/file-operations/get-multiple-file-info.js +8 -4
- package/dist/lib/file-operations/get-multiple-file-info.js.map +1 -1
- package/dist/lib/file-operations/glob-engine.d.ts.map +1 -1
- package/dist/lib/file-operations/glob-engine.js +46 -19
- package/dist/lib/file-operations/glob-engine.js.map +1 -1
- package/dist/lib/file-operations/list-directory-entry.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory-entry.js +5 -3
- package/dist/lib/file-operations/list-directory-entry.js.map +1 -1
- package/dist/lib/file-operations/list-directory-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory-helpers.js +11 -4
- package/dist/lib/file-operations/list-directory-helpers.js.map +1 -1
- package/dist/lib/file-operations/list-directory.d.ts +12 -2
- package/dist/lib/file-operations/list-directory.d.ts.map +1 -1
- package/dist/lib/file-operations/list-directory.js +155 -3
- package/dist/lib/file-operations/list-directory.js.map +1 -1
- package/dist/lib/file-operations/read-multiple-files-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/read-multiple-files-helpers.js +40 -19
- package/dist/lib/file-operations/read-multiple-files-helpers.js.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.d.ts +18 -1
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.js +107 -2
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
- package/dist/lib/file-operations/search/engine.d.ts.map +1 -1
- package/dist/lib/file-operations/search/engine.js +7 -2
- package/dist/lib/file-operations/search/engine.js.map +1 -1
- package/dist/lib/file-operations/search/scan-file.d.ts.map +1 -1
- package/dist/lib/file-operations/search/scan-file.js +6 -3
- package/dist/lib/file-operations/search/scan-file.js.map +1 -1
- package/dist/lib/file-operations/search/scan-runner.d.ts.map +1 -1
- package/dist/lib/file-operations/search/scan-runner.js +21 -16
- package/dist/lib/file-operations/search/scan-runner.js.map +1 -1
- package/dist/lib/file-operations/search-content.d.ts +64 -17
- package/dist/lib/file-operations/search-content.d.ts.map +1 -1
- package/dist/lib/file-operations/search-content.js +828 -3
- package/dist/lib/file-operations/search-content.js.map +1 -1
- package/dist/lib/file-operations/search-files-collector.d.ts +2 -2
- package/dist/lib/file-operations/search-files-collector.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files-collector.js +23 -11
- package/dist/lib/file-operations/search-files-collector.js.map +1 -1
- package/dist/lib/file-operations/search-files-helpers.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files-helpers.js +5 -2
- package/dist/lib/file-operations/search-files-helpers.js.map +1 -1
- package/dist/lib/file-operations/search-files.d.ts +20 -2
- package/dist/lib/file-operations/search-files.d.ts.map +1 -1
- package/dist/lib/file-operations/search-files.js +192 -5
- package/dist/lib/file-operations/search-files.js.map +1 -1
- package/dist/lib/file-operations/search-worker.d.ts +30 -0
- package/dist/lib/file-operations/search-worker.d.ts.map +1 -0
- package/dist/lib/file-operations/search-worker.js +98 -0
- package/dist/lib/file-operations/search-worker.js.map +1 -0
- package/dist/lib/fs-helpers/readers/read-modes.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/read-modes.js +6 -4
- package/dist/lib/fs-helpers/readers/read-modes.js.map +1 -1
- package/dist/lib/fs-helpers/readers/read-options.d.ts.map +1 -1
- package/dist/lib/fs-helpers/readers/read-options.js +8 -3
- package/dist/lib/fs-helpers/readers/read-options.js.map +1 -1
- package/dist/lib/fs-helpers.d.ts +49 -5
- package/dist/lib/fs-helpers.d.ts.map +1 -1
- package/dist/lib/fs-helpers.js +479 -5
- package/dist/lib/fs-helpers.js.map +1 -1
- package/dist/lib/observability/diagnostics-helpers.d.ts +3 -0
- package/dist/lib/observability/diagnostics-helpers.d.ts.map +1 -0
- package/dist/lib/observability/diagnostics-helpers.js +50 -0
- package/dist/lib/observability/diagnostics-helpers.js.map +1 -0
- package/dist/lib/observability/diagnostics.d.ts.map +1 -1
- package/dist/lib/observability/diagnostics.js +24 -59
- package/dist/lib/observability/diagnostics.js.map +1 -1
- package/dist/lib/observability.d.ts +15 -0
- package/dist/lib/observability.d.ts.map +1 -0
- package/dist/lib/observability.js +196 -0
- package/dist/lib/observability.js.map +1 -0
- package/dist/lib/path-validation/validate-existing.js +1 -1
- package/dist/lib/path-validation/validate-existing.js.map +1 -1
- package/dist/lib/path-validation.d.ts +22 -5
- package/dist/lib/path-validation.d.ts.map +1 -1
- package/dist/lib/path-validation.js +340 -5
- package/dist/lib/path-validation.js.map +1 -1
- package/dist/schemas/inputs/directory.d.ts +1 -1
- package/dist/schemas/inputs/directory.d.ts.map +1 -1
- package/dist/schemas/inputs/directory.js +1 -12
- package/dist/schemas/inputs/directory.js.map +1 -1
- package/dist/schemas/inputs/helpers.d.ts +2 -0
- package/dist/schemas/inputs/helpers.d.ts.map +1 -0
- package/dist/schemas/inputs/helpers.js +13 -0
- package/dist/schemas/inputs/helpers.js.map +1 -0
- package/dist/schemas/inputs/safe-glob.d.ts +2 -0
- package/dist/schemas/inputs/safe-glob.d.ts.map +1 -0
- package/dist/schemas/inputs/safe-glob.js +13 -0
- package/dist/schemas/inputs/safe-glob.js.map +1 -0
- package/dist/schemas/inputs/search.d.ts.map +1 -1
- package/dist/schemas/inputs/search.js +2 -13
- package/dist/schemas/inputs/search.js.map +1 -1
- package/dist/schemas/output-helpers.d.ts +6 -1
- package/dist/schemas/output-helpers.d.ts.map +1 -1
- package/dist/schemas/output-helpers.js +5 -0
- package/dist/schemas/output-helpers.js.map +1 -1
- package/dist/schemas/outputs/file-info.d.ts +2 -2
- package/dist/schemas/outputs/file-info.d.ts.map +1 -1
- package/dist/schemas/outputs/file-info.js +2 -8
- package/dist/schemas/outputs/file-info.js.map +1 -1
- package/dist/schemas/outputs/read.d.ts.map +1 -1
- package/dist/schemas/outputs/read.js +2 -7
- package/dist/schemas/outputs/read.js.map +1 -1
- package/dist/schemas.d.ts +256 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +379 -0
- package/dist/schemas.js.map +1 -0
- package/dist/server/roots.d.ts.map +1 -1
- package/dist/server/roots.js +19 -15
- package/dist/server/roots.js.map +1 -1
- package/dist/server.d.ts +11 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +212 -10
- package/dist/server.js.map +1 -1
- package/dist/tools/get-file-info.d.ts.map +1 -1
- package/dist/tools/get-file-info.js +5 -1
- package/dist/tools/get-file-info.js.map +1 -1
- package/dist/tools/get-multiple-file-info.d.ts.map +1 -1
- package/dist/tools/get-multiple-file-info.js +6 -3
- package/dist/tools/get-multiple-file-info.js.map +1 -1
- package/dist/tools/list-directory-formatting.d.ts.map +1 -1
- package/dist/tools/list-directory-formatting.js +7 -1
- package/dist/tools/list-directory-formatting.js.map +1 -1
- package/dist/tools/list-directory.d.ts.map +1 -1
- package/dist/tools/list-directory.js +5 -4
- package/dist/tools/list-directory.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +9 -4
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/read-multiple-files.d.ts.map +1 -1
- package/dist/tools/read-multiple-files.js +9 -4
- package/dist/tools/read-multiple-files.js.map +1 -1
- package/dist/tools/search-content.d.ts.map +1 -1
- package/dist/tools/search-content.js +19 -17
- 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 +15 -12
- package/dist/tools/search-files.js.map +1 -1
- package/dist/tools/shared/file-info.d.ts +4 -2
- package/dist/tools/shared/file-info.d.ts.map +1 -1
- package/dist/tools/shared/file-info.js +4 -2
- package/dist/tools/shared/file-info.js.map +1 -1
- package/dist/tools/shared/resolve-path.d.ts +2 -0
- package/dist/tools/shared/resolve-path.d.ts.map +1 -0
- package/dist/tools/shared/resolve-path.js +11 -0
- package/dist/tools/shared/resolve-path.js.map +1 -0
- package/dist/tools/shared/search-formatting.d.ts.map +1 -1
- package/dist/tools/shared/search-formatting.js +58 -38
- package/dist/tools/shared/search-formatting.js.map +1 -1
- package/dist/tools/tool-response.d.ts.map +1 -1
- package/dist/tools/tool-response.js +11 -6
- package/dist/tools/tool-response.js.map +1 -1
- package/dist/tools.d.ts +41 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +624 -0
- package/dist/tools.js.map +1 -0
- package/package.json +5 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics-helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/observability/diagnostics-helpers.ts"],"names":[],"mappings":"AAQA,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CASzE;AA0BD,wBAAgB,8BAA8B,CAC5C,KAAK,CAAC,EAAE,OAAO,GACd,MAAM,GAAG,SAAS,CAMpB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
function isObject(value) {
|
|
2
|
+
return typeof value === 'object' && value !== null;
|
|
3
|
+
}
|
|
4
|
+
function hasBooleanOk(value) {
|
|
5
|
+
return isObject(value) && typeof value.ok === 'boolean';
|
|
6
|
+
}
|
|
7
|
+
export function resolveDiagnosticsOk(result) {
|
|
8
|
+
if (!isObject(result))
|
|
9
|
+
return undefined;
|
|
10
|
+
if (result.isError === true)
|
|
11
|
+
return false;
|
|
12
|
+
if (hasBooleanOk(result))
|
|
13
|
+
return result.ok;
|
|
14
|
+
const structured = result.structuredContent;
|
|
15
|
+
if (hasBooleanOk(structured))
|
|
16
|
+
return structured.ok;
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
function resolvePrimitiveDiagnosticsMessage(error) {
|
|
20
|
+
if (typeof error === 'string')
|
|
21
|
+
return error;
|
|
22
|
+
if (typeof error === 'number' || typeof error === 'boolean') {
|
|
23
|
+
return String(error);
|
|
24
|
+
}
|
|
25
|
+
if (typeof error === 'bigint')
|
|
26
|
+
return error.toString();
|
|
27
|
+
if (typeof error === 'symbol')
|
|
28
|
+
return error.description ?? 'symbol';
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
function resolveObjectDiagnosticsMessage(error) {
|
|
32
|
+
if (error instanceof Error)
|
|
33
|
+
return error.message;
|
|
34
|
+
if (isObject(error) && typeof error.message === 'string') {
|
|
35
|
+
return error.message;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
return JSON.stringify(error);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export function resolveDiagnosticsErrorMessage(error) {
|
|
45
|
+
if (error === undefined || error === null)
|
|
46
|
+
return undefined;
|
|
47
|
+
return (resolvePrimitiveDiagnosticsMessage(error) ??
|
|
48
|
+
resolveObjectDiagnosticsMessage(error));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=diagnostics-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics-helpers.js","sourceRoot":"","sources":["../../../src/lib/observability/diagnostics-helpers.ts"],"names":[],"mappings":"AAAA,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAClD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,YAAY,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC;IAE3C,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC5C,IAAI,YAAY,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC,EAAE,CAAC;IAEnD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kCAAkC,CACzC,KAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC;IACpE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,+BAA+B,CAAC,KAAc;IACrD,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAe;IAEf,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,CACL,kCAAkC,CAAC,KAAK,CAAC;QACzC,+BAA+B,CAAC,KAAK,CAAC,CACvC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/lib/observability/diagnostics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/lib/observability/diagnostics.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAgKD,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAEnE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAEjE;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,OAAO,GACb,IAAI,CAKN;AAED,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACrB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,CAAC,CAAC,CAkBZ"}
|
|
@@ -1,27 +1,10 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
2
|
import { channel, tracingChannel } from 'node:diagnostics_channel';
|
|
3
|
+
import { resolveDiagnosticsErrorMessage, resolveDiagnosticsOk, } from './diagnostics-helpers.js';
|
|
3
4
|
import { captureEventLoopUtilization, diffEventLoopUtilization, } from './perf.js';
|
|
4
5
|
const TOOL_CHANNEL = channel('fs-context:tool');
|
|
5
6
|
const PERF_CHANNEL = channel('fs-context:perf');
|
|
6
7
|
const OPS_TRACE = tracingChannel('fs-context:ops');
|
|
7
|
-
function isObject(value) {
|
|
8
|
-
return typeof value === 'object' && value !== null;
|
|
9
|
-
}
|
|
10
|
-
function hasBooleanOk(value) {
|
|
11
|
-
return isObject(value) && typeof value.ok === 'boolean';
|
|
12
|
-
}
|
|
13
|
-
function resolveDiagnosticsOk(result) {
|
|
14
|
-
if (!isObject(result))
|
|
15
|
-
return undefined;
|
|
16
|
-
if (result.isError === true)
|
|
17
|
-
return false;
|
|
18
|
-
if (hasBooleanOk(result))
|
|
19
|
-
return result.ok;
|
|
20
|
-
const structured = result.structuredContent;
|
|
21
|
-
if (hasBooleanOk(structured))
|
|
22
|
-
return structured.ok;
|
|
23
|
-
return undefined;
|
|
24
|
-
}
|
|
25
8
|
function parseDiagnosticsEnabled() {
|
|
26
9
|
const normalized = process.env.FS_CONTEXT_DIAGNOSTICS?.trim().toLowerCase();
|
|
27
10
|
return normalized === '1' || normalized === 'true' || normalized === 'yes';
|
|
@@ -46,56 +29,38 @@ function normalizePathForDiagnostics(path) {
|
|
|
46
29
|
return hashPath(path);
|
|
47
30
|
}
|
|
48
31
|
function normalizeOpsTraceContext(context) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return
|
|
56
|
-
if (typeof error === 'number' || typeof error === 'boolean') {
|
|
57
|
-
return String(error);
|
|
58
|
-
}
|
|
59
|
-
if (typeof error === 'bigint')
|
|
60
|
-
return error.toString();
|
|
61
|
-
if (typeof error === 'symbol')
|
|
62
|
-
return error.description ?? 'symbol';
|
|
63
|
-
return undefined;
|
|
64
|
-
}
|
|
65
|
-
function resolveObjectDiagnosticsMessage(error) {
|
|
66
|
-
if (error instanceof Error)
|
|
67
|
-
return error.message;
|
|
68
|
-
if (isObject(error) && typeof error.message === 'string') {
|
|
69
|
-
return error.message;
|
|
70
|
-
}
|
|
71
|
-
try {
|
|
72
|
-
return JSON.stringify(error);
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
return undefined;
|
|
32
|
+
if (!context.path)
|
|
33
|
+
return context;
|
|
34
|
+
const normalizedPath = normalizePathForDiagnostics(context.path);
|
|
35
|
+
if (!normalizedPath) {
|
|
36
|
+
const sanitized = { ...context };
|
|
37
|
+
delete sanitized.path;
|
|
38
|
+
return sanitized;
|
|
76
39
|
}
|
|
77
|
-
}
|
|
78
|
-
function resolveDiagnosticsErrorMessage(error) {
|
|
79
|
-
if (error === undefined || error === null)
|
|
80
|
-
return undefined;
|
|
81
|
-
return (resolvePrimitiveDiagnosticsMessage(error) ??
|
|
82
|
-
resolveObjectDiagnosticsMessage(error));
|
|
40
|
+
return { ...context, path: normalizedPath };
|
|
83
41
|
}
|
|
84
42
|
function publishStartEvent(tool, options) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
43
|
+
const event = { phase: 'start', tool };
|
|
44
|
+
const normalizedPath = options?.path
|
|
45
|
+
? normalizePathForDiagnostics(options.path)
|
|
46
|
+
: undefined;
|
|
47
|
+
if (normalizedPath !== undefined) {
|
|
48
|
+
event.path = normalizedPath;
|
|
49
|
+
}
|
|
50
|
+
TOOL_CHANNEL.publish(event);
|
|
90
51
|
}
|
|
91
52
|
function publishEndEvent(tool, ok, durationMs, error) {
|
|
92
|
-
|
|
53
|
+
const event = {
|
|
93
54
|
phase: 'end',
|
|
94
55
|
tool,
|
|
95
56
|
ok,
|
|
96
|
-
error: resolveDiagnosticsErrorMessage(error),
|
|
97
57
|
durationMs,
|
|
98
|
-
}
|
|
58
|
+
};
|
|
59
|
+
const message = resolveDiagnosticsErrorMessage(error);
|
|
60
|
+
if (message !== undefined) {
|
|
61
|
+
event.error = message;
|
|
62
|
+
}
|
|
63
|
+
TOOL_CHANNEL.publish(event);
|
|
99
64
|
}
|
|
100
65
|
function publishPerfEndEvent(tool, durationMs, elu) {
|
|
101
66
|
PERF_CHANNEL.publish({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/lib/observability/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,WAAW,CAAC;AAgCnB,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChD,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChD,MAAM,SAAS,GAAG,cAAc,CAA2B,gBAAgB,CAAC,CAAC;AAE7E,SAAS,
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/lib/observability/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface OpsTraceContext {
|
|
2
|
+
op: string;
|
|
3
|
+
engine?: string;
|
|
4
|
+
tool?: string;
|
|
5
|
+
path?: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare function shouldPublishOpsTrace(): boolean;
|
|
9
|
+
export declare function publishOpsTraceStart(context: OpsTraceContext): void;
|
|
10
|
+
export declare function publishOpsTraceEnd(context: OpsTraceContext): void;
|
|
11
|
+
export declare function publishOpsTraceError(context: OpsTraceContext, error: unknown): void;
|
|
12
|
+
export declare function withToolDiagnostics<T>(tool: string, run: () => Promise<T>, options?: {
|
|
13
|
+
path?: string;
|
|
14
|
+
}): Promise<T>;
|
|
15
|
+
//# sourceMappingURL=observability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../src/lib/observability.ts"],"names":[],"mappings":"AAuFA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAgKD,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAEnE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAEjE;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,OAAO,GACb,IAAI,CAKN;AAED,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACrB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,CAAC,CAAC,CAkBZ"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { channel, tracingChannel } from 'node:diagnostics_channel';
|
|
3
|
+
import { performance } from 'node:perf_hooks';
|
|
4
|
+
function isObject(value) {
|
|
5
|
+
return typeof value === 'object' && value !== null;
|
|
6
|
+
}
|
|
7
|
+
function hasBooleanOk(value) {
|
|
8
|
+
return isObject(value) && typeof value.ok === 'boolean';
|
|
9
|
+
}
|
|
10
|
+
function resolveDiagnosticsOk(result) {
|
|
11
|
+
if (!isObject(result))
|
|
12
|
+
return undefined;
|
|
13
|
+
if (result.isError === true)
|
|
14
|
+
return false;
|
|
15
|
+
if (hasBooleanOk(result))
|
|
16
|
+
return result.ok;
|
|
17
|
+
const structured = result.structuredContent;
|
|
18
|
+
if (hasBooleanOk(structured))
|
|
19
|
+
return structured.ok;
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
function resolvePrimitiveDiagnosticsMessage(error) {
|
|
23
|
+
if (typeof error === 'string')
|
|
24
|
+
return error;
|
|
25
|
+
if (typeof error === 'number' || typeof error === 'boolean') {
|
|
26
|
+
return String(error);
|
|
27
|
+
}
|
|
28
|
+
if (typeof error === 'bigint')
|
|
29
|
+
return error.toString();
|
|
30
|
+
if (typeof error === 'symbol')
|
|
31
|
+
return error.description ?? 'symbol';
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
function resolveObjectDiagnosticsMessage(error) {
|
|
35
|
+
if (error instanceof Error)
|
|
36
|
+
return error.message;
|
|
37
|
+
if (isObject(error) && typeof error.message === 'string') {
|
|
38
|
+
return error.message;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
return JSON.stringify(error);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function resolveDiagnosticsErrorMessage(error) {
|
|
48
|
+
if (error === undefined || error === null)
|
|
49
|
+
return undefined;
|
|
50
|
+
return (resolvePrimitiveDiagnosticsMessage(error) ??
|
|
51
|
+
resolveObjectDiagnosticsMessage(error));
|
|
52
|
+
}
|
|
53
|
+
function captureEventLoopUtilization() {
|
|
54
|
+
return performance.eventLoopUtilization();
|
|
55
|
+
}
|
|
56
|
+
function diffEventLoopUtilization(start) {
|
|
57
|
+
return performance.eventLoopUtilization(start);
|
|
58
|
+
}
|
|
59
|
+
const TOOL_CHANNEL = channel('fs-context:tool');
|
|
60
|
+
const PERF_CHANNEL = channel('fs-context:perf');
|
|
61
|
+
const OPS_TRACE = tracingChannel('fs-context:ops');
|
|
62
|
+
function parseDiagnosticsEnabled() {
|
|
63
|
+
const normalized = process.env.FS_CONTEXT_DIAGNOSTICS?.trim().toLowerCase();
|
|
64
|
+
return normalized === '1' || normalized === 'true' || normalized === 'yes';
|
|
65
|
+
}
|
|
66
|
+
function parseDiagnosticsDetail() {
|
|
67
|
+
const normalized = process.env.FS_CONTEXT_DIAGNOSTICS_DETAIL?.trim();
|
|
68
|
+
if (normalized === '2')
|
|
69
|
+
return 2;
|
|
70
|
+
if (normalized === '1')
|
|
71
|
+
return 1;
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
function hashPath(value) {
|
|
75
|
+
return createHash('sha256').update(value).digest('hex').slice(0, 16);
|
|
76
|
+
}
|
|
77
|
+
function normalizePathForDiagnostics(pathValue) {
|
|
78
|
+
const detail = parseDiagnosticsDetail();
|
|
79
|
+
if (detail === 0)
|
|
80
|
+
return undefined;
|
|
81
|
+
if (detail === 2)
|
|
82
|
+
return pathValue;
|
|
83
|
+
return hashPath(pathValue);
|
|
84
|
+
}
|
|
85
|
+
function normalizeOpsTraceContext(context) {
|
|
86
|
+
if (!context.path)
|
|
87
|
+
return context;
|
|
88
|
+
const normalizedPath = normalizePathForDiagnostics(context.path);
|
|
89
|
+
if (!normalizedPath) {
|
|
90
|
+
const sanitized = { ...context };
|
|
91
|
+
delete sanitized.path;
|
|
92
|
+
return sanitized;
|
|
93
|
+
}
|
|
94
|
+
return { ...context, path: normalizedPath };
|
|
95
|
+
}
|
|
96
|
+
function publishStartEvent(tool, options) {
|
|
97
|
+
const event = { phase: 'start', tool };
|
|
98
|
+
const normalizedPath = options?.path
|
|
99
|
+
? normalizePathForDiagnostics(options.path)
|
|
100
|
+
: undefined;
|
|
101
|
+
if (normalizedPath !== undefined) {
|
|
102
|
+
event.path = normalizedPath;
|
|
103
|
+
}
|
|
104
|
+
TOOL_CHANNEL.publish(event);
|
|
105
|
+
}
|
|
106
|
+
function publishEndEvent(tool, ok, durationMs, error) {
|
|
107
|
+
const event = {
|
|
108
|
+
phase: 'end',
|
|
109
|
+
tool,
|
|
110
|
+
ok,
|
|
111
|
+
durationMs,
|
|
112
|
+
};
|
|
113
|
+
const message = resolveDiagnosticsErrorMessage(error);
|
|
114
|
+
if (message !== undefined) {
|
|
115
|
+
event.error = message;
|
|
116
|
+
}
|
|
117
|
+
TOOL_CHANNEL.publish(event);
|
|
118
|
+
}
|
|
119
|
+
function publishPerfEndEvent(tool, durationMs, elu) {
|
|
120
|
+
PERF_CHANNEL.publish({
|
|
121
|
+
phase: 'end',
|
|
122
|
+
tool,
|
|
123
|
+
durationMs,
|
|
124
|
+
elu: {
|
|
125
|
+
idle: elu.idle,
|
|
126
|
+
active: elu.active,
|
|
127
|
+
utilization: elu.utilization,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
function startToolDiagnostics(tool, options, shouldPublishTool, shouldPublishPerf) {
|
|
132
|
+
const startNs = process.hrtime.bigint();
|
|
133
|
+
const eluStart = shouldPublishPerf
|
|
134
|
+
? captureEventLoopUtilization()
|
|
135
|
+
: undefined;
|
|
136
|
+
if (shouldPublishTool)
|
|
137
|
+
publishStartEvent(tool, options);
|
|
138
|
+
return { startNs, eluStart };
|
|
139
|
+
}
|
|
140
|
+
function finalizeToolDiagnostics(tool, startNs, options) {
|
|
141
|
+
const endNs = process.hrtime.bigint();
|
|
142
|
+
const durationMs = Number(endNs - startNs) / 1_000_000;
|
|
143
|
+
if (options.shouldPublishPerf && options.eluStart) {
|
|
144
|
+
publishPerfEndEvent(tool, durationMs, diffEventLoopUtilization(options.eluStart));
|
|
145
|
+
}
|
|
146
|
+
if (options.shouldPublishTool) {
|
|
147
|
+
publishEndEvent(tool, options.ok, durationMs, options.error);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async function runWithDiagnostics(tool, run, options, shouldPublishTool, shouldPublishPerf) {
|
|
151
|
+
const { startNs, eluStart } = startToolDiagnostics(tool, options, shouldPublishTool, shouldPublishPerf);
|
|
152
|
+
const finalizeOptions = { shouldPublishTool, shouldPublishPerf, eluStart };
|
|
153
|
+
try {
|
|
154
|
+
const result = await run();
|
|
155
|
+
finalizeToolDiagnostics(tool, startNs, {
|
|
156
|
+
ok: resolveDiagnosticsOk(result) ?? true,
|
|
157
|
+
...finalizeOptions,
|
|
158
|
+
});
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
finalizeToolDiagnostics(tool, startNs, {
|
|
163
|
+
ok: false,
|
|
164
|
+
error,
|
|
165
|
+
...finalizeOptions,
|
|
166
|
+
});
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
export function shouldPublishOpsTrace() {
|
|
171
|
+
return parseDiagnosticsEnabled() && OPS_TRACE.hasSubscribers;
|
|
172
|
+
}
|
|
173
|
+
export function publishOpsTraceStart(context) {
|
|
174
|
+
OPS_TRACE.start.publish(normalizeOpsTraceContext(context));
|
|
175
|
+
}
|
|
176
|
+
export function publishOpsTraceEnd(context) {
|
|
177
|
+
OPS_TRACE.end.publish(normalizeOpsTraceContext(context));
|
|
178
|
+
}
|
|
179
|
+
export function publishOpsTraceError(context, error) {
|
|
180
|
+
OPS_TRACE.error.publish({
|
|
181
|
+
...normalizeOpsTraceContext(context),
|
|
182
|
+
error,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
export async function withToolDiagnostics(tool, run, options) {
|
|
186
|
+
if (!parseDiagnosticsEnabled()) {
|
|
187
|
+
return await run();
|
|
188
|
+
}
|
|
189
|
+
const shouldPublishTool = TOOL_CHANNEL.hasSubscribers;
|
|
190
|
+
const shouldPublishPerf = PERF_CHANNEL.hasSubscribers;
|
|
191
|
+
if (!shouldPublishTool && !shouldPublishPerf) {
|
|
192
|
+
return await run();
|
|
193
|
+
}
|
|
194
|
+
return await runWithDiagnostics(tool, run, options, shouldPublishTool, shouldPublishPerf);
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=observability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../src/lib/observability.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@ async function validateExistingPathDetailsInternal(requestedPath, signal) {
|
|
|
39
39
|
const realPath = await resolveRealPathOrThrow({
|
|
40
40
|
requestedPath,
|
|
41
41
|
normalizedRequested,
|
|
42
|
-
signal,
|
|
42
|
+
...(signal ? { signal } : {}),
|
|
43
43
|
});
|
|
44
44
|
const normalizedReal = normalizePath(realPath);
|
|
45
45
|
if (!isPathWithinDirectories(normalizedReal, allowedDirs)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-existing.js","sourceRoot":"","sources":["../../../src/lib/path-validation/validate-existing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAQxD,SAAS,8BAA8B,CAAC,OAKvC;IACC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACxE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,eAAe,EACzB,kHAAkH,EAClH,aAAa,EACb,OAAO,CACR,CAAC;IACJ,CAAC;IACD,IAAI,uBAAuB,CAAC,cAAc,EAAE,WAAW,CAAC;QAAE,OAAO;IAEjE,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,eAAe,EACzB,wBAAwB,aAAa,kCAAkC,EACvE,aAAa,EACb,OAAO,CACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,OAIrC;IACC,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC/D,IAAI,CAAC;QACH,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,MAAM,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mCAAmC,CAChD,aAAqB,EACrB,MAAoB;IAEpB,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;IAC5C,8BAA8B,CAAC;QAC7B,cAAc,EAAE,mBAAmB;QACnC,aAAa;QACb,WAAW;QACX,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE;KACjD,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC;QAC5C,aAAa;QACb,mBAAmB;QACnB,MAAM;
|
|
1
|
+
{"version":3,"file":"validate-existing.js","sourceRoot":"","sources":["../../../src/lib/path-validation/validate-existing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
1
|
+
import type { Root } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { McpError } from './errors.js';
|
|
3
|
+
export declare function normalizePath(p: string): string;
|
|
4
|
+
export declare function isPathWithinRoot(root: string, candidate: string): boolean;
|
|
5
|
+
export declare function normalizeForComparison(value: string): string;
|
|
6
|
+
export declare function getAllowedDirectories(): string[];
|
|
7
|
+
export declare function isPathWithinDirectories(normalizedPath: string, allowedDirs: readonly string[]): boolean;
|
|
8
|
+
export declare function setAllowedDirectoriesResolved(dirs: readonly string[], signal?: AbortSignal): Promise<void>;
|
|
9
|
+
export declare const RESERVED_DEVICE_NAMES: Set<string>;
|
|
10
|
+
export declare function validateRequestedPath(requestedPath: string): string;
|
|
11
|
+
export declare function toMcpError(requestedPath: string, error: unknown): McpError;
|
|
12
|
+
export declare function toAccessDeniedWithHint(requestedPath: string, resolvedPath: string, normalizedResolved: string): McpError;
|
|
13
|
+
interface ValidatedPathDetails {
|
|
14
|
+
requestedPath: string;
|
|
15
|
+
resolvedPath: string;
|
|
16
|
+
isSymlink: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function validateExistingPathDetailed(requestedPath: string, signal?: AbortSignal): Promise<ValidatedPathDetails>;
|
|
19
|
+
export declare function validateExistingPath(requestedPath: string, signal?: AbortSignal): Promise<string>;
|
|
20
|
+
export declare function validateExistingDirectory(requestedPath: string, signal?: AbortSignal): Promise<string>;
|
|
21
|
+
export declare function getValidRootDirectories(roots: Root[], signal?: AbortSignal): Promise<string[]>;
|
|
22
|
+
export {};
|
|
6
23
|
//# sourceMappingURL=path-validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-validation.d.ts","sourceRoot":"","sources":["../../src/lib/path-validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"path-validation.d.ts","sourceRoot":"","sources":["../../src/lib/path-validation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAA0B,QAAQ,EAAE,MAAM,aAAa,CAAC;AAU/D,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAS/C;AAcD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzE;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AA6BD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,OAAO,CAKT;AAuCD,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,eAAO,MAAM,qBAAqB,aAuBhC,CAAC;AA2EH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAMnE;AAwCD,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,QAAQ,CA0B1E;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,GACzB,QAAQ,CAQV;AAED,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AA6ED,wBAAsB,4BAA4B,CAChD,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAE/B;AAED,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAejB;AA+CD,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB"}
|