@j0hanz/fs-context-mcp 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (791) hide show
  1. package/README.md +482 -0
  2. package/dist/__tests__/lib/errors-classify.test.d.ts +2 -0
  3. package/dist/__tests__/lib/errors-classify.test.d.ts.map +1 -0
  4. package/dist/__tests__/lib/errors-classify.test.js +53 -0
  5. package/dist/__tests__/lib/errors-classify.test.js.map +1 -0
  6. package/dist/__tests__/lib/errors-detailed.test.d.ts +2 -0
  7. package/dist/__tests__/lib/errors-detailed.test.d.ts.map +1 -0
  8. package/dist/__tests__/lib/errors-detailed.test.js +38 -0
  9. package/dist/__tests__/lib/errors-detailed.test.js.map +1 -0
  10. package/dist/__tests__/lib/errors-is-node-error.test.d.ts +2 -0
  11. package/dist/__tests__/lib/errors-is-node-error.test.d.ts.map +1 -0
  12. package/dist/__tests__/lib/errors-is-node-error.test.js +21 -0
  13. package/dist/__tests__/lib/errors-is-node-error.test.js.map +1 -0
  14. package/dist/__tests__/lib/errors-mcp-error.test.d.ts +2 -0
  15. package/dist/__tests__/lib/errors-mcp-error.test.d.ts.map +1 -0
  16. package/dist/__tests__/lib/errors-mcp-error.test.js +29 -0
  17. package/dist/__tests__/lib/errors-mcp-error.test.js.map +1 -0
  18. package/dist/__tests__/lib/errors-node-map.test.d.ts +2 -0
  19. package/dist/__tests__/lib/errors-node-map.test.d.ts.map +1 -0
  20. package/dist/__tests__/lib/errors-node-map.test.js +16 -0
  21. package/dist/__tests__/lib/errors-node-map.test.js.map +1 -0
  22. package/dist/__tests__/lib/errors-suggestion.test.d.ts +2 -0
  23. package/dist/__tests__/lib/errors-suggestion.test.d.ts.map +1 -0
  24. package/dist/__tests__/lib/errors-suggestion.test.js +11 -0
  25. package/dist/__tests__/lib/errors-suggestion.test.js.map +1 -0
  26. package/dist/__tests__/lib/errors.test.d.ts +2 -0
  27. package/dist/__tests__/lib/errors.test.d.ts.map +1 -0
  28. package/dist/__tests__/lib/errors.test.js +171 -0
  29. package/dist/__tests__/lib/errors.test.js.map +1 -0
  30. package/dist/__tests__/lib/file-operations/analyze-directory-edge-cases.test.d.ts +2 -0
  31. package/dist/__tests__/lib/file-operations/analyze-directory-edge-cases.test.d.ts.map +1 -0
  32. package/dist/__tests__/lib/file-operations/analyze-directory-edge-cases.test.js +15 -0
  33. package/dist/__tests__/lib/file-operations/analyze-directory-edge-cases.test.js.map +1 -0
  34. package/dist/__tests__/lib/file-operations/analyze-directory.test.d.ts +2 -0
  35. package/dist/__tests__/lib/file-operations/analyze-directory.test.d.ts.map +1 -0
  36. package/dist/__tests__/lib/file-operations/analyze-directory.test.js +28 -0
  37. package/dist/__tests__/lib/file-operations/analyze-directory.test.js.map +1 -0
  38. package/dist/__tests__/lib/file-operations/compute-checksums.test.d.ts +2 -0
  39. package/dist/__tests__/lib/file-operations/compute-checksums.test.d.ts.map +1 -0
  40. package/dist/__tests__/lib/file-operations/compute-checksums.test.js +59 -0
  41. package/dist/__tests__/lib/file-operations/compute-checksums.test.js.map +1 -0
  42. package/dist/__tests__/lib/file-operations/directory-tree-edge-cases.test.d.ts +2 -0
  43. package/dist/__tests__/lib/file-operations/directory-tree-edge-cases.test.d.ts.map +1 -0
  44. package/dist/__tests__/lib/file-operations/directory-tree-edge-cases.test.js +29 -0
  45. package/dist/__tests__/lib/file-operations/directory-tree-edge-cases.test.js.map +1 -0
  46. package/dist/__tests__/lib/file-operations/directory-tree.test.d.ts +2 -0
  47. package/dist/__tests__/lib/file-operations/directory-tree.test.d.ts.map +1 -0
  48. package/dist/__tests__/lib/file-operations/directory-tree.test.js +75 -0
  49. package/dist/__tests__/lib/file-operations/directory-tree.test.js.map +1 -0
  50. package/dist/__tests__/lib/file-operations/get-file-info.test.d.ts +2 -0
  51. package/dist/__tests__/lib/file-operations/get-file-info.test.d.ts.map +1 -0
  52. package/dist/__tests__/lib/file-operations/get-file-info.test.js +17 -0
  53. package/dist/__tests__/lib/file-operations/get-file-info.test.js.map +1 -0
  54. package/dist/__tests__/lib/file-operations/get-multiple-file-info.test.d.ts +2 -0
  55. package/dist/__tests__/lib/file-operations/get-multiple-file-info.test.d.ts.map +1 -0
  56. package/dist/__tests__/lib/file-operations/get-multiple-file-info.test.js +46 -0
  57. package/dist/__tests__/lib/file-operations/get-multiple-file-info.test.js.map +1 -0
  58. package/dist/__tests__/lib/file-operations/list-directory-edge-cases.test.d.ts +2 -0
  59. package/dist/__tests__/lib/file-operations/list-directory-edge-cases.test.d.ts.map +1 -0
  60. package/dist/__tests__/lib/file-operations/list-directory-edge-cases.test.js +21 -0
  61. package/dist/__tests__/lib/file-operations/list-directory-edge-cases.test.js.map +1 -0
  62. package/dist/__tests__/lib/file-operations/list-directory.test.d.ts +2 -0
  63. package/dist/__tests__/lib/file-operations/list-directory.test.d.ts.map +1 -0
  64. package/dist/__tests__/lib/file-operations/list-directory.test.js +31 -0
  65. package/dist/__tests__/lib/file-operations/list-directory.test.js.map +1 -0
  66. package/dist/__tests__/lib/file-operations/read-media-file.test.d.ts +2 -0
  67. package/dist/__tests__/lib/file-operations/read-media-file.test.d.ts.map +1 -0
  68. package/dist/__tests__/lib/file-operations/read-media-file.test.js +21 -0
  69. package/dist/__tests__/lib/file-operations/read-media-file.test.js.map +1 -0
  70. package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.d.ts +2 -0
  71. package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.d.ts.map +1 -0
  72. package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.js +40 -0
  73. package/dist/__tests__/lib/file-operations/read-multiple-files-edge-cases.test.js.map +1 -0
  74. package/dist/__tests__/lib/file-operations/read-multiple-files.test.d.ts +2 -0
  75. package/dist/__tests__/lib/file-operations/read-multiple-files.test.d.ts.map +1 -0
  76. package/dist/__tests__/lib/file-operations/read-multiple-files.test.js +57 -0
  77. package/dist/__tests__/lib/file-operations/read-multiple-files.test.js.map +1 -0
  78. package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.d.ts +2 -0
  79. package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.d.ts.map +1 -0
  80. package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.js +57 -0
  81. package/dist/__tests__/lib/file-operations/search-content-edge-cases.test.js.map +1 -0
  82. package/dist/__tests__/lib/file-operations/search-content.test.d.ts +2 -0
  83. package/dist/__tests__/lib/file-operations/search-content.test.d.ts.map +1 -0
  84. package/dist/__tests__/lib/file-operations/search-content.test.js +73 -0
  85. package/dist/__tests__/lib/file-operations/search-content.test.js.map +1 -0
  86. package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.d.ts +2 -0
  87. package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.d.ts.map +1 -0
  88. package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.js +43 -0
  89. package/dist/__tests__/lib/file-operations/search-definitions-helpers.test.js.map +1 -0
  90. package/dist/__tests__/lib/file-operations/search-definitions.fixtures.d.ts +7 -0
  91. package/dist/__tests__/lib/file-operations/search-definitions.fixtures.d.ts.map +1 -0
  92. package/dist/__tests__/lib/file-operations/search-definitions.fixtures.js +113 -0
  93. package/dist/__tests__/lib/file-operations/search-definitions.fixtures.js.map +1 -0
  94. package/dist/__tests__/lib/file-operations/search-definitions.test.d.ts +2 -0
  95. package/dist/__tests__/lib/file-operations/search-definitions.test.d.ts.map +1 -0
  96. package/dist/__tests__/lib/file-operations/search-definitions.test.js +163 -0
  97. package/dist/__tests__/lib/file-operations/search-definitions.test.js.map +1 -0
  98. package/dist/__tests__/lib/file-operations/search-files-edge-cases.test.d.ts +2 -0
  99. package/dist/__tests__/lib/file-operations/search-files-edge-cases.test.d.ts.map +1 -0
  100. package/dist/__tests__/lib/file-operations/search-files-edge-cases.test.js +13 -0
  101. package/dist/__tests__/lib/file-operations/search-files-edge-cases.test.js.map +1 -0
  102. package/dist/__tests__/lib/file-operations/search-files.test.d.ts +2 -0
  103. package/dist/__tests__/lib/file-operations/search-files.test.d.ts.map +1 -0
  104. package/dist/__tests__/lib/file-operations/search-files.test.js +31 -0
  105. package/dist/__tests__/lib/file-operations/search-files.test.js.map +1 -0
  106. package/dist/__tests__/lib/file-operations/sorting.test.d.ts +2 -0
  107. package/dist/__tests__/lib/file-operations/sorting.test.d.ts.map +1 -0
  108. package/dist/__tests__/lib/file-operations/sorting.test.js +22 -0
  109. package/dist/__tests__/lib/file-operations/sorting.test.js.map +1 -0
  110. package/dist/__tests__/lib/file-operations.test.d.ts +2 -0
  111. package/dist/__tests__/lib/file-operations.test.d.ts.map +1 -0
  112. package/dist/__tests__/lib/file-operations.test.js +475 -0
  113. package/dist/__tests__/lib/file-operations.test.js.map +1 -0
  114. package/dist/__tests__/lib/fixtures/file-ops-fixture.d.ts +7 -0
  115. package/dist/__tests__/lib/fixtures/file-ops-fixture.d.ts.map +1 -0
  116. package/dist/__tests__/lib/fixtures/file-ops-fixture.js +87 -0
  117. package/dist/__tests__/lib/fixtures/file-ops-fixture.js.map +1 -0
  118. package/dist/__tests__/lib/fixtures/file-ops-hooks.d.ts +2 -0
  119. package/dist/__tests__/lib/fixtures/file-ops-hooks.d.ts.map +1 -0
  120. package/dist/__tests__/lib/fixtures/file-ops-hooks.js +13 -0
  121. package/dist/__tests__/lib/fixtures/file-ops-hooks.js.map +1 -0
  122. package/dist/__tests__/lib/fs-helpers/file-type.test.d.ts +2 -0
  123. package/dist/__tests__/lib/fs-helpers/file-type.test.d.ts.map +1 -0
  124. package/dist/__tests__/lib/fs-helpers/file-type.test.js +15 -0
  125. package/dist/__tests__/lib/fs-helpers/file-type.test.js.map +1 -0
  126. package/dist/__tests__/lib/fs-helpers/head-file-edge-cases.test.d.ts +2 -0
  127. package/dist/__tests__/lib/fs-helpers/head-file-edge-cases.test.d.ts.map +1 -0
  128. package/dist/__tests__/lib/fs-helpers/head-file-edge-cases.test.js +19 -0
  129. package/dist/__tests__/lib/fs-helpers/head-file-edge-cases.test.js.map +1 -0
  130. package/dist/__tests__/lib/fs-helpers/head-file.test.d.ts +2 -0
  131. package/dist/__tests__/lib/fs-helpers/head-file.test.d.ts.map +1 -0
  132. package/dist/__tests__/lib/fs-helpers/head-file.test.js +12 -0
  133. package/dist/__tests__/lib/fs-helpers/head-file.test.js.map +1 -0
  134. package/dist/__tests__/lib/fs-helpers/is-hidden.test.d.ts +2 -0
  135. package/dist/__tests__/lib/fs-helpers/is-hidden.test.d.ts.map +1 -0
  136. package/dist/__tests__/lib/fs-helpers/is-hidden.test.js +7 -0
  137. package/dist/__tests__/lib/fs-helpers/is-hidden.test.js.map +1 -0
  138. package/dist/__tests__/lib/fs-helpers/is-probably-binary.test.d.ts +2 -0
  139. package/dist/__tests__/lib/fs-helpers/is-probably-binary.test.d.ts.map +1 -0
  140. package/dist/__tests__/lib/fs-helpers/is-probably-binary.test.js +33 -0
  141. package/dist/__tests__/lib/fs-helpers/is-probably-binary.test.js.map +1 -0
  142. package/dist/__tests__/lib/fs-helpers/read-file-edge-cases.test.d.ts +2 -0
  143. package/dist/__tests__/lib/fs-helpers/read-file-edge-cases.test.d.ts.map +1 -0
  144. package/dist/__tests__/lib/fs-helpers/read-file-edge-cases.test.js +57 -0
  145. package/dist/__tests__/lib/fs-helpers/read-file-edge-cases.test.js.map +1 -0
  146. package/dist/__tests__/lib/fs-helpers/read-file.test.d.ts +2 -0
  147. package/dist/__tests__/lib/fs-helpers/read-file.test.d.ts.map +1 -0
  148. package/dist/__tests__/lib/fs-helpers/read-file.test.js +21 -0
  149. package/dist/__tests__/lib/fs-helpers/read-file.test.js.map +1 -0
  150. package/dist/__tests__/lib/fs-helpers/tail-file-edge-cases.test.d.ts +2 -0
  151. package/dist/__tests__/lib/fs-helpers/tail-file-edge-cases.test.d.ts.map +1 -0
  152. package/dist/__tests__/lib/fs-helpers/tail-file-edge-cases.test.js +26 -0
  153. package/dist/__tests__/lib/fs-helpers/tail-file-edge-cases.test.js.map +1 -0
  154. package/dist/__tests__/lib/fs-helpers/tail-file.test.d.ts +2 -0
  155. package/dist/__tests__/lib/fs-helpers/tail-file.test.d.ts.map +1 -0
  156. package/dist/__tests__/lib/fs-helpers/tail-file.test.js +11 -0
  157. package/dist/__tests__/lib/fs-helpers/tail-file.test.js.map +1 -0
  158. package/dist/__tests__/lib/fs-helpers/utf8.test.d.ts +2 -0
  159. package/dist/__tests__/lib/fs-helpers/utf8.test.d.ts.map +1 -0
  160. package/dist/__tests__/lib/fs-helpers/utf8.test.js +43 -0
  161. package/dist/__tests__/lib/fs-helpers/utf8.test.js.map +1 -0
  162. package/dist/__tests__/lib/fs-helpers.test.d.ts +2 -0
  163. package/dist/__tests__/lib/fs-helpers.test.d.ts.map +1 -0
  164. package/dist/__tests__/lib/fs-helpers.test.js +183 -0
  165. package/dist/__tests__/lib/fs-helpers.test.js.map +1 -0
  166. package/dist/__tests__/lib/path-validation-errors.test.d.ts +2 -0
  167. package/dist/__tests__/lib/path-validation-errors.test.d.ts.map +1 -0
  168. package/dist/__tests__/lib/path-validation-errors.test.js +35 -0
  169. package/dist/__tests__/lib/path-validation-errors.test.js.map +1 -0
  170. package/dist/__tests__/lib/path-validation-roots.test.d.ts +2 -0
  171. package/dist/__tests__/lib/path-validation-roots.test.d.ts.map +1 -0
  172. package/dist/__tests__/lib/path-validation-roots.test.js +42 -0
  173. package/dist/__tests__/lib/path-validation-roots.test.js.map +1 -0
  174. package/dist/__tests__/lib/path-validation.test.d.ts +2 -0
  175. package/dist/__tests__/lib/path-validation.test.d.ts.map +1 -0
  176. package/dist/__tests__/lib/path-validation.test.js +127 -0
  177. package/dist/__tests__/lib/path-validation.test.js.map +1 -0
  178. package/dist/__tests__/schemas/validators.test.d.ts +2 -0
  179. package/dist/__tests__/schemas/validators.test.d.ts.map +1 -0
  180. package/dist/__tests__/schemas/validators.test.js +114 -0
  181. package/dist/__tests__/schemas/validators.test.js.map +1 -0
  182. package/dist/__tests__/security/filesystem-boundary.test.d.ts +2 -0
  183. package/dist/__tests__/security/filesystem-boundary.test.d.ts.map +1 -0
  184. package/dist/__tests__/security/filesystem-boundary.test.js +64 -0
  185. package/dist/__tests__/security/filesystem-boundary.test.js.map +1 -0
  186. package/dist/config/formatting.d.ts +7 -0
  187. package/dist/config/formatting.d.ts.map +1 -0
  188. package/dist/config/formatting.js +18 -0
  189. package/dist/config/formatting.js.map +1 -0
  190. package/dist/config/types.d.ts +111 -0
  191. package/dist/config/types.d.ts.map +1 -0
  192. package/dist/config/types.js +14 -0
  193. package/dist/config/types.js.map +1 -0
  194. package/dist/index.d.ts +3 -0
  195. package/dist/index.d.ts.map +1 -0
  196. package/dist/index.js +72 -0
  197. package/dist/index.js.map +1 -0
  198. package/dist/instructions.md +213 -0
  199. package/dist/lib/constants/binary-extensions.d.ts +2 -0
  200. package/dist/lib/constants/binary-extensions.d.ts.map +1 -0
  201. package/dist/lib/constants/binary-extensions.js +43 -0
  202. package/dist/lib/constants/binary-extensions.js.map +1 -0
  203. package/dist/lib/constants/exclude-patterns.d.ts +2 -0
  204. package/dist/lib/constants/exclude-patterns.d.ts.map +1 -0
  205. package/dist/lib/constants/exclude-patterns.js +26 -0
  206. package/dist/lib/constants/exclude-patterns.js.map +1 -0
  207. package/dist/lib/constants/mime-types.d.ts +2 -0
  208. package/dist/lib/constants/mime-types.d.ts.map +1 -0
  209. package/dist/lib/constants/mime-types.js +63 -0
  210. package/dist/lib/constants/mime-types.js.map +1 -0
  211. package/dist/lib/constants.d.ts +19 -0
  212. package/dist/lib/constants.d.ts.map +1 -0
  213. package/dist/lib/constants.js +41 -0
  214. package/dist/lib/constants.js.map +1 -0
  215. package/dist/lib/errors.d.ts +21 -0
  216. package/dist/lib/errors.d.ts.map +1 -0
  217. package/dist/lib/errors.js +141 -0
  218. package/dist/lib/errors.js.map +1 -0
  219. package/dist/lib/file-operations/analyze-directory-helpers.d.ts +24 -0
  220. package/dist/lib/file-operations/analyze-directory-helpers.d.ts.map +1 -0
  221. package/dist/lib/file-operations/analyze-directory-helpers.js +50 -0
  222. package/dist/lib/file-operations/analyze-directory-helpers.js.map +1 -0
  223. package/dist/lib/file-operations/analyze-directory.d.ts +10 -0
  224. package/dist/lib/file-operations/analyze-directory.d.ts.map +1 -0
  225. package/dist/lib/file-operations/analyze-directory.js +120 -0
  226. package/dist/lib/file-operations/analyze-directory.js.map +1 -0
  227. package/dist/lib/file-operations/batch-results.d.ts +13 -0
  228. package/dist/lib/file-operations/batch-results.d.ts.map +1 -0
  229. package/dist/lib/file-operations/batch-results.js +23 -0
  230. package/dist/lib/file-operations/batch-results.js.map +1 -0
  231. package/dist/lib/file-operations/compute-checksums.d.ts +10 -0
  232. package/dist/lib/file-operations/compute-checksums.d.ts.map +1 -0
  233. package/dist/lib/file-operations/compute-checksums.js +134 -0
  234. package/dist/lib/file-operations/compute-checksums.js.map +1 -0
  235. package/dist/lib/file-operations/directory-helpers.d.ts +18 -0
  236. package/dist/lib/file-operations/directory-helpers.d.ts.map +1 -0
  237. package/dist/lib/file-operations/directory-helpers.js +80 -0
  238. package/dist/lib/file-operations/directory-helpers.js.map +1 -0
  239. package/dist/lib/file-operations/directory-items.d.ts +20 -0
  240. package/dist/lib/file-operations/directory-items.d.ts.map +1 -0
  241. package/dist/lib/file-operations/directory-items.js +85 -0
  242. package/dist/lib/file-operations/directory-items.js.map +1 -0
  243. package/dist/lib/file-operations/directory-iteration.d.ts +17 -0
  244. package/dist/lib/file-operations/directory-iteration.d.ts.map +1 -0
  245. package/dist/lib/file-operations/directory-iteration.js +55 -0
  246. package/dist/lib/file-operations/directory-iteration.js.map +1 -0
  247. package/dist/lib/file-operations/directory-tree-builders.d.ts +7 -0
  248. package/dist/lib/file-operations/directory-tree-builders.d.ts.map +1 -0
  249. package/dist/lib/file-operations/directory-tree-builders.js +58 -0
  250. package/dist/lib/file-operations/directory-tree-builders.js.map +1 -0
  251. package/dist/lib/file-operations/directory-tree-helpers.d.ts +33 -0
  252. package/dist/lib/file-operations/directory-tree-helpers.d.ts.map +1 -0
  253. package/dist/lib/file-operations/directory-tree-helpers.js +124 -0
  254. package/dist/lib/file-operations/directory-tree-helpers.js.map +1 -0
  255. package/dist/lib/file-operations/directory-tree.d.ts +10 -0
  256. package/dist/lib/file-operations/directory-tree.d.ts.map +1 -0
  257. package/dist/lib/file-operations/directory-tree.js +60 -0
  258. package/dist/lib/file-operations/directory-tree.js.map +1 -0
  259. package/dist/lib/file-operations/file-info.d.ts +6 -0
  260. package/dist/lib/file-operations/file-info.d.ts.map +1 -0
  261. package/dist/lib/file-operations/file-info.js +80 -0
  262. package/dist/lib/file-operations/file-info.js.map +1 -0
  263. package/dist/lib/file-operations/get-multiple-file-info.d.ts +8 -0
  264. package/dist/lib/file-operations/get-multiple-file-info.d.ts.map +1 -0
  265. package/dist/lib/file-operations/get-multiple-file-info.js +76 -0
  266. package/dist/lib/file-operations/get-multiple-file-info.js.map +1 -0
  267. package/dist/lib/file-operations/glob-engine.d.ts +27 -0
  268. package/dist/lib/file-operations/glob-engine.d.ts.map +1 -0
  269. package/dist/lib/file-operations/glob-engine.js +51 -0
  270. package/dist/lib/file-operations/glob-engine.js.map +1 -0
  271. package/dist/lib/file-operations/list-directory-entry.d.ts +20 -0
  272. package/dist/lib/file-operations/list-directory-entry.d.ts.map +1 -0
  273. package/dist/lib/file-operations/list-directory-entry.js +44 -0
  274. package/dist/lib/file-operations/list-directory-entry.js.map +1 -0
  275. package/dist/lib/file-operations/list-directory-helpers.d.ts +21 -0
  276. package/dist/lib/file-operations/list-directory-helpers.d.ts.map +1 -0
  277. package/dist/lib/file-operations/list-directory-helpers.js +103 -0
  278. package/dist/lib/file-operations/list-directory-helpers.js.map +1 -0
  279. package/dist/lib/file-operations/list-directory-matching.d.ts +6 -0
  280. package/dist/lib/file-operations/list-directory-matching.d.ts.map +1 -0
  281. package/dist/lib/file-operations/list-directory-matching.js +94 -0
  282. package/dist/lib/file-operations/list-directory-matching.js.map +1 -0
  283. package/dist/lib/file-operations/list-directory.d.ts +4 -0
  284. package/dist/lib/file-operations/list-directory.d.ts.map +1 -0
  285. package/dist/lib/file-operations/list-directory.js +16 -0
  286. package/dist/lib/file-operations/list-directory.js.map +1 -0
  287. package/dist/lib/file-operations/pattern-complexity.d.ts +16 -0
  288. package/dist/lib/file-operations/pattern-complexity.d.ts.map +1 -0
  289. package/dist/lib/file-operations/pattern-complexity.js +86 -0
  290. package/dist/lib/file-operations/pattern-complexity.js.map +1 -0
  291. package/dist/lib/file-operations/pattern-validator.d.ts +5 -0
  292. package/dist/lib/file-operations/pattern-validator.d.ts.map +1 -0
  293. package/dist/lib/file-operations/pattern-validator.js +70 -0
  294. package/dist/lib/file-operations/pattern-validator.js.map +1 -0
  295. package/dist/lib/file-operations/read-media-file.d.ts +5 -0
  296. package/dist/lib/file-operations/read-media-file.d.ts.map +1 -0
  297. package/dist/lib/file-operations/read-media-file.js +35 -0
  298. package/dist/lib/file-operations/read-media-file.js.map +1 -0
  299. package/dist/lib/file-operations/read-multiple-budget.d.ts +12 -0
  300. package/dist/lib/file-operations/read-multiple-budget.d.ts.map +1 -0
  301. package/dist/lib/file-operations/read-multiple-budget.js +40 -0
  302. package/dist/lib/file-operations/read-multiple-budget.js.map +1 -0
  303. package/dist/lib/file-operations/read-multiple-files-helpers.d.ts +47 -0
  304. package/dist/lib/file-operations/read-multiple-files-helpers.d.ts.map +1 -0
  305. package/dist/lib/file-operations/read-multiple-files-helpers.js +52 -0
  306. package/dist/lib/file-operations/read-multiple-files-helpers.js.map +1 -0
  307. package/dist/lib/file-operations/read-multiple-files.d.ts +3 -0
  308. package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -0
  309. package/dist/lib/file-operations/read-multiple-files.js +64 -0
  310. package/dist/lib/file-operations/read-multiple-files.js.map +1 -0
  311. package/dist/lib/file-operations/read-multiple-utils.d.ts +78 -0
  312. package/dist/lib/file-operations/read-multiple-utils.d.ts.map +1 -0
  313. package/dist/lib/file-operations/read-multiple-utils.js +120 -0
  314. package/dist/lib/file-operations/read-multiple-utils.js.map +1 -0
  315. package/dist/lib/file-operations/search/context-manager.d.ts +19 -0
  316. package/dist/lib/file-operations/search/context-manager.d.ts.map +1 -0
  317. package/dist/lib/file-operations/search/context-manager.js +82 -0
  318. package/dist/lib/file-operations/search/context-manager.js.map +1 -0
  319. package/dist/lib/file-operations/search/engine-options.d.ts +19 -0
  320. package/dist/lib/file-operations/search/engine-options.d.ts.map +1 -0
  321. package/dist/lib/file-operations/search/engine-options.js +25 -0
  322. package/dist/lib/file-operations/search/engine-options.js.map +1 -0
  323. package/dist/lib/file-operations/search/engine-stream-state.d.ts +17 -0
  324. package/dist/lib/file-operations/search/engine-stream-state.d.ts.map +1 -0
  325. package/dist/lib/file-operations/search/engine-stream-state.js +122 -0
  326. package/dist/lib/file-operations/search/engine-stream-state.js.map +1 -0
  327. package/dist/lib/file-operations/search/engine-stream.d.ts +6 -0
  328. package/dist/lib/file-operations/search/engine-stream.d.ts.map +1 -0
  329. package/dist/lib/file-operations/search/engine-stream.js +158 -0
  330. package/dist/lib/file-operations/search/engine-stream.js.map +1 -0
  331. package/dist/lib/file-operations/search/engine.d.ts +4 -0
  332. package/dist/lib/file-operations/search/engine.d.ts.map +1 -0
  333. package/dist/lib/file-operations/search/engine.js +111 -0
  334. package/dist/lib/file-operations/search/engine.js.map +1 -0
  335. package/dist/lib/file-operations/search/file-processor.d.ts +4 -0
  336. package/dist/lib/file-operations/search/file-processor.d.ts.map +1 -0
  337. package/dist/lib/file-operations/search/file-processor.js +148 -0
  338. package/dist/lib/file-operations/search/file-processor.js.map +1 -0
  339. package/dist/lib/file-operations/search/line-iterator.d.ts +3 -0
  340. package/dist/lib/file-operations/search/line-iterator.d.ts.map +1 -0
  341. package/dist/lib/file-operations/search/line-iterator.js +86 -0
  342. package/dist/lib/file-operations/search/line-iterator.js.map +1 -0
  343. package/dist/lib/file-operations/search/match-strategy.d.ts +8 -0
  344. package/dist/lib/file-operations/search/match-strategy.d.ts.map +1 -0
  345. package/dist/lib/file-operations/search/match-strategy.js +111 -0
  346. package/dist/lib/file-operations/search/match-strategy.js.map +1 -0
  347. package/dist/lib/file-operations/search/options.d.ts +23 -0
  348. package/dist/lib/file-operations/search/options.d.ts.map +1 -0
  349. package/dist/lib/file-operations/search/options.js +25 -0
  350. package/dist/lib/file-operations/search/options.js.map +1 -0
  351. package/dist/lib/file-operations/search/scan-collector.d.ts +20 -0
  352. package/dist/lib/file-operations/search/scan-collector.d.ts.map +1 -0
  353. package/dist/lib/file-operations/search/scan-collector.js +82 -0
  354. package/dist/lib/file-operations/search/scan-collector.js.map +1 -0
  355. package/dist/lib/file-operations/search/scan-file.d.ts +11 -0
  356. package/dist/lib/file-operations/search/scan-file.d.ts.map +1 -0
  357. package/dist/lib/file-operations/search/scan-file.js +84 -0
  358. package/dist/lib/file-operations/search/scan-file.js.map +1 -0
  359. package/dist/lib/file-operations/search/scan-helpers.d.ts +42 -0
  360. package/dist/lib/file-operations/search/scan-helpers.d.ts.map +1 -0
  361. package/dist/lib/file-operations/search/scan-helpers.js +56 -0
  362. package/dist/lib/file-operations/search/scan-helpers.js.map +1 -0
  363. package/dist/lib/file-operations/search/scan-runner.d.ts +14 -0
  364. package/dist/lib/file-operations/search/scan-runner.d.ts.map +1 -0
  365. package/dist/lib/file-operations/search/scan-runner.js +106 -0
  366. package/dist/lib/file-operations/search/scan-runner.js.map +1 -0
  367. package/dist/lib/file-operations/search/scan-strategy-parallel.d.ts +5 -0
  368. package/dist/lib/file-operations/search/scan-strategy-parallel.d.ts.map +1 -0
  369. package/dist/lib/file-operations/search/scan-strategy-parallel.js +136 -0
  370. package/dist/lib/file-operations/search/scan-strategy-parallel.js.map +1 -0
  371. package/dist/lib/file-operations/search/scan-strategy-shared.d.ts +12 -0
  372. package/dist/lib/file-operations/search/scan-strategy-shared.d.ts.map +1 -0
  373. package/dist/lib/file-operations/search/scan-strategy-shared.js +25 -0
  374. package/dist/lib/file-operations/search/scan-strategy-shared.js.map +1 -0
  375. package/dist/lib/file-operations/search/scan-strategy.d.ts +5 -0
  376. package/dist/lib/file-operations/search/scan-strategy.d.ts.map +1 -0
  377. package/dist/lib/file-operations/search/scan-strategy.js +27 -0
  378. package/dist/lib/file-operations/search/scan-strategy.js.map +1 -0
  379. package/dist/lib/file-operations/search/scan-types.d.ts +19 -0
  380. package/dist/lib/file-operations/search/scan-types.d.ts.map +1 -0
  381. package/dist/lib/file-operations/search/scan-types.js +2 -0
  382. package/dist/lib/file-operations/search/scan-types.js.map +1 -0
  383. package/dist/lib/file-operations/search/search-worker.d.ts +30 -0
  384. package/dist/lib/file-operations/search/search-worker.d.ts.map +1 -0
  385. package/dist/lib/file-operations/search/search-worker.js +112 -0
  386. package/dist/lib/file-operations/search/search-worker.js.map +1 -0
  387. package/dist/lib/file-operations/search/types.d.ts +39 -0
  388. package/dist/lib/file-operations/search/types.d.ts.map +1 -0
  389. package/dist/lib/file-operations/search/types.js +2 -0
  390. package/dist/lib/file-operations/search/types.js.map +1 -0
  391. package/dist/lib/file-operations/search/worker-client.d.ts +20 -0
  392. package/dist/lib/file-operations/search/worker-client.d.ts.map +1 -0
  393. package/dist/lib/file-operations/search/worker-client.js +144 -0
  394. package/dist/lib/file-operations/search/worker-client.js.map +1 -0
  395. package/dist/lib/file-operations/search/worker-pool-helpers.d.ts +10 -0
  396. package/dist/lib/file-operations/search/worker-pool-helpers.d.ts.map +1 -0
  397. package/dist/lib/file-operations/search/worker-pool-helpers.js +69 -0
  398. package/dist/lib/file-operations/search/worker-pool-helpers.js.map +1 -0
  399. package/dist/lib/file-operations/search/worker-pool-manager.d.ts +3 -0
  400. package/dist/lib/file-operations/search/worker-pool-manager.d.ts.map +1 -0
  401. package/dist/lib/file-operations/search/worker-pool-manager.js +21 -0
  402. package/dist/lib/file-operations/search/worker-pool-manager.js.map +1 -0
  403. package/dist/lib/file-operations/search/worker-pool-types.d.ts +39 -0
  404. package/dist/lib/file-operations/search/worker-pool-types.d.ts.map +1 -0
  405. package/dist/lib/file-operations/search/worker-pool-types.js +2 -0
  406. package/dist/lib/file-operations/search/worker-pool-types.js.map +1 -0
  407. package/dist/lib/file-operations/search/worker-pool.d.ts +28 -0
  408. package/dist/lib/file-operations/search/worker-pool.d.ts.map +1 -0
  409. package/dist/lib/file-operations/search/worker-pool.js +154 -0
  410. package/dist/lib/file-operations/search/worker-pool.js.map +1 -0
  411. package/dist/lib/file-operations/search/worker-scan.d.ts +26 -0
  412. package/dist/lib/file-operations/search/worker-scan.d.ts.map +1 -0
  413. package/dist/lib/file-operations/search/worker-scan.js +24 -0
  414. package/dist/lib/file-operations/search/worker-scan.js.map +1 -0
  415. package/dist/lib/file-operations/search/worker.d.ts +23 -0
  416. package/dist/lib/file-operations/search/worker.d.ts.map +1 -0
  417. package/dist/lib/file-operations/search/worker.js +28 -0
  418. package/dist/lib/file-operations/search/worker.js.map +1 -0
  419. package/dist/lib/file-operations/search-content.d.ts +19 -0
  420. package/dist/lib/file-operations/search-content.d.ts.map +1 -0
  421. package/dist/lib/file-operations/search-content.js +5 -0
  422. package/dist/lib/file-operations/search-content.js.map +1 -0
  423. package/dist/lib/file-operations/search-definitions/matchers.d.ts +12 -0
  424. package/dist/lib/file-operations/search-definitions/matchers.d.ts.map +1 -0
  425. package/dist/lib/file-operations/search-definitions/matchers.js +122 -0
  426. package/dist/lib/file-operations/search-definitions/matchers.js.map +1 -0
  427. package/dist/lib/file-operations/search-definitions/patterns.d.ts +14 -0
  428. package/dist/lib/file-operations/search-definitions/patterns.d.ts.map +1 -0
  429. package/dist/lib/file-operations/search-definitions/patterns.js +83 -0
  430. package/dist/lib/file-operations/search-definitions/patterns.js.map +1 -0
  431. package/dist/lib/file-operations/search-definitions.d.ts +6 -0
  432. package/dist/lib/file-operations/search-definitions.d.ts.map +1 -0
  433. package/dist/lib/file-operations/search-definitions.js +42 -0
  434. package/dist/lib/file-operations/search-definitions.js.map +1 -0
  435. package/dist/lib/file-operations/search-files-collector.d.ts +10 -0
  436. package/dist/lib/file-operations/search-files-collector.d.ts.map +1 -0
  437. package/dist/lib/file-operations/search-files-collector.js +111 -0
  438. package/dist/lib/file-operations/search-files-collector.js.map +1 -0
  439. package/dist/lib/file-operations/search-files-helpers.d.ts +17 -0
  440. package/dist/lib/file-operations/search-files-helpers.d.ts.map +1 -0
  441. package/dist/lib/file-operations/search-files-helpers.js +16 -0
  442. package/dist/lib/file-operations/search-files-helpers.js.map +1 -0
  443. package/dist/lib/file-operations/search-files-options.d.ts +33 -0
  444. package/dist/lib/file-operations/search-files-options.d.ts.map +1 -0
  445. package/dist/lib/file-operations/search-files-options.js +33 -0
  446. package/dist/lib/file-operations/search-files-options.js.map +1 -0
  447. package/dist/lib/file-operations/search-files-state.d.ts +12 -0
  448. package/dist/lib/file-operations/search-files-state.d.ts.map +1 -0
  449. package/dist/lib/file-operations/search-files-state.js +26 -0
  450. package/dist/lib/file-operations/search-files-state.js.map +1 -0
  451. package/dist/lib/file-operations/search-files-stream-processor.d.ts +7 -0
  452. package/dist/lib/file-operations/search-files-stream-processor.d.ts.map +1 -0
  453. package/dist/lib/file-operations/search-files-stream-processor.js +171 -0
  454. package/dist/lib/file-operations/search-files-stream-processor.js.map +1 -0
  455. package/dist/lib/file-operations/search-files-stream-types.d.ts +6 -0
  456. package/dist/lib/file-operations/search-files-stream-types.d.ts.map +1 -0
  457. package/dist/lib/file-operations/search-files-stream-types.js +2 -0
  458. package/dist/lib/file-operations/search-files-stream-types.js.map +1 -0
  459. package/dist/lib/file-operations/search-files-stream.d.ts +9 -0
  460. package/dist/lib/file-operations/search-files-stream.d.ts.map +1 -0
  461. package/dist/lib/file-operations/search-files-stream.js +74 -0
  462. package/dist/lib/file-operations/search-files-stream.js.map +1 -0
  463. package/dist/lib/file-operations/search-files.d.ts +4 -0
  464. package/dist/lib/file-operations/search-files.d.ts.map +1 -0
  465. package/dist/lib/file-operations/search-files.js +31 -0
  466. package/dist/lib/file-operations/search-files.js.map +1 -0
  467. package/dist/lib/file-operations/sorting.d.ts +9 -0
  468. package/dist/lib/file-operations/sorting.d.ts.map +1 -0
  469. package/dist/lib/file-operations/sorting.js +51 -0
  470. package/dist/lib/file-operations/sorting.js.map +1 -0
  471. package/dist/lib/file-operations/stream-control.d.ts +15 -0
  472. package/dist/lib/file-operations/stream-control.d.ts.map +1 -0
  473. package/dist/lib/file-operations/stream-control.js +60 -0
  474. package/dist/lib/file-operations/stream-control.js.map +1 -0
  475. package/dist/lib/file-operations.d.ts +8 -0
  476. package/dist/lib/file-operations.d.ts.map +1 -0
  477. package/dist/lib/file-operations.js +8 -0
  478. package/dist/lib/file-operations.js.map +1 -0
  479. package/dist/lib/fs-helpers/abort.d.ts +7 -0
  480. package/dist/lib/fs-helpers/abort.d.ts.map +1 -0
  481. package/dist/lib/fs-helpers/abort.js +109 -0
  482. package/dist/lib/fs-helpers/abort.js.map +1 -0
  483. package/dist/lib/fs-helpers/binary-detect.d.ts +3 -0
  484. package/dist/lib/fs-helpers/binary-detect.d.ts.map +1 -0
  485. package/dist/lib/fs-helpers/binary-detect.js +60 -0
  486. package/dist/lib/fs-helpers/binary-detect.js.map +1 -0
  487. package/dist/lib/fs-helpers/concurrency.d.ts +10 -0
  488. package/dist/lib/fs-helpers/concurrency.d.ts.map +1 -0
  489. package/dist/lib/fs-helpers/concurrency.js +106 -0
  490. package/dist/lib/fs-helpers/concurrency.js.map +1 -0
  491. package/dist/lib/fs-helpers/fs-utils.d.ts +5 -0
  492. package/dist/lib/fs-helpers/fs-utils.d.ts.map +1 -0
  493. package/dist/lib/fs-helpers/fs-utils.js +13 -0
  494. package/dist/lib/fs-helpers/fs-utils.js.map +1 -0
  495. package/dist/lib/fs-helpers/readers/binary-check.d.ts +3 -0
  496. package/dist/lib/fs-helpers/readers/binary-check.d.ts.map +1 -0
  497. package/dist/lib/fs-helpers/readers/binary-check.js +11 -0
  498. package/dist/lib/fs-helpers/readers/binary-check.js.map +1 -0
  499. package/dist/lib/fs-helpers/readers/head-file.d.ts +3 -0
  500. package/dist/lib/fs-helpers/readers/head-file.d.ts.map +1 -0
  501. package/dist/lib/fs-helpers/readers/head-file.js +21 -0
  502. package/dist/lib/fs-helpers/readers/head-file.js.map +1 -0
  503. package/dist/lib/fs-helpers/readers/line-range.d.ts +9 -0
  504. package/dist/lib/fs-helpers/readers/line-range.d.ts.map +1 -0
  505. package/dist/lib/fs-helpers/readers/line-range.js +86 -0
  506. package/dist/lib/fs-helpers/readers/line-range.js.map +1 -0
  507. package/dist/lib/fs-helpers/readers/read-buffer.d.ts +3 -0
  508. package/dist/lib/fs-helpers/readers/read-buffer.d.ts.map +1 -0
  509. package/dist/lib/fs-helpers/readers/read-buffer.js +43 -0
  510. package/dist/lib/fs-helpers/readers/read-buffer.js.map +1 -0
  511. package/dist/lib/fs-helpers/readers/read-file-content.d.ts +16 -0
  512. package/dist/lib/fs-helpers/readers/read-file-content.d.ts.map +1 -0
  513. package/dist/lib/fs-helpers/readers/read-file-content.js +29 -0
  514. package/dist/lib/fs-helpers/readers/read-file-content.js.map +1 -0
  515. package/dist/lib/fs-helpers/readers/read-file-types.d.ts +40 -0
  516. package/dist/lib/fs-helpers/readers/read-file-types.d.ts.map +1 -0
  517. package/dist/lib/fs-helpers/readers/read-file-types.js +2 -0
  518. package/dist/lib/fs-helpers/readers/read-file-types.js.map +1 -0
  519. package/dist/lib/fs-helpers/readers/read-file-utils.d.ts +43 -0
  520. package/dist/lib/fs-helpers/readers/read-file-utils.d.ts.map +1 -0
  521. package/dist/lib/fs-helpers/readers/read-file-utils.js +128 -0
  522. package/dist/lib/fs-helpers/readers/read-file-utils.js.map +1 -0
  523. package/dist/lib/fs-helpers/readers/read-file.d.ts +5 -0
  524. package/dist/lib/fs-helpers/readers/read-file.d.ts.map +1 -0
  525. package/dist/lib/fs-helpers/readers/read-file.js +42 -0
  526. package/dist/lib/fs-helpers/readers/read-file.js.map +1 -0
  527. package/dist/lib/fs-helpers/readers/read-modes.d.ts +5 -0
  528. package/dist/lib/fs-helpers/readers/read-modes.d.ts.map +1 -0
  529. package/dist/lib/fs-helpers/readers/read-modes.js +59 -0
  530. package/dist/lib/fs-helpers/readers/read-modes.js.map +1 -0
  531. package/dist/lib/fs-helpers/readers/read-options.d.ts +28 -0
  532. package/dist/lib/fs-helpers/readers/read-options.d.ts.map +1 -0
  533. package/dist/lib/fs-helpers/readers/read-options.js +16 -0
  534. package/dist/lib/fs-helpers/readers/read-options.js.map +1 -0
  535. package/dist/lib/fs-helpers/readers/stream-lines.d.ts +7 -0
  536. package/dist/lib/fs-helpers/readers/stream-lines.d.ts.map +1 -0
  537. package/dist/lib/fs-helpers/readers/stream-lines.js +61 -0
  538. package/dist/lib/fs-helpers/readers/stream-lines.js.map +1 -0
  539. package/dist/lib/fs-helpers/readers/tail-file.d.ts +3 -0
  540. package/dist/lib/fs-helpers/readers/tail-file.d.ts.map +1 -0
  541. package/dist/lib/fs-helpers/readers/tail-file.js +94 -0
  542. package/dist/lib/fs-helpers/readers/tail-file.js.map +1 -0
  543. package/dist/lib/fs-helpers/readers/utf8.d.ts +3 -0
  544. package/dist/lib/fs-helpers/readers/utf8.d.ts.map +1 -0
  545. package/dist/lib/fs-helpers/readers/utf8.js +33 -0
  546. package/dist/lib/fs-helpers/readers/utf8.js.map +1 -0
  547. package/dist/lib/fs-helpers/readers.d.ts +4 -0
  548. package/dist/lib/fs-helpers/readers.d.ts.map +1 -0
  549. package/dist/lib/fs-helpers/readers.js +4 -0
  550. package/dist/lib/fs-helpers/readers.js.map +1 -0
  551. package/dist/lib/fs-helpers.d.ts +6 -0
  552. package/dist/lib/fs-helpers.d.ts.map +1 -0
  553. package/dist/lib/fs-helpers.js +6 -0
  554. package/dist/lib/fs-helpers.js.map +1 -0
  555. package/dist/lib/line-range.d.ts +22 -0
  556. package/dist/lib/line-range.d.ts.map +1 -0
  557. package/dist/lib/line-range.js +54 -0
  558. package/dist/lib/line-range.js.map +1 -0
  559. package/dist/lib/merge-defined.d.ts +2 -0
  560. package/dist/lib/merge-defined.d.ts.map +1 -0
  561. package/dist/lib/merge-defined.js +8 -0
  562. package/dist/lib/merge-defined.js.map +1 -0
  563. package/dist/lib/observability/diagnostics.d.ts +15 -0
  564. package/dist/lib/observability/diagnostics.d.ts.map +1 -0
  565. package/dist/lib/observability/diagnostics.js +177 -0
  566. package/dist/lib/observability/diagnostics.js.map +1 -0
  567. package/dist/lib/observability/perf.d.ts +4 -0
  568. package/dist/lib/observability/perf.d.ts.map +1 -0
  569. package/dist/lib/observability/perf.js +8 -0
  570. package/dist/lib/observability/perf.js.map +1 -0
  571. package/dist/lib/path-utils.d.ts +3 -0
  572. package/dist/lib/path-utils.d.ts.map +1 -0
  573. package/dist/lib/path-utils.js +29 -0
  574. package/dist/lib/path-utils.js.map +1 -0
  575. package/dist/lib/path-validation/allowed-directories.d.ts +5 -0
  576. package/dist/lib/path-validation/allowed-directories.d.ts.map +1 -0
  577. package/dist/lib/path-validation/allowed-directories.js +68 -0
  578. package/dist/lib/path-validation/allowed-directories.js.map +1 -0
  579. package/dist/lib/path-validation/errors.d.ts +4 -0
  580. package/dist/lib/path-validation/errors.d.ts.map +1 -0
  581. package/dist/lib/path-validation/errors.js +47 -0
  582. package/dist/lib/path-validation/errors.js.map +1 -0
  583. package/dist/lib/path-validation/path-errors.d.ts +4 -0
  584. package/dist/lib/path-validation/path-errors.d.ts.map +1 -0
  585. package/dist/lib/path-validation/path-errors.js +51 -0
  586. package/dist/lib/path-validation/path-errors.js.map +1 -0
  587. package/dist/lib/path-validation/path-rules.d.ts +3 -0
  588. package/dist/lib/path-validation/path-rules.d.ts.map +1 -0
  589. package/dist/lib/path-validation/path-rules.js +88 -0
  590. package/dist/lib/path-validation/path-rules.js.map +1 -0
  591. package/dist/lib/path-validation/roots.d.ts +3 -0
  592. package/dist/lib/path-validation/roots.d.ts.map +1 -0
  593. package/dist/lib/path-validation/roots.js +56 -0
  594. package/dist/lib/path-validation/roots.js.map +1 -0
  595. package/dist/lib/path-validation/validate-existing.d.ts +10 -0
  596. package/dist/lib/path-validation/validate-existing.d.ts.map +1 -0
  597. package/dist/lib/path-validation/validate-existing.js +71 -0
  598. package/dist/lib/path-validation/validate-existing.js.map +1 -0
  599. package/dist/lib/path-validation/validators.d.ts +10 -0
  600. package/dist/lib/path-validation/validators.d.ts.map +1 -0
  601. package/dist/lib/path-validation/validators.js +113 -0
  602. package/dist/lib/path-validation/validators.js.map +1 -0
  603. package/dist/lib/path-validation.d.ts +6 -0
  604. package/dist/lib/path-validation.d.ts.map +1 -0
  605. package/dist/lib/path-validation.js +6 -0
  606. package/dist/lib/path-validation.js.map +1 -0
  607. package/dist/lib/performance/monitor.d.ts +25 -0
  608. package/dist/lib/performance/monitor.d.ts.map +1 -0
  609. package/dist/lib/performance/monitor.js +84 -0
  610. package/dist/lib/performance/monitor.js.map +1 -0
  611. package/dist/schemas/common.d.ts +14 -0
  612. package/dist/schemas/common.d.ts.map +1 -0
  613. package/dist/schemas/common.js +9 -0
  614. package/dist/schemas/common.js.map +1 -0
  615. package/dist/schemas/error-schema.d.ts +8 -0
  616. package/dist/schemas/error-schema.d.ts.map +1 -0
  617. package/dist/schemas/error-schema.js +8 -0
  618. package/dist/schemas/error-schema.js.map +1 -0
  619. package/dist/schemas/file-type-schema.d.ts +8 -0
  620. package/dist/schemas/file-type-schema.d.ts.map +1 -0
  621. package/dist/schemas/file-type-schema.js +3 -0
  622. package/dist/schemas/file-type-schema.js.map +1 -0
  623. package/dist/schemas/index.d.ts +3 -0
  624. package/dist/schemas/index.d.ts.map +1 -0
  625. package/dist/schemas/index.js +4 -0
  626. package/dist/schemas/index.js.map +1 -0
  627. package/dist/schemas/input-helpers.d.ts +38 -0
  628. package/dist/schemas/input-helpers.d.ts.map +1 -0
  629. package/dist/schemas/input-helpers.js +127 -0
  630. package/dist/schemas/input-helpers.js.map +1 -0
  631. package/dist/schemas/inputs/checksums.d.ts +8 -0
  632. package/dist/schemas/inputs/checksums.d.ts.map +1 -0
  633. package/dist/schemas/inputs/checksums.js +25 -0
  634. package/dist/schemas/inputs/checksums.js.map +1 -0
  635. package/dist/schemas/inputs/directory.d.ts +18 -0
  636. package/dist/schemas/inputs/directory.d.ts.map +1 -0
  637. package/dist/schemas/inputs/directory.js +81 -0
  638. package/dist/schemas/inputs/directory.js.map +1 -0
  639. package/dist/schemas/inputs/file-info.d.ts +8 -0
  640. package/dist/schemas/inputs/file-info.d.ts.map +1 -0
  641. package/dist/schemas/inputs/file-info.js +17 -0
  642. package/dist/schemas/inputs/file-info.js.map +1 -0
  643. package/dist/schemas/inputs/read.d.ts +10 -0
  644. package/dist/schemas/inputs/read.d.ts.map +1 -0
  645. package/dist/schemas/inputs/read.js +20 -0
  646. package/dist/schemas/inputs/read.js.map +1 -0
  647. package/dist/schemas/inputs/roots.d.ts +3 -0
  648. package/dist/schemas/inputs/roots.d.ts.map +1 -0
  649. package/dist/schemas/inputs/roots.js +5 -0
  650. package/dist/schemas/inputs/roots.js.map +1 -0
  651. package/dist/schemas/inputs/search.d.ts +26 -0
  652. package/dist/schemas/inputs/search.d.ts.map +1 -0
  653. package/dist/schemas/inputs/search.js +160 -0
  654. package/dist/schemas/inputs/search.js.map +1 -0
  655. package/dist/schemas/inputs.d.ts +6 -0
  656. package/dist/schemas/inputs.d.ts.map +1 -0
  657. package/dist/schemas/inputs.js +6 -0
  658. package/dist/schemas/inputs.js.map +1 -0
  659. package/dist/schemas/line-range-schemas.d.ts +3 -0
  660. package/dist/schemas/line-range-schemas.d.ts.map +1 -0
  661. package/dist/schemas/line-range-schemas.js +8 -0
  662. package/dist/schemas/line-range-schemas.js.map +1 -0
  663. package/dist/schemas/output-helpers.d.ts +20 -0
  664. package/dist/schemas/output-helpers.d.ts.map +1 -0
  665. package/dist/schemas/output-helpers.js +16 -0
  666. package/dist/schemas/output-helpers.js.map +1 -0
  667. package/dist/schemas/outputs/checksums.d.ts +93 -0
  668. package/dist/schemas/outputs/checksums.d.ts.map +1 -0
  669. package/dist/schemas/outputs/checksums.js +18 -0
  670. package/dist/schemas/outputs/checksums.js.map +1 -0
  671. package/dist/schemas/outputs/directory.d.ts +35 -0
  672. package/dist/schemas/outputs/directory.d.ts.map +1 -0
  673. package/dist/schemas/outputs/directory.js +24 -0
  674. package/dist/schemas/outputs/directory.js.map +1 -0
  675. package/dist/schemas/outputs/file-info.d.ts +65 -0
  676. package/dist/schemas/outputs/file-info.d.ts.map +1 -0
  677. package/dist/schemas/outputs/file-info.js +27 -0
  678. package/dist/schemas/outputs/file-info.js.map +1 -0
  679. package/dist/schemas/outputs/read.d.ts +35 -0
  680. package/dist/schemas/outputs/read.d.ts.map +1 -0
  681. package/dist/schemas/outputs/read.js +30 -0
  682. package/dist/schemas/outputs/read.js.map +1 -0
  683. package/dist/schemas/outputs/search.d.ts +36 -0
  684. package/dist/schemas/outputs/search.d.ts.map +1 -0
  685. package/dist/schemas/outputs/search.js +31 -0
  686. package/dist/schemas/outputs/search.js.map +1 -0
  687. package/dist/schemas/outputs.d.ts +5 -0
  688. package/dist/schemas/outputs.d.ts.map +1 -0
  689. package/dist/schemas/outputs.js +5 -0
  690. package/dist/schemas/outputs.js.map +1 -0
  691. package/dist/server/cli.d.ts +7 -0
  692. package/dist/server/cli.d.ts.map +1 -0
  693. package/dist/server/cli.js +81 -0
  694. package/dist/server/cli.js.map +1 -0
  695. package/dist/server/roots.d.ts +10 -0
  696. package/dist/server/roots.d.ts.map +1 -0
  697. package/dist/server/roots.js +126 -0
  698. package/dist/server/roots.js.map +1 -0
  699. package/dist/server.d.ts +6 -0
  700. package/dist/server.d.ts.map +1 -0
  701. package/dist/server.js +75 -0
  702. package/dist/server.js.map +1 -0
  703. package/dist/tools/analyze-directory.d.ts +3 -0
  704. package/dist/tools/analyze-directory.d.ts.map +1 -0
  705. package/dist/tools/analyze-directory.js +99 -0
  706. package/dist/tools/analyze-directory.js.map +1 -0
  707. package/dist/tools/compute-checksums.d.ts +3 -0
  708. package/dist/tools/compute-checksums.d.ts.map +1 -0
  709. package/dist/tools/compute-checksums.js +69 -0
  710. package/dist/tools/compute-checksums.js.map +1 -0
  711. package/dist/tools/directory-tree.d.ts +3 -0
  712. package/dist/tools/directory-tree.d.ts.map +1 -0
  713. package/dist/tools/directory-tree.js +82 -0
  714. package/dist/tools/directory-tree.js.map +1 -0
  715. package/dist/tools/get-file-info.d.ts +3 -0
  716. package/dist/tools/get-file-info.d.ts.map +1 -0
  717. package/dist/tools/get-file-info.js +46 -0
  718. package/dist/tools/get-file-info.js.map +1 -0
  719. package/dist/tools/get-multiple-file-info.d.ts +3 -0
  720. package/dist/tools/get-multiple-file-info.d.ts.map +1 -0
  721. package/dist/tools/get-multiple-file-info.js +72 -0
  722. package/dist/tools/get-multiple-file-info.js.map +1 -0
  723. package/dist/tools/index.d.ts +3 -0
  724. package/dist/tools/index.d.ts.map +1 -0
  725. package/dist/tools/index.js +19 -0
  726. package/dist/tools/index.js.map +1 -0
  727. package/dist/tools/list-allowed-dirs.d.ts +3 -0
  728. package/dist/tools/list-allowed-dirs.d.ts.map +1 -0
  729. package/dist/tools/list-allowed-dirs.js +41 -0
  730. package/dist/tools/list-allowed-dirs.js.map +1 -0
  731. package/dist/tools/list-directory-formatting.d.ts +5 -0
  732. package/dist/tools/list-directory-formatting.d.ts.map +1 -0
  733. package/dist/tools/list-directory-formatting.js +29 -0
  734. package/dist/tools/list-directory-formatting.js.map +1 -0
  735. package/dist/tools/list-directory.d.ts +3 -0
  736. package/dist/tools/list-directory.d.ts.map +1 -0
  737. package/dist/tools/list-directory.js +77 -0
  738. package/dist/tools/list-directory.js.map +1 -0
  739. package/dist/tools/read-file.d.ts +3 -0
  740. package/dist/tools/read-file.d.ts.map +1 -0
  741. package/dist/tools/read-file.js +52 -0
  742. package/dist/tools/read-file.js.map +1 -0
  743. package/dist/tools/read-media-file.d.ts +3 -0
  744. package/dist/tools/read-media-file.d.ts.map +1 -0
  745. package/dist/tools/read-media-file.js +52 -0
  746. package/dist/tools/read-media-file.js.map +1 -0
  747. package/dist/tools/read-multiple-files.d.ts +3 -0
  748. package/dist/tools/read-multiple-files.d.ts.map +1 -0
  749. package/dist/tools/read-multiple-files.js +69 -0
  750. package/dist/tools/read-multiple-files.js.map +1 -0
  751. package/dist/tools/search-content.d.ts +3 -0
  752. package/dist/tools/search-content.d.ts.map +1 -0
  753. package/dist/tools/search-content.js +74 -0
  754. package/dist/tools/search-content.js.map +1 -0
  755. package/dist/tools/search-definitions.d.ts +3 -0
  756. package/dist/tools/search-definitions.d.ts.map +1 -0
  757. package/dist/tools/search-definitions.js +133 -0
  758. package/dist/tools/search-definitions.js.map +1 -0
  759. package/dist/tools/search-files.d.ts +3 -0
  760. package/dist/tools/search-files.d.ts.map +1 -0
  761. package/dist/tools/search-files.js +68 -0
  762. package/dist/tools/search-files.js.map +1 -0
  763. package/dist/tools/shared/abort.d.ts +5 -0
  764. package/dist/tools/shared/abort.d.ts.map +1 -0
  765. package/dist/tools/shared/abort.js +41 -0
  766. package/dist/tools/shared/abort.js.map +1 -0
  767. package/dist/tools/shared/file-info.d.ts +17 -0
  768. package/dist/tools/shared/file-info.d.ts.map +1 -0
  769. package/dist/tools/shared/file-info.js +33 -0
  770. package/dist/tools/shared/file-info.js.map +1 -0
  771. package/dist/tools/shared/formatting.d.ts +18 -0
  772. package/dist/tools/shared/formatting.d.ts.map +1 -0
  773. package/dist/tools/shared/formatting.js +51 -0
  774. package/dist/tools/shared/formatting.js.map +1 -0
  775. package/dist/tools/shared/read-range.d.ts +7 -0
  776. package/dist/tools/shared/read-range.d.ts.map +1 -0
  777. package/dist/tools/shared/read-range.js +22 -0
  778. package/dist/tools/shared/read-range.js.map +1 -0
  779. package/dist/tools/shared/search-formatting.d.ts +8 -0
  780. package/dist/tools/shared/search-formatting.d.ts.map +1 -0
  781. package/dist/tools/shared/search-formatting.js +80 -0
  782. package/dist/tools/shared/search-formatting.js.map +1 -0
  783. package/dist/tools/shared/with-timed-signal.d.ts +2 -0
  784. package/dist/tools/shared/with-timed-signal.d.ts.map +1 -0
  785. package/dist/tools/shared/with-timed-signal.js +11 -0
  786. package/dist/tools/shared/with-timed-signal.js.map +1 -0
  787. package/dist/tools/tool-response.d.ts +31 -0
  788. package/dist/tools/tool-response.d.ts.map +1 -0
  789. package/dist/tools/tool-response.js +48 -0
  790. package/dist/tools/tool-response.js.map +1 -0
  791. package/package.json +75 -0
package/README.md ADDED
@@ -0,0 +1,482 @@
1
+ # FS Context MCP Server
2
+
3
+ <img src="docs/logo.png" alt="FS Context MCP Server Logo" width="125">
4
+
5
+ A secure, read-only MCP server for filesystem scanning, searching, and analysis with comprehensive security validation.
6
+
7
+ [![npm version](https://img.shields.io/npm/v/@j0hanz/fs-context-mcp.svg)](https://www.npmjs.com/package/@j0hanz/fs-context-mcp)
8
+ [![License](https://img.shields.io/npm/l/@j0hanz/fs-context-mcp)](LICENSE)
9
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen)](https://nodejs.org)
10
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.9.3-blue)](https://www.typescriptlang.org/)
11
+ [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-1.25.1-purple)](https://modelcontextprotocol.io)
12
+
13
+ ## One-Click Install
14
+
15
+ [![Install with NPX in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=fs-context&inputs=%5B%5D&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40j0hanz%2Ffs-context-mcp%40latest%22%2C%22%24%7BworkspaceFolder%7D%22%5D%7D)[![Install with NPX in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=fs-context&inputs=%5B%5D&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40j0hanz%2Ffs-context-mcp%40latest%22%2C%22%24%7BworkspaceFolder%7D%22%5D%7D&quality=insiders)
16
+
17
+ [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=fs-context&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBqMGhhbnovZnMtY29udGV4dC1tY3BAbGF0ZXN0IiwiJHt3b3Jrc3BhY2VGb2xkZXJ9Il19)
18
+
19
+ ## Features
20
+
21
+ - Directory listing (immediate contents)
22
+ - Path search with glob patterns (files and directories)
23
+ - Content search with regex and context lines
24
+ - File reading with head previews (first N lines)
25
+ - Batch reads and metadata lookups in parallel
26
+ - Security: path validation, symlink escape protection, read-only operations
27
+
28
+ ## When to Use
29
+
30
+ | Task | Tool |
31
+ | ------------------------------- | ----------- |
32
+ | Explore project structure | `ls` |
33
+ | Find files or directories | `find` |
34
+ | Search for code patterns/text | `grep` |
35
+ | Read source code | `read` |
36
+ | Batch read multiple files | `read_many` |
37
+ | Get file metadata (size, dates) | `stat` |
38
+ | Batch get file metadata | `stat_many` |
39
+ | Check available directories | `roots` |
40
+
41
+ ## Quick Start
42
+
43
+ ### NPX (recommended)
44
+
45
+ Allow the current working directory explicitly:
46
+
47
+ ```bash
48
+ npx -y @j0hanz/fs-context-mcp@latest --allow-cwd
49
+ ```
50
+
51
+ Or pass explicit directories:
52
+
53
+ ```bash
54
+ npx -y @j0hanz/fs-context-mcp@latest /path/to/project /path/to/docs
55
+ ```
56
+
57
+ If your MCP client supports the Roots protocol, you can omit directory arguments and let the client provide allowed directories. Otherwise, pass explicit directories or use `--allow-cwd` (if neither is provided, the server defaults to the current working directory).
58
+
59
+ ### VS Code (workspace folder)
60
+
61
+ Add to `.vscode/mcp.json`:
62
+
63
+ ```json
64
+ {
65
+ "servers": {
66
+ "fs-context": {
67
+ "command": "npx",
68
+ "args": ["-y", "@j0hanz/fs-context-mcp@latest", "${workspaceFolder}"]
69
+ }
70
+ }
71
+ }
72
+ ```
73
+
74
+ ## Installation
75
+
76
+ ### NPX (no install)
77
+
78
+ ```bash
79
+ npx -y @j0hanz/fs-context-mcp@latest /path/to/dir1 /path/to/dir2
80
+ ```
81
+
82
+ ### Global installation
83
+
84
+ ```bash
85
+ npm install -g @j0hanz/fs-context-mcp
86
+ fs-context-mcp /path/to/your/project
87
+ ```
88
+
89
+ ### From source
90
+
91
+ ```bash
92
+ git clone https://github.com/j0hanz/fs-context-mcp-server.git
93
+ cd fs-context-mcp-server
94
+ npm install
95
+ npm run build
96
+ node dist/index.js /path/to/your/project
97
+ ```
98
+
99
+ ## Directory Access and Resolution
100
+
101
+ Access is always restricted to explicitly allowed directories.
102
+
103
+ 1. CLI directories are validated and added first (if provided).
104
+ 2. `--allow-cwd` optionally adds the current working directory.
105
+ 3. MCP Roots from the client are used next:
106
+ - If CLI and/or `--allow-cwd` are provided, only roots inside those baseline directories are accepted.
107
+ - If no baseline is provided, roots become the allowed directories.
108
+ 4. If nothing is configured and the client provides no roots, the server defaults to the current working directory and logs a warning.
109
+
110
+ Notes:
111
+
112
+ - Windows drive-relative paths like `C:path` are rejected. Use `C:\path` or `C:/path`.
113
+ - Reserved Windows device names (e.g., `CON`, `NUL`) are blocked.
114
+
115
+ ## Configuration
116
+
117
+ All configuration is optional. Sizes in bytes, timeouts in milliseconds.
118
+
119
+ ### Environment Variables
120
+
121
+ | Variable | Default | Description |
122
+ | --------------------------- | ----------------- | --------------------------------------------------------- |
123
+ | `MAX_FILE_SIZE` | 10MB | Max file size for read operations (range: 1MB-100MB) |
124
+ | `MAX_SEARCH_SIZE` | 1MB | Max file size for content search (range: 100KB-10MB) |
125
+ | `DEFAULT_SEARCH_TIMEOUT` | 30000 | Timeout for search/list operations (range: 100-3600000ms) |
126
+ | `FS_CONTEXT_SEARCH_WORKERS` | min(cpu cores, 8) | Search worker threads (range: 1-16) |
127
+
128
+ See [CONFIGURATION.md](CONFIGURATION.md) for examples and CLI usage.
129
+
130
+ ## Tools
131
+
132
+ All tools return both human-readable text and structured JSON. Structured
133
+ responses include `ok`, optional `error` (with `code`, `message`, `path`,
134
+ `suggestion`), plus the tool-specific fields documented below.
135
+
136
+ ### `roots`
137
+
138
+ List all directories that this server can access.
139
+
140
+ | Parameter | Type | Required | Default | Description |
141
+ | --------- | ---- | -------- | ------- | ----------- |
142
+ | (none) | - | - | - | - |
143
+
144
+ Returns: Allowed directory paths. Structured output includes `ok` and
145
+ `directories`.
146
+
147
+ ---
148
+
149
+ ### `ls`
150
+
151
+ List the immediate contents of a directory (non-recursive). Omit `path` to use
152
+ the first allowed root.
153
+
154
+ | Parameter | Type | Required | Default | Description |
155
+ | ----------------------- | -------- | -------- | ------------ | -------------------------------------------------------- |
156
+ | `path` | string | No | `first root` | Directory path to list (omit to use first root) |
157
+ | `includeHidden` | boolean | No | `false` | Include hidden files and directories |
158
+ | `excludePatterns` | string[] | No | `[]` | Glob patterns to exclude |
159
+ | `pattern` | string | No | - | Glob pattern to include (relative, no `..`) |
160
+ | `maxDepth` | number | No | `10` | Maximum depth when using pattern (0-100) |
161
+ | `maxEntries` | number | No | `10000` | Maximum entries to return (1-100000) |
162
+ | `timeoutMs` | number | No | `30000` | Timeout in milliseconds |
163
+ | `sortBy` | string | No | `name` | Sort by: `name`, `size`, `modified`, `type` |
164
+ | `includeSymlinkTargets` | boolean | No | `false` | Include symlink target paths (symlinks are not followed) |
165
+
166
+ Returns: Entries with name, relativePath, type, size, and modified time.
167
+ Structured output includes `ok`, `path`, `entries`, and `totalEntries`.
168
+
169
+ ---
170
+
171
+ ### `find`
172
+
173
+ Search for files using glob patterns. Automatically excludes common dependency/build
174
+ directories (node_modules, dist, .git, etc.). Omit `path` to search from the
175
+ first allowed root.
176
+
177
+ | Parameter | Type | Required | Default | Description |
178
+ | ------------ | ------ | -------- | ------------ | ------------------------------------------------------ |
179
+ | `path` | string | No | `first root` | Base directory to search from (omit to use first root) |
180
+ | `pattern` | string | Yes | - | Glob pattern (e.g., `**/*.ts`, `src/**/*.js`) |
181
+ | `maxResults` | number | No | `100` | Maximum matches to return (1-10000) |
182
+
183
+ Returns: Matching paths (relative) with size and modified date. Structured
184
+ output includes `ok`, `results`, `totalMatches`, and `truncated`.
185
+
186
+ ---
187
+
188
+ ### `read`
189
+
190
+ Read the contents of a text file.
191
+
192
+ | Parameter | Type | Required | Default | Description |
193
+ | --------- | ------ | -------- | ------- | ----------------------- |
194
+ | `path` | string | Yes | - | File path to read |
195
+ | `head` | number | No | - | Read only first N lines |
196
+
197
+ Notes:
198
+
199
+ - Reads are UTF-8 text only; binary files are rejected.
200
+ - Max file size is capped by `MAX_FILE_SIZE` (default 10MB).
201
+
202
+ Returns: File content plus structured metadata (`ok`, `path`, `content`,
203
+ `truncated`, `totalLines`).
204
+
205
+ ---
206
+
207
+ ### `read_many`
208
+
209
+ Read multiple files in parallel.
210
+
211
+ | Parameter | Type | Required | Default | Description |
212
+ | --------- | -------- | -------- | ------- | ------------------------------------ |
213
+ | `paths` | string[] | Yes | - | Array of file paths (max 100) |
214
+ | `head` | number | No | - | Read only first N lines of each file |
215
+
216
+ Notes:
217
+
218
+ - Reads files as UTF-8 text; binary files are not filtered. Max size per file
219
+ is capped by `MAX_FILE_SIZE` (default 10MB).
220
+ - Total read budget across all files is capped at 100MB.
221
+ - No binary detection is performed; use `read` for single-file safety checks.
222
+
223
+ Returns: Per-file content or error, plus structured summary (`total`,
224
+ `succeeded`, `failed`).
225
+
226
+ ---
227
+
228
+ ### `stat`
229
+
230
+ Get detailed metadata about a file or directory.
231
+
232
+ | Parameter | Type | Required | Default | Description |
233
+ | --------- | ------ | -------- | ------- | ------------------------- |
234
+ | `path` | string | Yes | - | Path to file or directory |
235
+
236
+ Returns: name, path, type, size, timestamps (created/modified/accessed),
237
+ permissions, hidden status, MIME type (for files), and symlink target (if
238
+ applicable).
239
+
240
+ ---
241
+
242
+ ### `stat_many`
243
+
244
+ Get metadata for multiple files/directories in parallel.
245
+
246
+ | Parameter | Type | Required | Default | Description |
247
+ | --------- | -------- | -------- | ------- | --------------------------------- |
248
+ | `paths` | string[] | Yes | - | Array of paths to query (max 100) |
249
+
250
+ Returns: Array of file info with individual success/error status, plus summary
251
+ (total, succeeded, failed).
252
+
253
+ ---
254
+
255
+ ### `grep`
256
+
257
+ Search for text content within files using regular expressions. Omit `path` to
258
+ search from the first allowed root.
259
+
260
+ | Parameter | Type | Required | Default | Description |
261
+ | ------------------------ | -------- | -------- | --------------------- | ----------------------------------------------------------------------- |
262
+ | `path` | string | No | `first root` | Base directory to search in (omit to use first root) |
263
+ | `pattern` | string | Yes | - | Regex pattern to search for |
264
+ | `filePattern` | string | No | `**/*` | Glob pattern to filter files |
265
+ | `excludePatterns` | string[] | No | built-in exclude list | Glob patterns to exclude (overrides built-in list) |
266
+ | `caseSensitive` | boolean | No | `false` | Case-sensitive search |
267
+ | `maxResults` | number | No | `100` | Maximum number of results |
268
+ | `maxFileSize` | number | No | 1MB | Maximum file size to scan (default from `MAX_SEARCH_SIZE`) |
269
+ | `maxFilesScanned` | number | No | `20000` | Maximum files to scan before stopping |
270
+ | `timeoutMs` | number | No | `30000` | Timeout in milliseconds |
271
+ | `skipBinary` | boolean | No | `true` | Skip likely-binary files |
272
+ | `includeHidden` | boolean | No | `false` | Include hidden files and directories |
273
+ | `includeIgnored` | boolean | No | `false` | Include ignored dirs (node_modules, dist) and disable built-in excludes |
274
+ | `contextLines` | number | No | `0` | Lines of context before/after match (0-10) |
275
+ | `wholeWord` | boolean | No | `false` | Match whole words only |
276
+ | `isLiteral` | boolean | No | `false` | Treat pattern as literal string (escape regex chars) |
277
+ | `baseNameMatch` | boolean | No | `false` | Match file patterns without slashes against basenames |
278
+ | `caseSensitiveFileMatch` | boolean | No | `true` | Case-sensitive filename matching |
279
+
280
+ Returns: Matching lines with file path, line number, content, and optional
281
+ context. Structured output includes `ok`, `matches`, `totalMatches`, and
282
+ `truncated`.
283
+ Matched line content is trimmed to 200 characters.
284
+
285
+ ---
286
+
287
+ Built-in exclude list includes common dependency/build/output directories and
288
+ files: `node_modules`, `dist`, `build`, `coverage`, `.git`, `.vscode`, `.idea`,
289
+ `.DS_Store`, `.next`, `.nuxt`, `.output`, `.svelte-kit`, `.cache`, `.yarn`,
290
+ `jspm_packages`, `bower_components`, `out`, `tmp`, `.temp`,
291
+ `npm-debug.log`, `yarn-debug.log`, `yarn-error.log`, `Thumbs.db`. Pass
292
+ `excludePatterns: []` or `includeIgnored: true` to disable it.
293
+
294
+ ## Error Codes
295
+
296
+ | Code | Meaning |
297
+ | ----------------------- | ----------------------------- |
298
+ | `E_ACCESS_DENIED` | Path outside allowed roots |
299
+ | `E_NOT_FOUND` | Path does not exist |
300
+ | `E_NOT_FILE` | Expected file, got directory |
301
+ | `E_NOT_DIRECTORY` | Expected directory, got file |
302
+ | `E_TOO_LARGE` | File exceeds size limits |
303
+ | `E_TIMEOUT` | Operation timed out |
304
+ | `E_INVALID_PATTERN` | Invalid glob/regex pattern |
305
+ | `E_INVALID_INPUT` | Invalid argument(s) |
306
+ | `E_PERMISSION_DENIED` | OS-level permission denied |
307
+ | `E_SYMLINK_NOT_ALLOWED` | Symlink escapes allowed roots |
308
+ | `E_UNKNOWN` | Unexpected error |
309
+
310
+ ## Client Configuration
311
+
312
+ <details>
313
+ <summary><b>VS Code</b></summary>
314
+
315
+ Add to `.vscode/mcp.json` (recommended) or `.vscode/settings.json`:
316
+
317
+ ```json
318
+ {
319
+ "servers": {
320
+ "fs-context": {
321
+ "command": "npx",
322
+ "args": ["-y", "@j0hanz/fs-context-mcp@latest", "${workspaceFolder}"]
323
+ }
324
+ }
325
+ }
326
+ ```
327
+
328
+ </details>
329
+
330
+ <details>
331
+ <summary><b>Claude Desktop</b></summary>
332
+
333
+ **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
334
+ **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
335
+
336
+ ```json
337
+ {
338
+ "mcpServers": {
339
+ "fs-context": {
340
+ "command": "npx",
341
+ "args": ["-y", "@j0hanz/fs-context-mcp@latest", "C:\\path\\to\\project"]
342
+ }
343
+ }
344
+ }
345
+ ```
346
+
347
+ If your client supports MCP Roots, you can omit the path. Otherwise, pass a path or `--allow-cwd`.
348
+
349
+ </details>
350
+
351
+ <details>
352
+ <summary><b>Cursor</b></summary>
353
+
354
+ Add to Cursor's MCP configuration:
355
+
356
+ ```json
357
+ {
358
+ "mcpServers": {
359
+ "fs-context": {
360
+ "command": "npx",
361
+ "args": ["-y", "@j0hanz/fs-context-mcp@latest", "${workspaceFolder}"]
362
+ }
363
+ }
364
+ }
365
+ ```
366
+
367
+ </details>
368
+
369
+ <details>
370
+ <summary><b>Codex</b></summary>
371
+
372
+ Add to `~/.codex/config.toml`:
373
+
374
+ ```toml
375
+ [mcp_servers.fs-context]
376
+ command = "npx"
377
+ args = ["-y", "@j0hanz/fs-context-mcp@latest", "/path/to/your/project"]
378
+ ```
379
+
380
+ If your client supports MCP Roots, you can omit the path. Otherwise, pass a path or `--allow-cwd`.
381
+
382
+ </details>
383
+
384
+ <details>
385
+ <summary><b>Windsurf</b></summary>
386
+
387
+ Add to Windsurf's MCP configuration:
388
+
389
+ ```json
390
+ {
391
+ "mcpServers": {
392
+ "fs-context": {
393
+ "command": "npx",
394
+ "args": ["-y", "@j0hanz/fs-context-mcp@latest", "${workspaceFolder}"]
395
+ }
396
+ }
397
+ }
398
+ ```
399
+
400
+ </details>
401
+
402
+ ## Security
403
+
404
+ This server implements multiple layers of security:
405
+
406
+ | Protection | Description |
407
+ | ------------------------- | ------------------------------------------------------------- |
408
+ | Access control | Only explicitly allowed directories are accessible |
409
+ | Path validation | All paths are validated before any filesystem operation |
410
+ | Symlink protection | Symlinks that resolve outside allowed directories are blocked |
411
+ | Path traversal prevention | Attempts to escape via `..` are detected and blocked |
412
+ | Read-only operations | No writes, deletes, or modifications |
413
+ | Safe regex | Regex validation with RE2 prevents ReDoS |
414
+ | Size limits | Configurable limits prevent resource exhaustion |
415
+
416
+ ## Development
417
+
418
+ ### Prerequisites
419
+
420
+ - Node.js >= 20.0.0
421
+ - npm
422
+
423
+ ### Scripts
424
+
425
+ | Command | Description |
426
+ | ----------------------- | ------------------------------------------------------------------ |
427
+ | `npm run build` | Compile TypeScript to JavaScript |
428
+ | `npm run dev` | Watch mode with tsx |
429
+ | `npm run start` | Run compiled server |
430
+ | `npm run test` | Run tests (node --test with tsx/esm) |
431
+ | `npm run test:watch` | Run tests in watch mode (node --test --watch) |
432
+ | `npm run test:coverage` | Run tests with coverage (node --test --experimental-test-coverage) |
433
+ | `npm run test:node` | Run node-tests (isolated checks) |
434
+ | `npm run lint` | Run ESLint |
435
+ | `npm run format` | Format code with Prettier |
436
+ | `npm run type-check` | TypeScript type checking |
437
+ | `npm run inspector` | Test with MCP Inspector |
438
+
439
+ ### Project Structure
440
+
441
+ ```text
442
+ src/
443
+ index.ts # CLI entry point
444
+ server.ts # MCP server wiring and roots handling
445
+ instructions.md # Tool usage instructions (bundled in dist)
446
+ config/ # Shared types and formatting helpers
447
+ lib/ # Core logic and filesystem operations
448
+ schemas/ # Zod input/output schemas
449
+ tools/ # MCP tool registration
450
+ __tests__/ # node:test + tsx tests
451
+ node-tests/ # Isolated Node.js checks
452
+ ```
453
+
454
+ ## Troubleshooting
455
+
456
+ | Issue | Solution |
457
+ | ------------------------ | ---------------------------------------------------------------------------- |
458
+ | "Access denied" error | Ensure the path is within an allowed directory. Use `roots` to check. |
459
+ | "Path does not exist" | Verify the path exists. Use `ls` to explore available files. |
460
+ | "File too large" | Use `head` or increase `MAX_FILE_SIZE`. |
461
+ | "Binary file" warning | `read` only supports UTF-8 text and rejects binary files. |
462
+ | No directories available | Pass explicit paths, use `--allow-cwd`, or ensure the client provides Roots. |
463
+ | Symlink blocked | Symlinks that resolve outside allowed directories are blocked. |
464
+ | Invalid regex/pattern | Simplify the regex or set `isLiteral=true` for exact matches. |
465
+
466
+ ## Contributing
467
+
468
+ Contributions are welcome! Please follow these steps:
469
+
470
+ 1. Fork the repository
471
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
472
+ 3. Run tests and linting (`npm run lint && npm run test`)
473
+ 4. Commit your changes (`git commit -m 'Add amazing feature'`)
474
+ 5. Push to the branch (`git push origin feature/amazing-feature`)
475
+ 6. Open a Pull Request
476
+
477
+ ### Code Style
478
+
479
+ - Use TypeScript with strict mode
480
+ - Follow ESLint configuration
481
+ - Use Prettier for formatting
482
+ - Write tests for new features
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=errors-classify.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-classify.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/errors-classify.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import { expect, it } from 'vitest';
2
+ import { classifyError, ErrorCode, McpError } from '../../lib/errors.js';
3
+ it('classifyError classifies ENOENT messages as not found', () => {
4
+ const error = new Error('ENOENT: no such file or directory');
5
+ expect(classifyError(error)).toBe(ErrorCode.E_NOT_FOUND);
6
+ });
7
+ it('classifyError returns unknown for unrecognized message-only errors', () => {
8
+ const error = new Error('Some random error');
9
+ expect(classifyError(error)).toBe(ErrorCode.E_UNKNOWN);
10
+ });
11
+ it('classifyError handles non-Error objects', () => {
12
+ expect(classifyError('ENOENT error')).toBe(ErrorCode.E_NOT_FOUND);
13
+ expect(classifyError({ message: 'permission denied' })).toBe(ErrorCode.E_UNKNOWN);
14
+ });
15
+ it('classifyError classifies Node.js EACCES error code', () => {
16
+ const error = Object.assign(new Error('permission denied'), {
17
+ code: 'EACCES',
18
+ });
19
+ expect(classifyError(error)).toBe(ErrorCode.E_PERMISSION_DENIED);
20
+ });
21
+ it('classifyError classifies Node.js EPERM error code', () => {
22
+ const error = Object.assign(new Error('operation not permitted'), {
23
+ code: 'EPERM',
24
+ });
25
+ expect(classifyError(error)).toBe(ErrorCode.E_PERMISSION_DENIED);
26
+ });
27
+ it('classifyError classifies Node.js EISDIR error code', () => {
28
+ const error = Object.assign(new Error('is a directory'), { code: 'EISDIR' });
29
+ expect(classifyError(error)).toBe(ErrorCode.E_NOT_FILE);
30
+ });
31
+ it('classifyError classifies Node.js ENOTDIR error code', () => {
32
+ const error = Object.assign(new Error('not a directory'), {
33
+ code: 'ENOTDIR',
34
+ });
35
+ expect(classifyError(error)).toBe(ErrorCode.E_NOT_DIRECTORY);
36
+ });
37
+ it('classifyError classifies Node.js ELOOP error code', () => {
38
+ const error = Object.assign(new Error('too many symbolic links'), {
39
+ code: 'ELOOP',
40
+ });
41
+ expect(classifyError(error)).toBe(ErrorCode.E_SYMLINK_NOT_ALLOWED);
42
+ });
43
+ it('classifyError classifies Node.js ETIMEDOUT error code', () => {
44
+ const error = Object.assign(new Error('operation timed out'), {
45
+ code: 'ETIMEDOUT',
46
+ });
47
+ expect(classifyError(error)).toBe(ErrorCode.E_TIMEOUT);
48
+ });
49
+ it('classifyError classifies McpError directly by its code', () => {
50
+ const error = new McpError(ErrorCode.E_TOO_LARGE, 'File too large', '/path/to/file');
51
+ expect(classifyError(error)).toBe(ErrorCode.E_TOO_LARGE);
52
+ });
53
+ //# sourceMappingURL=errors-classify.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-classify.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/errors-classify.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEzE,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;IAC/D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC7D,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC5E,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC7C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACjD,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAClE,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,CAC1D,SAAS,CAAC,SAAS,CACpB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE;QAC1D,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,EAAE;QAChE,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE;QACxD,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,EAAE;QAChE,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE;QAC5D,IAAI,EAAE,WAAW;KAClB,CAAC,CAAC;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;IAChE,MAAM,KAAK,GAAG,IAAI,QAAQ,CACxB,SAAS,CAAC,WAAW,EACrB,gBAAgB,EAChB,eAAe,CAChB,CAAC;IACF,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=errors-detailed.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-detailed.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/errors-detailed.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ import { expect, it } from 'vitest';
2
+ import { createDetailedError, ErrorCode, formatDetailedError, McpError, } from '../../lib/errors.js';
3
+ it('createDetailedError creates detailed error object', () => {
4
+ const error = new McpError(ErrorCode.E_NOT_FOUND, 'File not found', '/some/path');
5
+ const detailed = createDetailedError(error, '/some/path');
6
+ expect(detailed.code).toBe(ErrorCode.E_NOT_FOUND);
7
+ expect(detailed.message).toBe('File not found');
8
+ expect(detailed.path).toBe('/some/path');
9
+ expect(detailed.suggestion).toBeTruthy();
10
+ });
11
+ it('createDetailedError includes additional details', () => {
12
+ const error = new Error('Error');
13
+ const detailed = createDetailedError(error, '/path', { extra: 'info' });
14
+ expect(detailed.details).toEqual({ extra: 'info' });
15
+ });
16
+ it('formatDetailedError formats error for display', () => {
17
+ const detailed = {
18
+ code: ErrorCode.E_NOT_FOUND,
19
+ message: 'File not found',
20
+ path: '/some/path',
21
+ suggestion: 'Check the path exists',
22
+ };
23
+ const formatted = formatDetailedError(detailed);
24
+ expect(formatted).toContain('E_NOT_FOUND');
25
+ expect(formatted).toContain('File not found');
26
+ expect(formatted).toContain('/some/path');
27
+ expect(formatted).toContain('Check the path exists');
28
+ });
29
+ it('formatDetailedError handles missing optional fields', () => {
30
+ const detailed = {
31
+ code: ErrorCode.E_UNKNOWN,
32
+ message: 'Unknown error',
33
+ };
34
+ const formatted = formatDetailedError(detailed);
35
+ expect(formatted).toContain('E_UNKNOWN');
36
+ expect(formatted).toContain('Unknown error');
37
+ });
38
+ //# sourceMappingURL=errors-detailed.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-detailed.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/errors-detailed.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,mBAAmB,EACnB,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAE7B,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC3D,MAAM,KAAK,GAAG,IAAI,QAAQ,CACxB,SAAS,CAAC,WAAW,EACrB,gBAAgB,EAChB,YAAY,CACb,CAAC;IACF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAE1D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;IACzD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACvD,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,uBAAuB;KACpC,CAAC;IAEF,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC7D,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,SAAS,CAAC,SAAS;QACzB,OAAO,EAAE,eAAe;KACzB,CAAC;IAEF,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=errors-is-node-error.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-is-node-error.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/errors-is-node-error.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { expect, it } from 'vitest';
2
+ import { isNodeError } from '../../lib/errors.js';
3
+ it('isNodeError returns true for Node.js ErrnoException', () => {
4
+ const error = Object.assign(new Error('test'), { code: 'ENOENT' });
5
+ expect(isNodeError(error)).toBe(true);
6
+ });
7
+ it('isNodeError returns false for Error without code', () => {
8
+ const error = new Error('test');
9
+ expect(isNodeError(error)).toBe(false);
10
+ });
11
+ it('isNodeError returns false for non-Error objects', () => {
12
+ expect(isNodeError('string')).toBe(false);
13
+ expect(isNodeError({ code: 'ENOENT' })).toBe(false);
14
+ expect(isNodeError(null)).toBe(false);
15
+ expect(isNodeError(undefined)).toBe(false);
16
+ });
17
+ it('isNodeError returns false for Error with non-string code', () => {
18
+ const error = Object.assign(new Error('test'), { code: 123 });
19
+ expect(isNodeError(error)).toBe(false);
20
+ });
21
+ //# sourceMappingURL=errors-is-node-error.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-is-node-error.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/errors-is-node-error.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAC1D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;IACzD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=errors-mcp-error.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-mcp-error.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/errors-mcp-error.test.ts"],"names":[],"mappings":""}