@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.
Files changed (177) hide show
  1. package/README.md +22 -17
  2. package/dist/config.d.ts +117 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +31 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/index.js +2 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/constants.d.ts +3 -3
  9. package/dist/lib/constants.d.ts.map +1 -1
  10. package/dist/lib/constants.js +129 -3
  11. package/dist/lib/constants.js.map +1 -1
  12. package/dist/lib/errors.d.ts +1 -1
  13. package/dist/lib/errors.d.ts.map +1 -1
  14. package/dist/lib/errors.js +9 -9
  15. package/dist/lib/errors.js.map +1 -1
  16. package/dist/lib/file-operations/file-info.d.ts +7 -1
  17. package/dist/lib/file-operations/file-info.d.ts.map +1 -1
  18. package/dist/lib/file-operations/file-info.js +84 -8
  19. package/dist/lib/file-operations/file-info.js.map +1 -1
  20. package/dist/lib/file-operations/get-multiple-file-info.d.ts.map +1 -1
  21. package/dist/lib/file-operations/get-multiple-file-info.js +8 -4
  22. package/dist/lib/file-operations/get-multiple-file-info.js.map +1 -1
  23. package/dist/lib/file-operations/glob-engine.d.ts.map +1 -1
  24. package/dist/lib/file-operations/glob-engine.js +46 -19
  25. package/dist/lib/file-operations/glob-engine.js.map +1 -1
  26. package/dist/lib/file-operations/list-directory-entry.d.ts.map +1 -1
  27. package/dist/lib/file-operations/list-directory-entry.js +5 -3
  28. package/dist/lib/file-operations/list-directory-entry.js.map +1 -1
  29. package/dist/lib/file-operations/list-directory-helpers.d.ts.map +1 -1
  30. package/dist/lib/file-operations/list-directory-helpers.js +11 -4
  31. package/dist/lib/file-operations/list-directory-helpers.js.map +1 -1
  32. package/dist/lib/file-operations/list-directory.d.ts +12 -2
  33. package/dist/lib/file-operations/list-directory.d.ts.map +1 -1
  34. package/dist/lib/file-operations/list-directory.js +155 -3
  35. package/dist/lib/file-operations/list-directory.js.map +1 -1
  36. package/dist/lib/file-operations/read-multiple-files-helpers.d.ts.map +1 -1
  37. package/dist/lib/file-operations/read-multiple-files-helpers.js +40 -19
  38. package/dist/lib/file-operations/read-multiple-files-helpers.js.map +1 -1
  39. package/dist/lib/file-operations/read-multiple-files.d.ts +18 -1
  40. package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
  41. package/dist/lib/file-operations/read-multiple-files.js +107 -2
  42. package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
  43. package/dist/lib/file-operations/search/engine.d.ts.map +1 -1
  44. package/dist/lib/file-operations/search/engine.js +7 -2
  45. package/dist/lib/file-operations/search/engine.js.map +1 -1
  46. package/dist/lib/file-operations/search/scan-file.d.ts.map +1 -1
  47. package/dist/lib/file-operations/search/scan-file.js +6 -3
  48. package/dist/lib/file-operations/search/scan-file.js.map +1 -1
  49. package/dist/lib/file-operations/search/scan-runner.d.ts.map +1 -1
  50. package/dist/lib/file-operations/search/scan-runner.js +21 -16
  51. package/dist/lib/file-operations/search/scan-runner.js.map +1 -1
  52. package/dist/lib/file-operations/search-content.d.ts +64 -17
  53. package/dist/lib/file-operations/search-content.d.ts.map +1 -1
  54. package/dist/lib/file-operations/search-content.js +828 -3
  55. package/dist/lib/file-operations/search-content.js.map +1 -1
  56. package/dist/lib/file-operations/search-files-collector.d.ts +2 -2
  57. package/dist/lib/file-operations/search-files-collector.d.ts.map +1 -1
  58. package/dist/lib/file-operations/search-files-collector.js +23 -11
  59. package/dist/lib/file-operations/search-files-collector.js.map +1 -1
  60. package/dist/lib/file-operations/search-files-helpers.d.ts.map +1 -1
  61. package/dist/lib/file-operations/search-files-helpers.js +5 -2
  62. package/dist/lib/file-operations/search-files-helpers.js.map +1 -1
  63. package/dist/lib/file-operations/search-files.d.ts +20 -2
  64. package/dist/lib/file-operations/search-files.d.ts.map +1 -1
  65. package/dist/lib/file-operations/search-files.js +192 -5
  66. package/dist/lib/file-operations/search-files.js.map +1 -1
  67. package/dist/lib/file-operations/search-worker.d.ts +30 -0
  68. package/dist/lib/file-operations/search-worker.d.ts.map +1 -0
  69. package/dist/lib/file-operations/search-worker.js +98 -0
  70. package/dist/lib/file-operations/search-worker.js.map +1 -0
  71. package/dist/lib/fs-helpers/readers/read-modes.d.ts.map +1 -1
  72. package/dist/lib/fs-helpers/readers/read-modes.js +6 -4
  73. package/dist/lib/fs-helpers/readers/read-modes.js.map +1 -1
  74. package/dist/lib/fs-helpers/readers/read-options.d.ts.map +1 -1
  75. package/dist/lib/fs-helpers/readers/read-options.js +8 -3
  76. package/dist/lib/fs-helpers/readers/read-options.js.map +1 -1
  77. package/dist/lib/fs-helpers.d.ts +49 -5
  78. package/dist/lib/fs-helpers.d.ts.map +1 -1
  79. package/dist/lib/fs-helpers.js +479 -5
  80. package/dist/lib/fs-helpers.js.map +1 -1
  81. package/dist/lib/observability/diagnostics-helpers.d.ts +3 -0
  82. package/dist/lib/observability/diagnostics-helpers.d.ts.map +1 -0
  83. package/dist/lib/observability/diagnostics-helpers.js +50 -0
  84. package/dist/lib/observability/diagnostics-helpers.js.map +1 -0
  85. package/dist/lib/observability/diagnostics.d.ts.map +1 -1
  86. package/dist/lib/observability/diagnostics.js +24 -59
  87. package/dist/lib/observability/diagnostics.js.map +1 -1
  88. package/dist/lib/observability.d.ts +15 -0
  89. package/dist/lib/observability.d.ts.map +1 -0
  90. package/dist/lib/observability.js +196 -0
  91. package/dist/lib/observability.js.map +1 -0
  92. package/dist/lib/path-validation/validate-existing.js +1 -1
  93. package/dist/lib/path-validation/validate-existing.js.map +1 -1
  94. package/dist/lib/path-validation.d.ts +22 -5
  95. package/dist/lib/path-validation.d.ts.map +1 -1
  96. package/dist/lib/path-validation.js +340 -5
  97. package/dist/lib/path-validation.js.map +1 -1
  98. package/dist/schemas/inputs/directory.d.ts +1 -1
  99. package/dist/schemas/inputs/directory.d.ts.map +1 -1
  100. package/dist/schemas/inputs/directory.js +1 -12
  101. package/dist/schemas/inputs/directory.js.map +1 -1
  102. package/dist/schemas/inputs/helpers.d.ts +2 -0
  103. package/dist/schemas/inputs/helpers.d.ts.map +1 -0
  104. package/dist/schemas/inputs/helpers.js +13 -0
  105. package/dist/schemas/inputs/helpers.js.map +1 -0
  106. package/dist/schemas/inputs/safe-glob.d.ts +2 -0
  107. package/dist/schemas/inputs/safe-glob.d.ts.map +1 -0
  108. package/dist/schemas/inputs/safe-glob.js +13 -0
  109. package/dist/schemas/inputs/safe-glob.js.map +1 -0
  110. package/dist/schemas/inputs/search.d.ts.map +1 -1
  111. package/dist/schemas/inputs/search.js +2 -13
  112. package/dist/schemas/inputs/search.js.map +1 -1
  113. package/dist/schemas/output-helpers.d.ts +6 -1
  114. package/dist/schemas/output-helpers.d.ts.map +1 -1
  115. package/dist/schemas/output-helpers.js +5 -0
  116. package/dist/schemas/output-helpers.js.map +1 -1
  117. package/dist/schemas/outputs/file-info.d.ts +2 -2
  118. package/dist/schemas/outputs/file-info.d.ts.map +1 -1
  119. package/dist/schemas/outputs/file-info.js +2 -8
  120. package/dist/schemas/outputs/file-info.js.map +1 -1
  121. package/dist/schemas/outputs/read.d.ts.map +1 -1
  122. package/dist/schemas/outputs/read.js +2 -7
  123. package/dist/schemas/outputs/read.js.map +1 -1
  124. package/dist/schemas.d.ts +256 -0
  125. package/dist/schemas.d.ts.map +1 -0
  126. package/dist/schemas.js +379 -0
  127. package/dist/schemas.js.map +1 -0
  128. package/dist/server/roots.d.ts.map +1 -1
  129. package/dist/server/roots.js +19 -15
  130. package/dist/server/roots.js.map +1 -1
  131. package/dist/server.d.ts +11 -2
  132. package/dist/server.d.ts.map +1 -1
  133. package/dist/server.js +212 -10
  134. package/dist/server.js.map +1 -1
  135. package/dist/tools/get-file-info.d.ts.map +1 -1
  136. package/dist/tools/get-file-info.js +5 -1
  137. package/dist/tools/get-file-info.js.map +1 -1
  138. package/dist/tools/get-multiple-file-info.d.ts.map +1 -1
  139. package/dist/tools/get-multiple-file-info.js +6 -3
  140. package/dist/tools/get-multiple-file-info.js.map +1 -1
  141. package/dist/tools/list-directory-formatting.d.ts.map +1 -1
  142. package/dist/tools/list-directory-formatting.js +7 -1
  143. package/dist/tools/list-directory-formatting.js.map +1 -1
  144. package/dist/tools/list-directory.d.ts.map +1 -1
  145. package/dist/tools/list-directory.js +5 -4
  146. package/dist/tools/list-directory.js.map +1 -1
  147. package/dist/tools/read-file.d.ts.map +1 -1
  148. package/dist/tools/read-file.js +9 -4
  149. package/dist/tools/read-file.js.map +1 -1
  150. package/dist/tools/read-multiple-files.d.ts.map +1 -1
  151. package/dist/tools/read-multiple-files.js +9 -4
  152. package/dist/tools/read-multiple-files.js.map +1 -1
  153. package/dist/tools/search-content.d.ts.map +1 -1
  154. package/dist/tools/search-content.js +19 -17
  155. package/dist/tools/search-content.js.map +1 -1
  156. package/dist/tools/search-files.d.ts.map +1 -1
  157. package/dist/tools/search-files.js +15 -12
  158. package/dist/tools/search-files.js.map +1 -1
  159. package/dist/tools/shared/file-info.d.ts +4 -2
  160. package/dist/tools/shared/file-info.d.ts.map +1 -1
  161. package/dist/tools/shared/file-info.js +4 -2
  162. package/dist/tools/shared/file-info.js.map +1 -1
  163. package/dist/tools/shared/resolve-path.d.ts +2 -0
  164. package/dist/tools/shared/resolve-path.d.ts.map +1 -0
  165. package/dist/tools/shared/resolve-path.js +11 -0
  166. package/dist/tools/shared/resolve-path.js.map +1 -0
  167. package/dist/tools/shared/search-formatting.d.ts.map +1 -1
  168. package/dist/tools/shared/search-formatting.js +58 -38
  169. package/dist/tools/shared/search-formatting.js.map +1 -1
  170. package/dist/tools/tool-response.d.ts.map +1 -1
  171. package/dist/tools/tool-response.js +11 -6
  172. package/dist/tools/tool-response.js.map +1 -1
  173. package/dist/tools.d.ts +41 -0
  174. package/dist/tools.d.ts.map +1 -0
  175. package/dist/tools.js +624 -0
  176. package/dist/tools.js.map +1 -0
  177. 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":"AA8BA,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;AAuMD,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
+ {"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
- return context.path
50
- ? { ...context, path: normalizePathForDiagnostics(context.path) }
51
- : context;
52
- }
53
- function resolvePrimitiveDiagnosticsMessage(error) {
54
- if (typeof error === 'string')
55
- return error;
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
- TOOL_CHANNEL.publish({
86
- phase: 'start',
87
- tool,
88
- path: options?.path ? normalizePathForDiagnostics(options.path) : undefined,
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
- TOOL_CHANNEL.publish({
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":"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"}
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":"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"}
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
- export { getAllowedDirectories, isPathWithinDirectories, setAllowedDirectoriesResolved, } from './path-validation/allowed-directories.js';
2
- export { toAccessDeniedWithHint } from './path-validation/path-errors.js';
3
- export { RESERVED_DEVICE_NAMES } from './path-validation/path-rules.js';
4
- export { validateExistingDirectory, validateExistingPath, validateExistingPathDetailed, } from './path-validation/validate-existing.js';
5
- export { getValidRootDirectories } from './path-validation/roots.js';
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":"AAAA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC"}
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"}