@ibm/ibmi-mcp-server 0.1.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 (482) hide show
  1. package/README.md +88 -0
  2. package/dist/config/index.d.ts +100 -0
  3. package/dist/config/index.d.ts.map +1 -0
  4. package/dist/config/index.js +463 -0
  5. package/dist/config/index.js.map +1 -0
  6. package/dist/config/resolver.d.ts +32 -0
  7. package/dist/config/resolver.d.ts.map +1 -0
  8. package/dist/config/resolver.js +60 -0
  9. package/dist/config/resolver.js.map +1 -0
  10. package/dist/ibmi-mcp-server/auth/crypto.d.ts +11 -0
  11. package/dist/ibmi-mcp-server/auth/crypto.d.ts.map +1 -0
  12. package/dist/ibmi-mcp-server/auth/crypto.js +100 -0
  13. package/dist/ibmi-mcp-server/auth/crypto.js.map +1 -0
  14. package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.d.ts +28 -0
  15. package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.d.ts.map +1 -0
  16. package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js +243 -0
  17. package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js.map +1 -0
  18. package/dist/ibmi-mcp-server/auth/index.d.ts +9 -0
  19. package/dist/ibmi-mcp-server/auth/index.d.ts.map +1 -0
  20. package/dist/ibmi-mcp-server/auth/index.js +8 -0
  21. package/dist/ibmi-mcp-server/auth/index.js.map +1 -0
  22. package/dist/ibmi-mcp-server/auth/tokenManager.d.ts +86 -0
  23. package/dist/ibmi-mcp-server/auth/tokenManager.d.ts.map +1 -0
  24. package/dist/ibmi-mcp-server/auth/tokenManager.js +214 -0
  25. package/dist/ibmi-mcp-server/auth/tokenManager.js.map +1 -0
  26. package/dist/ibmi-mcp-server/auth/types.d.ts +31 -0
  27. package/dist/ibmi-mcp-server/auth/types.d.ts.map +1 -0
  28. package/dist/ibmi-mcp-server/auth/types.js +5 -0
  29. package/dist/ibmi-mcp-server/auth/types.js.map +1 -0
  30. package/dist/ibmi-mcp-server/index.d.ts +8 -0
  31. package/dist/ibmi-mcp-server/index.d.ts.map +1 -0
  32. package/dist/ibmi-mcp-server/index.js +126 -0
  33. package/dist/ibmi-mcp-server/index.js.map +1 -0
  34. package/dist/ibmi-mcp-server/resources/toolsetsResource/index.d.ts +7 -0
  35. package/dist/ibmi-mcp-server/resources/toolsetsResource/index.d.ts.map +1 -0
  36. package/dist/ibmi-mcp-server/resources/toolsetsResource/index.js +7 -0
  37. package/dist/ibmi-mcp-server/resources/toolsetsResource/index.js.map +1 -0
  38. package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.d.ts +106 -0
  39. package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.d.ts.map +1 -0
  40. package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.js +145 -0
  41. package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.js.map +1 -0
  42. package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.d.ts +16 -0
  43. package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.d.ts.map +1 -0
  44. package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.js +110 -0
  45. package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.js.map +1 -0
  46. package/dist/ibmi-mcp-server/schemas/common.d.ts +174 -0
  47. package/dist/ibmi-mcp-server/schemas/common.d.ts.map +1 -0
  48. package/dist/ibmi-mcp-server/schemas/common.js +119 -0
  49. package/dist/ibmi-mcp-server/schemas/common.js.map +1 -0
  50. package/dist/ibmi-mcp-server/schemas/config.d.ts +858 -0
  51. package/dist/ibmi-mcp-server/schemas/config.d.ts.map +1 -0
  52. package/dist/ibmi-mcp-server/schemas/config.js +248 -0
  53. package/dist/ibmi-mcp-server/schemas/config.js.map +1 -0
  54. package/dist/ibmi-mcp-server/schemas/index.d.ts +12 -0
  55. package/dist/ibmi-mcp-server/schemas/index.d.ts.map +1 -0
  56. package/dist/ibmi-mcp-server/schemas/index.js +20 -0
  57. package/dist/ibmi-mcp-server/schemas/index.js.map +1 -0
  58. package/dist/ibmi-mcp-server/schemas/tools.d.ts +287 -0
  59. package/dist/ibmi-mcp-server/schemas/tools.d.ts.map +1 -0
  60. package/dist/ibmi-mcp-server/schemas/tools.js +167 -0
  61. package/dist/ibmi-mcp-server/schemas/tools.js.map +1 -0
  62. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts +82 -0
  63. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts.map +1 -0
  64. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js +262 -0
  65. package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js.map +1 -0
  66. package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts +130 -0
  67. package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts.map +1 -0
  68. package/dist/ibmi-mcp-server/services/baseConnectionPool.js +431 -0
  69. package/dist/ibmi-mcp-server/services/baseConnectionPool.js.map +1 -0
  70. package/dist/ibmi-mcp-server/services/connectionPool.d.ts +60 -0
  71. package/dist/ibmi-mcp-server/services/connectionPool.d.ts.map +1 -0
  72. package/dist/ibmi-mcp-server/services/connectionPool.js +153 -0
  73. package/dist/ibmi-mcp-server/services/connectionPool.js.map +1 -0
  74. package/dist/ibmi-mcp-server/services/securityValidation.d.ts +35 -0
  75. package/dist/ibmi-mcp-server/services/securityValidation.d.ts.map +1 -0
  76. package/dist/ibmi-mcp-server/services/securityValidation.js +93 -0
  77. package/dist/ibmi-mcp-server/services/securityValidation.js.map +1 -0
  78. package/dist/ibmi-mcp-server/services/sourceManager.d.ts +82 -0
  79. package/dist/ibmi-mcp-server/services/sourceManager.d.ts.map +1 -0
  80. package/dist/ibmi-mcp-server/services/sourceManager.js +151 -0
  81. package/dist/ibmi-mcp-server/services/sourceManager.js.map +1 -0
  82. package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts +9 -0
  83. package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts.map +1 -0
  84. package/dist/ibmi-mcp-server/tools/executeSql/index.js +9 -0
  85. package/dist/ibmi-mcp-server/tools/executeSql/index.js.map +1 -0
  86. package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts +51 -0
  87. package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts.map +1 -0
  88. package/dist/ibmi-mcp-server/tools/executeSql/logic.js +179 -0
  89. package/dist/ibmi-mcp-server/tools/executeSql/logic.js.map +1 -0
  90. package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts +52 -0
  91. package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts.map +1 -0
  92. package/dist/ibmi-mcp-server/tools/executeSql/registration.js +161 -0
  93. package/dist/ibmi-mcp-server/tools/executeSql/registration.js.map +1 -0
  94. package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts +13 -0
  95. package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts.map +1 -0
  96. package/dist/ibmi-mcp-server/tools/generateSql/index.js +13 -0
  97. package/dist/ibmi-mcp-server/tools/generateSql/index.js.map +1 -0
  98. package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts +64 -0
  99. package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts.map +1 -0
  100. package/dist/ibmi-mcp-server/tools/generateSql/logic.js +190 -0
  101. package/dist/ibmi-mcp-server/tools/generateSql/logic.js.map +1 -0
  102. package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts +18 -0
  103. package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts.map +1 -0
  104. package/dist/ibmi-mcp-server/tools/generateSql/registration.js +64 -0
  105. package/dist/ibmi-mcp-server/tools/generateSql/registration.js.map +1 -0
  106. package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts +42 -0
  107. package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts.map +1 -0
  108. package/dist/ibmi-mcp-server/utils/cli/argumentParser.js +156 -0
  109. package/dist/ibmi-mcp-server/utils/cli/argumentParser.js.map +1 -0
  110. package/dist/ibmi-mcp-server/utils/cli/index.d.ts +6 -0
  111. package/dist/ibmi-mcp-server/utils/cli/index.d.ts.map +1 -0
  112. package/dist/ibmi-mcp-server/utils/cli/index.js +6 -0
  113. package/dist/ibmi-mcp-server/utils/cli/index.js.map +1 -0
  114. package/dist/ibmi-mcp-server/utils/config/configParser.d.ts +77 -0
  115. package/dist/ibmi-mcp-server/utils/config/configParser.d.ts.map +1 -0
  116. package/dist/ibmi-mcp-server/utils/config/configParser.js +309 -0
  117. package/dist/ibmi-mcp-server/utils/config/configParser.js.map +1 -0
  118. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts +143 -0
  119. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts.map +1 -0
  120. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js +665 -0
  121. package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js.map +1 -0
  122. package/dist/ibmi-mcp-server/utils/config/toolConfigCache.d.ts +71 -0
  123. package/dist/ibmi-mcp-server/utils/config/toolConfigCache.d.ts.map +1 -0
  124. package/dist/ibmi-mcp-server/utils/config/toolConfigCache.js +158 -0
  125. package/dist/ibmi-mcp-server/utils/config/toolConfigCache.js.map +1 -0
  126. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts +206 -0
  127. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts.map +1 -0
  128. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js +236 -0
  129. package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js.map +1 -0
  130. package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +65 -0
  131. package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -0
  132. package/dist/ibmi-mcp-server/utils/config/toolFactory.js +236 -0
  133. package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -0
  134. package/dist/ibmi-mcp-server/utils/config/toolProcessor.d.ts +175 -0
  135. package/dist/ibmi-mcp-server/utils/config/toolProcessor.d.ts.map +1 -0
  136. package/dist/ibmi-mcp-server/utils/config/toolProcessor.js +460 -0
  137. package/dist/ibmi-mcp-server/utils/config/toolProcessor.js.map +1 -0
  138. package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts +126 -0
  139. package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts.map +1 -0
  140. package/dist/ibmi-mcp-server/utils/config/toolsetManager.js +240 -0
  141. package/dist/ibmi-mcp-server/utils/config/toolsetManager.js.map +1 -0
  142. package/dist/ibmi-mcp-server/utils/config/types.d.ts +74 -0
  143. package/dist/ibmi-mcp-server/utils/config/types.d.ts.map +1 -0
  144. package/dist/ibmi-mcp-server/utils/config/types.js +8 -0
  145. package/dist/ibmi-mcp-server/utils/config/types.js.map +1 -0
  146. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts +116 -0
  147. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts.map +1 -0
  148. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +426 -0
  149. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -0
  150. package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.d.ts +182 -0
  151. package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.d.ts.map +1 -0
  152. package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.js +726 -0
  153. package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.js.map +1 -0
  154. package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.d.ts +90 -0
  155. package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.d.ts.map +1 -0
  156. package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.js +187 -0
  157. package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.js.map +1 -0
  158. package/dist/index.d.ts +10 -0
  159. package/dist/index.d.ts.map +1 -0
  160. package/dist/index.js +270 -0
  161. package/dist/index.js.map +1 -0
  162. package/dist/mcp-server/constants.d.ts +13 -0
  163. package/dist/mcp-server/constants.d.ts.map +1 -0
  164. package/dist/mcp-server/constants.js +13 -0
  165. package/dist/mcp-server/constants.js.map +1 -0
  166. package/dist/mcp-server/logging/index.d.ts +8 -0
  167. package/dist/mcp-server/logging/index.d.ts.map +1 -0
  168. package/dist/mcp-server/logging/index.js +8 -0
  169. package/dist/mcp-server/logging/index.js.map +1 -0
  170. package/dist/mcp-server/logging/setLevelHandler.d.ts +38 -0
  171. package/dist/mcp-server/logging/setLevelHandler.d.ts.map +1 -0
  172. package/dist/mcp-server/logging/setLevelHandler.js +83 -0
  173. package/dist/mcp-server/logging/setLevelHandler.js.map +1 -0
  174. package/dist/mcp-server/resources/echoResource/index.d.ts +14 -0
  175. package/dist/mcp-server/resources/echoResource/index.d.ts.map +1 -0
  176. package/dist/mcp-server/resources/echoResource/index.js +14 -0
  177. package/dist/mcp-server/resources/echoResource/index.js.map +1 -0
  178. package/dist/mcp-server/resources/echoResource/logic.d.ts +37 -0
  179. package/dist/mcp-server/resources/echoResource/logic.d.ts.map +1 -0
  180. package/dist/mcp-server/resources/echoResource/logic.js +46 -0
  181. package/dist/mcp-server/resources/echoResource/logic.js.map +1 -0
  182. package/dist/mcp-server/resources/echoResource/registration.d.ts +7 -0
  183. package/dist/mcp-server/resources/echoResource/registration.d.ts.map +1 -0
  184. package/dist/mcp-server/resources/echoResource/registration.js +51 -0
  185. package/dist/mcp-server/resources/echoResource/registration.js.map +1 -0
  186. package/dist/mcp-server/resources/index.d.ts +10 -0
  187. package/dist/mcp-server/resources/index.d.ts.map +1 -0
  188. package/dist/mcp-server/resources/index.js +19 -0
  189. package/dist/mcp-server/resources/index.js.map +1 -0
  190. package/dist/mcp-server/resources/utils/resource-utils.d.ts +43 -0
  191. package/dist/mcp-server/resources/utils/resource-utils.d.ts.map +1 -0
  192. package/dist/mcp-server/resources/utils/resource-utils.js +44 -0
  193. package/dist/mcp-server/resources/utils/resource-utils.js.map +1 -0
  194. package/dist/mcp-server/server.d.ts +23 -0
  195. package/dist/mcp-server/server.d.ts.map +1 -0
  196. package/dist/mcp-server/server.js +114 -0
  197. package/dist/mcp-server/server.js.map +1 -0
  198. package/dist/mcp-server/tools/catFactFetcher/index.d.ts +8 -0
  199. package/dist/mcp-server/tools/catFactFetcher/index.d.ts.map +1 -0
  200. package/dist/mcp-server/tools/catFactFetcher/index.js +8 -0
  201. package/dist/mcp-server/tools/catFactFetcher/index.js.map +1 -0
  202. package/dist/mcp-server/tools/catFactFetcher/logic.d.ts +52 -0
  203. package/dist/mcp-server/tools/catFactFetcher/logic.d.ts.map +1 -0
  204. package/dist/mcp-server/tools/catFactFetcher/logic.js +95 -0
  205. package/dist/mcp-server/tools/catFactFetcher/logic.js.map +1 -0
  206. package/dist/mcp-server/tools/catFactFetcher/registration.d.ts +9 -0
  207. package/dist/mcp-server/tools/catFactFetcher/registration.d.ts.map +1 -0
  208. package/dist/mcp-server/tools/catFactFetcher/registration.js +43 -0
  209. package/dist/mcp-server/tools/catFactFetcher/registration.js.map +1 -0
  210. package/dist/mcp-server/tools/echoTool/index.d.ts +13 -0
  211. package/dist/mcp-server/tools/echoTool/index.d.ts.map +1 -0
  212. package/dist/mcp-server/tools/echoTool/index.js +13 -0
  213. package/dist/mcp-server/tools/echoTool/index.js.map +1 -0
  214. package/dist/mcp-server/tools/echoTool/logic.d.ts +69 -0
  215. package/dist/mcp-server/tools/echoTool/logic.d.ts.map +1 -0
  216. package/dist/mcp-server/tools/echoTool/logic.js +119 -0
  217. package/dist/mcp-server/tools/echoTool/logic.js.map +1 -0
  218. package/dist/mcp-server/tools/echoTool/registration.d.ts +9 -0
  219. package/dist/mcp-server/tools/echoTool/registration.d.ts.map +1 -0
  220. package/dist/mcp-server/tools/echoTool/registration.js +45 -0
  221. package/dist/mcp-server/tools/echoTool/registration.js.map +1 -0
  222. package/dist/mcp-server/tools/imageTest/index.d.ts +7 -0
  223. package/dist/mcp-server/tools/imageTest/index.d.ts.map +1 -0
  224. package/dist/mcp-server/tools/imageTest/index.js +7 -0
  225. package/dist/mcp-server/tools/imageTest/index.js.map +1 -0
  226. package/dist/mcp-server/tools/imageTest/logic.d.ts +27 -0
  227. package/dist/mcp-server/tools/imageTest/logic.d.ts.map +1 -0
  228. package/dist/mcp-server/tools/imageTest/logic.js +44 -0
  229. package/dist/mcp-server/tools/imageTest/logic.js.map +1 -0
  230. package/dist/mcp-server/tools/imageTest/registration.d.ts +9 -0
  231. package/dist/mcp-server/tools/imageTest/registration.d.ts.map +1 -0
  232. package/dist/mcp-server/tools/imageTest/registration.js +49 -0
  233. package/dist/mcp-server/tools/imageTest/registration.js.map +1 -0
  234. package/dist/mcp-server/tools/index.d.ts +4 -0
  235. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  236. package/dist/mcp-server/tools/index.js +13 -0
  237. package/dist/mcp-server/tools/index.js.map +1 -0
  238. package/dist/mcp-server/tools/utils/tool-utils.d.ts +43 -0
  239. package/dist/mcp-server/tools/utils/tool-utils.d.ts.map +1 -0
  240. package/dist/mcp-server/tools/utils/tool-utils.js +44 -0
  241. package/dist/mcp-server/tools/utils/tool-utils.js.map +1 -0
  242. package/dist/mcp-server/transports/auth/authFactory.d.ts +11 -0
  243. package/dist/mcp-server/transports/auth/authFactory.d.ts.map +1 -0
  244. package/dist/mcp-server/transports/auth/authFactory.js +46 -0
  245. package/dist/mcp-server/transports/auth/authFactory.js.map +1 -0
  246. package/dist/mcp-server/transports/auth/authMiddleware.d.ts +20 -0
  247. package/dist/mcp-server/transports/auth/authMiddleware.d.ts.map +1 -0
  248. package/dist/mcp-server/transports/auth/authMiddleware.js +58 -0
  249. package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -0
  250. package/dist/mcp-server/transports/auth/index.d.ts +14 -0
  251. package/dist/mcp-server/transports/auth/index.d.ts.map +1 -0
  252. package/dist/mcp-server/transports/auth/index.js +12 -0
  253. package/dist/mcp-server/transports/auth/index.js.map +1 -0
  254. package/dist/mcp-server/transports/auth/lib/authContext.d.ts +34 -0
  255. package/dist/mcp-server/transports/auth/lib/authContext.d.ts.map +1 -0
  256. package/dist/mcp-server/transports/auth/lib/authContext.js +25 -0
  257. package/dist/mcp-server/transports/auth/lib/authContext.js.map +1 -0
  258. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +15 -0
  259. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -0
  260. package/dist/mcp-server/transports/auth/lib/authTypes.js +9 -0
  261. package/dist/mcp-server/transports/auth/lib/authTypes.js.map +1 -0
  262. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +19 -0
  263. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -0
  264. package/dist/mcp-server/transports/auth/lib/authUtils.js +53 -0
  265. package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -0
  266. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +18 -0
  267. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts.map +1 -0
  268. package/dist/mcp-server/transports/auth/strategies/authStrategy.js +2 -0
  269. package/dist/mcp-server/transports/auth/strategies/authStrategy.js.map +1 -0
  270. package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.d.ts +21 -0
  271. package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.d.ts.map +1 -0
  272. package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.js +64 -0
  273. package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.js.map +1 -0
  274. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +8 -0
  275. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -0
  276. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +118 -0
  277. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -0
  278. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +8 -0
  279. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -0
  280. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +118 -0
  281. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -0
  282. package/dist/mcp-server/transports/core/autoTransportManager.d.ts +48 -0
  283. package/dist/mcp-server/transports/core/autoTransportManager.d.ts.map +1 -0
  284. package/dist/mcp-server/transports/core/autoTransportManager.js +57 -0
  285. package/dist/mcp-server/transports/core/autoTransportManager.js.map +1 -0
  286. package/dist/mcp-server/transports/core/baseTransportManager.d.ts +17 -0
  287. package/dist/mcp-server/transports/core/baseTransportManager.d.ts.map +1 -0
  288. package/dist/mcp-server/transports/core/baseTransportManager.js +20 -0
  289. package/dist/mcp-server/transports/core/baseTransportManager.js.map +1 -0
  290. package/dist/mcp-server/transports/core/headerUtils.d.ts +27 -0
  291. package/dist/mcp-server/transports/core/headerUtils.d.ts.map +1 -0
  292. package/dist/mcp-server/transports/core/headerUtils.js +53 -0
  293. package/dist/mcp-server/transports/core/headerUtils.js.map +1 -0
  294. package/dist/mcp-server/transports/core/honoNodeBridge.d.ts +77 -0
  295. package/dist/mcp-server/transports/core/honoNodeBridge.d.ts.map +1 -0
  296. package/dist/mcp-server/transports/core/honoNodeBridge.js +150 -0
  297. package/dist/mcp-server/transports/core/honoNodeBridge.js.map +1 -0
  298. package/dist/mcp-server/transports/core/statefulTransportManager.d.ts +81 -0
  299. package/dist/mcp-server/transports/core/statefulTransportManager.d.ts.map +1 -0
  300. package/dist/mcp-server/transports/core/statefulTransportManager.js +326 -0
  301. package/dist/mcp-server/transports/core/statefulTransportManager.js.map +1 -0
  302. package/dist/mcp-server/transports/core/statelessTransportManager.d.ts +57 -0
  303. package/dist/mcp-server/transports/core/statelessTransportManager.d.ts.map +1 -0
  304. package/dist/mcp-server/transports/core/statelessTransportManager.js +151 -0
  305. package/dist/mcp-server/transports/core/statelessTransportManager.js.map +1 -0
  306. package/dist/mcp-server/transports/core/transportRequest.d.ts +9 -0
  307. package/dist/mcp-server/transports/core/transportRequest.d.ts.map +1 -0
  308. package/dist/mcp-server/transports/core/transportRequest.js +2 -0
  309. package/dist/mcp-server/transports/core/transportRequest.js.map +1 -0
  310. package/dist/mcp-server/transports/core/transportTypes.d.ts +112 -0
  311. package/dist/mcp-server/transports/core/transportTypes.d.ts.map +1 -0
  312. package/dist/mcp-server/transports/core/transportTypes.js +15 -0
  313. package/dist/mcp-server/transports/core/transportTypes.js.map +1 -0
  314. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +25 -0
  315. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -0
  316. package/dist/mcp-server/transports/http/httpErrorHandler.js +86 -0
  317. package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -0
  318. package/dist/mcp-server/transports/http/httpTransport.d.ts +27 -0
  319. package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -0
  320. package/dist/mcp-server/transports/http/httpTransport.js +407 -0
  321. package/dist/mcp-server/transports/http/httpTransport.js.map +1 -0
  322. package/dist/mcp-server/transports/http/httpTypes.d.ts +17 -0
  323. package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -0
  324. package/dist/mcp-server/transports/http/httpTypes.js +6 -0
  325. package/dist/mcp-server/transports/http/httpTypes.js.map +1 -0
  326. package/dist/mcp-server/transports/http/index.d.ts +8 -0
  327. package/dist/mcp-server/transports/http/index.d.ts.map +1 -0
  328. package/dist/mcp-server/transports/http/index.js +7 -0
  329. package/dist/mcp-server/transports/http/index.js.map +1 -0
  330. package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts +21 -0
  331. package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts.map +1 -0
  332. package/dist/mcp-server/transports/http/mcpTransportMiddleware.js +54 -0
  333. package/dist/mcp-server/transports/http/mcpTransportMiddleware.js.map +1 -0
  334. package/dist/mcp-server/transports/stdio/index.d.ts +6 -0
  335. package/dist/mcp-server/transports/stdio/index.d.ts.map +1 -0
  336. package/dist/mcp-server/transports/stdio/index.js +6 -0
  337. package/dist/mcp-server/transports/stdio/index.js.map +1 -0
  338. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +43 -0
  339. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -0
  340. package/dist/mcp-server/transports/stdio/stdioTransport.js +71 -0
  341. package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -0
  342. package/dist/services/duck-db/duckDBConnectionManager.d.ts +55 -0
  343. package/dist/services/duck-db/duckDBConnectionManager.d.ts.map +1 -0
  344. package/dist/services/duck-db/duckDBConnectionManager.js +184 -0
  345. package/dist/services/duck-db/duckDBConnectionManager.js.map +1 -0
  346. package/dist/services/duck-db/duckDBQueryExecutor.d.ts +18 -0
  347. package/dist/services/duck-db/duckDBQueryExecutor.d.ts.map +1 -0
  348. package/dist/services/duck-db/duckDBQueryExecutor.js +115 -0
  349. package/dist/services/duck-db/duckDBQueryExecutor.js.map +1 -0
  350. package/dist/services/duck-db/duckDBService.d.ts +27 -0
  351. package/dist/services/duck-db/duckDBService.d.ts.map +1 -0
  352. package/dist/services/duck-db/duckDBService.js +151 -0
  353. package/dist/services/duck-db/duckDBService.js.map +1 -0
  354. package/dist/services/duck-db/types.d.ts +135 -0
  355. package/dist/services/duck-db/types.d.ts.map +1 -0
  356. package/dist/services/duck-db/types.js +6 -0
  357. package/dist/services/duck-db/types.js.map +1 -0
  358. package/dist/services/llm-providers/openRouterProvider.d.ts +36 -0
  359. package/dist/services/llm-providers/openRouterProvider.d.ts.map +1 -0
  360. package/dist/services/llm-providers/openRouterProvider.js +235 -0
  361. package/dist/services/llm-providers/openRouterProvider.js.map +1 -0
  362. package/dist/services/supabase/supabaseClient.d.ts +25 -0
  363. package/dist/services/supabase/supabaseClient.d.ts.map +1 -0
  364. package/dist/services/supabase/supabaseClient.js +68 -0
  365. package/dist/services/supabase/supabaseClient.js.map +1 -0
  366. package/dist/storage/duckdbExample.d.ts +8 -0
  367. package/dist/storage/duckdbExample.d.ts.map +1 -0
  368. package/dist/storage/duckdbExample.js +197 -0
  369. package/dist/storage/duckdbExample.js.map +1 -0
  370. package/dist/types-global/errors.d.ts +101 -0
  371. package/dist/types-global/errors.d.ts.map +1 -0
  372. package/dist/types-global/errors.js +109 -0
  373. package/dist/types-global/errors.js.map +1 -0
  374. package/dist/utils/formatting/index.d.ts +10 -0
  375. package/dist/utils/formatting/index.d.ts.map +1 -0
  376. package/dist/utils/formatting/index.js +10 -0
  377. package/dist/utils/formatting/index.js.map +1 -0
  378. package/dist/utils/formatting/markdownBuilder.d.ts +348 -0
  379. package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -0
  380. package/dist/utils/formatting/markdownBuilder.js +501 -0
  381. package/dist/utils/formatting/markdownBuilder.js.map +1 -0
  382. package/dist/utils/formatting/sqlFormattingUtils.d.ts +69 -0
  383. package/dist/utils/formatting/sqlFormattingUtils.d.ts.map +1 -0
  384. package/dist/utils/formatting/sqlFormattingUtils.js +131 -0
  385. package/dist/utils/formatting/sqlFormattingUtils.js.map +1 -0
  386. package/dist/utils/formatting/tableFormatter.d.ts +268 -0
  387. package/dist/utils/formatting/tableFormatter.d.ts.map +1 -0
  388. package/dist/utils/formatting/tableFormatter.js +550 -0
  389. package/dist/utils/formatting/tableFormatter.js.map +1 -0
  390. package/dist/utils/index.d.ts +13 -0
  391. package/dist/utils/index.d.ts.map +1 -0
  392. package/dist/utils/index.js +21 -0
  393. package/dist/utils/index.js.map +1 -0
  394. package/dist/utils/internal/asyncContext.d.ts +35 -0
  395. package/dist/utils/internal/asyncContext.d.ts.map +1 -0
  396. package/dist/utils/internal/asyncContext.js +38 -0
  397. package/dist/utils/internal/asyncContext.js.map +1 -0
  398. package/dist/utils/internal/errorHandler.d.ts +95 -0
  399. package/dist/utils/internal/errorHandler.d.ts.map +1 -0
  400. package/dist/utils/internal/errorHandler.js +210 -0
  401. package/dist/utils/internal/errorHandler.js.map +1 -0
  402. package/dist/utils/internal/index.d.ts +12 -0
  403. package/dist/utils/internal/index.d.ts.map +1 -0
  404. package/dist/utils/internal/index.js +12 -0
  405. package/dist/utils/internal/index.js.map +1 -0
  406. package/dist/utils/internal/logger.d.ts +30 -0
  407. package/dist/utils/internal/logger.d.ts.map +1 -0
  408. package/dist/utils/internal/logger.js +228 -0
  409. package/dist/utils/internal/logger.js.map +1 -0
  410. package/dist/utils/internal/logging-helpers.d.ts +49 -0
  411. package/dist/utils/internal/logging-helpers.d.ts.map +1 -0
  412. package/dist/utils/internal/logging-helpers.js +60 -0
  413. package/dist/utils/internal/logging-helpers.js.map +1 -0
  414. package/dist/utils/internal/performance.d.ts +19 -0
  415. package/dist/utils/internal/performance.d.ts.map +1 -0
  416. package/dist/utils/internal/performance.js +110 -0
  417. package/dist/utils/internal/performance.js.map +1 -0
  418. package/dist/utils/internal/requestContext.d.ts +41 -0
  419. package/dist/utils/internal/requestContext.d.ts.map +1 -0
  420. package/dist/utils/internal/requestContext.js +47 -0
  421. package/dist/utils/internal/requestContext.js.map +1 -0
  422. package/dist/utils/metrics/index.d.ts +8 -0
  423. package/dist/utils/metrics/index.d.ts.map +1 -0
  424. package/dist/utils/metrics/index.js +8 -0
  425. package/dist/utils/metrics/index.js.map +1 -0
  426. package/dist/utils/metrics/tokenCounter.d.ts +36 -0
  427. package/dist/utils/metrics/tokenCounter.d.ts.map +1 -0
  428. package/dist/utils/metrics/tokenCounter.js +115 -0
  429. package/dist/utils/metrics/tokenCounter.js.map +1 -0
  430. package/dist/utils/network/fetchWithTimeout.d.ts +22 -0
  431. package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -0
  432. package/dist/utils/network/fetchWithTimeout.js +78 -0
  433. package/dist/utils/network/fetchWithTimeout.js.map +1 -0
  434. package/dist/utils/network/index.d.ts +7 -0
  435. package/dist/utils/network/index.d.ts.map +1 -0
  436. package/dist/utils/network/index.js +6 -0
  437. package/dist/utils/network/index.js.map +1 -0
  438. package/dist/utils/parsing/dateParser.d.ts +73 -0
  439. package/dist/utils/parsing/dateParser.d.ts.map +1 -0
  440. package/dist/utils/parsing/dateParser.js +108 -0
  441. package/dist/utils/parsing/dateParser.js.map +1 -0
  442. package/dist/utils/parsing/index.d.ts +9 -0
  443. package/dist/utils/parsing/index.d.ts.map +1 -0
  444. package/dist/utils/parsing/index.js +9 -0
  445. package/dist/utils/parsing/index.js.map +1 -0
  446. package/dist/utils/parsing/jsonParser.d.ts +83 -0
  447. package/dist/utils/parsing/jsonParser.d.ts.map +1 -0
  448. package/dist/utils/parsing/jsonParser.js +128 -0
  449. package/dist/utils/parsing/jsonParser.js.map +1 -0
  450. package/dist/utils/scheduling/index.d.ts +7 -0
  451. package/dist/utils/scheduling/index.d.ts.map +1 -0
  452. package/dist/utils/scheduling/index.js +7 -0
  453. package/dist/utils/scheduling/index.js.map +1 -0
  454. package/dist/utils/scheduling/scheduler.d.ts +73 -0
  455. package/dist/utils/scheduling/scheduler.d.ts.map +1 -0
  456. package/dist/utils/scheduling/scheduler.js +155 -0
  457. package/dist/utils/scheduling/scheduler.js.map +1 -0
  458. package/dist/utils/security/idGenerator.d.ts +144 -0
  459. package/dist/utils/security/idGenerator.d.ts.map +1 -0
  460. package/dist/utils/security/idGenerator.js +232 -0
  461. package/dist/utils/security/idGenerator.js.map +1 -0
  462. package/dist/utils/security/index.d.ts +10 -0
  463. package/dist/utils/security/index.d.ts.map +1 -0
  464. package/dist/utils/security/index.js +10 -0
  465. package/dist/utils/security/index.js.map +1 -0
  466. package/dist/utils/security/rateLimiter.d.ts +109 -0
  467. package/dist/utils/security/rateLimiter.d.ts.map +1 -0
  468. package/dist/utils/security/rateLimiter.js +202 -0
  469. package/dist/utils/security/rateLimiter.js.map +1 -0
  470. package/dist/utils/security/sanitization.d.ts +185 -0
  471. package/dist/utils/security/sanitization.d.ts.map +1 -0
  472. package/dist/utils/security/sanitization.js +472 -0
  473. package/dist/utils/security/sanitization.js.map +1 -0
  474. package/dist/utils/telemetry/instrumentation.d.ts +8 -0
  475. package/dist/utils/telemetry/instrumentation.d.ts.map +1 -0
  476. package/dist/utils/telemetry/instrumentation.js +121 -0
  477. package/dist/utils/telemetry/instrumentation.js.map +1 -0
  478. package/dist/utils/telemetry/semconv.d.ts +16 -0
  479. package/dist/utils/telemetry/semconv.d.ts.map +1 -0
  480. package/dist/utils/telemetry/semconv.js +16 -0
  481. package/dist/utils/telemetry/semconv.js.map +1 -0
  482. package/package.json +161 -0
@@ -0,0 +1,472 @@
1
+ /**
2
+ * @fileoverview Provides a comprehensive `Sanitization` class for various input cleaning and validation tasks.
3
+ * This module includes utilities for sanitizing HTML, strings, URLs, file paths, JSON, numbers,
4
+ * and for redacting sensitive information from data intended for logging.
5
+ * @module src/utils/security/sanitization
6
+ */
7
+ import path from "path";
8
+ import sanitizeHtml from "sanitize-html";
9
+ import validator from "validator";
10
+ import { JsonRpcErrorCode, McpError } from "../../types-global/errors.js";
11
+ import { logger, requestContextService } from "../index.js";
12
+ /**
13
+ * A singleton class providing various methods for input sanitization.
14
+ * Aims to protect against common vulnerabilities like XSS and path traversal.
15
+ */
16
+ export class Sanitization {
17
+ /** @private */
18
+ static instance;
19
+ /**
20
+ * Default list of field names considered sensitive for log redaction.
21
+ * Case-insensitive matching is applied.
22
+ * @private
23
+ */
24
+ sensitiveFields = [
25
+ "password",
26
+ "token",
27
+ "secret",
28
+ "key",
29
+ "apiKey",
30
+ "auth",
31
+ "credential",
32
+ "jwt",
33
+ "ssn",
34
+ "credit",
35
+ "card",
36
+ "cvv",
37
+ "authorization",
38
+ ];
39
+ /**
40
+ * Default configuration for HTML sanitization.
41
+ * @private
42
+ */
43
+ defaultHtmlSanitizeConfig = {
44
+ allowedTags: [
45
+ "h1",
46
+ "h2",
47
+ "h3",
48
+ "h4",
49
+ "h5",
50
+ "h6",
51
+ "p",
52
+ "a",
53
+ "ul",
54
+ "ol",
55
+ "li",
56
+ "b",
57
+ "i",
58
+ "strong",
59
+ "em",
60
+ "strike",
61
+ "code",
62
+ "hr",
63
+ "br",
64
+ "div",
65
+ "table",
66
+ "thead",
67
+ "tbody",
68
+ "tr",
69
+ "th",
70
+ "td",
71
+ "pre",
72
+ ],
73
+ allowedAttributes: {
74
+ a: ["href", "name", "target"],
75
+ img: ["src", "alt", "title", "width", "height"],
76
+ "*": ["class", "id", "style"],
77
+ },
78
+ preserveComments: false,
79
+ };
80
+ /** @private */
81
+ constructor() { }
82
+ /**
83
+ * Retrieves the singleton instance of the `Sanitization` class.
84
+ * @returns The singleton `Sanitization` instance.
85
+ */
86
+ static getInstance() {
87
+ if (!Sanitization.instance) {
88
+ Sanitization.instance = new Sanitization();
89
+ }
90
+ return Sanitization.instance;
91
+ }
92
+ /**
93
+ * Sets or extends the list of sensitive field names for log sanitization.
94
+ * @param fields - An array of field names to add to the sensitive list.
95
+ */
96
+ setSensitiveFields(fields) {
97
+ this.sensitiveFields = [
98
+ ...new Set([
99
+ ...this.sensitiveFields,
100
+ ...fields.map((f) => f.toLowerCase()),
101
+ ]),
102
+ ];
103
+ const logContext = requestContextService.createRequestContext({
104
+ operation: "Sanitization.setSensitiveFields",
105
+ newSensitiveFieldCount: this.sensitiveFields.length,
106
+ });
107
+ logger.debug(logContext, "Updated sensitive fields list for log sanitization");
108
+ }
109
+ /**
110
+ * Gets a copy of the current list of sensitive field names.
111
+ * @returns An array of sensitive field names.
112
+ */
113
+ getSensitiveFields() {
114
+ return [...this.sensitiveFields];
115
+ }
116
+ /**
117
+ * Sanitizes an HTML string by removing potentially malicious tags and attributes.
118
+ * @param input - The HTML string to sanitize.
119
+ * @param config - Optional custom configuration for `sanitize-html`.
120
+ * @returns The sanitized HTML string. Returns an empty string if input is falsy.
121
+ */
122
+ sanitizeHtml(input, config) {
123
+ if (!input)
124
+ return "";
125
+ const effectiveConfig = {
126
+ allowedTags: config?.allowedTags ?? this.defaultHtmlSanitizeConfig.allowedTags,
127
+ allowedAttributes: config?.allowedAttributes ??
128
+ this.defaultHtmlSanitizeConfig.allowedAttributes,
129
+ transformTags: config?.transformTags, // Can be undefined
130
+ preserveComments: config?.preserveComments ??
131
+ this.defaultHtmlSanitizeConfig.preserveComments,
132
+ };
133
+ const options = {
134
+ allowedTags: effectiveConfig.allowedTags,
135
+ allowedAttributes: effectiveConfig.allowedAttributes,
136
+ transformTags: effectiveConfig.transformTags,
137
+ };
138
+ if (effectiveConfig.preserveComments) {
139
+ // Ensure allowedTags is an array before spreading
140
+ const baseTags = Array.isArray(options.allowedTags)
141
+ ? options.allowedTags
142
+ : [];
143
+ options.allowedTags = [...baseTags, "!--"];
144
+ }
145
+ return sanitizeHtml(input, options);
146
+ }
147
+ /**
148
+ * Sanitizes a string based on its intended context (e.g., HTML, URL, text).
149
+ * **Important:** `context: 'javascript'` is disallowed due to security risks.
150
+ *
151
+ * @param input - The string to sanitize.
152
+ * @param options - Options specifying the sanitization context.
153
+ * @returns The sanitized string. Returns an empty string if input is falsy.
154
+ * @throws {McpError} If `options.context` is 'javascript', or URL validation fails.
155
+ */
156
+ sanitizeString(input, options = {}) {
157
+ if (!input)
158
+ return "";
159
+ const context = options.context ?? "text";
160
+ switch (context) {
161
+ case "html": {
162
+ const config = {};
163
+ if (options.allowedTags) {
164
+ config.allowedTags = options.allowedTags;
165
+ }
166
+ if (options.allowedAttributes) {
167
+ config.allowedAttributes = this.convertAttributesFormat(options.allowedAttributes);
168
+ }
169
+ return this.sanitizeHtml(input, config);
170
+ }
171
+ case "attribute":
172
+ return sanitizeHtml(input, { allowedTags: [], allowedAttributes: {} });
173
+ case "url":
174
+ if (!validator.isURL(input, {
175
+ protocols: ["http", "https"],
176
+ require_protocol: true,
177
+ require_host: true,
178
+ })) {
179
+ logger.warning(requestContextService.createRequestContext({
180
+ operation: "Sanitization.sanitizeString.urlWarning",
181
+ invalidUrlAttempt: input,
182
+ }), "Potentially invalid URL detected during string sanitization (context: url)");
183
+ return "";
184
+ }
185
+ return validator.trim(input);
186
+ case "javascript":
187
+ logger.error(requestContextService.createRequestContext({
188
+ operation: "Sanitization.sanitizeString.jsAttempt",
189
+ inputSnippet: input.substring(0, 50),
190
+ }), "Attempted JavaScript sanitization via sanitizeString, which is disallowed.");
191
+ throw new McpError(JsonRpcErrorCode.ValidationError, "JavaScript sanitization is not supported through sanitizeString due to security risks.");
192
+ case "text":
193
+ default:
194
+ return sanitizeHtml(input, { allowedTags: [], allowedAttributes: {} });
195
+ }
196
+ }
197
+ /**
198
+ * Converts attribute format for `sanitizeHtml`.
199
+ * @param attrs - Attributes in `{ tagName: ['attr1'] }` format.
200
+ * @returns Attributes in `sanitize-html` expected format.
201
+ * @private
202
+ */
203
+ convertAttributesFormat(attrs) {
204
+ return attrs;
205
+ }
206
+ /**
207
+ * Sanitizes a URL string by validating its format and protocol.
208
+ * @param input - The URL string to sanitize.
209
+ * @param allowedProtocols - Array of allowed URL protocols. Default: `['http', 'https']`.
210
+ * @returns The sanitized and trimmed URL string.
211
+ * @throws {McpError} If the URL is invalid or uses a disallowed protocol.
212
+ */
213
+ sanitizeUrl(input, allowedProtocols = ["http", "https"]) {
214
+ try {
215
+ const trimmedInput = input.trim();
216
+ if (!validator.isURL(trimmedInput, {
217
+ protocols: allowedProtocols,
218
+ require_protocol: true,
219
+ require_host: true,
220
+ })) {
221
+ throw new Error("Invalid URL format or protocol not in allowed list.");
222
+ }
223
+ const lowercasedInput = trimmedInput.toLowerCase();
224
+ if (lowercasedInput.startsWith("javascript:") ||
225
+ lowercasedInput.startsWith("data:") ||
226
+ lowercasedInput.startsWith("vbscript:")) {
227
+ throw new Error("Disallowed pseudo-protocol (javascript:, data:, or vbscript:) in URL.");
228
+ }
229
+ return trimmedInput;
230
+ }
231
+ catch (error) {
232
+ throw new McpError(JsonRpcErrorCode.ValidationError, error instanceof Error
233
+ ? error.message
234
+ : "Invalid or unsafe URL provided.", { input });
235
+ }
236
+ }
237
+ /**
238
+ * Sanitizes a file path to prevent path traversal and normalize format.
239
+ * @param input - The file path string to sanitize.
240
+ * @param options - Options to control sanitization behavior.
241
+ * @returns An object with the sanitized path and sanitization metadata.
242
+ * @throws {McpError} If the path is invalid or unsafe.
243
+ */
244
+ sanitizePath(input, options = {}) {
245
+ const originalInput = input;
246
+ const effectiveOptions = {
247
+ toPosix: options.toPosix ?? false,
248
+ allowAbsolute: options.allowAbsolute ?? false,
249
+ rootDir: options.rootDir ? path.resolve(options.rootDir) : undefined,
250
+ };
251
+ let wasAbsoluteInitially = false;
252
+ try {
253
+ if (!input || typeof input !== "string")
254
+ throw new Error("Invalid path input: must be a non-empty string.");
255
+ if (input.includes("\0"))
256
+ throw new Error("Path contains null byte, which is disallowed.");
257
+ let normalized = path.normalize(input);
258
+ wasAbsoluteInitially = path.isAbsolute(normalized);
259
+ if (effectiveOptions.toPosix) {
260
+ normalized = normalized.replace(/\\/g, "/");
261
+ }
262
+ let finalSanitizedPath;
263
+ if (effectiveOptions.rootDir) {
264
+ const fullPath = path.resolve(effectiveOptions.rootDir, normalized);
265
+ if (!fullPath.startsWith(effectiveOptions.rootDir + path.sep) &&
266
+ fullPath !== effectiveOptions.rootDir) {
267
+ throw new Error("Path traversal detected: attempts to escape the defined root directory.");
268
+ }
269
+ finalSanitizedPath = path.relative(effectiveOptions.rootDir, fullPath);
270
+ finalSanitizedPath =
271
+ finalSanitizedPath === "" ? "." : finalSanitizedPath;
272
+ if (path.isAbsolute(finalSanitizedPath) &&
273
+ !effectiveOptions.allowAbsolute) {
274
+ throw new Error("Path resolved to absolute outside root when absolute paths are disallowed.");
275
+ }
276
+ }
277
+ else {
278
+ if (path.isAbsolute(normalized)) {
279
+ if (!effectiveOptions.allowAbsolute) {
280
+ throw new Error("Absolute paths are disallowed by current options.");
281
+ }
282
+ else {
283
+ finalSanitizedPath = normalized;
284
+ }
285
+ }
286
+ else {
287
+ const resolvedAgainstCwd = path.resolve(normalized);
288
+ const currentWorkingDir = path.resolve(".");
289
+ if (!resolvedAgainstCwd.startsWith(currentWorkingDir + path.sep) &&
290
+ resolvedAgainstCwd !== currentWorkingDir) {
291
+ throw new Error("Relative path traversal detected (escapes current working directory context).");
292
+ }
293
+ finalSanitizedPath = normalized;
294
+ }
295
+ }
296
+ return {
297
+ sanitizedPath: finalSanitizedPath,
298
+ originalInput,
299
+ wasAbsolute: wasAbsoluteInitially,
300
+ convertedToRelative: wasAbsoluteInitially &&
301
+ !path.isAbsolute(finalSanitizedPath) &&
302
+ !effectiveOptions.allowAbsolute,
303
+ optionsUsed: effectiveOptions,
304
+ };
305
+ }
306
+ catch (error) {
307
+ logger.warning(requestContextService.createRequestContext({
308
+ operation: "Sanitization.sanitizePath.error",
309
+ originalPathInput: originalInput,
310
+ pathOptionsUsed: effectiveOptions,
311
+ errorMessage: error instanceof Error ? error.message : String(error),
312
+ }), "Path sanitization error");
313
+ throw new McpError(JsonRpcErrorCode.ValidationError, error instanceof Error
314
+ ? error.message
315
+ : "Invalid or unsafe path provided.", { input: originalInput });
316
+ }
317
+ }
318
+ /**
319
+ * Sanitizes a JSON string by parsing it to validate its format.
320
+ * Optionally checks if the JSON string exceeds a maximum allowed size.
321
+ * @template T The expected type of the parsed JSON object. Defaults to `unknown`.
322
+ * @param input - The JSON string to sanitize/validate.
323
+ * @param maxSize - Optional maximum allowed size of the JSON string in bytes.
324
+ * @returns The parsed JavaScript object.
325
+ * @throws {McpError} If input is not a string, too large, or invalid JSON.
326
+ */
327
+ sanitizeJson(input, maxSize) {
328
+ try {
329
+ if (typeof input !== "string")
330
+ throw new Error("Invalid input: expected a JSON string.");
331
+ if (maxSize !== undefined && Buffer.byteLength(input, "utf8") > maxSize) {
332
+ throw new McpError(JsonRpcErrorCode.ValidationError, `JSON string exceeds maximum allowed size of ${maxSize} bytes.`, { actualSize: Buffer.byteLength(input, "utf8"), maxSize });
333
+ }
334
+ return JSON.parse(input);
335
+ }
336
+ catch (error) {
337
+ if (error instanceof McpError)
338
+ throw error;
339
+ throw new McpError(JsonRpcErrorCode.ValidationError, error instanceof Error ? error.message : "Invalid JSON format.", {
340
+ inputPreview: input.length > 100 ? `${input.substring(0, 100)}...` : input,
341
+ });
342
+ }
343
+ }
344
+ /**
345
+ * Validates and sanitizes a numeric input, converting strings to numbers.
346
+ * Clamps the number to `min`/`max` if provided.
347
+ * @param input - The number or string to validate and sanitize.
348
+ * @param min - Minimum allowed value (inclusive).
349
+ * @param max - Maximum allowed value (inclusive).
350
+ * @returns The sanitized (and potentially clamped) number.
351
+ * @throws {McpError} If input is not a valid number, NaN, or Infinity.
352
+ */
353
+ sanitizeNumber(input, min, max) {
354
+ let value;
355
+ if (typeof input === "string") {
356
+ const trimmedInput = input.trim();
357
+ if (trimmedInput === "" || !validator.isNumeric(trimmedInput)) {
358
+ throw new McpError(JsonRpcErrorCode.ValidationError, "Invalid number format: input is empty or not numeric.", { input });
359
+ }
360
+ value = parseFloat(trimmedInput);
361
+ }
362
+ else if (typeof input === "number") {
363
+ value = input;
364
+ }
365
+ else {
366
+ throw new McpError(JsonRpcErrorCode.ValidationError, "Invalid input type: expected number or string.", { input: String(input) });
367
+ }
368
+ if (isNaN(value) || !isFinite(value)) {
369
+ throw new McpError(JsonRpcErrorCode.ValidationError, "Invalid number value (NaN or Infinity).", { input });
370
+ }
371
+ let clamped = false;
372
+ const originalValueForLog = value;
373
+ if (min !== undefined && value < min) {
374
+ value = min;
375
+ clamped = true;
376
+ }
377
+ if (max !== undefined && value > max) {
378
+ value = max;
379
+ clamped = true;
380
+ }
381
+ if (clamped) {
382
+ logger.debug(requestContextService.createRequestContext({
383
+ operation: "Sanitization.sanitizeNumber.clamped",
384
+ originalInput: String(input),
385
+ parsedValue: originalValueForLog,
386
+ minValue: min,
387
+ maxValue: max,
388
+ clampedValue: value,
389
+ }), "Number clamped to range.");
390
+ }
391
+ return value;
392
+ }
393
+ /**
394
+ * Sanitizes input for logging by redacting sensitive fields.
395
+ * Creates a deep clone and replaces values of fields matching `this.sensitiveFields`
396
+ * (case-insensitive substring match) with "[REDACTED]".
397
+ *
398
+ * It uses `structuredClone` if available for a high-fidelity deep clone.
399
+ * If `structuredClone` is not available (e.g., in older Node.js environments),
400
+ * it falls back to `JSON.parse(JSON.stringify(input))`. This fallback has limitations:
401
+ * - `Date` objects are converted to ISO date strings.
402
+ * - `undefined` values within objects are removed.
403
+ * - `Map`, `Set`, `RegExp` objects are converted to empty objects (`{}`).
404
+ * - Functions are removed.
405
+ * - `BigInt` values will throw an error during `JSON.stringify` unless a `toJSON` method is provided.
406
+ * - Circular references will cause `JSON.stringify` to throw an error.
407
+ *
408
+ * @param input - The input data to sanitize for logging.
409
+ * @returns A sanitized (deep cloned) version of the input, safe for logging.
410
+ * Returns original input if not object/array, or "[Log Sanitization Failed]" on error.
411
+ */
412
+ sanitizeForLogging(input) {
413
+ try {
414
+ if (!input || typeof input !== "object")
415
+ return input;
416
+ const clonedInput = typeof globalThis.structuredClone === "function"
417
+ ? globalThis.structuredClone(input)
418
+ : JSON.parse(JSON.stringify(input));
419
+ this.redactSensitiveFields(clonedInput);
420
+ return clonedInput;
421
+ }
422
+ catch (error) {
423
+ logger.error(requestContextService.createRequestContext({
424
+ operation: "Sanitization.sanitizeForLogging.error",
425
+ errorMessage: error instanceof Error ? error.message : String(error),
426
+ }), "Error during log sanitization, returning placeholder.");
427
+ return "[Log Sanitization Failed]";
428
+ }
429
+ }
430
+ /**
431
+ * Recursively redacts sensitive fields in an object or array in place.
432
+ * @param obj - The object or array to redact.
433
+ * @private
434
+ */
435
+ redactSensitiveFields(obj) {
436
+ if (!obj || typeof obj !== "object")
437
+ return;
438
+ if (Array.isArray(obj)) {
439
+ obj.forEach((item) => this.redactSensitiveFields(item));
440
+ return;
441
+ }
442
+ for (const key in obj) {
443
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
444
+ const value = obj[key];
445
+ // Split camelCase and snake_case/kebab-case keys into words
446
+ const keyWords = key
447
+ .replace(/([A-Z])/g, " $1") // Add space before uppercase letters
448
+ .toLowerCase()
449
+ .split(/[\s_-]+/); // Split by space, underscore, or hyphen
450
+ const isSensitive = keyWords.some((word) => this.sensitiveFields.includes(word));
451
+ if (isSensitive) {
452
+ obj[key] = "[REDACTED]";
453
+ }
454
+ else if (value && typeof value === "object") {
455
+ this.redactSensitiveFields(value);
456
+ }
457
+ }
458
+ }
459
+ }
460
+ }
461
+ /**
462
+ * Singleton instance of the `Sanitization` class.
463
+ * Use this for all input sanitization tasks.
464
+ */
465
+ export const sanitization = Sanitization.getInstance();
466
+ /**
467
+ * Convenience function calling `sanitization.sanitizeForLogging`.
468
+ * @param input - The input data to sanitize.
469
+ * @returns A sanitized version of the input, safe for logging.
470
+ */
471
+ export const sanitizeInputForLogging = (input) => sanitization.sanitizeForLogging(input);
472
+ //# sourceMappingURL=sanitization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitization.js","sourceRoot":"","sources":["../../../src/utils/security/sanitization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { NodeSDK } from "@opentelemetry/sdk-node";
2
+ export declare let sdk: NodeSDK | null;
3
+ /**
4
+ * Gracefully shuts down the OpenTelemetry SDK.
5
+ * This function is called during the application's shutdown sequence.
6
+ */
7
+ export declare function shutdownOpenTelemetry(): Promise<void>;
8
+ //# sourceMappingURL=instrumentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/instrumentation.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAYlD,eAAO,IAAI,GAAG,EAAE,OAAO,GAAG,IAAW,CAAC;AA0GtC;;;GAGG;AACH,wBAAsB,qBAAqB,kBAO1C"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * @fileoverview OpenTelemetry SDK initialization and lifecycle management.
3
+ * This file MUST be imported before any other module in the application's
4
+ * entry point (`src/index.ts`) to ensure all modules are correctly instrumented.
5
+ * It handles both the initialization (startup) and graceful shutdown of the SDK.
6
+ * @module src/utils/telemetry/instrumentation
7
+ */
8
+ import { config } from "../../config/index.js";
9
+ import { DiagConsoleLogger, DiagLogLevel, diag } from "@opentelemetry/api";
10
+ import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
11
+ import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
12
+ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
13
+ import { resourceFromAttributes } from "@opentelemetry/resources";
14
+ import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
15
+ import { NodeSDK } from "@opentelemetry/sdk-node";
16
+ import { BatchSpanProcessor, TraceIdRatioBasedSampler, } from "@opentelemetry/sdk-trace-node";
17
+ import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION, } from "@opentelemetry/semantic-conventions/incubating";
18
+ export let sdk = null;
19
+ if (config.openTelemetry.enabled) {
20
+ // --- Custom Diagnostic Logger for OpenTelemetry ---
21
+ // This logger uses the standard console to avoid circular dependencies with the main application logger.
22
+ class OtelDiagnosticLogger extends DiagConsoleLogger {
23
+ }
24
+ /**
25
+ * A custom SpanProcessor that writes ended spans to a log file using Pino.
26
+ */
27
+ class FileSpanProcessor {
28
+ forceFlush() {
29
+ return Promise.resolve();
30
+ }
31
+ onStart(_span) { }
32
+ onEnd(span) {
33
+ const loggableSpan = {
34
+ traceId: span.spanContext().traceId,
35
+ spanId: span.spanContext().spanId,
36
+ name: span.name,
37
+ kind: span.kind,
38
+ startTime: span.startTime,
39
+ endTime: span.endTime,
40
+ duration: span.duration,
41
+ status: span.status,
42
+ attributes: span.attributes,
43
+ events: span.events,
44
+ };
45
+ // Dynamically import the logger in a non-blocking way to prevent circular dependencies.
46
+ import("../internal/logger.js")
47
+ .then(({ logger }) => {
48
+ logger.info({ span: loggableSpan }, "Trace Span End");
49
+ })
50
+ .catch((err) => {
51
+ diag.error("Failed to dynamically import logger for OTel span.", err);
52
+ });
53
+ }
54
+ shutdown() {
55
+ return Promise.resolve();
56
+ }
57
+ }
58
+ try {
59
+ const otelLogLevel = DiagLogLevel[config.openTelemetry.logLevel] ?? DiagLogLevel.INFO;
60
+ diag.setLogger(new OtelDiagnosticLogger(), otelLogLevel);
61
+ const resource = resourceFromAttributes({
62
+ [ATTR_SERVICE_NAME]: config.openTelemetry.serviceName,
63
+ [ATTR_SERVICE_VERSION]: config.openTelemetry.serviceVersion,
64
+ "deployment.environment.name": config.environment,
65
+ });
66
+ let spanProcessor;
67
+ if (config.openTelemetry.tracesEndpoint) {
68
+ diag.info(`Using OTLP exporter for traces, endpoint: ${config.openTelemetry.tracesEndpoint}`);
69
+ const traceExporter = new OTLPTraceExporter({
70
+ url: config.openTelemetry.tracesEndpoint,
71
+ });
72
+ spanProcessor = new BatchSpanProcessor(traceExporter);
73
+ }
74
+ else {
75
+ diag.info("No OTLP endpoint configured. Using FileSpanProcessor for local trace logging.");
76
+ spanProcessor = new FileSpanProcessor();
77
+ }
78
+ const metricReader = config.openTelemetry.metricsEndpoint
79
+ ? new PeriodicExportingMetricReader({
80
+ exporter: new OTLPMetricExporter({
81
+ url: config.openTelemetry.metricsEndpoint,
82
+ }),
83
+ exportIntervalMillis: 15000,
84
+ })
85
+ : undefined;
86
+ sdk = new NodeSDK({
87
+ resource,
88
+ spanProcessors: [spanProcessor],
89
+ metricReader,
90
+ sampler: new TraceIdRatioBasedSampler(config.openTelemetry.samplingRatio),
91
+ instrumentations: [
92
+ getNodeAutoInstrumentations({
93
+ "@opentelemetry/instrumentation-http": {
94
+ enabled: true,
95
+ ignoreIncomingRequestHook: (req) => req.url === "/healthz",
96
+ },
97
+ "@opentelemetry/instrumentation-fs": { enabled: false },
98
+ }),
99
+ ],
100
+ });
101
+ sdk.start();
102
+ diag.info(`OpenTelemetry initialized for ${config.openTelemetry.serviceName} v${config.openTelemetry.serviceVersion}`);
103
+ }
104
+ catch (error) {
105
+ diag.error("Error initializing OpenTelemetry", error);
106
+ process.exit(1);
107
+ }
108
+ }
109
+ /**
110
+ * Gracefully shuts down the OpenTelemetry SDK.
111
+ * This function is called during the application's shutdown sequence.
112
+ */
113
+ export async function shutdownOpenTelemetry() {
114
+ if (sdk) {
115
+ await sdk
116
+ .shutdown()
117
+ .then(() => diag.info("OpenTelemetry terminated"))
118
+ .catch((error) => diag.error("Error terminating OpenTelemetry", error));
119
+ }
120
+ }
121
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../src/utils/telemetry/instrumentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @fileoverview Defines local OpenTelemetry semantic convention constants to ensure
3
+ * stability and avoid dependency conflicts with different versions of
4
+ * `@opentelemetry/semantic-conventions`.
5
+ * @module src/utils/telemetry/semconv
6
+ */
7
+ /**
8
+ * The method or function name, or equivalent (usually rightmost part of the code unit's name).
9
+ */
10
+ export declare const ATTR_CODE_FUNCTION = "code.function";
11
+ /**
12
+ * The "namespace" within which `code.function` is defined.
13
+ * Usually the qualified class or module name, etc.
14
+ */
15
+ export declare const ATTR_CODE_NAMESPACE = "code.namespace";
16
+ //# sourceMappingURL=semconv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semconv.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/semconv.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,mBAAmB,CAAC"}