@cyanheads/git-mcp-server 2.2.3 → 2.3.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 (471) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +75 -23
  3. package/dist/config/index.d.ts +87 -0
  4. package/dist/config/index.d.ts.map +1 -0
  5. package/dist/config/index.js +7 -3
  6. package/dist/config/index.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +1 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/mcp-server/resources/gitWorkingDir/index.d.ts +6 -0
  12. package/dist/mcp-server/resources/gitWorkingDir/index.d.ts.map +1 -0
  13. package/dist/mcp-server/resources/gitWorkingDir/index.js +6 -0
  14. package/dist/mcp-server/resources/gitWorkingDir/index.js.map +1 -0
  15. package/dist/mcp-server/resources/gitWorkingDir/logic.d.ts +15 -0
  16. package/dist/mcp-server/resources/gitWorkingDir/logic.d.ts.map +1 -0
  17. package/dist/mcp-server/resources/gitWorkingDir/logic.js +18 -0
  18. package/dist/mcp-server/resources/gitWorkingDir/logic.js.map +1 -0
  19. package/dist/mcp-server/resources/gitWorkingDir/registration.d.ts +15 -0
  20. package/dist/mcp-server/resources/gitWorkingDir/registration.d.ts.map +1 -0
  21. package/dist/mcp-server/resources/gitWorkingDir/registration.js +66 -0
  22. package/dist/mcp-server/resources/gitWorkingDir/registration.js.map +1 -0
  23. package/dist/mcp-server/server.d.ts +13 -0
  24. package/dist/mcp-server/server.d.ts.map +1 -0
  25. package/dist/mcp-server/server.js +22 -6
  26. package/dist/mcp-server/server.js.map +1 -0
  27. package/dist/mcp-server/tools/gitAdd/index.d.ts +6 -0
  28. package/dist/mcp-server/tools/gitAdd/index.d.ts.map +1 -0
  29. package/dist/mcp-server/tools/gitAdd/index.js +1 -0
  30. package/dist/mcp-server/tools/gitAdd/index.js.map +1 -0
  31. package/dist/mcp-server/tools/gitAdd/logic.d.ts +31 -0
  32. package/dist/mcp-server/tools/gitAdd/logic.d.ts.map +1 -0
  33. package/dist/mcp-server/tools/gitAdd/logic.js +20 -5
  34. package/dist/mcp-server/tools/gitAdd/logic.js.map +1 -0
  35. package/dist/mcp-server/tools/gitAdd/registration.d.ts +6 -0
  36. package/dist/mcp-server/tools/gitAdd/registration.d.ts.map +1 -0
  37. package/dist/mcp-server/tools/gitAdd/registration.js +5 -2
  38. package/dist/mcp-server/tools/gitAdd/registration.js.map +1 -0
  39. package/dist/mcp-server/tools/gitBranch/index.d.ts +6 -0
  40. package/dist/mcp-server/tools/gitBranch/index.d.ts.map +1 -0
  41. package/dist/mcp-server/tools/gitBranch/index.js +1 -0
  42. package/dist/mcp-server/tools/gitBranch/index.js.map +1 -0
  43. package/dist/mcp-server/tools/gitBranch/logic.d.ts +175 -0
  44. package/dist/mcp-server/tools/gitBranch/logic.d.ts.map +1 -0
  45. package/dist/mcp-server/tools/gitBranch/logic.js +75 -27
  46. package/dist/mcp-server/tools/gitBranch/logic.js.map +1 -0
  47. package/dist/mcp-server/tools/gitBranch/registration.d.ts +16 -0
  48. package/dist/mcp-server/tools/gitBranch/registration.d.ts.map +1 -0
  49. package/dist/mcp-server/tools/gitBranch/registration.js +13 -4
  50. package/dist/mcp-server/tools/gitBranch/registration.js.map +1 -0
  51. package/dist/mcp-server/tools/gitCheckout/index.d.ts +6 -0
  52. package/dist/mcp-server/tools/gitCheckout/index.d.ts.map +1 -0
  53. package/dist/mcp-server/tools/gitCheckout/index.js +1 -0
  54. package/dist/mcp-server/tools/gitCheckout/index.js.map +1 -0
  55. package/dist/mcp-server/tools/gitCheckout/logic.d.ts +48 -0
  56. package/dist/mcp-server/tools/gitCheckout/logic.d.ts.map +1 -0
  57. package/dist/mcp-server/tools/gitCheckout/logic.js +41 -10
  58. package/dist/mcp-server/tools/gitCheckout/logic.js.map +1 -0
  59. package/dist/mcp-server/tools/gitCheckout/registration.d.ts +16 -0
  60. package/dist/mcp-server/tools/gitCheckout/registration.d.ts.map +1 -0
  61. package/dist/mcp-server/tools/gitCheckout/registration.js +12 -3
  62. package/dist/mcp-server/tools/gitCheckout/registration.js.map +1 -0
  63. package/dist/mcp-server/tools/gitCherryPick/index.d.ts +6 -0
  64. package/dist/mcp-server/tools/gitCherryPick/index.d.ts.map +1 -0
  65. package/dist/mcp-server/tools/gitCherryPick/index.js +1 -0
  66. package/dist/mcp-server/tools/gitCherryPick/index.js.map +1 -0
  67. package/dist/mcp-server/tools/gitCherryPick/logic.d.ts +54 -0
  68. package/dist/mcp-server/tools/gitCherryPick/logic.d.ts.map +1 -0
  69. package/dist/mcp-server/tools/gitCherryPick/logic.js +34 -9
  70. package/dist/mcp-server/tools/gitCherryPick/logic.js.map +1 -0
  71. package/dist/mcp-server/tools/gitCherryPick/registration.d.ts +16 -0
  72. package/dist/mcp-server/tools/gitCherryPick/registration.d.ts.map +1 -0
  73. package/dist/mcp-server/tools/gitCherryPick/registration.js +12 -3
  74. package/dist/mcp-server/tools/gitCherryPick/registration.js.map +1 -0
  75. package/dist/mcp-server/tools/gitClean/index.d.ts +6 -0
  76. package/dist/mcp-server/tools/gitClean/index.d.ts.map +1 -0
  77. package/dist/mcp-server/tools/gitClean/index.js +1 -0
  78. package/dist/mcp-server/tools/gitClean/index.js.map +1 -0
  79. package/dist/mcp-server/tools/gitClean/logic.d.ts +51 -0
  80. package/dist/mcp-server/tools/gitClean/logic.d.ts.map +1 -0
  81. package/dist/mcp-server/tools/gitClean/logic.js +38 -10
  82. package/dist/mcp-server/tools/gitClean/logic.js.map +1 -0
  83. package/dist/mcp-server/tools/gitClean/registration.d.ts +16 -0
  84. package/dist/mcp-server/tools/gitClean/registration.d.ts.map +1 -0
  85. package/dist/mcp-server/tools/gitClean/registration.js +12 -3
  86. package/dist/mcp-server/tools/gitClean/registration.js.map +1 -0
  87. package/dist/mcp-server/tools/gitClearWorkingDir/index.d.ts +6 -0
  88. package/dist/mcp-server/tools/gitClearWorkingDir/index.d.ts.map +1 -0
  89. package/dist/mcp-server/tools/gitClearWorkingDir/index.js +1 -0
  90. package/dist/mcp-server/tools/gitClearWorkingDir/index.js.map +1 -0
  91. package/dist/mcp-server/tools/gitClearWorkingDir/logic.d.ts +33 -0
  92. package/dist/mcp-server/tools/gitClearWorkingDir/logic.d.ts.map +1 -0
  93. package/dist/mcp-server/tools/gitClearWorkingDir/logic.js +21 -5
  94. package/dist/mcp-server/tools/gitClearWorkingDir/logic.js.map +1 -0
  95. package/dist/mcp-server/tools/gitClearWorkingDir/registration.d.ts +16 -0
  96. package/dist/mcp-server/tools/gitClearWorkingDir/registration.d.ts.map +1 -0
  97. package/dist/mcp-server/tools/gitClearWorkingDir/registration.js +12 -3
  98. package/dist/mcp-server/tools/gitClearWorkingDir/registration.js.map +1 -0
  99. package/dist/mcp-server/tools/gitClone/index.d.ts +6 -0
  100. package/dist/mcp-server/tools/gitClone/index.d.ts.map +1 -0
  101. package/dist/mcp-server/tools/gitClone/index.js +1 -0
  102. package/dist/mcp-server/tools/gitClone/index.js.map +1 -0
  103. package/dist/mcp-server/tools/gitClone/logic.d.ts +46 -0
  104. package/dist/mcp-server/tools/gitClone/logic.d.ts.map +1 -0
  105. package/dist/mcp-server/tools/gitClone/logic.js +33 -10
  106. package/dist/mcp-server/tools/gitClone/logic.js.map +1 -0
  107. package/dist/mcp-server/tools/gitClone/registration.d.ts +12 -0
  108. package/dist/mcp-server/tools/gitClone/registration.d.ts.map +1 -0
  109. package/dist/mcp-server/tools/gitClone/registration.js +13 -5
  110. package/dist/mcp-server/tools/gitClone/registration.js.map +1 -0
  111. package/dist/mcp-server/tools/gitCommit/index.d.ts +6 -0
  112. package/dist/mcp-server/tools/gitCommit/index.d.ts.map +1 -0
  113. package/dist/mcp-server/tools/gitCommit/index.js +1 -0
  114. package/dist/mcp-server/tools/gitCommit/index.js.map +1 -0
  115. package/dist/mcp-server/tools/gitCommit/logic.d.ts +75 -0
  116. package/dist/mcp-server/tools/gitCommit/logic.d.ts.map +1 -0
  117. package/dist/mcp-server/tools/gitCommit/logic.js +63 -14
  118. package/dist/mcp-server/tools/gitCommit/logic.js.map +1 -0
  119. package/dist/mcp-server/tools/gitCommit/registration.d.ts +16 -0
  120. package/dist/mcp-server/tools/gitCommit/registration.d.ts.map +1 -0
  121. package/dist/mcp-server/tools/gitCommit/registration.js +12 -3
  122. package/dist/mcp-server/tools/gitCommit/registration.js.map +1 -0
  123. package/dist/mcp-server/tools/gitDiff/index.d.ts +6 -0
  124. package/dist/mcp-server/tools/gitDiff/index.d.ts.map +1 -0
  125. package/dist/mcp-server/tools/gitDiff/index.js +1 -0
  126. package/dist/mcp-server/tools/gitDiff/index.js.map +1 -0
  127. package/dist/mcp-server/tools/gitDiff/logic.d.ts +87 -0
  128. package/dist/mcp-server/tools/gitDiff/logic.d.ts.map +1 -0
  129. package/dist/mcp-server/tools/gitDiff/logic.js +59 -15
  130. package/dist/mcp-server/tools/gitDiff/logic.js.map +1 -0
  131. package/dist/mcp-server/tools/gitDiff/registration.d.ts +16 -0
  132. package/dist/mcp-server/tools/gitDiff/registration.d.ts.map +1 -0
  133. package/dist/mcp-server/tools/gitDiff/registration.js +13 -3
  134. package/dist/mcp-server/tools/gitDiff/registration.js.map +1 -0
  135. package/dist/mcp-server/tools/gitFetch/index.d.ts +6 -0
  136. package/dist/mcp-server/tools/gitFetch/index.d.ts.map +1 -0
  137. package/dist/mcp-server/tools/gitFetch/index.js +1 -0
  138. package/dist/mcp-server/tools/gitFetch/index.js.map +1 -0
  139. package/dist/mcp-server/tools/gitFetch/logic.d.ts +45 -0
  140. package/dist/mcp-server/tools/gitFetch/logic.d.ts.map +1 -0
  141. package/dist/mcp-server/tools/gitFetch/logic.js +18 -5
  142. package/dist/mcp-server/tools/gitFetch/logic.js.map +1 -0
  143. package/dist/mcp-server/tools/gitFetch/registration.d.ts +16 -0
  144. package/dist/mcp-server/tools/gitFetch/registration.d.ts.map +1 -0
  145. package/dist/mcp-server/tools/gitFetch/registration.js +12 -3
  146. package/dist/mcp-server/tools/gitFetch/registration.js.map +1 -0
  147. package/dist/mcp-server/tools/gitInit/index.d.ts +6 -0
  148. package/dist/mcp-server/tools/gitInit/index.d.ts.map +1 -0
  149. package/dist/mcp-server/tools/gitInit/index.js +1 -0
  150. package/dist/mcp-server/tools/gitInit/index.js.map +1 -0
  151. package/dist/mcp-server/tools/gitInit/logic.d.ts +46 -0
  152. package/dist/mcp-server/tools/gitInit/logic.d.ts.map +1 -0
  153. package/dist/mcp-server/tools/gitInit/logic.js +73 -21
  154. package/dist/mcp-server/tools/gitInit/logic.js.map +1 -0
  155. package/dist/mcp-server/tools/gitInit/registration.d.ts +12 -0
  156. package/dist/mcp-server/tools/gitInit/registration.d.ts.map +1 -0
  157. package/dist/mcp-server/tools/gitInit/registration.js +13 -5
  158. package/dist/mcp-server/tools/gitInit/registration.js.map +1 -0
  159. package/dist/mcp-server/tools/gitLog/index.d.ts +6 -0
  160. package/dist/mcp-server/tools/gitLog/index.d.ts.map +1 -0
  161. package/dist/mcp-server/tools/gitLog/index.js +1 -0
  162. package/dist/mcp-server/tools/gitLog/index.js.map +1 -0
  163. package/dist/mcp-server/tools/gitLog/logic.d.ts +92 -0
  164. package/dist/mcp-server/tools/gitLog/logic.d.ts.map +1 -0
  165. package/dist/mcp-server/tools/gitLog/logic.js +84 -26
  166. package/dist/mcp-server/tools/gitLog/logic.js.map +1 -0
  167. package/dist/mcp-server/tools/gitLog/registration.d.ts +16 -0
  168. package/dist/mcp-server/tools/gitLog/registration.d.ts.map +1 -0
  169. package/dist/mcp-server/tools/gitLog/registration.js +12 -3
  170. package/dist/mcp-server/tools/gitLog/registration.js.map +1 -0
  171. package/dist/mcp-server/tools/gitMerge/index.d.ts +6 -0
  172. package/dist/mcp-server/tools/gitMerge/index.d.ts.map +1 -0
  173. package/dist/mcp-server/tools/gitMerge/index.js +1 -0
  174. package/dist/mcp-server/tools/gitMerge/index.js.map +1 -0
  175. package/dist/mcp-server/tools/gitMerge/logic.d.ts +60 -0
  176. package/dist/mcp-server/tools/gitMerge/logic.d.ts.map +1 -0
  177. package/dist/mcp-server/tools/gitMerge/logic.js +40 -11
  178. package/dist/mcp-server/tools/gitMerge/logic.js.map +1 -0
  179. package/dist/mcp-server/tools/gitMerge/registration.d.ts +16 -0
  180. package/dist/mcp-server/tools/gitMerge/registration.d.ts.map +1 -0
  181. package/dist/mcp-server/tools/gitMerge/registration.js +12 -3
  182. package/dist/mcp-server/tools/gitMerge/registration.js.map +1 -0
  183. package/dist/mcp-server/tools/gitPull/index.d.ts +6 -0
  184. package/dist/mcp-server/tools/gitPull/index.d.ts.map +1 -0
  185. package/dist/mcp-server/tools/gitPull/index.js +1 -0
  186. package/dist/mcp-server/tools/gitPull/index.js.map +1 -0
  187. package/dist/mcp-server/tools/gitPull/logic.d.ts +48 -0
  188. package/dist/mcp-server/tools/gitPull/logic.d.ts.map +1 -0
  189. package/dist/mcp-server/tools/gitPull/logic.js +22 -6
  190. package/dist/mcp-server/tools/gitPull/logic.js.map +1 -0
  191. package/dist/mcp-server/tools/gitPull/registration.d.ts +16 -0
  192. package/dist/mcp-server/tools/gitPull/registration.d.ts.map +1 -0
  193. package/dist/mcp-server/tools/gitPull/registration.js +12 -3
  194. package/dist/mcp-server/tools/gitPull/registration.js.map +1 -0
  195. package/dist/mcp-server/tools/gitPush/index.d.ts +6 -0
  196. package/dist/mcp-server/tools/gitPush/index.d.ts.map +1 -0
  197. package/dist/mcp-server/tools/gitPush/index.js +1 -0
  198. package/dist/mcp-server/tools/gitPush/index.js.map +1 -0
  199. package/dist/mcp-server/tools/gitPush/logic.d.ts +134 -0
  200. package/dist/mcp-server/tools/gitPush/logic.d.ts.map +1 -0
  201. package/dist/mcp-server/tools/gitPush/logic.js +28 -9
  202. package/dist/mcp-server/tools/gitPush/logic.js.map +1 -0
  203. package/dist/mcp-server/tools/gitPush/registration.d.ts +16 -0
  204. package/dist/mcp-server/tools/gitPush/registration.d.ts.map +1 -0
  205. package/dist/mcp-server/tools/gitPush/registration.js +12 -3
  206. package/dist/mcp-server/tools/gitPush/registration.js.map +1 -0
  207. package/dist/mcp-server/tools/gitRebase/index.d.ts +6 -0
  208. package/dist/mcp-server/tools/gitRebase/index.d.ts.map +1 -0
  209. package/dist/mcp-server/tools/gitRebase/index.js +1 -0
  210. package/dist/mcp-server/tools/gitRebase/index.js.map +1 -0
  211. package/dist/mcp-server/tools/gitRebase/logic.d.ts +106 -0
  212. package/dist/mcp-server/tools/gitRebase/logic.d.ts.map +1 -0
  213. package/dist/mcp-server/tools/gitRebase/logic.js +40 -10
  214. package/dist/mcp-server/tools/gitRebase/logic.js.map +1 -0
  215. package/dist/mcp-server/tools/gitRebase/registration.d.ts +16 -0
  216. package/dist/mcp-server/tools/gitRebase/registration.d.ts.map +1 -0
  217. package/dist/mcp-server/tools/gitRebase/registration.js +12 -3
  218. package/dist/mcp-server/tools/gitRebase/registration.js.map +1 -0
  219. package/dist/mcp-server/tools/gitRemote/index.d.ts +6 -0
  220. package/dist/mcp-server/tools/gitRemote/index.d.ts.map +1 -0
  221. package/dist/mcp-server/tools/gitRemote/index.js +1 -0
  222. package/dist/mcp-server/tools/gitRemote/index.js.map +1 -0
  223. package/dist/mcp-server/tools/gitRemote/logic.d.ts +107 -0
  224. package/dist/mcp-server/tools/gitRemote/logic.d.ts.map +1 -0
  225. package/dist/mcp-server/tools/gitRemote/logic.js +45 -19
  226. package/dist/mcp-server/tools/gitRemote/logic.js.map +1 -0
  227. package/dist/mcp-server/tools/gitRemote/registration.d.ts +16 -0
  228. package/dist/mcp-server/tools/gitRemote/registration.d.ts.map +1 -0
  229. package/dist/mcp-server/tools/gitRemote/registration.js +12 -3
  230. package/dist/mcp-server/tools/gitRemote/registration.js.map +1 -0
  231. package/dist/mcp-server/tools/gitReset/index.d.ts +6 -0
  232. package/dist/mcp-server/tools/gitReset/index.d.ts.map +1 -0
  233. package/dist/mcp-server/tools/gitReset/index.js +1 -0
  234. package/dist/mcp-server/tools/gitReset/index.js.map +1 -0
  235. package/dist/mcp-server/tools/gitReset/logic.d.ts +42 -0
  236. package/dist/mcp-server/tools/gitReset/logic.d.ts.map +1 -0
  237. package/dist/mcp-server/tools/gitReset/logic.js +20 -6
  238. package/dist/mcp-server/tools/gitReset/logic.js.map +1 -0
  239. package/dist/mcp-server/tools/gitReset/registration.d.ts +16 -0
  240. package/dist/mcp-server/tools/gitReset/registration.d.ts.map +1 -0
  241. package/dist/mcp-server/tools/gitReset/registration.js +12 -3
  242. package/dist/mcp-server/tools/gitReset/registration.js.map +1 -0
  243. package/dist/mcp-server/tools/gitSetWorkingDir/index.d.ts +6 -0
  244. package/dist/mcp-server/tools/gitSetWorkingDir/index.d.ts.map +1 -0
  245. package/dist/mcp-server/tools/gitSetWorkingDir/index.js +1 -0
  246. package/dist/mcp-server/tools/gitSetWorkingDir/index.js.map +1 -0
  247. package/dist/mcp-server/tools/gitSetWorkingDir/logic.d.ts +45 -0
  248. package/dist/mcp-server/tools/gitSetWorkingDir/logic.d.ts.map +1 -0
  249. package/dist/mcp-server/tools/gitSetWorkingDir/logic.js +29 -8
  250. package/dist/mcp-server/tools/gitSetWorkingDir/logic.js.map +1 -0
  251. package/dist/mcp-server/tools/gitSetWorkingDir/registration.d.ts +16 -0
  252. package/dist/mcp-server/tools/gitSetWorkingDir/registration.d.ts.map +1 -0
  253. package/dist/mcp-server/tools/gitSetWorkingDir/registration.js +12 -3
  254. package/dist/mcp-server/tools/gitSetWorkingDir/registration.js.map +1 -0
  255. package/dist/mcp-server/tools/gitShow/index.d.ts +6 -0
  256. package/dist/mcp-server/tools/gitShow/index.d.ts.map +1 -0
  257. package/dist/mcp-server/tools/gitShow/index.js +1 -0
  258. package/dist/mcp-server/tools/gitShow/index.js.map +1 -0
  259. package/dist/mcp-server/tools/gitShow/logic.d.ts +39 -0
  260. package/dist/mcp-server/tools/gitShow/logic.d.ts.map +1 -0
  261. package/dist/mcp-server/tools/gitShow/logic.js +17 -5
  262. package/dist/mcp-server/tools/gitShow/logic.js.map +1 -0
  263. package/dist/mcp-server/tools/gitShow/registration.d.ts +16 -0
  264. package/dist/mcp-server/tools/gitShow/registration.d.ts.map +1 -0
  265. package/dist/mcp-server/tools/gitShow/registration.js +13 -3
  266. package/dist/mcp-server/tools/gitShow/registration.js.map +1 -0
  267. package/dist/mcp-server/tools/gitStash/index.d.ts +6 -0
  268. package/dist/mcp-server/tools/gitStash/index.d.ts.map +1 -0
  269. package/dist/mcp-server/tools/gitStash/index.js +1 -0
  270. package/dist/mcp-server/tools/gitStash/index.js.map +1 -0
  271. package/dist/mcp-server/tools/gitStash/logic.d.ts +100 -0
  272. package/dist/mcp-server/tools/gitStash/logic.d.ts.map +1 -0
  273. package/dist/mcp-server/tools/gitStash/logic.js +70 -17
  274. package/dist/mcp-server/tools/gitStash/logic.js.map +1 -0
  275. package/dist/mcp-server/tools/gitStash/registration.d.ts +16 -0
  276. package/dist/mcp-server/tools/gitStash/registration.d.ts.map +1 -0
  277. package/dist/mcp-server/tools/gitStash/registration.js +12 -3
  278. package/dist/mcp-server/tools/gitStash/registration.js.map +1 -0
  279. package/dist/mcp-server/tools/gitStatus/index.d.ts +6 -0
  280. package/dist/mcp-server/tools/gitStatus/index.d.ts.map +1 -0
  281. package/dist/mcp-server/tools/gitStatus/index.js +1 -0
  282. package/dist/mcp-server/tools/gitStatus/index.js.map +1 -0
  283. package/dist/mcp-server/tools/gitStatus/logic.d.ts +115 -0
  284. package/dist/mcp-server/tools/gitStatus/logic.d.ts.map +1 -0
  285. package/dist/mcp-server/tools/gitStatus/logic.js +38 -23
  286. package/dist/mcp-server/tools/gitStatus/logic.js.map +1 -0
  287. package/dist/mcp-server/tools/gitStatus/registration.d.ts +16 -0
  288. package/dist/mcp-server/tools/gitStatus/registration.d.ts.map +1 -0
  289. package/dist/mcp-server/tools/gitStatus/registration.js +12 -3
  290. package/dist/mcp-server/tools/gitStatus/registration.js.map +1 -0
  291. package/dist/mcp-server/tools/gitTag/index.d.ts +6 -0
  292. package/dist/mcp-server/tools/gitTag/index.d.ts.map +1 -0
  293. package/dist/mcp-server/tools/gitTag/index.js +1 -0
  294. package/dist/mcp-server/tools/gitTag/index.js.map +1 -0
  295. package/dist/mcp-server/tools/gitTag/logic.d.ts +121 -0
  296. package/dist/mcp-server/tools/gitTag/logic.d.ts.map +1 -0
  297. package/dist/mcp-server/tools/gitTag/logic.js +59 -17
  298. package/dist/mcp-server/tools/gitTag/logic.js.map +1 -0
  299. package/dist/mcp-server/tools/gitTag/registration.d.ts +16 -0
  300. package/dist/mcp-server/tools/gitTag/registration.d.ts.map +1 -0
  301. package/dist/mcp-server/tools/gitTag/registration.js +12 -3
  302. package/dist/mcp-server/tools/gitTag/registration.js.map +1 -0
  303. package/dist/mcp-server/tools/gitWorktree/index.d.ts +6 -0
  304. package/dist/mcp-server/tools/gitWorktree/index.d.ts.map +1 -0
  305. package/dist/mcp-server/tools/gitWorktree/index.js +1 -0
  306. package/dist/mcp-server/tools/gitWorktree/index.js.map +1 -0
  307. package/dist/mcp-server/tools/gitWorktree/logic.d.ts +218 -0
  308. package/dist/mcp-server/tools/gitWorktree/logic.d.ts.map +1 -0
  309. package/dist/mcp-server/tools/gitWorktree/logic.js +61 -17
  310. package/dist/mcp-server/tools/gitWorktree/logic.js.map +1 -0
  311. package/dist/mcp-server/tools/gitWorktree/registration.d.ts +16 -0
  312. package/dist/mcp-server/tools/gitWorktree/registration.d.ts.map +1 -0
  313. package/dist/mcp-server/tools/gitWorktree/registration.js +12 -3
  314. package/dist/mcp-server/tools/gitWorktree/registration.js.map +1 -0
  315. package/dist/mcp-server/tools/gitWrapupInstructions/index.d.ts +6 -0
  316. package/dist/mcp-server/tools/gitWrapupInstructions/index.d.ts.map +1 -0
  317. package/dist/mcp-server/tools/gitWrapupInstructions/index.js +1 -0
  318. package/dist/mcp-server/tools/gitWrapupInstructions/index.js.map +1 -0
  319. package/dist/mcp-server/tools/gitWrapupInstructions/logic.d.ts +175 -0
  320. package/dist/mcp-server/tools/gitWrapupInstructions/logic.d.ts.map +1 -0
  321. package/dist/mcp-server/tools/gitWrapupInstructions/logic.js +20 -6
  322. package/dist/mcp-server/tools/gitWrapupInstructions/logic.js.map +1 -0
  323. package/dist/mcp-server/tools/gitWrapupInstructions/registration.d.ts +16 -0
  324. package/dist/mcp-server/tools/gitWrapupInstructions/registration.d.ts.map +1 -0
  325. package/dist/mcp-server/tools/gitWrapupInstructions/registration.js +12 -3
  326. package/dist/mcp-server/tools/gitWrapupInstructions/registration.js.map +1 -0
  327. package/dist/mcp-server/transports/auth/authFactory.d.ts +11 -0
  328. package/dist/mcp-server/transports/auth/authFactory.d.ts.map +1 -0
  329. package/dist/mcp-server/transports/auth/authFactory.js +1 -0
  330. package/dist/mcp-server/transports/auth/authFactory.js.map +1 -0
  331. package/dist/mcp-server/transports/auth/authMiddleware.d.ts +20 -0
  332. package/dist/mcp-server/transports/auth/authMiddleware.d.ts.map +1 -0
  333. package/dist/mcp-server/transports/auth/authMiddleware.js +1 -0
  334. package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -0
  335. package/dist/mcp-server/transports/auth/index.d.ts +14 -0
  336. package/dist/mcp-server/transports/auth/index.d.ts.map +1 -0
  337. package/dist/mcp-server/transports/auth/index.js +1 -0
  338. package/dist/mcp-server/transports/auth/index.js.map +1 -0
  339. package/dist/mcp-server/transports/auth/lib/authContext.d.ts +34 -0
  340. package/dist/mcp-server/transports/auth/lib/authContext.d.ts.map +1 -0
  341. package/dist/mcp-server/transports/auth/lib/authContext.js +1 -0
  342. package/dist/mcp-server/transports/auth/lib/authContext.js.map +1 -0
  343. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +13 -0
  344. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -0
  345. package/dist/mcp-server/transports/auth/lib/authTypes.js +1 -0
  346. package/dist/mcp-server/transports/auth/lib/authTypes.js.map +1 -0
  347. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +19 -0
  348. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -0
  349. package/dist/mcp-server/transports/auth/lib/authUtils.js +1 -0
  350. package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -0
  351. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +18 -0
  352. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts.map +1 -0
  353. package/dist/mcp-server/transports/auth/strategies/authStrategy.js +1 -0
  354. package/dist/mcp-server/transports/auth/strategies/authStrategy.js.map +1 -0
  355. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +8 -0
  356. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -0
  357. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +5 -0
  358. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -0
  359. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +8 -0
  360. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -0
  361. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +6 -0
  362. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -0
  363. package/dist/mcp-server/transports/core/baseTransportManager.d.ts +18 -0
  364. package/dist/mcp-server/transports/core/baseTransportManager.d.ts.map +1 -0
  365. package/dist/mcp-server/transports/core/baseTransportManager.js +1 -0
  366. package/dist/mcp-server/transports/core/baseTransportManager.js.map +1 -0
  367. package/dist/mcp-server/transports/core/honoNodeBridge.d.ts +24 -0
  368. package/dist/mcp-server/transports/core/honoNodeBridge.d.ts.map +1 -0
  369. package/dist/mcp-server/transports/core/honoNodeBridge.js +11 -4
  370. package/dist/mcp-server/transports/core/honoNodeBridge.js.map +1 -0
  371. package/dist/mcp-server/transports/core/statefulTransportManager.d.ts +32 -0
  372. package/dist/mcp-server/transports/core/statefulTransportManager.d.ts.map +1 -0
  373. package/dist/mcp-server/transports/core/statefulTransportManager.js +1 -0
  374. package/dist/mcp-server/transports/core/statefulTransportManager.js.map +1 -0
  375. package/dist/mcp-server/transports/core/statelessTransportManager.d.ts +21 -0
  376. package/dist/mcp-server/transports/core/statelessTransportManager.d.ts.map +1 -0
  377. package/dist/mcp-server/transports/core/statelessTransportManager.js +1 -0
  378. package/dist/mcp-server/transports/core/statelessTransportManager.js.map +1 -0
  379. package/dist/mcp-server/transports/core/transportTypes.d.ts +69 -0
  380. package/dist/mcp-server/transports/core/transportTypes.d.ts.map +1 -0
  381. package/dist/mcp-server/transports/core/transportTypes.js +1 -0
  382. package/dist/mcp-server/transports/core/transportTypes.js.map +1 -0
  383. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +22 -0
  384. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -0
  385. package/dist/mcp-server/transports/http/httpErrorHandler.js +1 -0
  386. package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -0
  387. package/dist/mcp-server/transports/http/httpTransport.d.ts +23 -0
  388. package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -0
  389. package/dist/mcp-server/transports/http/httpTransport.js +29 -10
  390. package/dist/mcp-server/transports/http/httpTransport.js.map +1 -0
  391. package/dist/mcp-server/transports/http/httpTypes.d.ts +17 -0
  392. package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -0
  393. package/dist/mcp-server/transports/http/httpTypes.js +1 -0
  394. package/dist/mcp-server/transports/http/httpTypes.js.map +1 -0
  395. package/dist/mcp-server/transports/http/index.d.ts +8 -0
  396. package/dist/mcp-server/transports/http/index.d.ts.map +1 -0
  397. package/dist/mcp-server/transports/http/index.js +1 -0
  398. package/dist/mcp-server/transports/http/index.js.map +1 -0
  399. package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts +27 -0
  400. package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts.map +1 -0
  401. package/dist/mcp-server/transports/http/mcpTransportMiddleware.js +27 -24
  402. package/dist/mcp-server/transports/http/mcpTransportMiddleware.js.map +1 -0
  403. package/dist/mcp-server/transports/stdio/index.d.ts +6 -0
  404. package/dist/mcp-server/transports/stdio/index.d.ts.map +1 -0
  405. package/dist/mcp-server/transports/stdio/index.js +1 -0
  406. package/dist/mcp-server/transports/stdio/index.js.map +1 -0
  407. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +43 -0
  408. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -0
  409. package/dist/mcp-server/transports/stdio/stdioTransport.js +1 -0
  410. package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -0
  411. package/dist/types-global/errors.d.ts +122 -0
  412. package/dist/types-global/errors.d.ts.map +1 -0
  413. package/dist/types-global/errors.js +1 -0
  414. package/dist/types-global/errors.js.map +1 -0
  415. package/dist/utils/index.d.ts +5 -0
  416. package/dist/utils/index.d.ts.map +1 -0
  417. package/dist/utils/index.js +1 -0
  418. package/dist/utils/index.js.map +1 -0
  419. package/dist/utils/internal/errorHandler.d.ts +91 -0
  420. package/dist/utils/internal/errorHandler.d.ts.map +1 -0
  421. package/dist/utils/internal/errorHandler.js +8 -6
  422. package/dist/utils/internal/errorHandler.js.map +1 -0
  423. package/dist/utils/internal/index.d.ts +4 -0
  424. package/dist/utils/internal/index.d.ts.map +1 -0
  425. package/dist/utils/internal/index.js +1 -0
  426. package/dist/utils/internal/index.js.map +1 -0
  427. package/dist/utils/internal/logger.d.ts +55 -0
  428. package/dist/utils/internal/logger.d.ts.map +1 -0
  429. package/dist/utils/internal/logger.js +19 -5
  430. package/dist/utils/internal/logger.js.map +1 -0
  431. package/dist/utils/internal/requestContext.d.ts +48 -0
  432. package/dist/utils/internal/requestContext.d.ts.map +1 -0
  433. package/dist/utils/internal/requestContext.js +1 -0
  434. package/dist/utils/internal/requestContext.js.map +1 -0
  435. package/dist/utils/metrics/index.d.ts +2 -0
  436. package/dist/utils/metrics/index.d.ts.map +1 -0
  437. package/dist/utils/metrics/index.js +1 -0
  438. package/dist/utils/metrics/index.js.map +1 -0
  439. package/dist/utils/metrics/tokenCounter.d.ts +28 -0
  440. package/dist/utils/metrics/tokenCounter.d.ts.map +1 -0
  441. package/dist/utils/metrics/tokenCounter.js +1 -0
  442. package/dist/utils/metrics/tokenCounter.js.map +1 -0
  443. package/dist/utils/parsing/dateParser.d.ts +25 -0
  444. package/dist/utils/parsing/dateParser.d.ts.map +1 -0
  445. package/dist/utils/parsing/dateParser.js +57 -56
  446. package/dist/utils/parsing/dateParser.js.map +1 -0
  447. package/dist/utils/parsing/index.d.ts +3 -0
  448. package/dist/utils/parsing/index.d.ts.map +1 -0
  449. package/dist/utils/parsing/index.js +1 -0
  450. package/dist/utils/parsing/index.js.map +1 -0
  451. package/dist/utils/parsing/jsonParser.d.ts +83 -0
  452. package/dist/utils/parsing/jsonParser.d.ts.map +1 -0
  453. package/dist/utils/parsing/jsonParser.js +85 -45
  454. package/dist/utils/parsing/jsonParser.js.map +1 -0
  455. package/dist/utils/security/idGenerator.d.ts +94 -0
  456. package/dist/utils/security/idGenerator.d.ts.map +1 -0
  457. package/dist/utils/security/idGenerator.js +9 -2
  458. package/dist/utils/security/idGenerator.js.map +1 -0
  459. package/dist/utils/security/index.d.ts +4 -0
  460. package/dist/utils/security/index.d.ts.map +1 -0
  461. package/dist/utils/security/index.js +1 -0
  462. package/dist/utils/security/index.js.map +1 -0
  463. package/dist/utils/security/rateLimiter.d.ts +93 -0
  464. package/dist/utils/security/rateLimiter.d.ts.map +1 -0
  465. package/dist/utils/security/rateLimiter.js +1 -0
  466. package/dist/utils/security/rateLimiter.js.map +1 -0
  467. package/dist/utils/security/sanitization.d.ts +181 -0
  468. package/dist/utils/security/sanitization.d.ts.map +1 -0
  469. package/dist/utils/security/sanitization.js +6 -5
  470. package/dist/utils/security/sanitization.js.map +1 -0
  471. package/package.json +52 -34
@@ -1,88 +1,128 @@
1
+ /**
2
+ * @fileoverview Provides a utility class for parsing potentially partial JSON strings.
3
+ * It wraps the 'partial-json' npm library and includes functionality to handle
4
+ * optional <think>...</think> blocks often found at the beginning of LLM outputs.
5
+ * @module src/utils/parsing/jsonParser
6
+ */
1
7
  import { parse as parsePartialJson, Allow as PartialJsonAllow, } from "partial-json";
2
8
  import { BaseErrorCode, McpError } from "../../types-global/errors.js";
3
- // Import utils from the main barrel file (logger, RequestContext from ../internal/*)
4
- import { logger } from "../index.js";
9
+ import { logger, requestContextService } from "../index.js";
5
10
  /**
6
- * Enum mirroring partial-json's Allow constants for specifying
11
+ * Enum mirroring `partial-json`'s `Allow` constants. These specify
7
12
  * what types of partial JSON structures are permissible during parsing.
8
- * Use bitwise OR to combine options (e.g., Allow.STR | Allow.OBJ).
13
+ * They can be combined using bitwise OR (e.g., `Allow.STR | Allow.OBJ`).
14
+ *
15
+ * The available properties are:
16
+ * - `STR`: Allow partial string.
17
+ * - `NUM`: Allow partial number.
18
+ * - `ARR`: Allow partial array.
19
+ * - `OBJ`: Allow partial object.
20
+ * - `NULL`: Allow partial null.
21
+ * - `BOOL`: Allow partial boolean.
22
+ * - `NAN`: Allow partial NaN. (Note: Standard JSON does not support NaN)
23
+ * - `INFINITY`: Allow partial Infinity. (Note: Standard JSON does not support Infinity)
24
+ * - `_INFINITY`: Allow partial -Infinity. (Note: Standard JSON does not support -Infinity)
25
+ * - `INF`: Allow both partial Infinity and -Infinity.
26
+ * - `SPECIAL`: Allow all special values (NaN, Infinity, -Infinity).
27
+ * - `ATOM`: Allow all atomic values (strings, numbers, booleans, null, special values).
28
+ * - `COLLECTION`: Allow all collection values (objects, arrays).
29
+ * - `ALL`: Allow all value types to be partial (default for `partial-json`'s parse).
30
+ * @see {@link https://github.com/promplate/partial-json-parser-js} for more details.
9
31
  */
10
32
  export const Allow = PartialJsonAllow;
11
- // Regex to find a <think> block at the start, capturing its content and the rest of the string
33
+ /**
34
+ * Regular expression to find a <think> block at the start of a string.
35
+ * Captures content within <think>...</think> (Group 1) and the rest of the string (Group 2).
36
+ * @private
37
+ */
12
38
  const thinkBlockRegex = /^<think>([\s\S]*?)<\/think>\s*([\s\S]*)$/;
13
39
  /**
14
40
  * Utility class for parsing potentially partial JSON strings.
15
- * Wraps the 'partial-json' library to provide a consistent interface
16
- * within the atlas-mcp-agent project.
17
- * Handles optional <think>...</think> blocks at the beginning of the input.
41
+ * Wraps the 'partial-json' library for robust JSON parsing, handling
42
+ * incomplete structures and optional <think> blocks from LLMs.
18
43
  */
19
- class JsonParser {
44
+ export class JsonParser {
20
45
  /**
21
- * Parses a JSON string, potentially allowing for incomplete structures
22
- * and handling optional <think> blocks at the start.
46
+ * Parses a JSON string, which may be partial or prefixed with a <think> block.
47
+ * If a <think> block is present, its content is logged, and parsing proceeds on the
48
+ * remainder. Uses 'partial-json' to handle incomplete JSON.
23
49
  *
24
- * @param jsonString The JSON string to parse.
25
- * @param allowPartial A bitwise OR combination of 'Allow' constants specifying permissible partial types (defaults to Allow.ALL).
26
- * @param context Optional RequestContext for error correlation and logging think blocks.
50
+ * @template T The expected type of the parsed JSON object. Defaults to `unknown`.
51
+ * @param jsonString - The JSON string to parse.
52
+ * @param allowPartial - Bitwise OR combination of `Allow` constants specifying permissible
53
+ * partial JSON types. Defaults to `Allow.ALL`.
54
+ * @param context - Optional `RequestContext` for logging and error correlation.
27
55
  * @returns The parsed JavaScript value.
28
- * @throws {McpError} Throws an McpError with BaseErrorCode.VALIDATION_ERROR if parsing fails due to malformed JSON.
56
+ * @throws {McpError} If the string is empty after processing or if `partial-json` fails.
29
57
  */
30
58
  parse(jsonString, allowPartial = Allow.ALL, context) {
31
59
  let stringToParse = jsonString;
32
60
  const match = jsonString.match(thinkBlockRegex);
33
61
  if (match) {
34
- const thinkContent = match[1].trim();
35
- const restOfString = match[2];
62
+ const thinkContent = (match[1] || "").trim();
63
+ const restOfString = match[2] || "";
64
+ const logContext = context ||
65
+ requestContextService.createRequestContext({
66
+ operation: "JsonParser.thinkBlock",
67
+ });
36
68
  if (thinkContent) {
37
69
  logger.debug("LLM <think> block detected and logged.", {
38
- ...context,
70
+ ...logContext,
39
71
  thinkContent,
40
72
  });
41
73
  }
42
74
  else {
43
- logger.debug("Empty LLM <think> block detected.", context);
75
+ logger.debug("Empty LLM <think> block detected.", logContext);
44
76
  }
45
- stringToParse = restOfString; // Parse only the part after </think>
77
+ stringToParse = restOfString;
46
78
  }
47
- // Trim leading/trailing whitespace which might interfere with JSON parsing, especially if only JSON is left
48
79
  stringToParse = stringToParse.trim();
49
80
  if (!stringToParse) {
50
- // If after removing think block and trimming, the string is empty, it's an error
51
- throw new McpError(BaseErrorCode.VALIDATION_ERROR, "JSON string is empty after removing <think> block.", context);
81
+ throw new McpError(BaseErrorCode.VALIDATION_ERROR, "JSON string is empty after removing <think> block and trimming.", context);
52
82
  }
53
83
  try {
54
- // Ensure the string starts with '{' or '[' if we expect an object or array after stripping <think>
55
- // This helps catch cases where only non-JSON text remains.
56
- if (!stringToParse.startsWith("{") && !stringToParse.startsWith("[")) {
57
- // Check if it might be a simple string value that partial-json could parse
58
- // Allow simple strings only if specifically permitted or Allow.ALL is used
59
- const allowsString = (allowPartial & Allow.STR) === Allow.STR;
60
- if (!allowsString && !stringToParse.startsWith('"')) {
61
- // Allow quoted strings if Allow.STR is set
62
- throw new Error("Remaining content does not appear to be valid JSON object or array.");
63
- }
64
- // If it starts with a quote and strings are allowed, let parsePartialJson handle it
65
- }
66
84
  return parsePartialJson(stringToParse, allowPartial);
67
85
  }
68
- catch (error) {
69
- // Wrap the original error in an McpError for consistent error handling
70
- // Include the original error message for better debugging context.
86
+ catch (e) {
87
+ const error = e;
88
+ const errorLogContext = context ||
89
+ requestContextService.createRequestContext({
90
+ operation: "JsonParser.parseError",
91
+ });
71
92
  logger.error("Failed to parse JSON content.", {
72
- ...context,
73
- error: error.message,
74
- contentAttempted: stringToParse,
93
+ ...errorLogContext,
94
+ errorDetails: error.message,
95
+ contentAttempted: stringToParse.substring(0, 200),
75
96
  });
76
97
  throw new McpError(BaseErrorCode.VALIDATION_ERROR, `Failed to parse JSON: ${error.message}`, {
77
- // Combine context and details into the third argument
78
98
  ...context,
79
- originalContent: stringToParse,
80
- rawError: error instanceof Error ? error.stack : String(error), // Include raw error info
99
+ originalContentSample: stringToParse.substring(0, 200) +
100
+ (stringToParse.length > 200 ? "..." : ""),
101
+ rawError: error instanceof Error ? error.stack : String(error),
81
102
  });
82
103
  }
83
104
  }
84
105
  }
85
106
  /**
86
- * Singleton instance of the JsonParser utility.
107
+ * Singleton instance of the `JsonParser`.
108
+ * Use this instance to parse JSON strings, with support for partial JSON and <think> blocks.
109
+ * @example
110
+ * ```typescript
111
+ * import { jsonParser, Allow, requestContextService } from './utils';
112
+ * const context = requestContextService.createRequestContext({ operation: 'TestJsonParsing' });
113
+ *
114
+ * const fullJson = '{"key": "value"}';
115
+ * const parsedFull = jsonParser.parse(fullJson, Allow.ALL, context);
116
+ * console.log(parsedFull); // Output: { key: 'value' }
117
+ *
118
+ * const partialObject = '<think>This is a thought.</think>{"key": "value", "arr": [1,';
119
+ * try {
120
+ * const parsedPartial = jsonParser.parse(partialObject, undefined, context);
121
+ * console.log(parsedPartial);
122
+ * } catch (e) {
123
+ * console.error("Parsing partial object failed:", e);
124
+ * }
125
+ * ```
87
126
  */
88
127
  export const jsonParser = new JsonParser();
128
+ //# sourceMappingURL=jsonParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/jsonParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Interface for entity prefix configuration
3
+ */
4
+ export interface EntityPrefixConfig {
5
+ [key: string]: string;
6
+ }
7
+ /**
8
+ * ID Generation Options
9
+ */
10
+ export interface IdGenerationOptions {
11
+ length?: number;
12
+ separator?: string;
13
+ charset?: string;
14
+ }
15
+ /**
16
+ * Generic ID Generator class for creating and managing unique identifiers
17
+ */
18
+ export declare class IdGenerator {
19
+ private static DEFAULT_CHARSET;
20
+ private static DEFAULT_SEPARATOR;
21
+ private static DEFAULT_LENGTH;
22
+ private entityPrefixes;
23
+ private prefixToEntityType;
24
+ /**
25
+ * Constructor that accepts entity prefix configuration
26
+ * @param entityPrefixes Map of entity types to their prefixes
27
+ */
28
+ constructor(entityPrefixes?: EntityPrefixConfig);
29
+ /**
30
+ * Set or update entity prefixes and rebuild the reverse lookup
31
+ * @param entityPrefixes Map of entity types to their prefixes
32
+ */
33
+ setEntityPrefixes(entityPrefixes: EntityPrefixConfig): void;
34
+ /**
35
+ * Get all registered entity prefixes
36
+ * @returns The entity prefix configuration
37
+ */
38
+ getEntityPrefixes(): EntityPrefixConfig;
39
+ /**
40
+ * Generates a cryptographically secure random alphanumeric string
41
+ * @param length The length of the random string to generate
42
+ * @param charset Optional custom character set
43
+ * @returns Random alphanumeric string
44
+ */
45
+ generateRandomString(length?: number, charset?: string): string;
46
+ /**
47
+ * Generates a unique ID with an optional prefix
48
+ * @param prefix Optional prefix to add to the ID
49
+ * @param options Optional generation options
50
+ * @returns A unique identifier string
51
+ */
52
+ generate(prefix?: string, options?: IdGenerationOptions): string;
53
+ /**
54
+ * Generates a custom ID for an entity with format PREFIX_XXXXXX
55
+ * @param entityType The type of entity to generate an ID for
56
+ * @param options Optional generation options
57
+ * @returns A unique identifier string (e.g., "PROJ_A6B3J0")
58
+ * @throws {McpError} If the entity type is not registered
59
+ */
60
+ generateForEntity(entityType: string, options?: IdGenerationOptions): string;
61
+ /**
62
+ * Validates if a given ID matches the expected format for an entity type
63
+ * @param id The ID to validate
64
+ * @param entityType The expected entity type
65
+ * @param options Optional validation options
66
+ * @returns boolean indicating if the ID is valid
67
+ */
68
+ isValid(id: string, entityType: string, options?: IdGenerationOptions): boolean;
69
+ /**
70
+ * Strips the prefix from an ID
71
+ * @param id The ID to strip
72
+ * @param separator Optional custom separator
73
+ * @returns The ID without the prefix
74
+ */
75
+ stripPrefix(id: string, separator?: string): string;
76
+ /**
77
+ * Determines the entity type from an ID
78
+ * @param id The ID to get the entity type for
79
+ * @param separator Optional custom separator
80
+ * @returns The entity type
81
+ * @throws {McpError} If the ID format is invalid or entity type is unknown
82
+ */
83
+ getEntityType(id: string, separator?: string): string;
84
+ /**
85
+ * Normalizes an entity ID to ensure consistent uppercase format
86
+ * @param id The ID to normalize
87
+ * @param separator Optional custom separator
88
+ * @returns The normalized ID in uppercase format
89
+ */
90
+ normalize(id: string, separator?: string): string;
91
+ }
92
+ export declare const idGenerator: IdGenerator;
93
+ export declare const generateUUID: () => string;
94
+ //# sourceMappingURL=idGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idGenerator.d.ts","sourceRoot":"","sources":["../../../src/utils/security/idGenerator.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,eAAe,CAA0C;IAExE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAO;IAEvC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAK;IAElC,OAAO,CAAC,cAAc,CAA0B;IAEhD,OAAO,CAAC,kBAAkB,CAA8B;IAExD;;;OAGG;gBACS,cAAc,GAAE,kBAAuB;IAInD;;;OAGG;IACI,iBAAiB,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI;IAgBlE;;;OAGG;IACI,iBAAiB,IAAI,kBAAkB;IAI9C;;;;;OAKG;IACI,oBAAoB,CACzB,MAAM,GAAE,MAAmC,EAC3C,OAAO,GAAE,MAAoC,GAC5C,MAAM;IAYT;;;;;OAKG;IACI,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM;IAY3E;;;;;;OAMG;IACI,iBAAiB,CACtB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAwB,GAChC,MAAM;IAaT;;;;;;OAMG;IACI,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO;IAeV;;;;;OAKG;IACI,WAAW,CAChB,EAAE,EAAE,MAAM,EACV,SAAS,GAAE,MAAsC,GAChD,MAAM;IAIT;;;;;;OAMG;IACI,aAAa,CAClB,EAAE,EAAE,MAAM,EACV,SAAS,GAAE,MAAsC,GAChD,MAAM;IAsBT;;;;;OAKG;IACI,SAAS,CACd,EAAE,EAAE,MAAM,EACV,SAAS,GAAE,MAAsC,GAChD,MAAM;CAeV;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC;AAG7C,eAAO,MAAM,YAAY,QAAO,MAE/B,CAAC"}
@@ -52,7 +52,8 @@ export class IdGenerator {
52
52
  const bytes = randomBytes(length);
53
53
  let result = "";
54
54
  for (let i = 0; i < length; i++) {
55
- result += charset[bytes[i] % charset.length];
55
+ const byte = bytes[i] ?? 0;
56
+ result += charset[byte % charset.length];
56
57
  }
57
58
  return result;
58
59
  }
@@ -134,7 +135,12 @@ export class IdGenerator {
134
135
  normalize(id, separator = IdGenerator.DEFAULT_SEPARATOR) {
135
136
  const entityType = this.getEntityType(id, separator);
136
137
  const idParts = id.split(separator);
137
- return `${this.entityPrefixes[entityType]}${separator}${idParts[1].toUpperCase()}`;
138
+ const randomPart = idParts[1];
139
+ if (!randomPart) {
140
+ // This case should theoretically be caught by getEntityType, but this adds robustness
141
+ throw new McpError(BaseErrorCode.VALIDATION_ERROR, `Invalid ID format for normalization: ${id}. Random part is missing.`);
142
+ }
143
+ return `${this.entityPrefixes[entityType]}${separator}${randomPart.toUpperCase()}`;
138
144
  }
139
145
  }
140
146
  // Create and export a default instance with an empty entity prefix configuration
@@ -143,3 +149,4 @@ export const idGenerator = new IdGenerator();
143
149
  export const generateUUID = () => {
144
150
  return cryptoRandomUUID(); // Use imported cryptoRandomUUID
145
151
  };
152
+ //# sourceMappingURL=idGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idGenerator.js","sourceRoot":"","sources":["../../../src/utils/security/idGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,QAAQ,CAAC,CAAC,0BAA0B;AAChG,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC,CAAC,iBAAiB;AAkBzF;;GAEG;AACH,MAAM,OAAO,WAAW;IACtB,kBAAkB;IACV,MAAM,CAAC,eAAe,GAAG,sCAAsC,CAAC;IACxE,oBAAoB;IACZ,MAAM,CAAC,iBAAiB,GAAG,GAAG,CAAC;IACvC,6BAA6B;IACrB,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC;IAClC,kBAAkB;IACV,cAAc,GAAuB,EAAE,CAAC;IAChD,mDAAmD;IAC3C,kBAAkB,GAA2B,EAAE,CAAC;IAExD;;;OAGG;IACH,YAAY,iBAAqC,EAAE;QACjD,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,cAAkC;QACzD,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;QAE5C,0BAA0B;QAC1B,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAClE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE;YACtB,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC;YACjC,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAA4B,CAC7B,CAAC;QAEF,sFAAsF;IACxF,CAAC;IAED;;;OAGG;IACI,iBAAiB;QACtB,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACI,oBAAoB,CACzB,SAAiB,WAAW,CAAC,cAAc,EAC3C,UAAkB,WAAW,CAAC,eAAe;QAE7C,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,IAAI,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,QAAQ,CAAC,MAAe,EAAE,UAA+B,EAAE;QAChE,MAAM,EACJ,MAAM,GAAG,WAAW,CAAC,cAAc,EACnC,SAAS,GAAG,WAAW,CAAC,iBAAiB,EACzC,OAAO,GAAG,WAAW,CAAC,eAAe,GACtC,GAAG,OAAO,CAAC;QAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9D,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IACpE,CAAC;IAED;;;;;;OAMG;IACI,iBAAiB,CACtB,UAAkB,EAClB,UAA+B,EAAE;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAChB,aAAa,CAAC,gBAAgB,EAC9B,wBAAwB,UAAU,EAAE,CACrC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CACZ,EAAU,EACV,UAAkB,EAClB,UAA+B,EAAE;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,EACJ,MAAM,GAAG,WAAW,CAAC,cAAc,EACnC,SAAS,GAAG,WAAW,CAAC,iBAAiB,GAC1C,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,MAAM,GAAG,SAAS,YAAY,MAAM,IAAI,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAChB,EAAU,EACV,YAAoB,WAAW,CAAC,iBAAiB;QAEjD,OAAO,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACI,aAAa,CAClB,EAAU,EACV,YAAoB,WAAW,CAAC,iBAAiB;QAEjD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,QAAQ,CAChB,aAAa,CAAC,gBAAgB,EAC9B,sBAAsB,EAAE,4BAA4B,SAAS,QAAQ,CACtE,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEnD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,QAAQ,CAChB,aAAa,CAAC,gBAAgB,EAC9B,+BAA+B,MAAM,EAAE,CACxC,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACI,SAAS,CACd,EAAU,EACV,YAAoB,WAAW,CAAC,iBAAiB;QAEjD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,sFAAsF;YACtF,MAAM,IAAI,QAAQ,CAChB,aAAa,CAAC,gBAAgB,EAC9B,wCAAwC,EAAE,2BAA2B,CACtE,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;IACrF,CAAC;;AAGH,iFAAiF;AACjF,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAE7C,yCAAyC;AACzC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE;IACvC,OAAO,gBAAgB,EAAE,CAAC,CAAC,gCAAgC;AAC7D,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./sanitization.js";
2
+ export * from "./rateLimiter.js";
3
+ export * from "./idGenerator.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/security/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from "./sanitization.js";
2
2
  export * from "./rateLimiter.js";
3
3
  export * from "./idGenerator.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/security/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { RequestContext } from "../index.js";
2
+ /**
3
+ * Rate limiting configuration options
4
+ */
5
+ export interface RateLimitConfig {
6
+ /** Time window in milliseconds */
7
+ windowMs: number;
8
+ /** Maximum number of requests allowed in the window */
9
+ maxRequests: number;
10
+ /** Custom error message template */
11
+ errorMessage?: string;
12
+ /** Whether to skip rate limiting in certain environments (e.g. development) */
13
+ skipInDevelopment?: boolean;
14
+ /** Custom key generator function */
15
+ keyGenerator?: (identifier: string, context?: RequestContext) => string;
16
+ /** How often to run cleanup of expired entries (in milliseconds) */
17
+ cleanupInterval?: number;
18
+ }
19
+ /**
20
+ * Individual rate limit entry
21
+ */
22
+ export interface RateLimitEntry {
23
+ /** Current request count */
24
+ count: number;
25
+ /** When the window resets (timestamp) */
26
+ resetTime: number;
27
+ }
28
+ /**
29
+ * Generic rate limiter that can be used across the application
30
+ */
31
+ export declare class RateLimiter {
32
+ private config;
33
+ /** Map storing rate limit data */
34
+ private limits;
35
+ /** Cleanup interval timer */
36
+ private cleanupTimer;
37
+ /** Default configuration */
38
+ private static DEFAULT_CONFIG;
39
+ /**
40
+ * Create a new rate limiter
41
+ * @param config Rate limiting configuration
42
+ */
43
+ constructor(config: RateLimitConfig);
44
+ /**
45
+ * Start the cleanup timer to periodically remove expired entries
46
+ */
47
+ private startCleanupTimer;
48
+ /**
49
+ * Clean up expired rate limit entries to prevent memory leaks
50
+ */
51
+ private cleanupExpiredEntries;
52
+ /**
53
+ * Update rate limiter configuration
54
+ * @param config New configuration options
55
+ */
56
+ configure(config: Partial<RateLimitConfig>): void;
57
+ /**
58
+ * Get current configuration
59
+ * @returns Current rate limit configuration
60
+ */
61
+ getConfig(): RateLimitConfig;
62
+ /**
63
+ * Reset all rate limits
64
+ */
65
+ reset(): void;
66
+ /**
67
+ * Check if a request exceeds the rate limit
68
+ * @param key Unique identifier for the request source
69
+ * @param context Optional request context
70
+ * @throws {McpError} If rate limit is exceeded
71
+ */
72
+ check(key: string, context?: RequestContext): void;
73
+ /**
74
+ * Get rate limit information for a key
75
+ * @param key The rate limit key
76
+ * @returns Current rate limit status or null if no record exists
77
+ */
78
+ getStatus(key: string): {
79
+ current: number;
80
+ limit: number;
81
+ remaining: number;
82
+ resetTime: number;
83
+ } | null;
84
+ /**
85
+ * Stop the cleanup timer when the limiter is no longer needed
86
+ */
87
+ dispose(): void;
88
+ }
89
+ /**
90
+ * Create and export a default rate limiter instance
91
+ */
92
+ export declare const rateLimiter: RateLimiter;
93
+ //# sourceMappingURL=rateLimiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimiter.d.ts","sourceRoot":"","sources":["../../../src/utils/security/rateLimiter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,cAAc,EAAE,MAAM,aAAa,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oCAAoC;IACpC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,MAAM,CAAC;IACxE,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,WAAW;IAmBV,OAAO,CAAC,MAAM;IAlB1B,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAA8B;IAC5C,6BAA6B;IAC7B,OAAO,CAAC,YAAY,CAA+B;IACnD,4BAA4B;IAC5B,OAAO,CAAC,MAAM,CAAC,cAAc,CAO3B;IAEF;;;OAGG;gBACiB,MAAM,EAAE,eAAe;IAQ3C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IASxD;;;OAGG;IACI,SAAS,IAAI,eAAe;IAInC;;OAEG;IACI,KAAK,IAAI,IAAI;IAKpB;;;;;OAKG;IACI,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IAqDzD;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI;IAeR;;OAEG;IACI,OAAO,IAAI,IAAI;CASvB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAGtB,CAAC"}
@@ -174,3 +174,4 @@ export const rateLimiter = new RateLimiter({
174
174
  windowMs: 15 * 60 * 1000, // 15 minutes
175
175
  maxRequests: 100, // 100 requests per window
176
176
  });
177
+ //# sourceMappingURL=rateLimiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimiter.js","sourceRoot":"","sources":["../../../src/utils/security/rateLimiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ import sanitizeHtml from "sanitize-html";
2
+ /**
3
+ * Options for path sanitization.
4
+ */
5
+ export interface PathSanitizeOptions {
6
+ /**
7
+ * Restrict paths to a specific root directory.
8
+ * If provided, the sanitized path will be relative to this root,
9
+ * and attempts to traverse above this root will be prevented.
10
+ */
11
+ rootDir?: string;
12
+ /**
13
+ * Normalize Windows-style backslashes (`\\`) to POSIX-style forward slashes (`/`).
14
+ * Defaults to `false`.
15
+ */
16
+ toPosix?: boolean;
17
+ /**
18
+ * Allow absolute paths.
19
+ * If `false` (default), absolute paths will be converted to relative paths
20
+ * (by removing leading slashes or drive letters).
21
+ * If `true`, absolute paths are permitted, subject to `rootDir` constraints if provided.
22
+ */
23
+ allowAbsolute?: boolean;
24
+ }
25
+ /**
26
+ * Information returned by the sanitizePath method, providing details about the sanitization process.
27
+ */
28
+ export interface SanitizedPathInfo {
29
+ /** The final sanitized and normalized path string. */
30
+ sanitizedPath: string;
31
+ /** The original path string passed to the function before any normalization or sanitization. */
32
+ originalInput: string;
33
+ /** Indicates if the input path was determined to be absolute after initial `path.normalize()`. */
34
+ wasAbsolute: boolean;
35
+ /**
36
+ * Indicates if an initially absolute path was converted to a relative path.
37
+ * This typically happens if `options.allowAbsolute` was `false`.
38
+ */
39
+ convertedToRelative: boolean;
40
+ /** The effective options that were used for sanitization, including defaults. */
41
+ optionsUsed: PathSanitizeOptions;
42
+ }
43
+ /**
44
+ * Context-specific input sanitization options
45
+ */
46
+ export interface SanitizeStringOptions {
47
+ /** Handle content differently based on context */
48
+ context?: "text" | "html" | "attribute" | "url" | "javascript";
49
+ /** Custom allowed tags when using html context */
50
+ allowedTags?: string[];
51
+ /** Custom allowed attributes when using html context */
52
+ allowedAttributes?: Record<string, string[]>;
53
+ }
54
+ /**
55
+ * Configuration for HTML sanitization
56
+ */
57
+ export interface HtmlSanitizeConfig {
58
+ /** Allowed HTML tags */
59
+ allowedTags?: string[];
60
+ /** Allowed HTML attributes (global or per-tag) */
61
+ allowedAttributes?: sanitizeHtml.IOptions["allowedAttributes"];
62
+ /** Allow preserving comments - uses allowedTags internally */
63
+ preserveComments?: boolean;
64
+ /** Custom URL sanitizer */
65
+ transformTags?: sanitizeHtml.IOptions["transformTags"];
66
+ }
67
+ /**
68
+ * Sanitization class for handling various input sanitization tasks.
69
+ * Provides methods to clean and validate strings, HTML, URLs, paths, JSON, and numbers.
70
+ */
71
+ export declare class Sanitization {
72
+ private static instance;
73
+ /** Default list of sensitive fields for sanitizing logs */
74
+ private sensitiveFields;
75
+ /** Default sanitize-html configuration */
76
+ private defaultHtmlSanitizeConfig;
77
+ /**
78
+ * Private constructor to enforce singleton pattern.
79
+ */
80
+ private constructor();
81
+ /**
82
+ * Get the singleton Sanitization instance.
83
+ * @returns {Sanitization} The singleton instance.
84
+ */
85
+ static getInstance(): Sanitization;
86
+ /**
87
+ * Set sensitive fields for log sanitization. These fields will be redacted when
88
+ * `sanitizeForLogging` is called.
89
+ * @param {string[]} fields - Array of field names to consider sensitive.
90
+ */
91
+ setSensitiveFields(fields: string[]): void;
92
+ /**
93
+ * Get the current list of sensitive fields used for log sanitization.
94
+ * @returns {string[]} Array of sensitive field names.
95
+ */
96
+ getSensitiveFields(): string[];
97
+ /**
98
+ * Sanitize HTML content using the `sanitize-html` library.
99
+ * Removes potentially malicious tags and attributes.
100
+ * @param {string} input - HTML string to sanitize.
101
+ * @param {HtmlSanitizeConfig} [config] - Optional custom sanitization configuration.
102
+ * @returns {string} Sanitized HTML string.
103
+ */
104
+ sanitizeHtml(input: string, config?: HtmlSanitizeConfig): string;
105
+ /**
106
+ * Sanitize string input based on context.
107
+ *
108
+ * **Important:** Using `context: 'javascript'` is explicitly disallowed and will throw an `McpError`.
109
+ * This is a security measure to prevent accidental execution or ineffective sanitization of JavaScript code.
110
+ *
111
+ * @param {string} input - String to sanitize.
112
+ * @param {SanitizeStringOptions} [options={}] - Sanitization options.
113
+ * @returns {string} Sanitized string.
114
+ * @throws {McpError} If `context: 'javascript'` is used.
115
+ */
116
+ sanitizeString(input: string, options?: SanitizeStringOptions): string;
117
+ /**
118
+ * Sanitize URL with robust validation.
119
+ * Ensures the URL uses allowed protocols and is well-formed.
120
+ * @param {string} input - URL to sanitize.
121
+ * @param {string[]} [allowedProtocols=['http', 'https']] - Allowed URL protocols.
122
+ * @returns {string} Sanitized URL.
123
+ * @throws {McpError} If URL is invalid or uses a disallowed protocol.
124
+ */
125
+ sanitizeUrl(input: string, allowedProtocols?: string[]): string;
126
+ /**
127
+ * Sanitizes a file path to prevent path traversal and other common attacks.
128
+ * Normalizes the path, optionally converts to POSIX style, and can restrict
129
+ * the path to a root directory.
130
+ *
131
+ * @param {string} input - The file path to sanitize.
132
+ * @param {PathSanitizeOptions} [options={}] - Options to control sanitization behavior.
133
+ * @returns {SanitizedPathInfo} An object containing the sanitized path and metadata about the sanitization process.
134
+ * @throws {McpError} If the path is invalid, unsafe (e.g., contains null bytes, attempts traversal).
135
+ */
136
+ sanitizePath(input: string, options?: PathSanitizeOptions): SanitizedPathInfo;
137
+ /**
138
+ * Sanitize a JSON string. Validates format and optionally checks size.
139
+ * @template T - The expected type of the parsed JSON object.
140
+ * @param {string} input - JSON string to sanitize.
141
+ * @param {number} [maxSize] - Maximum allowed size in bytes.
142
+ * @returns {T} Parsed and sanitized object.
143
+ * @throws {McpError} If JSON is invalid, too large, or input is not a string.
144
+ */
145
+ sanitizeJson<T = unknown>(input: string, maxSize?: number): T;
146
+ /**
147
+ * Ensure input is a valid number and optionally within a numeric range.
148
+ * Clamps the number to the range if min/max are provided and value is outside.
149
+ * @param {number | string} input - Number or string to validate.
150
+ * @param {number} [min] - Minimum allowed value (inclusive).
151
+ * @param {number} [max] - Maximum allowed value (inclusive).
152
+ * @returns {number} Sanitized number.
153
+ * @throws {McpError} If input is not a valid number or parsable string.
154
+ */
155
+ sanitizeNumber(input: number | string, min?: number, max?: number): number;
156
+ /**
157
+ * Sanitize input for logging to protect sensitive information.
158
+ * Deep clones the input and redacts fields matching `this.sensitiveFields`.
159
+ * @param {unknown} input - Input to sanitize.
160
+ * @returns {unknown} Sanitized input safe for logging.
161
+ */
162
+ sanitizeForLogging(input: unknown): unknown;
163
+ /**
164
+ * Private helper to convert attribute format for sanitize-html.
165
+ */
166
+ private convertAttributesFormat;
167
+ /**
168
+ * Recursively redact sensitive fields in an object or array.
169
+ * Modifies the object in place.
170
+ * @param {unknown} obj - The object or array to redact.
171
+ */
172
+ private redactSensitiveFields;
173
+ }
174
+ export declare const sanitization: Sanitization;
175
+ /**
176
+ * Convenience function to sanitize input for logging.
177
+ * @param {unknown} input - Input to sanitize.
178
+ * @returns {unknown} Sanitized input safe for logging.
179
+ */
180
+ export declare const sanitizeInputForLogging: (input: unknown) => unknown;
181
+ //# sourceMappingURL=sanitization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitization.d.ts","sourceRoot":"","sources":["../../../src/utils/security/sanitization.ts"],"names":[],"mappings":"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"}